Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页

 

 

  1 {#portal.html#}
  2 {## ————————46PerfectCRM实现登陆后页面才能访问————————#}
  3 {#{% extends 'king_admin/table_index.html' %}#}
  4 {#{% block right-container-content %}#}
  5 {#<div class="container col-lg-offset-3">#}
  6 {#    <h2><a class="form-signin-heading" href="/king_admin/">King_admin主页</a> </h2>#}
  7 {#    <h2><a class="form-signin-heading" href="/king_admin/crm/">单个具体app页面</a> </h2>#}
  8 {#    <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/">详细内容</a> </h2>#}
  9 {#    <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/1/change/">修改信息</a> </h2>#}
 10 {#    <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/1/password/">修改密码</a> </h2>#}
 11 {#    <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/add/">添加信息</a> </h2>#}
 12 {#    <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/1/delete/">删除信息</a> </h2>#}
 13 {#</div>#}
 14 {##}
 15 {#{% endblock %}#}
 16 
 17 {## ————————46PerfectCRM实现登陆后页面才能访问————————#}
 18 
 19 {## ————————71PerfectCRM实现CRM项目首页————————#}
 20 {% extends "master/sample.html" %}
 21 {% block right-container-content %}
 22     <div class="col-md-12">
 23         <div class="row">
 24             <div class="portfolio-items isotopeWrapper clearfix">
 25 
 26                 <article class="col-md-3 isotopeItem photography">
 27                     <div class="portfolio-item">
 28                         <a href="{% url 'student_course' %}"><img src="/static/img/student_icon.jpg"></a>
 29                         <div class="portfolio-desc align-center">
 30                             <div class="folio-info">
 31                                 <h3><a href="{% url 'student_course' %}">学员入口</a></h3>
 32                             </div>
 33                         </div>
 34                     </div>
 35                 </article>
 36 
 37                 <article class="col-md-3 isotopeItem photography">
 38                     <div class="portfolio-item">
 39                         <a href="{% url 'not_audit' %}"><img src="/static/img/sales_icon.jpg"></a>
 40                         <div class="portfolio-desc align-center">
 41                             <div class="folio-info">
 42                                 <h3><a href="{% url 'not_audit' %}">销售入口</a></h3>
 43                             </div>
 44                         </div>
 45                     </div>
 46                 </article>
 47 
 48                 <article class="col-md-3 isotopeItem photography">
 49                     <div class="portfolio-item">
 50                         <a href="{% url 'not_payment' %}"><img src="/static/img/financial_icon.jpg"></a>
 51                         <div class="portfolio-desc align-center">
 52                             <div class="folio-info">
 53                                 <h3><a href="{% url 'not_payment' %}">财务入口</a></h3>
 54                             </div>
 55                         </div>
 56                     </div>
 57                 </article>
 58 
 59                 <article class="col-md-3 isotopeItem photography">
 60                     <div class="portfolio-item">
 61                         <a href="{% url 'teacher_class' %}"><img src="/static/img/teacher_icon.jpg"></a>
 62                         <div class="portfolio-desc align-center">
 63                             <div class="folio-info">
 64                                 <h3><a href="{% url 'teacher_class' %}">讲师入口</a></h3>
 65                             </div>
 66                         </div>
 67                     </div>
 68                 </article>
 69 
 70                 <article class="col-md-3 isotopeItem photography">
 71                     <div class="portfolio-item">
 72                         <a href="{% url 'gbacc_fast_login' %}"><img src="/static/img/gbacc_fast_login.jpg"></a>
 73                         <div class="portfolio-desc align-center">
 74                             <div class="folio-info">
 75                                 <h3><a href="{% url 'gbacc_fast_login' %}">快速注册登陆</a></h3>
 76                             </div>
 77                         </div>
 78                     </div>
 79                 </article>
 80 
 81                 <article class="col-md-3 isotopeItem photography">
 82                     <div class="portfolio-item">
 83                         <a href="{% url 'gbacc_fast_pwdreset' %}"><img src="/static/img/mail_icon.jpg"></a>
 84                         <div class="portfolio-desc align-center">
 85                             <div class="folio-info">
 86                                 <h3><a href="{% url 'gbacc_fast_pwdreset' %}">快速重置密码</a></h3>
 87                             </div>
 88                         </div>
 89                     </div>
 90                 </article>
 91 
 92                 <article class="col-md-3 isotopeItem photography">
 93                     <div class="portfolio-item">
 94                       <a href="{% url 'gbacc_ajax_login' %}"><img src="/static/img/gbacc_ajax_login_icon.jpg"></a>
 95                         <div class="portfolio-desc align-center">
 96                             <div class="folio-info">
 97                                 <h3><a href="{% url 'gbacc_ajax_login' %}">ajax登录</a></h3>
 98                             </div>
 99                         </div>
100                     </div>
101                 </article>
102 
103                 <article class="col-md-3 isotopeItem photography">
104                     <div class="portfolio-item">
105                       <a href="{% url 'gbacc_ajax_register' %}"><img src="/static/img/ajax_registered_icon.jpg"></a>
106                         <div class="portfolio-desc align-center">
107                             <div class="folio-info">
108                                 <h3><a href="{% url 'gbacc_ajax_register' %}">ajax注册</a></h3>
109                             </div>
110                         </div>
111                     </div>
112                 </article>
113             </div>
114         </div>
115     </div>
116 {% endblock %}
117 {## ————————71PerfectCRM实现CRM项目首页————————#}
{#portal.html#}

 

 

 1 {#base.html#}
 2 {## ————————71PerfectCRM实现CRM项目首页————————#}
 3 {#模板文件 #}
 4 <!DOCTYPE html>
 5 <html lang="zh-CN">
 6     <head>
 7 {#      <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。#}
 8 {#      <meta> 标签位于文档的头部,不包含任何内容。<meta> 标签的属性定义了与文档相关联的名称/值对。#}
 9         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10         <meta http-equiv="X-UA-Compatible" content="IE=edge">
11         <meta name="viewport" content="width=device-width, initial-scale=1">
12         <meta name="description" content="">
13         <meta name="author" content="">
14         {% block logo %}<link rel="icon" href="/static/img/logo_icon.jpg">{# icon,指的是图标 #} {% endblock %}
15         <title>{% block title %} CRM {# 页面头部显示#} {% endblock %}</title>
16 {#        使用link来调用外部的css文件#}
17         <link rel="stylesheet"  href="/static/plugins/bootstrap/bootstrap.css"  /> {#导航栏样式#}
18         <link rel="stylesheet"  href="/static/plugins/bootstrap/dashboard.css" /> {#指示板样式#}
19         <link rel="stylesheet"  href="/static/plugins/dropzone/dropzone.css" /> {#异步上传样式#}
20         {% block css %}{#自定义内容 css #}{% endblock %}
21 
22     </head>
23     <body>
24         {% block body %}{#自定义内容 body#}{% endblock %}
25 {#        将纯JavaScript的语句另外保存在一个"*.js"的文件中,需要时再调用。#}
26         <script src="/static/plugins/jquery/jquery.js"></script>   {# jQuery 是一个 JavaScript库,极大地简化了 JavaScript 编程。#}
27         <script src="/static/plugins/jquery/jquery.cookie.js"></script>   {# jQuery 是一个 JavaScript库,极大地简化了 JavaScript 编程。#}
28         <script src="/static/plugins/bootstrap/bootstrap.js"></script>  {#指示板JS事件#}
29         <script src="/static/plugins/dropzone/dropzone.js"></script>  {#异步上传JS事件#}
30         {% block js %}{#自定义内容 JS#}{% endblock %}
31     </body>
32 </html>
33 {## ————————71PerfectCRM实现CRM项目首页————————#}a
{#base.html#}

 

 1 {# sample.thml  #}
 2 {## ————————71PerfectCRM实现CRM项目首页————————#}
 3 {% extends "master/base.html" %}
 4 {% block body %}{#自定义内容开始 body#}
 5     {% block nav-bar %}{#自定义内容开始 上面导航栏#}
 6         <nav class="navbar navbar-inverse navbar-fixed-top">
 7             <div class="container-fluid">
 8                 <div class="navbar-header">
 9                     <a class="navbar-brand" href="#">{% block head %}{#自定义内容开始 head#} CRM{% endblock %}{#自定义内容结束 #}</a>
10                 </div>
11                 <div id="navbar" class="navbar-collapse collapse">
12                     <ul class="nav navbar-nav navbar-right">
13                         <li><a href="/">主页</a></li>
14                         <li><a href="/king_admin/"> KingAdmin首页</a></li>
15                         <li class="dropdown">
16                             {% if request.user.id %}
17                                 <a href="#" class="dropdown-toggle" data-toggle="dropdown"
18                                    role="button" aria-haspopup="true" aria-expanded="false">
19                                     当前用户:{{ request.user.name }}
20                                     <span class="caret"></span>
21                                 </a>
22                                 <ul class="dropdown-menu">
23                                     <li><a href="{% url 'gbacc_logout' %}">注销</a></li>
24                                     <li><a href="{% url 'gbacc_modify' request.user.id %}">修改密码</a></li>
25                                 </ul>
26                             {% endif %}
27                         </li>
28                         <li><a href="{% url 'gbacc_login' %}">登陆</a></li>
29                         <li><a href="{% url 'gbacc_register' %}">注册</a></li>
30 
31 
32                         <li class="dropdown">
33                             <a href="#" class="dropdown-toggle" data-toggle="dropdown"
34                                role="button" aria-haspopup="true" aria-expanded="false">
35                                 更多
36                                 <span class="caret"></span>
37                             </a>
38                             <ul class="dropdown-menu">
39                                 <li><a target="_blank" href="/admin/"> admin首页</a></li>
40                             </ul>
41                         </li>
42                         <li><a href="#"> &emsp;&nbsp;&ensp;&thinsp;</a></li>
43                     </ul>
44                 </div>
45             </div>
46         </nav>
47     {% endblock %}{#自定义内容结束 nav-bar上面导航栏#}
48     <div class="container-fluid">
49         <div class="row">
50             {% block side-bar %}{#自定义内容开始 左边菜单#}
51                 <div class="col-sm-3 col-md-2 sidebar">
52                     <ul class="nav nav-sidebar"> {#JS绑定  base.html#}
53                         {% block side-bar-menus %}{#自定义内容开始 左边菜单#}
54 
55                             <h4>历史记录:</h4>
56 
57                         {% endblock %} {#自定义内容结束 side-bar-menus左边菜单#}
58                     </ul>
59                 </div>
60             {% endblock %}{#自定义内容结束 side-bar左边菜单#}
61             {% block right-container %} {#自定义内容开始 右边页面#}
62                 <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
63                     {% block right-container-content %} {#自定义内容开始 右边页面内容#}
64                         <div class="row placeholders">
65                             <div class="col-xs-6 col-sm-3 placeholder">
66                                 <h4>右边页面内容:</h4>
67                             </div>
68                         </div>
69                     {% endblock %}{#自定义内容结束 right-container-content右边页面内容#}
70                 </div>
71             {% endblock %} {#自定义内容结束 right-container右边页面#}
72         </div>
73     </div>
74 {% endblock %}
75 {#自定义内容结束 body#}
76 {## ————————71PerfectCRM实现CRM项目首页————————#}
{# sample.thml #}

 

 

 

 

  1 # settings.py
  2 
  3 """
  4 Django settings for PerfectCRM project.
  5 
  6 Generated by 'django-admin startproject' using Django 2.0.3.
  7 
  8 For more information on this file, see
  9 https://docs.djangoproject.com/en/2.0/topics/settings/
 10 
 11 For the full list of settings and their values, see
 12 https://docs.djangoproject.com/en/2.0/ref/settings/
 13 """
 14 
 15 import os
 16 
 17 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 18 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 19 
 20 
 21 # Quick-start development settings - unsuitable for production
 22 # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
 23 
 24 # SECURITY WARNING: keep the secret key used in production secret!
 25 SECRET_KEY = 'atkhzsd7emv4_okn@ynhji)p)qbpuvhq+a7@yx5=chaa0$l_br'
 26 
 27 # SECURITY WARNING: don't run with debug turned on in production!
 28 DEBUG = True
 29 
 30 ALLOWED_HOSTS = []
 31 
 32 
 33 # Application definition
 34 
 35 INSTALLED_APPS = [
 36     'django.contrib.admin',
 37     'django.contrib.auth',
 38     'django.contrib.contenttypes',
 39     'django.contrib.sessions',
 40     'django.contrib.messages',
 41     'django.contrib.staticfiles',
 42     
 43 # ————————04PerfectCRM实现King_admin注册功能————————
 44     # 'crm.apps.CrmConfig',
 45     'crm',
 46 # ————————04PerfectCRM实现King_admin注册功能————————
 47 
 48 # ————————02PerfectCRM创建ADMIN页面————————
 49     'king_admin',
 50 # ————————02PerfectCRM创建ADMIN页面————————
 51     # ————————38PerfectCRM实现全局账号登录注销————————
 52     'gbacc',
 53     # ————————38PerfectCRM实现全局账号登录注销————————
 54 
 55     # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
 56     'bpm',
 57     # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
 58 
 59 ]
 60 
 61 MIDDLEWARE = [
 62     'django.middleware.security.SecurityMiddleware',
 63     'django.contrib.sessions.middleware.SessionMiddleware',
 64     'django.middleware.common.CommonMiddleware',
 65     'django.middleware.csrf.CsrfViewMiddleware',
 66     'django.contrib.auth.middleware.AuthenticationMiddleware',
 67     'django.contrib.messages.middleware.MessageMiddleware',
 68     'django.middleware.clickjacking.XFrameOptionsMiddleware',
 69 ]
 70 
 71 ROOT_URLCONF = 'PerfectCRM.urls'
 72 
 73 TEMPLATES = [
 74     {
 75         'BACKEND': 'django.template.backends.django.DjangoTemplates',
 76 # ————————02PerfectCRM创建ADMIN页面————————
 77         'DIRS': [os.path.join(BASE_DIR, 'templates'),
 78                   os.path.join(BASE_DIR, 'king_admin/king_templates'),
 79 
 80 # ————————03PerfectCRM创建基本数据————————
 81                   os.path.join(BASE_DIR, 'DBadd/DBadd_templates'),
 82 # ————————03PerfectCRM创建基本数据————————
 83                 # ————————38PerfectCRM实现全局账号登录注销————————
 84                   os.path.join(BASE_DIR, 'gbacc/gbacc_templates'),
 85                 # ————————38PerfectCRM实现全局账号登录注销————————
 86 
 87                 # ————————47PerfectCRM实现CRM客户报名流程————————
 88                 os.path.join(BASE_DIR, 'bpm/bpm_templates'), ]
 89                 # ————————47PerfectCRM实现CRM客户报名流程————————
 90 
 91 ,
 92 # ————————02PerfectCRM创建ADMIN页面————————
 93         'APP_DIRS': True,
 94         'OPTIONS': {
 95             'context_processors': [
 96                 'django.template.context_processors.debug',
 97                 'django.template.context_processors.request',
 98                 'django.contrib.auth.context_processors.auth',
 99                 'django.contrib.messages.context_processors.messages',
100             ],
101         },
102     },
103 ]
104 
105 WSGI_APPLICATION = 'PerfectCRM.wsgi.application'
106 
107 
108 # Database
109 # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
110 
111 DATABASES = {
112     'default': {
113         'ENGINE': 'django.db.backends.sqlite3',
114         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
115     }
116 }
117 
118 
119 # Password validation
120 # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
121 
122 AUTH_PASSWORD_VALIDATORS = [
123     {
124         'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
125     },
126     {
127         'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
128     },
129     {
130         'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
131     },
132     {
133         'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
134     },
135 ]
136 
137 
138 # Internationalization
139 # https://docs.djangoproject.com/en/2.0/topics/i18n/
140 
141 # ————————01PerfectCRM基本配置ADMIN————————
142 #LANGUAGE_CODE = 'en-us'
143 
144 #英文转中文方法
145 LANGUAGE_CODE = 'zh-Hans'
146 # ————————01PerfectCRM基本配置ADMIN————————
147 
148 TIME_ZONE = 'UTC'
149 
150 USE_I18N = True
151 
152 USE_L10N = True
153 
154 USE_TZ = True
155 
156 
157 # Static files (CSS, JavaScript, Images)
158 # https://docs.djangoproject.com/en/2.0/howto/static-files/
159 
160 STATIC_URL = '/static/'
161 
162 # ————————01PerfectCRM基本配置ADMIN————————
163 STATICFILES_DIRS = [os.path.join(BASE_DIR,'king_admin/static'),
164 # ————————01PerfectCRM基本配置ADMIN————————
165                     # ————————38PerfectCRM实现全局账号登录注销————————
166                     os.path.join(BASE_DIR, 'gbacc/static'),
167                     # ————————38PerfectCRM实现全局账号登录注销————————
168                     
169                     # ————————47PerfectCRM实现CRM客户报名流程————————
170                     os.path.join(BASE_DIR, 'bpm/static'),
171                     # ————————47PerfectCRM实现CRM客户报名流程————————
172 
173                     # ————————71PerfectCRM实现CRM项目首页————————
174                     os.path.join( BASE_DIR, 'static' ),]
175                     # ————————71PerfectCRM实现CRM项目首页————————
176 
177 # ————————34PerfectCRM实现CRM自定义用户————————
178 AUTH_USER_MODEL = 'crm.UserProfile'#使用自定的admin 表单
179 # ————————34PerfectCRM实现CRM自定义用户————————
180 
181 
182 
183 # ————————44PerfectCRM实现账号快速注册登陆————————
184 # send e-mail
185 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #email后端
186 EMAIL_USE_TLS = False   #是否使用TLS安全传输协议
187 EMAIL_USE_SSL = True    #是否使用SSL加密,qq企业邮箱要求使用
188 EMAIL_HOST = 'smtp.sina.cn'   #发送邮件的邮箱 的 SMTP服务器       #根据情况重新配置
189 EMAIL_PORT = 465                 #发件箱的SMTP服务器端口 #一般不需要修改465
190 EMAIL_HOST_USER = 'perfectcrm@sina.cn'    #发送邮件的邮箱账号     #根据情况重新配置  #perfectcrm@sina.cn   pydjango@sina.cn
191 EMAIL_HOST_PASSWORD = 'admin123456'         #发送邮件的邮箱密码    #根据情况重新配置
192 
193 # ————————44PerfectCRM实现账号快速注册登陆————————
194 
195 
196 # ————————46PerfectCRM实现登陆后页面才能访问————————
197 LOGIN_URL = '/gbacc/gbacc_login/'# login_url 配置      #默认 /accounts/login/  #注意: / (绝对路径)
198 # ————————46PerfectCRM实现登陆后页面才能访问————————
199 
200 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
201 ENROLLED_DATA='%s/bpm/static/enrolled_data'%BASE_DIR#证件上传 # 上传路径
202 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
203 
204 
205 # ————————61PerfectCRM实现CRM学生上传作业————————
206 HOMEWORK_DATA='%s/bpm/static/homeworks'%BASE_DIR  #作业上传 # 上传路径
207 # ————————61PerfectCRM实现CRM学生上传作业————————
# settings.py

 

 

                                

 

ajax_registered_icon    financial_icon    gbacc_ajax_login_icon   gbacc_fast_login    logo_icon      mail_icon      sales_icon      student_icon      teacher_icon

 


 

   1 /*!
   2    *bootstrap.css
   3  * Bootstrap v3.3.7 (http://getbootstrap.com)
   4  * Copyright 2011-2016 Twitter, Inc.
   5  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
   6  */
   7 /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
   8 html {
   9   font-family: sans-serif;
  10   -webkit-text-size-adjust: 100%;
  11       -ms-text-size-adjust: 100%;
  12 }
  13 body {
  14   margin: 0;
  15 }
  16 article,
  17 aside,
  18 details,
  19 figcaption,
  20 figure,
  21 footer,
  22 header,
  23 hgroup,
  24 main,
  25 menu,
  26 nav,
  27 section,
  28 summary {
  29   display: block;
  30 }
  31 audio,
  32 canvas,
  33 progress,
  34 video {
  35   display: inline-block;
  36   vertical-align: baseline;
  37 }
  38 audio:not([controls]) {
  39   display: none;
  40   height: 0;
  41 }
  42 [hidden],
  43 template {
  44   display: none;
  45 }
  46 a {
  47   background-color: transparent;
  48 }
  49 a:active,
  50 a:hover {
  51   outline: 0;
  52 }
  53 abbr[title] {
  54   border-bottom: 1px dotted;
  55 }
  56 b,
  57 strong {
  58   font-weight: bold;
  59 }
  60 dfn {
  61   font-style: italic;
  62 }
  63 h1 {
  64   margin: .67em 0;
  65   font-size: 2em;
  66 }
  67 mark {
  68   color: #000;
  69   background: #ff0;
  70 }
  71 small {
  72   font-size: 80%;
  73 }
  74 sub,
  75 sup {
  76   position: relative;
  77   font-size: 75%;
  78   line-height: 0;
  79   vertical-align: baseline;
  80 }
  81 sup {
  82   top: -.5em;
  83 }
  84 sub {
  85   bottom: -.25em;
  86 }
  87 img {
  88   border: 0;
  89 }
  90 svg:not(:root) {
  91   overflow: hidden;
  92 }
  93 figure {
  94   margin: 1em 40px;
  95 }
  96 hr {
  97   height: 0;
  98   -webkit-box-sizing: content-box;
  99      -moz-box-sizing: content-box;
 100           box-sizing: content-box;
 101 }
 102 pre {
 103   overflow: auto;
 104 }
 105 code,
 106 kbd,
 107 pre,
 108 samp {
 109   font-family: monospace, monospace;
 110   font-size: 1em;
 111 }
 112 button,
 113 input,
 114 optgroup,
 115 select,
 116 textarea {
 117   margin: 0;
 118   font: inherit;
 119   color: inherit;
 120 }
 121 button {
 122   overflow: visible;
 123 }
 124 button,
 125 select {
 126   text-transform: none;
 127 }
 128 button,
 129 html input[type="button"],
 130 input[type="reset"],
 131 input[type="submit"] {
 132   -webkit-appearance: button;
 133   cursor: pointer;
 134 }
 135 button[disabled],
 136 html input[disabled] {
 137   cursor: default;
 138 }
 139 button::-moz-focus-inner,
 140 input::-moz-focus-inner {
 141   padding: 0;
 142   border: 0;
 143 }
 144 input {
 145   line-height: normal;
 146 }
 147 input[type="checkbox"],
 148 input[type="radio"] {
 149   -webkit-box-sizing: border-box;
 150      -moz-box-sizing: border-box;
 151           box-sizing: border-box;
 152   padding: 0;
 153 }
 154 input[type="number"]::-webkit-inner-spin-button,
 155 input[type="number"]::-webkit-outer-spin-button {
 156   height: auto;
 157 }
 158 input[type="search"] {
 159   -webkit-box-sizing: content-box;
 160      -moz-box-sizing: content-box;
 161           box-sizing: content-box;
 162   -webkit-appearance: textfield;
 163 }
 164 input[type="search"]::-webkit-search-cancel-button,
 165 input[type="search"]::-webkit-search-decoration {
 166   -webkit-appearance: none;
 167 }
 168 fieldset {
 169   padding: .35em .625em .75em;
 170   margin: 0 2px;
 171   border: 1px solid #c0c0c0;
 172 }
 173 legend {
 174   padding: 0;
 175   border: 0;
 176 }
 177 textarea {
 178   overflow: auto;
 179 }
 180 optgroup {
 181   font-weight: bold;
 182 }
 183 table {
 184   border-spacing: 0;
 185   border-collapse: collapse;
 186 }
 187 td,
 188 th {
 189   padding: 0;
 190 }
 191 /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
 192 @media print {
 193   *,
 194   *:before,
 195   *:after {
 196     color: #000 !important;
 197     text-shadow: none !important;
 198     background: transparent !important;
 199     -webkit-box-shadow: none !important;
 200             box-shadow: none !important;
 201   }
 202   a,
 203   a:visited {
 204     text-decoration: underline;
 205   }
 206   a[href]:after {
 207     content: " (" attr(href) ")";
 208   }
 209   abbr[title]:after {
 210     content: " (" attr(title) ")";
 211   }
 212   a[href^="#"]:after,
 213   a[href^="javascript:"]:after {
 214     content: "";
 215   }
 216   pre,
 217   blockquote {
 218     border: 1px solid #999;
 219 
 220     page-break-inside: avoid;
 221   }
 222   thead {
 223     display: table-header-group;
 224   }
 225   tr,
 226   img {
 227     page-break-inside: avoid;
 228   }
 229   img {
 230     max-width: 100% !important;
 231   }
 232   p,
 233   h2,
 234   h3 {
 235     orphans: 3;
 236     widows: 3;
 237   }
 238   h2,
 239   h3 {
 240     page-break-after: avoid;
 241   }
 242   .navbar {
 243     display: none;
 244   }
 245   .btn > .caret,
 246   .dropup > .btn > .caret {
 247     border-top-color: #000 !important;
 248   }
 249   .label {
 250     border: 1px solid #000;
 251   }
 252   .table {
 253     border-collapse: collapse !important;
 254   }
 255   .table td,
 256   .table th {
 257     background-color: #fff !important;
 258   }
 259   .table-bordered th,
 260   .table-bordered td {
 261     border: 1px solid #ddd !important;
 262   }
 263 }
 264 @font-face {
 265   font-family: 'Glyphicons Halflings';
 266 
 267   src: url('../fonts/glyphicons-halflings-regular.eot');
 268   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');
 269 }
 270 .glyphicon {
 271   position: relative;
 272   top: 1px;
 273   display: inline-block;
 274   font-family: 'Glyphicons Halflings';
 275   font-style: normal;
 276   font-weight: normal;
 277   line-height: 1;
 278 
 279   -webkit-font-smoothing: antialiased;
 280   -moz-osx-font-smoothing: grayscale;
 281 }
 282 .glyphicon-asterisk:before {
 283   content: "\002a";
 284 }
 285 .glyphicon-plus:before {
 286   content: "\002b";
 287 }
 288 .glyphicon-euro:before,
 289 .glyphicon-eur:before {
 290   content: "\20ac";
 291 }
 292 .glyphicon-minus:before {
 293   content: "\2212";
 294 }
 295 .glyphicon-cloud:before {
 296   content: "\2601";
 297 }
 298 .glyphicon-envelope:before {
 299   content: "\2709";
 300 }
 301 .glyphicon-pencil:before {
 302   content: "\270f";
 303 }
 304 .glyphicon-glass:before {
 305   content: "\e001";
 306 }
 307 .glyphicon-music:before {
 308   content: "\e002";
 309 }
 310 .glyphicon-search:before {
 311   content: "\e003";
 312 }
 313 .glyphicon-heart:before {
 314   content: "\e005";
 315 }
 316 .glyphicon-star:before {
 317   content: "\e006";
 318 }
 319 .glyphicon-star-empty:before {
 320   content: "\e007";
 321 }
 322 .glyphicon-user:before {
 323   content: "\e008";
 324 }
 325 .glyphicon-film:before {
 326   content: "\e009";
 327 }
 328 .glyphicon-th-large:before {
 329   content: "\e010";
 330 }
 331 .glyphicon-th:before {
 332   content: "\e011";
 333 }
 334 .glyphicon-th-list:before {
 335   content: "\e012";
 336 }
 337 .glyphicon-ok:before {
 338   content: "\e013";
 339 }
 340 .glyphicon-remove:before {
 341   content: "\e014";
 342 }
 343 .glyphicon-zoom-in:before {
 344   content: "\e015";
 345 }
 346 .glyphicon-zoom-out:before {
 347   content: "\e016";
 348 }
 349 .glyphicon-off:before {
 350   content: "\e017";
 351 }
 352 .glyphicon-signal:before {
 353   content: "\e018";
 354 }
 355 .glyphicon-cog:before {
 356   content: "\e019";
 357 }
 358 .glyphicon-trash:before {
 359   content: "\e020";
 360 }
 361 .glyphicon-home:before {
 362   content: "\e021";
 363 }
 364 .glyphicon-file:before {
 365   content: "\e022";
 366 }
 367 .glyphicon-time:before {
 368   content: "\e023";
 369 }
 370 .glyphicon-road:before {
 371   content: "\e024";
 372 }
 373 .glyphicon-download-alt:before {
 374   content: "\e025";
 375 }
 376 .glyphicon-download:before {
 377   content: "\e026";
 378 }
 379 .glyphicon-upload:before {
 380   content: "\e027";
 381 }
 382 .glyphicon-inbox:before {
 383   content: "\e028";
 384 }
 385 .glyphicon-play-circle:before {
 386   content: "\e029";
 387 }
 388 .glyphicon-repeat:before {
 389   content: "\e030";
 390 }
 391 .glyphicon-refresh:before {
 392   content: "\e031";
 393 }
 394 .glyphicon-list-alt:before {
 395   content: "\e032";
 396 }
 397 .glyphicon-lock:before {
 398   content: "\e033";
 399 }
 400 .glyphicon-flag:before {
 401   content: "\e034";
 402 }
 403 .glyphicon-headphones:before {
 404   content: "\e035";
 405 }
 406 .glyphicon-volume-off:before {
 407   content: "\e036";
 408 }
 409 .glyphicon-volume-down:before {
 410   content: "\e037";
 411 }
 412 .glyphicon-volume-up:before {
 413   content: "\e038";
 414 }
 415 .glyphicon-qrcode:before {
 416   content: "\e039";
 417 }
 418 .glyphicon-barcode:before {
 419   content: "\e040";
 420 }
 421 .glyphicon-tag:before {
 422   content: "\e041";
 423 }
 424 .glyphicon-tags:before {
 425   content: "\e042";
 426 }
 427 .glyphicon-book:before {
 428   content: "\e043";
 429 }
 430 .glyphicon-bookmark:before {
 431   content: "\e044";
 432 }
 433 .glyphicon-print:before {
 434   content: "\e045";
 435 }
 436 .glyphicon-camera:before {
 437   content: "\e046";
 438 }
 439 .glyphicon-font:before {
 440   content: "\e047";
 441 }
 442 .glyphicon-bold:before {
 443   content: "\e048";
 444 }
 445 .glyphicon-italic:before {
 446   content: "\e049";
 447 }
 448 .glyphicon-text-height:before {
 449   content: "\e050";
 450 }
 451 .glyphicon-text-width:before {
 452   content: "\e051";
 453 }
 454 .glyphicon-align-left:before {
 455   content: "\e052";
 456 }
 457 .glyphicon-align-center:before {
 458   content: "\e053";
 459 }
 460 .glyphicon-align-right:before {
 461   content: "\e054";
 462 }
 463 .glyphicon-align-justify:before {
 464   content: "\e055";
 465 }
 466 .glyphicon-list:before {
 467   content: "\e056";
 468 }
 469 .glyphicon-indent-left:before {
 470   content: "\e057";
 471 }
 472 .glyphicon-indent-right:before {
 473   content: "\e058";
 474 }
 475 .glyphicon-facetime-video:before {
 476   content: "\e059";
 477 }
 478 .glyphicon-picture:before {
 479   content: "\e060";
 480 }
 481 .glyphicon-map-marker:before {
 482   content: "\e062";
 483 }
 484 .glyphicon-adjust:before {
 485   content: "\e063";
 486 }
 487 .glyphicon-tint:before {
 488   content: "\e064";
 489 }
 490 .glyphicon-edit:before {
 491   content: "\e065";
 492 }
 493 .glyphicon-share:before {
 494   content: "\e066";
 495 }
 496 .glyphicon-check:before {
 497   content: "\e067";
 498 }
 499 .glyphicon-move:before {
 500   content: "\e068";
 501 }
 502 .glyphicon-step-backward:before {
 503   content: "\e069";
 504 }
 505 .glyphicon-fast-backward:before {
 506   content: "\e070";
 507 }
 508 .glyphicon-backward:before {
 509   content: "\e071";
 510 }
 511 .glyphicon-play:before {
 512   content: "\e072";
 513 }
 514 .glyphicon-pause:before {
 515   content: "\e073";
 516 }
 517 .glyphicon-stop:before {
 518   content: "\e074";
 519 }
 520 .glyphicon-forward:before {
 521   content: "\e075";
 522 }
 523 .glyphicon-fast-forward:before {
 524   content: "\e076";
 525 }
 526 .glyphicon-step-forward:before {
 527   content: "\e077";
 528 }
 529 .glyphicon-eject:before {
 530   content: "\e078";
 531 }
 532 .glyphicon-chevron-left:before {
 533   content: "\e079";
 534 }
 535 .glyphicon-chevron-right:before {
 536   content: "\e080";
 537 }
 538 .glyphicon-plus-sign:before {
 539   content: "\e081";
 540 }
 541 .glyphicon-minus-sign:before {
 542   content: "\e082";
 543 }
 544 .glyphicon-remove-sign:before {
 545   content: "\e083";
 546 }
 547 .glyphicon-ok-sign:before {
 548   content: "\e084";
 549 }
 550 .glyphicon-question-sign:before {
 551   content: "\e085";
 552 }
 553 .glyphicon-info-sign:before {
 554   content: "\e086";
 555 }
 556 .glyphicon-screenshot:before {
 557   content: "\e087";
 558 }
 559 .glyphicon-remove-circle:before {
 560   content: "\e088";
 561 }
 562 .glyphicon-ok-circle:before {
 563   content: "\e089";
 564 }
 565 .glyphicon-ban-circle:before {
 566   content: "\e090";
 567 }
 568 .glyphicon-arrow-left:before {
 569   content: "\e091";
 570 }
 571 .glyphicon-arrow-right:before {
 572   content: "\e092";
 573 }
 574 .glyphicon-arrow-up:before {
 575   content: "\e093";
 576 }
 577 .glyphicon-arrow-down:before {
 578   content: "\e094";
 579 }
 580 .glyphicon-share-alt:before {
 581   content: "\e095";
 582 }
 583 .glyphicon-resize-full:before {
 584   content: "\e096";
 585 }
 586 .glyphicon-resize-small:before {
 587   content: "\e097";
 588 }
 589 .glyphicon-exclamation-sign:before {
 590   content: "\e101";
 591 }
 592 .glyphicon-gift:before {
 593   content: "\e102";
 594 }
 595 .glyphicon-leaf:before {
 596   content: "\e103";
 597 }
 598 .glyphicon-fire:before {
 599   content: "\e104";
 600 }
 601 .glyphicon-eye-open:before {
 602   content: "\e105";
 603 }
 604 .glyphicon-eye-close:before {
 605   content: "\e106";
 606 }
 607 .glyphicon-warning-sign:before {
 608   content: "\e107";
 609 }
 610 .glyphicon-plane:before {
 611   content: "\e108";
 612 }
 613 .glyphicon-calendar:before {
 614   content: "\e109";
 615 }
 616 .glyphicon-random:before {
 617   content: "\e110";
 618 }
 619 .glyphicon-comment:before {
 620   content: "\e111";
 621 }
 622 .glyphicon-magnet:before {
 623   content: "\e112";
 624 }
 625 .glyphicon-chevron-up:before {
 626   content: "\e113";
 627 }
 628 .glyphicon-chevron-down:before {
 629   content: "\e114";
 630 }
 631 .glyphicon-retweet:before {
 632   content: "\e115";
 633 }
 634 .glyphicon-shopping-cart:before {
 635   content: "\e116";
 636 }
 637 .glyphicon-folder-close:before {
 638   content: "\e117";
 639 }
 640 .glyphicon-folder-open:before {
 641   content: "\e118";
 642 }
 643 .glyphicon-resize-vertical:before {
 644   content: "\e119";
 645 }
 646 .glyphicon-resize-horizontal:before {
 647   content: "\e120";
 648 }
 649 .glyphicon-hdd:before {
 650   content: "\e121";
 651 }
 652 .glyphicon-bullhorn:before {
 653   content: "\e122";
 654 }
 655 .glyphicon-bell:before {
 656   content: "\e123";
 657 }
 658 .glyphicon-certificate:before {
 659   content: "\e124";
 660 }
 661 .glyphicon-thumbs-up:before {
 662   content: "\e125";
 663 }
 664 .glyphicon-thumbs-down:before {
 665   content: "\e126";
 666 }
 667 .glyphicon-hand-right:before {
 668   content: "\e127";
 669 }
 670 .glyphicon-hand-left:before {
 671   content: "\e128";
 672 }
 673 .glyphicon-hand-up:before {
 674   content: "\e129";
 675 }
 676 .glyphicon-hand-down:before {
 677   content: "\e130";
 678 }
 679 .glyphicon-circle-arrow-right:before {
 680   content: "\e131";
 681 }
 682 .glyphicon-circle-arrow-left:before {
 683   content: "\e132";
 684 }
 685 .glyphicon-circle-arrow-up:before {
 686   content: "\e133";
 687 }
 688 .glyphicon-circle-arrow-down:before {
 689   content: "\e134";
 690 }
 691 .glyphicon-globe:before {
 692   content: "\e135";
 693 }
 694 .glyphicon-wrench:before {
 695   content: "\e136";
 696 }
 697 .glyphicon-tasks:before {
 698   content: "\e137";
 699 }
 700 .glyphicon-filter:before {
 701   content: "\e138";
 702 }
 703 .glyphicon-briefcase:before {
 704   content: "\e139";
 705 }
 706 .glyphicon-fullscreen:before {
 707   content: "\e140";
 708 }
 709 .glyphicon-dashboard:before {
 710   content: "\e141";
 711 }
 712 .glyphicon-paperclip:before {
 713   content: "\e142";
 714 }
 715 .glyphicon-heart-empty:before {
 716   content: "\e143";
 717 }
 718 .glyphicon-link:before {
 719   content: "\e144";
 720 }
 721 .glyphicon-phone:before {
 722   content: "\e145";
 723 }
 724 .glyphicon-pushpin:before {
 725   content: "\e146";
 726 }
 727 .glyphicon-usd:before {
 728   content: "\e148";
 729 }
 730 .glyphicon-gbp:before {
 731   content: "\e149";
 732 }
 733 .glyphicon-sort:before {
 734   content: "\e150";
 735 }
 736 .glyphicon-sort-by-alphabet:before {
 737   content: "\e151";
 738 }
 739 .glyphicon-sort-by-alphabet-alt:before {
 740   content: "\e152";
 741 }
 742 .glyphicon-sort-by-order:before {
 743   content: "\e153";
 744 }
 745 .glyphicon-sort-by-order-alt:before {
 746   content: "\e154";
 747 }
 748 .glyphicon-sort-by-attributes:before {
 749   content: "\e155";
 750 }
 751 .glyphicon-sort-by-attributes-alt:before {
 752   content: "\e156";
 753 }
 754 .glyphicon-unchecked:before {
 755   content: "\e157";
 756 }
 757 .glyphicon-expand:before {
 758   content: "\e158";
 759 }
 760 .glyphicon-collapse-down:before {
 761   content: "\e159";
 762 }
 763 .glyphicon-collapse-up:before {
 764   content: "\e160";
 765 }
 766 .glyphicon-log-in:before {
 767   content: "\e161";
 768 }
 769 .glyphicon-flash:before {
 770   content: "\e162";
 771 }
 772 .glyphicon-log-out:before {
 773   content: "\e163";
 774 }
 775 .glyphicon-new-window:before {
 776   content: "\e164";
 777 }
 778 .glyphicon-record:before {
 779   content: "\e165";
 780 }
 781 .glyphicon-save:before {
 782   content: "\e166";
 783 }
 784 .glyphicon-open:before {
 785   content: "\e167";
 786 }
 787 .glyphicon-saved:before {
 788   content: "\e168";
 789 }
 790 .glyphicon-import:before {
 791   content: "\e169";
 792 }
 793 .glyphicon-export:before {
 794   content: "\e170";
 795 }
 796 .glyphicon-send:before {
 797   content: "\e171";
 798 }
 799 .glyphicon-floppy-disk:before {
 800   content: "\e172";
 801 }
 802 .glyphicon-floppy-saved:before {
 803   content: "\e173";
 804 }
 805 .glyphicon-floppy-remove:before {
 806   content: "\e174";
 807 }
 808 .glyphicon-floppy-save:before {
 809   content: "\e175";
 810 }
 811 .glyphicon-floppy-open:before {
 812   content: "\e176";
 813 }
 814 .glyphicon-credit-card:before {
 815   content: "\e177";
 816 }
 817 .glyphicon-transfer:before {
 818   content: "\e178";
 819 }
 820 .glyphicon-cutlery:before {
 821   content: "\e179";
 822 }
 823 .glyphicon-header:before {
 824   content: "\e180";
 825 }
 826 .glyphicon-compressed:before {
 827   content: "\e181";
 828 }
 829 .glyphicon-earphone:before {
 830   content: "\e182";
 831 }
 832 .glyphicon-phone-alt:before {
 833   content: "\e183";
 834 }
 835 .glyphicon-tower:before {
 836   content: "\e184";
 837 }
 838 .glyphicon-stats:before {
 839   content: "\e185";
 840 }
 841 .glyphicon-sd-video:before {
 842   content: "\e186";
 843 }
 844 .glyphicon-hd-video:before {
 845   content: "\e187";
 846 }
 847 .glyphicon-subtitles:before {
 848   content: "\e188";
 849 }
 850 .glyphicon-sound-stereo:before {
 851   content: "\e189";
 852 }
 853 .glyphicon-sound-dolby:before {
 854   content: "\e190";
 855 }
 856 .glyphicon-sound-5-1:before {
 857   content: "\e191";
 858 }
 859 .glyphicon-sound-6-1:before {
 860   content: "\e192";
 861 }
 862 .glyphicon-sound-7-1:before {
 863   content: "\e193";
 864 }
 865 .glyphicon-copyright-mark:before {
 866   content: "\e194";
 867 }
 868 .glyphicon-registration-mark:before {
 869   content: "\e195";
 870 }
 871 .glyphicon-cloud-download:before {
 872   content: "\e197";
 873 }
 874 .glyphicon-cloud-upload:before {
 875   content: "\e198";
 876 }
 877 .glyphicon-tree-conifer:before {
 878   content: "\e199";
 879 }
 880 .glyphicon-tree-deciduous:before {
 881   content: "\e200";
 882 }
 883 .glyphicon-cd:before {
 884   content: "\e201";
 885 }
 886 .glyphicon-save-file:before {
 887   content: "\e202";
 888 }
 889 .glyphicon-open-file:before {
 890   content: "\e203";
 891 }
 892 .glyphicon-level-up:before {
 893   content: "\e204";
 894 }
 895 .glyphicon-copy:before {
 896   content: "\e205";
 897 }
 898 .glyphicon-paste:before {
 899   content: "\e206";
 900 }
 901 .glyphicon-alert:before {
 902   content: "\e209";
 903 }
 904 .glyphicon-equalizer:before {
 905   content: "\e210";
 906 }
 907 .glyphicon-king:before {
 908   content: "\e211";
 909 }
 910 .glyphicon-queen:before {
 911   content: "\e212";
 912 }
 913 .glyphicon-pawn:before {
 914   content: "\e213";
 915 }
 916 .glyphicon-bishop:before {
 917   content: "\e214";
 918 }
 919 .glyphicon-knight:before {
 920   content: "\e215";
 921 }
 922 .glyphicon-baby-formula:before {
 923   content: "\e216";
 924 }
 925 .glyphicon-tent:before {
 926   content: "\26fa";
 927 }
 928 .glyphicon-blackboard:before {
 929   content: "\e218";
 930 }
 931 .glyphicon-bed:before {
 932   content: "\e219";
 933 }
 934 .glyphicon-apple:before {
 935   content: "\f8ff";
 936 }
 937 .glyphicon-erase:before {
 938   content: "\e221";
 939 }
 940 .glyphicon-hourglass:before {
 941   content: "\231b";
 942 }
 943 .glyphicon-lamp:before {
 944   content: "\e223";
 945 }
 946 .glyphicon-duplicate:before {
 947   content: "\e224";
 948 }
 949 .glyphicon-piggy-bank:before {
 950   content: "\e225";
 951 }
 952 .glyphicon-scissors:before {
 953   content: "\e226";
 954 }
 955 .glyphicon-bitcoin:before {
 956   content: "\e227";
 957 }
 958 .glyphicon-btc:before {
 959   content: "\e227";
 960 }
 961 .glyphicon-xbt:before {
 962   content: "\e227";
 963 }
 964 .glyphicon-yen:before {
 965   content: "\00a5";
 966 }
 967 .glyphicon-jpy:before {
 968   content: "\00a5";
 969 }
 970 .glyphicon-ruble:before {
 971   content: "\20bd";
 972 }
 973 .glyphicon-rub:before {
 974   content: "\20bd";
 975 }
 976 .glyphicon-scale:before {
 977   content: "\e230";
 978 }
 979 .glyphicon-ice-lolly:before {
 980   content: "\e231";
 981 }
 982 .glyphicon-ice-lolly-tasted:before {
 983   content: "\e232";
 984 }
 985 .glyphicon-education:before {
 986   content: "\e233";
 987 }
 988 .glyphicon-option-horizontal:before {
 989   content: "\e234";
 990 }
 991 .glyphicon-option-vertical:before {
 992   content: "\e235";
 993 }
 994 .glyphicon-menu-hamburger:before {
 995   content: "\e236";
 996 }
 997 .glyphicon-modal-window:before {
 998   content: "\e237";
 999 }
1000 .glyphicon-oil:before {
1001   content: "\e238";
1002 }
1003 .glyphicon-grain:before {
1004   content: "\e239";
1005 }
1006 .glyphicon-sunglasses:before {
1007   content: "\e240";
1008 }
1009 .glyphicon-text-size:before {
1010   content: "\e241";
1011 }
1012 .glyphicon-text-color:before {
1013   content: "\e242";
1014 }
1015 .glyphicon-text-background:before {
1016   content: "\e243";
1017 }
1018 .glyphicon-object-align-top:before {
1019   content: "\e244";
1020 }
1021 .glyphicon-object-align-bottom:before {
1022   content: "\e245";
1023 }
1024 .glyphicon-object-align-horizontal:before {
1025   content: "\e246";
1026 }
1027 .glyphicon-object-align-left:before {
1028   content: "\e247";
1029 }
1030 .glyphicon-object-align-vertical:before {
1031   content: "\e248";
1032 }
1033 .glyphicon-object-align-right:before {
1034   content: "\e249";
1035 }
1036 .glyphicon-triangle-right:before {
1037   content: "\e250";
1038 }
1039 .glyphicon-triangle-left:before {
1040   content: "\e251";
1041 }
1042 .glyphicon-triangle-bottom:before {
1043   content: "\e252";
1044 }
1045 .glyphicon-triangle-top:before {
1046   content: "\e253";
1047 }
1048 .glyphicon-console:before {
1049   content: "\e254";
1050 }
1051 .glyphicon-superscript:before {
1052   content: "\e255";
1053 }
1054 .glyphicon-subscript:before {
1055   content: "\e256";
1056 }
1057 .glyphicon-menu-left:before {
1058   content: "\e257";
1059 }
1060 .glyphicon-menu-right:before {
1061   content: "\e258";
1062 }
1063 .glyphicon-menu-down:before {
1064   content: "\e259";
1065 }
1066 .glyphicon-menu-up:before {
1067   content: "\e260";
1068 }
1069 * {
1070   -webkit-box-sizing: border-box;
1071      -moz-box-sizing: border-box;
1072           box-sizing: border-box;
1073 }
1074 *:before,
1075 *:after {
1076   -webkit-box-sizing: border-box;
1077      -moz-box-sizing: border-box;
1078           box-sizing: border-box;
1079 }
1080 html {
1081   font-size: 10px;
1082 
1083   -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1084 }
1085 body {
1086   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1087   font-size: 14px;
1088   line-height: 1.42857143;
1089   color: #333;
1090   background-color: #fff;
1091 }
1092 input,
1093 button,
1094 select,
1095 textarea {
1096   font-family: inherit;
1097   font-size: inherit;
1098   line-height: inherit;
1099 }
1100 a {
1101   color: #337ab7;
1102   text-decoration: none;
1103 }
1104 a:hover,
1105 a:focus {
1106   color: #23527c;
1107   text-decoration: underline;
1108 }
1109 a:focus {
1110   outline: 5px auto -webkit-focus-ring-color;
1111   outline-offset: -2px;
1112 }
1113 figure {
1114   margin: 0;
1115 }
1116 img {
1117   vertical-align: middle;
1118 }
1119 .img-responsive,
1120 .thumbnail > img,
1121 .thumbnail a > img,
1122 .carousel-inner > .item > img,
1123 .carousel-inner > .item > a > img {
1124   display: block;
1125   max-width: 100%;
1126   height: auto;
1127 }
1128 .img-rounded {
1129   border-radius: 6px;
1130 }
1131 .img-thumbnail {
1132   display: inline-block;
1133   max-width: 100%;
1134   height: auto;
1135   padding: 4px;
1136   line-height: 1.42857143;
1137   background-color: #fff;
1138   border: 1px solid #ddd;
1139   border-radius: 4px;
1140   -webkit-transition: all .2s ease-in-out;
1141        -o-transition: all .2s ease-in-out;
1142           transition: all .2s ease-in-out;
1143 }
1144 .img-circle {
1145   border-radius: 50%;
1146 }
1147 hr {
1148   margin-top: 20px;
1149   margin-bottom: 20px;
1150   border: 0;
1151   border-top: 1px solid #eee;
1152 }
1153 .sr-only {
1154   position: absolute;
1155   width: 1px;
1156   height: 1px;
1157   padding: 0;
1158   margin: -1px;
1159   overflow: hidden;
1160   clip: rect(0, 0, 0, 0);
1161   border: 0;
1162 }
1163 .sr-only-focusable:active,
1164 .sr-only-focusable:focus {
1165   position: static;
1166   width: auto;
1167   height: auto;
1168   margin: 0;
1169   overflow: visible;
1170   clip: auto;
1171 }
1172 [role="button"] {
1173   cursor: pointer;
1174 }
1175 h1,
1176 h2,
1177 h3,
1178 h4,
1179 h5,
1180 h6,
1181 .h1,
1182 .h2,
1183 .h3,
1184 .h4,
1185 .h5,
1186 .h6 {
1187   font-family: inherit;
1188   font-weight: 500;
1189   line-height: 1.1;
1190   color: inherit;
1191 }
1192 h1 small,
1193 h2 small,
1194 h3 small,
1195 h4 small,
1196 h5 small,
1197 h6 small,
1198 .h1 small,
1199 .h2 small,
1200 .h3 small,
1201 .h4 small,
1202 .h5 small,
1203 .h6 small,
1204 h1 .small,
1205 h2 .small,
1206 h3 .small,
1207 h4 .small,
1208 h5 .small,
1209 h6 .small,
1210 .h1 .small,
1211 .h2 .small,
1212 .h3 .small,
1213 .h4 .small,
1214 .h5 .small,
1215 .h6 .small {
1216   font-weight: normal;
1217   line-height: 1;
1218   color: #777;
1219 }
1220 h1,
1221 .h1,
1222 h2,
1223 .h2,
1224 h3,
1225 .h3 {
1226   margin-top: 20px;
1227   margin-bottom: 10px;
1228 }
1229 h1 small,
1230 .h1 small,
1231 h2 small,
1232 .h2 small,
1233 h3 small,
1234 .h3 small,
1235 h1 .small,
1236 .h1 .small,
1237 h2 .small,
1238 .h2 .small,
1239 h3 .small,
1240 .h3 .small {
1241   font-size: 65%;
1242 }
1243 h4,
1244 .h4,
1245 h5,
1246 .h5,
1247 h6,
1248 .h6 {
1249   margin-top: 10px;
1250   margin-bottom: 10px;
1251 }
1252 h4 small,
1253 .h4 small,
1254 h5 small,
1255 .h5 small,
1256 h6 small,
1257 .h6 small,
1258 h4 .small,
1259 .h4 .small,
1260 h5 .small,
1261 .h5 .small,
1262 h6 .small,
1263 .h6 .small {
1264   font-size: 75%;
1265 }
1266 h1,
1267 .h1 {
1268   font-size: 36px;
1269 }
1270 h2,
1271 .h2 {
1272   font-size: 30px;
1273 }
1274 h3,
1275 .h3 {
1276   font-size: 24px;
1277 }
1278 h4,
1279 .h4 {
1280   font-size: 18px;
1281 }
1282 h5,
1283 .h5 {
1284   font-size: 14px;
1285 }
1286 h6,
1287 .h6 {
1288   font-size: 12px;
1289 }
1290 p {
1291   margin: 0 0 10px;
1292 }
1293 .lead {
1294   margin-bottom: 20px;
1295   font-size: 16px;
1296   font-weight: 300;
1297   line-height: 1.4;
1298 }
1299 @media (min-width: 768px) {
1300   .lead {
1301     font-size: 21px;
1302   }
1303 }
1304 small,
1305 .small {
1306   font-size: 85%;
1307 }
1308 mark,
1309 .mark {
1310   padding: .2em;
1311   background-color: #fcf8e3;
1312 }
1313 .text-left {
1314   text-align: left;
1315 }
1316 .text-right {
1317   text-align: right;
1318 }
1319 .text-center {
1320   text-align: center;
1321 }
1322 .text-justify {
1323   text-align: justify;
1324 }
1325 .text-nowrap {
1326   white-space: nowrap;
1327 }
1328 .text-lowercase {
1329   text-transform: lowercase;
1330 }
1331 .text-uppercase {
1332   text-transform: uppercase;
1333 }
1334 .text-capitalize {
1335   text-transform: capitalize;
1336 }
1337 .text-muted {
1338   color: #777;
1339 }
1340 .text-primary {
1341   color: #337ab7;
1342 }
1343 a.text-primary:hover,
1344 a.text-primary:focus {
1345   color: #286090;
1346 }
1347 .text-success {
1348   color: #3c763d;
1349 }
1350 a.text-success:hover,
1351 a.text-success:focus {
1352   color: #2b542c;
1353 }
1354 .text-info {
1355   color: #31708f;
1356 }
1357 a.text-info:hover,
1358 a.text-info:focus {
1359   color: #245269;
1360 }
1361 .text-warning {
1362   color: #8a6d3b;
1363 }
1364 a.text-warning:hover,
1365 a.text-warning:focus {
1366   color: #66512c;
1367 }
1368 .text-danger {
1369   color: #a94442;
1370 }
1371 a.text-danger:hover,
1372 a.text-danger:focus {
1373   color: #843534;
1374 }
1375 .bg-primary {
1376   color: #fff;
1377   background-color: #337ab7;
1378 }
1379 a.bg-primary:hover,
1380 a.bg-primary:focus {
1381   background-color: #286090;
1382 }
1383 .bg-success {
1384   background-color: #dff0d8;
1385 }
1386 a.bg-success:hover,
1387 a.bg-success:focus {
1388   background-color: #c1e2b3;
1389 }
1390 .bg-info {
1391   background-color: #d9edf7;
1392 }
1393 a.bg-info:hover,
1394 a.bg-info:focus {
1395   background-color: #afd9ee;
1396 }
1397 .bg-warning {
1398   background-color: #fcf8e3;
1399 }
1400 a.bg-warning:hover,
1401 a.bg-warning:focus {
1402   background-color: #f7ecb5;
1403 }
1404 .bg-danger {
1405   background-color: #f2dede;
1406 }
1407 a.bg-danger:hover,
1408 a.bg-danger:focus {
1409   background-color: #e4b9b9;
1410 }
1411 .page-header {
1412   padding-bottom: 9px;
1413   margin: 40px 0 20px;
1414   border-bottom: 1px solid #eee;
1415 }
1416 ul,
1417 ol {
1418   margin-top: 0;
1419   margin-bottom: 10px;
1420 }
1421 ul ul,
1422 ol ul,
1423 ul ol,
1424 ol ol {
1425   margin-bottom: 0;
1426 }
1427 .list-unstyled {
1428   padding-left: 0;
1429   list-style: none;
1430 }
1431 .list-inline {
1432   padding-left: 0;
1433   margin-left: -5px;
1434   list-style: none;
1435 }
1436 .list-inline > li {
1437   display: inline-block;
1438   padding-right: 5px;
1439   padding-left: 5px;
1440 }
1441 dl {
1442   margin-top: 0;
1443   margin-bottom: 20px;
1444 }
1445 dt,
1446 dd {
1447   line-height: 1.42857143;
1448 }
1449 dt {
1450   font-weight: bold;
1451 }
1452 dd {
1453   margin-left: 0;
1454 }
1455 @media (min-width: 768px) {
1456   .dl-horizontal dt {
1457     float: left;
1458     width: 160px;
1459     overflow: hidden;
1460     clear: left;
1461     text-align: right;
1462     text-overflow: ellipsis;
1463     white-space: nowrap;
1464   }
1465   .dl-horizontal dd {
1466     margin-left: 180px;
1467   }
1468 }
1469 abbr[title],
1470 abbr[data-original-title] {
1471   cursor: help;
1472   border-bottom: 1px dotted #777;
1473 }
1474 .initialism {
1475   font-size: 90%;
1476   text-transform: uppercase;
1477 }
1478 blockquote {
1479   padding: 10px 20px;
1480   margin: 0 0 20px;
1481   font-size: 17.5px;
1482   border-left: 5px solid #eee;
1483 }
1484 blockquote p:last-child,
1485 blockquote ul:last-child,
1486 blockquote ol:last-child {
1487   margin-bottom: 0;
1488 }
1489 blockquote footer,
1490 blockquote small,
1491 blockquote .small {
1492   display: block;
1493   font-size: 80%;
1494   line-height: 1.42857143;
1495   color: #777;
1496 }
1497 blockquote footer:before,
1498 blockquote small:before,
1499 blockquote .small:before {
1500   content: '\2014 \00A0';
1501 }
1502 .blockquote-reverse,
1503 blockquote.pull-right {
1504   padding-right: 15px;
1505   padding-left: 0;
1506   text-align: right;
1507   border-right: 5px solid #eee;
1508   border-left: 0;
1509 }
1510 .blockquote-reverse footer:before,
1511 blockquote.pull-right footer:before,
1512 .blockquote-reverse small:before,
1513 blockquote.pull-right small:before,
1514 .blockquote-reverse .small:before,
1515 blockquote.pull-right .small:before {
1516   content: '';
1517 }
1518 .blockquote-reverse footer:after,
1519 blockquote.pull-right footer:after,
1520 .blockquote-reverse small:after,
1521 blockquote.pull-right small:after,
1522 .blockquote-reverse .small:after,
1523 blockquote.pull-right .small:after {
1524   content: '\00A0 \2014';
1525 }
1526 address {
1527   margin-bottom: 20px;
1528   font-style: normal;
1529   line-height: 1.42857143;
1530 }
1531 code,
1532 kbd,
1533 pre,
1534 samp {
1535   font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1536 }
1537 code {
1538   padding: 2px 4px;
1539   font-size: 90%;
1540   color: #c7254e;
1541   background-color: #f9f2f4;
1542   border-radius: 4px;
1543 }
1544 kbd {
1545   padding: 2px 4px;
1546   font-size: 90%;
1547   color: #fff;
1548   background-color: #333;
1549   border-radius: 3px;
1550   -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1551           box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1552 }
1553 kbd kbd {
1554   padding: 0;
1555   font-size: 100%;
1556   font-weight: bold;
1557   -webkit-box-shadow: none;
1558           box-shadow: none;
1559 }
1560 pre {
1561   display: block;
1562   padding: 9.5px;
1563   margin: 0 0 10px;
1564   font-size: 13px;
1565   line-height: 1.42857143;
1566   color: #333;
1567   word-break: break-all;
1568   word-wrap: break-word;
1569   background-color: #f5f5f5;
1570   border: 1px solid #ccc;
1571   border-radius: 4px;
1572 }
1573 pre code {
1574   padding: 0;
1575   font-size: inherit;
1576   color: inherit;
1577   white-space: pre-wrap;
1578   background-color: transparent;
1579   border-radius: 0;
1580 }
1581 .pre-scrollable {
1582   max-height: 340px;
1583   overflow-y: scroll;
1584 }
1585 .container {
1586   padding-right: 15px;
1587   padding-left: 15px;
1588   margin-right: auto;
1589   margin-left: auto;
1590 }
1591 @media (min-width: 768px) {
1592   .container {
1593     width: 750px;
1594   }
1595 }
1596 @media (min-width: 992px) {
1597   .container {
1598     width: 970px;
1599   }
1600 }
1601 @media (min-width: 1200px) {
1602   .container {
1603     width: 1170px;
1604   }
1605 }
1606 .container-fluid {
1607   padding-right: 15px;
1608   padding-left: 15px;
1609   margin-right: auto;
1610   margin-left: auto;
1611 }
1612 .row {
1613   margin-right: -15px;
1614   margin-left: -15px;
1615 }
1616 .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 {
1617   position: relative;
1618   min-height: 1px;
1619   padding-right: 15px;
1620   padding-left: 15px;
1621 }
1622 .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 {
1623   float: left;
1624 }
1625 .col-xs-12 {
1626   width: 100%;
1627 }
1628 .col-xs-11 {
1629   width: 91.66666667%;
1630 }
1631 .col-xs-10 {
1632   width: 83.33333333%;
1633 }
1634 .col-xs-9 {
1635   width: 75%;
1636 }
1637 .col-xs-8 {
1638   width: 66.66666667%;
1639 }
1640 .col-xs-7 {
1641   width: 58.33333333%;
1642 }
1643 .col-xs-6 {
1644   width: 50%;
1645 }
1646 .col-xs-5 {
1647   width: 41.66666667%;
1648 }
1649 .col-xs-4 {
1650   width: 33.33333333%;
1651 }
1652 .col-xs-3 {
1653   width: 25%;
1654 }
1655 .col-xs-2 {
1656   width: 16.66666667%;
1657 }
1658 .col-xs-1 {
1659   width: 8.33333333%;
1660 }
1661 .col-xs-pull-12 {
1662   right: 100%;
1663 }
1664 .col-xs-pull-11 {
1665   right: 91.66666667%;
1666 }
1667 .col-xs-pull-10 {
1668   right: 83.33333333%;
1669 }
1670 .col-xs-pull-9 {
1671   right: 75%;
1672 }
1673 .col-xs-pull-8 {
1674   right: 66.66666667%;
1675 }
1676 .col-xs-pull-7 {
1677   right: 58.33333333%;
1678 }
1679 .col-xs-pull-6 {
1680   right: 50%;
1681 }
1682 .col-xs-pull-5 {
1683   right: 41.66666667%;
1684 }
1685 .col-xs-pull-4 {
1686   right: 33.33333333%;
1687 }
1688 .col-xs-pull-3 {
1689   right: 25%;
1690 }
1691 .col-xs-pull-2 {
1692   right: 16.66666667%;
1693 }
1694 .col-xs-pull-1 {
1695   right: 8.33333333%;
1696 }
1697 .col-xs-pull-0 {
1698   right: auto;
1699 }
1700 .col-xs-push-12 {
1701   left: 100%;
1702 }
1703 .col-xs-push-11 {
1704   left: 91.66666667%;
1705 }
1706 .col-xs-push-10 {
1707   left: 83.33333333%;
1708 }
1709 .col-xs-push-9 {
1710   left: 75%;
1711 }
1712 .col-xs-push-8 {
1713   left: 66.66666667%;
1714 }
1715 .col-xs-push-7 {
1716   left: 58.33333333%;
1717 }
1718 .col-xs-push-6 {
1719   left: 50%;
1720 }
1721 .col-xs-push-5 {
1722   left: 41.66666667%;
1723 }
1724 .col-xs-push-4 {
1725   left: 33.33333333%;
1726 }
1727 .col-xs-push-3 {
1728   left: 25%;
1729 }
1730 .col-xs-push-2 {
1731   left: 16.66666667%;
1732 }
1733 .col-xs-push-1 {
1734   left: 8.33333333%;
1735 }
1736 .col-xs-push-0 {
1737   left: auto;
1738 }
1739 .col-xs-offset-12 {
1740   margin-left: 100%;
1741 }
1742 .col-xs-offset-11 {
1743   margin-left: 91.66666667%;
1744 }
1745 .col-xs-offset-10 {
1746   margin-left: 83.33333333%;
1747 }
1748 .col-xs-offset-9 {
1749   margin-left: 75%;
1750 }
1751 .col-xs-offset-8 {
1752   margin-left: 66.66666667%;
1753 }
1754 .col-xs-offset-7 {
1755   margin-left: 58.33333333%;
1756 }
1757 .col-xs-offset-6 {
1758   margin-left: 50%;
1759 }
1760 .col-xs-offset-5 {
1761   margin-left: 41.66666667%;
1762 }
1763 .col-xs-offset-4 {
1764   margin-left: 33.33333333%;
1765 }
1766 .col-xs-offset-3 {
1767   margin-left: 25%;
1768 }
1769 .col-xs-offset-2 {
1770   margin-left: 16.66666667%;
1771 }
1772 .col-xs-offset-1 {
1773   margin-left: 8.33333333%;
1774 }
1775 .col-xs-offset-0 {
1776   margin-left: 0;
1777 }
1778 @media (min-width: 768px) {
1779   .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 {
1780     float: left;
1781   }
1782   .col-sm-12 {
1783     width: 100%;
1784   }
1785   .col-sm-11 {
1786     width: 91.66666667%;
1787   }
1788   .col-sm-10 {
1789     width: 83.33333333%;
1790   }
1791   .col-sm-9 {
1792     width: 75%;
1793   }
1794   .col-sm-8 {
1795     width: 66.66666667%;
1796   }
1797   .col-sm-7 {
1798     width: 58.33333333%;
1799   }
1800   .col-sm-6 {
1801     width: 50%;
1802   }
1803   .col-sm-5 {
1804     width: 41.66666667%;
1805   }
1806   .col-sm-4 {
1807     width: 33.33333333%;
1808   }
1809   .col-sm-3 {
1810     width: 25%;
1811   }
1812   .col-sm-2 {
1813     width: 16.66666667%;
1814   }
1815   .col-sm-1 {
1816     width: 8.33333333%;
1817   }
1818   .col-sm-pull-12 {
1819     right: 100%;
1820   }
1821   .col-sm-pull-11 {
1822     right: 91.66666667%;
1823   }
1824   .col-sm-pull-10 {
1825     right: 83.33333333%;
1826   }
1827   .col-sm-pull-9 {
1828     right: 75%;
1829   }
1830   .col-sm-pull-8 {
1831     right: 66.66666667%;
1832   }
1833   .col-sm-pull-7 {
1834     right: 58.33333333%;
1835   }
1836   .col-sm-pull-6 {
1837     right: 50%;
1838   }
1839   .col-sm-pull-5 {
1840     right: 41.66666667%;
1841   }
1842   .col-sm-pull-4 {
1843     right: 33.33333333%;
1844   }
1845   .col-sm-pull-3 {
1846     right: 25%;
1847   }
1848   .col-sm-pull-2 {
1849     right: 16.66666667%;
1850   }
1851   .col-sm-pull-1 {
1852     right: 8.33333333%;
1853   }
1854   .col-sm-pull-0 {
1855     right: auto;
1856   }
1857   .col-sm-push-12 {
1858     left: 100%;
1859   }
1860   .col-sm-push-11 {
1861     left: 91.66666667%;
1862   }
1863   .col-sm-push-10 {
1864     left: 83.33333333%;
1865   }
1866   .col-sm-push-9 {
1867     left: 75%;
1868   }
1869   .col-sm-push-8 {
1870     left: 66.66666667%;
1871   }
1872   .col-sm-push-7 {
1873     left: 58.33333333%;
1874   }
1875   .col-sm-push-6 {
1876     left: 50%;
1877   }
1878   .col-sm-push-5 {
1879     left: 41.66666667%;
1880   }
1881   .col-sm-push-4 {
1882     left: 33.33333333%;
1883   }
1884   .col-sm-push-3 {
1885     left: 25%;
1886   }
1887   .col-sm-push-2 {
1888     left: 16.66666667%;
1889   }
1890   .col-sm-push-1 {
1891     left: 8.33333333%;
1892   }
1893   .col-sm-push-0 {
1894     left: auto;
1895   }
1896   .col-sm-offset-12 {
1897     margin-left: 100%;
1898   }
1899   .col-sm-offset-11 {
1900     margin-left: 91.66666667%;
1901   }
1902   .col-sm-offset-10 {
1903     margin-left: 83.33333333%;
1904   }
1905   .col-sm-offset-9 {
1906     margin-left: 75%;
1907   }
1908   .col-sm-offset-8 {
1909     margin-left: 66.66666667%;
1910   }
1911   .col-sm-offset-7 {
1912     margin-left: 58.33333333%;
1913   }
1914   .col-sm-offset-6 {
1915     margin-left: 50%;
1916   }
1917   .col-sm-offset-5 {
1918     margin-left: 41.66666667%;
1919   }
1920   .col-sm-offset-4 {
1921     margin-left: 33.33333333%;
1922   }
1923   .col-sm-offset-3 {
1924     margin-left: 25%;
1925   }
1926   .col-sm-offset-2 {
1927     margin-left: 16.66666667%;
1928   }
1929   .col-sm-offset-1 {
1930     margin-left: 8.33333333%;
1931   }
1932   .col-sm-offset-0 {
1933     margin-left: 0;
1934   }
1935 }
1936 @media (min-width: 992px) {
1937   .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 {
1938     float: left;
1939   }
1940   .col-md-12 {
1941     width: 100%;
1942   }
1943   .col-md-11 {
1944     width: 91.66666667%;
1945   }
1946   .col-md-10 {
1947     width: 83.33333333%;
1948   }
1949   .col-md-9 {
1950     width: 75%;
1951   }
1952   .col-md-8 {
1953     width: 66.66666667%;
1954   }
1955   .col-md-7 {
1956     width: 58.33333333%;
1957   }
1958   .col-md-6 {
1959     width: 50%;
1960   }
1961   .col-md-5 {
1962     width: 41.66666667%;
1963   }
1964   .col-md-4 {
1965     width: 33.33333333%;
1966   }
1967   .col-md-3 {
1968     width: 25%;
1969   }
1970   .col-md-2 {
1971     width: 16.66666667%;
1972   }
1973   .col-md-1 {
1974     width: 8.33333333%;
1975   }
1976   .col-md-pull-12 {
1977     right: 100%;
1978   }
1979   .col-md-pull-11 {
1980     right: 91.66666667%;
1981   }
1982   .col-md-pull-10 {
1983     right: 83.33333333%;
1984   }
1985   .col-md-pull-9 {
1986     right: 75%;
1987   }
1988   .col-md-pull-8 {
1989     right: 66.66666667%;
1990   }
1991   .col-md-pull-7 {
1992     right: 58.33333333%;
1993   }
1994   .col-md-pull-6 {
1995     right: 50%;
1996   }
1997   .col-md-pull-5 {
1998     right: 41.66666667%;
1999   }
2000   .col-md-pull-4 {
2001     right: 33.33333333%;
2002   }
2003   .col-md-pull-3 {
2004     right: 25%;
2005   }
2006   .col-md-pull-2 {
2007     right: 16.66666667%;
2008   }
2009   .col-md-pull-1 {
2010     right: 8.33333333%;
2011   }
2012   .col-md-pull-0 {
2013     right: auto;
2014   }
2015   .col-md-push-12 {
2016     left: 100%;
2017   }
2018   .col-md-push-11 {
2019     left: 91.66666667%;
2020   }
2021   .col-md-push-10 {
2022     left: 83.33333333%;
2023   }
2024   .col-md-push-9 {
2025     left: 75%;
2026   }
2027   .col-md-push-8 {
2028     left: 66.66666667%;
2029   }
2030   .col-md-push-7 {
2031     left: 58.33333333%;
2032   }
2033   .col-md-push-6 {
2034     left: 50%;
2035   }
2036   .col-md-push-5 {
2037     left: 41.66666667%;
2038   }
2039   .col-md-push-4 {
2040     left: 33.33333333%;
2041   }
2042   .col-md-push-3 {
2043     left: 25%;
2044   }
2045   .col-md-push-2 {
2046     left: 16.66666667%;
2047   }
2048   .col-md-push-1 {
2049     left: 8.33333333%;
2050   }
2051   .col-md-push-0 {
2052     left: auto;
2053   }
2054   .col-md-offset-12 {
2055     margin-left: 100%;
2056   }
2057   .col-md-offset-11 {
2058     margin-left: 91.66666667%;
2059   }
2060   .col-md-offset-10 {
2061     margin-left: 83.33333333%;
2062   }
2063   .col-md-offset-9 {
2064     margin-left: 75%;
2065   }
2066   .col-md-offset-8 {
2067     margin-left: 66.66666667%;
2068   }
2069   .col-md-offset-7 {
2070     margin-left: 58.33333333%;
2071   }
2072   .col-md-offset-6 {
2073     margin-left: 50%;
2074   }
2075   .col-md-offset-5 {
2076     margin-left: 41.66666667%;
2077   }
2078   .col-md-offset-4 {
2079     margin-left: 33.33333333%;
2080   }
2081   .col-md-offset-3 {
2082     margin-left: 25%;
2083   }
2084   .col-md-offset-2 {
2085     margin-left: 16.66666667%;
2086   }
2087   .col-md-offset-1 {
2088     margin-left: 8.33333333%;
2089   }
2090   .col-md-offset-0 {
2091     margin-left: 0;
2092   }
2093 }
2094 @media (min-width: 1200px) {
2095   .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 {
2096     float: left;
2097   }
2098   .col-lg-12 {
2099     width: 100%;
2100   }
2101   .col-lg-11 {
2102     width: 91.66666667%;
2103   }
2104   .col-lg-10 {
2105     width: 83.33333333%;
2106   }
2107   .col-lg-9 {
2108     width: 75%;
2109   }
2110   .col-lg-8 {
2111     width: 66.66666667%;
2112   }
2113   .col-lg-7 {
2114     width: 58.33333333%;
2115   }
2116   .col-lg-6 {
2117     width: 50%;
2118   }
2119   .col-lg-5 {
2120     width: 41.66666667%;
2121   }
2122   .col-lg-4 {
2123     width: 33.33333333%;
2124   }
2125   .col-lg-3 {
2126     width: 25%;
2127   }
2128   .col-lg-2 {
2129     width: 16.66666667%;
2130   }
2131   .col-lg-1 {
2132     width: 8.33333333%;
2133   }
2134   .col-lg-pull-12 {
2135     right: 100%;
2136   }
2137   .col-lg-pull-11 {
2138     right: 91.66666667%;
2139   }
2140   .col-lg-pull-10 {
2141     right: 83.33333333%;
2142   }
2143   .col-lg-pull-9 {
2144     right: 75%;
2145   }
2146   .col-lg-pull-8 {
2147     right: 66.66666667%;
2148   }
2149   .col-lg-pull-7 {
2150     right: 58.33333333%;
2151   }
2152   .col-lg-pull-6 {
2153     right: 50%;
2154   }
2155   .col-lg-pull-5 {
2156     right: 41.66666667%;
2157   }
2158   .col-lg-pull-4 {
2159     right: 33.33333333%;
2160   }
2161   .col-lg-pull-3 {
2162     right: 25%;
2163   }
2164   .col-lg-pull-2 {
2165     right: 16.66666667%;
2166   }
2167   .col-lg-pull-1 {
2168     right: 8.33333333%;
2169   }
2170   .col-lg-pull-0 {
2171     right: auto;
2172   }
2173   .col-lg-push-12 {
2174     left: 100%;
2175   }
2176   .col-lg-push-11 {
2177     left: 91.66666667%;
2178   }
2179   .col-lg-push-10 {
2180     left: 83.33333333%;
2181   }
2182   .col-lg-push-9 {
2183     left: 75%;
2184   }
2185   .col-lg-push-8 {
2186     left: 66.66666667%;
2187   }
2188   .col-lg-push-7 {
2189     left: 58.33333333%;
2190   }
2191   .col-lg-push-6 {
2192     left: 50%;
2193   }
2194   .col-lg-push-5 {
2195     left: 41.66666667%;
2196   }
2197   .col-lg-push-4 {
2198     left: 33.33333333%;
2199   }
2200   .col-lg-push-3 {
2201     left: 25%;
2202   }
2203   .col-lg-push-2 {
2204     left: 16.66666667%;
2205   }
2206   .col-lg-push-1 {
2207     left: 8.33333333%;
2208   }
2209   .col-lg-push-0 {
2210     left: auto;
2211   }
2212   .col-lg-offset-12 {
2213     margin-left: 100%;
2214   }
2215   .col-lg-offset-11 {
2216     margin-left: 91.66666667%;
2217   }
2218   .col-lg-offset-10 {
2219     margin-left: 83.33333333%;
2220   }
2221   .col-lg-offset-9 {
2222     margin-left: 75%;
2223   }
2224   .col-lg-offset-8 {
2225     margin-left: 66.66666667%;
2226   }
2227   .col-lg-offset-7 {
2228     margin-left: 58.33333333%;
2229   }
2230   .col-lg-offset-6 {
2231     margin-left: 50%;
2232   }
2233   .col-lg-offset-5 {
2234     margin-left: 41.66666667%;
2235   }
2236   .col-lg-offset-4 {
2237     margin-left: 33.33333333%;
2238   }
2239   .col-lg-offset-3 {
2240     margin-left: 25%;
2241   }
2242   .col-lg-offset-2 {
2243     margin-left: 16.66666667%;
2244   }
2245   .col-lg-offset-1 {
2246     margin-left: 8.33333333%;
2247   }
2248   .col-lg-offset-0 {
2249     margin-left: 0;
2250   }
2251 }
2252 table {
2253   background-color: transparent;
2254 }
2255 caption {
2256   padding-top: 8px;
2257   padding-bottom: 8px;
2258   color: #777;
2259   text-align: left;
2260 }
2261 th {
2262   text-align: left;
2263 }
2264 .table {
2265   width: 100%;
2266   max-width: 100%;
2267   margin-bottom: 20px;
2268 }
2269 .table > thead > tr > th,
2270 .table > tbody > tr > th,
2271 .table > tfoot > tr > th,
2272 .table > thead > tr > td,
2273 .table > tbody > tr > td,
2274 .table > tfoot > tr > td {
2275   padding: 8px;
2276   line-height: 1.42857143;
2277   vertical-align: top;
2278   border-top: 1px solid #ddd;
2279 }
2280 .table > thead > tr > th {
2281   vertical-align: bottom;
2282   border-bottom: 2px solid #ddd;
2283 }
2284 .table > caption + thead > tr:first-child > th,
2285 .table > colgroup + thead > tr:first-child > th,
2286 .table > thead:first-child > tr:first-child > th,
2287 .table > caption + thead > tr:first-child > td,
2288 .table > colgroup + thead > tr:first-child > td,
2289 .table > thead:first-child > tr:first-child > td {
2290   border-top: 0;
2291 }
2292 .table > tbody + tbody {
2293   border-top: 2px solid #ddd;
2294 }
2295 .table .table {
2296   background-color: #fff;
2297 }
2298 .table-condensed > thead > tr > th,
2299 .table-condensed > tbody > tr > th,
2300 .table-condensed > tfoot > tr > th,
2301 .table-condensed > thead > tr > td,
2302 .table-condensed > tbody > tr > td,
2303 .table-condensed > tfoot > tr > td {
2304   padding: 5px;
2305 }
2306 .table-bordered {
2307   border: 1px solid #ddd;
2308 }
2309 .table-bordered > thead > tr > th,
2310 .table-bordered > tbody > tr > th,
2311 .table-bordered > tfoot > tr > th,
2312 .table-bordered > thead > tr > td,
2313 .table-bordered > tbody > tr > td,
2314 .table-bordered > tfoot > tr > td {
2315   border: 1px solid #ddd;
2316 }
2317 .table-bordered > thead > tr > th,
2318 .table-bordered > thead > tr > td {
2319   border-bottom-width: 2px;
2320 }
2321 .table-striped > tbody > tr:nth-of-type(odd) {
2322   background-color: #f9f9f9;
2323 }
2324 .table-hover > tbody > tr:hover {
2325   background-color: #f5f5f5;
2326 }
2327 table col[class*="col-"] {
2328   position: static;
2329   display: table-column;
2330   float: none;
2331 }
2332 table td[class*="col-"],
2333 table th[class*="col-"] {
2334   position: static;
2335   display: table-cell;
2336   float: none;
2337 }
2338 .table > thead > tr > td.active,
2339 .table > tbody > tr > td.active,
2340 .table > tfoot > tr > td.active,
2341 .table > thead > tr > th.active,
2342 .table > tbody > tr > th.active,
2343 .table > tfoot > tr > th.active,
2344 .table > thead > tr.active > td,
2345 .table > tbody > tr.active > td,
2346 .table > tfoot > tr.active > td,
2347 .table > thead > tr.active > th,
2348 .table > tbody > tr.active > th,
2349 .table > tfoot > tr.active > th {
2350   background-color: #f5f5f5;
2351 }
2352 .table-hover > tbody > tr > td.active:hover,
2353 .table-hover > tbody > tr > th.active:hover,
2354 .table-hover > tbody > tr.active:hover > td,
2355 .table-hover > tbody > tr:hover > .active,
2356 .table-hover > tbody > tr.active:hover > th {
2357   background-color: #e8e8e8;
2358 }
2359 .table > thead > tr > td.success,
2360 .table > tbody > tr > td.success,
2361 .table > tfoot > tr > td.success,
2362 .table > thead > tr > th.success,
2363 .table > tbody > tr > th.success,
2364 .table > tfoot > tr > th.success,
2365 .table > thead > tr.success > td,
2366 .table > tbody > tr.success > td,
2367 .table > tfoot > tr.success > td,
2368 .table > thead > tr.success > th,
2369 .table > tbody > tr.success > th,
2370 .table > tfoot > tr.success > th {
2371   background-color: #dff0d8;
2372 }
2373 .table-hover > tbody > tr > td.success:hover,
2374 .table-hover > tbody > tr > th.success:hover,
2375 .table-hover > tbody > tr.success:hover > td,
2376 .table-hover > tbody > tr:hover > .success,
2377 .table-hover > tbody > tr.success:hover > th {
2378   background-color: #d0e9c6;
2379 }
2380 .table > thead > tr > td.info,
2381 .table > tbody > tr > td.info,
2382 .table > tfoot > tr > td.info,
2383 .table > thead > tr > th.info,
2384 .table > tbody > tr > th.info,
2385 .table > tfoot > tr > th.info,
2386 .table > thead > tr.info > td,
2387 .table > tbody > tr.info > td,
2388 .table > tfoot > tr.info > td,
2389 .table > thead > tr.info > th,
2390 .table > tbody > tr.info > th,
2391 .table > tfoot > tr.info > th {
2392   background-color: #d9edf7;
2393 }
2394 .table-hover > tbody > tr > td.info:hover,
2395 .table-hover > tbody > tr > th.info:hover,
2396 .table-hover > tbody > tr.info:hover > td,
2397 .table-hover > tbody > tr:hover > .info,
2398 .table-hover > tbody > tr.info:hover > th {
2399   background-color: #c4e3f3;
2400 }
2401 .table > thead > tr > td.warning,
2402 .table > tbody > tr > td.warning,
2403 .table > tfoot > tr > td.warning,
2404 .table > thead > tr > th.warning,
2405 .table > tbody > tr > th.warning,
2406 .table > tfoot > tr > th.warning,
2407 .table > thead > tr.warning > td,
2408 .table > tbody > tr.warning > td,
2409 .table > tfoot > tr.warning > td,
2410 .table > thead > tr.warning > th,
2411 .table > tbody > tr.warning > th,
2412 .table > tfoot > tr.warning > th {
2413   background-color: #fcf8e3;
2414 }
2415 .table-hover > tbody > tr > td.warning:hover,
2416 .table-hover > tbody > tr > th.warning:hover,
2417 .table-hover > tbody > tr.warning:hover > td,
2418 .table-hover > tbody > tr:hover > .warning,
2419 .table-hover > tbody > tr.warning:hover > th {
2420   background-color: #faf2cc;
2421 }
2422 .table > thead > tr > td.danger,
2423 .table > tbody > tr > td.danger,
2424 .table > tfoot > tr > td.danger,
2425 .table > thead > tr > th.danger,
2426 .table > tbody > tr > th.danger,
2427 .table > tfoot > tr > th.danger,
2428 .table > thead > tr.danger > td,
2429 .table > tbody > tr.danger > td,
2430 .table > tfoot > tr.danger > td,
2431 .table > thead > tr.danger > th,
2432 .table > tbody > tr.danger > th,
2433 .table > tfoot > tr.danger > th {
2434   background-color: #f2dede;
2435 }
2436 .table-hover > tbody > tr > td.danger:hover,
2437 .table-hover > tbody > tr > th.danger:hover,
2438 .table-hover > tbody > tr.danger:hover > td,
2439 .table-hover > tbody > tr:hover > .danger,
2440 .table-hover > tbody > tr.danger:hover > th {
2441   background-color: #ebcccc;
2442 }
2443 .table-responsive {
2444   min-height: .01%;
2445   overflow-x: auto;
2446 }
2447 @media screen and (max-width: 767px) {
2448   .table-responsive {
2449     width: 100%;
2450     margin-bottom: 15px;
2451     overflow-y: hidden;
2452     -ms-overflow-style: -ms-autohiding-scrollbar;
2453     border: 1px solid #ddd;
2454   }
2455   .table-responsive > .table {
2456     margin-bottom: 0;
2457   }
2458   .table-responsive > .table > thead > tr > th,
2459   .table-responsive > .table > tbody > tr > th,
2460   .table-responsive > .table > tfoot > tr > th,
2461   .table-responsive > .table > thead > tr > td,
2462   .table-responsive > .table > tbody > tr > td,
2463   .table-responsive > .table > tfoot > tr > td {
2464     white-space: nowrap;
2465   }
2466   .table-responsive > .table-bordered {
2467     border: 0;
2468   }
2469   .table-responsive > .table-bordered > thead > tr > th:first-child,
2470   .table-responsive > .table-bordered > tbody > tr > th:first-child,
2471   .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2472   .table-responsive > .table-bordered > thead > tr > td:first-child,
2473   .table-responsive > .table-bordered > tbody > tr > td:first-child,
2474   .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2475     border-left: 0;
2476   }
2477   .table-responsive > .table-bordered > thead > tr > th:last-child,
2478   .table-responsive > .table-bordered > tbody > tr > th:last-child,
2479   .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2480   .table-responsive > .table-bordered > thead > tr > td:last-child,
2481   .table-responsive > .table-bordered > tbody > tr > td:last-child,
2482   .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2483     border-right: 0;
2484   }
2485   .table-responsive > .table-bordered > tbody > tr:last-child > th,
2486   .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2487   .table-responsive > .table-bordered > tbody > tr:last-child > td,
2488   .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2489     border-bottom: 0;
2490   }
2491 }
2492 fieldset {
2493   min-width: 0;
2494   padding: 0;
2495   margin: 0;
2496   border: 0;
2497 }
2498 legend {
2499   display: block;
2500   width: 100%;
2501   padding: 0;
2502   margin-bottom: 20px;
2503   font-size: 21px;
2504   line-height: inherit;
2505   color: #333;
2506   border: 0;
2507   border-bottom: 1px solid #e5e5e5;
2508 }
2509 label {
2510   display: inline-block;
2511   max-width: 100%;
2512   margin-bottom: 5px;
2513   font-weight: bold;
2514 }
2515 input[type="search"] {
2516   -webkit-box-sizing: border-box;
2517      -moz-box-sizing: border-box;
2518           box-sizing: border-box;
2519 }
2520 input[type="radio"],
2521 input[type="checkbox"] {
2522   margin: 4px 0 0;
2523   margin-top: 1px \9;
2524   line-height: normal;
2525 }
2526 input[type="file"] {
2527   display: block;
2528 }
2529 input[type="range"] {
2530   display: block;
2531   width: 100%;
2532 }
2533 select[multiple],
2534 select[size] {
2535   height: auto;
2536 }
2537 input[type="file"]:focus,
2538 input[type="radio"]:focus,
2539 input[type="checkbox"]:focus {
2540   outline: 5px auto -webkit-focus-ring-color;
2541   outline-offset: -2px;
2542 }
2543 output {
2544   display: block;
2545   padding-top: 7px;
2546   font-size: 14px;
2547   line-height: 1.42857143;
2548   color: #555;
2549 }
2550 .form-control {
2551   display: block;
2552   width: 100%;
2553   height: 34px;
2554   padding: 6px 12px;
2555   font-size: 14px;
2556   line-height: 1.42857143;
2557   color: #555;
2558   background-color: #fff;
2559   background-image: none;
2560   border: 1px solid #ccc;
2561   border-radius: 4px;
2562   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2563           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2564   -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2565        -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2566           transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2567 }
2568 .form-control:focus {
2569   border-color: #66afe9;
2570   outline: 0;
2571   -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2572           box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2573 }
2574 .form-control::-moz-placeholder {
2575   color: #999;
2576   opacity: 1;
2577 }
2578 .form-control:-ms-input-placeholder {
2579   color: #999;
2580 }
2581 .form-control::-webkit-input-placeholder {
2582   color: #999;
2583 }
2584 .form-control::-ms-expand {
2585   background-color: transparent;
2586   border: 0;
2587 }
2588 .form-control[disabled],
2589 .form-control[readonly],
2590 fieldset[disabled] .form-control {
2591   background-color: #eee;
2592   opacity: 1;
2593 }
2594 .form-control[disabled],
2595 fieldset[disabled] .form-control {
2596   cursor: not-allowed;
2597 }
2598 textarea.form-control {
2599   height: auto;
2600 }
2601 input[type="search"] {
2602   -webkit-appearance: none;
2603 }
2604 @media screen and (-webkit-min-device-pixel-ratio: 0) {
2605   input[type="date"].form-control,
2606   input[type="time"].form-control,
2607   input[type="datetime-local"].form-control,
2608   input[type="month"].form-control {
2609     line-height: 34px;
2610   }
2611   input[type="date"].input-sm,
2612   input[type="time"].input-sm,
2613   input[type="datetime-local"].input-sm,
2614   input[type="month"].input-sm,
2615   .input-group-sm input[type="date"],
2616   .input-group-sm input[type="time"],
2617   .input-group-sm input[type="datetime-local"],
2618   .input-group-sm input[type="month"] {
2619     line-height: 30px;
2620   }
2621   input[type="date"].input-lg,
2622   input[type="time"].input-lg,
2623   input[type="datetime-local"].input-lg,
2624   input[type="month"].input-lg,
2625   .input-group-lg input[type="date"],
2626   .input-group-lg input[type="time"],
2627   .input-group-lg input[type="datetime-local"],
2628   .input-group-lg input[type="month"] {
2629     line-height: 46px;
2630   }
2631 }
2632 .form-group {
2633   margin-bottom: 15px;
2634 }
2635 .radio,
2636 .checkbox {
2637   position: relative;
2638   display: block;
2639   margin-top: 10px;
2640   margin-bottom: 10px;
2641 }
2642 .radio label,
2643 .checkbox label {
2644   min-height: 20px;
2645   padding-left: 20px;
2646   margin-bottom: 0;
2647   font-weight: normal;
2648   cursor: pointer;
2649 }
2650 .radio input[type="radio"],
2651 .radio-inline input[type="radio"],
2652 .checkbox input[type="checkbox"],
2653 .checkbox-inline input[type="checkbox"] {
2654   position: absolute;
2655   margin-top: 4px \9;
2656   margin-left: -20px;
2657 }
2658 .radio + .radio,
2659 .checkbox + .checkbox {
2660   margin-top: -5px;
2661 }
2662 .radio-inline,
2663 .checkbox-inline {
2664   position: relative;
2665   display: inline-block;
2666   padding-left: 20px;
2667   margin-bottom: 0;
2668   font-weight: normal;
2669   vertical-align: middle;
2670   cursor: pointer;
2671 }
2672 .radio-inline + .radio-inline,
2673 .checkbox-inline + .checkbox-inline {
2674   margin-top: 0;
2675   margin-left: 10px;
2676 }
2677 input[type="radio"][disabled],
2678 input[type="checkbox"][disabled],
2679 input[type="radio"].disabled,
2680 input[type="checkbox"].disabled,
2681 fieldset[disabled] input[type="radio"],
2682 fieldset[disabled] input[type="checkbox"] {
2683   cursor: not-allowed;
2684 }
2685 .radio-inline.disabled,
2686 .checkbox-inline.disabled,
2687 fieldset[disabled] .radio-inline,
2688 fieldset[disabled] .checkbox-inline {
2689   cursor: not-allowed;
2690 }
2691 .radio.disabled label,
2692 .checkbox.disabled label,
2693 fieldset[disabled] .radio label,
2694 fieldset[disabled] .checkbox label {
2695   cursor: not-allowed;
2696 }
2697 .form-control-static {
2698   min-height: 34px;
2699   padding-top: 7px;
2700   padding-bottom: 7px;
2701   margin-bottom: 0;
2702 }
2703 .form-control-static.input-lg,
2704 .form-control-static.input-sm {
2705   padding-right: 0;
2706   padding-left: 0;
2707 }
2708 .input-sm {
2709   height: 30px;
2710   padding: 5px 10px;
2711   font-size: 12px;
2712   line-height: 1.5;
2713   border-radius: 3px;
2714 }
2715 select.input-sm {
2716   height: 30px;
2717   line-height: 30px;
2718 }
2719 textarea.input-sm,
2720 select[multiple].input-sm {
2721   height: auto;
2722 }
2723 .form-group-sm .form-control {
2724   height: 30px;
2725   padding: 5px 10px;
2726   font-size: 12px;
2727   line-height: 1.5;
2728   border-radius: 3px;
2729 }
2730 .form-group-sm select.form-control {
2731   height: 30px;
2732   line-height: 30px;
2733 }
2734 .form-group-sm textarea.form-control,
2735 .form-group-sm select[multiple].form-control {
2736   height: auto;
2737 }
2738 .form-group-sm .form-control-static {
2739   height: 30px;
2740   min-height: 32px;
2741   padding: 6px 10px;
2742   font-size: 12px;
2743   line-height: 1.5;
2744 }
2745 .input-lg {
2746   height: 46px;
2747   padding: 10px 16px;
2748   font-size: 18px;
2749   line-height: 1.3333333;
2750   border-radius: 6px;
2751 }
2752 select.input-lg {
2753   height: 46px;
2754   line-height: 46px;
2755 }
2756 textarea.input-lg,
2757 select[multiple].input-lg {
2758   height: auto;
2759 }
2760 .form-group-lg .form-control {
2761   height: 46px;
2762   padding: 10px 16px;
2763   font-size: 18px;
2764   line-height: 1.3333333;
2765   border-radius: 6px;
2766 }
2767 .form-group-lg select.form-control {
2768   height: 46px;
2769   line-height: 46px;
2770 }
2771 .form-group-lg textarea.form-control,
2772 .form-group-lg select[multiple].form-control {
2773   height: auto;
2774 }
2775 .form-group-lg .form-control-static {
2776   height: 46px;
2777   min-height: 38px;
2778   padding: 11px 16px;
2779   font-size: 18px;
2780   line-height: 1.3333333;
2781 }
2782 .has-feedback {
2783   position: relative;
2784 }
2785 .has-feedback .form-control {
2786   padding-right: 42.5px;
2787 }
2788 .form-control-feedback {
2789   position: absolute;
2790   top: 0;
2791   right: 0;
2792   z-index: 2;
2793   display: block;
2794   width: 34px;
2795   height: 34px;
2796   line-height: 34px;
2797   text-align: center;
2798   pointer-events: none;
2799 }
2800 .input-lg + .form-control-feedback,
2801 .input-group-lg + .form-control-feedback,
2802 .form-group-lg .form-control + .form-control-feedback {
2803   width: 46px;
2804   height: 46px;
2805   line-height: 46px;
2806 }
2807 .input-sm + .form-control-feedback,
2808 .input-group-sm + .form-control-feedback,
2809 .form-group-sm .form-control + .form-control-feedback {
2810   width: 30px;
2811   height: 30px;
2812   line-height: 30px;
2813 }
2814 .has-success .help-block,
2815 .has-success .control-label,
2816 .has-success .radio,
2817 .has-success .checkbox,
2818 .has-success .radio-inline,
2819 .has-success .checkbox-inline,
2820 .has-success.radio label,
2821 .has-success.checkbox label,
2822 .has-success.radio-inline label,
2823 .has-success.checkbox-inline label {
2824   color: #3c763d;
2825 }
2826 .has-success .form-control {
2827   border-color: #3c763d;
2828   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2829           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2830 }
2831 .has-success .form-control:focus {
2832   border-color: #2b542c;
2833   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2834           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2835 }
2836 .has-success .input-group-addon {
2837   color: #3c763d;
2838   background-color: #dff0d8;
2839   border-color: #3c763d;
2840 }
2841 .has-success .form-control-feedback {
2842   color: #3c763d;
2843 }
2844 .has-warning .help-block,
2845 .has-warning .control-label,
2846 .has-warning .radio,
2847 .has-warning .checkbox,
2848 .has-warning .radio-inline,
2849 .has-warning .checkbox-inline,
2850 .has-warning.radio label,
2851 .has-warning.checkbox label,
2852 .has-warning.radio-inline label,
2853 .has-warning.checkbox-inline label {
2854   color: #8a6d3b;
2855 }
2856 .has-warning .form-control {
2857   border-color: #8a6d3b;
2858   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2859           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2860 }
2861 .has-warning .form-control:focus {
2862   border-color: #66512c;
2863   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2864           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2865 }
2866 .has-warning .input-group-addon {
2867   color: #8a6d3b;
2868   background-color: #fcf8e3;
2869   border-color: #8a6d3b;
2870 }
2871 .has-warning .form-control-feedback {
2872   color: #8a6d3b;
2873 }
2874 .has-error .help-block,
2875 .has-error .control-label,
2876 .has-error .radio,
2877 .has-error .checkbox,
2878 .has-error .radio-inline,
2879 .has-error .checkbox-inline,
2880 .has-error.radio label,
2881 .has-error.checkbox label,
2882 .has-error.radio-inline label,
2883 .has-error.checkbox-inline label {
2884   color: #a94442;
2885 }
2886 .has-error .form-control {
2887   border-color: #a94442;
2888   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2889           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2890 }
2891 .has-error .form-control:focus {
2892   border-color: #843534;
2893   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2894           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2895 }
2896 .has-error .input-group-addon {
2897   color: #a94442;
2898   background-color: #f2dede;
2899   border-color: #a94442;
2900 }
2901 .has-error .form-control-feedback {
2902   color: #a94442;
2903 }
2904 .has-feedback label ~ .form-control-feedback {
2905   top: 25px;
2906 }
2907 .has-feedback label.sr-only ~ .form-control-feedback {
2908   top: 0;
2909 }
2910 .help-block {
2911   display: block;
2912   margin-top: 5px;
2913   margin-bottom: 10px;
2914   color: #737373;
2915 }
2916 @media (min-width: 768px) {
2917   .form-inline .form-group {
2918     display: inline-block;
2919     margin-bottom: 0;
2920     vertical-align: middle;
2921   }
2922   .form-inline .form-control {
2923     display: inline-block;
2924     width: auto;
2925     vertical-align: middle;
2926   }
2927   .form-inline .form-control-static {
2928     display: inline-block;
2929   }
2930   .form-inline .input-group {
2931     display: inline-table;
2932     vertical-align: middle;
2933   }
2934   .form-inline .input-group .input-group-addon,
2935   .form-inline .input-group .input-group-btn,
2936   .form-inline .input-group .form-control {
2937     width: auto;
2938   }
2939   .form-inline .input-group > .form-control {
2940     width: 100%;
2941   }
2942   .form-inline .control-label {
2943     margin-bottom: 0;
2944     vertical-align: middle;
2945   }
2946   .form-inline .radio,
2947   .form-inline .checkbox {
2948     display: inline-block;
2949     margin-top: 0;
2950     margin-bottom: 0;
2951     vertical-align: middle;
2952   }
2953   .form-inline .radio label,
2954   .form-inline .checkbox label {
2955     padding-left: 0;
2956   }
2957   .form-inline .radio input[type="radio"],
2958   .form-inline .checkbox input[type="checkbox"] {
2959     position: relative;
2960     margin-left: 0;
2961   }
2962   .form-inline .has-feedback .form-control-feedback {
2963     top: 0;
2964   }
2965 }
2966 .form-horizontal .radio,
2967 .form-horizontal .checkbox,
2968 .form-horizontal .radio-inline,
2969 .form-horizontal .checkbox-inline {
2970   padding-top: 7px;
2971   margin-top: 0;
2972   margin-bottom: 0;
2973 }
2974 .form-horizontal .radio,
2975 .form-horizontal .checkbox {
2976   min-height: 27px;
2977 }
2978 .form-horizontal .form-group {
2979   margin-right: -15px;
2980   margin-left: -15px;
2981 }
2982 @media (min-width: 768px) {
2983   .form-horizontal .control-label {
2984     padding-top: 7px;
2985     margin-bottom: 0;
2986     text-align: right;
2987   }
2988 }
2989 .form-horizontal .has-feedback .form-control-feedback {
2990   right: 15px;
2991 }
2992 @media (min-width: 768px) {
2993   .form-horizontal .form-group-lg .control-label {
2994     padding-top: 11px;
2995     font-size: 18px;
2996   }
2997 }
2998 @media (min-width: 768px) {
2999   .form-horizontal .form-group-sm .control-label {
3000     padding-top: 6px;
3001     font-size: 12px;
3002   }
3003 }
3004 .btn {
3005   display: inline-block;
3006   padding: 6px 12px;
3007   margin-bottom: 0;
3008   font-size: 14px;
3009   font-weight: normal;
3010   line-height: 1.42857143;
3011   text-align: center;
3012   white-space: nowrap;
3013   vertical-align: middle;
3014   -ms-touch-action: manipulation;
3015       touch-action: manipulation;
3016   cursor: pointer;
3017   -webkit-user-select: none;
3018      -moz-user-select: none;
3019       -ms-user-select: none;
3020           user-select: none;
3021   background-image: none;
3022   border: 1px solid transparent;
3023   border-radius: 4px;
3024 }
3025 .btn:focus,
3026 .btn:active:focus,
3027 .btn.active:focus,
3028 .btn.focus,
3029 .btn:active.focus,
3030 .btn.active.focus {
3031   outline: 5px auto -webkit-focus-ring-color;
3032   outline-offset: -2px;
3033 }
3034 .btn:hover,
3035 .btn:focus,
3036 .btn.focus {
3037   color: #333;
3038   text-decoration: none;
3039 }
3040 .btn:active,
3041 .btn.active {
3042   background-image: none;
3043   outline: 0;
3044   -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3045           box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3046 }
3047 .btn.disabled,
3048 .btn[disabled],
3049 fieldset[disabled] .btn {
3050   cursor: not-allowed;
3051   filter: alpha(opacity=65);
3052   -webkit-box-shadow: none;
3053           box-shadow: none;
3054   opacity: .65;
3055 }
3056 a.btn.disabled,
3057 fieldset[disabled] a.btn {
3058   pointer-events: none;
3059 }
3060 .btn-default {
3061   color: #333;
3062   background-color: #fff;
3063   border-color: #ccc;
3064 }
3065 .btn-default:focus,
3066 .btn-default.focus {
3067   color: #333;
3068   background-color: #e6e6e6;
3069   border-color: #8c8c8c;
3070 }
3071 .btn-default:hover {
3072   color: #333;
3073   background-color: #e6e6e6;
3074   border-color: #adadad;
3075 }
3076 .btn-default:active,
3077 .btn-default.active,
3078 .open > .dropdown-toggle.btn-default {
3079   color: #333;
3080   background-color: #e6e6e6;
3081   border-color: #adadad;
3082 }
3083 .btn-default:active:hover,
3084 .btn-default.active:hover,
3085 .open > .dropdown-toggle.btn-default:hover,
3086 .btn-default:active:focus,
3087 .btn-default.active:focus,
3088 .open > .dropdown-toggle.btn-default:focus,
3089 .btn-default:active.focus,
3090 .btn-default.active.focus,
3091 .open > .dropdown-toggle.btn-default.focus {
3092   color: #333;
3093   background-color: #d4d4d4;
3094   border-color: #8c8c8c;
3095 }
3096 .btn-default:active,
3097 .btn-default.active,
3098 .open > .dropdown-toggle.btn-default {
3099   background-image: none;
3100 }
3101 .btn-default.disabled:hover,
3102 .btn-default[disabled]:hover,
3103 fieldset[disabled] .btn-default:hover,
3104 .btn-default.disabled:focus,
3105 .btn-default[disabled]:focus,
3106 fieldset[disabled] .btn-default:focus,
3107 .btn-default.disabled.focus,
3108 .btn-default[disabled].focus,
3109 fieldset[disabled] .btn-default.focus {
3110   background-color: #fff;
3111   border-color: #ccc;
3112 }
3113 .btn-default .badge {
3114   color: #fff;
3115   background-color: #333;
3116 }
3117 .btn-primary {
3118   color: #fff;
3119   background-color: #337ab7;
3120   border-color: #2e6da4;
3121 }
3122 .btn-primary:focus,
3123 .btn-primary.focus {
3124   color: #fff;
3125   background-color: #286090;
3126   border-color: #122b40;
3127 }
3128 .btn-primary:hover {
3129   color: #fff;
3130   background-color: #286090;
3131   border-color: #204d74;
3132 }
3133 .btn-primary:active,
3134 .btn-primary.active,
3135 .open > .dropdown-toggle.btn-primary {
3136   color: #fff;
3137   background-color: #286090;
3138   border-color: #204d74;
3139 }
3140 .btn-primary:active:hover,
3141 .btn-primary.active:hover,
3142 .open > .dropdown-toggle.btn-primary:hover,
3143 .btn-primary:active:focus,
3144 .btn-primary.active:focus,
3145 .open > .dropdown-toggle.btn-primary:focus,
3146 .btn-primary:active.focus,
3147 .btn-primary.active.focus,
3148 .open > .dropdown-toggle.btn-primary.focus {
3149   color: #fff;
3150   background-color: #204d74;
3151   border-color: #122b40;
3152 }
3153 .btn-primary:active,
3154 .btn-primary.active,
3155 .open > .dropdown-toggle.btn-primary {
3156   background-image: none;
3157 }
3158 .btn-primary.disabled:hover,
3159 .btn-primary[disabled]:hover,
3160 fieldset[disabled] .btn-primary:hover,
3161 .btn-primary.disabled:focus,
3162 .btn-primary[disabled]:focus,
3163 fieldset[disabled] .btn-primary:focus,
3164 .btn-primary.disabled.focus,
3165 .btn-primary[disabled].focus,
3166 fieldset[disabled] .btn-primary.focus {
3167   background-color: #337ab7;
3168   border-color: #2e6da4;
3169 }
3170 .btn-primary .badge {
3171   color: #337ab7;
3172   background-color: #fff;
3173 }
3174 .btn-success {
3175   color: #fff;
3176   background-color: #5cb85c;
3177   border-color: #4cae4c;
3178 }
3179 .btn-success:focus,
3180 .btn-success.focus {
3181   color: #fff;
3182   background-color: #449d44;
3183   border-color: #255625;
3184 }
3185 .btn-success:hover {
3186   color: #fff;
3187   background-color: #449d44;
3188   border-color: #398439;
3189 }
3190 .btn-success:active,
3191 .btn-success.active,
3192 .open > .dropdown-toggle.btn-success {
3193   color: #fff;
3194   background-color: #449d44;
3195   border-color: #398439;
3196 }
3197 .btn-success:active:hover,
3198 .btn-success.active:hover,
3199 .open > .dropdown-toggle.btn-success:hover,
3200 .btn-success:active:focus,
3201 .btn-success.active:focus,
3202 .open > .dropdown-toggle.btn-success:focus,
3203 .btn-success:active.focus,
3204 .btn-success.active.focus,
3205 .open > .dropdown-toggle.btn-success.focus {
3206   color: #fff;
3207   background-color: #398439;
3208   border-color: #255625;
3209 }
3210 .btn-success:active,
3211 .btn-success.active,
3212 .open > .dropdown-toggle.btn-success {
3213   background-image: none;
3214 }
3215 .btn-success.disabled:hover,
3216 .btn-success[disabled]:hover,
3217 fieldset[disabled] .btn-success:hover,
3218 .btn-success.disabled:focus,
3219 .btn-success[disabled]:focus,
3220 fieldset[disabled] .btn-success:focus,
3221 .btn-success.disabled.focus,
3222 .btn-success[disabled].focus,
3223 fieldset[disabled] .btn-success.focus {
3224   background-color: #5cb85c;
3225   border-color: #4cae4c;
3226 }
3227 .btn-success .badge {
3228   color: #5cb85c;
3229   background-color: #fff;
3230 }
3231 .btn-info {
3232   color: #fff;
3233   background-color: #5bc0de;
3234   border-color: #46b8da;
3235 }
3236 .btn-info:focus,
3237 .btn-info.focus {
3238   color: #fff;
3239   background-color: #31b0d5;
3240   border-color: #1b6d85;
3241 }
3242 .btn-info:hover {
3243   color: #fff;
3244   background-color: #31b0d5;
3245   border-color: #269abc;
3246 }
3247 .btn-info:active,
3248 .btn-info.active,
3249 .open > .dropdown-toggle.btn-info {
3250   color: #fff;
3251   background-color: #31b0d5;
3252   border-color: #269abc;
3253 }
3254 .btn-info:active:hover,
3255 .btn-info.active:hover,
3256 .open > .dropdown-toggle.btn-info:hover,
3257 .btn-info:active:focus,
3258 .btn-info.active:focus,
3259 .open > .dropdown-toggle.btn-info:focus,
3260 .btn-info:active.focus,
3261 .btn-info.active.focus,
3262 .open > .dropdown-toggle.btn-info.focus {
3263   color: #fff;
3264   background-color: #269abc;
3265   border-color: #1b6d85;
3266 }
3267 .btn-info:active,
3268 .btn-info.active,
3269 .open > .dropdown-toggle.btn-info {
3270   background-image: none;
3271 }
3272 .btn-info.disabled:hover,
3273 .btn-info[disabled]:hover,
3274 fieldset[disabled] .btn-info:hover,
3275 .btn-info.disabled:focus,
3276 .btn-info[disabled]:focus,
3277 fieldset[disabled] .btn-info:focus,
3278 .btn-info.disabled.focus,
3279 .btn-info[disabled].focus,
3280 fieldset[disabled] .btn-info.focus {
3281   background-color: #5bc0de;
3282   border-color: #46b8da;
3283 }
3284 .btn-info .badge {
3285   color: #5bc0de;
3286   background-color: #fff;
3287 }
3288 .btn-warning {
3289   color: #fff;
3290   background-color: #f0ad4e;
3291   border-color: #eea236;
3292 }
3293 .btn-warning:focus,
3294 .btn-warning.focus {
3295   color: #fff;
3296   background-color: #ec971f;
3297   border-color: #985f0d;
3298 }
3299 .btn-warning:hover {
3300   color: #fff;
3301   background-color: #ec971f;
3302   border-color: #d58512;
3303 }
3304 .btn-warning:active,
3305 .btn-warning.active,
3306 .open > .dropdown-toggle.btn-warning {
3307   color: #fff;
3308   background-color: #ec971f;
3309   border-color: #d58512;
3310 }
3311 .btn-warning:active:hover,
3312 .btn-warning.active:hover,
3313 .open > .dropdown-toggle.btn-warning:hover,
3314 .btn-warning:active:focus,
3315 .btn-warning.active:focus,
3316 .open > .dropdown-toggle.btn-warning:focus,
3317 .btn-warning:active.focus,
3318 .btn-warning.active.focus,
3319 .open > .dropdown-toggle.btn-warning.focus {
3320   color: #fff;
3321   background-color: #d58512;
3322   border-color: #985f0d;
3323 }
3324 .btn-warning:active,
3325 .btn-warning.active,
3326 .open > .dropdown-toggle.btn-warning {
3327   background-image: none;
3328 }
3329 .btn-warning.disabled:hover,
3330 .btn-warning[disabled]:hover,
3331 fieldset[disabled] .btn-warning:hover,
3332 .btn-warning.disabled:focus,
3333 .btn-warning[disabled]:focus,
3334 fieldset[disabled] .btn-warning:focus,
3335 .btn-warning.disabled.focus,
3336 .btn-warning[disabled].focus,
3337 fieldset[disabled] .btn-warning.focus {
3338   background-color: #f0ad4e;
3339   border-color: #eea236;
3340 }
3341 .btn-warning .badge {
3342   color: #f0ad4e;
3343   background-color: #fff;
3344 }
3345 .btn-danger {
3346   color: #fff;
3347   background-color: #d9534f;
3348   border-color: #d43f3a;
3349 }
3350 .btn-danger:focus,
3351 .btn-danger.focus {
3352   color: #fff;
3353   background-color: #c9302c;
3354   border-color: #761c19;
3355 }
3356 .btn-danger:hover {
3357   color: #fff;
3358   background-color: #c9302c;
3359   border-color: #ac2925;
3360 }
3361 .btn-danger:active,
3362 .btn-danger.active,
3363 .open > .dropdown-toggle.btn-danger {
3364   color: #fff;
3365   background-color: #c9302c;
3366   border-color: #ac2925;
3367 }
3368 .btn-danger:active:hover,
3369 .btn-danger.active:hover,
3370 .open > .dropdown-toggle.btn-danger:hover,
3371 .btn-danger:active:focus,
3372 .btn-danger.active:focus,
3373 .open > .dropdown-toggle.btn-danger:focus,
3374 .btn-danger:active.focus,
3375 .btn-danger.active.focus,
3376 .open > .dropdown-toggle.btn-danger.focus {
3377   color: #fff;
3378   background-color: #ac2925;
3379   border-color: #761c19;
3380 }
3381 .btn-danger:active,
3382 .btn-danger.active,
3383 .open > .dropdown-toggle.btn-danger {
3384   background-image: none;
3385 }
3386 .btn-danger.disabled:hover,
3387 .btn-danger[disabled]:hover,
3388 fieldset[disabled] .btn-danger:hover,
3389 .btn-danger.disabled:focus,
3390 .btn-danger[disabled]:focus,
3391 fieldset[disabled] .btn-danger:focus,
3392 .btn-danger.disabled.focus,
3393 .btn-danger[disabled].focus,
3394 fieldset[disabled] .btn-danger.focus {
3395   background-color: #d9534f;
3396   border-color: #d43f3a;
3397 }
3398 .btn-danger .badge {
3399   color: #d9534f;
3400   background-color: #fff;
3401 }
3402 .btn-link {
3403   font-weight: normal;
3404   color: #337ab7;
3405   border-radius: 0;
3406 }
3407 .btn-link,
3408 .btn-link:active,
3409 .btn-link.active,
3410 .btn-link[disabled],
3411 fieldset[disabled] .btn-link {
3412   background-color: transparent;
3413   -webkit-box-shadow: none;
3414           box-shadow: none;
3415 }
3416 .btn-link,
3417 .btn-link:hover,
3418 .btn-link:focus,
3419 .btn-link:active {
3420   border-color: transparent;
3421 }
3422 .btn-link:hover,
3423 .btn-link:focus {
3424   color: #23527c;
3425   text-decoration: underline;
3426   background-color: transparent;
3427 }
3428 .btn-link[disabled]:hover,
3429 fieldset[disabled] .btn-link:hover,
3430 .btn-link[disabled]:focus,
3431 fieldset[disabled] .btn-link:focus {
3432   color: #777;
3433   text-decoration: none;
3434 }
3435 .btn-lg,
3436 .btn-group-lg > .btn {
3437   padding: 10px 16px;
3438   font-size: 18px;
3439   line-height: 1.3333333;
3440   border-radius: 6px;
3441 }
3442 .btn-sm,
3443 .btn-group-sm > .btn {
3444   padding: 5px 10px;
3445   font-size: 12px;
3446   line-height: 1.5;
3447   border-radius: 3px;
3448 }
3449 .btn-xs,
3450 .btn-group-xs > .btn {
3451   padding: 1px 5px;
3452   font-size: 12px;
3453   line-height: 1.5;
3454   border-radius: 3px;
3455 }
3456 .btn-block {
3457   display: block;
3458   width: 100%;
3459 }
3460 .btn-block + .btn-block {
3461   margin-top: 5px;
3462 }
3463 input[type="submit"].btn-block,
3464 input[type="reset"].btn-block,
3465 input[type="button"].btn-block {
3466   width: 100%;
3467 }
3468 .fade {
3469   opacity: 0;
3470   -webkit-transition: opacity .15s linear;
3471        -o-transition: opacity .15s linear;
3472           transition: opacity .15s linear;
3473 }
3474 .fade.in {
3475   opacity: 1;
3476 }
3477 .collapse {
3478   display: none;
3479 }
3480 .collapse.in {
3481   display: block;
3482 }
3483 tr.collapse.in {
3484   display: table-row;
3485 }
3486 tbody.collapse.in {
3487   display: table-row-group;
3488 }
3489 .collapsing {
3490   position: relative;
3491   height: 0;
3492   overflow: hidden;
3493   -webkit-transition-timing-function: ease;
3494        -o-transition-timing-function: ease;
3495           transition-timing-function: ease;
3496   -webkit-transition-duration: .35s;
3497        -o-transition-duration: .35s;
3498           transition-duration: .35s;
3499   -webkit-transition-property: height, visibility;
3500        -o-transition-property: height, visibility;
3501           transition-property: height, visibility;
3502 }
3503 .caret {
3504   display: inline-block;
3505   width: 0;
3506   height: 0;
3507   margin-left: 2px;
3508   vertical-align: middle;
3509   border-top: 4px dashed;
3510   border-top: 4px solid \9;
3511   border-right: 4px solid transparent;
3512   border-left: 4px solid transparent;
3513 }
3514 .dropup,
3515 .dropdown {
3516   position: relative;
3517 }
3518 .dropdown-toggle:focus {
3519   outline: 0;
3520 }
3521 .dropdown-menu {
3522   position: absolute;
3523   top: 100%;
3524   left: 0;
3525   z-index: 1000;
3526   display: none;
3527   float: left;
3528   min-width: 160px;
3529   padding: 5px 0;
3530   margin: 2px 0 0;
3531   font-size: 14px;
3532   text-align: left;
3533   list-style: none;
3534   background-color: #fff;
3535   -webkit-background-clip: padding-box;
3536           background-clip: padding-box;
3537   border: 1px solid #ccc;
3538   border: 1px solid rgba(0, 0, 0, .15);
3539   border-radius: 4px;
3540   -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3541           box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3542 }
3543 .dropdown-menu.pull-right {
3544   right: 0;
3545   left: auto;
3546 }
3547 .dropdown-menu .divider {
3548   height: 1px;
3549   margin: 9px 0;
3550   overflow: hidden;
3551   background-color: #e5e5e5;
3552 }
3553 .dropdown-menu > li > a {
3554   display: block;
3555   padding: 3px 20px;
3556   clear: both;
3557   font-weight: normal;
3558   line-height: 1.42857143;
3559   color: #333;
3560   white-space: nowrap;
3561 }
3562 .dropdown-menu > li > a:hover,
3563 .dropdown-menu > li > a:focus {
3564   color: #262626;
3565   text-decoration: none;
3566   background-color: #f5f5f5;
3567 }
3568 .dropdown-menu > .active > a,
3569 .dropdown-menu > .active > a:hover,
3570 .dropdown-menu > .active > a:focus {
3571   color: #fff;
3572   text-decoration: none;
3573   background-color: #337ab7;
3574   outline: 0;
3575 }
3576 .dropdown-menu > .disabled > a,
3577 .dropdown-menu > .disabled > a:hover,
3578 .dropdown-menu > .disabled > a:focus {
3579   color: #777;
3580 }
3581 .dropdown-menu > .disabled > a:hover,
3582 .dropdown-menu > .disabled > a:focus {
3583   text-decoration: none;
3584   cursor: not-allowed;
3585   background-color: transparent;
3586   background-image: none;
3587   filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3588 }
3589 .open > .dropdown-menu {
3590   display: block;
3591 }
3592 .open > a {
3593   outline: 0;
3594 }
3595 .dropdown-menu-right {
3596   right: 0;
3597   left: auto;
3598 }
3599 .dropdown-menu-left {
3600   right: auto;
3601   left: 0;
3602 }
3603 .dropdown-header {
3604   display: block;
3605   padding: 3px 20px;
3606   font-size: 12px;
3607   line-height: 1.42857143;
3608   color: #777;
3609   white-space: nowrap;
3610 }
3611 .dropdown-backdrop {
3612   position: fixed;
3613   top: 0;
3614   right: 0;
3615   bottom: 0;
3616   left: 0;
3617   z-index: 990;
3618 }
3619 .pull-right > .dropdown-menu {
3620   right: 0;
3621   left: auto;
3622 }
3623 .dropup .caret,
3624 .navbar-fixed-bottom .dropdown .caret {
3625   content: "";
3626   border-top: 0;
3627   border-bottom: 4px dashed;
3628   border-bottom: 4px solid \9;
3629 }
3630 .dropup .dropdown-menu,
3631 .navbar-fixed-bottom .dropdown .dropdown-menu {
3632   top: auto;
3633   bottom: 100%;
3634   margin-bottom: 2px;
3635 }
3636 @media (min-width: 768px) {
3637   .navbar-right .dropdown-menu {
3638     right: 0;
3639     left: auto;
3640   }
3641   .navbar-right .dropdown-menu-left {
3642     right: auto;
3643     left: 0;
3644   }
3645 }
3646 .btn-group,
3647 .btn-group-vertical {
3648   position: relative;
3649   display: inline-block;
3650   vertical-align: middle;
3651 }
3652 .btn-group > .btn,
3653 .btn-group-vertical > .btn {
3654   position: relative;
3655   float: left;
3656 }
3657 .btn-group > .btn:hover,
3658 .btn-group-vertical > .btn:hover,
3659 .btn-group > .btn:focus,
3660 .btn-group-vertical > .btn:focus,
3661 .btn-group > .btn:active,
3662 .btn-group-vertical > .btn:active,
3663 .btn-group > .btn.active,
3664 .btn-group-vertical > .btn.active {
3665   z-index: 2;
3666 }
3667 .btn-group .btn + .btn,
3668 .btn-group .btn + .btn-group,
3669 .btn-group .btn-group + .btn,
3670 .btn-group .btn-group + .btn-group {
3671   margin-left: -1px;
3672 }
3673 .btn-toolbar {
3674   margin-left: -5px;
3675 }
3676 .btn-toolbar .btn,
3677 .btn-toolbar .btn-group,
3678 .btn-toolbar .input-group {
3679   float: left;
3680 }
3681 .btn-toolbar > .btn,
3682 .btn-toolbar > .btn-group,
3683 .btn-toolbar > .input-group {
3684   margin-left: 5px;
3685 }
3686 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3687   border-radius: 0;
3688 }
3689 .btn-group > .btn:first-child {
3690   margin-left: 0;
3691 }
3692 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3693   border-top-right-radius: 0;
3694   border-bottom-right-radius: 0;
3695 }
3696 .btn-group > .btn:last-child:not(:first-child),
3697 .btn-group > .dropdown-toggle:not(:first-child) {
3698   border-top-left-radius: 0;
3699   border-bottom-left-radius: 0;
3700 }
3701 .btn-group > .btn-group {
3702   float: left;
3703 }
3704 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3705   border-radius: 0;
3706 }
3707 .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3708 .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3709   border-top-right-radius: 0;
3710   border-bottom-right-radius: 0;
3711 }
3712 .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3713   border-top-left-radius: 0;
3714   border-bottom-left-radius: 0;
3715 }
3716 .btn-group .dropdown-toggle:active,
3717 .btn-group.open .dropdown-toggle {
3718   outline: 0;
3719 }
3720 .btn-group > .btn + .dropdown-toggle {
3721   padding-right: 8px;
3722   padding-left: 8px;
3723 }
3724 .btn-group > .btn-lg + .dropdown-toggle {
3725   padding-right: 12px;
3726   padding-left: 12px;
3727 }
3728 .btn-group.open .dropdown-toggle {
3729   -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3730           box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3731 }
3732 .btn-group.open .dropdown-toggle.btn-link {
3733   -webkit-box-shadow: none;
3734           box-shadow: none;
3735 }
3736 .btn .caret {
3737   margin-left: 0;
3738 }
3739 .btn-lg .caret {
3740   border-width: 5px 5px 0;
3741   border-bottom-width: 0;
3742 }
3743 .dropup .btn-lg .caret {
3744   border-width: 0 5px 5px;
3745 }
3746 .btn-group-vertical > .btn,
3747 .btn-group-vertical > .btn-group,
3748 .btn-group-vertical > .btn-group > .btn {
3749   display: block;
3750   float: none;
3751   width: 100%;
3752   max-width: 100%;
3753 }
3754 .btn-group-vertical > .btn-group > .btn {
3755   float: none;
3756 }
3757 .btn-group-vertical > .btn + .btn,
3758 .btn-group-vertical > .btn + .btn-group,
3759 .btn-group-vertical > .btn-group + .btn,
3760 .btn-group-vertical > .btn-group + .btn-group {
3761   margin-top: -1px;
3762   margin-left: 0;
3763 }
3764 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3765   border-radius: 0;
3766 }
3767 .btn-group-vertical > .btn:first-child:not(:last-child) {
3768   border-top-left-radius: 4px;
3769   border-top-right-radius: 4px;
3770   border-bottom-right-radius: 0;
3771   border-bottom-left-radius: 0;
3772 }
3773 .btn-group-vertical > .btn:last-child:not(:first-child) {
3774   border-top-left-radius: 0;
3775   border-top-right-radius: 0;
3776   border-bottom-right-radius: 4px;
3777   border-bottom-left-radius: 4px;
3778 }
3779 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3780   border-radius: 0;
3781 }
3782 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3783 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3784   border-bottom-right-radius: 0;
3785   border-bottom-left-radius: 0;
3786 }
3787 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3788   border-top-left-radius: 0;
3789   border-top-right-radius: 0;
3790 }
3791 .btn-group-justified {
3792   display: table;
3793   width: 100%;
3794   table-layout: fixed;
3795   border-collapse: separate;
3796 }
3797 .btn-group-justified > .btn,
3798 .btn-group-justified > .btn-group {
3799   display: table-cell;
3800   float: none;
3801   width: 1%;
3802 }
3803 .btn-group-justified > .btn-group .btn {
3804   width: 100%;
3805 }
3806 .btn-group-justified > .btn-group .dropdown-menu {
3807   left: auto;
3808 }
3809 [data-toggle="buttons"] > .btn input[type="radio"],
3810 [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3811 [data-toggle="buttons"] > .btn input[type="checkbox"],
3812 [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3813   position: absolute;
3814   clip: rect(0, 0, 0, 0);
3815   pointer-events: none;
3816 }
3817 .input-group {
3818   position: relative;
3819   display: table;
3820   border-collapse: separate;
3821 }
3822 .input-group[class*="col-"] {
3823   float: none;
3824   padding-right: 0;
3825   padding-left: 0;
3826 }
3827 .input-group .form-control {
3828   position: relative;
3829   z-index: 2;
3830   float: left;
3831   width: 100%;
3832   margin-bottom: 0;
3833 }
3834 .input-group .form-control:focus {
3835   z-index: 3;
3836 }
3837 .input-group-lg > .form-control,
3838 .input-group-lg > .input-group-addon,
3839 .input-group-lg > .input-group-btn > .btn {
3840   height: 46px;
3841   padding: 10px 16px;
3842   font-size: 18px;
3843   line-height: 1.3333333;
3844   border-radius: 6px;
3845 }
3846 select.input-group-lg > .form-control,
3847 select.input-group-lg > .input-group-addon,
3848 select.input-group-lg > .input-group-btn > .btn {
3849   height: 46px;
3850   line-height: 46px;
3851 }
3852 textarea.input-group-lg > .form-control,
3853 textarea.input-group-lg > .input-group-addon,
3854 textarea.input-group-lg > .input-group-btn > .btn,
3855 select[multiple].input-group-lg > .form-control,
3856 select[multiple].input-group-lg > .input-group-addon,
3857 select[multiple].input-group-lg > .input-group-btn > .btn {
3858   height: auto;
3859 }
3860 .input-group-sm > .form-control,
3861 .input-group-sm > .input-group-addon,
3862 .input-group-sm > .input-group-btn > .btn {
3863   height: 30px;
3864   padding: 5px 10px;
3865   font-size: 12px;
3866   line-height: 1.5;
3867   border-radius: 3px;
3868 }
3869 select.input-group-sm > .form-control,
3870 select.input-group-sm > .input-group-addon,
3871 select.input-group-sm > .input-group-btn > .btn {
3872   height: 30px;
3873   line-height: 30px;
3874 }
3875 textarea.input-group-sm > .form-control,
3876 textarea.input-group-sm > .input-group-addon,
3877 textarea.input-group-sm > .input-group-btn > .btn,
3878 select[multiple].input-group-sm > .form-control,
3879 select[multiple].input-group-sm > .input-group-addon,
3880 select[multiple].input-group-sm > .input-group-btn > .btn {
3881   height: auto;
3882 }
3883 .input-group-addon,
3884 .input-group-btn,
3885 .input-group .form-control {
3886   display: table-cell;
3887 }
3888 .input-group-addon:not(:first-child):not(:last-child),
3889 .input-group-btn:not(:first-child):not(:last-child),
3890 .input-group .form-control:not(:first-child):not(:last-child) {
3891   border-radius: 0;
3892 }
3893 .input-group-addon,
3894 .input-group-btn {
3895   width: 1%;
3896   white-space: nowrap;
3897   vertical-align: middle;
3898 }
3899 .input-group-addon {
3900   padding: 6px 12px;
3901   font-size: 14px;
3902   font-weight: normal;
3903   line-height: 1;
3904   color: #555;
3905   text-align: center;
3906   background-color: #eee;
3907   border: 1px solid #ccc;
3908   border-radius: 4px;
3909 }
3910 .input-group-addon.input-sm {
3911   padding: 5px 10px;
3912   font-size: 12px;
3913   border-radius: 3px;
3914 }
3915 .input-group-addon.input-lg {
3916   padding: 10px 16px;
3917   font-size: 18px;
3918   border-radius: 6px;
3919 }
3920 .input-group-addon input[type="radio"],
3921 .input-group-addon input[type="checkbox"] {
3922   margin-top: 0;
3923 }
3924 .input-group .form-control:first-child,
3925 .input-group-addon:first-child,
3926 .input-group-btn:first-child > .btn,
3927 .input-group-btn:first-child > .btn-group > .btn,
3928 .input-group-btn:first-child > .dropdown-toggle,
3929 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3930 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3931   border-top-right-radius: 0;
3932   border-bottom-right-radius: 0;
3933 }
3934 .input-group-addon:first-child {
3935   border-right: 0;
3936 }
3937 .input-group .form-control:last-child,
3938 .input-group-addon:last-child,
3939 .input-group-btn:last-child > .btn,
3940 .input-group-btn:last-child > .btn-group > .btn,
3941 .input-group-btn:last-child > .dropdown-toggle,
3942 .input-group-btn:first-child > .btn:not(:first-child),
3943 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3944   border-top-left-radius: 0;
3945   border-bottom-left-radius: 0;
3946 }
3947 .input-group-addon:last-child {
3948   border-left: 0;
3949 }
3950 .input-group-btn {
3951   position: relative;
3952   font-size: 0;
3953   white-space: nowrap;
3954 }
3955 .input-group-btn > .btn {
3956   position: relative;
3957 }
3958 .input-group-btn > .btn + .btn {
3959   margin-left: -1px;
3960 }
3961 .input-group-btn > .btn:hover,
3962 .input-group-btn > .btn:focus,
3963 .input-group-btn > .btn:active {
3964   z-index: 2;
3965 }
3966 .input-group-btn:first-child > .btn,
3967 .input-group-btn:first-child > .btn-group {
3968   margin-right: -1px;
3969 }
3970 .input-group-btn:last-child > .btn,
3971 .input-group-btn:last-child > .btn-group {
3972   z-index: 2;
3973   margin-left: -1px;
3974 }
3975 .nav {
3976   padding-left: 0;
3977   margin-bottom: 0;
3978   list-style: none;
3979 }
3980 .nav > li {
3981   position: relative;
3982   display: block;
3983 }
3984 .nav > li > a {
3985   position: relative;
3986   display: block;
3987   padding: 10px 15px;
3988 }
3989 .nav > li > a:hover,
3990 .nav > li > a:focus {
3991   text-decoration: none;
3992   background-color: #eee;
3993 }
3994 .nav > li.disabled > a {
3995   color: #777;
3996 }
3997 .nav > li.disabled > a:hover,
3998 .nav > li.disabled > a:focus {
3999   color: #777;
4000   text-decoration: none;
4001   cursor: not-allowed;
4002   background-color: transparent;
4003 }
4004 .nav .open > a,
4005 .nav .open > a:hover,
4006 .nav .open > a:focus {
4007   background-color: #eee;
4008   border-color: #337ab7;
4009 }
4010 .nav .nav-divider {
4011   height: 1px;
4012   margin: 9px 0;
4013   overflow: hidden;
4014   background-color: #e5e5e5;
4015 }
4016 .nav > li > a > img {
4017   max-width: none;
4018 }
4019 .nav-tabs {
4020   border-bottom: 1px solid #ddd;
4021 }
4022 .nav-tabs > li {
4023   float: left;
4024   margin-bottom: -1px;
4025 }
4026 .nav-tabs > li > a {
4027   margin-right: 2px;
4028   line-height: 1.42857143;
4029   border: 1px solid transparent;
4030   border-radius: 4px 4px 0 0;
4031 }
4032 .nav-tabs > li > a:hover {
4033   border-color: #eee #eee #ddd;
4034 }
4035 .nav-tabs > li.active > a,
4036 .nav-tabs > li.active > a:hover,
4037 .nav-tabs > li.active > a:focus {
4038   color: #555;
4039   cursor: default;
4040   background-color: #fff;
4041   border: 1px solid #ddd;
4042   border-bottom-color: transparent;
4043 }
4044 .nav-tabs.nav-justified {
4045   width: 100%;
4046   border-bottom: 0;
4047 }
4048 .nav-tabs.nav-justified > li {
4049   float: none;
4050 }
4051 .nav-tabs.nav-justified > li > a {
4052   margin-bottom: 5px;
4053   text-align: center;
4054 }
4055 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
4056   top: auto;
4057   left: auto;
4058 }
4059 @media (min-width: 768px) {
4060   .nav-tabs.nav-justified > li {
4061     display: table-cell;
4062     width: 1%;
4063   }
4064   .nav-tabs.nav-justified > li > a {
4065     margin-bottom: 0;
4066   }
4067 }
4068 .nav-tabs.nav-justified > li > a {
4069   margin-right: 0;
4070   border-radius: 4px;
4071 }
4072 .nav-tabs.nav-justified > .active > a,
4073 .nav-tabs.nav-justified > .active > a:hover,
4074 .nav-tabs.nav-justified > .active > a:focus {
4075   border: 1px solid #ddd;
4076 }
4077 @media (min-width: 768px) {
4078   .nav-tabs.nav-justified > li > a {
4079     border-bottom: 1px solid #ddd;
4080     border-radius: 4px 4px 0 0;
4081   }
4082   .nav-tabs.nav-justified > .active > a,
4083   .nav-tabs.nav-justified > .active > a:hover,
4084   .nav-tabs.nav-justified > .active > a:focus {
4085     border-bottom-color: #fff;
4086   }
4087 }
4088 .nav-pills > li {
4089   float: left;
4090 }
4091 .nav-pills > li > a {
4092   border-radius: 4px;
4093 }
4094 .nav-pills > li + li {
4095   margin-left: 2px;
4096 }
4097 .nav-pills > li.active > a,
4098 .nav-pills > li.active > a:hover,
4099 .nav-pills > li.active > a:focus {
4100   color: #fff;
4101   background-color: #337ab7;
4102 }
4103 .nav-stacked > li {
4104   float: none;
4105 }
4106 .nav-stacked > li + li {
4107   margin-top: 2px;
4108   margin-left: 0;
4109 }
4110 .nav-justified {
4111   width: 100%;
4112 }
4113 .nav-justified > li {
4114   float: none;
4115 }
4116 .nav-justified > li > a {
4117   margin-bottom: 5px;
4118   text-align: center;
4119 }
4120 .nav-justified > .dropdown .dropdown-menu {
4121   top: auto;
4122   left: auto;
4123 }
4124 @media (min-width: 768px) {
4125   .nav-justified > li {
4126     display: table-cell;
4127     width: 1%;
4128   }
4129   .nav-justified > li > a {
4130     margin-bottom: 0;
4131   }
4132 }
4133 .nav-tabs-justified {
4134   border-bottom: 0;
4135 }
4136 .nav-tabs-justified > li > a {
4137   margin-right: 0;
4138   border-radius: 4px;
4139 }
4140 .nav-tabs-justified > .active > a,
4141 .nav-tabs-justified > .active > a:hover,
4142 .nav-tabs-justified > .active > a:focus {
4143   border: 1px solid #ddd;
4144 }
4145 @media (min-width: 768px) {
4146   .nav-tabs-justified > li > a {
4147     border-bottom: 1px solid #ddd;
4148     border-radius: 4px 4px 0 0;
4149   }
4150   .nav-tabs-justified > .active > a,
4151   .nav-tabs-justified > .active > a:hover,
4152   .nav-tabs-justified > .active > a:focus {
4153     border-bottom-color: #fff;
4154   }
4155 }
4156 .tab-content > .tab-pane {
4157   display: none;
4158 }
4159 .tab-content > .active {
4160   display: block;
4161 }
4162 .nav-tabs .dropdown-menu {
4163   margin-top: -1px;
4164   border-top-left-radius: 0;
4165   border-top-right-radius: 0;
4166 }
4167 .navbar {
4168   position: relative;
4169   min-height: 50px;
4170   margin-bottom: 20px;
4171   border: 1px solid transparent;
4172 }
4173 @media (min-width: 768px) {
4174   .navbar {
4175     border-radius: 4px;
4176   }
4177 }
4178 @media (min-width: 768px) {
4179   .navbar-header {
4180     float: left;
4181   }
4182 }
4183 .navbar-collapse {
4184   padding-right: 15px;
4185   padding-left: 15px;
4186   overflow-x: visible;
4187   -webkit-overflow-scrolling: touch;
4188   border-top: 1px solid transparent;
4189   -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
4190           box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
4191 }
4192 .navbar-collapse.in {
4193   overflow-y: auto;
4194 }
4195 @media (min-width: 768px) {
4196   .navbar-collapse {
4197     width: auto;
4198     border-top: 0;
4199     -webkit-box-shadow: none;
4200             box-shadow: none;
4201   }
4202   .navbar-collapse.collapse {
4203     display: block !important;
4204     height: auto !important;
4205     padding-bottom: 0;
4206     overflow: visible !important;
4207   }
4208   .navbar-collapse.in {
4209     overflow-y: visible;
4210   }
4211   .navbar-fixed-top .navbar-collapse,
4212   .navbar-static-top .navbar-collapse,
4213   .navbar-fixed-bottom .navbar-collapse {
4214     padding-right: 0;
4215     padding-left: 0;
4216   }
4217 }
4218 .navbar-fixed-top .navbar-collapse,
4219 .navbar-fixed-bottom .navbar-collapse {
4220   max-height: 340px;
4221 }
4222 @media (max-device-width: 480px) and (orientation: landscape) {
4223   .navbar-fixed-top .navbar-collapse,
4224   .navbar-fixed-bottom .navbar-collapse {
4225     max-height: 200px;
4226   }
4227 }
4228 .container > .navbar-header,
4229 .container-fluid > .navbar-header,
4230 .container > .navbar-collapse,
4231 .container-fluid > .navbar-collapse {
4232   margin-right: -15px;
4233   margin-left: -15px;
4234 }
4235 @media (min-width: 768px) {
4236   .container > .navbar-header,
4237   .container-fluid > .navbar-header,
4238   .container > .navbar-collapse,
4239   .container-fluid > .navbar-collapse {
4240     margin-right: 0;
4241     margin-left: 0;
4242   }
4243 }
4244 .navbar-static-top {
4245   z-index: 1000;
4246   border-width: 0 0 1px;
4247 }
4248 @media (min-width: 768px) {
4249   .navbar-static-top {
4250     border-radius: 0;
4251   }
4252 }
4253 .navbar-fixed-top,
4254 .navbar-fixed-bottom {
4255   position: fixed;
4256   right: 0;
4257   left: 0;
4258   z-index: 1030;
4259 }
4260 @media (min-width: 768px) {
4261   .navbar-fixed-top,
4262   .navbar-fixed-bottom {
4263     border-radius: 0;
4264   }
4265 }
4266 .navbar-fixed-top {
4267   top: 0;
4268   border-width: 0 0 1px;
4269 }
4270 .navbar-fixed-bottom {
4271   bottom: 0;
4272   margin-bottom: 0;
4273   border-width: 1px 0 0;
4274 }
4275 .navbar-brand {
4276   float: left;
4277   height: 50px;
4278   padding: 15px 15px;
4279   font-size: 18px;
4280   line-height: 20px;
4281 }
4282 .navbar-brand:hover,
4283 .navbar-brand:focus {
4284   text-decoration: none;
4285 }
4286 .navbar-brand > img {
4287   display: block;
4288 }
4289 @media (min-width: 768px) {
4290   .navbar > .container .navbar-brand,
4291   .navbar > .container-fluid .navbar-brand {
4292     margin-left: -15px;
4293   }
4294 }
4295 .navbar-toggle {
4296   position: relative;
4297   float: right;
4298   padding: 9px 10px;
4299   margin-top: 8px;
4300   margin-right: 15px;
4301   margin-bottom: 8px;
4302   background-color: transparent;
4303   background-image: none;
4304   border: 1px solid transparent;
4305   border-radius: 4px;
4306 }
4307 .navbar-toggle:focus {
4308   outline: 0;
4309 }
4310 .navbar-toggle .icon-bar {
4311   display: block;
4312   width: 22px;
4313   height: 2px;
4314   border-radius: 1px;
4315 }
4316 .navbar-toggle .icon-bar + .icon-bar {
4317   margin-top: 4px;
4318 }
4319 @media (min-width: 768px) {
4320   .navbar-toggle {
4321     display: none;
4322   }
4323 }
4324 .navbar-nav {
4325   margin: 7.5px -15px;
4326 }
4327 .navbar-nav > li > a {
4328   padding-top: 10px;
4329   padding-bottom: 10px;
4330   line-height: 20px;
4331 }
4332 @media (max-width: 767px) {
4333   .navbar-nav .open .dropdown-menu {
4334     position: static;
4335     float: none;
4336     width: auto;
4337     margin-top: 0;
4338     background-color: transparent;
4339     border: 0;
4340     -webkit-box-shadow: none;
4341             box-shadow: none;
4342   }
4343   .navbar-nav .open .dropdown-menu > li > a,
4344   .navbar-nav .open .dropdown-menu .dropdown-header {
4345     padding: 5px 15px 5px 25px;
4346   }
4347   .navbar-nav .open .dropdown-menu > li > a {
4348     line-height: 20px;
4349   }
4350   .navbar-nav .open .dropdown-menu > li > a:hover,
4351   .navbar-nav .open .dropdown-menu > li > a:focus {
4352     background-image: none;
4353   }
4354 }
4355 @media (min-width: 768px) {
4356   .navbar-nav {
4357     float: left;
4358     margin: 0;
4359   }
4360   .navbar-nav > li {
4361     float: left;
4362   }
4363   .navbar-nav > li > a {
4364     padding-top: 15px;
4365     padding-bottom: 15px;
4366   }
4367 }
4368 .navbar-form {
4369   padding: 10px 15px;
4370   margin-top: 8px;
4371   margin-right: -15px;
4372   margin-bottom: 8px;
4373   margin-left: -15px;
4374   border-top: 1px solid transparent;
4375   border-bottom: 1px solid transparent;
4376   -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
4377           box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
4378 }
4379 @media (min-width: 768px) {
4380   .navbar-form .form-group {
4381     display: inline-block;
4382     margin-bottom: 0;
4383     vertical-align: middle;
4384   }
4385   .navbar-form .form-control {
4386     display: inline-block;
4387     width: auto;
4388     vertical-align: middle;
4389   }
4390   .navbar-form .form-control-static {
4391     display: inline-block;
4392   }
4393   .navbar-form .input-group {
4394     display: inline-table;
4395     vertical-align: middle;
4396   }
4397   .navbar-form .input-group .input-group-addon,
4398   .navbar-form .input-group .input-group-btn,
4399   .navbar-form .input-group .form-control {
4400     width: auto;
4401   }
4402   .navbar-form .input-group > .form-control {
4403     width: 100%;
4404   }
4405   .navbar-form .control-label {
4406     margin-bottom: 0;
4407     vertical-align: middle;
4408   }
4409   .navbar-form .radio,
4410   .navbar-form .checkbox {
4411     display: inline-block;
4412     margin-top: 0;
4413     margin-bottom: 0;
4414     vertical-align: middle;
4415   }
4416   .navbar-form .radio label,
4417   .navbar-form .checkbox label {
4418     padding-left: 0;
4419   }
4420   .navbar-form .radio input[type="radio"],
4421   .navbar-form .checkbox input[type="checkbox"] {
4422     position: relative;
4423     margin-left: 0;
4424   }
4425   .navbar-form .has-feedback .form-control-feedback {
4426     top: 0;
4427   }
4428 }
4429 @media (max-width: 767px) {
4430   .navbar-form .form-group {
4431     margin-bottom: 5px;
4432   }
4433   .navbar-form .form-group:last-child {
4434     margin-bottom: 0;
4435   }
4436 }
4437 @media (min-width: 768px) {
4438   .navbar-form {
4439     width: auto;
4440     padding-top: 0;
4441     padding-bottom: 0;
4442     margin-right: 0;
4443     margin-left: 0;
4444     border: 0;
4445     -webkit-box-shadow: none;
4446             box-shadow: none;
4447   }
4448 }
4449 .navbar-nav > li > .dropdown-menu {
4450   margin-top: 0;
4451   border-top-left-radius: 0;
4452   border-top-right-radius: 0;
4453 }
4454 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4455   margin-bottom: 0;
4456   border-top-left-radius: 4px;
4457   border-top-right-radius: 4px;
4458   border-bottom-right-radius: 0;
4459   border-bottom-left-radius: 0;
4460 }
4461 .navbar-btn {
4462   margin-top: 8px;
4463   margin-bottom: 8px;
4464 }
4465 .navbar-btn.btn-sm {
4466   margin-top: 10px;
4467   margin-bottom: 10px;
4468 }
4469 .navbar-btn.btn-xs {
4470   margin-top: 14px;
4471   margin-bottom: 14px;
4472 }
4473 .navbar-text {
4474   margin-top: 15px;
4475   margin-bottom: 15px;
4476 }
4477 @media (min-width: 768px) {
4478   .navbar-text {
4479     float: left;
4480     margin-right: 15px;
4481     margin-left: 15px;
4482   }
4483 }
4484 @media (min-width: 768px) {
4485   .navbar-left {
4486     float: left !important;
4487   }
4488   .navbar-right {
4489     float: right !important;
4490     margin-right: -15px;
4491   }
4492   .navbar-right ~ .navbar-right {
4493     margin-right: 0;
4494   }
4495 }
4496 .navbar-default {
4497   background-color: #f8f8f8;
4498   border-color: #e7e7e7;
4499 }
4500 .navbar-default .navbar-brand {
4501   color: #777;
4502 }
4503 .navbar-default .navbar-brand:hover,
4504 .navbar-default .navbar-brand:focus {
4505   color: #5e5e5e;
4506   background-color: transparent;
4507 }
4508 .navbar-default .navbar-text {
4509   color: #777;
4510 }
4511 .navbar-default .navbar-nav > li > a {
4512   color: #777;
4513 }
4514 .navbar-default .navbar-nav > li > a:hover,
4515 .navbar-default .navbar-nav > li > a:focus {
4516   color: #333;
4517   background-color: transparent;
4518 }
4519 .navbar-default .navbar-nav > .active > a,
4520 .navbar-default .navbar-nav > .active > a:hover,
4521 .navbar-default .navbar-nav > .active > a:focus {
4522   color: #555;
4523   background-color: #e7e7e7;
4524 }
4525 .navbar-default .navbar-nav > .disabled > a,
4526 .navbar-default .navbar-nav > .disabled > a:hover,
4527 .navbar-default .navbar-nav > .disabled > a:focus {
4528   color: #ccc;
4529   background-color: transparent;
4530 }
4531 .navbar-default .navbar-toggle {
4532   border-color: #ddd;
4533 }
4534 .navbar-default .navbar-toggle:hover,
4535 .navbar-default .navbar-toggle:focus {
4536   background-color: #ddd;
4537 }
4538 .navbar-default .navbar-toggle .icon-bar {
4539   background-color: #888;
4540 }
4541 .navbar-default .navbar-collapse,
4542 .navbar-default .navbar-form {
4543   border-color: #e7e7e7;
4544 }
4545 .navbar-default .navbar-nav > .open > a,
4546 .navbar-default .navbar-nav > .open > a:hover,
4547 .navbar-default .navbar-nav > .open > a:focus {
4548   color: #555;
4549   background-color: #e7e7e7;
4550 }
4551 @media (max-width: 767px) {
4552   .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4553     color: #777;
4554   }
4555   .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4556   .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4557     color: #333;
4558     background-color: transparent;
4559   }
4560   .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4561   .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4562   .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4563     color: #555;
4564     background-color: #e7e7e7;
4565   }
4566   .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4567   .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4568   .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4569     color: #ccc;
4570     background-color: transparent;
4571   }
4572 }
4573 .navbar-default .navbar-link {
4574   color: #777;
4575 }
4576 .navbar-default .navbar-link:hover {
4577   color: #333;
4578 }
4579 .navbar-default .btn-link {
4580   color: #777;
4581 }
4582 .navbar-default .btn-link:hover,
4583 .navbar-default .btn-link:focus {
4584   color: #333;
4585 }
4586 .navbar-default .btn-link[disabled]:hover,
4587 fieldset[disabled] .navbar-default .btn-link:hover,
4588 .navbar-default .btn-link[disabled]:focus,
4589 fieldset[disabled] .navbar-default .btn-link:focus {
4590   color: #ccc;
4591 }
4592 .navbar-inverse {
4593   background-color: #222;
4594   border-color: #080808;
4595 }
4596 .navbar-inverse .navbar-brand {
4597   color: #9d9d9d;
4598 }
4599 .navbar-inverse .navbar-brand:hover,
4600 .navbar-inverse .navbar-brand:focus {
4601   color: #fff;
4602   background-color: transparent;
4603 }
4604 .navbar-inverse .navbar-text {
4605   color: #9d9d9d;
4606 }
4607 .navbar-inverse .navbar-nav > li > a {
4608   color: #9d9d9d;
4609 }
4610 .navbar-inverse .navbar-nav > li > a:hover,
4611 .navbar-inverse .navbar-nav > li > a:focus {
4612   color: #fff;
4613   background-color: transparent;
4614 }
4615 .navbar-inverse .navbar-nav > .active > a,
4616 .navbar-inverse .navbar-nav > .active > a:hover,
4617 .navbar-inverse .navbar-nav > .active > a:focus {
4618   color: #fff;
4619   background-color: #080808;
4620 }
4621 .navbar-inverse .navbar-nav > .disabled > a,
4622 .navbar-inverse .navbar-nav > .disabled > a:hover,
4623 .navbar-inverse .navbar-nav > .disabled > a:focus {
4624   color: #444;
4625   background-color: transparent;
4626 }
4627 .navbar-inverse .navbar-toggle {
4628   border-color: #333;
4629 }
4630 .navbar-inverse .navbar-toggle:hover,
4631 .navbar-inverse .navbar-toggle:focus {
4632   background-color: #333;
4633 }
4634 .navbar-inverse .navbar-toggle .icon-bar {
4635   background-color: #fff;
4636 }
4637 .navbar-inverse .navbar-collapse,
4638 .navbar-inverse .navbar-form {
4639   border-color: #101010;
4640 }
4641 .navbar-inverse .navbar-nav > .open > a,
4642 .navbar-inverse .navbar-nav > .open > a:hover,
4643 .navbar-inverse .navbar-nav > .open > a:focus {
4644   color: #fff;
4645   background-color: #080808;
4646 }
4647 @media (max-width: 767px) {
4648   .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4649     border-color: #080808;
4650   }
4651   .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4652     background-color: #080808;
4653   }
4654   .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4655     color: #9d9d9d;
4656   }
4657   .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4658   .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4659     color: #fff;
4660     background-color: transparent;
4661   }
4662   .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4663   .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4664   .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4665     color: #fff;
4666     background-color: #080808;
4667   }
4668   .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4669   .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4670   .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4671     color: #444;
4672     background-color: transparent;
4673   }
4674 }
4675 .navbar-inverse .navbar-link {
4676   color: #9d9d9d;
4677 }
4678 .navbar-inverse .navbar-link:hover {
4679   color: #fff;
4680 }
4681 .navbar-inverse .btn-link {
4682   color: #9d9d9d;
4683 }
4684 .navbar-inverse .btn-link:hover,
4685 .navbar-inverse .btn-link:focus {
4686   color: #fff;
4687 }
4688 .navbar-inverse .btn-link[disabled]:hover,
4689 fieldset[disabled] .navbar-inverse .btn-link:hover,
4690 .navbar-inverse .btn-link[disabled]:focus,
4691 fieldset[disabled] .navbar-inverse .btn-link:focus {
4692   color: #444;
4693 }
4694 .breadcrumb {
4695   padding: 8px 15px;
4696   margin-bottom: 20px;
4697   list-style: none;
4698   background-color: #f5f5f5;
4699   border-radius: 4px;
4700 }
4701 .breadcrumb > li {
4702   display: inline-block;
4703 }
4704 .breadcrumb > li + li:before {
4705   padding: 0 5px;
4706   color: #ccc;
4707   content: "/\00a0";
4708 }
4709 .breadcrumb > .active {
4710   color: #777;
4711 }
4712 .pagination {
4713   display: inline-block;
4714   padding-left: 0;
4715   margin: 20px 0;
4716   border-radius: 4px;
4717 }
4718 .pagination > li {
4719   display: inline;
4720 }
4721 .pagination > li > a,
4722 .pagination > li > span {
4723   position: relative;
4724   float: left;
4725   padding: 6px 12px;
4726   margin-left: -1px;
4727   line-height: 1.42857143;
4728   color: #337ab7;
4729   text-decoration: none;
4730   background-color: #fff;
4731   border: 1px solid #ddd;
4732 }
4733 .pagination > li:first-child > a,
4734 .pagination > li:first-child > span {
4735   margin-left: 0;
4736   border-top-left-radius: 4px;
4737   border-bottom-left-radius: 4px;
4738 }
4739 .pagination > li:last-child > a,
4740 .pagination > li:last-child > span {
4741   border-top-right-radius: 4px;
4742   border-bottom-right-radius: 4px;
4743 }
4744 .pagination > li > a:hover,
4745 .pagination > li > span:hover,
4746 .pagination > li > a:focus,
4747 .pagination > li > span:focus {
4748   z-index: 2;
4749   color: #23527c;
4750   background-color: #eee;
4751   border-color: #ddd;
4752 }
4753 .pagination > .active > a,
4754 .pagination > .active > span,
4755 .pagination > .active > a:hover,
4756 .pagination > .active > span:hover,
4757 .pagination > .active > a:focus,
4758 .pagination > .active > span:focus {
4759   z-index: 3;
4760   color: #fff;
4761   cursor: default;
4762   background-color: #337ab7;
4763   border-color: #337ab7;
4764 }
4765 .pagination > .disabled > span,
4766 .pagination > .disabled > span:hover,
4767 .pagination > .disabled > span:focus,
4768 .pagination > .disabled > a,
4769 .pagination > .disabled > a:hover,
4770 .pagination > .disabled > a:focus {
4771   color: #777;
4772   cursor: not-allowed;
4773   background-color: #fff;
4774   border-color: #ddd;
4775 }
4776 .pagination-lg > li > a,
4777 .pagination-lg > li > span {
4778   padding: 10px 16px;
4779   font-size: 18px;
4780   line-height: 1.3333333;
4781 }
4782 .pagination-lg > li:first-child > a,
4783 .pagination-lg > li:first-child > span {
4784   border-top-left-radius: 6px;
4785   border-bottom-left-radius: 6px;
4786 }
4787 .pagination-lg > li:last-child > a,
4788 .pagination-lg > li:last-child > span {
4789   border-top-right-radius: 6px;
4790   border-bottom-right-radius: 6px;
4791 }
4792 .pagination-sm > li > a,
4793 .pagination-sm > li > span {
4794   padding: 5px 10px;
4795   font-size: 12px;
4796   line-height: 1.5;
4797 }
4798 .pagination-sm > li:first-child > a,
4799 .pagination-sm > li:first-child > span {
4800   border-top-left-radius: 3px;
4801   border-bottom-left-radius: 3px;
4802 }
4803 .pagination-sm > li:last-child > a,
4804 .pagination-sm > li:last-child > span {
4805   border-top-right-radius: 3px;
4806   border-bottom-right-radius: 3px;
4807 }
4808 .pager {
4809   padding-left: 0;
4810   margin: 20px 0;
4811   text-align: center;
4812   list-style: none;
4813 }
4814 .pager li {
4815   display: inline;
4816 }
4817 .pager li > a,
4818 .pager li > span {
4819   display: inline-block;
4820   padding: 5px 14px;
4821   background-color: #fff;
4822   border: 1px solid #ddd;
4823   border-radius: 15px;
4824 }
4825 .pager li > a:hover,
4826 .pager li > a:focus {
4827   text-decoration: none;
4828   background-color: #eee;
4829 }
4830 .pager .next > a,
4831 .pager .next > span {
4832   float: right;
4833 }
4834 .pager .previous > a,
4835 .pager .previous > span {
4836   float: left;
4837 }
4838 .pager .disabled > a,
4839 .pager .disabled > a:hover,
4840 .pager .disabled > a:focus,
4841 .pager .disabled > span {
4842   color: #777;
4843   cursor: not-allowed;
4844   background-color: #fff;
4845 }
4846 .label {
4847   display: inline;
4848   padding: .2em .6em .3em;
4849   font-size: 75%;
4850   font-weight: bold;
4851   line-height: 1;
4852   color: #fff;
4853   text-align: center;
4854   white-space: nowrap;
4855   vertical-align: baseline;
4856   border-radius: .25em;
4857 }
4858 a.label:hover,
4859 a.label:focus {
4860   color: #fff;
4861   text-decoration: none;
4862   cursor: pointer;
4863 }
4864 .label:empty {
4865   display: none;
4866 }
4867 .btn .label {
4868   position: relative;
4869   top: -1px;
4870 }
4871 .label-default {
4872   background-color: #777;
4873 }
4874 .label-default[href]:hover,
4875 .label-default[href]:focus {
4876   background-color: #5e5e5e;
4877 }
4878 .label-primary {
4879   background-color: #337ab7;
4880 }
4881 .label-primary[href]:hover,
4882 .label-primary[href]:focus {
4883   background-color: #286090;
4884 }
4885 .label-success {
4886   background-color: #5cb85c;
4887 }
4888 .label-success[href]:hover,
4889 .label-success[href]:focus {
4890   background-color: #449d44;
4891 }
4892 .label-info {
4893   background-color: #5bc0de;
4894 }
4895 .label-info[href]:hover,
4896 .label-info[href]:focus {
4897   background-color: #31b0d5;
4898 }
4899 .label-warning {
4900   background-color: #f0ad4e;
4901 }
4902 .label-warning[href]:hover,
4903 .label-warning[href]:focus {
4904   background-color: #ec971f;
4905 }
4906 .label-danger {
4907   background-color: #d9534f;
4908 }
4909 .label-danger[href]:hover,
4910 .label-danger[href]:focus {
4911   background-color: #c9302c;
4912 }
4913 .badge {
4914   display: inline-block;
4915   min-width: 10px;
4916   padding: 3px 7px;
4917   font-size: 12px;
4918   font-weight: bold;
4919   line-height: 1;
4920   color: #fff;
4921   text-align: center;
4922   white-space: nowrap;
4923   vertical-align: middle;
4924   background-color: #777;
4925   border-radius: 10px;
4926 }
4927 .badge:empty {
4928   display: none;
4929 }
4930 .btn .badge {
4931   position: relative;
4932   top: -1px;
4933 }
4934 .btn-xs .badge,
4935 .btn-group-xs > .btn .badge {
4936   top: 0;
4937   padding: 1px 5px;
4938 }
4939 a.badge:hover,
4940 a.badge:focus {
4941   color: #fff;
4942   text-decoration: none;
4943   cursor: pointer;
4944 }
4945 .list-group-item.active > .badge,
4946 .nav-pills > .active > a > .badge {
4947   color: #337ab7;
4948   background-color: #fff;
4949 }
4950 .list-group-item > .badge {
4951   float: right;
4952 }
4953 .list-group-item > .badge + .badge {
4954   margin-right: 5px;
4955 }
4956 .nav-pills > li > a > .badge {
4957   margin-left: 3px;
4958 }
4959 .jumbotron {
4960   padding-top: 30px;
4961   padding-bottom: 30px;
4962   margin-bottom: 30px;
4963   color: inherit;
4964   background-color: #eee;
4965 }
4966 .jumbotron h1,
4967 .jumbotron .h1 {
4968   color: inherit;
4969 }
4970 .jumbotron p {
4971   margin-bottom: 15px;
4972   font-size: 21px;
4973   font-weight: 200;
4974 }
4975 .jumbotron > hr {
4976   border-top-color: #d5d5d5;
4977 }
4978 .container .jumbotron,
4979 .container-fluid .jumbotron {
4980   padding-right: 15px;
4981   padding-left: 15px;
4982   border-radius: 6px;
4983 }
4984 .jumbotron .container {
4985   max-width: 100%;
4986 }
4987 @media screen and (min-width: 768px) {
4988   .jumbotron {
4989     padding-top: 48px;
4990     padding-bottom: 48px;
4991   }
4992   .container .jumbotron,
4993   .container-fluid .jumbotron {
4994     padding-right: 60px;
4995     padding-left: 60px;
4996   }
4997   .jumbotron h1,
4998   .jumbotron .h1 {
4999     font-size: 63px;
5000   }
5001 }
5002 .thumbnail {
5003   display: block;
5004   padding: 4px;
5005   margin-bottom: 20px;
5006   line-height: 1.42857143;
5007   background-color: #fff;
5008   border: 1px solid #ddd;
5009   border-radius: 4px;
5010   -webkit-transition: border .2s ease-in-out;
5011        -o-transition: border .2s ease-in-out;
5012           transition: border .2s ease-in-out;
5013 }
5014 .thumbnail > img,
5015 .thumbnail a > img {
5016   margin-right: auto;
5017   margin-left: auto;
5018 }
5019 a.thumbnail:hover,
5020 a.thumbnail:focus,
5021 a.thumbnail.active {
5022   border-color: #337ab7;
5023 }
5024 .thumbnail .caption {
5025   padding: 9px;
5026   color: #333;
5027 }
5028 .alert {
5029   padding: 15px;
5030   margin-bottom: 20px;
5031   border: 1px solid transparent;
5032   border-radius: 4px;
5033 }
5034 .alert h4 {
5035   margin-top: 0;
5036   color: inherit;
5037 }
5038 .alert .alert-link {
5039   font-weight: bold;
5040 }
5041 .alert > p,
5042 .alert > ul {
5043   margin-bottom: 0;
5044 }
5045 .alert > p + p {
5046   margin-top: 5px;
5047 }
5048 .alert-dismissable,
5049 .alert-dismissible {
5050   padding-right: 35px;
5051 }
5052 .alert-dismissable .close,
5053 .alert-dismissible .close {
5054   position: relative;
5055   top: -2px;
5056   right: -21px;
5057   color: inherit;
5058 }
5059 .alert-success {
5060   color: #3c763d;
5061   background-color: #dff0d8;
5062   border-color: #d6e9c6;
5063 }
5064 .alert-success hr {
5065   border-top-color: #c9e2b3;
5066 }
5067 .alert-success .alert-link {
5068   color: #2b542c;
5069 }
5070 .alert-info {
5071   color: #31708f;
5072   background-color: #d9edf7;
5073   border-color: #bce8f1;
5074 }
5075 .alert-info hr {
5076   border-top-color: #a6e1ec;
5077 }
5078 .alert-info .alert-link {
5079   color: #245269;
5080 }
5081 .alert-warning {
5082   color: #8a6d3b;
5083   background-color: #fcf8e3;
5084   border-color: #faebcc;
5085 }
5086 .alert-warning hr {
5087   border-top-color: #f7e1b5;
5088 }
5089 .alert-warning .alert-link {
5090   color: #66512c;
5091 }
5092 .alert-danger {
5093   color: #a94442;
5094   background-color: #f2dede;
5095   border-color: #ebccd1;
5096 }
5097 .alert-danger hr {
5098   border-top-color: #e4b9c0;
5099 }
5100 .alert-danger .alert-link {
5101   color: #843534;
5102 }
5103 @-webkit-keyframes progress-bar-stripes {
5104   from {
5105     background-position: 40px 0;
5106   }
5107   to {
5108     background-position: 0 0;
5109   }
5110 }
5111 @-o-keyframes progress-bar-stripes {
5112   from {
5113     background-position: 40px 0;
5114   }
5115   to {
5116     background-position: 0 0;
5117   }
5118 }
5119 @keyframes progress-bar-stripes {
5120   from {
5121     background-position: 40px 0;
5122   }
5123   to {
5124     background-position: 0 0;
5125   }
5126 }
5127 .progress {
5128   height: 20px;
5129   margin-bottom: 20px;
5130   overflow: hidden;
5131   background-color: #f5f5f5;
5132   border-radius: 4px;
5133   -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
5134           box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
5135 }
5136 .progress-bar {
5137   float: left;
5138   width: 0;
5139   height: 100%;
5140   font-size: 12px;
5141   line-height: 20px;
5142   color: #fff;
5143   text-align: center;
5144   background-color: #337ab7;
5145   -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
5146           box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
5147   -webkit-transition: width .6s ease;
5148        -o-transition: width .6s ease;
5149           transition: width .6s ease;
5150 }
5151 .progress-striped .progress-bar,
5152 .progress-bar-striped {
5153   background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5154   background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5155   background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5156   -webkit-background-size: 40px 40px;
5157           background-size: 40px 40px;
5158 }
5159 .progress.active .progress-bar,
5160 .progress-bar.active {
5161   -webkit-animation: progress-bar-stripes 2s linear infinite;
5162        -o-animation: progress-bar-stripes 2s linear infinite;
5163           animation: progress-bar-stripes 2s linear infinite;
5164 }
5165 .progress-bar-success {
5166   background-color: #5cb85c;
5167 }
5168 .progress-striped .progress-bar-success {
5169   background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5170   background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5171   background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5172 }
5173 .progress-bar-info {
5174   background-color: #5bc0de;
5175 }
5176 .progress-striped .progress-bar-info {
5177   background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5178   background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5179   background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5180 }
5181 .progress-bar-warning {
5182   background-color: #f0ad4e;
5183 }
5184 .progress-striped .progress-bar-warning {
5185   background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5186   background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5187   background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5188 }
5189 .progress-bar-danger {
5190   background-color: #d9534f;
5191 }
5192 .progress-striped .progress-bar-danger {
5193   background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5194   background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5195   background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
5196 }
5197 .media {
5198   margin-top: 15px;
5199 }
5200 .media:first-child {
5201   margin-top: 0;
5202 }
5203 .media,
5204 .media-body {
5205   overflow: hidden;
5206   zoom: 1;
5207 }
5208 .media-body {
5209   width: 10000px;
5210 }
5211 .media-object {
5212   display: block;
5213 }
5214 .media-object.img-thumbnail {
5215   max-width: none;
5216 }
5217 .media-right,
5218 .media > .pull-right {
5219   padding-left: 10px;
5220 }
5221 .media-left,
5222 .media > .pull-left {
5223   padding-right: 10px;
5224 }
5225 .media-left,
5226 .media-right,
5227 .media-body {
5228   display: table-cell;
5229   vertical-align: top;
5230 }
5231 .media-middle {
5232   vertical-align: middle;
5233 }
5234 .media-bottom {
5235   vertical-align: bottom;
5236 }
5237 .media-heading {
5238   margin-top: 0;
5239   margin-bottom: 5px;
5240 }
5241 .media-list {
5242   padding-left: 0;
5243   list-style: none;
5244 }
5245 .list-group {
5246   padding-left: 0;
5247   margin-bottom: 20px;
5248 }
5249 .list-group-item {
5250   position: relative;
5251   display: block;
5252   padding: 10px 15px;
5253   margin-bottom: -1px;
5254   background-color: #fff;
5255   border: 1px solid #ddd;
5256 }
5257 .list-group-item:first-child {
5258   border-top-left-radius: 4px;
5259   border-top-right-radius: 4px;
5260 }
5261 .list-group-item:last-child {
5262   margin-bottom: 0;
5263   border-bottom-right-radius: 4px;
5264   border-bottom-left-radius: 4px;
5265 }
5266 a.list-group-item,
5267 button.list-group-item {
5268   color: #555;
5269 }
5270 a.list-group-item .list-group-item-heading,
5271 button.list-group-item .list-group-item-heading {
5272   color: #333;
5273 }
5274 a.list-group-item:hover,
5275 button.list-group-item:hover,
5276 a.list-group-item:focus,
5277 button.list-group-item:focus {
5278   color: #555;
5279   text-decoration: none;
5280   background-color: #f5f5f5;
5281 }
5282 button.list-group-item {
5283   width: 100%;
5284   text-align: left;
5285 }
5286 .list-group-item.disabled,
5287 .list-group-item.disabled:hover,
5288 .list-group-item.disabled:focus {
5289   color: #777;
5290   cursor: not-allowed;
5291   background-color: #eee;
5292 }
5293 .list-group-item.disabled .list-group-item-heading,
5294 .list-group-item.disabled:hover .list-group-item-heading,
5295 .list-group-item.disabled:focus .list-group-item-heading {
5296   color: inherit;
5297 }
5298 .list-group-item.disabled .list-group-item-text,
5299 .list-group-item.disabled:hover .list-group-item-text,
5300 .list-group-item.disabled:focus .list-group-item-text {
5301   color: #777;
5302 }
5303 .list-group-item.active,
5304 .list-group-item.active:hover,
5305 .list-group-item.active:focus {
5306   z-index: 2;
5307   color: #fff;
5308   background-color: #337ab7;
5309   border-color: #337ab7;
5310 }
5311 .list-group-item.active .list-group-item-heading,
5312 .list-group-item.active:hover .list-group-item-heading,
5313 .list-group-item.active:focus .list-group-item-heading,
5314 .list-group-item.active .list-group-item-heading > small,
5315 .list-group-item.active:hover .list-group-item-heading > small,
5316 .list-group-item.active:focus .list-group-item-heading > small,
5317 .list-group-item.active .list-group-item-heading > .small,
5318 .list-group-item.active:hover .list-group-item-heading > .small,
5319 .list-group-item.active:focus .list-group-item-heading > .small {
5320   color: inherit;
5321 }
5322 .list-group-item.active .list-group-item-text,
5323 .list-group-item.active:hover .list-group-item-text,
5324 .list-group-item.active:focus .list-group-item-text {
5325   color: #c7ddef;
5326 }
5327 .list-group-item-success {
5328   color: #3c763d;
5329   background-color: #dff0d8;
5330 }
5331 a.list-group-item-success,
5332 button.list-group-item-success {
5333   color: #3c763d;
5334 }
5335 a.list-group-item-success .list-group-item-heading,
5336 button.list-group-item-success .list-group-item-heading {
5337   color: inherit;
5338 }
5339 a.list-group-item-success:hover,
5340 button.list-group-item-success:hover,
5341 a.list-group-item-success:focus,
5342 button.list-group-item-success:focus {
5343   color: #3c763d;
5344   background-color: #d0e9c6;
5345 }
5346 a.list-group-item-success.active,
5347 button.list-group-item-success.active,
5348 a.list-group-item-success.active:hover,
5349 button.list-group-item-success.active:hover,
5350 a.list-group-item-success.active:focus,
5351 button.list-group-item-success.active:focus {
5352   color: #fff;
5353   background-color: #3c763d;
5354   border-color: #3c763d;
5355 }
5356 .list-group-item-info {
5357   color: #31708f;
5358   background-color: #d9edf7;
5359 }
5360 a.list-group-item-info,
5361 button.list-group-item-info {
5362   color: #31708f;
5363 }
5364 a.list-group-item-info .list-group-item-heading,
5365 button.list-group-item-info .list-group-item-heading {
5366   color: inherit;
5367 }
5368 a.list-group-item-info:hover,
5369 button.list-group-item-info:hover,
5370 a.list-group-item-info:focus,
5371 button.list-group-item-info:focus {
5372   color: #31708f;
5373   background-color: #c4e3f3;
5374 }
5375 a.list-group-item-info.active,
5376 button.list-group-item-info.active,
5377 a.list-group-item-info.active:hover,
5378 button.list-group-item-info.active:hover,
5379 a.list-group-item-info.active:focus,
5380 button.list-group-item-info.active:focus {
5381   color: #fff;
5382   background-color: #31708f;
5383   border-color: #31708f;
5384 }
5385 .list-group-item-warning {
5386   color: #8a6d3b;
5387   background-color: #fcf8e3;
5388 }
5389 a.list-group-item-warning,
5390 button.list-group-item-warning {
5391   color: #8a6d3b;
5392 }
5393 a.list-group-item-warning .list-group-item-heading,
5394 button.list-group-item-warning .list-group-item-heading {
5395   color: inherit;
5396 }
5397 a.list-group-item-warning:hover,
5398 button.list-group-item-warning:hover,
5399 a.list-group-item-warning:focus,
5400 button.list-group-item-warning:focus {
5401   color: #8a6d3b;
5402   background-color: #faf2cc;
5403 }
5404 a.list-group-item-warning.active,
5405 button.list-group-item-warning.active,
5406 a.list-group-item-warning.active:hover,
5407 button.list-group-item-warning.active:hover,
5408 a.list-group-item-warning.active:focus,
5409 button.list-group-item-warning.active:focus {
5410   color: #fff;
5411   background-color: #8a6d3b;
5412   border-color: #8a6d3b;
5413 }
5414 .list-group-item-danger {
5415   color: #a94442;
5416   background-color: #f2dede;
5417 }
5418 a.list-group-item-danger,
5419 button.list-group-item-danger {
5420   color: #a94442;
5421 }
5422 a.list-group-item-danger .list-group-item-heading,
5423 button.list-group-item-danger .list-group-item-heading {
5424   color: inherit;
5425 }
5426 a.list-group-item-danger:hover,
5427 button.list-group-item-danger:hover,
5428 a.list-group-item-danger:focus,
5429 button.list-group-item-danger:focus {
5430   color: #a94442;
5431   background-color: #ebcccc;
5432 }
5433 a.list-group-item-danger.active,
5434 button.list-group-item-danger.active,
5435 a.list-group-item-danger.active:hover,
5436 button.list-group-item-danger.active:hover,
5437 a.list-group-item-danger.active:focus,
5438 button.list-group-item-danger.active:focus {
5439   color: #fff;
5440   background-color: #a94442;
5441   border-color: #a94442;
5442 }
5443 .list-group-item-heading {
5444   margin-top: 0;
5445   margin-bottom: 5px;
5446 }
5447 .list-group-item-text {
5448   margin-bottom: 0;
5449   line-height: 1.3;
5450 }
5451 .panel {
5452   margin-bottom: 20px;
5453   background-color: #fff;
5454   border: 1px solid transparent;
5455   border-radius: 4px;
5456   -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5457           box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5458 }
5459 .panel-body {
5460   padding: 15px;
5461 }
5462 .panel-heading {
5463   padding: 10px 15px;
5464   border-bottom: 1px solid transparent;
5465   border-top-left-radius: 3px;
5466   border-top-right-radius: 3px;
5467 }
5468 .panel-heading > .dropdown .dropdown-toggle {
5469   color: inherit;
5470 }
5471 .panel-title {
5472   margin-top: 0;
5473   margin-bottom: 0;
5474   font-size: 16px;
5475   color: inherit;
5476 }
5477 .panel-title > a,
5478 .panel-title > small,
5479 .panel-title > .small,
5480 .panel-title > small > a,
5481 .panel-title > .small > a {
5482   color: inherit;
5483 }
5484 .panel-footer {
5485   padding: 10px 15px;
5486   background-color: #f5f5f5;
5487   border-top: 1px solid #ddd;
5488   border-bottom-right-radius: 3px;
5489   border-bottom-left-radius: 3px;
5490 }
5491 .panel > .list-group,
5492 .panel > .panel-collapse > .list-group {
5493   margin-bottom: 0;
5494 }
5495 .panel > .list-group .list-group-item,
5496 .panel > .panel-collapse > .list-group .list-group-item {
5497   border-width: 1px 0;
5498   border-radius: 0;
5499 }
5500 .panel > .list-group:first-child .list-group-item:first-child,
5501 .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5502   border-top: 0;
5503   border-top-left-radius: 3px;
5504   border-top-right-radius: 3px;
5505 }
5506 .panel > .list-group:last-child .list-group-item:last-child,
5507 .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5508   border-bottom: 0;
5509   border-bottom-right-radius: 3px;
5510   border-bottom-left-radius: 3px;
5511 }
5512 .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
5513   border-top-left-radius: 0;
5514   border-top-right-radius: 0;
5515 }
5516 .panel-heading + .list-group .list-group-item:first-child {
5517   border-top-width: 0;
5518 }
5519 .list-group + .panel-footer {
5520   border-top-width: 0;
5521 }
5522 .panel > .table,
5523 .panel > .table-responsive > .table,
5524 .panel > .panel-collapse > .table {
5525   margin-bottom: 0;
5526 }
5527 .panel > .table caption,
5528 .panel > .table-responsive > .table caption,
5529 .panel > .panel-collapse > .table caption {
5530   padding-right: 15px;
5531   padding-left: 15px;
5532 }
5533 .panel > .table:first-child,
5534 .panel > .table-responsive:first-child > .table:first-child {
5535   border-top-left-radius: 3px;
5536   border-top-right-radius: 3px;
5537 }
5538 .panel > .table:first-child > thead:first-child > tr:first-child,
5539 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5540 .panel > .table:first-child > tbody:first-child > tr:first-child,
5541 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5542   border-top-left-radius: 3px;
5543   border-top-right-radius: 3px;
5544 }
5545 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5546 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5547 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5548 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5549 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5550 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5551 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5552 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5553   border-top-left-radius: 3px;
5554 }
5555 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5556 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5557 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5558 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5559 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5560 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5561 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5562 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5563   border-top-right-radius: 3px;
5564 }
5565 .panel > .table:last-child,
5566 .panel > .table-responsive:last-child > .table:last-child {
5567   border-bottom-right-radius: 3px;
5568   border-bottom-left-radius: 3px;
5569 }
5570 .panel > .table:last-child > tbody:last-child > tr:last-child,
5571 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5572 .panel > .table:last-child > tfoot:last-child > tr:last-child,
5573 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5574   border-bottom-right-radius: 3px;
5575   border-bottom-left-radius: 3px;
5576 }
5577 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5578 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5579 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5580 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5581 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5582 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5583 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5584 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5585   border-bottom-left-radius: 3px;
5586 }
5587 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5588 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5589 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5590 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5591 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5592 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5593 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5594 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5595   border-bottom-right-radius: 3px;
5596 }
5597 .panel > .panel-body + .table,
5598 .panel > .panel-body + .table-responsive,
5599 .panel > .table + .panel-body,
5600 .panel > .table-responsive + .panel-body {
5601   border-top: 1px solid #ddd;
5602 }
5603 .panel > .table > tbody:first-child > tr:first-child th,
5604 .panel > .table > tbody:first-child > tr:first-child td {
5605   border-top: 0;
5606 }
5607 .panel > .table-bordered,
5608 .panel > .table-responsive > .table-bordered {
5609   border: 0;
5610 }
5611 .panel > .table-bordered > thead > tr > th:first-child,
5612 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5613 .panel > .table-bordered > tbody > tr > th:first-child,
5614 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5615 .panel > .table-bordered > tfoot > tr > th:first-child,
5616 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5617 .panel > .table-bordered > thead > tr > td:first-child,
5618 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5619 .panel > .table-bordered > tbody > tr > td:first-child,
5620 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5621 .panel > .table-bordered > tfoot > tr > td:first-child,
5622 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5623   border-left: 0;
5624 }
5625 .panel > .table-bordered > thead > tr > th:last-child,
5626 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5627 .panel > .table-bordered > tbody > tr > th:last-child,
5628 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5629 .panel > .table-bordered > tfoot > tr > th:last-child,
5630 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5631 .panel > .table-bordered > thead > tr > td:last-child,
5632 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5633 .panel > .table-bordered > tbody > tr > td:last-child,
5634 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5635 .panel > .table-bordered > tfoot > tr > td:last-child,
5636 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5637   border-right: 0;
5638 }
5639 .panel > .table-bordered > thead > tr:first-child > td,
5640 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5641 .panel > .table-bordered > tbody > tr:first-child > td,
5642 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5643 .panel > .table-bordered > thead > tr:first-child > th,
5644 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5645 .panel > .table-bordered > tbody > tr:first-child > th,
5646 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5647   border-bottom: 0;
5648 }
5649 .panel > .table-bordered > tbody > tr:last-child > td,
5650 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5651 .panel > .table-bordered > tfoot > tr:last-child > td,
5652 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5653 .panel > .table-bordered > tbody > tr:last-child > th,
5654 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5655 .panel > .table-bordered > tfoot > tr:last-child > th,
5656 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5657   border-bottom: 0;
5658 }
5659 .panel > .table-responsive {
5660   margin-bottom: 0;
5661   border: 0;
5662 }
5663 .panel-group {
5664   margin-bottom: 20px;
5665 }
5666 .panel-group .panel {
5667   margin-bottom: 0;
5668   border-radius: 4px;
5669 }
5670 .panel-group .panel + .panel {
5671   margin-top: 5px;
5672 }
5673 .panel-group .panel-heading {
5674   border-bottom: 0;
5675 }
5676 .panel-group .panel-heading + .panel-collapse > .panel-body,
5677 .panel-group .panel-heading + .panel-collapse > .list-group {
5678   border-top: 1px solid #ddd;
5679 }
5680 .panel-group .panel-footer {
5681   border-top: 0;
5682 }
5683 .panel-group .panel-footer + .panel-collapse .panel-body {
5684   border-bottom: 1px solid #ddd;
5685 }
5686 .panel-default {
5687   border-color: #ddd;
5688 }
5689 .panel-default > .panel-heading {
5690   color: #333;
5691   background-color: #f5f5f5;
5692   border-color: #ddd;
5693 }
5694 .panel-default > .panel-heading + .panel-collapse > .panel-body {
5695   border-top-color: #ddd;
5696 }
5697 .panel-default > .panel-heading .badge {
5698   color: #f5f5f5;
5699   background-color: #333;
5700 }
5701 .panel-default > .panel-footer + .panel-collapse > .panel-body {
5702   border-bottom-color: #ddd;
5703 }
5704 .panel-primary {
5705   border-color: #337ab7;
5706 }
5707 .panel-primary > .panel-heading {
5708   color: #fff;
5709   background-color: #337ab7;
5710   border-color: #337ab7;
5711 }
5712 .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5713   border-top-color: #337ab7;
5714 }
5715 .panel-primary > .panel-heading .badge {
5716   color: #337ab7;
5717   background-color: #fff;
5718 }
5719 .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5720   border-bottom-color: #337ab7;
5721 }
5722 .panel-success {
5723   border-color: #d6e9c6;
5724 }
5725 .panel-success > .panel-heading {
5726   color: #3c763d;
5727   background-color: #dff0d8;
5728   border-color: #d6e9c6;
5729 }
5730 .panel-success > .panel-heading + .panel-collapse > .panel-body {
5731   border-top-color: #d6e9c6;
5732 }
5733 .panel-success > .panel-heading .badge {
5734   color: #dff0d8;
5735   background-color: #3c763d;
5736 }
5737 .panel-success > .panel-footer + .panel-collapse > .panel-body {
5738   border-bottom-color: #d6e9c6;
5739 }
5740 .panel-info {
5741   border-color: #bce8f1;
5742 }
5743 .panel-info > .panel-heading {
5744   color: #31708f;
5745   background-color: #d9edf7;
5746   border-color: #bce8f1;
5747 }
5748 .panel-info > .panel-heading + .panel-collapse > .panel-body {
5749   border-top-color: #bce8f1;
5750 }
5751 .panel-info > .panel-heading .badge {
5752   color: #d9edf7;
5753   background-color: #31708f;
5754 }
5755 .panel-info > .panel-footer + .panel-collapse > .panel-body {
5756   border-bottom-color: #bce8f1;
5757 }
5758 .panel-warning {
5759   border-color: #faebcc;
5760 }
5761 .panel-warning > .panel-heading {
5762   color: #8a6d3b;
5763   background-color: #fcf8e3;
5764   border-color: #faebcc;
5765 }
5766 .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5767   border-top-color: #faebcc;
5768 }
5769 .panel-warning > .panel-heading .badge {
5770   color: #fcf8e3;
5771   background-color: #8a6d3b;
5772 }
5773 .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5774   border-bottom-color: #faebcc;
5775 }
5776 .panel-danger {
5777   border-color: #ebccd1;
5778 }
5779 .panel-danger > .panel-heading {
5780   color: #a94442;
5781   background-color: #f2dede;
5782   border-color: #ebccd1;
5783 }
5784 .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5785   border-top-color: #ebccd1;
5786 }
5787 .panel-danger > .panel-heading .badge {
5788   color: #f2dede;
5789   background-color: #a94442;
5790 }
5791 .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5792   border-bottom-color: #ebccd1;
5793 }
5794 .embed-responsive {
5795   position: relative;
5796   display: block;
5797   height: 0;
5798   padding: 0;
5799   overflow: hidden;
5800 }
5801 .embed-responsive .embed-responsive-item,
5802 .embed-responsive iframe,
5803 .embed-responsive embed,
5804 .embed-responsive object,
5805 .embed-responsive video {
5806   position: absolute;
5807   top: 0;
5808   bottom: 0;
5809   left: 0;
5810   width: 100%;
5811   height: 100%;
5812   border: 0;
5813 }
5814 .embed-responsive-16by9 {
5815   padding-bottom: 56.25%;
5816 }
5817 .embed-responsive-4by3 {
5818   padding-bottom: 75%;
5819 }
5820 .well {
5821   min-height: 20px;
5822   padding: 19px;
5823   margin-bottom: 20px;
5824   background-color: #f5f5f5;
5825   border: 1px solid #e3e3e3;
5826   border-radius: 4px;
5827   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5828           box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5829 }
5830 .well blockquote {
5831   border-color: #ddd;
5832   border-color: rgba(0, 0, 0, .15);
5833 }
5834 .well-lg {
5835   padding: 24px;
5836   border-radius: 6px;
5837 }
5838 .well-sm {
5839   padding: 9px;
5840   border-radius: 3px;
5841 }
5842 .close {
5843   float: right;
5844   font-size: 21px;
5845   font-weight: bold;
5846   line-height: 1;
5847   color: #000;
5848   text-shadow: 0 1px 0 #fff;
5849   filter: alpha(opacity=20);
5850   opacity: .2;
5851 }
5852 .close:hover,
5853 .close:focus {
5854   color: #000;
5855   text-decoration: none;
5856   cursor: pointer;
5857   filter: alpha(opacity=50);
5858   opacity: .5;
5859 }
5860 button.close {
5861   -webkit-appearance: none;
5862   padding: 0;
5863   cursor: pointer;
5864   background: transparent;
5865   border: 0;
5866 }
5867 .modal-open {
5868   overflow: hidden;
5869 }
5870 .modal {
5871   position: fixed;
5872   top: 0;
5873   right: 0;
5874   bottom: 0;
5875   left: 0;
5876   z-index: 1050;
5877   display: none;
5878   overflow: hidden;
5879   -webkit-overflow-scrolling: touch;
5880   outline: 0;
5881 }
5882 .modal.fade .modal-dialog {
5883   -webkit-transition: -webkit-transform .3s ease-out;
5884        -o-transition:      -o-transform .3s ease-out;
5885           transition:         transform .3s ease-out;
5886   -webkit-transform: translate(0, -25%);
5887       -ms-transform: translate(0, -25%);
5888        -o-transform: translate(0, -25%);
5889           transform: translate(0, -25%);
5890 }
5891 .modal.in .modal-dialog {
5892   -webkit-transform: translate(0, 0);
5893       -ms-transform: translate(0, 0);
5894        -o-transform: translate(0, 0);
5895           transform: translate(0, 0);
5896 }
5897 .modal-open .modal {
5898   overflow-x: hidden;
5899   overflow-y: auto;
5900 }
5901 .modal-dialog {
5902   position: relative;
5903   width: auto;
5904   margin: 10px;
5905 }
5906 .modal-content {
5907   position: relative;
5908   background-color: #fff;
5909   -webkit-background-clip: padding-box;
5910           background-clip: padding-box;
5911   border: 1px solid #999;
5912   border: 1px solid rgba(0, 0, 0, .2);
5913   border-radius: 6px;
5914   outline: 0;
5915   -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5916           box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5917 }
5918 .modal-backdrop {
5919   position: fixed;
5920   top: 0;
5921   right: 0;
5922   bottom: 0;
5923   left: 0;
5924   z-index: 1040;
5925   background-color: #000;
5926 }
5927 .modal-backdrop.fade {
5928   filter: alpha(opacity=0);
5929   opacity: 0;
5930 }
5931 .modal-backdrop.in {
5932   filter: alpha(opacity=50);
5933   opacity: .5;
5934 }
5935 .modal-header {
5936   padding: 15px;
5937   border-bottom: 1px solid #e5e5e5;
5938 }
5939 .modal-header .close {
5940   margin-top: -2px;
5941 }
5942 .modal-title {
5943   margin: 0;
5944   line-height: 1.42857143;
5945 }
5946 .modal-body {
5947   position: relative;
5948   padding: 15px;
5949 }
5950 .modal-footer {
5951   padding: 15px;
5952   text-align: right;
5953   border-top: 1px solid #e5e5e5;
5954 }
5955 .modal-footer .btn + .btn {
5956   margin-bottom: 0;
5957   margin-left: 5px;
5958 }
5959 .modal-footer .btn-group .btn + .btn {
5960   margin-left: -1px;
5961 }
5962 .modal-footer .btn-block + .btn-block {
5963   margin-left: 0;
5964 }
5965 .modal-scrollbar-measure {
5966   position: absolute;
5967   top: -9999px;
5968   width: 50px;
5969   height: 50px;
5970   overflow: scroll;
5971 }
5972 @media (min-width: 768px) {
5973   .modal-dialog {
5974     width: 600px;
5975     margin: 30px auto;
5976   }
5977   .modal-content {
5978     -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5979             box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5980   }
5981   .modal-sm {
5982     width: 300px;
5983   }
5984 }
5985 @media (min-width: 992px) {
5986   .modal-lg {
5987     width: 900px;
5988   }
5989 }
5990 .tooltip {
5991   position: absolute;
5992   z-index: 1070;
5993   display: block;
5994   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5995   font-size: 12px;
5996   font-style: normal;
5997   font-weight: normal;
5998   line-height: 1.42857143;
5999   text-align: left;
6000   text-align: start;
6001   text-decoration: none;
6002   text-shadow: none;
6003   text-transform: none;
6004   letter-spacing: normal;
6005   word-break: normal;
6006   word-spacing: normal;
6007   word-wrap: normal;
6008   white-space: normal;
6009   filter: alpha(opacity=0);
6010   opacity: 0;
6011 
6012   line-break: auto;
6013 }
6014 .tooltip.in {
6015   filter: alpha(opacity=90);
6016   opacity: .9;
6017 }
6018 .tooltip.top {
6019   padding: 5px 0;
6020   margin-top: -3px;
6021 }
6022 .tooltip.right {
6023   padding: 0 5px;
6024   margin-left: 3px;
6025 }
6026 .tooltip.bottom {
6027   padding: 5px 0;
6028   margin-top: 3px;
6029 }
6030 .tooltip.left {
6031   padding: 0 5px;
6032   margin-left: -3px;
6033 }
6034 .tooltip-inner {
6035   max-width: 200px;
6036   padding: 3px 8px;
6037   color: #fff;
6038   text-align: center;
6039   background-color: #000;
6040   border-radius: 4px;
6041 }
6042 .tooltip-arrow {
6043   position: absolute;
6044   width: 0;
6045   height: 0;
6046   border-color: transparent;
6047   border-style: solid;
6048 }
6049 .tooltip.top .tooltip-arrow {
6050   bottom: 0;
6051   left: 50%;
6052   margin-left: -5px;
6053   border-width: 5px 5px 0;
6054   border-top-color: #000;
6055 }
6056 .tooltip.top-left .tooltip-arrow {
6057   right: 5px;
6058   bottom: 0;
6059   margin-bottom: -5px;
6060   border-width: 5px 5px 0;
6061   border-top-color: #000;
6062 }
6063 .tooltip.top-right .tooltip-arrow {
6064   bottom: 0;
6065   left: 5px;
6066   margin-bottom: -5px;
6067   border-width: 5px 5px 0;
6068   border-top-color: #000;
6069 }
6070 .tooltip.right .tooltip-arrow {
6071   top: 50%;
6072   left: 0;
6073   margin-top: -5px;
6074   border-width: 5px 5px 5px 0;
6075   border-right-color: #000;
6076 }
6077 .tooltip.left .tooltip-arrow {
6078   top: 50%;
6079   right: 0;
6080   margin-top: -5px;
6081   border-width: 5px 0 5px 5px;
6082   border-left-color: #000;
6083 }
6084 .tooltip.bottom .tooltip-arrow {
6085   top: 0;
6086   left: 50%;
6087   margin-left: -5px;
6088   border-width: 0 5px 5px;
6089   border-bottom-color: #000;
6090 }
6091 .tooltip.bottom-left .tooltip-arrow {
6092   top: 0;
6093   right: 5px;
6094   margin-top: -5px;
6095   border-width: 0 5px 5px;
6096   border-bottom-color: #000;
6097 }
6098 .tooltip.bottom-right .tooltip-arrow {
6099   top: 0;
6100   left: 5px;
6101   margin-top: -5px;
6102   border-width: 0 5px 5px;
6103   border-bottom-color: #000;
6104 }
6105 .popover {
6106   position: absolute;
6107   top: 0;
6108   left: 0;
6109   z-index: 1060;
6110   display: none;
6111   max-width: 276px;
6112   padding: 1px;
6113   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6114   font-size: 14px;
6115   font-style: normal;
6116   font-weight: normal;
6117   line-height: 1.42857143;
6118   text-align: left;
6119   text-align: start;
6120   text-decoration: none;
6121   text-shadow: none;
6122   text-transform: none;
6123   letter-spacing: normal;
6124   word-break: normal;
6125   word-spacing: normal;
6126   word-wrap: normal;
6127   white-space: normal;
6128   background-color: #fff;
6129   -webkit-background-clip: padding-box;
6130           background-clip: padding-box;
6131   border: 1px solid #ccc;
6132   border: 1px solid rgba(0, 0, 0, .2);
6133   border-radius: 6px;
6134   -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
6135           box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
6136 
6137   line-break: auto;
6138 }
6139 .popover.top {
6140   margin-top: -10px;
6141 }
6142 .popover.right {
6143   margin-left: 10px;
6144 }
6145 .popover.bottom {
6146   margin-top: 10px;
6147 }
6148 .popover.left {
6149   margin-left: -10px;
6150 }
6151 .popover-title {
6152   padding: 8px 14px;
6153   margin: 0;
6154   font-size: 14px;
6155   background-color: #f7f7f7;
6156   border-bottom: 1px solid #ebebeb;
6157   border-radius: 5px 5px 0 0;
6158 }
6159 .popover-content {
6160   padding: 9px 14px;
6161 }
6162 .popover > .arrow,
6163 .popover > .arrow:after {
6164   position: absolute;
6165   display: block;
6166   width: 0;
6167   height: 0;
6168   border-color: transparent;
6169   border-style: solid;
6170 }
6171 .popover > .arrow {
6172   border-width: 11px;
6173 }
6174 .popover > .arrow:after {
6175   content: "";
6176   border-width: 10px;
6177 }
6178 .popover.top > .arrow {
6179   bottom: -11px;
6180   left: 50%;
6181   margin-left: -11px;
6182   border-top-color: #999;
6183   border-top-color: rgba(0, 0, 0, .25);
6184   border-bottom-width: 0;
6185 }
6186 .popover.top > .arrow:after {
6187   bottom: 1px;
6188   margin-left: -10px;
6189   content: " ";
6190   border-top-color: #fff;
6191   border-bottom-width: 0;
6192 }
6193 .popover.right > .arrow {
6194   top: 50%;
6195   left: -11px;
6196   margin-top: -11px;
6197   border-right-color: #999;
6198   border-right-color: rgba(0, 0, 0, .25);
6199   border-left-width: 0;
6200 }
6201 .popover.right > .arrow:after {
6202   bottom: -10px;
6203   left: 1px;
6204   content: " ";
6205   border-right-color: #fff;
6206   border-left-width: 0;
6207 }
6208 .popover.bottom > .arrow {
6209   top: -11px;
6210   left: 50%;
6211   margin-left: -11px;
6212   border-top-width: 0;
6213   border-bottom-color: #999;
6214   border-bottom-color: rgba(0, 0, 0, .25);
6215 }
6216 .popover.bottom > .arrow:after {
6217   top: 1px;
6218   margin-left: -10px;
6219   content: " ";
6220   border-top-width: 0;
6221   border-bottom-color: #fff;
6222 }
6223 .popover.left > .arrow {
6224   top: 50%;
6225   right: -11px;
6226   margin-top: -11px;
6227   border-right-width: 0;
6228   border-left-color: #999;
6229   border-left-color: rgba(0, 0, 0, .25);
6230 }
6231 .popover.left > .arrow:after {
6232   right: 1px;
6233   bottom: -10px;
6234   content: " ";
6235   border-right-width: 0;
6236   border-left-color: #fff;
6237 }
6238 .carousel {
6239   position: relative;
6240 }
6241 .carousel-inner {
6242   position: relative;
6243   width: 100%;
6244   overflow: hidden;
6245 }
6246 .carousel-inner > .item {
6247   position: relative;
6248   display: none;
6249   -webkit-transition: .6s ease-in-out left;
6250        -o-transition: .6s ease-in-out left;
6251           transition: .6s ease-in-out left;
6252 }
6253 .carousel-inner > .item > img,
6254 .carousel-inner > .item > a > img {
6255   line-height: 1;
6256 }
6257 @media all and (transform-3d), (-webkit-transform-3d) {
6258   .carousel-inner > .item {
6259     -webkit-transition: -webkit-transform .6s ease-in-out;
6260          -o-transition:      -o-transform .6s ease-in-out;
6261             transition:         transform .6s ease-in-out;
6262 
6263     -webkit-backface-visibility: hidden;
6264             backface-visibility: hidden;
6265     -webkit-perspective: 1000px;
6266             perspective: 1000px;
6267   }
6268   .carousel-inner > .item.next,
6269   .carousel-inner > .item.active.right {
6270     left: 0;
6271     -webkit-transform: translate3d(100%, 0, 0);
6272             transform: translate3d(100%, 0, 0);
6273   }
6274   .carousel-inner > .item.prev,
6275   .carousel-inner > .item.active.left {
6276     left: 0;
6277     -webkit-transform: translate3d(-100%, 0, 0);
6278             transform: translate3d(-100%, 0, 0);
6279   }
6280   .carousel-inner > .item.next.left,
6281   .carousel-inner > .item.prev.right,
6282   .carousel-inner > .item.active {
6283     left: 0;
6284     -webkit-transform: translate3d(0, 0, 0);
6285             transform: translate3d(0, 0, 0);
6286   }
6287 }
6288 .carousel-inner > .active,
6289 .carousel-inner > .next,
6290 .carousel-inner > .prev {
6291   display: block;
6292 }
6293 .carousel-inner > .active {
6294   left: 0;
6295 }
6296 .carousel-inner > .next,
6297 .carousel-inner > .prev {
6298   position: absolute;
6299   top: 0;
6300   width: 100%;
6301 }
6302 .carousel-inner > .next {
6303   left: 100%;
6304 }
6305 .carousel-inner > .prev {
6306   left: -100%;
6307 }
6308 .carousel-inner > .next.left,
6309 .carousel-inner > .prev.right {
6310   left: 0;
6311 }
6312 .carousel-inner > .active.left {
6313   left: -100%;
6314 }
6315 .carousel-inner > .active.right {
6316   left: 100%;
6317 }
6318 .carousel-control {
6319   position: absolute;
6320   top: 0;
6321   bottom: 0;
6322   left: 0;
6323   width: 15%;
6324   font-size: 20px;
6325   color: #fff;
6326   text-align: center;
6327   text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
6328   background-color: rgba(0, 0, 0, 0);
6329   filter: alpha(opacity=50);
6330   opacity: .5;
6331 }
6332 .carousel-control.left {
6333   background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
6334   background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
6335   background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
6336   background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
6337   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6338   background-repeat: repeat-x;
6339 }
6340 .carousel-control.right {
6341   right: 0;
6342   left: auto;
6343   background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
6344   background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
6345   background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
6346   background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
6347   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6348   background-repeat: repeat-x;
6349 }
6350 .carousel-control:hover,
6351 .carousel-control:focus {
6352   color: #fff;
6353   text-decoration: none;
6354   filter: alpha(opacity=90);
6355   outline: 0;
6356   opacity: .9;
6357 }
6358 .carousel-control .icon-prev,
6359 .carousel-control .icon-next,
6360 .carousel-control .glyphicon-chevron-left,
6361 .carousel-control .glyphicon-chevron-right {
6362   position: absolute;
6363   top: 50%;
6364   z-index: 5;
6365   display: inline-block;
6366   margin-top: -10px;
6367 }
6368 .carousel-control .icon-prev,
6369 .carousel-control .glyphicon-chevron-left {
6370   left: 50%;
6371   margin-left: -10px;
6372 }
6373 .carousel-control .icon-next,
6374 .carousel-control .glyphicon-chevron-right {
6375   right: 50%;
6376   margin-right: -10px;
6377 }
6378 .carousel-control .icon-prev,
6379 .carousel-control .icon-next {
6380   width: 20px;
6381   height: 20px;
6382   font-family: serif;
6383   line-height: 1;
6384 }
6385 .carousel-control .icon-prev:before {
6386   content: '\2039';
6387 }
6388 .carousel-control .icon-next:before {
6389   content: '\203a';
6390 }
6391 .carousel-indicators {
6392   position: absolute;
6393   bottom: 10px;
6394   left: 50%;
6395   z-index: 15;
6396   width: 60%;
6397   padding-left: 0;
6398   margin-left: -30%;
6399   text-align: center;
6400   list-style: none;
6401 }
6402 .carousel-indicators li {
6403   display: inline-block;
6404   width: 10px;
6405   height: 10px;
6406   margin: 1px;
6407   text-indent: -999px;
6408   cursor: pointer;
6409   background-color: #000 \9;
6410   background-color: rgba(0, 0, 0, 0);
6411   border: 1px solid #fff;
6412   border-radius: 10px;
6413 }
6414 .carousel-indicators .active {
6415   width: 12px;
6416   height: 12px;
6417   margin: 0;
6418   background-color: #fff;
6419 }
6420 .carousel-caption {
6421   position: absolute;
6422   right: 15%;
6423   bottom: 20px;
6424   left: 15%;
6425   z-index: 10;
6426   padding-top: 20px;
6427   padding-bottom: 20px;
6428   color: #fff;
6429   text-align: center;
6430   text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
6431 }
6432 .carousel-caption .btn {
6433   text-shadow: none;
6434 }
6435 @media screen and (min-width: 768px) {
6436   .carousel-control .glyphicon-chevron-left,
6437   .carousel-control .glyphicon-chevron-right,
6438   .carousel-control .icon-prev,
6439   .carousel-control .icon-next {
6440     width: 30px;
6441     height: 30px;
6442     margin-top: -10px;
6443     font-size: 30px;
6444   }
6445   .carousel-control .glyphicon-chevron-left,
6446   .carousel-control .icon-prev {
6447     margin-left: -10px;
6448   }
6449   .carousel-control .glyphicon-chevron-right,
6450   .carousel-control .icon-next {
6451     margin-right: -10px;
6452   }
6453   .carousel-caption {
6454     right: 20%;
6455     left: 20%;
6456     padding-bottom: 30px;
6457   }
6458   .carousel-indicators {
6459     bottom: 20px;
6460   }
6461 }
6462 .clearfix:before,
6463 .clearfix:after,
6464 .dl-horizontal dd:before,
6465 .dl-horizontal dd:after,
6466 .container:before,
6467 .container:after,
6468 .container-fluid:before,
6469 .container-fluid:after,
6470 .row:before,
6471 .row:after,
6472 .form-horizontal .form-group:before,
6473 .form-horizontal .form-group:after,
6474 .btn-toolbar:before,
6475 .btn-toolbar:after,
6476 .btn-group-vertical > .btn-group:before,
6477 .btn-group-vertical > .btn-group:after,
6478 .nav:before,
6479 .nav:after,
6480 .navbar:before,
6481 .navbar:after,
6482 .navbar-header:before,
6483 .navbar-header:after,
6484 .navbar-collapse:before,
6485 .navbar-collapse:after,
6486 .pager:before,
6487 .pager:after,
6488 .panel-body:before,
6489 .panel-body:after,
6490 .modal-header:before,
6491 .modal-header:after,
6492 .modal-footer:before,
6493 .modal-footer:after {
6494   display: table;
6495   content: " ";
6496 }
6497 .clearfix:after,
6498 .dl-horizontal dd:after,
6499 .container:after,
6500 .container-fluid:after,
6501 .row:after,
6502 .form-horizontal .form-group:after,
6503 .btn-toolbar:after,
6504 .btn-group-vertical > .btn-group:after,
6505 .nav:after,
6506 .navbar:after,
6507 .navbar-header:after,
6508 .navbar-collapse:after,
6509 .pager:after,
6510 .panel-body:after,
6511 .modal-header:after,
6512 .modal-footer:after {
6513   clear: both;
6514 }
6515 .center-block {
6516   display: block;
6517   margin-right: auto;
6518   margin-left: auto;
6519 }
6520 .pull-right {
6521   float: right !important;
6522 }
6523 .pull-left {
6524   float: left !important;
6525 }
6526 .hide {
6527   display: none !important;
6528 }
6529 .show {
6530   display: block !important;
6531 }
6532 .invisible {
6533   visibility: hidden;
6534 }
6535 .text-hide {
6536   font: 0/0 a;
6537   color: transparent;
6538   text-shadow: none;
6539   background-color: transparent;
6540   border: 0;
6541 }
6542 .hidden {
6543   display: none !important;
6544 }
6545 .affix {
6546   position: fixed;
6547 }
6548 @-ms-viewport {
6549   width: device-width;
6550 }
6551 .visible-xs,
6552 .visible-sm,
6553 .visible-md,
6554 .visible-lg {
6555   display: none !important;
6556 }
6557 .visible-xs-block,
6558 .visible-xs-inline,
6559 .visible-xs-inline-block,
6560 .visible-sm-block,
6561 .visible-sm-inline,
6562 .visible-sm-inline-block,
6563 .visible-md-block,
6564 .visible-md-inline,
6565 .visible-md-inline-block,
6566 .visible-lg-block,
6567 .visible-lg-inline,
6568 .visible-lg-inline-block {
6569   display: none !important;
6570 }
6571 @media (max-width: 767px) {
6572   .visible-xs {
6573     display: block !important;
6574   }
6575   table.visible-xs {
6576     display: table !important;
6577   }
6578   tr.visible-xs {
6579     display: table-row !important;
6580   }
6581   th.visible-xs,
6582   td.visible-xs {
6583     display: table-cell !important;
6584   }
6585 }
6586 @media (max-width: 767px) {
6587   .visible-xs-block {
6588     display: block !important;
6589   }
6590 }
6591 @media (max-width: 767px) {
6592   .visible-xs-inline {
6593     display: inline !important;
6594   }
6595 }
6596 @media (max-width: 767px) {
6597   .visible-xs-inline-block {
6598     display: inline-block !important;
6599   }
6600 }
6601 @media (min-width: 768px) and (max-width: 991px) {
6602   .visible-sm {
6603     display: block !important;
6604   }
6605   table.visible-sm {
6606     display: table !important;
6607   }
6608   tr.visible-sm {
6609     display: table-row !important;
6610   }
6611   th.visible-sm,
6612   td.visible-sm {
6613     display: table-cell !important;
6614   }
6615 }
6616 @media (min-width: 768px) and (max-width: 991px) {
6617   .visible-sm-block {
6618     display: block !important;
6619   }
6620 }
6621 @media (min-width: 768px) and (max-width: 991px) {
6622   .visible-sm-inline {
6623     display: inline !important;
6624   }
6625 }
6626 @media (min-width: 768px) and (max-width: 991px) {
6627   .visible-sm-inline-block {
6628     display: inline-block !important;
6629   }
6630 }
6631 @media (min-width: 992px) and (max-width: 1199px) {
6632   .visible-md {
6633     display: block !important;
6634   }
6635   table.visible-md {
6636     display: table !important;
6637   }
6638   tr.visible-md {
6639     display: table-row !important;
6640   }
6641   th.visible-md,
6642   td.visible-md {
6643     display: table-cell !important;
6644   }
6645 }
6646 @media (min-width: 992px) and (max-width: 1199px) {
6647   .visible-md-block {
6648     display: block !important;
6649   }
6650 }
6651 @media (min-width: 992px) and (max-width: 1199px) {
6652   .visible-md-inline {
6653     display: inline !important;
6654   }
6655 }
6656 @media (min-width: 992px) and (max-width: 1199px) {
6657   .visible-md-inline-block {
6658     display: inline-block !important;
6659   }
6660 }
6661 @media (min-width: 1200px) {
6662   .visible-lg {
6663     display: block !important;
6664   }
6665   table.visible-lg {
6666     display: table !important;
6667   }
6668   tr.visible-lg {
6669     display: table-row !important;
6670   }
6671   th.visible-lg,
6672   td.visible-lg {
6673     display: table-cell !important;
6674   }
6675 }
6676 @media (min-width: 1200px) {
6677   .visible-lg-block {
6678     display: block !important;
6679   }
6680 }
6681 @media (min-width: 1200px) {
6682   .visible-lg-inline {
6683     display: inline !important;
6684   }
6685 }
6686 @media (min-width: 1200px) {
6687   .visible-lg-inline-block {
6688     display: inline-block !important;
6689   }
6690 }
6691 @media (max-width: 767px) {
6692   .hidden-xs {
6693     display: none !important;
6694   }
6695 }
6696 @media (min-width: 768px) and (max-width: 991px) {
6697   .hidden-sm {
6698     display: none !important;
6699   }
6700 }
6701 @media (min-width: 992px) and (max-width: 1199px) {
6702   .hidden-md {
6703     display: none !important;
6704   }
6705 }
6706 @media (min-width: 1200px) {
6707   .hidden-lg {
6708     display: none !important;
6709   }
6710 }
6711 .visible-print {
6712   display: none !important;
6713 }
6714 @media print {
6715   .visible-print {
6716     display: block !important;
6717   }
6718   table.visible-print {
6719     display: table !important;
6720   }
6721   tr.visible-print {
6722     display: table-row !important;
6723   }
6724   th.visible-print,
6725   td.visible-print {
6726     display: table-cell !important;
6727   }
6728 }
6729 .visible-print-block {
6730   display: none !important;
6731 }
6732 @media print {
6733   .visible-print-block {
6734     display: block !important;
6735   }
6736 }
6737 .visible-print-inline {
6738   display: none !important;
6739 }
6740 @media print {
6741   .visible-print-inline {
6742     display: inline !important;
6743   }
6744 }
6745 .visible-print-inline-block {
6746   display: none !important;
6747 }
6748 @media print {
6749   .visible-print-inline-block {
6750     display: inline-block !important;
6751   }
6752 }
6753 @media print {
6754   .hidden-print {
6755     display: none !important;
6756   }
6757 }
6758 /*# sourceMappingURL=bootstrap.css.map */
*bootstrap.css

 

   1 /*!
   2 
   3     *bootstrap.js
   4     *
   5  * Bootstrap v3.3.7 (http://getbootstrap.com)
   6  * Copyright 2011-2016 Twitter, Inc.
   7  * Licensed under the MIT license
   8  */
   9 
  10 if (typeof jQuery === 'undefined') {
  11   throw new Error('Bootstrap\'s JavaScript requires jQuery')
  12 }
  13 
  14 +function ($) {
  15   'use strict';
  16   var version = $.fn.jquery.split(' ')[0].split('.')
  17   if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
  18     throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
  19   }
  20 }(jQuery);
  21 
  22 /* ========================================================================
  23  * Bootstrap: transition.js v3.3.7
  24  * http://getbootstrap.com/javascript/#transitions
  25  * ========================================================================
  26  * Copyright 2011-2016 Twitter, Inc.
  27  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  28  * ======================================================================== */
  29 
  30 
  31 +function ($) {
  32   'use strict';
  33 
  34   // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
  35   // ============================================================
  36 
  37   function transitionEnd() {
  38     var el = document.createElement('bootstrap')
  39 
  40     var transEndEventNames = {
  41       WebkitTransition : 'webkitTransitionEnd',
  42       MozTransition    : 'transitionend',
  43       OTransition      : 'oTransitionEnd otransitionend',
  44       transition       : 'transitionend'
  45     }
  46 
  47     for (var name in transEndEventNames) {
  48       if (el.style[name] !== undefined) {
  49         return { end: transEndEventNames[name] }
  50       }
  51     }
  52 
  53     return false // explicit for ie8 (  ._.)
  54   }
  55 
  56   // http://blog.alexmaccaw.com/css-transitions
  57   $.fn.emulateTransitionEnd = function (duration) {
  58     var called = false
  59     var $el = this
  60     $(this).one('bsTransitionEnd', function () { called = true })
  61     var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
  62     setTimeout(callback, duration)
  63     return this
  64   }
  65 
  66   $(function () {
  67     $.support.transition = transitionEnd()
  68 
  69     if (!$.support.transition) return
  70 
  71     $.event.special.bsTransitionEnd = {
  72       bindType: $.support.transition.end,
  73       delegateType: $.support.transition.end,
  74       handle: function (e) {
  75         if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
  76       }
  77     }
  78   })
  79 
  80 }(jQuery);
  81 
  82 /* ========================================================================
  83  * Bootstrap: alert.js v3.3.7
  84  * http://getbootstrap.com/javascript/#alerts
  85  * ========================================================================
  86  * Copyright 2011-2016 Twitter, Inc.
  87  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  88  * ======================================================================== */
  89 
  90 
  91 +function ($) {
  92   'use strict';
  93 
  94   // ALERT CLASS DEFINITION
  95   // ======================
  96 
  97   var dismiss = '[data-dismiss="alert"]'
  98   var Alert   = function (el) {
  99     $(el).on('click', dismiss, this.close)
 100   }
 101 
 102   Alert.VERSION = '3.3.7'
 103 
 104   Alert.TRANSITION_DURATION = 150
 105 
 106   Alert.prototype.close = function (e) {
 107     var $this    = $(this)
 108     var selector = $this.attr('data-target')
 109 
 110     if (!selector) {
 111       selector = $this.attr('href')
 112       selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
 113     }
 114 
 115     var $parent = $(selector === '#' ? [] : selector)
 116 
 117     if (e) e.preventDefault()
 118 
 119     if (!$parent.length) {
 120       $parent = $this.closest('.alert')
 121     }
 122 
 123     $parent.trigger(e = $.Event('close.bs.alert'))
 124 
 125     if (e.isDefaultPrevented()) return
 126 
 127     $parent.removeClass('in')
 128 
 129     function removeElement() {
 130       // detach from parent, fire event then clean up data
 131       $parent.detach().trigger('closed.bs.alert').remove()
 132     }
 133 
 134     $.support.transition && $parent.hasClass('fade') ?
 135       $parent
 136         .one('bsTransitionEnd', removeElement)
 137         .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
 138       removeElement()
 139   }
 140 
 141 
 142   // ALERT PLUGIN DEFINITION
 143   // =======================
 144 
 145   function Plugin(option) {
 146     return this.each(function () {
 147       var $this = $(this)
 148       var data  = $this.data('bs.alert')
 149 
 150       if (!data) $this.data('bs.alert', (data = new Alert(this)))
 151       if (typeof option == 'string') data[option].call($this)
 152     })
 153   }
 154 
 155   var old = $.fn.alert
 156 
 157   $.fn.alert             = Plugin
 158   $.fn.alert.Constructor = Alert
 159 
 160 
 161   // ALERT NO CONFLICT
 162   // =================
 163 
 164   $.fn.alert.noConflict = function () {
 165     $.fn.alert = old
 166     return this
 167   }
 168 
 169 
 170   // ALERT DATA-API
 171   // ==============
 172 
 173   $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
 174 
 175 }(jQuery);
 176 
 177 /* ========================================================================
 178  * Bootstrap: button.js v3.3.7
 179  * http://getbootstrap.com/javascript/#buttons
 180  * ========================================================================
 181  * Copyright 2011-2016 Twitter, Inc.
 182  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 183  * ======================================================================== */
 184 
 185 
 186 +function ($) {
 187   'use strict';
 188 
 189   // BUTTON PUBLIC CLASS DEFINITION
 190   // ==============================
 191 
 192   var Button = function (element, options) {
 193     this.$element  = $(element)
 194     this.options   = $.extend({}, Button.DEFAULTS, options)
 195     this.isLoading = false
 196   }
 197 
 198   Button.VERSION  = '3.3.7'
 199 
 200   Button.DEFAULTS = {
 201     loadingText: 'loading...'
 202   }
 203 
 204   Button.prototype.setState = function (state) {
 205     var d    = 'disabled'
 206     var $el  = this.$element
 207     var val  = $el.is('input') ? 'val' : 'html'
 208     var data = $el.data()
 209 
 210     state += 'Text'
 211 
 212     if (data.resetText == null) $el.data('resetText', $el[val]())
 213 
 214     // push to event loop to allow forms to submit
 215     setTimeout($.proxy(function () {
 216       $el[val](data[state] == null ? this.options[state] : data[state])
 217 
 218       if (state == 'loadingText') {
 219         this.isLoading = true
 220         $el.addClass(d).attr(d, d).prop(d, true)
 221       } else if (this.isLoading) {
 222         this.isLoading = false
 223         $el.removeClass(d).removeAttr(d).prop(d, false)
 224       }
 225     }, this), 0)
 226   }
 227 
 228   Button.prototype.toggle = function () {
 229     var changed = true
 230     var $parent = this.$element.closest('[data-toggle="buttons"]')
 231 
 232     if ($parent.length) {
 233       var $input = this.$element.find('input')
 234       if ($input.prop('type') == 'radio') {
 235         if ($input.prop('checked')) changed = false
 236         $parent.find('.active').removeClass('active')
 237         this.$element.addClass('active')
 238       } else if ($input.prop('type') == 'checkbox') {
 239         if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
 240         this.$element.toggleClass('active')
 241       }
 242       $input.prop('checked', this.$element.hasClass('active'))
 243       if (changed) $input.trigger('change')
 244     } else {
 245       this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
 246       this.$element.toggleClass('active')
 247     }
 248   }
 249 
 250 
 251   // BUTTON PLUGIN DEFINITION
 252   // ========================
 253 
 254   function Plugin(option) {
 255     return this.each(function () {
 256       var $this   = $(this)
 257       var data    = $this.data('bs.button')
 258       var options = typeof option == 'object' && option
 259 
 260       if (!data) $this.data('bs.button', (data = new Button(this, options)))
 261 
 262       if (option == 'toggle') data.toggle()
 263       else if (option) data.setState(option)
 264     })
 265   }
 266 
 267   var old = $.fn.button
 268 
 269   $.fn.button             = Plugin
 270   $.fn.button.Constructor = Button
 271 
 272 
 273   // BUTTON NO CONFLICT
 274   // ==================
 275 
 276   $.fn.button.noConflict = function () {
 277     $.fn.button = old
 278     return this
 279   }
 280 
 281 
 282   // BUTTON DATA-API
 283   // ===============
 284 
 285   $(document)
 286     .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
 287       var $btn = $(e.target).closest('.btn')
 288       Plugin.call($btn, 'toggle')
 289       if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
 290         // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
 291         e.preventDefault()
 292         // The target component still receive the focus
 293         if ($btn.is('input,button')) $btn.trigger('focus')
 294         else $btn.find('input:visible,button:visible').first().trigger('focus')
 295       }
 296     })
 297     .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
 298       $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
 299     })
 300 
 301 }(jQuery);
 302 
 303 /* ========================================================================
 304  * Bootstrap: carousel.js v3.3.7
 305  * http://getbootstrap.com/javascript/#carousel
 306  * ========================================================================
 307  * Copyright 2011-2016 Twitter, Inc.
 308  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 309  * ======================================================================== */
 310 
 311 
 312 +function ($) {
 313   'use strict';
 314 
 315   // CAROUSEL CLASS DEFINITION
 316   // =========================
 317 
 318   var Carousel = function (element, options) {
 319     this.$element    = $(element)
 320     this.$indicators = this.$element.find('.carousel-indicators')
 321     this.options     = options
 322     this.paused      = null
 323     this.sliding     = null
 324     this.interval    = null
 325     this.$active     = null
 326     this.$items      = null
 327 
 328     this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
 329 
 330     this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
 331       .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
 332       .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
 333   }
 334 
 335   Carousel.VERSION  = '3.3.7'
 336 
 337   Carousel.TRANSITION_DURATION = 600
 338 
 339   Carousel.DEFAULTS = {
 340     interval: 5000,
 341     pause: 'hover',
 342     wrap: true,
 343     keyboard: true
 344   }
 345 
 346   Carousel.prototype.keydown = function (e) {
 347     if (/input|textarea/i.test(e.target.tagName)) return
 348     switch (e.which) {
 349       case 37: this.prev(); break
 350       case 39: this.next(); break
 351       default: return
 352     }
 353 
 354     e.preventDefault()
 355   }
 356 
 357   Carousel.prototype.cycle = function (e) {
 358     e || (this.paused = false)
 359 
 360     this.interval && clearInterval(this.interval)
 361 
 362     this.options.interval
 363       && !this.paused
 364       && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
 365 
 366     return this
 367   }
 368 
 369   Carousel.prototype.getItemIndex = function (item) {
 370     this.$items = item.parent().children('.item')
 371     return this.$items.index(item || this.$active)
 372   }
 373 
 374   Carousel.prototype.getItemForDirection = function (direction, active) {
 375     var activeIndex = this.getItemIndex(active)
 376     var willWrap = (direction == 'prev' && activeIndex === 0)
 377                 || (direction == 'next' && activeIndex == (this.$items.length - 1))
 378     if (willWrap && !this.options.wrap) return active
 379     var delta = direction == 'prev' ? -1 : 1
 380     var itemIndex = (activeIndex + delta) % this.$items.length
 381     return this.$items.eq(itemIndex)
 382   }
 383 
 384   Carousel.prototype.to = function (pos) {
 385     var that        = this
 386     var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
 387 
 388     if (pos > (this.$items.length - 1) || pos < 0) return
 389 
 390     if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
 391     if (activeIndex == pos) return this.pause().cycle()
 392 
 393     return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
 394   }
 395 
 396   Carousel.prototype.pause = function (e) {
 397     e || (this.paused = true)
 398 
 399     if (this.$element.find('.next, .prev').length && $.support.transition) {
 400       this.$element.trigger($.support.transition.end)
 401       this.cycle(true)
 402     }
 403 
 404     this.interval = clearInterval(this.interval)
 405 
 406     return this
 407   }
 408 
 409   Carousel.prototype.next = function () {
 410     if (this.sliding) return
 411     return this.slide('next')
 412   }
 413 
 414   Carousel.prototype.prev = function () {
 415     if (this.sliding) return
 416     return this.slide('prev')
 417   }
 418 
 419   Carousel.prototype.slide = function (type, next) {
 420     var $active   = this.$element.find('.item.active')
 421     var $next     = next || this.getItemForDirection(type, $active)
 422     var isCycling = this.interval
 423     var direction = type == 'next' ? 'left' : 'right'
 424     var that      = this
 425 
 426     if ($next.hasClass('active')) return (this.sliding = false)
 427 
 428     var relatedTarget = $next[0]
 429     var slideEvent = $.Event('slide.bs.carousel', {
 430       relatedTarget: relatedTarget,
 431       direction: direction
 432     })
 433     this.$element.trigger(slideEvent)
 434     if (slideEvent.isDefaultPrevented()) return
 435 
 436     this.sliding = true
 437 
 438     isCycling && this.pause()
 439 
 440     if (this.$indicators.length) {
 441       this.$indicators.find('.active').removeClass('active')
 442       var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
 443       $nextIndicator && $nextIndicator.addClass('active')
 444     }
 445 
 446     var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
 447     if ($.support.transition && this.$element.hasClass('slide')) {
 448       $next.addClass(type)
 449       $next[0].offsetWidth // force reflow
 450       $active.addClass(direction)
 451       $next.addClass(direction)
 452       $active
 453         .one('bsTransitionEnd', function () {
 454           $next.removeClass([type, direction].join(' ')).addClass('active')
 455           $active.removeClass(['active', direction].join(' '))
 456           that.sliding = false
 457           setTimeout(function () {
 458             that.$element.trigger(slidEvent)
 459           }, 0)
 460         })
 461         .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
 462     } else {
 463       $active.removeClass('active')
 464       $next.addClass('active')
 465       this.sliding = false
 466       this.$element.trigger(slidEvent)
 467     }
 468 
 469     isCycling && this.cycle()
 470 
 471     return this
 472   }
 473 
 474 
 475   // CAROUSEL PLUGIN DEFINITION
 476   // ==========================
 477 
 478   function Plugin(option) {
 479     return this.each(function () {
 480       var $this   = $(this)
 481       var data    = $this.data('bs.carousel')
 482       var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
 483       var action  = typeof option == 'string' ? option : options.slide
 484 
 485       if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
 486       if (typeof option == 'number') data.to(option)
 487       else if (action) data[action]()
 488       else if (options.interval) data.pause().cycle()
 489     })
 490   }
 491 
 492   var old = $.fn.carousel
 493 
 494   $.fn.carousel             = Plugin
 495   $.fn.carousel.Constructor = Carousel
 496 
 497 
 498   // CAROUSEL NO CONFLICT
 499   // ====================
 500 
 501   $.fn.carousel.noConflict = function () {
 502     $.fn.carousel = old
 503     return this
 504   }
 505 
 506 
 507   // CAROUSEL DATA-API
 508   // =================
 509 
 510   var clickHandler = function (e) {
 511     var href
 512     var $this   = $(this)
 513     var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
 514     if (!$target.hasClass('carousel')) return
 515     var options = $.extend({}, $target.data(), $this.data())
 516     var slideIndex = $this.attr('data-slide-to')
 517     if (slideIndex) options.interval = false
 518 
 519     Plugin.call($target, options)
 520 
 521     if (slideIndex) {
 522       $target.data('bs.carousel').to(slideIndex)
 523     }
 524 
 525     e.preventDefault()
 526   }
 527 
 528   $(document)
 529     .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
 530     .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
 531 
 532   $(window).on('load', function () {
 533     $('[data-ride="carousel"]').each(function () {
 534       var $carousel = $(this)
 535       Plugin.call($carousel, $carousel.data())
 536     })
 537   })
 538 
 539 }(jQuery);
 540 
 541 /* ========================================================================
 542  * Bootstrap: collapse.js v3.3.7
 543  * http://getbootstrap.com/javascript/#collapse
 544  * ========================================================================
 545  * Copyright 2011-2016 Twitter, Inc.
 546  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 547  * ======================================================================== */
 548 
 549 /* jshint latedef: false */
 550 
 551 +function ($) {
 552   'use strict';
 553 
 554   // COLLAPSE PUBLIC CLASS DEFINITION
 555   // ================================
 556 
 557   var Collapse = function (element, options) {
 558     this.$element      = $(element)
 559     this.options       = $.extend({}, Collapse.DEFAULTS, options)
 560     this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
 561                            '[data-toggle="collapse"][data-target="#' + element.id + '"]')
 562     this.transitioning = null
 563 
 564     if (this.options.parent) {
 565       this.$parent = this.getParent()
 566     } else {
 567       this.addAriaAndCollapsedClass(this.$element, this.$trigger)
 568     }
 569 
 570     if (this.options.toggle) this.toggle()
 571   }
 572 
 573   Collapse.VERSION  = '3.3.7'
 574 
 575   Collapse.TRANSITION_DURATION = 350
 576 
 577   Collapse.DEFAULTS = {
 578     toggle: true
 579   }
 580 
 581   Collapse.prototype.dimension = function () {
 582     var hasWidth = this.$element.hasClass('width')
 583     return hasWidth ? 'width' : 'height'
 584   }
 585 
 586   Collapse.prototype.show = function () {
 587     if (this.transitioning || this.$element.hasClass('in')) return
 588 
 589     var activesData
 590     var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
 591 
 592     if (actives && actives.length) {
 593       activesData = actives.data('bs.collapse')
 594       if (activesData && activesData.transitioning) return
 595     }
 596 
 597     var startEvent = $.Event('show.bs.collapse')
 598     this.$element.trigger(startEvent)
 599     if (startEvent.isDefaultPrevented()) return
 600 
 601     if (actives && actives.length) {
 602       Plugin.call(actives, 'hide')
 603       activesData || actives.data('bs.collapse', null)
 604     }
 605 
 606     var dimension = this.dimension()
 607 
 608     this.$element
 609       .removeClass('collapse')
 610       .addClass('collapsing')[dimension](0)
 611       .attr('aria-expanded', true)
 612 
 613     this.$trigger
 614       .removeClass('collapsed')
 615       .attr('aria-expanded', true)
 616 
 617     this.transitioning = 1
 618 
 619     var complete = function () {
 620       this.$element
 621         .removeClass('collapsing')
 622         .addClass('collapse in')[dimension]('')
 623       this.transitioning = 0
 624       this.$element
 625         .trigger('shown.bs.collapse')
 626     }
 627 
 628     if (!$.support.transition) return complete.call(this)
 629 
 630     var scrollSize = $.camelCase(['scroll', dimension].join('-'))
 631 
 632     this.$element
 633       .one('bsTransitionEnd', $.proxy(complete, this))
 634       .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
 635   }
 636 
 637   Collapse.prototype.hide = function () {
 638     if (this.transitioning || !this.$element.hasClass('in')) return
 639 
 640     var startEvent = $.Event('hide.bs.collapse')
 641     this.$element.trigger(startEvent)
 642     if (startEvent.isDefaultPrevented()) return
 643 
 644     var dimension = this.dimension()
 645 
 646     this.$element[dimension](this.$element[dimension]())[0].offsetHeight
 647 
 648     this.$element
 649       .addClass('collapsing')
 650       .removeClass('collapse in')
 651       .attr('aria-expanded', false)
 652 
 653     this.$trigger
 654       .addClass('collapsed')
 655       .attr('aria-expanded', false)
 656 
 657     this.transitioning = 1
 658 
 659     var complete = function () {
 660       this.transitioning = 0
 661       this.$element
 662         .removeClass('collapsing')
 663         .addClass('collapse')
 664         .trigger('hidden.bs.collapse')
 665     }
 666 
 667     if (!$.support.transition) return complete.call(this)
 668 
 669     this.$element
 670       [dimension](0)
 671       .one('bsTransitionEnd', $.proxy(complete, this))
 672       .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
 673   }
 674 
 675   Collapse.prototype.toggle = function () {
 676     this[this.$element.hasClass('in') ? 'hide' : 'show']()
 677   }
 678 
 679   Collapse.prototype.getParent = function () {
 680     return $(this.options.parent)
 681       .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
 682       .each($.proxy(function (i, element) {
 683         var $element = $(element)
 684         this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
 685       }, this))
 686       .end()
 687   }
 688 
 689   Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
 690     var isOpen = $element.hasClass('in')
 691 
 692     $element.attr('aria-expanded', isOpen)
 693     $trigger
 694       .toggleClass('collapsed', !isOpen)
 695       .attr('aria-expanded', isOpen)
 696   }
 697 
 698   function getTargetFromTrigger($trigger) {
 699     var href
 700     var target = $trigger.attr('data-target')
 701       || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
 702 
 703     return $(target)
 704   }
 705 
 706 
 707   // COLLAPSE PLUGIN DEFINITION
 708   // ==========================
 709 
 710   function Plugin(option) {
 711     return this.each(function () {
 712       var $this   = $(this)
 713       var data    = $this.data('bs.collapse')
 714       var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
 715 
 716       if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
 717       if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
 718       if (typeof option == 'string') data[option]()
 719     })
 720   }
 721 
 722   var old = $.fn.collapse
 723 
 724   $.fn.collapse             = Plugin
 725   $.fn.collapse.Constructor = Collapse
 726 
 727 
 728   // COLLAPSE NO CONFLICT
 729   // ====================
 730 
 731   $.fn.collapse.noConflict = function () {
 732     $.fn.collapse = old
 733     return this
 734   }
 735 
 736 
 737   // COLLAPSE DATA-API
 738   // =================
 739 
 740   $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
 741     var $this   = $(this)
 742 
 743     if (!$this.attr('data-target')) e.preventDefault()
 744 
 745     var $target = getTargetFromTrigger($this)
 746     var data    = $target.data('bs.collapse')
 747     var option  = data ? 'toggle' : $this.data()
 748 
 749     Plugin.call($target, option)
 750   })
 751 
 752 }(jQuery);
 753 
 754 /* ========================================================================
 755  * Bootstrap: dropdown.js v3.3.7
 756  * http://getbootstrap.com/javascript/#dropdowns
 757  * ========================================================================
 758  * Copyright 2011-2016 Twitter, Inc.
 759  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 760  * ======================================================================== */
 761 
 762 
 763 +function ($) {
 764   'use strict';
 765 
 766   // DROPDOWN CLASS DEFINITION
 767   // =========================
 768 
 769   var backdrop = '.dropdown-backdrop'
 770   var toggle   = '[data-toggle="dropdown"]'
 771   var Dropdown = function (element) {
 772     $(element).on('click.bs.dropdown', this.toggle)
 773   }
 774 
 775   Dropdown.VERSION = '3.3.7'
 776 
 777   function getParent($this) {
 778     var selector = $this.attr('data-target')
 779 
 780     if (!selector) {
 781       selector = $this.attr('href')
 782       selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
 783     }
 784 
 785     var $parent = selector && $(selector)
 786 
 787     return $parent && $parent.length ? $parent : $this.parent()
 788   }
 789 
 790   function clearMenus(e) {
 791     if (e && e.which === 3) return
 792     $(backdrop).remove()
 793     $(toggle).each(function () {
 794       var $this         = $(this)
 795       var $parent       = getParent($this)
 796       var relatedTarget = { relatedTarget: this }
 797 
 798       if (!$parent.hasClass('open')) return
 799 
 800       if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
 801 
 802       $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
 803 
 804       if (e.isDefaultPrevented()) return
 805 
 806       $this.attr('aria-expanded', 'false')
 807       $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
 808     })
 809   }
 810 
 811   Dropdown.prototype.toggle = function (e) {
 812     var $this = $(this)
 813 
 814     if ($this.is('.disabled, :disabled')) return
 815 
 816     var $parent  = getParent($this)
 817     var isActive = $parent.hasClass('open')
 818 
 819     clearMenus()
 820 
 821     if (!isActive) {
 822       if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
 823         // if mobile we use a backdrop because click events don't delegate
 824         $(document.createElement('div'))
 825           .addClass('dropdown-backdrop')
 826           .insertAfter($(this))
 827           .on('click', clearMenus)
 828       }
 829 
 830       var relatedTarget = { relatedTarget: this }
 831       $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
 832 
 833       if (e.isDefaultPrevented()) return
 834 
 835       $this
 836         .trigger('focus')
 837         .attr('aria-expanded', 'true')
 838 
 839       $parent
 840         .toggleClass('open')
 841         .trigger($.Event('shown.bs.dropdown', relatedTarget))
 842     }
 843 
 844     return false
 845   }
 846 
 847   Dropdown.prototype.keydown = function (e) {
 848     if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
 849 
 850     var $this = $(this)
 851 
 852     e.preventDefault()
 853     e.stopPropagation()
 854 
 855     if ($this.is('.disabled, :disabled')) return
 856 
 857     var $parent  = getParent($this)
 858     var isActive = $parent.hasClass('open')
 859 
 860     if (!isActive && e.which != 27 || isActive && e.which == 27) {
 861       if (e.which == 27) $parent.find(toggle).trigger('focus')
 862       return $this.trigger('click')
 863     }
 864 
 865     var desc = ' li:not(.disabled):visible a'
 866     var $items = $parent.find('.dropdown-menu' + desc)
 867 
 868     if (!$items.length) return
 869 
 870     var index = $items.index(e.target)
 871 
 872     if (e.which == 38 && index > 0)                 index--         // up
 873     if (e.which == 40 && index < $items.length - 1) index++         // down
 874     if (!~index)                                    index = 0
 875 
 876     $items.eq(index).trigger('focus')
 877   }
 878 
 879 
 880   // DROPDOWN PLUGIN DEFINITION
 881   // ==========================
 882 
 883   function Plugin(option) {
 884     return this.each(function () {
 885       var $this = $(this)
 886       var data  = $this.data('bs.dropdown')
 887 
 888       if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
 889       if (typeof option == 'string') data[option].call($this)
 890     })
 891   }
 892 
 893   var old = $.fn.dropdown
 894 
 895   $.fn.dropdown             = Plugin
 896   $.fn.dropdown.Constructor = Dropdown
 897 
 898 
 899   // DROPDOWN NO CONFLICT
 900   // ====================
 901 
 902   $.fn.dropdown.noConflict = function () {
 903     $.fn.dropdown = old
 904     return this
 905   }
 906 
 907 
 908   // APPLY TO STANDARD DROPDOWN ELEMENTS
 909   // ===================================
 910 
 911   $(document)
 912     .on('click.bs.dropdown.data-api', clearMenus)
 913     .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
 914     .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
 915     .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
 916     .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
 917 
 918 }(jQuery);
 919 
 920 /* ========================================================================
 921  * Bootstrap: modal.js v3.3.7
 922  * http://getbootstrap.com/javascript/#modals
 923  * ========================================================================
 924  * Copyright 2011-2016 Twitter, Inc.
 925  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 926  * ======================================================================== */
 927 
 928 
 929 +function ($) {
 930   'use strict';
 931 
 932   // MODAL CLASS DEFINITION
 933   // ======================
 934 
 935   var Modal = function (element, options) {
 936     this.options             = options
 937     this.$body               = $(document.body)
 938     this.$element            = $(element)
 939     this.$dialog             = this.$element.find('.modal-dialog')
 940     this.$backdrop           = null
 941     this.isShown             = null
 942     this.originalBodyPad     = null
 943     this.scrollbarWidth      = 0
 944     this.ignoreBackdropClick = false
 945 
 946     if (this.options.remote) {
 947       this.$element
 948         .find('.modal-content')
 949         .load(this.options.remote, $.proxy(function () {
 950           this.$element.trigger('loaded.bs.modal')
 951         }, this))
 952     }
 953   }
 954 
 955   Modal.VERSION  = '3.3.7'
 956 
 957   Modal.TRANSITION_DURATION = 300
 958   Modal.BACKDROP_TRANSITION_DURATION = 150
 959 
 960   Modal.DEFAULTS = {
 961     backdrop: true,
 962     keyboard: true,
 963     show: true
 964   }
 965 
 966   Modal.prototype.toggle = function (_relatedTarget) {
 967     return this.isShown ? this.hide() : this.show(_relatedTarget)
 968   }
 969 
 970   Modal.prototype.show = function (_relatedTarget) {
 971     var that = this
 972     var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
 973 
 974     this.$element.trigger(e)
 975 
 976     if (this.isShown || e.isDefaultPrevented()) return
 977 
 978     this.isShown = true
 979 
 980     this.checkScrollbar()
 981     this.setScrollbar()
 982     this.$body.addClass('modal-open')
 983 
 984     this.escape()
 985     this.resize()
 986 
 987     this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
 988 
 989     this.$dialog.on('mousedown.dismiss.bs.modal', function () {
 990       that.$element.one('mouseup.dismiss.bs.modal', function (e) {
 991         if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
 992       })
 993     })
 994 
 995     this.backdrop(function () {
 996       var transition = $.support.transition && that.$element.hasClass('fade')
 997 
 998       if (!that.$element.parent().length) {
 999         that.$element.appendTo(that.$body) // don't move modals dom position
1000       }
1001 
1002       that.$element
1003         .show()
1004         .scrollTop(0)
1005 
1006       that.adjustDialog()
1007 
1008       if (transition) {
1009         that.$element[0].offsetWidth // force reflow
1010       }
1011 
1012       that.$element.addClass('in')
1013 
1014       that.enforceFocus()
1015 
1016       var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
1017 
1018       transition ?
1019         that.$dialog // wait for modal to slide in
1020           .one('bsTransitionEnd', function () {
1021             that.$element.trigger('focus').trigger(e)
1022           })
1023           .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1024         that.$element.trigger('focus').trigger(e)
1025     })
1026   }
1027 
1028   Modal.prototype.hide = function (e) {
1029     if (e) e.preventDefault()
1030 
1031     e = $.Event('hide.bs.modal')
1032 
1033     this.$element.trigger(e)
1034 
1035     if (!this.isShown || e.isDefaultPrevented()) return
1036 
1037     this.isShown = false
1038 
1039     this.escape()
1040     this.resize()
1041 
1042     $(document).off('focusin.bs.modal')
1043 
1044     this.$element
1045       .removeClass('in')
1046       .off('click.dismiss.bs.modal')
1047       .off('mouseup.dismiss.bs.modal')
1048 
1049     this.$dialog.off('mousedown.dismiss.bs.modal')
1050 
1051     $.support.transition && this.$element.hasClass('fade') ?
1052       this.$element
1053         .one('bsTransitionEnd', $.proxy(this.hideModal, this))
1054         .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1055       this.hideModal()
1056   }
1057 
1058   Modal.prototype.enforceFocus = function () {
1059     $(document)
1060       .off('focusin.bs.modal') // guard against infinite focus loop
1061       .on('focusin.bs.modal', $.proxy(function (e) {
1062         if (document !== e.target &&
1063             this.$element[0] !== e.target &&
1064             !this.$element.has(e.target).length) {
1065           this.$element.trigger('focus')
1066         }
1067       }, this))
1068   }
1069 
1070   Modal.prototype.escape = function () {
1071     if (this.isShown && this.options.keyboard) {
1072       this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
1073         e.which == 27 && this.hide()
1074       }, this))
1075     } else if (!this.isShown) {
1076       this.$element.off('keydown.dismiss.bs.modal')
1077     }
1078   }
1079 
1080   Modal.prototype.resize = function () {
1081     if (this.isShown) {
1082       $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
1083     } else {
1084       $(window).off('resize.bs.modal')
1085     }
1086   }
1087 
1088   Modal.prototype.hideModal = function () {
1089     var that = this
1090     this.$element.hide()
1091     this.backdrop(function () {
1092       that.$body.removeClass('modal-open')
1093       that.resetAdjustments()
1094       that.resetScrollbar()
1095       that.$element.trigger('hidden.bs.modal')
1096     })
1097   }
1098 
1099   Modal.prototype.removeBackdrop = function () {
1100     this.$backdrop && this.$backdrop.remove()
1101     this.$backdrop = null
1102   }
1103 
1104   Modal.prototype.backdrop = function (callback) {
1105     var that = this
1106     var animate = this.$element.hasClass('fade') ? 'fade' : ''
1107 
1108     if (this.isShown && this.options.backdrop) {
1109       var doAnimate = $.support.transition && animate
1110 
1111       this.$backdrop = $(document.createElement('div'))
1112         .addClass('modal-backdrop ' + animate)
1113         .appendTo(this.$body)
1114 
1115       this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
1116         if (this.ignoreBackdropClick) {
1117           this.ignoreBackdropClick = false
1118           return
1119         }
1120         if (e.target !== e.currentTarget) return
1121         this.options.backdrop == 'static'
1122           ? this.$element[0].focus()
1123           : this.hide()
1124       }, this))
1125 
1126       if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
1127 
1128       this.$backdrop.addClass('in')
1129 
1130       if (!callback) return
1131 
1132       doAnimate ?
1133         this.$backdrop
1134           .one('bsTransitionEnd', callback)
1135           .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1136         callback()
1137 
1138     } else if (!this.isShown && this.$backdrop) {
1139       this.$backdrop.removeClass('in')
1140 
1141       var callbackRemove = function () {
1142         that.removeBackdrop()
1143         callback && callback()
1144       }
1145       $.support.transition && this.$element.hasClass('fade') ?
1146         this.$backdrop
1147           .one('bsTransitionEnd', callbackRemove)
1148           .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1149         callbackRemove()
1150 
1151     } else if (callback) {
1152       callback()
1153     }
1154   }
1155 
1156   // these following methods are used to handle overflowing modals
1157 
1158   Modal.prototype.handleUpdate = function () {
1159     this.adjustDialog()
1160   }
1161 
1162   Modal.prototype.adjustDialog = function () {
1163     var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1164 
1165     this.$element.css({
1166       paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1167       paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1168     })
1169   }
1170 
1171   Modal.prototype.resetAdjustments = function () {
1172     this.$element.css({
1173       paddingLeft: '',
1174       paddingRight: ''
1175     })
1176   }
1177 
1178   Modal.prototype.checkScrollbar = function () {
1179     var fullWindowWidth = window.innerWidth
1180     if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
1181       var documentElementRect = document.documentElement.getBoundingClientRect()
1182       fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
1183     }
1184     this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
1185     this.scrollbarWidth = this.measureScrollbar()
1186   }
1187 
1188   Modal.prototype.setScrollbar = function () {
1189     var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1190     this.originalBodyPad = document.body.style.paddingRight || ''
1191     if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
1192   }
1193 
1194   Modal.prototype.resetScrollbar = function () {
1195     this.$body.css('padding-right', this.originalBodyPad)
1196   }
1197 
1198   Modal.prototype.measureScrollbar = function () { // thx walsh
1199     var scrollDiv = document.createElement('div')
1200     scrollDiv.className = 'modal-scrollbar-measure'
1201     this.$body.append(scrollDiv)
1202     var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
1203     this.$body[0].removeChild(scrollDiv)
1204     return scrollbarWidth
1205   }
1206 
1207 
1208   // MODAL PLUGIN DEFINITION
1209   // =======================
1210 
1211   function Plugin(option, _relatedTarget) {
1212     return this.each(function () {
1213       var $this   = $(this)
1214       var data    = $this.data('bs.modal')
1215       var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1216 
1217       if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
1218       if (typeof option == 'string') data[option](_relatedTarget)
1219       else if (options.show) data.show(_relatedTarget)
1220     })
1221   }
1222 
1223   var old = $.fn.modal
1224 
1225   $.fn.modal             = Plugin
1226   $.fn.modal.Constructor = Modal
1227 
1228 
1229   // MODAL NO CONFLICT
1230   // =================
1231 
1232   $.fn.modal.noConflict = function () {
1233     $.fn.modal = old
1234     return this
1235   }
1236 
1237 
1238   // MODAL DATA-API
1239   // ==============
1240 
1241   $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1242     var $this   = $(this)
1243     var href    = $this.attr('href')
1244     var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
1245     var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1246 
1247     if ($this.is('a')) e.preventDefault()
1248 
1249     $target.one('show.bs.modal', function (showEvent) {
1250       if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
1251       $target.one('hidden.bs.modal', function () {
1252         $this.is(':visible') && $this.trigger('focus')
1253       })
1254     })
1255     Plugin.call($target, option, this)
1256   })
1257 
1258 }(jQuery);
1259 
1260 /* ========================================================================
1261  * Bootstrap: tooltip.js v3.3.7
1262  * http://getbootstrap.com/javascript/#tooltip
1263  * Inspired by the original jQuery.tipsy by Jason Frame
1264  * ========================================================================
1265  * Copyright 2011-2016 Twitter, Inc.
1266  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1267  * ======================================================================== */
1268 
1269 
1270 +function ($) {
1271   'use strict';
1272 
1273   // TOOLTIP PUBLIC CLASS DEFINITION
1274   // ===============================
1275 
1276   var Tooltip = function (element, options) {
1277     this.type       = null
1278     this.options    = null
1279     this.enabled    = null
1280     this.timeout    = null
1281     this.hoverState = null
1282     this.$element   = null
1283     this.inState    = null
1284 
1285     this.init('tooltip', element, options)
1286   }
1287 
1288   Tooltip.VERSION  = '3.3.7'
1289 
1290   Tooltip.TRANSITION_DURATION = 150
1291 
1292   Tooltip.DEFAULTS = {
1293     animation: true,
1294     placement: 'top',
1295     selector: false,
1296     template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1297     trigger: 'hover focus',
1298     title: '',
1299     delay: 0,
1300     html: false,
1301     container: false,
1302     viewport: {
1303       selector: 'body',
1304       padding: 0
1305     }
1306   }
1307 
1308   Tooltip.prototype.init = function (type, element, options) {
1309     this.enabled   = true
1310     this.type      = type
1311     this.$element  = $(element)
1312     this.options   = this.getOptions(options)
1313     this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1314     this.inState   = { click: false, hover: false, focus: false }
1315 
1316     if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1317       throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1318     }
1319 
1320     var triggers = this.options.trigger.split(' ')
1321 
1322     for (var i = triggers.length; i--;) {
1323       var trigger = triggers[i]
1324 
1325       if (trigger == 'click') {
1326         this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1327       } else if (trigger != 'manual') {
1328         var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
1329         var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1330 
1331         this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1332         this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1333       }
1334     }
1335 
1336     this.options.selector ?
1337       (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1338       this.fixTitle()
1339   }
1340 
1341   Tooltip.prototype.getDefaults = function () {
1342     return Tooltip.DEFAULTS
1343   }
1344 
1345   Tooltip.prototype.getOptions = function (options) {
1346     options = $.extend({}, this.getDefaults(), this.$element.data(), options)
1347 
1348     if (options.delay && typeof options.delay == 'number') {
1349       options.delay = {
1350         show: options.delay,
1351         hide: options.delay
1352       }
1353     }
1354 
1355     return options
1356   }
1357 
1358   Tooltip.prototype.getDelegateOptions = function () {
1359     var options  = {}
1360     var defaults = this.getDefaults()
1361 
1362     this._options && $.each(this._options, function (key, value) {
1363       if (defaults[key] != value) options[key] = value
1364     })
1365 
1366     return options
1367   }
1368 
1369   Tooltip.prototype.enter = function (obj) {
1370     var self = obj instanceof this.constructor ?
1371       obj : $(obj.currentTarget).data('bs.' + this.type)
1372 
1373     if (!self) {
1374       self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1375       $(obj.currentTarget).data('bs.' + this.type, self)
1376     }
1377 
1378     if (obj instanceof $.Event) {
1379       self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1380     }
1381 
1382     if (self.tip().hasClass('in') || self.hoverState == 'in') {
1383       self.hoverState = 'in'
1384       return
1385     }
1386 
1387     clearTimeout(self.timeout)
1388 
1389     self.hoverState = 'in'
1390 
1391     if (!self.options.delay || !self.options.delay.show) return self.show()
1392 
1393     self.timeout = setTimeout(function () {
1394       if (self.hoverState == 'in') self.show()
1395     }, self.options.delay.show)
1396   }
1397 
1398   Tooltip.prototype.isInStateTrue = function () {
1399     for (var key in this.inState) {
1400       if (this.inState[key]) return true
1401     }
1402 
1403     return false
1404   }
1405 
1406   Tooltip.prototype.leave = function (obj) {
1407     var self = obj instanceof this.constructor ?
1408       obj : $(obj.currentTarget).data('bs.' + this.type)
1409 
1410     if (!self) {
1411       self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1412       $(obj.currentTarget).data('bs.' + this.type, self)
1413     }
1414 
1415     if (obj instanceof $.Event) {
1416       self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1417     }
1418 
1419     if (self.isInStateTrue()) return
1420 
1421     clearTimeout(self.timeout)
1422 
1423     self.hoverState = 'out'
1424 
1425     if (!self.options.delay || !self.options.delay.hide) return self.hide()
1426 
1427     self.timeout = setTimeout(function () {
1428       if (self.hoverState == 'out') self.hide()
1429     }, self.options.delay.hide)
1430   }
1431 
1432   Tooltip.prototype.show = function () {
1433     var e = $.Event('show.bs.' + this.type)
1434 
1435     if (this.hasContent() && this.enabled) {
1436       this.$element.trigger(e)
1437 
1438       var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
1439       if (e.isDefaultPrevented() || !inDom) return
1440       var that = this
1441 
1442       var $tip = this.tip()
1443 
1444       var tipId = this.getUID(this.type)
1445 
1446       this.setContent()
1447       $tip.attr('id', tipId)
1448       this.$element.attr('aria-describedby', tipId)
1449 
1450       if (this.options.animation) $tip.addClass('fade')
1451 
1452       var placement = typeof this.options.placement == 'function' ?
1453         this.options.placement.call(this, $tip[0], this.$element[0]) :
1454         this.options.placement
1455 
1456       var autoToken = /\s?auto?\s?/i
1457       var autoPlace = autoToken.test(placement)
1458       if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1459 
1460       $tip
1461         .detach()
1462         .css({ top: 0, left: 0, display: 'block' })
1463         .addClass(placement)
1464         .data('bs.' + this.type, this)
1465 
1466       this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1467       this.$element.trigger('inserted.bs.' + this.type)
1468 
1469       var pos          = this.getPosition()
1470       var actualWidth  = $tip[0].offsetWidth
1471       var actualHeight = $tip[0].offsetHeight
1472 
1473       if (autoPlace) {
1474         var orgPlacement = placement
1475         var viewportDim = this.getPosition(this.$viewport)
1476 
1477         placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
1478                     placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
1479                     placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
1480                     placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
1481                     placement
1482 
1483         $tip
1484           .removeClass(orgPlacement)
1485           .addClass(placement)
1486       }
1487 
1488       var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1489 
1490       this.applyPlacement(calculatedOffset, placement)
1491 
1492       var complete = function () {
1493         var prevHoverState = that.hoverState
1494         that.$element.trigger('shown.bs.' + that.type)
1495         that.hoverState = null
1496 
1497         if (prevHoverState == 'out') that.leave(that)
1498       }
1499 
1500       $.support.transition && this.$tip.hasClass('fade') ?
1501         $tip
1502           .one('bsTransitionEnd', complete)
1503           .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1504         complete()
1505     }
1506   }
1507 
1508   Tooltip.prototype.applyPlacement = function (offset, placement) {
1509     var $tip   = this.tip()
1510     var width  = $tip[0].offsetWidth
1511     var height = $tip[0].offsetHeight
1512 
1513     // manually read margins because getBoundingClientRect includes difference
1514     var marginTop = parseInt($tip.css('margin-top'), 10)
1515     var marginLeft = parseInt($tip.css('margin-left'), 10)
1516 
1517     // we must check for NaN for ie 8/9
1518     if (isNaN(marginTop))  marginTop  = 0
1519     if (isNaN(marginLeft)) marginLeft = 0
1520 
1521     offset.top  += marginTop
1522     offset.left += marginLeft
1523 
1524     // $.fn.offset doesn't round pixel values
1525     // so we use setOffset directly with our own function B-0
1526     $.offset.setOffset($tip[0], $.extend({
1527       using: function (props) {
1528         $tip.css({
1529           top: Math.round(props.top),
1530           left: Math.round(props.left)
1531         })
1532       }
1533     }, offset), 0)
1534 
1535     $tip.addClass('in')
1536 
1537     // check to see if placing tip in new offset caused the tip to resize itself
1538     var actualWidth  = $tip[0].offsetWidth
1539     var actualHeight = $tip[0].offsetHeight
1540 
1541     if (placement == 'top' && actualHeight != height) {
1542       offset.top = offset.top + height - actualHeight
1543     }
1544 
1545     var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
1546 
1547     if (delta.left) offset.left += delta.left
1548     else offset.top += delta.top
1549 
1550     var isVertical          = /top|bottom/.test(placement)
1551     var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
1552     var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
1553 
1554     $tip.offset(offset)
1555     this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1556   }
1557 
1558   Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1559     this.arrow()
1560       .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1561       .css(isVertical ? 'top' : 'left', '')
1562   }
1563 
1564   Tooltip.prototype.setContent = function () {
1565     var $tip  = this.tip()
1566     var title = this.getTitle()
1567 
1568     $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1569     $tip.removeClass('fade in top bottom left right')
1570   }
1571 
1572   Tooltip.prototype.hide = function (callback) {
1573     var that = this
1574     var $tip = $(this.$tip)
1575     var e    = $.Event('hide.bs.' + this.type)
1576 
1577     function complete() {
1578       if (that.hoverState != 'in') $tip.detach()
1579       if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1580         that.$element
1581           .removeAttr('aria-describedby')
1582           .trigger('hidden.bs.' + that.type)
1583       }
1584       callback && callback()
1585     }
1586 
1587     this.$element.trigger(e)
1588 
1589     if (e.isDefaultPrevented()) return
1590 
1591     $tip.removeClass('in')
1592 
1593     $.support.transition && $tip.hasClass('fade') ?
1594       $tip
1595         .one('bsTransitionEnd', complete)
1596         .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1597       complete()
1598 
1599     this.hoverState = null
1600 
1601     return this
1602   }
1603 
1604   Tooltip.prototype.fixTitle = function () {
1605     var $e = this.$element
1606     if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1607       $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1608     }
1609   }
1610 
1611   Tooltip.prototype.hasContent = function () {
1612     return this.getTitle()
1613   }
1614 
1615   Tooltip.prototype.getPosition = function ($element) {
1616     $element   = $element || this.$element
1617 
1618     var el     = $element[0]
1619     var isBody = el.tagName == 'BODY'
1620 
1621     var elRect    = el.getBoundingClientRect()
1622     if (elRect.width == null) {
1623       // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1624       elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1625     }
1626     var isSvg = window.SVGElement && el instanceof window.SVGElement
1627     // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1628     // See https://github.com/twbs/bootstrap/issues/20280
1629     var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1630     var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1631     var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1632 
1633     return $.extend({}, elRect, scroll, outerDims, elOffset)
1634   }
1635 
1636   Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1637     return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
1638            placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1639            placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1640         /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1641 
1642   }
1643 
1644   Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
1645     var delta = { top: 0, left: 0 }
1646     if (!this.$viewport) return delta
1647 
1648     var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
1649     var viewportDimensions = this.getPosition(this.$viewport)
1650 
1651     if (/right|left/.test(placement)) {
1652       var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
1653       var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
1654       if (topEdgeOffset < viewportDimensions.top) { // top overflow
1655         delta.top = viewportDimensions.top - topEdgeOffset
1656       } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
1657         delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
1658       }
1659     } else {
1660       var leftEdgeOffset  = pos.left - viewportPadding
1661       var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1662       if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1663         delta.left = viewportDimensions.left - leftEdgeOffset
1664       } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1665         delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1666       }
1667     }
1668 
1669     return delta
1670   }
1671 
1672   Tooltip.prototype.getTitle = function () {
1673     var title
1674     var $e = this.$element
1675     var o  = this.options
1676 
1677     title = $e.attr('data-original-title')
1678       || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
1679 
1680     return title
1681   }
1682 
1683   Tooltip.prototype.getUID = function (prefix) {
1684     do prefix += ~~(Math.random() * 1000000)
1685     while (document.getElementById(prefix))
1686     return prefix
1687   }
1688 
1689   Tooltip.prototype.tip = function () {
1690     if (!this.$tip) {
1691       this.$tip = $(this.options.template)
1692       if (this.$tip.length != 1) {
1693         throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1694       }
1695     }
1696     return this.$tip
1697   }
1698 
1699   Tooltip.prototype.arrow = function () {
1700     return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
1701   }
1702 
1703   Tooltip.prototype.enable = function () {
1704     this.enabled = true
1705   }
1706 
1707   Tooltip.prototype.disable = function () {
1708     this.enabled = false
1709   }
1710 
1711   Tooltip.prototype.toggleEnabled = function () {
1712     this.enabled = !this.enabled
1713   }
1714 
1715   Tooltip.prototype.toggle = function (e) {
1716     var self = this
1717     if (e) {
1718       self = $(e.currentTarget).data('bs.' + this.type)
1719       if (!self) {
1720         self = new this.constructor(e.currentTarget, this.getDelegateOptions())
1721         $(e.currentTarget).data('bs.' + this.type, self)
1722       }
1723     }
1724 
1725     if (e) {
1726       self.inState.click = !self.inState.click
1727       if (self.isInStateTrue()) self.enter(self)
1728       else self.leave(self)
1729     } else {
1730       self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1731     }
1732   }
1733 
1734   Tooltip.prototype.destroy = function () {
1735     var that = this
1736     clearTimeout(this.timeout)
1737     this.hide(function () {
1738       that.$element.off('.' + that.type).removeData('bs.' + that.type)
1739       if (that.$tip) {
1740         that.$tip.detach()
1741       }
1742       that.$tip = null
1743       that.$arrow = null
1744       that.$viewport = null
1745       that.$element = null
1746     })
1747   }
1748 
1749 
1750   // TOOLTIP PLUGIN DEFINITION
1751   // =========================
1752 
1753   function Plugin(option) {
1754     return this.each(function () {
1755       var $this   = $(this)
1756       var data    = $this.data('bs.tooltip')
1757       var options = typeof option == 'object' && option
1758 
1759       if (!data && /destroy|hide/.test(option)) return
1760       if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1761       if (typeof option == 'string') data[option]()
1762     })
1763   }
1764 
1765   var old = $.fn.tooltip
1766 
1767   $.fn.tooltip             = Plugin
1768   $.fn.tooltip.Constructor = Tooltip
1769 
1770 
1771   // TOOLTIP NO CONFLICT
1772   // ===================
1773 
1774   $.fn.tooltip.noConflict = function () {
1775     $.fn.tooltip = old
1776     return this
1777   }
1778 
1779 }(jQuery);
1780 
1781 /* ========================================================================
1782  * Bootstrap: popover.js v3.3.7
1783  * http://getbootstrap.com/javascript/#popovers
1784  * ========================================================================
1785  * Copyright 2011-2016 Twitter, Inc.
1786  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1787  * ======================================================================== */
1788 
1789 
1790 +function ($) {
1791   'use strict';
1792 
1793   // POPOVER PUBLIC CLASS DEFINITION
1794   // ===============================
1795 
1796   var Popover = function (element, options) {
1797     this.init('popover', element, options)
1798   }
1799 
1800   if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1801 
1802   Popover.VERSION  = '3.3.7'
1803 
1804   Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1805     placement: 'right',
1806     trigger: 'click',
1807     content: '',
1808     template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1809   })
1810 
1811 
1812   // NOTE: POPOVER EXTENDS tooltip.js
1813   // ================================
1814 
1815   Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1816 
1817   Popover.prototype.constructor = Popover
1818 
1819   Popover.prototype.getDefaults = function () {
1820     return Popover.DEFAULTS
1821   }
1822 
1823   Popover.prototype.setContent = function () {
1824     var $tip    = this.tip()
1825     var title   = this.getTitle()
1826     var content = this.getContent()
1827 
1828     $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1829     $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
1830       this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
1831     ](content)
1832 
1833     $tip.removeClass('fade top bottom left right in')
1834 
1835     // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
1836     // this manually by checking the contents.
1837     if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
1838   }
1839 
1840   Popover.prototype.hasContent = function () {
1841     return this.getTitle() || this.getContent()
1842   }
1843 
1844   Popover.prototype.getContent = function () {
1845     var $e = this.$element
1846     var o  = this.options
1847 
1848     return $e.attr('data-content')
1849       || (typeof o.content == 'function' ?
1850             o.content.call($e[0]) :
1851             o.content)
1852   }
1853 
1854   Popover.prototype.arrow = function () {
1855     return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
1856   }
1857 
1858 
1859   // POPOVER PLUGIN DEFINITION
1860   // =========================
1861 
1862   function Plugin(option) {
1863     return this.each(function () {
1864       var $this   = $(this)
1865       var data    = $this.data('bs.popover')
1866       var options = typeof option == 'object' && option
1867 
1868       if (!data && /destroy|hide/.test(option)) return
1869       if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1870       if (typeof option == 'string') data[option]()
1871     })
1872   }
1873 
1874   var old = $.fn.popover
1875 
1876   $.fn.popover             = Plugin
1877   $.fn.popover.Constructor = Popover
1878 
1879 
1880   // POPOVER NO CONFLICT
1881   // ===================
1882 
1883   $.fn.popover.noConflict = function () {
1884     $.fn.popover = old
1885     return this
1886   }
1887 
1888 }(jQuery);
1889 
1890 /* ========================================================================
1891  * Bootstrap: scrollspy.js v3.3.7
1892  * http://getbootstrap.com/javascript/#scrollspy
1893  * ========================================================================
1894  * Copyright 2011-2016 Twitter, Inc.
1895  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1896  * ======================================================================== */
1897 
1898 
1899 +function ($) {
1900   'use strict';
1901 
1902   // SCROLLSPY CLASS DEFINITION
1903   // ==========================
1904 
1905   function ScrollSpy(element, options) {
1906     this.$body          = $(document.body)
1907     this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
1908     this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
1909     this.selector       = (this.options.target || '') + ' .nav li > a'
1910     this.offsets        = []
1911     this.targets        = []
1912     this.activeTarget   = null
1913     this.scrollHeight   = 0
1914 
1915     this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
1916     this.refresh()
1917     this.process()
1918   }
1919 
1920   ScrollSpy.VERSION  = '3.3.7'
1921 
1922   ScrollSpy.DEFAULTS = {
1923     offset: 10
1924   }
1925 
1926   ScrollSpy.prototype.getScrollHeight = function () {
1927     return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
1928   }
1929 
1930   ScrollSpy.prototype.refresh = function () {
1931     var that          = this
1932     var offsetMethod  = 'offset'
1933     var offsetBase    = 0
1934 
1935     this.offsets      = []
1936     this.targets      = []
1937     this.scrollHeight = this.getScrollHeight()
1938 
1939     if (!$.isWindow(this.$scrollElement[0])) {
1940       offsetMethod = 'position'
1941       offsetBase   = this.$scrollElement.scrollTop()
1942     }
1943 
1944     this.$body
1945       .find(this.selector)
1946       .map(function () {
1947         var $el   = $(this)
1948         var href  = $el.data('target') || $el.attr('href')
1949         var $href = /^#./.test(href) && $(href)
1950 
1951         return ($href
1952           && $href.length
1953           && $href.is(':visible')
1954           && [[$href[offsetMethod]().top + offsetBase, href]]) || null
1955       })
1956       .sort(function (a, b) { return a[0] - b[0] })
1957       .each(function () {
1958         that.offsets.push(this[0])
1959         that.targets.push(this[1])
1960       })
1961   }
1962 
1963   ScrollSpy.prototype.process = function () {
1964     var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
1965     var scrollHeight = this.getScrollHeight()
1966     var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
1967     var offsets      = this.offsets
1968     var targets      = this.targets
1969     var activeTarget = this.activeTarget
1970     var i
1971 
1972     if (this.scrollHeight != scrollHeight) {
1973       this.refresh()
1974     }
1975 
1976     if (scrollTop >= maxScroll) {
1977       return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
1978     }
1979 
1980     if (activeTarget && scrollTop < offsets[0]) {
1981       this.activeTarget = null
1982       return this.clear()
1983     }
1984 
1985     for (i = offsets.length; i--;) {
1986       activeTarget != targets[i]
1987         && scrollTop >= offsets[i]
1988         && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
1989         && this.activate(targets[i])
1990     }
1991   }
1992 
1993   ScrollSpy.prototype.activate = function (target) {
1994     this.activeTarget = target
1995 
1996     this.clear()
1997 
1998     var selector = this.selector +
1999       '[data-target="' + target + '"],' +
2000       this.selector + '[href="' + target + '"]'
2001 
2002     var active = $(selector)
2003       .parents('li')
2004       .addClass('active')
2005 
2006     if (active.parent('.dropdown-menu').length) {
2007       active = active
2008         .closest('li.dropdown')
2009         .addClass('active')
2010     }
2011 
2012     active.trigger('activate.bs.scrollspy')
2013   }
2014 
2015   ScrollSpy.prototype.clear = function () {
2016     $(this.selector)
2017       .parentsUntil(this.options.target, '.active')
2018       .removeClass('active')
2019   }
2020 
2021 
2022   // SCROLLSPY PLUGIN DEFINITION
2023   // ===========================
2024 
2025   function Plugin(option) {
2026     return this.each(function () {
2027       var $this   = $(this)
2028       var data    = $this.data('bs.scrollspy')
2029       var options = typeof option == 'object' && option
2030 
2031       if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
2032       if (typeof option == 'string') data[option]()
2033     })
2034   }
2035 
2036   var old = $.fn.scrollspy
2037 
2038   $.fn.scrollspy             = Plugin
2039   $.fn.scrollspy.Constructor = ScrollSpy
2040 
2041 
2042   // SCROLLSPY NO CONFLICT
2043   // =====================
2044 
2045   $.fn.scrollspy.noConflict = function () {
2046     $.fn.scrollspy = old
2047     return this
2048   }
2049 
2050 
2051   // SCROLLSPY DATA-API
2052   // ==================
2053 
2054   $(window).on('load.bs.scrollspy.data-api', function () {
2055     $('[data-spy="scroll"]').each(function () {
2056       var $spy = $(this)
2057       Plugin.call($spy, $spy.data())
2058     })
2059   })
2060 
2061 }(jQuery);
2062 
2063 /* ========================================================================
2064  * Bootstrap: tab.js v3.3.7
2065  * http://getbootstrap.com/javascript/#tabs
2066  * ========================================================================
2067  * Copyright 2011-2016 Twitter, Inc.
2068  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2069  * ======================================================================== */
2070 
2071 
2072 +function ($) {
2073   'use strict';
2074 
2075   // TAB CLASS DEFINITION
2076   // ====================
2077 
2078   var Tab = function (element) {
2079     // jscs:disable requireDollarBeforejQueryAssignment
2080     this.element = $(element)
2081     // jscs:enable requireDollarBeforejQueryAssignment
2082   }
2083 
2084   Tab.VERSION = '3.3.7'
2085 
2086   Tab.TRANSITION_DURATION = 150
2087 
2088   Tab.prototype.show = function () {
2089     var $this    = this.element
2090     var $ul      = $this.closest('ul:not(.dropdown-menu)')
2091     var selector = $this.data('target')
2092 
2093     if (!selector) {
2094       selector = $this.attr('href')
2095       selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
2096     }
2097 
2098     if ($this.parent('li').hasClass('active')) return
2099 
2100     var $previous = $ul.find('.active:last a')
2101     var hideEvent = $.Event('hide.bs.tab', {
2102       relatedTarget: $this[0]
2103     })
2104     var showEvent = $.Event('show.bs.tab', {
2105       relatedTarget: $previous[0]
2106     })
2107 
2108     $previous.trigger(hideEvent)
2109     $this.trigger(showEvent)
2110 
2111     if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
2112 
2113     var $target = $(selector)
2114 
2115     this.activate($this.closest('li'), $ul)
2116     this.activate($target, $target.parent(), function () {
2117       $previous.trigger({
2118         type: 'hidden.bs.tab',
2119         relatedTarget: $this[0]
2120       })
2121       $this.trigger({
2122         type: 'shown.bs.tab',
2123         relatedTarget: $previous[0]
2124       })
2125     })
2126   }
2127 
2128   Tab.prototype.activate = function (element, container, callback) {
2129     var $active    = container.find('> .active')
2130     var transition = callback
2131       && $.support.transition
2132       && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
2133 
2134     function next() {
2135       $active
2136         .removeClass('active')
2137         .find('> .dropdown-menu > .active')
2138           .removeClass('active')
2139         .end()
2140         .find('[data-toggle="tab"]')
2141           .attr('aria-expanded', false)
2142 
2143       element
2144         .addClass('active')
2145         .find('[data-toggle="tab"]')
2146           .attr('aria-expanded', true)
2147 
2148       if (transition) {
2149         element[0].offsetWidth // reflow for transition
2150         element.addClass('in')
2151       } else {
2152         element.removeClass('fade')
2153       }
2154 
2155       if (element.parent('.dropdown-menu').length) {
2156         element
2157           .closest('li.dropdown')
2158             .addClass('active')
2159           .end()
2160           .find('[data-toggle="tab"]')
2161             .attr('aria-expanded', true)
2162       }
2163 
2164       callback && callback()
2165     }
2166 
2167     $active.length && transition ?
2168       $active
2169         .one('bsTransitionEnd', next)
2170         .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
2171       next()
2172 
2173     $active.removeClass('in')
2174   }
2175 
2176 
2177   // TAB PLUGIN DEFINITION
2178   // =====================
2179 
2180   function Plugin(option) {
2181     return this.each(function () {
2182       var $this = $(this)
2183       var data  = $this.data('bs.tab')
2184 
2185       if (!data) $this.data('bs.tab', (data = new Tab(this)))
2186       if (typeof option == 'string') data[option]()
2187     })
2188   }
2189 
2190   var old = $.fn.tab
2191 
2192   $.fn.tab             = Plugin
2193   $.fn.tab.Constructor = Tab
2194 
2195 
2196   // TAB NO CONFLICT
2197   // ===============
2198 
2199   $.fn.tab.noConflict = function () {
2200     $.fn.tab = old
2201     return this
2202   }
2203 
2204 
2205   // TAB DATA-API
2206   // ============
2207 
2208   var clickHandler = function (e) {
2209     e.preventDefault()
2210     Plugin.call($(this), 'show')
2211   }
2212 
2213   $(document)
2214     .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
2215     .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
2216 
2217 }(jQuery);
2218 
2219 /* ========================================================================
2220  * Bootstrap: affix.js v3.3.7
2221  * http://getbootstrap.com/javascript/#affix
2222  * ========================================================================
2223  * Copyright 2011-2016 Twitter, Inc.
2224  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2225  * ======================================================================== */
2226 
2227 
2228 +function ($) {
2229   'use strict';
2230 
2231   // AFFIX CLASS DEFINITION
2232   // ======================
2233 
2234   var Affix = function (element, options) {
2235     this.options = $.extend({}, Affix.DEFAULTS, options)
2236 
2237     this.$target = $(this.options.target)
2238       .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
2239       .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
2240 
2241     this.$element     = $(element)
2242     this.affixed      = null
2243     this.unpin        = null
2244     this.pinnedOffset = null
2245 
2246     this.checkPosition()
2247   }
2248 
2249   Affix.VERSION  = '3.3.7'
2250 
2251   Affix.RESET    = 'affix affix-top affix-bottom'
2252 
2253   Affix.DEFAULTS = {
2254     offset: 0,
2255     target: window
2256   }
2257 
2258   Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
2259     var scrollTop    = this.$target.scrollTop()
2260     var position     = this.$element.offset()
2261     var targetHeight = this.$target.height()
2262 
2263     if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
2264 
2265     if (this.affixed == 'bottom') {
2266       if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
2267       return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
2268     }
2269 
2270     var initializing   = this.affixed == null
2271     var colliderTop    = initializing ? scrollTop : position.top
2272     var colliderHeight = initializing ? targetHeight : height
2273 
2274     if (offsetTop != null && scrollTop <= offsetTop) return 'top'
2275     if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
2276 
2277     return false
2278   }
2279 
2280   Affix.prototype.getPinnedOffset = function () {
2281     if (this.pinnedOffset) return this.pinnedOffset
2282     this.$element.removeClass(Affix.RESET).addClass('affix')
2283     var scrollTop = this.$target.scrollTop()
2284     var position  = this.$element.offset()
2285     return (this.pinnedOffset = position.top - scrollTop)
2286   }
2287 
2288   Affix.prototype.checkPositionWithEventLoop = function () {
2289     setTimeout($.proxy(this.checkPosition, this), 1)
2290   }
2291 
2292   Affix.prototype.checkPosition = function () {
2293     if (!this.$element.is(':visible')) return
2294 
2295     var height       = this.$element.height()
2296     var offset       = this.options.offset
2297     var offsetTop    = offset.top
2298     var offsetBottom = offset.bottom
2299     var scrollHeight = Math.max($(document).height(), $(document.body).height())
2300 
2301     if (typeof offset != 'object')         offsetBottom = offsetTop = offset
2302     if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
2303     if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
2304 
2305     var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
2306 
2307     if (this.affixed != affix) {
2308       if (this.unpin != null) this.$element.css('top', '')
2309 
2310       var affixType = 'affix' + (affix ? '-' + affix : '')
2311       var e         = $.Event(affixType + '.bs.affix')
2312 
2313       this.$element.trigger(e)
2314 
2315       if (e.isDefaultPrevented()) return
2316 
2317       this.affixed = affix
2318       this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
2319 
2320       this.$element
2321         .removeClass(Affix.RESET)
2322         .addClass(affixType)
2323         .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
2324     }
2325 
2326     if (affix == 'bottom') {
2327       this.$element.offset({
2328         top: scrollHeight - height - offsetBottom
2329       })
2330     }
2331   }
2332 
2333 
2334   // AFFIX PLUGIN DEFINITION
2335   // =======================
2336 
2337   function Plugin(option) {
2338     return this.each(function () {
2339       var $this   = $(this)
2340       var data    = $this.data('bs.affix')
2341       var options = typeof option == 'object' && option
2342 
2343       if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
2344       if (typeof option == 'string') data[option]()
2345     })
2346   }
2347 
2348   var old = $.fn.affix
2349 
2350   $.fn.affix             = Plugin
2351   $.fn.affix.Constructor = Affix
2352 
2353 
2354   // AFFIX NO CONFLICT
2355   // =================
2356 
2357   $.fn.affix.noConflict = function () {
2358     $.fn.affix = old
2359     return this
2360   }
2361 
2362 
2363   // AFFIX DATA-API
2364   // ==============
2365 
2366   $(window).on('load', function () {
2367     $('[data-spy="affix"]').each(function () {
2368       var $spy = $(this)
2369       var data = $spy.data()
2370 
2371       data.offset = data.offset || {}
2372 
2373       if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
2374       if (data.offsetTop    != null) data.offset.top    = data.offsetTop
2375 
2376       Plugin.call($spy, data)
2377     })
2378   })
2379 
2380 }(jQuery);
*bootstrap.js

 

  1 /*
  2 
  3     *dashboard.css
  4  * Base structure
  5  */
  6 
  7 /* Move down content because we have a fixed navbar that is 50px tall */
  8 body {
  9   padding-top: 50px;
 10 }
 11 
 12 
 13 /*
 14  * Global add-ons
 15  */
 16 
 17 .sub-header {
 18   padding-bottom: 10px;
 19   border-bottom: 1px solid #eee;
 20 }
 21 
 22 /*
 23  * Top navigation
 24  * Hide default border to remove 1px line.
 25  */
 26 .navbar-fixed-top {
 27   border: 0;
 28 }
 29 
 30 /*
 31  * Sidebar
 32  */
 33 
 34 /* Hide for mobile, show later */
 35 .sidebar {
 36   display: none;
 37 }
 38 @media (min-width: 768px) {
 39   .sidebar {
 40     position: fixed;
 41     top: 51px;
 42     bottom: 0;
 43     left: 0;
 44     z-index: 1000;
 45     display: block;
 46     padding: 20px;
 47     overflow-x: hidden;
 48     overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
 49     background-color: #f5f5f5;
 50     border-right: 1px solid #eee;
 51   }
 52 }
 53 
 54 /* Sidebar navigation */
 55 .nav-sidebar {
 56   margin-right: -21px; /* 20px padding + 1px border */
 57   margin-bottom: 20px;
 58   margin-left: -20px;
 59 }
 60 .nav-sidebar > li > a {
 61   padding-right: 20px;
 62   padding-left: 20px;
 63 }
 64 .nav-sidebar > .active > a,
 65 .nav-sidebar > .active > a:hover,
 66 .nav-sidebar > .active > a:focus {
 67   color: #fff;
 68   background-color: #428bca;
 69 }
 70 
 71 
 72 /*
 73  * Main content
 74  */
 75 
 76 .main {
 77   padding: 20px;
 78 }
 79 @media (min-width: 768px) {
 80   .main {
 81     padding-right: 40px;
 82     padding-left: 40px;
 83   }
 84 }
 85 .main .page-header {
 86   margin-top: 0;
 87 }
 88 
 89 
 90 /*
 91  * Placeholder dashboard ideas
 92  */
 93 
 94 .placeholders {
 95   margin-bottom: 30px;
 96   text-align: center;
 97 }
 98 .placeholders h4 {
 99   margin-bottom: 0;
100 }
101 .placeholder {
102   margin-bottom: 20px;
103 }
104 .placeholder img {
105   display: inline-block;
106   border-radius: 50%;
107 }
*dashboard.css

 

  1 /*dropzone.css*/
  2 @-webkit-keyframes passing-through {
  3   0% {
  4     opacity: 0;
  5     -webkit-transform: translateY(40px);
  6     -moz-transform: translateY(40px);
  7     -ms-transform: translateY(40px);
  8     -o-transform: translateY(40px);
  9     transform: translateY(40px); }
 10   30%, 70% {
 11     opacity: 1;
 12     -webkit-transform: translateY(0px);
 13     -moz-transform: translateY(0px);
 14     -ms-transform: translateY(0px);
 15     -o-transform: translateY(0px);
 16     transform: translateY(0px); }
 17   100% {
 18     opacity: 0;
 19     -webkit-transform: translateY(-40px);
 20     -moz-transform: translateY(-40px);
 21     -ms-transform: translateY(-40px);
 22     -o-transform: translateY(-40px);
 23     transform: translateY(-40px); } }
 24 @-moz-keyframes passing-through {
 25   0% {
 26     opacity: 0;
 27     -webkit-transform: translateY(40px);
 28     -moz-transform: translateY(40px);
 29     -ms-transform: translateY(40px);
 30     -o-transform: translateY(40px);
 31     transform: translateY(40px); }
 32   30%, 70% {
 33     opacity: 1;
 34     -webkit-transform: translateY(0px);
 35     -moz-transform: translateY(0px);
 36     -ms-transform: translateY(0px);
 37     -o-transform: translateY(0px);
 38     transform: translateY(0px); }
 39   100% {
 40     opacity: 0;
 41     -webkit-transform: translateY(-40px);
 42     -moz-transform: translateY(-40px);
 43     -ms-transform: translateY(-40px);
 44     -o-transform: translateY(-40px);
 45     transform: translateY(-40px); } }
 46 @keyframes passing-through {
 47   0% {
 48     opacity: 0;
 49     -webkit-transform: translateY(40px);
 50     -moz-transform: translateY(40px);
 51     -ms-transform: translateY(40px);
 52     -o-transform: translateY(40px);
 53     transform: translateY(40px); }
 54   30%, 70% {
 55     opacity: 1;
 56     -webkit-transform: translateY(0px);
 57     -moz-transform: translateY(0px);
 58     -ms-transform: translateY(0px);
 59     -o-transform: translateY(0px);
 60     transform: translateY(0px); }
 61   100% {
 62     opacity: 0;
 63     -webkit-transform: translateY(-40px);
 64     -moz-transform: translateY(-40px);
 65     -ms-transform: translateY(-40px);
 66     -o-transform: translateY(-40px);
 67     transform: translateY(-40px); } }
 68 @-webkit-keyframes slide-in {
 69   0% {
 70     opacity: 0;
 71     -webkit-transform: translateY(40px);
 72     -moz-transform: translateY(40px);
 73     -ms-transform: translateY(40px);
 74     -o-transform: translateY(40px);
 75     transform: translateY(40px); }
 76   30% {
 77     opacity: 1;
 78     -webkit-transform: translateY(0px);
 79     -moz-transform: translateY(0px);
 80     -ms-transform: translateY(0px);
 81     -o-transform: translateY(0px);
 82     transform: translateY(0px); } }
 83 @-moz-keyframes slide-in {
 84   0% {
 85     opacity: 0;
 86     -webkit-transform: translateY(40px);
 87     -moz-transform: translateY(40px);
 88     -ms-transform: translateY(40px);
 89     -o-transform: translateY(40px);
 90     transform: translateY(40px); }
 91   30% {
 92     opacity: 1;
 93     -webkit-transform: translateY(0px);
 94     -moz-transform: translateY(0px);
 95     -ms-transform: translateY(0px);
 96     -o-transform: translateY(0px);
 97     transform: translateY(0px); } }
 98 @keyframes slide-in {
 99   0% {
100     opacity: 0;
101     -webkit-transform: translateY(40px);
102     -moz-transform: translateY(40px);
103     -ms-transform: translateY(40px);
104     -o-transform: translateY(40px);
105     transform: translateY(40px); }
106   30% {
107     opacity: 1;
108     -webkit-transform: translateY(0px);
109     -moz-transform: translateY(0px);
110     -ms-transform: translateY(0px);
111     -o-transform: translateY(0px);
112     transform: translateY(0px); } }
113 @-webkit-keyframes pulse {
114   0% {
115     -webkit-transform: scale(1);
116     -moz-transform: scale(1);
117     -ms-transform: scale(1);
118     -o-transform: scale(1);
119     transform: scale(1); }
120   10% {
121     -webkit-transform: scale(1.1);
122     -moz-transform: scale(1.1);
123     -ms-transform: scale(1.1);
124     -o-transform: scale(1.1);
125     transform: scale(1.1); }
126   20% {
127     -webkit-transform: scale(1);
128     -moz-transform: scale(1);
129     -ms-transform: scale(1);
130     -o-transform: scale(1);
131     transform: scale(1); } }
132 @-moz-keyframes pulse {
133   0% {
134     -webkit-transform: scale(1);
135     -moz-transform: scale(1);
136     -ms-transform: scale(1);
137     -o-transform: scale(1);
138     transform: scale(1); }
139   10% {
140     -webkit-transform: scale(1.1);
141     -moz-transform: scale(1.1);
142     -ms-transform: scale(1.1);
143     -o-transform: scale(1.1);
144     transform: scale(1.1); }
145   20% {
146     -webkit-transform: scale(1);
147     -moz-transform: scale(1);
148     -ms-transform: scale(1);
149     -o-transform: scale(1);
150     transform: scale(1); } }
151 @keyframes pulse {
152   0% {
153     -webkit-transform: scale(1);
154     -moz-transform: scale(1);
155     -ms-transform: scale(1);
156     -o-transform: scale(1);
157     transform: scale(1); }
158   10% {
159     -webkit-transform: scale(1.1);
160     -moz-transform: scale(1.1);
161     -ms-transform: scale(1.1);
162     -o-transform: scale(1.1);
163     transform: scale(1.1); }
164   20% {
165     -webkit-transform: scale(1);
166     -moz-transform: scale(1);
167     -ms-transform: scale(1);
168     -o-transform: scale(1);
169     transform: scale(1); } }
170 .dropzone, .dropzone * {
171   box-sizing: border-box; }
172 
173 .dropzone {
174   min-height: 150px;
175   border: 2px solid rgba(0, 0, 0, 0.3);
176   background: white;
177   padding: 54px 54px; }
178   .dropzone.dz-clickable {
179     cursor: pointer; }
180     .dropzone.dz-clickable * {
181       cursor: default; }
182     .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
183       cursor: pointer; }
184   .dropzone.dz-started .dz-message {
185     display: none; }
186   .dropzone.dz-drag-hover {
187     border-style: solid; }
188     .dropzone.dz-drag-hover .dz-message {
189       opacity: 0.5; }
190   .dropzone .dz-message {
191     text-align: center;
192     margin: 2em 0; }
193   .dropzone .dz-preview {
194     position: relative;
195     display: inline-block;
196     vertical-align: top;
197     margin: 16px;
198     min-height: 100px; }
199     .dropzone .dz-preview:hover {
200       z-index: 1000; }
201       .dropzone .dz-preview:hover .dz-details {
202         opacity: 1; }
203     .dropzone .dz-preview.dz-file-preview .dz-image {
204       border-radius: 20px;
205       background: #999;
206       background: linear-gradient(to bottom, #eee, #ddd); }
207     .dropzone .dz-preview.dz-file-preview .dz-details {
208       opacity: 1; }
209     .dropzone .dz-preview.dz-image-preview {
210       background: white; }
211       .dropzone .dz-preview.dz-image-preview .dz-details {
212         -webkit-transition: opacity 0.2s linear;
213         -moz-transition: opacity 0.2s linear;
214         -ms-transition: opacity 0.2s linear;
215         -o-transition: opacity 0.2s linear;
216         transition: opacity 0.2s linear; }
217     .dropzone .dz-preview .dz-remove {
218       font-size: 14px;
219       text-align: center;
220       display: block;
221       cursor: pointer;
222       border: none; }
223       .dropzone .dz-preview .dz-remove:hover {
224         text-decoration: underline; }
225     .dropzone .dz-preview:hover .dz-details {
226       opacity: 1; }
227     .dropzone .dz-preview .dz-details {
228       z-index: 20;
229       position: absolute;
230       top: 0;
231       left: 0;
232       opacity: 0;
233       font-size: 13px;
234       min-width: 100%;
235       max-width: 100%;
236       padding: 2em 1em;
237       text-align: center;
238       color: rgba(0, 0, 0, 0.9);
239       line-height: 150%; }
240       .dropzone .dz-preview .dz-details .dz-size {
241         margin-bottom: 1em;
242         font-size: 16px; }
243       .dropzone .dz-preview .dz-details .dz-filename {
244         white-space: nowrap; }
245         .dropzone .dz-preview .dz-details .dz-filename:hover span {
246           border: 1px solid rgba(200, 200, 200, 0.8);
247           background-color: rgba(255, 255, 255, 0.8); }
248         .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
249           overflow: hidden;
250           text-overflow: ellipsis; }
251           .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
252             border: 1px solid transparent; }
253       .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
254         background-color: rgba(255, 255, 255, 0.4);
255         padding: 0 0.4em;
256         border-radius: 3px; }
257     .dropzone .dz-preview:hover .dz-image img {
258       -webkit-transform: scale(1.05, 1.05);
259       -moz-transform: scale(1.05, 1.05);
260       -ms-transform: scale(1.05, 1.05);
261       -o-transform: scale(1.05, 1.05);
262       transform: scale(1.05, 1.05);
263       -webkit-filter: blur(8px);
264       filter: blur(8px); }
265     .dropzone .dz-preview .dz-image {
266       border-radius: 20px;
267       overflow: hidden;
268       width: 120px;
269       height: 120px;
270       position: relative;
271       display: block;
272       z-index: 10; }
273       .dropzone .dz-preview .dz-image img {
274         display: block; }
275     .dropzone .dz-preview.dz-success .dz-success-mark {
276       -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
277       -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
278       -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
279       -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
280       animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
281     .dropzone .dz-preview.dz-error .dz-error-mark {
282       opacity: 1;
283       -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
284       -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
285       -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
286       -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
287       animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
288     .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
289       pointer-events: none;
290       opacity: 0;
291       z-index: 500;
292       position: absolute;
293       display: block;
294       top: 50%;
295       left: 50%;
296       margin-left: -27px;
297       margin-top: -27px; }
298       .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
299         display: block;
300         width: 54px;
301         height: 54px; }
302     .dropzone .dz-preview.dz-processing .dz-progress {
303       opacity: 1;
304       -webkit-transition: all 0.2s linear;
305       -moz-transition: all 0.2s linear;
306       -ms-transition: all 0.2s linear;
307       -o-transition: all 0.2s linear;
308       transition: all 0.2s linear; }
309     .dropzone .dz-preview.dz-complete .dz-progress {
310       opacity: 0;
311       -webkit-transition: opacity 0.4s ease-in;
312       -moz-transition: opacity 0.4s ease-in;
313       -ms-transition: opacity 0.4s ease-in;
314       -o-transition: opacity 0.4s ease-in;
315       transition: opacity 0.4s ease-in; }
316     .dropzone .dz-preview:not(.dz-processing) .dz-progress {
317       -webkit-animation: pulse 6s ease infinite;
318       -moz-animation: pulse 6s ease infinite;
319       -ms-animation: pulse 6s ease infinite;
320       -o-animation: pulse 6s ease infinite;
321       animation: pulse 6s ease infinite; }
322     .dropzone .dz-preview .dz-progress {
323       opacity: 1;
324       z-index: 1000;
325       pointer-events: none;
326       position: absolute;
327       height: 16px;
328       left: 50%;
329       top: 50%;
330       margin-top: -8px;
331       width: 80px;
332       margin-left: -40px;
333       background: rgba(255, 255, 255, 0.9);
334       -webkit-transform: scale(1);
335       border-radius: 8px;
336       overflow: hidden; }
337       .dropzone .dz-preview .dz-progress .dz-upload {
338         background: #333;
339         background: linear-gradient(to bottom, #666, #444);
340         position: absolute;
341         top: 0;
342         left: 0;
343         bottom: 0;
344         width: 0;
345         -webkit-transition: width 300ms ease-in-out;
346         -moz-transition: width 300ms ease-in-out;
347         -ms-transition: width 300ms ease-in-out;
348         -o-transition: width 300ms ease-in-out;
349         transition: width 300ms ease-in-out; }
350     .dropzone .dz-preview.dz-error .dz-error-message {
351       display: block; }
352     .dropzone .dz-preview.dz-error:hover .dz-error-message {
353       opacity: 1;
354       pointer-events: auto; }
355     .dropzone .dz-preview .dz-error-message {
356       pointer-events: none;
357       z-index: 1000;
358       position: absolute;
359       display: block;
360       display: none;
361       opacity: 0;
362       -webkit-transition: opacity 0.3s ease;
363       -moz-transition: opacity 0.3s ease;
364       -ms-transition: opacity 0.3s ease;
365       -o-transition: opacity 0.3s ease;
366       transition: opacity 0.3s ease;
367       border-radius: 8px;
368       font-size: 13px;
369       top: 130px;
370       left: -10px;
371       width: 140px;
372       background: #be2626;
373       background: linear-gradient(to bottom, #be2626, #a92222);
374       padding: 0.5em 1.2em;
375       color: white; }
376       .dropzone .dz-preview .dz-error-message:after {
377         content: '';
378         position: absolute;
379         top: -6px;
380         left: 64px;
381         width: 0;
382         height: 0;
383         border-left: 6px solid transparent;
384         border-right: 6px solid transparent;
385         border-bottom: 6px solid #be2626; }
/*dropzone.css*/

 

   1 /*dropzone.js
   2  *
   3  * More info at [www.dropzonejs.com](http://www.dropzonejs.com)
   4  *
   5  * Copyright (c) 2012, Matias Meno
   6  *
   7  * Permission is hereby granted, free of charge, to any person obtaining a copy
   8  * of this software and associated documentation files (the "Software"), to deal
   9  * in the Software without restriction, including without limitation the rights
  10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  11  * copies of the Software, and to permit persons to whom the Software is
  12  * furnished to do so, subject to the following conditions:
  13  *
  14  * The above copyright notice and this permission notice shall be included in
  15  * all copies or substantial portions of the Software.
  16  *
  17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  23  * THE SOFTWARE.
  24  *
  25  *   *特此授予许可,免费的,任何的人获得一份
  26   *这个软件和相关文档的文件(“软件”),交易
  27   *在软件没有限制,包括但不限于权利
  28   *使用、复制、修改、合并、出版、发行、有偿和/或出售
  29   *软件的副本,并允许他们的软件
  30   *提供,应当具备下列条件:
  31   *
  32   *上述版权声明和本许可声明应当包含在
  33   *所有副本或实质性部分的软件。
  34   *
  35   *提供的软件是“是”,没有任何类型的保证,明示或
  36   *暗示的保证,包括但不限于适销性的保证,
  37   *健身为特定目的和无侵犯。在任何事件应当的
  38   *作者或版权所有者承担任何索赔、损害或其他
  39   *责任,无论是在一个动作的合同,侵权或否则,因,
  40   *在连接或WI
  41 
  42  */
  43 
  44 (function() {
  45   var Dropzone, Emitter, ExifRestore, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,
  46     slice = [].slice,
  47     extend1 = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
  48     hasProp = {}.hasOwnProperty;
  49 
  50   noop = function() {};
  51 
  52   Emitter = (function() {
  53     function Emitter() {}
  54 
  55     Emitter.prototype.addEventListener = Emitter.prototype.on;
  56 
  57     Emitter.prototype.on = function(event, fn) {
  58       this._callbacks = this._callbacks || {};
  59       if (!this._callbacks[event]) {
  60         this._callbacks[event] = [];
  61       }
  62       this._callbacks[event].push(fn);
  63       return this;
  64     };
  65 
  66     Emitter.prototype.emit = function() {
  67       var args, callback, callbacks, event, j, len;
  68       event = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
  69       this._callbacks = this._callbacks || {};
  70       callbacks = this._callbacks[event];
  71       if (callbacks) {
  72         for (j = 0, len = callbacks.length; j < len; j++) {
  73           callback = callbacks[j];
  74           callback.apply(this, args);
  75         }
  76       }
  77       return this;
  78     };
  79 
  80     Emitter.prototype.removeListener = Emitter.prototype.off;
  81 
  82     Emitter.prototype.removeAllListeners = Emitter.prototype.off;
  83 
  84     Emitter.prototype.removeEventListener = Emitter.prototype.off;
  85 
  86     Emitter.prototype.off = function(event, fn) {
  87       var callback, callbacks, i, j, len;
  88       if (!this._callbacks || arguments.length === 0) {
  89         this._callbacks = {};
  90         return this;
  91       }
  92       callbacks = this._callbacks[event];
  93       if (!callbacks) {
  94         return this;
  95       }
  96       if (arguments.length === 1) {
  97         delete this._callbacks[event];
  98         return this;
  99       }
 100       for (i = j = 0, len = callbacks.length; j < len; i = ++j) {
 101         callback = callbacks[i];
 102         if (callback === fn) {
 103           callbacks.splice(i, 1);
 104           break;
 105         }
 106       }
 107       return this;
 108     };
 109 
 110     return Emitter;
 111 
 112   })();
 113 
 114   Dropzone = (function(superClass) {
 115     var extend, resolveOption;
 116 
 117     extend1(Dropzone, superClass);
 118 
 119     Dropzone.prototype.Emitter = Emitter;
 120 
 121 
 122     /*
 123     This is a list of all available events you can register on a dropzone object.
 124     
 125     You can register an event handler like this:
 126     
 127         dropzone.on("dragEnter", function() { });
 128      */
 129 
 130     Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"];
 131 
 132     Dropzone.prototype.defaultOptions = {
 133       url: null,
 134       method: "post",
 135       withCredentials: false,
 136       timeout: 30000,
 137       parallelUploads: 2,
 138       uploadMultiple: false,
 139       maxFilesize: 256,
 140       paramName: "file",
 141       createImageThumbnails: true,
 142       maxThumbnailFilesize: 10,
 143       thumbnailWidth: 120,
 144       thumbnailHeight: 120,
 145       thumbnailMethod: 'crop',
 146       resizeWidth: null,
 147       resizeHeight: null,
 148       resizeMimeType: null,
 149       resizeQuality: 0.8,
 150       resizeMethod: 'contain',
 151       filesizeBase: 1000,
 152       maxFiles: null,
 153       params: {},
 154       headers: null,
 155       clickable: true,
 156       ignoreHiddenFiles: true,
 157       acceptedFiles: null,
 158       acceptedMimeTypes: null,
 159       autoProcessQueue: true,
 160       autoQueue: true,
 161       addRemoveLinks: false,
 162       previewsContainer: null,
 163       hiddenInputContainer: "body",
 164       capture: null,
 165       renameFilename: null,
 166       renameFile: null,
 167       forceFallback: false,
 168       dictDefaultMessage: "Drop files here to upload",
 169       dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
 170       dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
 171       dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",
 172       dictInvalidFileType: "You can't upload files of this type.",
 173       dictResponseError: "Server responded with {{statusCode}} code.",
 174       dictCancelUpload: "Cancel upload",
 175       dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
 176       dictRemoveFile: "Remove file",
 177       dictRemoveFileConfirmation: null,
 178       dictMaxFilesExceeded: "You can not upload any more files.",
 179       dictFileSizeUnits: {
 180         tb: "TB",
 181         gb: "GB",
 182         mb: "MB",
 183         kb: "KB",
 184         b: "b"
 185       },
 186       init: function() {
 187         return noop;
 188       },
 189       accept: function(file, done) {
 190         return done();
 191       },
 192       fallback: function() {
 193         var child, j, len, messageElement, ref, span;
 194         this.element.className = this.element.className + " dz-browser-not-supported";
 195         ref = this.element.getElementsByTagName("div");
 196         for (j = 0, len = ref.length; j < len; j++) {
 197           child = ref[j];
 198           if (/(^| )dz-message($| )/.test(child.className)) {
 199             messageElement = child;
 200             child.className = "dz-message";
 201             continue;
 202           }
 203         }
 204         if (!messageElement) {
 205           messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>");
 206           this.element.appendChild(messageElement);
 207         }
 208         span = messageElement.getElementsByTagName("span")[0];
 209         if (span) {
 210           if (span.textContent != null) {
 211             span.textContent = this.options.dictFallbackMessage;
 212           } else if (span.innerText != null) {
 213             span.innerText = this.options.dictFallbackMessage;
 214           }
 215         }
 216         return this.element.appendChild(this.getFallbackForm());
 217       },
 218       resize: function(file, width, height, resizeMethod) {
 219         var info, srcRatio, trgRatio;
 220         info = {
 221           srcX: 0,
 222           srcY: 0,
 223           srcWidth: file.width,
 224           srcHeight: file.height
 225         };
 226         srcRatio = file.width / file.height;
 227         if ((width == null) && (height == null)) {
 228           width = info.srcWidth;
 229           height = info.srcHeight;
 230         } else if (width == null) {
 231           width = height * srcRatio;
 232         } else if (height == null) {
 233           height = width / srcRatio;
 234         }
 235         width = Math.min(width, info.srcWidth);
 236         height = Math.min(height, info.srcHeight);
 237         trgRatio = width / height;
 238         if (info.srcWidth > width || info.srcHeight > height) {
 239           if (resizeMethod === 'crop') {
 240             if (srcRatio > trgRatio) {
 241               info.srcHeight = file.height;
 242               info.srcWidth = info.srcHeight * trgRatio;
 243             } else {
 244               info.srcWidth = file.width;
 245               info.srcHeight = info.srcWidth / trgRatio;
 246             }
 247           } else if (resizeMethod === 'contain') {
 248             if (srcRatio > trgRatio) {
 249               height = width / srcRatio;
 250             } else {
 251               width = height * srcRatio;
 252             }
 253           } else {
 254             throw new Error("Unknown resizeMethod '" + resizeMethod + "'");
 255           }
 256         }
 257         info.srcX = (file.width - info.srcWidth) / 2;
 258         info.srcY = (file.height - info.srcHeight) / 2;
 259         info.trgWidth = width;
 260         info.trgHeight = height;
 261         return info;
 262       },
 263       transformFile: function(file, done) {
 264         if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
 265           return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
 266         } else {
 267           return done(file);
 268         }
 269       },
 270       previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n  <div class=\"dz-details\">\n    <div class=\"dz-size\"><span data-dz-size></span></div>\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n  </div>\n  <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n  <div class=\"dz-success-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n      <title>Check</title>\n      <defs></defs>\n      <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n        <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\" sketch:type=\"MSShapeGroup\"></path>\n      </g>\n    </svg>\n  </div>\n  <div class=\"dz-error-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n      <title>Error</title>\n      <defs></defs>\n      <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n        <g id=\"Check-+-Oval-2\" sketch:type=\"MSLayerGroup\" stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n          <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" sketch:type=\"MSShapeGroup\"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>",
 271 
 272       /*
 273       Those functions register themselves to the events on init and handle all
 274       the user interface specific stuff. Overwriting them won't break the upload
 275       but can break the way it's displayed.
 276       You can overwrite them if you don't like the default behavior. If you just
 277       want to add an additional event handler, register it on the dropzone object
 278       and don't overwrite those options.
 279        */
 280       drop: function(e) {
 281         return this.element.classList.remove("dz-drag-hover");
 282       },
 283       dragstart: noop,
 284       dragend: function(e) {
 285         return this.element.classList.remove("dz-drag-hover");
 286       },
 287       dragenter: function(e) {
 288         return this.element.classList.add("dz-drag-hover");
 289       },
 290       dragover: function(e) {
 291         return this.element.classList.add("dz-drag-hover");
 292       },
 293       dragleave: function(e) {
 294         return this.element.classList.remove("dz-drag-hover");
 295       },
 296       paste: noop,
 297       reset: function() {
 298         return this.element.classList.remove("dz-started");
 299       },
 300       addedfile: function(file) {
 301         var j, k, l, len, len1, len2, node, ref, ref1, ref2, removeFileEvent, removeLink, results;
 302         if (this.element === this.previewsContainer) {
 303           this.element.classList.add("dz-started");
 304         }
 305         if (this.previewsContainer) {
 306           file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());
 307           file.previewTemplate = file.previewElement;
 308           this.previewsContainer.appendChild(file.previewElement);
 309           ref = file.previewElement.querySelectorAll("[data-dz-name]");
 310           for (j = 0, len = ref.length; j < len; j++) {
 311             node = ref[j];
 312             node.textContent = file.name;
 313           }
 314           ref1 = file.previewElement.querySelectorAll("[data-dz-size]");
 315           for (k = 0, len1 = ref1.length; k < len1; k++) {
 316             node = ref1[k];
 317             node.innerHTML = this.filesize(file.size);
 318           }
 319           if (this.options.addRemoveLinks) {
 320             file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>" + this.options.dictRemoveFile + "</a>");
 321             file.previewElement.appendChild(file._removeLink);
 322           }
 323           removeFileEvent = (function(_this) {
 324             return function(e) {
 325               e.preventDefault();
 326               e.stopPropagation();
 327               if (file.status === Dropzone.UPLOADING) {
 328                 return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {
 329                   return _this.removeFile(file);
 330                 });
 331               } else {
 332                 if (_this.options.dictRemoveFileConfirmation) {
 333                   return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {
 334                     return _this.removeFile(file);
 335                   });
 336                 } else {
 337                   return _this.removeFile(file);
 338                 }
 339               }
 340             };
 341           })(this);
 342           ref2 = file.previewElement.querySelectorAll("[data-dz-remove]");
 343           results = [];
 344           for (l = 0, len2 = ref2.length; l < len2; l++) {
 345             removeLink = ref2[l];
 346             results.push(removeLink.addEventListener("click", removeFileEvent));
 347           }
 348           return results;
 349         }
 350       },
 351       removedfile: function(file) {
 352         var ref;
 353         if (file.previewElement) {
 354           if ((ref = file.previewElement) != null) {
 355             ref.parentNode.removeChild(file.previewElement);
 356           }
 357         }
 358         return this._updateMaxFilesReachedClass();
 359       },
 360       thumbnail: function(file, dataUrl) {
 361         var j, len, ref, thumbnailElement;
 362         if (file.previewElement) {
 363           file.previewElement.classList.remove("dz-file-preview");
 364           ref = file.previewElement.querySelectorAll("[data-dz-thumbnail]");
 365           for (j = 0, len = ref.length; j < len; j++) {
 366             thumbnailElement = ref[j];
 367             thumbnailElement.alt = file.name;
 368             thumbnailElement.src = dataUrl;
 369           }
 370           return setTimeout(((function(_this) {
 371             return function() {
 372               return file.previewElement.classList.add("dz-image-preview");
 373             };
 374           })(this)), 1);
 375         }
 376       },
 377       error: function(file, message) {
 378         var j, len, node, ref, results;
 379         if (file.previewElement) {
 380           file.previewElement.classList.add("dz-error");
 381           if (typeof message !== "String" && message.error) {
 382             message = message.error;
 383           }
 384           ref = file.previewElement.querySelectorAll("[data-dz-errormessage]");
 385           results = [];
 386           for (j = 0, len = ref.length; j < len; j++) {
 387             node = ref[j];
 388             results.push(node.textContent = message);
 389           }
 390           return results;
 391         }
 392       },
 393       errormultiple: noop,
 394       processing: function(file) {
 395         if (file.previewElement) {
 396           file.previewElement.classList.add("dz-processing");
 397           if (file._removeLink) {
 398             return file._removeLink.textContent = this.options.dictCancelUpload;
 399           }
 400         }
 401       },
 402       processingmultiple: noop,
 403       uploadprogress: function(file, progress, bytesSent) {
 404         var j, len, node, ref, results;
 405         if (file.previewElement) {
 406           ref = file.previewElement.querySelectorAll("[data-dz-uploadprogress]");
 407           results = [];
 408           for (j = 0, len = ref.length; j < len; j++) {
 409             node = ref[j];
 410             if (node.nodeName === 'PROGRESS') {
 411               results.push(node.value = progress);
 412             } else {
 413               results.push(node.style.width = progress + "%");
 414             }
 415           }
 416           return results;
 417         }
 418       },
 419       totaluploadprogress: noop,
 420       sending: noop,
 421       sendingmultiple: noop,
 422       success: function(file) {
 423         if (file.previewElement) {
 424           return file.previewElement.classList.add("dz-success");
 425         }
 426       },
 427       successmultiple: noop,
 428       canceled: function(file) {
 429         return this.emit("error", file, "Upload canceled.");
 430       },
 431       canceledmultiple: noop,
 432       complete: function(file) {
 433         if (file._removeLink) {
 434           file._removeLink.textContent = this.options.dictRemoveFile;
 435         }
 436         if (file.previewElement) {
 437           return file.previewElement.classList.add("dz-complete");
 438         }
 439       },
 440       completemultiple: noop,
 441       maxfilesexceeded: noop,
 442       maxfilesreached: noop,
 443       queuecomplete: noop,
 444       addedfiles: noop
 445     };
 446 
 447     extend = function() {
 448       var j, key, len, object, objects, target, val;
 449       target = arguments[0], objects = 2 <= arguments.length ? slice.call(arguments, 1) : [];
 450       for (j = 0, len = objects.length; j < len; j++) {
 451         object = objects[j];
 452         for (key in object) {
 453           val = object[key];
 454           target[key] = val;
 455         }
 456       }
 457       return target;
 458     };
 459 
 460     function Dropzone(element1, options) {
 461       var elementOptions, fallback, ref;
 462       this.element = element1;
 463       this.version = Dropzone.version;
 464       this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, "");
 465       this.clickableElements = [];
 466       this.listeners = [];
 467       this.files = [];
 468       if (typeof this.element === "string") {
 469         this.element = document.querySelector(this.element);
 470       }
 471       if (!(this.element && (this.element.nodeType != null))) {
 472         throw new Error("Invalid dropzone element.");
 473       }
 474       if (this.element.dropzone) {
 475         throw new Error("Dropzone already attached.");
 476       }
 477       Dropzone.instances.push(this);
 478       this.element.dropzone = this;
 479       elementOptions = (ref = Dropzone.optionsForElement(this.element)) != null ? ref : {};
 480       this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});
 481       if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {
 482         return this.options.fallback.call(this);
 483       }
 484       if (this.options.url == null) {
 485         this.options.url = this.element.getAttribute("action");
 486       }
 487       if (!this.options.url) {
 488         throw new Error("No URL provided.");
 489       }
 490       if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {
 491         throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
 492       }
 493       if (this.options.acceptedMimeTypes) {
 494         this.options.acceptedFiles = this.options.acceptedMimeTypes;
 495         delete this.options.acceptedMimeTypes;
 496       }
 497       if (this.options.renameFilename != null) {
 498         this.options.renameFile = (function(_this) {
 499           return function(file) {
 500             return _this.options.renameFilename.call(_this, file.name, file);
 501           };
 502         })(this);
 503       }
 504       this.options.method = this.options.method.toUpperCase();
 505       if ((fallback = this.getExistingFallback()) && fallback.parentNode) {
 506         fallback.parentNode.removeChild(fallback);
 507       }
 508       if (this.options.previewsContainer !== false) {
 509         if (this.options.previewsContainer) {
 510           this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, "previewsContainer");
 511         } else {
 512           this.previewsContainer = this.element;
 513         }
 514       }
 515       if (this.options.clickable) {
 516         if (this.options.clickable === true) {
 517           this.clickableElements = [this.element];
 518         } else {
 519           this.clickableElements = Dropzone.getElements(this.options.clickable, "clickable");
 520         }
 521       }
 522       this.init();
 523     }
 524 
 525     Dropzone.prototype.getAcceptedFiles = function() {
 526       var file, j, len, ref, results;
 527       ref = this.files;
 528       results = [];
 529       for (j = 0, len = ref.length; j < len; j++) {
 530         file = ref[j];
 531         if (file.accepted) {
 532           results.push(file);
 533         }
 534       }
 535       return results;
 536     };
 537 
 538     Dropzone.prototype.getRejectedFiles = function() {
 539       var file, j, len, ref, results;
 540       ref = this.files;
 541       results = [];
 542       for (j = 0, len = ref.length; j < len; j++) {
 543         file = ref[j];
 544         if (!file.accepted) {
 545           results.push(file);
 546         }
 547       }
 548       return results;
 549     };
 550 
 551     Dropzone.prototype.getFilesWithStatus = function(status) {
 552       var file, j, len, ref, results;
 553       ref = this.files;
 554       results = [];
 555       for (j = 0, len = ref.length; j < len; j++) {
 556         file = ref[j];
 557         if (file.status === status) {
 558           results.push(file);
 559         }
 560       }
 561       return results;
 562     };
 563 
 564     Dropzone.prototype.getQueuedFiles = function() {
 565       return this.getFilesWithStatus(Dropzone.QUEUED);
 566     };
 567 
 568     Dropzone.prototype.getUploadingFiles = function() {
 569       return this.getFilesWithStatus(Dropzone.UPLOADING);
 570     };
 571 
 572     Dropzone.prototype.getAddedFiles = function() {
 573       return this.getFilesWithStatus(Dropzone.ADDED);
 574     };
 575 
 576     Dropzone.prototype.getActiveFiles = function() {
 577       var file, j, len, ref, results;
 578       ref = this.files;
 579       results = [];
 580       for (j = 0, len = ref.length; j < len; j++) {
 581         file = ref[j];
 582         if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {
 583           results.push(file);
 584         }
 585       }
 586       return results;
 587     };
 588 
 589     Dropzone.prototype.init = function() {
 590       var eventName, j, len, noPropagation, ref, ref1, setupHiddenFileInput;
 591       if (this.element.tagName === "form") {
 592         this.element.setAttribute("enctype", "multipart/form-data");
 593       }
 594       if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) {
 595         this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><span>" + this.options.dictDefaultMessage + "</span></div>"));
 596       }
 597       if (this.clickableElements.length) {
 598         setupHiddenFileInput = (function(_this) {
 599           return function() {
 600             if (_this.hiddenFileInput) {
 601               _this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput);
 602             }
 603             _this.hiddenFileInput = document.createElement("input");
 604             _this.hiddenFileInput.setAttribute("type", "file");
 605             if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {
 606               _this.hiddenFileInput.setAttribute("multiple", "multiple");
 607             }
 608             _this.hiddenFileInput.className = "dz-hidden-input";
 609             if (_this.options.acceptedFiles != null) {
 610               _this.hiddenFileInput.setAttribute("accept", _this.options.acceptedFiles);
 611             }
 612             if (_this.options.capture != null) {
 613               _this.hiddenFileInput.setAttribute("capture", _this.options.capture);
 614             }
 615             _this.hiddenFileInput.style.visibility = "hidden";
 616             _this.hiddenFileInput.style.position = "absolute";
 617             _this.hiddenFileInput.style.top = "0";
 618             _this.hiddenFileInput.style.left = "0";
 619             _this.hiddenFileInput.style.height = "0";
 620             _this.hiddenFileInput.style.width = "0";
 621             document.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput);
 622             return _this.hiddenFileInput.addEventListener("change", function() {
 623               var file, files, j, len;
 624               files = _this.hiddenFileInput.files;
 625               if (files.length) {
 626                 for (j = 0, len = files.length; j < len; j++) {
 627                   file = files[j];
 628                   _this.addFile(file);
 629                 }
 630               }
 631               _this.emit("addedfiles", files);
 632               return setupHiddenFileInput();
 633             });
 634           };
 635         })(this);
 636         setupHiddenFileInput();
 637       }
 638       this.URL = (ref = window.URL) != null ? ref : window.webkitURL;
 639       ref1 = this.events;
 640       for (j = 0, len = ref1.length; j < len; j++) {
 641         eventName = ref1[j];
 642         this.on(eventName, this.options[eventName]);
 643       }
 644       this.on("uploadprogress", (function(_this) {
 645         return function() {
 646           return _this.updateTotalUploadProgress();
 647         };
 648       })(this));
 649       this.on("removedfile", (function(_this) {
 650         return function() {
 651           return _this.updateTotalUploadProgress();
 652         };
 653       })(this));
 654       this.on("canceled", (function(_this) {
 655         return function(file) {
 656           return _this.emit("complete", file);
 657         };
 658       })(this));
 659       this.on("complete", (function(_this) {
 660         return function(file) {
 661           if (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {
 662             return setTimeout((function() {
 663               return _this.emit("queuecomplete");
 664             }), 0);
 665           }
 666         };
 667       })(this));
 668       noPropagation = function(e) {
 669         e.stopPropagation();
 670         if (e.preventDefault) {
 671           return e.preventDefault();
 672         } else {
 673           return e.returnValue = false;
 674         }
 675       };
 676       this.listeners = [
 677         {
 678           element: this.element,
 679           events: {
 680             "dragstart": (function(_this) {
 681               return function(e) {
 682                 return _this.emit("dragstart", e);
 683               };
 684             })(this),
 685             "dragenter": (function(_this) {
 686               return function(e) {
 687                 noPropagation(e);
 688                 return _this.emit("dragenter", e);
 689               };
 690             })(this),
 691             "dragover": (function(_this) {
 692               return function(e) {
 693                 var efct;
 694                 try {
 695                   efct = e.dataTransfer.effectAllowed;
 696                 } catch (undefined) {}
 697                 e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';
 698                 noPropagation(e);
 699                 return _this.emit("dragover", e);
 700               };
 701             })(this),
 702             "dragleave": (function(_this) {
 703               return function(e) {
 704                 return _this.emit("dragleave", e);
 705               };
 706             })(this),
 707             "drop": (function(_this) {
 708               return function(e) {
 709                 noPropagation(e);
 710                 return _this.drop(e);
 711               };
 712             })(this),
 713             "dragend": (function(_this) {
 714               return function(e) {
 715                 return _this.emit("dragend", e);
 716               };
 717             })(this)
 718           }
 719         }
 720       ];
 721       this.clickableElements.forEach((function(_this) {
 722         return function(clickableElement) {
 723           return _this.listeners.push({
 724             element: clickableElement,
 725             events: {
 726               "click": function(evt) {
 727                 if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(".dz-message")))) {
 728                   _this.hiddenFileInput.click();
 729                 }
 730                 return true;
 731               }
 732             }
 733           });
 734         };
 735       })(this));
 736       this.enable();
 737       return this.options.init.call(this);
 738     };
 739 
 740     Dropzone.prototype.destroy = function() {
 741       var ref;
 742       this.disable();
 743       this.removeAllFiles(true);
 744       if ((ref = this.hiddenFileInput) != null ? ref.parentNode : void 0) {
 745         this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);
 746         this.hiddenFileInput = null;
 747       }
 748       delete this.element.dropzone;
 749       return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);
 750     };
 751 
 752     Dropzone.prototype.updateTotalUploadProgress = function() {
 753       var activeFiles, file, j, len, ref, totalBytes, totalBytesSent, totalUploadProgress;
 754       totalBytesSent = 0;
 755       totalBytes = 0;
 756       activeFiles = this.getActiveFiles();
 757       if (activeFiles.length) {
 758         ref = this.getActiveFiles();
 759         for (j = 0, len = ref.length; j < len; j++) {
 760           file = ref[j];
 761           totalBytesSent += file.upload.bytesSent;
 762           totalBytes += file.upload.total;
 763         }
 764         totalUploadProgress = 100 * totalBytesSent / totalBytes;
 765       } else {
 766         totalUploadProgress = 100;
 767       }
 768       return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent);
 769     };
 770 
 771     Dropzone.prototype._getParamName = function(n) {
 772       if (typeof this.options.paramName === "function") {
 773         return this.options.paramName(n);
 774       } else {
 775         return "" + this.options.paramName + (this.options.uploadMultiple ? "[" + n + "]" : "");
 776       }
 777     };
 778 
 779     Dropzone.prototype._renameFile = function(file) {
 780       if (typeof this.options.renameFile !== "function") {
 781         return file.name;
 782       }
 783       return this.options.renameFile(file);
 784     };
 785 
 786     Dropzone.prototype.getFallbackForm = function() {
 787       var existingFallback, fields, fieldsString, form;
 788       if (existingFallback = this.getExistingFallback()) {
 789         return existingFallback;
 790       }
 791       fieldsString = "<div class=\"dz-fallback\">";
 792       if (this.options.dictFallbackText) {
 793         fieldsString += "<p>" + this.options.dictFallbackText + "</p>";
 794       }
 795       fieldsString += "<input type=\"file\" name=\"" + (this._getParamName(0)) + "\" " + (this.options.uploadMultiple ? 'multiple="multiple"' : void 0) + " /><input type=\"submit\" value=\"Upload!\"></div>";
 796       fields = Dropzone.createElement(fieldsString);
 797       if (this.element.tagName !== "FORM") {
 798         form = Dropzone.createElement("<form action=\"" + this.options.url + "\" enctype=\"multipart/form-data\" method=\"" + this.options.method + "\"></form>");
 799         form.appendChild(fields);
 800       } else {
 801         this.element.setAttribute("enctype", "multipart/form-data");
 802         this.element.setAttribute("method", this.options.method);
 803       }
 804       return form != null ? form : fields;
 805     };
 806 
 807     Dropzone.prototype.getExistingFallback = function() {
 808       var fallback, getFallback, j, len, ref, tagName;
 809       getFallback = function(elements) {
 810         var el, j, len;
 811         for (j = 0, len = elements.length; j < len; j++) {
 812           el = elements[j];
 813           if (/(^| )fallback($| )/.test(el.className)) {
 814             return el;
 815           }
 816         }
 817       };
 818       ref = ["div", "form"];
 819       for (j = 0, len = ref.length; j < len; j++) {
 820         tagName = ref[j];
 821         if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {
 822           return fallback;
 823         }
 824       }
 825     };
 826 
 827     Dropzone.prototype.setupEventListeners = function() {
 828       var elementListeners, event, j, len, listener, ref, results;
 829       ref = this.listeners;
 830       results = [];
 831       for (j = 0, len = ref.length; j < len; j++) {
 832         elementListeners = ref[j];
 833         results.push((function() {
 834           var ref1, results1;
 835           ref1 = elementListeners.events;
 836           results1 = [];
 837           for (event in ref1) {
 838             listener = ref1[event];
 839             results1.push(elementListeners.element.addEventListener(event, listener, false));
 840           }
 841           return results1;
 842         })());
 843       }
 844       return results;
 845     };
 846 
 847     Dropzone.prototype.removeEventListeners = function() {
 848       var elementListeners, event, j, len, listener, ref, results;
 849       ref = this.listeners;
 850       results = [];
 851       for (j = 0, len = ref.length; j < len; j++) {
 852         elementListeners = ref[j];
 853         results.push((function() {
 854           var ref1, results1;
 855           ref1 = elementListeners.events;
 856           results1 = [];
 857           for (event in ref1) {
 858             listener = ref1[event];
 859             results1.push(elementListeners.element.removeEventListener(event, listener, false));
 860           }
 861           return results1;
 862         })());
 863       }
 864       return results;
 865     };
 866 
 867     Dropzone.prototype.disable = function() {
 868       var file, j, len, ref, results;
 869       this.clickableElements.forEach(function(element) {
 870         return element.classList.remove("dz-clickable");
 871       });
 872       this.removeEventListeners();
 873       ref = this.files;
 874       results = [];
 875       for (j = 0, len = ref.length; j < len; j++) {
 876         file = ref[j];
 877         results.push(this.cancelUpload(file));
 878       }
 879       return results;
 880     };
 881 
 882     Dropzone.prototype.enable = function() {
 883       this.clickableElements.forEach(function(element) {
 884         return element.classList.add("dz-clickable");
 885       });
 886       return this.setupEventListeners();
 887     };
 888 
 889     Dropzone.prototype.filesize = function(size) {
 890       var cutoff, i, j, len, selectedSize, selectedUnit, unit, units;
 891       selectedSize = 0;
 892       selectedUnit = "b";
 893       if (size > 0) {
 894         units = ['tb', 'gb', 'mb', 'kb', 'b'];
 895         for (i = j = 0, len = units.length; j < len; i = ++j) {
 896           unit = units[i];
 897           cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;
 898           if (size >= cutoff) {
 899             selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);
 900             selectedUnit = unit;
 901             break;
 902           }
 903         }
 904         selectedSize = Math.round(10 * selectedSize) / 10;
 905       }
 906       return "<strong>" + selectedSize + "</strong> " + this.options.dictFileSizeUnits[selectedUnit];
 907     };
 908 
 909     Dropzone.prototype._updateMaxFilesReachedClass = function() {
 910       if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {
 911         if (this.getAcceptedFiles().length === this.options.maxFiles) {
 912           this.emit('maxfilesreached', this.files);
 913         }
 914         return this.element.classList.add("dz-max-files-reached");
 915       } else {
 916         return this.element.classList.remove("dz-max-files-reached");
 917       }
 918     };
 919 
 920     Dropzone.prototype.drop = function(e) {
 921       var files, items;
 922       if (!e.dataTransfer) {
 923         return;
 924       }
 925       this.emit("drop", e);
 926       files = e.dataTransfer.files;
 927       this.emit("addedfiles", files);
 928       if (files.length) {
 929         items = e.dataTransfer.items;
 930         if (items && items.length && (items[0].webkitGetAsEntry != null)) {
 931           this._addFilesFromItems(items);
 932         } else {
 933           this.handleFiles(files);
 934         }
 935       }
 936     };
 937 
 938     Dropzone.prototype.paste = function(e) {
 939       var items, ref;
 940       if ((e != null ? (ref = e.clipboardData) != null ? ref.items : void 0 : void 0) == null) {
 941         return;
 942       }
 943       this.emit("paste", e);
 944       items = e.clipboardData.items;
 945       if (items.length) {
 946         return this._addFilesFromItems(items);
 947       }
 948     };
 949 
 950     Dropzone.prototype.handleFiles = function(files) {
 951       var file, j, len, results;
 952       results = [];
 953       for (j = 0, len = files.length; j < len; j++) {
 954         file = files[j];
 955         results.push(this.addFile(file));
 956       }
 957       return results;
 958     };
 959 
 960     Dropzone.prototype._addFilesFromItems = function(items) {
 961       var entry, item, j, len, results;
 962       results = [];
 963       for (j = 0, len = items.length; j < len; j++) {
 964         item = items[j];
 965         if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {
 966           if (entry.isFile) {
 967             results.push(this.addFile(item.getAsFile()));
 968           } else if (entry.isDirectory) {
 969             results.push(this._addFilesFromDirectory(entry, entry.name));
 970           } else {
 971             results.push(void 0);
 972           }
 973         } else if (item.getAsFile != null) {
 974           if ((item.kind == null) || item.kind === "file") {
 975             results.push(this.addFile(item.getAsFile()));
 976           } else {
 977             results.push(void 0);
 978           }
 979         } else {
 980           results.push(void 0);
 981         }
 982       }
 983       return results;
 984     };
 985 
 986     Dropzone.prototype._addFilesFromDirectory = function(directory, path) {
 987       var dirReader, errorHandler, readEntries;
 988       dirReader = directory.createReader();
 989       errorHandler = function(error) {
 990         return typeof console !== "undefined" && console !== null ? typeof console.log === "function" ? console.log(error) : void 0 : void 0;
 991       };
 992       readEntries = (function(_this) {
 993         return function() {
 994           return dirReader.readEntries(function(entries) {
 995             var entry, j, len;
 996             if (entries.length > 0) {
 997               for (j = 0, len = entries.length; j < len; j++) {
 998                 entry = entries[j];
 999                 if (entry.isFile) {
1000                   entry.file(function(file) {
1001                     if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {
1002                       return;
1003                     }
1004                     file.fullPath = path + "/" + file.name;
1005                     return _this.addFile(file);
1006                   });
1007                 } else if (entry.isDirectory) {
1008                   _this._addFilesFromDirectory(entry, path + "/" + entry.name);
1009                 }
1010               }
1011               readEntries();
1012             }
1013             return null;
1014           }, errorHandler);
1015         };
1016       })(this);
1017       return readEntries();
1018     };
1019 
1020     Dropzone.prototype.accept = function(file, done) {
1021       if (file.size > this.options.maxFilesize * 1024 * 1024) {
1022         return done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize));
1023       } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {
1024         return done(this.options.dictInvalidFileType);
1025       } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {
1026         done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles));
1027         return this.emit("maxfilesexceeded", file);
1028       } else {
1029         return this.options.accept.call(this, file, done);
1030       }
1031     };
1032 
1033     Dropzone.prototype.addFile = function(file) {
1034       file.upload = {
1035         progress: 0,
1036         total: file.size,
1037         bytesSent: 0,
1038         filename: this._renameFile(file)
1039       };
1040       this.files.push(file);
1041       file.status = Dropzone.ADDED;
1042       this.emit("addedfile", file);
1043       this._enqueueThumbnail(file);
1044       return this.accept(file, (function(_this) {
1045         return function(error) {
1046           if (error) {
1047             file.accepted = false;
1048             _this._errorProcessing([file], error);
1049           } else {
1050             file.accepted = true;
1051             if (_this.options.autoQueue) {
1052               _this.enqueueFile(file);
1053             }
1054           }
1055           return _this._updateMaxFilesReachedClass();
1056         };
1057       })(this));
1058     };
1059 
1060     Dropzone.prototype.enqueueFiles = function(files) {
1061       var file, j, len;
1062       for (j = 0, len = files.length; j < len; j++) {
1063         file = files[j];
1064         this.enqueueFile(file);
1065       }
1066       return null;
1067     };
1068 
1069     Dropzone.prototype.enqueueFile = function(file) {
1070       if (file.status === Dropzone.ADDED && file.accepted === true) {
1071         file.status = Dropzone.QUEUED;
1072         if (this.options.autoProcessQueue) {
1073           return setTimeout(((function(_this) {
1074             return function() {
1075               return _this.processQueue();
1076             };
1077           })(this)), 0);
1078         }
1079       } else {
1080         throw new Error("This file can't be queued because it has already been processed or was rejected.");
1081       }
1082     };
1083 
1084     Dropzone.prototype._thumbnailQueue = [];
1085 
1086     Dropzone.prototype._processingThumbnail = false;
1087 
1088     Dropzone.prototype._enqueueThumbnail = function(file) {
1089       if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {
1090         this._thumbnailQueue.push(file);
1091         return setTimeout(((function(_this) {
1092           return function() {
1093             return _this._processThumbnailQueue();
1094           };
1095         })(this)), 0);
1096       }
1097     };
1098 
1099     Dropzone.prototype._processThumbnailQueue = function() {
1100       var file;
1101       if (this._processingThumbnail || this._thumbnailQueue.length === 0) {
1102         return;
1103       }
1104       this._processingThumbnail = true;
1105       file = this._thumbnailQueue.shift();
1106       return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, (function(_this) {
1107         return function(dataUrl) {
1108           _this.emit("thumbnail", file, dataUrl);
1109           _this._processingThumbnail = false;
1110           return _this._processThumbnailQueue();
1111         };
1112       })(this));
1113     };
1114 
1115     Dropzone.prototype.removeFile = function(file) {
1116       if (file.status === Dropzone.UPLOADING) {
1117         this.cancelUpload(file);
1118       }
1119       this.files = without(this.files, file);
1120       this.emit("removedfile", file);
1121       if (this.files.length === 0) {
1122         return this.emit("reset");
1123       }
1124     };
1125 
1126     Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {
1127       var file, j, len, ref;
1128       if (cancelIfNecessary == null) {
1129         cancelIfNecessary = false;
1130       }
1131       ref = this.files.slice();
1132       for (j = 0, len = ref.length; j < len; j++) {
1133         file = ref[j];
1134         if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {
1135           this.removeFile(file);
1136         }
1137       }
1138       return null;
1139     };
1140 
1141     Dropzone.prototype.resizeImage = function(file, width, height, resizeMethod, callback) {
1142       return this.createThumbnail(file, width, height, resizeMethod, false, (function(_this) {
1143         return function(dataUrl, canvas) {
1144           var resizeMimeType, resizedDataURL;
1145           if (canvas === null) {
1146             return callback(file);
1147           } else {
1148             resizeMimeType = _this.options.resizeMimeType;
1149             if (resizeMimeType == null) {
1150               resizeMimeType = file.type;
1151             }
1152             resizedDataURL = canvas.toDataURL(resizeMimeType, _this.options.resizeQuality);
1153             if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') {
1154               resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);
1155             }
1156             return callback(Dropzone.dataURItoBlob(resizedDataURL));
1157           }
1158         };
1159       })(this));
1160     };
1161 
1162     Dropzone.prototype.createThumbnail = function(file, width, height, resizeMethod, fixOrientation, callback) {
1163       var fileReader;
1164       fileReader = new FileReader;
1165       fileReader.onload = (function(_this) {
1166         return function() {
1167           file.dataURL = fileReader.result;
1168           if (file.type === "image/svg+xml") {
1169             if (callback != null) {
1170               callback(fileReader.result);
1171             }
1172             return;
1173           }
1174           return _this.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);
1175         };
1176       })(this);
1177       return fileReader.readAsDataURL(file);
1178     };
1179 
1180     Dropzone.prototype.createThumbnailFromUrl = function(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {
1181       var img;
1182       img = document.createElement("img");
1183       if (crossOrigin) {
1184         img.crossOrigin = crossOrigin;
1185       }
1186       img.onload = (function(_this) {
1187         return function() {
1188           var loadExif;
1189           loadExif = function(callback) {
1190             return callback(1);
1191           };
1192           if ((typeof EXIF !== "undefined" && EXIF !== null) && fixOrientation) {
1193             loadExif = function(callback) {
1194               return EXIF.getData(img, function() {
1195                 return callback(EXIF.getTag(this, 'Orientation'));
1196               });
1197             };
1198           }
1199           return loadExif(function(orientation) {
1200             var canvas, ctx, ref, ref1, ref2, ref3, resizeInfo, thumbnail;
1201             file.width = img.width;
1202             file.height = img.height;
1203             resizeInfo = _this.options.resize.call(_this, file, width, height, resizeMethod);
1204             canvas = document.createElement("canvas");
1205             ctx = canvas.getContext("2d");
1206             canvas.width = resizeInfo.trgWidth;
1207             canvas.height = resizeInfo.trgHeight;
1208             if (orientation > 4) {
1209               canvas.width = resizeInfo.trgHeight;
1210               canvas.height = resizeInfo.trgWidth;
1211             }
1212             switch (orientation) {
1213               case 2:
1214                 ctx.translate(canvas.width, 0);
1215                 ctx.scale(-1, 1);
1216                 break;
1217               case 3:
1218                 ctx.translate(canvas.width, canvas.height);
1219                 ctx.rotate(Math.PI);
1220                 break;
1221               case 4:
1222                 ctx.translate(0, canvas.height);
1223                 ctx.scale(1, -1);
1224                 break;
1225               case 5:
1226                 ctx.rotate(0.5 * Math.PI);
1227                 ctx.scale(1, -1);
1228                 break;
1229               case 6:
1230                 ctx.rotate(0.5 * Math.PI);
1231                 ctx.translate(0, -canvas.height);
1232                 break;
1233               case 7:
1234                 ctx.rotate(0.5 * Math.PI);
1235                 ctx.translate(canvas.width, -canvas.height);
1236                 ctx.scale(-1, 1);
1237                 break;
1238               case 8:
1239                 ctx.rotate(-0.5 * Math.PI);
1240                 ctx.translate(-canvas.width, 0);
1241             }
1242             drawImageIOSFix(ctx, img, (ref = resizeInfo.srcX) != null ? ref : 0, (ref1 = resizeInfo.srcY) != null ? ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (ref2 = resizeInfo.trgX) != null ? ref2 : 0, (ref3 = resizeInfo.trgY) != null ? ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
1243             thumbnail = canvas.toDataURL("image/png");
1244             if (callback != null) {
1245               return callback(thumbnail, canvas);
1246             }
1247           });
1248         };
1249       })(this);
1250       if (callback != null) {
1251         img.onerror = callback;
1252       }
1253       return img.src = file.dataURL;
1254     };
1255 
1256     Dropzone.prototype.processQueue = function() {
1257       var i, parallelUploads, processingLength, queuedFiles;
1258       parallelUploads = this.options.parallelUploads;
1259       processingLength = this.getUploadingFiles().length;
1260       i = processingLength;
1261       if (processingLength >= parallelUploads) {
1262         return;
1263       }
1264       queuedFiles = this.getQueuedFiles();
1265       if (!(queuedFiles.length > 0)) {
1266         return;
1267       }
1268       if (this.options.uploadMultiple) {
1269         return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
1270       } else {
1271         while (i < parallelUploads) {
1272           if (!queuedFiles.length) {
1273             return;
1274           }
1275           this.processFile(queuedFiles.shift());
1276           i++;
1277         }
1278       }
1279     };
1280 
1281     Dropzone.prototype.processFile = function(file) {
1282       return this.processFiles([file]);
1283     };
1284 
1285     Dropzone.prototype.processFiles = function(files) {
1286       var file, j, len;
1287       for (j = 0, len = files.length; j < len; j++) {
1288         file = files[j];
1289         file.processing = true;
1290         file.status = Dropzone.UPLOADING;
1291         this.emit("processing", file);
1292       }
1293       if (this.options.uploadMultiple) {
1294         this.emit("processingmultiple", files);
1295       }
1296       return this.uploadFiles(files);
1297     };
1298 
1299     Dropzone.prototype._getFilesWithXhr = function(xhr) {
1300       var file, files;
1301       return files = (function() {
1302         var j, len, ref, results;
1303         ref = this.files;
1304         results = [];
1305         for (j = 0, len = ref.length; j < len; j++) {
1306           file = ref[j];
1307           if (file.xhr === xhr) {
1308             results.push(file);
1309           }
1310         }
1311         return results;
1312       }).call(this);
1313     };
1314 
1315     Dropzone.prototype.cancelUpload = function(file) {
1316       var groupedFile, groupedFiles, j, k, len, len1, ref;
1317       if (file.status === Dropzone.UPLOADING) {
1318         groupedFiles = this._getFilesWithXhr(file.xhr);
1319         for (j = 0, len = groupedFiles.length; j < len; j++) {
1320           groupedFile = groupedFiles[j];
1321           groupedFile.status = Dropzone.CANCELED;
1322         }
1323         file.xhr.abort();
1324         for (k = 0, len1 = groupedFiles.length; k < len1; k++) {
1325           groupedFile = groupedFiles[k];
1326           this.emit("canceled", groupedFile);
1327         }
1328         if (this.options.uploadMultiple) {
1329           this.emit("canceledmultiple", groupedFiles);
1330         }
1331       } else if ((ref = file.status) === Dropzone.ADDED || ref === Dropzone.QUEUED) {
1332         file.status = Dropzone.CANCELED;
1333         this.emit("canceled", file);
1334         if (this.options.uploadMultiple) {
1335           this.emit("canceledmultiple", [file]);
1336         }
1337       }
1338       if (this.options.autoProcessQueue) {
1339         return this.processQueue();
1340       }
1341     };
1342 
1343     resolveOption = function() {
1344       var args, option;
1345       option = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
1346       if (typeof option === 'function') {
1347         return option.apply(this, args);
1348       }
1349       return option;
1350     };
1351 
1352     Dropzone.prototype.uploadFile = function(file) {
1353       return this.uploadFiles([file]);
1354     };
1355 
1356     Dropzone.prototype.uploadFiles = function(files) {
1357       var doneCounter, doneFunction, file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, j, k, key, l, len, len1, len2, len3, m, method, o, option, progressObj, ref, ref1, ref2, ref3, ref4, ref5, response, results, updateProgress, url, value, xhr;
1358       xhr = new XMLHttpRequest();
1359       for (j = 0, len = files.length; j < len; j++) {
1360         file = files[j];
1361         file.xhr = xhr;
1362       }
1363       method = resolveOption(this.options.method, files);
1364       url = resolveOption(this.options.url, files);
1365       xhr.open(method, url, true);
1366       xhr.timeout = resolveOption(this.options.timeout, files);
1367       xhr.withCredentials = !!this.options.withCredentials;
1368       response = null;
1369       handleError = (function(_this) {
1370         return function() {
1371           var k, len1, results;
1372           results = [];
1373           for (k = 0, len1 = files.length; k < len1; k++) {
1374             file = files[k];
1375             results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr));
1376           }
1377           return results;
1378         };
1379       })(this);
1380       updateProgress = (function(_this) {
1381         return function(e) {
1382           var allFilesFinished, k, l, len1, len2, len3, m, progress, results;
1383           if (e != null) {
1384             progress = 100 * e.loaded / e.total;
1385             for (k = 0, len1 = files.length; k < len1; k++) {
1386               file = files[k];
1387               file.upload.progress = progress;
1388               file.upload.total = e.total;
1389               file.upload.bytesSent = e.loaded;
1390             }
1391           } else {
1392             allFilesFinished = true;
1393             progress = 100;
1394             for (l = 0, len2 = files.length; l < len2; l++) {
1395               file = files[l];
1396               if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {
1397                 allFilesFinished = false;
1398               }
1399               file.upload.progress = progress;
1400               file.upload.bytesSent = file.upload.total;
1401             }
1402             if (allFilesFinished) {
1403               return;
1404             }
1405           }
1406           results = [];
1407           for (m = 0, len3 = files.length; m < len3; m++) {
1408             file = files[m];
1409             results.push(_this.emit("uploadprogress", file, progress, file.upload.bytesSent));
1410           }
1411           return results;
1412         };
1413       })(this);
1414       xhr.onload = (function(_this) {
1415         return function(e) {
1416           var error1, ref;
1417           if (files[0].status === Dropzone.CANCELED) {
1418             return;
1419           }
1420           if (xhr.readyState !== 4) {
1421             return;
1422           }
1423           if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') {
1424             response = xhr.responseText;
1425             if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) {
1426               try {
1427                 response = JSON.parse(response);
1428               } catch (error1) {
1429                 e = error1;
1430                 response = "Invalid JSON response from server.";
1431               }
1432             }
1433           }
1434           updateProgress();
1435           if (!((200 <= (ref = xhr.status) && ref < 300))) {
1436             return handleError();
1437           } else {
1438             return _this._finished(files, response, e);
1439           }
1440         };
1441       })(this);
1442       xhr.onerror = (function(_this) {
1443         return function() {
1444           if (files[0].status === Dropzone.CANCELED) {
1445             return;
1446           }
1447           return handleError();
1448         };
1449       })(this);
1450       progressObj = (ref = xhr.upload) != null ? ref : xhr;
1451       progressObj.onprogress = updateProgress;
1452       headers = {
1453         "Accept": "application/json",
1454         "Cache-Control": "no-cache",
1455         "X-Requested-With": "XMLHttpRequest"
1456       };
1457       if (this.options.headers) {
1458         extend(headers, this.options.headers);
1459       }
1460       for (headerName in headers) {
1461         headerValue = headers[headerName];
1462         if (headerValue) {
1463           xhr.setRequestHeader(headerName, headerValue);
1464         }
1465       }
1466       formData = new FormData();
1467       if (this.options.params) {
1468         ref1 = this.options.params;
1469         for (key in ref1) {
1470           value = ref1[key];
1471           formData.append(key, value);
1472         }
1473       }
1474       for (k = 0, len1 = files.length; k < len1; k++) {
1475         file = files[k];
1476         this.emit("sending", file, xhr, formData);
1477       }
1478       if (this.options.uploadMultiple) {
1479         this.emit("sendingmultiple", files, xhr, formData);
1480       }
1481       if (this.element.tagName === "FORM") {
1482         ref2 = this.element.querySelectorAll("input, textarea, select, button");
1483         for (l = 0, len2 = ref2.length; l < len2; l++) {
1484           input = ref2[l];
1485           inputName = input.getAttribute("name");
1486           inputType = input.getAttribute("type");
1487           if (input.tagName === "SELECT" && input.hasAttribute("multiple")) {
1488             ref3 = input.options;
1489             for (m = 0, len3 = ref3.length; m < len3; m++) {
1490               option = ref3[m];
1491               if (option.selected) {
1492                 formData.append(inputName, option.value);
1493               }
1494             }
1495           } else if (!inputType || ((ref4 = inputType.toLowerCase()) !== "checkbox" && ref4 !== "radio") || input.checked) {
1496             formData.append(inputName, input.value);
1497           }
1498         }
1499       }
1500       doneCounter = 0;
1501       results = [];
1502       for (i = o = 0, ref5 = files.length - 1; 0 <= ref5 ? o <= ref5 : o >= ref5; i = 0 <= ref5 ? ++o : --o) {
1503         doneFunction = (function(_this) {
1504           return function(file, paramName, fileName) {
1505             return function(transformedFile) {
1506               formData.append(paramName, transformedFile, fileName);
1507               if (++doneCounter === files.length) {
1508                 return _this.submitRequest(xhr, formData, files);
1509               }
1510             };
1511           };
1512         })(this);
1513         results.push(this.options.transformFile.call(this, files[i], doneFunction(files[i], this._getParamName(i), files[i].upload.filename)));
1514       }
1515       return results;
1516     };
1517 
1518     Dropzone.prototype.submitRequest = function(xhr, formData, files) {
1519       return xhr.send(formData);
1520     };
1521 
1522     Dropzone.prototype._finished = function(files, responseText, e) {
1523       var file, j, len;
1524       for (j = 0, len = files.length; j < len; j++) {
1525         file = files[j];
1526         file.status = Dropzone.SUCCESS;
1527         this.emit("success", file, responseText, e);
1528         this.emit("complete", file);
1529       }
1530       if (this.options.uploadMultiple) {
1531         this.emit("successmultiple", files, responseText, e);
1532         this.emit("completemultiple", files);
1533       }
1534       if (this.options.autoProcessQueue) {
1535         return this.processQueue();
1536       }
1537     };
1538 
1539     Dropzone.prototype._errorProcessing = function(files, message, xhr) {
1540       var file, j, len;
1541       for (j = 0, len = files.length; j < len; j++) {
1542         file = files[j];
1543         file.status = Dropzone.ERROR;
1544         this.emit("error", file, message, xhr);
1545         this.emit("complete", file);
1546       }
1547       if (this.options.uploadMultiple) {
1548         this.emit("errormultiple", files, message, xhr);
1549         this.emit("completemultiple", files);
1550       }
1551       if (this.options.autoProcessQueue) {
1552         return this.processQueue();
1553       }
1554     };
1555 
1556     return Dropzone;
1557 
1558   })(Emitter);
1559 
1560   Dropzone.version = "5.1.1";
1561 
1562   Dropzone.options = {};
1563 
1564   Dropzone.optionsForElement = function(element) {
1565     if (element.getAttribute("id")) {
1566       return Dropzone.options[camelize(element.getAttribute("id"))];
1567     } else {
1568       return void 0;
1569     }
1570   };
1571 
1572   Dropzone.instances = [];
1573 
1574   Dropzone.forElement = function(element) {
1575     if (typeof element === "string") {
1576       element = document.querySelector(element);
1577     }
1578     if ((element != null ? element.dropzone : void 0) == null) {
1579       throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
1580     }
1581     return element.dropzone;
1582   };
1583 
1584   Dropzone.autoDiscover = true;
1585 
1586   Dropzone.discover = function() {
1587     var checkElements, dropzone, dropzones, j, len, results;
1588     if (document.querySelectorAll) {
1589       dropzones = document.querySelectorAll(".dropzone");
1590     } else {
1591       dropzones = [];
1592       checkElements = function(elements) {
1593         var el, j, len, results;
1594         results = [];
1595         for (j = 0, len = elements.length; j < len; j++) {
1596           el = elements[j];
1597           if (/(^| )dropzone($| )/.test(el.className)) {
1598             results.push(dropzones.push(el));
1599           } else {
1600             results.push(void 0);
1601           }
1602         }
1603         return results;
1604       };
1605       checkElements(document.getElementsByTagName("div"));
1606       checkElements(document.getElementsByTagName("form"));
1607     }
1608     results = [];
1609     for (j = 0, len = dropzones.length; j < len; j++) {
1610       dropzone = dropzones[j];
1611       if (Dropzone.optionsForElement(dropzone) !== false) {
1612         results.push(new Dropzone(dropzone));
1613       } else {
1614         results.push(void 0);
1615       }
1616     }
1617     return results;
1618   };
1619 
1620   Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i];
1621 
1622   Dropzone.isBrowserSupported = function() {
1623     var capableBrowser, j, len, ref, regex;
1624     capableBrowser = true;
1625     if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
1626       if (!("classList" in document.createElement("a"))) {
1627         capableBrowser = false;
1628       } else {
1629         ref = Dropzone.blacklistedBrowsers;
1630         for (j = 0, len = ref.length; j < len; j++) {
1631           regex = ref[j];
1632           if (regex.test(navigator.userAgent)) {
1633             capableBrowser = false;
1634             continue;
1635           }
1636         }
1637       }
1638     } else {
1639       capableBrowser = false;
1640     }
1641     return capableBrowser;
1642   };
1643 
1644   Dropzone.dataURItoBlob = function(dataURI) {
1645     var ab, byteString, i, ia, j, mimeString, ref;
1646     byteString = atob(dataURI.split(',')[1]);
1647     mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
1648     ab = new ArrayBuffer(byteString.length);
1649     ia = new Uint8Array(ab);
1650     for (i = j = 0, ref = byteString.length; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {
1651       ia[i] = byteString.charCodeAt(i);
1652     }
1653     return new Blob([ab], {
1654       type: mimeString
1655     });
1656   };
1657 
1658   without = function(list, rejectedItem) {
1659     var item, j, len, results;
1660     results = [];
1661     for (j = 0, len = list.length; j < len; j++) {
1662       item = list[j];
1663       if (item !== rejectedItem) {
1664         results.push(item);
1665       }
1666     }
1667     return results;
1668   };
1669 
1670   camelize = function(str) {
1671     return str.replace(/[\-_](\w)/g, function(match) {
1672       return match.charAt(1).toUpperCase();
1673     });
1674   };
1675 
1676   Dropzone.createElement = function(string) {
1677     var div;
1678     div = document.createElement("div");
1679     div.innerHTML = string;
1680     return div.childNodes[0];
1681   };
1682 
1683   Dropzone.elementInside = function(element, container) {
1684     if (element === container) {
1685       return true;
1686     }
1687     while (element = element.parentNode) {
1688       if (element === container) {
1689         return true;
1690       }
1691     }
1692     return false;
1693   };
1694 
1695   Dropzone.getElement = function(el, name) {
1696     var element;
1697     if (typeof el === "string") {
1698       element = document.querySelector(el);
1699     } else if (el.nodeType != null) {
1700       element = el;
1701     }
1702     if (element == null) {
1703       throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector or a plain HTML element.");
1704     }
1705     return element;
1706   };
1707 
1708   Dropzone.getElements = function(els, name) {
1709     var e, el, elements, error1, j, k, len, len1, ref;
1710     if (els instanceof Array) {
1711       elements = [];
1712       try {
1713         for (j = 0, len = els.length; j < len; j++) {
1714           el = els[j];
1715           elements.push(this.getElement(el, name));
1716         }
1717       } catch (error1) {
1718         e = error1;
1719         elements = null;
1720       }
1721     } else if (typeof els === "string") {
1722       elements = [];
1723       ref = document.querySelectorAll(els);
1724       for (k = 0, len1 = ref.length; k < len1; k++) {
1725         el = ref[k];
1726         elements.push(el);
1727       }
1728     } else if (els.nodeType != null) {
1729       elements = [els];
1730     }
1731     if (!((elements != null) && elements.length)) {
1732       throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");
1733     }
1734     return elements;
1735   };
1736 
1737   Dropzone.confirm = function(question, accepted, rejected) {
1738     if (window.confirm(question)) {
1739       return accepted();
1740     } else if (rejected != null) {
1741       return rejected();
1742     }
1743   };
1744 
1745   Dropzone.isValidFile = function(file, acceptedFiles) {
1746     var baseMimeType, j, len, mimeType, validType;
1747     if (!acceptedFiles) {
1748       return true;
1749     }
1750     acceptedFiles = acceptedFiles.split(",");
1751     mimeType = file.type;
1752     baseMimeType = mimeType.replace(/\/.*$/, "");
1753     for (j = 0, len = acceptedFiles.length; j < len; j++) {
1754       validType = acceptedFiles[j];
1755       validType = validType.trim();
1756       if (validType.charAt(0) === ".") {
1757         if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {
1758           return true;
1759         }
1760       } else if (/\/\*$/.test(validType)) {
1761         if (baseMimeType === validType.replace(/\/.*$/, "")) {
1762           return true;
1763         }
1764       } else {
1765         if (mimeType === validType) {
1766           return true;
1767         }
1768       }
1769     }
1770     return false;
1771   };
1772 
1773   if (typeof jQuery !== "undefined" && jQuery !== null) {
1774     jQuery.fn.dropzone = function(options) {
1775       return this.each(function() {
1776         return new Dropzone(this, options);
1777       });
1778     };
1779   }
1780 
1781   if (typeof module !== "undefined" && module !== null) {
1782     module.exports = Dropzone;
1783   } else {
1784     window.Dropzone = Dropzone;
1785   }
1786 
1787   Dropzone.ADDED = "added";
1788 
1789   Dropzone.QUEUED = "queued";
1790 
1791   Dropzone.ACCEPTED = Dropzone.QUEUED;
1792 
1793   Dropzone.UPLOADING = "uploading";
1794 
1795   Dropzone.PROCESSING = Dropzone.UPLOADING;
1796 
1797   Dropzone.CANCELED = "canceled";
1798 
1799   Dropzone.ERROR = "error";
1800 
1801   Dropzone.SUCCESS = "success";
1802 
1803 
1804   /*
1805   
1806   Bugfix for iOS 6 and 7
1807   Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios
1808   based on the work of https://github.com/stomita/ios-imagefile-megapixel
1809    */
1810 
1811   detectVerticalSquash = function(img) {
1812     var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;
1813     iw = img.naturalWidth;
1814     ih = img.naturalHeight;
1815     canvas = document.createElement("canvas");
1816     canvas.width = 1;
1817     canvas.height = ih;
1818     ctx = canvas.getContext("2d");
1819     ctx.drawImage(img, 0, 0);
1820     data = ctx.getImageData(1, 0, 1, ih).data;
1821     sy = 0;
1822     ey = ih;
1823     py = ih;
1824     while (py > sy) {
1825       alpha = data[(py - 1) * 4 + 3];
1826       if (alpha === 0) {
1827         ey = py;
1828       } else {
1829         sy = py;
1830       }
1831       py = (ey + sy) >> 1;
1832     }
1833     ratio = py / ih;
1834     if (ratio === 0) {
1835       return 1;
1836     } else {
1837       return ratio;
1838     }
1839   };
1840 
1841   drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {
1842     var vertSquashRatio;
1843     vertSquashRatio = detectVerticalSquash(img);
1844     return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);
1845   };
1846 
1847   ExifRestore = (function() {
1848     function ExifRestore() {}
1849 
1850     ExifRestore.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
1851 
1852     ExifRestore.encode64 = function(input) {
1853       var chr1, chr2, chr3, enc1, enc2, enc3, enc4, i, output;
1854       output = '';
1855       chr1 = void 0;
1856       chr2 = void 0;
1857       chr3 = '';
1858       enc1 = void 0;
1859       enc2 = void 0;
1860       enc3 = void 0;
1861       enc4 = '';
1862       i = 0;
1863       while (true) {
1864         chr1 = input[i++];
1865         chr2 = input[i++];
1866         chr3 = input[i++];
1867         enc1 = chr1 >> 2;
1868         enc2 = (chr1 & 3) << 4 | chr2 >> 4;
1869         enc3 = (chr2 & 15) << 2 | chr3 >> 6;
1870         enc4 = chr3 & 63;
1871         if (isNaN(chr2)) {
1872           enc3 = enc4 = 64;
1873         } else if (isNaN(chr3)) {
1874           enc4 = 64;
1875         }
1876         output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);
1877         chr1 = chr2 = chr3 = '';
1878         enc1 = enc2 = enc3 = enc4 = '';
1879         if (!(i < input.length)) {
1880           break;
1881         }
1882       }
1883       return output;
1884     };
1885 
1886     ExifRestore.restore = function(origFileBase64, resizedFileBase64) {
1887       var image, rawImage, segments;
1888       if (!origFileBase64.match('data:image/jpeg;base64,')) {
1889         return resizedFileBase64;
1890       }
1891       rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));
1892       segments = this.slice2Segments(rawImage);
1893       image = this.exifManipulation(resizedFileBase64, segments);
1894       return 'data:image/jpeg;base64,' + this.encode64(image);
1895     };
1896 
1897     ExifRestore.exifManipulation = function(resizedFileBase64, segments) {
1898       var aBuffer, exifArray, newImageArray;
1899       exifArray = this.getExifArray(segments);
1900       newImageArray = this.insertExif(resizedFileBase64, exifArray);
1901       aBuffer = new Uint8Array(newImageArray);
1902       return aBuffer;
1903     };
1904 
1905     ExifRestore.getExifArray = function(segments) {
1906       var seg, x;
1907       seg = void 0;
1908       x = 0;
1909       while (x < segments.length) {
1910         seg = segments[x];
1911         if (seg[0] === 255 & seg[1] === 225) {
1912           return seg;
1913         }
1914         x++;
1915       }
1916       return [];
1917     };
1918 
1919     ExifRestore.insertExif = function(resizedFileBase64, exifArray) {
1920       var array, ato, buf, imageData, mae, separatePoint;
1921       imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');
1922       buf = this.decode64(imageData);
1923       separatePoint = buf.indexOf(255, 3);
1924       mae = buf.slice(0, separatePoint);
1925       ato = buf.slice(separatePoint);
1926       array = mae;
1927       array = array.concat(exifArray);
1928       array = array.concat(ato);
1929       return array;
1930     };
1931 
1932     ExifRestore.slice2Segments = function(rawImageArray) {
1933       var endPoint, head, length, seg, segments;
1934       head = 0;
1935       segments = [];
1936       while (true) {
1937         if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {
1938           break;
1939         }
1940         if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {
1941           head += 2;
1942         } else {
1943           length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];
1944           endPoint = head + length + 2;
1945           seg = rawImageArray.slice(head, endPoint);
1946           segments.push(seg);
1947           head = endPoint;
1948         }
1949         if (head > rawImageArray.length) {
1950           break;
1951         }
1952       }
1953       return segments;
1954     };
1955 
1956     ExifRestore.decode64 = function(input) {
1957       var base64test, buf, chr1, chr2, chr3, enc1, enc2, enc3, enc4, i, output;
1958       output = '';
1959       chr1 = void 0;
1960       chr2 = void 0;
1961       chr3 = '';
1962       enc1 = void 0;
1963       enc2 = void 0;
1964       enc3 = void 0;
1965       enc4 = '';
1966       i = 0;
1967       buf = [];
1968       base64test = /[^A-Za-z0-9\+\/\=]/g;
1969       if (base64test.exec(input)) {
1970         console.warning('There were invalid base64 characters in the input text.\n' + 'Valid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\n' + 'Expect errors in decoding.');
1971       }
1972       input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
1973       while (true) {
1974         enc1 = this.KEY_STR.indexOf(input.charAt(i++));
1975         enc2 = this.KEY_STR.indexOf(input.charAt(i++));
1976         enc3 = this.KEY_STR.indexOf(input.charAt(i++));
1977         enc4 = this.KEY_STR.indexOf(input.charAt(i++));
1978         chr1 = enc1 << 2 | enc2 >> 4;
1979         chr2 = (enc2 & 15) << 4 | enc3 >> 2;
1980         chr3 = (enc3 & 3) << 6 | enc4;
1981         buf.push(chr1);
1982         if (enc3 !== 64) {
1983           buf.push(chr2);
1984         }
1985         if (enc4 !== 64) {
1986           buf.push(chr3);
1987         }
1988         chr1 = chr2 = chr3 = '';
1989         enc1 = enc2 = enc3 = enc4 = '';
1990         if (!(i < input.length)) {
1991           break;
1992         }
1993       }
1994       return buf;
1995     };
1996 
1997     return ExifRestore;
1998 
1999   })();
2000 
2001 
2002   /*
2003    * contentloaded.js
2004    *
2005    * Author: Diego Perini (diego.perini at gmail.com)
2006    * Summary: cross-browser wrapper for DOMContentLoaded
2007    * Updated: 20101020
2008    * License: MIT
2009    * Version: 1.2
2010    *
2011    * URL:
2012    * http://javascript.nwbox.com/ContentLoaded/
2013    * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
2014    */
2015 
2016   contentLoaded = function(win, fn) {
2017     var add, doc, done, init, poll, pre, rem, root, top;
2018     done = false;
2019     top = true;
2020     doc = win.document;
2021     root = doc.documentElement;
2022     add = (doc.addEventListener ? "addEventListener" : "attachEvent");
2023     rem = (doc.addEventListener ? "removeEventListener" : "detachEvent");
2024     pre = (doc.addEventListener ? "" : "on");
2025     init = function(e) {
2026       if (e.type === "readystatechange" && doc.readyState !== "complete") {
2027         return;
2028       }
2029       (e.type === "load" ? win : doc)[rem](pre + e.type, init, false);
2030       if (!done && (done = true)) {
2031         return fn.call(win, e.type || e);
2032       }
2033     };
2034     poll = function() {
2035       var e, error1;
2036       try {
2037         root.doScroll("left");
2038       } catch (error1) {
2039         e = error1;
2040         setTimeout(poll, 50);
2041         return;
2042       }
2043       return init("poll");
2044     };
2045     if (doc.readyState !== "complete") {
2046       if (doc.createEventObject && root.doScroll) {
2047         try {
2048           top = !win.frameElement;
2049         } catch (undefined) {}
2050         if (top) {
2051           poll();
2052         }
2053       }
2054       doc[add](pre + "DOMContentLoaded", init, false);
2055       doc[add](pre + "readystatechange", init, false);
2056       return win[add](pre + "load", init, false);
2057     }
2058   };
2059 
2060   Dropzone._autoDiscoverFunction = function() {
2061     if (Dropzone.autoDiscover) {
2062       return Dropzone.discover();
2063     }
2064   };
2065 
2066   contentLoaded(window, Dropzone._autoDiscoverFunction);
2067 
2068 }).call(this);
*dropzone.js

 

  1 /*! jquery.cookie.js
  2  * jQuery Cookie Plugin v1.4.1
  3  * https://github.com/carhartl/jquery-cookie
  4  *
  5  * Copyright 2013 Klaus Hartl
  6  * Released under the MIT license
  7  */
  8 (function (factory) {
  9     if (typeof define === 'function' && define.amd) {
 10         // AMD
 11         define(['jquery'], factory);
 12     } else if (typeof exports === 'object') {
 13         // CommonJS
 14         factory(require('jquery'));
 15     } else {
 16         // Browser globals
 17         factory(jQuery);
 18     }
 19 }(function ($) {
 20 
 21     var pluses = /\+/g;
 22 
 23     function encode(s) {
 24         return config.raw ? s : encodeURIComponent(s);
 25     }
 26 
 27     function decode(s) {
 28         return config.raw ? s : decodeURIComponent(s);
 29     }
 30 
 31     function stringifyCookieValue(value) {
 32         return encode(config.json ? JSON.stringify(value) : String(value));
 33     }
 34 
 35     function parseCookieValue(s) {
 36         if (s.indexOf('"') === 0) {
 37             // This is a quoted cookie as according to RFC2068, unescape...
 38             s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
 39         }
 40 
 41         try {
 42             // Replace server-side written pluses with spaces.
 43             // If we can't decode the cookie, ignore it, it's unusable.
 44             // If we can't parse the cookie, ignore it, it's unusable.
 45             s = decodeURIComponent(s.replace(pluses, ' '));
 46             return config.json ? JSON.parse(s) : s;
 47         } catch(e) {}
 48     }
 49 
 50     function read(s, converter) {
 51         var value = config.raw ? s : parseCookieValue(s);
 52         return $.isFunction(converter) ? converter(value) : value;
 53     }
 54 
 55     var config = $.cookie = function (key, value, options) {
 56 
 57         // Write
 58 
 59         if (value !== undefined && !$.isFunction(value)) {
 60             options = $.extend({}, config.defaults, options);
 61 
 62             if (typeof options.expires === 'number') {
 63                 var days = options.expires, t = options.expires = new Date();
 64                 t.setTime(+t + days * 864e+5);
 65             }
 66 
 67             return (document.cookie = [
 68                 encode(key), '=', stringifyCookieValue(value),
 69                 options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
 70                 options.path    ? '; path=' + options.path : '',
 71                 options.domain  ? '; domain=' + options.domain : '',
 72                 options.secure  ? '; secure' : ''
 73             ].join(''));
 74         }
 75 
 76         // Read
 77 
 78         var result = key ? undefined : {};
 79 
 80         // To prevent the for loop in the first place assign an empty array
 81         // in case there are no cookies at all. Also prevents odd result when
 82         // calling $.cookie().
 83         var cookies = document.cookie ? document.cookie.split('; ') : [];
 84 
 85         for (var i = 0, l = cookies.length; i < l; i++) {
 86             var parts = cookies[i].split('=');
 87             var name = decode(parts.shift());
 88             var cookie = parts.join('=');
 89 
 90             if (key && key === name) {
 91                 // If second argument (value) is a function it's a converter...
 92                 result = read(cookie, value);
 93                 break;
 94             }
 95 
 96             // Prevent storing a cookie that we couldn't decode.
 97             if (!key && (cookie = read(cookie)) !== undefined) {
 98                 result[name] = cookie;
 99             }
100         }
101 
102         return result;
103     };
104 
105     config.defaults = {};
106 
107     $.removeCookie = function (key, options) {
108         if ($.cookie(key) === undefined) {
109             return false;
110         }
111 
112         // Must not alter options, thus extending a fresh object...
113         $.cookie(key, '', $.extend({}, options, { expires: -1 }));
114         return !$.cookie(key);
115     };
116 
117 }));
jquery.cookie.js

 

 

1 /*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
2 !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
3 
4 jquery-3.3.1.min
jQuery v3.3.1

 

 

 

 

上面 jquery 压缩码语言可以使用。 名字修改为   jquery.js

由于  jquery 原码太大 博客上传不了,需要原码 到下面网址下载

https://jquery.com/download/

 

 

 

 

posted @ 2018-05-23 22:01  颜言  阅读(1806)  评论(0编辑  收藏  举报