aboutsummaryrefslogtreecommitdiff
path: root/bip39-standalone.html
diff options
context:
space:
mode:
authorIan Coleman <coleman.ian@gmail.com>2014-09-27 23:29:03 +1000
committerIan Coleman <coleman.ian@gmail.com>2014-09-27 23:29:03 +1000
commit3af2954aeee7e849fcfa3c61b016793a59ab585e (patch)
treea318f878410a386ceb051f0d542221cf0a725094 /bip39-standalone.html
parent4dd6050628487797ea531770a33ee766c86625c8 (diff)
downloadBIP39-3af2954aeee7e849fcfa3c61b016793a59ab585e.tar.gz
BIP39-3af2954aeee7e849fcfa3c61b016793a59ab585e.tar.zst
BIP39-3af2954aeee7e849fcfa3c61b016793a59ab585e.zip
bip39-standalone updated
Latest asmcrypto.js and jsbip39.js Unminified bootstrap and jquery
Diffstat (limited to 'bip39-standalone.html')
-rw-r--r--bip39-standalone.html17939
1 files changed, 17721 insertions, 218 deletions
diff --git a/bip39-standalone.html b/bip39-standalone.html
index 6125ce3..034a56d 100644
--- a/bip39-standalone.html
+++ b/bip39-standalone.html
@@ -3,15 +3,6211 @@
3 <head lang="en"> 3 <head lang="en">
4 <meta charset="utf-8" /> 4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title> 5 <title>BIP39 - Mnemonic Code</title>
6 <!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">-->
7 <style> 6 <style>
8/*! 7/*!
9 * Bootstrap v3.2.0 (http://getbootstrap.com) 8 * Bootstrap v3.2.0 (http://getbootstrap.com)
10 * Copyright 2011-2014 Twitter, Inc. 9 * Copyright 2011-2014 Twitter, Inc.
11 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 10 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
12 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{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);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);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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{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);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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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);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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{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);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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{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);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);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)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} 11 */
13 </style>
14 12
13/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
14html {
15 font-family: sans-serif;
16 -webkit-text-size-adjust: 100%;
17 -ms-text-size-adjust: 100%;
18}
19body {
20 margin: 0;
21}
22article,
23aside,
24details,
25figcaption,
26figure,
27footer,
28header,
29hgroup,
30main,
31nav,
32section,
33summary {
34 display: block;
35}
36audio,
37canvas,
38progress,
39video {
40 display: inline-block;
41 vertical-align: baseline;
42}
43audio:not([controls]) {
44 display: none;
45 height: 0;
46}
47[hidden],
48template {
49 display: none;
50}
51a {
52 background: transparent;
53}
54a:active,
55a:hover {
56 outline: 0;
57}
58abbr[title] {
59 border-bottom: 1px dotted;
60}
61b,
62strong {
63 font-weight: bold;
64}
65dfn {
66 font-style: italic;
67}
68h1 {
69 margin: .67em 0;
70 font-size: 2em;
71}
72mark {
73 color: #000;
74 background: #ff0;
75}
76small {
77 font-size: 80%;
78}
79sub,
80sup {
81 position: relative;
82 font-size: 75%;
83 line-height: 0;
84 vertical-align: baseline;
85}
86sup {
87 top: -.5em;
88}
89sub {
90 bottom: -.25em;
91}
92img {
93 border: 0;
94}
95svg:not(:root) {
96 overflow: hidden;
97}
98figure {
99 margin: 1em 40px;
100}
101hr {
102 height: 0;
103 -webkit-box-sizing: content-box;
104 -moz-box-sizing: content-box;
105 box-sizing: content-box;
106}
107pre {
108 overflow: auto;
109}
110code,
111kbd,
112pre,
113samp {
114 font-family: monospace, monospace;
115 font-size: 1em;
116}
117button,
118input,
119optgroup,
120select,
121textarea {
122 margin: 0;
123 font: inherit;
124 color: inherit;
125}
126button {
127 overflow: visible;
128}
129button,
130select {
131 text-transform: none;
132}
133button,
134html input[type="button"],
135input[type="reset"],
136input[type="submit"] {
137 -webkit-appearance: button;
138 cursor: pointer;
139}
140button[disabled],
141html input[disabled] {
142 cursor: default;
143}
144button::-moz-focus-inner,
145input::-moz-focus-inner {
146 padding: 0;
147 border: 0;
148}
149input {
150 line-height: normal;
151}
152input[type="checkbox"],
153input[type="radio"] {
154 -webkit-box-sizing: border-box;
155 -moz-box-sizing: border-box;
156 box-sizing: border-box;
157 padding: 0;
158}
159input[type="number"]::-webkit-inner-spin-button,
160input[type="number"]::-webkit-outer-spin-button {
161 height: auto;
162}
163input[type="search"] {
164 -webkit-box-sizing: content-box;
165 -moz-box-sizing: content-box;
166 box-sizing: content-box;
167 -webkit-appearance: textfield;
168}
169input[type="search"]::-webkit-search-cancel-button,
170input[type="search"]::-webkit-search-decoration {
171 -webkit-appearance: none;
172}
173fieldset {
174 padding: .35em .625em .75em;
175 margin: 0 2px;
176 border: 1px solid #c0c0c0;
177}
178legend {
179 padding: 0;
180 border: 0;
181}
182textarea {
183 overflow: auto;
184}
185optgroup {
186 font-weight: bold;
187}
188table {
189 border-spacing: 0;
190 border-collapse: collapse;
191}
192td,
193th {
194 padding: 0;
195}
196@media print {
197 * {
198 color: #000 !important;
199 text-shadow: none !important;
200 background: transparent !important;
201 -webkit-box-shadow: none !important;
202 box-shadow: none !important;
203 }
204 a,
205 a:visited {
206 text-decoration: underline;
207 }
208 a[href]:after {
209 content: " (" attr(href) ")";
210 }
211 abbr[title]:after {
212 content: " (" attr(title) ")";
213 }
214 a[href^="javascript:"]:after,
215 a[href^="#"]:after {
216 content: "";
217 }
218 pre,
219 blockquote {
220 border: 1px solid #999;
221
222 page-break-inside: avoid;
223 }
224 thead {
225 display: table-header-group;
226 }
227 tr,
228 img {
229 page-break-inside: avoid;
230 }
231 img {
232 max-width: 100% !important;
233 }
234 p,
235 h2,
236 h3 {
237 orphans: 3;
238 widows: 3;
239 }
240 h2,
241 h3 {
242 page-break-after: avoid;
243 }
244 select {
245 background: #fff !important;
246 }
247 .navbar {
248 display: none;
249 }
250 .table td,
251 .table th {
252 background-color: #fff !important;
253 }
254 .btn > .caret,
255 .dropup > .btn > .caret {
256 border-top-color: #000 !important;
257 }
258 .label {
259 border: 1px solid #000;
260 }
261 .table {
262 border-collapse: collapse !important;
263 }
264 .table-bordered th,
265 .table-bordered td {
266 border: 1px solid #ddd !important;
267 }
268}
269@font-face {
270 font-family: 'Glyphicons Halflings';
271
272 src: url('../fonts/glyphicons-halflings-regular.eot');
273 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), 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');
274}
275.glyphicon {
276 position: relative;
277 top: 1px;
278 display: inline-block;
279 font-family: 'Glyphicons Halflings';
280 font-style: normal;
281 font-weight: normal;
282 line-height: 1;
283
284 -webkit-font-smoothing: antialiased;
285 -moz-osx-font-smoothing: grayscale;
286}
287.glyphicon-asterisk:before {
288 content: "\2a";
289}
290.glyphicon-plus:before {
291 content: "\2b";
292}
293.glyphicon-euro:before {
294 content: "\20ac";
295}
296.glyphicon-minus:before {
297 content: "\2212";
298}
299.glyphicon-cloud:before {
300 content: "\2601";
301}
302.glyphicon-envelope:before {
303 content: "\2709";
304}
305.glyphicon-pencil:before {
306 content: "\270f";
307}
308.glyphicon-glass:before {
309 content: "\e001";
310}
311.glyphicon-music:before {
312 content: "\e002";
313}
314.glyphicon-search:before {
315 content: "\e003";
316}
317.glyphicon-heart:before {
318 content: "\e005";
319}
320.glyphicon-star:before {
321 content: "\e006";
322}
323.glyphicon-star-empty:before {
324 content: "\e007";
325}
326.glyphicon-user:before {
327 content: "\e008";
328}
329.glyphicon-film:before {
330 content: "\e009";
331}
332.glyphicon-th-large:before {
333 content: "\e010";
334}
335.glyphicon-th:before {
336 content: "\e011";
337}
338.glyphicon-th-list:before {
339 content: "\e012";
340}
341.glyphicon-ok:before {
342 content: "\e013";
343}
344.glyphicon-remove:before {
345 content: "\e014";
346}
347.glyphicon-zoom-in:before {
348 content: "\e015";
349}
350.glyphicon-zoom-out:before {
351 content: "\e016";
352}
353.glyphicon-off:before {
354 content: "\e017";
355}
356.glyphicon-signal:before {
357 content: "\e018";
358}
359.glyphicon-cog:before {
360 content: "\e019";
361}
362.glyphicon-trash:before {
363 content: "\e020";
364}
365.glyphicon-home:before {
366 content: "\e021";
367}
368.glyphicon-file:before {
369 content: "\e022";
370}
371.glyphicon-time:before {
372 content: "\e023";
373}
374.glyphicon-road:before {
375 content: "\e024";
376}
377.glyphicon-download-alt:before {
378 content: "\e025";
379}
380.glyphicon-download:before {
381 content: "\e026";
382}
383.glyphicon-upload:before {
384 content: "\e027";
385}
386.glyphicon-inbox:before {
387 content: "\e028";
388}
389.glyphicon-play-circle:before {
390 content: "\e029";
391}
392.glyphicon-repeat:before {
393 content: "\e030";
394}
395.glyphicon-refresh:before {
396 content: "\e031";
397}
398.glyphicon-list-alt:before {
399 content: "\e032";
400}
401.glyphicon-lock:before {
402 content: "\e033";
403}
404.glyphicon-flag:before {
405 content: "\e034";
406}
407.glyphicon-headphones:before {
408 content: "\e035";
409}
410.glyphicon-volume-off:before {
411 content: "\e036";
412}
413.glyphicon-volume-down:before {
414 content: "\e037";
415}
416.glyphicon-volume-up:before {
417 content: "\e038";
418}
419.glyphicon-qrcode:before {
420 content: "\e039";
421}
422.glyphicon-barcode:before {
423 content: "\e040";
424}
425.glyphicon-tag:before {
426 content: "\e041";
427}
428.glyphicon-tags:before {
429 content: "\e042";
430}
431.glyphicon-book:before {
432 content: "\e043";
433}
434.glyphicon-bookmark:before {
435 content: "\e044";
436}
437.glyphicon-print:before {
438 content: "\e045";
439}
440.glyphicon-camera:before {
441 content: "\e046";
442}
443.glyphicon-font:before {
444 content: "\e047";
445}
446.glyphicon-bold:before {
447 content: "\e048";
448}
449.glyphicon-italic:before {
450 content: "\e049";
451}
452.glyphicon-text-height:before {
453 content: "\e050";
454}
455.glyphicon-text-width:before {
456 content: "\e051";
457}
458.glyphicon-align-left:before {
459 content: "\e052";
460}
461.glyphicon-align-center:before {
462 content: "\e053";
463}
464.glyphicon-align-right:before {
465 content: "\e054";
466}
467.glyphicon-align-justify:before {
468 content: "\e055";
469}
470.glyphicon-list:before {
471 content: "\e056";
472}
473.glyphicon-indent-left:before {
474 content: "\e057";
475}
476.glyphicon-indent-right:before {
477 content: "\e058";
478}
479.glyphicon-facetime-video:before {
480 content: "\e059";
481}
482.glyphicon-picture:before {
483 content: "\e060";
484}
485.glyphicon-map-marker:before {
486 content: "\e062";
487}
488.glyphicon-adjust:before {
489 content: "\e063";
490}
491.glyphicon-tint:before {
492 content: "\e064";
493}
494.glyphicon-edit:before {
495 content: "\e065";
496}
497.glyphicon-share:before {
498 content: "\e066";
499}
500.glyphicon-check:before {
501 content: "\e067";
502}
503.glyphicon-move:before {
504 content: "\e068";
505}
506.glyphicon-step-backward:before {
507 content: "\e069";
508}
509.glyphicon-fast-backward:before {
510 content: "\e070";
511}
512.glyphicon-backward:before {
513 content: "\e071";
514}
515.glyphicon-play:before {
516 content: "\e072";
517}
518.glyphicon-pause:before {
519 content: "\e073";
520}
521.glyphicon-stop:before {
522 content: "\e074";
523}
524.glyphicon-forward:before {
525 content: "\e075";
526}
527.glyphicon-fast-forward:before {
528 content: "\e076";
529}
530.glyphicon-step-forward:before {
531 content: "\e077";
532}
533.glyphicon-eject:before {
534 content: "\e078";
535}
536.glyphicon-chevron-left:before {
537 content: "\e079";
538}
539.glyphicon-chevron-right:before {
540 content: "\e080";
541}
542.glyphicon-plus-sign:before {
543 content: "\e081";
544}
545.glyphicon-minus-sign:before {
546 content: "\e082";
547}
548.glyphicon-remove-sign:before {
549 content: "\e083";
550}
551.glyphicon-ok-sign:before {
552 content: "\e084";
553}
554.glyphicon-question-sign:before {
555 content: "\e085";
556}
557.glyphicon-info-sign:before {
558 content: "\e086";
559}
560.glyphicon-screenshot:before {
561 content: "\e087";
562}
563.glyphicon-remove-circle:before {
564 content: "\e088";
565}
566.glyphicon-ok-circle:before {
567 content: "\e089";
568}
569.glyphicon-ban-circle:before {
570 content: "\e090";
571}
572.glyphicon-arrow-left:before {
573 content: "\e091";
574}
575.glyphicon-arrow-right:before {
576 content: "\e092";
577}
578.glyphicon-arrow-up:before {
579 content: "\e093";
580}
581.glyphicon-arrow-down:before {
582 content: "\e094";
583}
584.glyphicon-share-alt:before {
585 content: "\e095";
586}
587.glyphicon-resize-full:before {
588 content: "\e096";
589}
590.glyphicon-resize-small:before {
591 content: "\e097";
592}
593.glyphicon-exclamation-sign:before {
594 content: "\e101";
595}
596.glyphicon-gift:before {
597 content: "\e102";
598}
599.glyphicon-leaf:before {
600 content: "\e103";
601}
602.glyphicon-fire:before {
603 content: "\e104";
604}
605.glyphicon-eye-open:before {
606 content: "\e105";
607}
608.glyphicon-eye-close:before {
609 content: "\e106";
610}
611.glyphicon-warning-sign:before {
612 content: "\e107";
613}
614.glyphicon-plane:before {
615 content: "\e108";
616}
617.glyphicon-calendar:before {
618 content: "\e109";
619}
620.glyphicon-random:before {
621 content: "\e110";
622}
623.glyphicon-comment:before {
624 content: "\e111";
625}
626.glyphicon-magnet:before {
627 content: "\e112";
628}
629.glyphicon-chevron-up:before {
630 content: "\e113";
631}
632.glyphicon-chevron-down:before {
633 content: "\e114";
634}
635.glyphicon-retweet:before {
636 content: "\e115";
637}
638.glyphicon-shopping-cart:before {
639 content: "\e116";
640}
641.glyphicon-folder-close:before {
642 content: "\e117";
643}
644.glyphicon-folder-open:before {
645 content: "\e118";
646}
647.glyphicon-resize-vertical:before {
648 content: "\e119";
649}
650.glyphicon-resize-horizontal:before {
651 content: "\e120";
652}
653.glyphicon-hdd:before {
654 content: "\e121";
655}
656.glyphicon-bullhorn:before {
657 content: "\e122";
658}
659.glyphicon-bell:before {
660 content: "\e123";
661}
662.glyphicon-certificate:before {
663 content: "\e124";
664}
665.glyphicon-thumbs-up:before {
666 content: "\e125";
667}
668.glyphicon-thumbs-down:before {
669 content: "\e126";
670}
671.glyphicon-hand-right:before {
672 content: "\e127";
673}
674.glyphicon-hand-left:before {
675 content: "\e128";
676}
677.glyphicon-hand-up:before {
678 content: "\e129";
679}
680.glyphicon-hand-down:before {
681 content: "\e130";
682}
683.glyphicon-circle-arrow-right:before {
684 content: "\e131";
685}
686.glyphicon-circle-arrow-left:before {
687 content: "\e132";
688}
689.glyphicon-circle-arrow-up:before {
690 content: "\e133";
691}
692.glyphicon-circle-arrow-down:before {
693 content: "\e134";
694}
695.glyphicon-globe:before {
696 content: "\e135";
697}
698.glyphicon-wrench:before {
699 content: "\e136";
700}
701.glyphicon-tasks:before {
702 content: "\e137";
703}
704.glyphicon-filter:before {
705 content: "\e138";
706}
707.glyphicon-briefcase:before {
708 content: "\e139";
709}
710.glyphicon-fullscreen:before {
711 content: "\e140";
712}
713.glyphicon-dashboard:before {
714 content: "\e141";
715}
716.glyphicon-paperclip:before {
717 content: "\e142";
718}
719.glyphicon-heart-empty:before {
720 content: "\e143";
721}
722.glyphicon-link:before {
723 content: "\e144";
724}
725.glyphicon-phone:before {
726 content: "\e145";
727}
728.glyphicon-pushpin:before {
729 content: "\e146";
730}
731.glyphicon-usd:before {
732 content: "\e148";
733}
734.glyphicon-gbp:before {
735 content: "\e149";
736}
737.glyphicon-sort:before {
738 content: "\e150";
739}
740.glyphicon-sort-by-alphabet:before {
741 content: "\e151";
742}
743.glyphicon-sort-by-alphabet-alt:before {
744 content: "\e152";
745}
746.glyphicon-sort-by-order:before {
747 content: "\e153";
748}
749.glyphicon-sort-by-order-alt:before {
750 content: "\e154";
751}
752.glyphicon-sort-by-attributes:before {
753 content: "\e155";
754}
755.glyphicon-sort-by-attributes-alt:before {
756 content: "\e156";
757}
758.glyphicon-unchecked:before {
759 content: "\e157";
760}
761.glyphicon-expand:before {
762 content: "\e158";
763}
764.glyphicon-collapse-down:before {
765 content: "\e159";
766}
767.glyphicon-collapse-up:before {
768 content: "\e160";
769}
770.glyphicon-log-in:before {
771 content: "\e161";
772}
773.glyphicon-flash:before {
774 content: "\e162";
775}
776.glyphicon-log-out:before {
777 content: "\e163";
778}
779.glyphicon-new-window:before {
780 content: "\e164";
781}
782.glyphicon-record:before {
783 content: "\e165";
784}
785.glyphicon-save:before {
786 content: "\e166";
787}
788.glyphicon-open:before {
789 content: "\e167";
790}
791.glyphicon-saved:before {
792 content: "\e168";
793}
794.glyphicon-import:before {
795 content: "\e169";
796}
797.glyphicon-export:before {
798 content: "\e170";
799}
800.glyphicon-send:before {
801 content: "\e171";
802}
803.glyphicon-floppy-disk:before {
804 content: "\e172";
805}
806.glyphicon-floppy-saved:before {
807 content: "\e173";
808}
809.glyphicon-floppy-remove:before {
810 content: "\e174";
811}
812.glyphicon-floppy-save:before {
813 content: "\e175";
814}
815.glyphicon-floppy-open:before {
816 content: "\e176";
817}
818.glyphicon-credit-card:before {
819 content: "\e177";
820}
821.glyphicon-transfer:before {
822 content: "\e178";
823}
824.glyphicon-cutlery:before {
825 content: "\e179";
826}
827.glyphicon-header:before {
828 content: "\e180";
829}
830.glyphicon-compressed:before {
831 content: "\e181";
832}
833.glyphicon-earphone:before {
834 content: "\e182";
835}
836.glyphicon-phone-alt:before {
837 content: "\e183";
838}
839.glyphicon-tower:before {
840 content: "\e184";
841}
842.glyphicon-stats:before {
843 content: "\e185";
844}
845.glyphicon-sd-video:before {
846 content: "\e186";
847}
848.glyphicon-hd-video:before {
849 content: "\e187";
850}
851.glyphicon-subtitles:before {
852 content: "\e188";
853}
854.glyphicon-sound-stereo:before {
855 content: "\e189";
856}
857.glyphicon-sound-dolby:before {
858 content: "\e190";
859}
860.glyphicon-sound-5-1:before {
861 content: "\e191";
862}
863.glyphicon-sound-6-1:before {
864 content: "\e192";
865}
866.glyphicon-sound-7-1:before {
867 content: "\e193";
868}
869.glyphicon-copyright-mark:before {
870 content: "\e194";
871}
872.glyphicon-registration-mark:before {
873 content: "\e195";
874}
875.glyphicon-cloud-download:before {
876 content: "\e197";
877}
878.glyphicon-cloud-upload:before {
879 content: "\e198";
880}
881.glyphicon-tree-conifer:before {
882 content: "\e199";
883}
884.glyphicon-tree-deciduous:before {
885 content: "\e200";
886}
887* {
888 -webkit-box-sizing: border-box;
889 -moz-box-sizing: border-box;
890 box-sizing: border-box;
891}
892*:before,
893*:after {
894 -webkit-box-sizing: border-box;
895 -moz-box-sizing: border-box;
896 box-sizing: border-box;
897}
898html {
899 font-size: 10px;
900
901 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
902}
903body {
904 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
905 font-size: 14px;
906 line-height: 1.42857143;
907 color: #333;
908 background-color: #fff;
909}
910input,
911button,
912select,
913textarea {
914 font-family: inherit;
915 font-size: inherit;
916 line-height: inherit;
917}
918a {
919 color: #428bca;
920 text-decoration: none;
921}
922a:hover,
923a:focus {
924 color: #2a6496;
925 text-decoration: underline;
926}
927a:focus {
928 outline: thin dotted;
929 outline: 5px auto -webkit-focus-ring-color;
930 outline-offset: -2px;
931}
932figure {
933 margin: 0;
934}
935img {
936 vertical-align: middle;
937}
938.img-responsive,
939.thumbnail > img,
940.thumbnail a > img,
941.carousel-inner > .item > img,
942.carousel-inner > .item > a > img {
943 display: block;
944 width: 100% \9;
945 max-width: 100%;
946 height: auto;
947}
948.img-rounded {
949 border-radius: 6px;
950}
951.img-thumbnail {
952 display: inline-block;
953 width: 100% \9;
954 max-width: 100%;
955 height: auto;
956 padding: 4px;
957 line-height: 1.42857143;
958 background-color: #fff;
959 border: 1px solid #ddd;
960 border-radius: 4px;
961 -webkit-transition: all .2s ease-in-out;
962 -o-transition: all .2s ease-in-out;
963 transition: all .2s ease-in-out;
964}
965.img-circle {
966 border-radius: 50%;
967}
968hr {
969 margin-top: 20px;
970 margin-bottom: 20px;
971 border: 0;
972 border-top: 1px solid #eee;
973}
974.sr-only {
975 position: absolute;
976 width: 1px;
977 height: 1px;
978 padding: 0;
979 margin: -1px;
980 overflow: hidden;
981 clip: rect(0, 0, 0, 0);
982 border: 0;
983}
984.sr-only-focusable:active,
985.sr-only-focusable:focus {
986 position: static;
987 width: auto;
988 height: auto;
989 margin: 0;
990 overflow: visible;
991 clip: auto;
992}
993h1,
994h2,
995h3,
996h4,
997h5,
998h6,
999.h1,
1000.h2,
1001.h3,
1002.h4,
1003.h5,
1004.h6 {
1005 font-family: inherit;
1006 font-weight: 500;
1007 line-height: 1.1;
1008 color: inherit;
1009}
1010h1 small,
1011h2 small,
1012h3 small,
1013h4 small,
1014h5 small,
1015h6 small,
1016.h1 small,
1017.h2 small,
1018.h3 small,
1019.h4 small,
1020.h5 small,
1021.h6 small,
1022h1 .small,
1023h2 .small,
1024h3 .small,
1025h4 .small,
1026h5 .small,
1027h6 .small,
1028.h1 .small,
1029.h2 .small,
1030.h3 .small,
1031.h4 .small,
1032.h5 .small,
1033.h6 .small {
1034 font-weight: normal;
1035 line-height: 1;
1036 color: #777;
1037}
1038h1,
1039.h1,
1040h2,
1041.h2,
1042h3,
1043.h3 {
1044 margin-top: 20px;
1045 margin-bottom: 10px;
1046}
1047h1 small,
1048.h1 small,
1049h2 small,
1050.h2 small,
1051h3 small,
1052.h3 small,
1053h1 .small,
1054.h1 .small,
1055h2 .small,
1056.h2 .small,
1057h3 .small,
1058.h3 .small {
1059 font-size: 65%;
1060}
1061h4,
1062.h4,
1063h5,
1064.h5,
1065h6,
1066.h6 {
1067 margin-top: 10px;
1068 margin-bottom: 10px;
1069}
1070h4 small,
1071.h4 small,
1072h5 small,
1073.h5 small,
1074h6 small,
1075.h6 small,
1076h4 .small,
1077.h4 .small,
1078h5 .small,
1079.h5 .small,
1080h6 .small,
1081.h6 .small {
1082 font-size: 75%;
1083}
1084h1,
1085.h1 {
1086 font-size: 36px;
1087}
1088h2,
1089.h2 {
1090 font-size: 30px;
1091}
1092h3,
1093.h3 {
1094 font-size: 24px;
1095}
1096h4,
1097.h4 {
1098 font-size: 18px;
1099}
1100h5,
1101.h5 {
1102 font-size: 14px;
1103}
1104h6,
1105.h6 {
1106 font-size: 12px;
1107}
1108p {
1109 margin: 0 0 10px;
1110}
1111.lead {
1112 margin-bottom: 20px;
1113 font-size: 16px;
1114 font-weight: 300;
1115 line-height: 1.4;
1116}
1117@media (min-width: 768px) {
1118 .lead {
1119 font-size: 21px;
1120 }
1121}
1122small,
1123.small {
1124 font-size: 85%;
1125}
1126cite {
1127 font-style: normal;
1128}
1129mark,
1130.mark {
1131 padding: .2em;
1132 background-color: #fcf8e3;
1133}
1134.text-left {
1135 text-align: left;
1136}
1137.text-right {
1138 text-align: right;
1139}
1140.text-center {
1141 text-align: center;
1142}
1143.text-justify {
1144 text-align: justify;
1145}
1146.text-nowrap {
1147 white-space: nowrap;
1148}
1149.text-lowercase {
1150 text-transform: lowercase;
1151}
1152.text-uppercase {
1153 text-transform: uppercase;
1154}
1155.text-capitalize {
1156 text-transform: capitalize;
1157}
1158.text-muted {
1159 color: #777;
1160}
1161.text-primary {
1162 color: #428bca;
1163}
1164a.text-primary:hover {
1165 color: #3071a9;
1166}
1167.text-success {
1168 color: #3c763d;
1169}
1170a.text-success:hover {
1171 color: #2b542c;
1172}
1173.text-info {
1174 color: #31708f;
1175}
1176a.text-info:hover {
1177 color: #245269;
1178}
1179.text-warning {
1180 color: #8a6d3b;
1181}
1182a.text-warning:hover {
1183 color: #66512c;
1184}
1185.text-danger {
1186 color: #a94442;
1187}
1188a.text-danger:hover {
1189 color: #843534;
1190}
1191.bg-primary {
1192 color: #fff;
1193 background-color: #428bca;
1194}
1195a.bg-primary:hover {
1196 background-color: #3071a9;
1197}
1198.bg-success {
1199 background-color: #dff0d8;
1200}
1201a.bg-success:hover {
1202 background-color: #c1e2b3;
1203}
1204.bg-info {
1205 background-color: #d9edf7;
1206}
1207a.bg-info:hover {
1208 background-color: #afd9ee;
1209}
1210.bg-warning {
1211 background-color: #fcf8e3;
1212}
1213a.bg-warning:hover {
1214 background-color: #f7ecb5;
1215}
1216.bg-danger {
1217 background-color: #f2dede;
1218}
1219a.bg-danger:hover {
1220 background-color: #e4b9b9;
1221}
1222.page-header {
1223 padding-bottom: 9px;
1224 margin: 40px 0 20px;
1225 border-bottom: 1px solid #eee;
1226}
1227ul,
1228ol {
1229 margin-top: 0;
1230 margin-bottom: 10px;
1231}
1232ul ul,
1233ol ul,
1234ul ol,
1235ol ol {
1236 margin-bottom: 0;
1237}
1238.list-unstyled {
1239 padding-left: 0;
1240 list-style: none;
1241}
1242.list-inline {
1243 padding-left: 0;
1244 margin-left: -5px;
1245 list-style: none;
1246}
1247.list-inline > li {
1248 display: inline-block;
1249 padding-right: 5px;
1250 padding-left: 5px;
1251}
1252dl {
1253 margin-top: 0;
1254 margin-bottom: 20px;
1255}
1256dt,
1257dd {
1258 line-height: 1.42857143;
1259}
1260dt {
1261 font-weight: bold;
1262}
1263dd {
1264 margin-left: 0;
1265}
1266@media (min-width: 768px) {
1267 .dl-horizontal dt {
1268 float: left;
1269 width: 160px;
1270 overflow: hidden;
1271 clear: left;
1272 text-align: right;
1273 text-overflow: ellipsis;
1274 white-space: nowrap;
1275 }
1276 .dl-horizontal dd {
1277 margin-left: 180px;
1278 }
1279}
1280abbr[title],
1281abbr[data-original-title] {
1282 cursor: help;
1283 border-bottom: 1px dotted #777;
1284}
1285.initialism {
1286 font-size: 90%;
1287 text-transform: uppercase;
1288}
1289blockquote {
1290 padding: 10px 20px;
1291 margin: 0 0 20px;
1292 font-size: 17.5px;
1293 border-left: 5px solid #eee;
1294}
1295blockquote p:last-child,
1296blockquote ul:last-child,
1297blockquote ol:last-child {
1298 margin-bottom: 0;
1299}
1300blockquote footer,
1301blockquote small,
1302blockquote .small {
1303 display: block;
1304 font-size: 80%;
1305 line-height: 1.42857143;
1306 color: #777;
1307}
1308blockquote footer:before,
1309blockquote small:before,
1310blockquote .small:before {
1311 content: '\2014 \00A0';
1312}
1313.blockquote-reverse,
1314blockquote.pull-right {
1315 padding-right: 15px;
1316 padding-left: 0;
1317 text-align: right;
1318 border-right: 5px solid #eee;
1319 border-left: 0;
1320}
1321.blockquote-reverse footer:before,
1322blockquote.pull-right footer:before,
1323.blockquote-reverse small:before,
1324blockquote.pull-right small:before,
1325.blockquote-reverse .small:before,
1326blockquote.pull-right .small:before {
1327 content: '';
1328}
1329.blockquote-reverse footer:after,
1330blockquote.pull-right footer:after,
1331.blockquote-reverse small:after,
1332blockquote.pull-right small:after,
1333.blockquote-reverse .small:after,
1334blockquote.pull-right .small:after {
1335 content: '\00A0 \2014';
1336}
1337blockquote:before,
1338blockquote:after {
1339 content: "";
1340}
1341address {
1342 margin-bottom: 20px;
1343 font-style: normal;
1344 line-height: 1.42857143;
1345}
1346code,
1347kbd,
1348pre,
1349samp {
1350 font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1351}
1352code {
1353 padding: 2px 4px;
1354 font-size: 90%;
1355 color: #c7254e;
1356 background-color: #f9f2f4;
1357 border-radius: 4px;
1358}
1359kbd {
1360 padding: 2px 4px;
1361 font-size: 90%;
1362 color: #fff;
1363 background-color: #333;
1364 border-radius: 3px;
1365 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1366 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1367}
1368kbd kbd {
1369 padding: 0;
1370 font-size: 100%;
1371 -webkit-box-shadow: none;
1372 box-shadow: none;
1373}
1374pre {
1375 display: block;
1376 padding: 9.5px;
1377 margin: 0 0 10px;
1378 font-size: 13px;
1379 line-height: 1.42857143;
1380 color: #333;
1381 word-break: break-all;
1382 word-wrap: break-word;
1383 background-color: #f5f5f5;
1384 border: 1px solid #ccc;
1385 border-radius: 4px;
1386}
1387pre code {
1388 padding: 0;
1389 font-size: inherit;
1390 color: inherit;
1391 white-space: pre-wrap;
1392 background-color: transparent;
1393 border-radius: 0;
1394}
1395.pre-scrollable {
1396 max-height: 340px;
1397 overflow-y: scroll;
1398}
1399.container {
1400 padding-right: 15px;
1401 padding-left: 15px;
1402 margin-right: auto;
1403 margin-left: auto;
1404}
1405@media (min-width: 768px) {
1406 .container {
1407 width: 750px;
1408 }
1409}
1410@media (min-width: 992px) {
1411 .container {
1412 width: 970px;
1413 }
1414}
1415@media (min-width: 1200px) {
1416 .container {
1417 width: 1170px;
1418 }
1419}
1420.container-fluid {
1421 padding-right: 15px;
1422 padding-left: 15px;
1423 margin-right: auto;
1424 margin-left: auto;
1425}
1426.row {
1427 margin-right: -15px;
1428 margin-left: -15px;
1429}
1430.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 {
1431 position: relative;
1432 min-height: 1px;
1433 padding-right: 15px;
1434 padding-left: 15px;
1435}
1436.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 {
1437 float: left;
1438}
1439.col-xs-12 {
1440 width: 100%;
1441}
1442.col-xs-11 {
1443 width: 91.66666667%;
1444}
1445.col-xs-10 {
1446 width: 83.33333333%;
1447}
1448.col-xs-9 {
1449 width: 75%;
1450}
1451.col-xs-8 {
1452 width: 66.66666667%;
1453}
1454.col-xs-7 {
1455 width: 58.33333333%;
1456}
1457.col-xs-6 {
1458 width: 50%;
1459}
1460.col-xs-5 {
1461 width: 41.66666667%;
1462}
1463.col-xs-4 {
1464 width: 33.33333333%;
1465}
1466.col-xs-3 {
1467 width: 25%;
1468}
1469.col-xs-2 {
1470 width: 16.66666667%;
1471}
1472.col-xs-1 {
1473 width: 8.33333333%;
1474}
1475.col-xs-pull-12 {
1476 right: 100%;
1477}
1478.col-xs-pull-11 {
1479 right: 91.66666667%;
1480}
1481.col-xs-pull-10 {
1482 right: 83.33333333%;
1483}
1484.col-xs-pull-9 {
1485 right: 75%;
1486}
1487.col-xs-pull-8 {
1488 right: 66.66666667%;
1489}
1490.col-xs-pull-7 {
1491 right: 58.33333333%;
1492}
1493.col-xs-pull-6 {
1494 right: 50%;
1495}
1496.col-xs-pull-5 {
1497 right: 41.66666667%;
1498}
1499.col-xs-pull-4 {
1500 right: 33.33333333%;
1501}
1502.col-xs-pull-3 {
1503 right: 25%;
1504}
1505.col-xs-pull-2 {
1506 right: 16.66666667%;
1507}
1508.col-xs-pull-1 {
1509 right: 8.33333333%;
1510}
1511.col-xs-pull-0 {
1512 right: auto;
1513}
1514.col-xs-push-12 {
1515 left: 100%;
1516}
1517.col-xs-push-11 {
1518 left: 91.66666667%;
1519}
1520.col-xs-push-10 {
1521 left: 83.33333333%;
1522}
1523.col-xs-push-9 {
1524 left: 75%;
1525}
1526.col-xs-push-8 {
1527 left: 66.66666667%;
1528}
1529.col-xs-push-7 {
1530 left: 58.33333333%;
1531}
1532.col-xs-push-6 {
1533 left: 50%;
1534}
1535.col-xs-push-5 {
1536 left: 41.66666667%;
1537}
1538.col-xs-push-4 {
1539 left: 33.33333333%;
1540}
1541.col-xs-push-3 {
1542 left: 25%;
1543}
1544.col-xs-push-2 {
1545 left: 16.66666667%;
1546}
1547.col-xs-push-1 {
1548 left: 8.33333333%;
1549}
1550.col-xs-push-0 {
1551 left: auto;
1552}
1553.col-xs-offset-12 {
1554 margin-left: 100%;
1555}
1556.col-xs-offset-11 {
1557 margin-left: 91.66666667%;
1558}
1559.col-xs-offset-10 {
1560 margin-left: 83.33333333%;
1561}
1562.col-xs-offset-9 {
1563 margin-left: 75%;
1564}
1565.col-xs-offset-8 {
1566 margin-left: 66.66666667%;
1567}
1568.col-xs-offset-7 {
1569 margin-left: 58.33333333%;
1570}
1571.col-xs-offset-6 {
1572 margin-left: 50%;
1573}
1574.col-xs-offset-5 {
1575 margin-left: 41.66666667%;
1576}
1577.col-xs-offset-4 {
1578 margin-left: 33.33333333%;
1579}
1580.col-xs-offset-3 {
1581 margin-left: 25%;
1582}
1583.col-xs-offset-2 {
1584 margin-left: 16.66666667%;
1585}
1586.col-xs-offset-1 {
1587 margin-left: 8.33333333%;
1588}
1589.col-xs-offset-0 {
1590 margin-left: 0;
1591}
1592@media (min-width: 768px) {
1593 .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 {
1594 float: left;
1595 }
1596 .col-sm-12 {
1597 width: 100%;
1598 }
1599 .col-sm-11 {
1600 width: 91.66666667%;
1601 }
1602 .col-sm-10 {
1603 width: 83.33333333%;
1604 }
1605 .col-sm-9 {
1606 width: 75%;
1607 }
1608 .col-sm-8 {
1609 width: 66.66666667%;
1610 }
1611 .col-sm-7 {
1612 width: 58.33333333%;
1613 }
1614 .col-sm-6 {
1615 width: 50%;
1616 }
1617 .col-sm-5 {
1618 width: 41.66666667%;
1619 }
1620 .col-sm-4 {
1621 width: 33.33333333%;
1622 }
1623 .col-sm-3 {
1624 width: 25%;
1625 }
1626 .col-sm-2 {
1627 width: 16.66666667%;
1628 }
1629 .col-sm-1 {
1630 width: 8.33333333%;
1631 }
1632 .col-sm-pull-12 {
1633 right: 100%;
1634 }
1635 .col-sm-pull-11 {
1636 right: 91.66666667%;
1637 }
1638 .col-sm-pull-10 {
1639 right: 83.33333333%;
1640 }
1641 .col-sm-pull-9 {
1642 right: 75%;
1643 }
1644 .col-sm-pull-8 {
1645 right: 66.66666667%;
1646 }
1647 .col-sm-pull-7 {
1648 right: 58.33333333%;
1649 }
1650 .col-sm-pull-6 {
1651 right: 50%;
1652 }
1653 .col-sm-pull-5 {
1654 right: 41.66666667%;
1655 }
1656 .col-sm-pull-4 {
1657 right: 33.33333333%;
1658 }
1659 .col-sm-pull-3 {
1660 right: 25%;
1661 }
1662 .col-sm-pull-2 {
1663 right: 16.66666667%;
1664 }
1665 .col-sm-pull-1 {
1666 right: 8.33333333%;
1667 }
1668 .col-sm-pull-0 {
1669 right: auto;
1670 }
1671 .col-sm-push-12 {
1672 left: 100%;
1673 }
1674 .col-sm-push-11 {
1675 left: 91.66666667%;
1676 }
1677 .col-sm-push-10 {
1678 left: 83.33333333%;
1679 }
1680 .col-sm-push-9 {
1681 left: 75%;
1682 }
1683 .col-sm-push-8 {
1684 left: 66.66666667%;
1685 }
1686 .col-sm-push-7 {
1687 left: 58.33333333%;
1688 }
1689 .col-sm-push-6 {
1690 left: 50%;
1691 }
1692 .col-sm-push-5 {
1693 left: 41.66666667%;
1694 }
1695 .col-sm-push-4 {
1696 left: 33.33333333%;
1697 }
1698 .col-sm-push-3 {
1699 left: 25%;
1700 }
1701 .col-sm-push-2 {
1702 left: 16.66666667%;
1703 }
1704 .col-sm-push-1 {
1705 left: 8.33333333%;
1706 }
1707 .col-sm-push-0 {
1708 left: auto;
1709 }
1710 .col-sm-offset-12 {
1711 margin-left: 100%;
1712 }
1713 .col-sm-offset-11 {
1714 margin-left: 91.66666667%;
1715 }
1716 .col-sm-offset-10 {
1717 margin-left: 83.33333333%;
1718 }
1719 .col-sm-offset-9 {
1720 margin-left: 75%;
1721 }
1722 .col-sm-offset-8 {
1723 margin-left: 66.66666667%;
1724 }
1725 .col-sm-offset-7 {
1726 margin-left: 58.33333333%;
1727 }
1728 .col-sm-offset-6 {
1729 margin-left: 50%;
1730 }
1731 .col-sm-offset-5 {
1732 margin-left: 41.66666667%;
1733 }
1734 .col-sm-offset-4 {
1735 margin-left: 33.33333333%;
1736 }
1737 .col-sm-offset-3 {
1738 margin-left: 25%;
1739 }
1740 .col-sm-offset-2 {
1741 margin-left: 16.66666667%;
1742 }
1743 .col-sm-offset-1 {
1744 margin-left: 8.33333333%;
1745 }
1746 .col-sm-offset-0 {
1747 margin-left: 0;
1748 }
1749}
1750@media (min-width: 992px) {
1751 .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 {
1752 float: left;
1753 }
1754 .col-md-12 {
1755 width: 100%;
1756 }
1757 .col-md-11 {
1758 width: 91.66666667%;
1759 }
1760 .col-md-10 {
1761 width: 83.33333333%;
1762 }
1763 .col-md-9 {
1764 width: 75%;
1765 }
1766 .col-md-8 {
1767 width: 66.66666667%;
1768 }
1769 .col-md-7 {
1770 width: 58.33333333%;
1771 }
1772 .col-md-6 {
1773 width: 50%;
1774 }
1775 .col-md-5 {
1776 width: 41.66666667%;
1777 }
1778 .col-md-4 {
1779 width: 33.33333333%;
1780 }
1781 .col-md-3 {
1782 width: 25%;
1783 }
1784 .col-md-2 {
1785 width: 16.66666667%;
1786 }
1787 .col-md-1 {
1788 width: 8.33333333%;
1789 }
1790 .col-md-pull-12 {
1791 right: 100%;
1792 }
1793 .col-md-pull-11 {
1794 right: 91.66666667%;
1795 }
1796 .col-md-pull-10 {
1797 right: 83.33333333%;
1798 }
1799 .col-md-pull-9 {
1800 right: 75%;
1801 }
1802 .col-md-pull-8 {
1803 right: 66.66666667%;
1804 }
1805 .col-md-pull-7 {
1806 right: 58.33333333%;
1807 }
1808 .col-md-pull-6 {
1809 right: 50%;
1810 }
1811 .col-md-pull-5 {
1812 right: 41.66666667%;
1813 }
1814 .col-md-pull-4 {
1815 right: 33.33333333%;
1816 }
1817 .col-md-pull-3 {
1818 right: 25%;
1819 }
1820 .col-md-pull-2 {
1821 right: 16.66666667%;
1822 }
1823 .col-md-pull-1 {
1824 right: 8.33333333%;
1825 }
1826 .col-md-pull-0 {
1827 right: auto;
1828 }
1829 .col-md-push-12 {
1830 left: 100%;
1831 }
1832 .col-md-push-11 {
1833 left: 91.66666667%;
1834 }
1835 .col-md-push-10 {
1836 left: 83.33333333%;
1837 }
1838 .col-md-push-9 {
1839 left: 75%;
1840 }
1841 .col-md-push-8 {
1842 left: 66.66666667%;
1843 }
1844 .col-md-push-7 {
1845 left: 58.33333333%;
1846 }
1847 .col-md-push-6 {
1848 left: 50%;
1849 }
1850 .col-md-push-5 {
1851 left: 41.66666667%;
1852 }
1853 .col-md-push-4 {
1854 left: 33.33333333%;
1855 }
1856 .col-md-push-3 {
1857 left: 25%;
1858 }
1859 .col-md-push-2 {
1860 left: 16.66666667%;
1861 }
1862 .col-md-push-1 {
1863 left: 8.33333333%;
1864 }
1865 .col-md-push-0 {
1866 left: auto;
1867 }
1868 .col-md-offset-12 {
1869 margin-left: 100%;
1870 }
1871 .col-md-offset-11 {
1872 margin-left: 91.66666667%;
1873 }
1874 .col-md-offset-10 {
1875 margin-left: 83.33333333%;
1876 }
1877 .col-md-offset-9 {
1878 margin-left: 75%;
1879 }
1880 .col-md-offset-8 {
1881 margin-left: 66.66666667%;
1882 }
1883 .col-md-offset-7 {
1884 margin-left: 58.33333333%;
1885 }
1886 .col-md-offset-6 {
1887 margin-left: 50%;
1888 }
1889 .col-md-offset-5 {
1890 margin-left: 41.66666667%;
1891 }
1892 .col-md-offset-4 {
1893 margin-left: 33.33333333%;
1894 }
1895 .col-md-offset-3 {
1896 margin-left: 25%;
1897 }
1898 .col-md-offset-2 {
1899 margin-left: 16.66666667%;
1900 }
1901 .col-md-offset-1 {
1902 margin-left: 8.33333333%;
1903 }
1904 .col-md-offset-0 {
1905 margin-left: 0;
1906 }
1907}
1908@media (min-width: 1200px) {
1909 .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 {
1910 float: left;
1911 }
1912 .col-lg-12 {
1913 width: 100%;
1914 }
1915 .col-lg-11 {
1916 width: 91.66666667%;
1917 }
1918 .col-lg-10 {
1919 width: 83.33333333%;
1920 }
1921 .col-lg-9 {
1922 width: 75%;
1923 }
1924 .col-lg-8 {
1925 width: 66.66666667%;
1926 }
1927 .col-lg-7 {
1928 width: 58.33333333%;
1929 }
1930 .col-lg-6 {
1931 width: 50%;
1932 }
1933 .col-lg-5 {
1934 width: 41.66666667%;
1935 }
1936 .col-lg-4 {
1937 width: 33.33333333%;
1938 }
1939 .col-lg-3 {
1940 width: 25%;
1941 }
1942 .col-lg-2 {
1943 width: 16.66666667%;
1944 }
1945 .col-lg-1 {
1946 width: 8.33333333%;
1947 }
1948 .col-lg-pull-12 {
1949 right: 100%;
1950 }
1951 .col-lg-pull-11 {
1952 right: 91.66666667%;
1953 }
1954 .col-lg-pull-10 {
1955 right: 83.33333333%;
1956 }
1957 .col-lg-pull-9 {
1958 right: 75%;
1959 }
1960 .col-lg-pull-8 {
1961 right: 66.66666667%;
1962 }
1963 .col-lg-pull-7 {
1964 right: 58.33333333%;
1965 }
1966 .col-lg-pull-6 {
1967 right: 50%;
1968 }
1969 .col-lg-pull-5 {
1970 right: 41.66666667%;
1971 }
1972 .col-lg-pull-4 {
1973 right: 33.33333333%;
1974 }
1975 .col-lg-pull-3 {
1976 right: 25%;
1977 }
1978 .col-lg-pull-2 {
1979 right: 16.66666667%;
1980 }
1981 .col-lg-pull-1 {
1982 right: 8.33333333%;
1983 }
1984 .col-lg-pull-0 {
1985 right: auto;
1986 }
1987 .col-lg-push-12 {
1988 left: 100%;
1989 }
1990 .col-lg-push-11 {
1991 left: 91.66666667%;
1992 }
1993 .col-lg-push-10 {
1994 left: 83.33333333%;
1995 }
1996 .col-lg-push-9 {
1997 left: 75%;
1998 }
1999 .col-lg-push-8 {
2000 left: 66.66666667%;
2001 }
2002 .col-lg-push-7 {
2003 left: 58.33333333%;
2004 }
2005 .col-lg-push-6 {
2006 left: 50%;
2007 }
2008 .col-lg-push-5 {
2009 left: 41.66666667%;
2010 }
2011 .col-lg-push-4 {
2012 left: 33.33333333%;
2013 }
2014 .col-lg-push-3 {
2015 left: 25%;
2016 }
2017 .col-lg-push-2 {
2018 left: 16.66666667%;
2019 }
2020 .col-lg-push-1 {
2021 left: 8.33333333%;
2022 }
2023 .col-lg-push-0 {
2024 left: auto;
2025 }
2026 .col-lg-offset-12 {
2027 margin-left: 100%;
2028 }
2029 .col-lg-offset-11 {
2030 margin-left: 91.66666667%;
2031 }
2032 .col-lg-offset-10 {
2033 margin-left: 83.33333333%;
2034 }
2035 .col-lg-offset-9 {
2036 margin-left: 75%;
2037 }
2038 .col-lg-offset-8 {
2039 margin-left: 66.66666667%;
2040 }
2041 .col-lg-offset-7 {
2042 margin-left: 58.33333333%;
2043 }
2044 .col-lg-offset-6 {
2045 margin-left: 50%;
2046 }
2047 .col-lg-offset-5 {
2048 margin-left: 41.66666667%;
2049 }
2050 .col-lg-offset-4 {
2051 margin-left: 33.33333333%;
2052 }
2053 .col-lg-offset-3 {
2054 margin-left: 25%;
2055 }
2056 .col-lg-offset-2 {
2057 margin-left: 16.66666667%;
2058 }
2059 .col-lg-offset-1 {
2060 margin-left: 8.33333333%;
2061 }
2062 .col-lg-offset-0 {
2063 margin-left: 0;
2064 }
2065}
2066table {
2067 background-color: transparent;
2068}
2069th {
2070 text-align: left;
2071}
2072.table {
2073 width: 100%;
2074 max-width: 100%;
2075 margin-bottom: 20px;
2076}
2077.table > thead > tr > th,
2078.table > tbody > tr > th,
2079.table > tfoot > tr > th,
2080.table > thead > tr > td,
2081.table > tbody > tr > td,
2082.table > tfoot > tr > td {
2083 padding: 8px;
2084 line-height: 1.42857143;
2085 vertical-align: top;
2086 border-top: 1px solid #ddd;
2087}
2088.table > thead > tr > th {
2089 vertical-align: bottom;
2090 border-bottom: 2px solid #ddd;
2091}
2092.table > caption + thead > tr:first-child > th,
2093.table > colgroup + thead > tr:first-child > th,
2094.table > thead:first-child > tr:first-child > th,
2095.table > caption + thead > tr:first-child > td,
2096.table > colgroup + thead > tr:first-child > td,
2097.table > thead:first-child > tr:first-child > td {
2098 border-top: 0;
2099}
2100.table > tbody + tbody {
2101 border-top: 2px solid #ddd;
2102}
2103.table .table {
2104 background-color: #fff;
2105}
2106.table-condensed > thead > tr > th,
2107.table-condensed > tbody > tr > th,
2108.table-condensed > tfoot > tr > th,
2109.table-condensed > thead > tr > td,
2110.table-condensed > tbody > tr > td,
2111.table-condensed > tfoot > tr > td {
2112 padding: 5px;
2113}
2114.table-bordered {
2115 border: 1px solid #ddd;
2116}
2117.table-bordered > thead > tr > th,
2118.table-bordered > tbody > tr > th,
2119.table-bordered > tfoot > tr > th,
2120.table-bordered > thead > tr > td,
2121.table-bordered > tbody > tr > td,
2122.table-bordered > tfoot > tr > td {
2123 border: 1px solid #ddd;
2124}
2125.table-bordered > thead > tr > th,
2126.table-bordered > thead > tr > td {
2127 border-bottom-width: 2px;
2128}
2129.table-striped > tbody > tr:nth-child(odd) > td,
2130.table-striped > tbody > tr:nth-child(odd) > th {
2131 background-color: #f9f9f9;
2132}
2133.table-hover > tbody > tr:hover > td,
2134.table-hover > tbody > tr:hover > th {
2135 background-color: #f5f5f5;
2136}
2137table col[class*="col-"] {
2138 position: static;
2139 display: table-column;
2140 float: none;
2141}
2142table td[class*="col-"],
2143table th[class*="col-"] {
2144 position: static;
2145 display: table-cell;
2146 float: none;
2147}
2148.table > thead > tr > td.active,
2149.table > tbody > tr > td.active,
2150.table > tfoot > tr > td.active,
2151.table > thead > tr > th.active,
2152.table > tbody > tr > th.active,
2153.table > tfoot > tr > th.active,
2154.table > thead > tr.active > td,
2155.table > tbody > tr.active > td,
2156.table > tfoot > tr.active > td,
2157.table > thead > tr.active > th,
2158.table > tbody > tr.active > th,
2159.table > tfoot > tr.active > th {
2160 background-color: #f5f5f5;
2161}
2162.table-hover > tbody > tr > td.active:hover,
2163.table-hover > tbody > tr > th.active:hover,
2164.table-hover > tbody > tr.active:hover > td,
2165.table-hover > tbody > tr:hover > .active,
2166.table-hover > tbody > tr.active:hover > th {
2167 background-color: #e8e8e8;
2168}
2169.table > thead > tr > td.success,
2170.table > tbody > tr > td.success,
2171.table > tfoot > tr > td.success,
2172.table > thead > tr > th.success,
2173.table > tbody > tr > th.success,
2174.table > tfoot > tr > th.success,
2175.table > thead > tr.success > td,
2176.table > tbody > tr.success > td,
2177.table > tfoot > tr.success > td,
2178.table > thead > tr.success > th,
2179.table > tbody > tr.success > th,
2180.table > tfoot > tr.success > th {
2181 background-color: #dff0d8;
2182}
2183.table-hover > tbody > tr > td.success:hover,
2184.table-hover > tbody > tr > th.success:hover,
2185.table-hover > tbody > tr.success:hover > td,
2186.table-hover > tbody > tr:hover > .success,
2187.table-hover > tbody > tr.success:hover > th {
2188 background-color: #d0e9c6;
2189}
2190.table > thead > tr > td.info,
2191.table > tbody > tr > td.info,
2192.table > tfoot > tr > td.info,
2193.table > thead > tr > th.info,
2194.table > tbody > tr > th.info,
2195.table > tfoot > tr > th.info,
2196.table > thead > tr.info > td,
2197.table > tbody > tr.info > td,
2198.table > tfoot > tr.info > td,
2199.table > thead > tr.info > th,
2200.table > tbody > tr.info > th,
2201.table > tfoot > tr.info > th {
2202 background-color: #d9edf7;
2203}
2204.table-hover > tbody > tr > td.info:hover,
2205.table-hover > tbody > tr > th.info:hover,
2206.table-hover > tbody > tr.info:hover > td,
2207.table-hover > tbody > tr:hover > .info,
2208.table-hover > tbody > tr.info:hover > th {
2209 background-color: #c4e3f3;
2210}
2211.table > thead > tr > td.warning,
2212.table > tbody > tr > td.warning,
2213.table > tfoot > tr > td.warning,
2214.table > thead > tr > th.warning,
2215.table > tbody > tr > th.warning,
2216.table > tfoot > tr > th.warning,
2217.table > thead > tr.warning > td,
2218.table > tbody > tr.warning > td,
2219.table > tfoot > tr.warning > td,
2220.table > thead > tr.warning > th,
2221.table > tbody > tr.warning > th,
2222.table > tfoot > tr.warning > th {
2223 background-color: #fcf8e3;
2224}
2225.table-hover > tbody > tr > td.warning:hover,
2226.table-hover > tbody > tr > th.warning:hover,
2227.table-hover > tbody > tr.warning:hover > td,
2228.table-hover > tbody > tr:hover > .warning,
2229.table-hover > tbody > tr.warning:hover > th {
2230 background-color: #faf2cc;
2231}
2232.table > thead > tr > td.danger,
2233.table > tbody > tr > td.danger,
2234.table > tfoot > tr > td.danger,
2235.table > thead > tr > th.danger,
2236.table > tbody > tr > th.danger,
2237.table > tfoot > tr > th.danger,
2238.table > thead > tr.danger > td,
2239.table > tbody > tr.danger > td,
2240.table > tfoot > tr.danger > td,
2241.table > thead > tr.danger > th,
2242.table > tbody > tr.danger > th,
2243.table > tfoot > tr.danger > th {
2244 background-color: #f2dede;
2245}
2246.table-hover > tbody > tr > td.danger:hover,
2247.table-hover > tbody > tr > th.danger:hover,
2248.table-hover > tbody > tr.danger:hover > td,
2249.table-hover > tbody > tr:hover > .danger,
2250.table-hover > tbody > tr.danger:hover > th {
2251 background-color: #ebcccc;
2252}
2253@media screen and (max-width: 767px) {
2254 .table-responsive {
2255 width: 100%;
2256 margin-bottom: 15px;
2257 overflow-x: auto;
2258 overflow-y: hidden;
2259 -webkit-overflow-scrolling: touch;
2260 -ms-overflow-style: -ms-autohiding-scrollbar;
2261 border: 1px solid #ddd;
2262 }
2263 .table-responsive > .table {
2264 margin-bottom: 0;
2265 }
2266 .table-responsive > .table > thead > tr > th,
2267 .table-responsive > .table > tbody > tr > th,
2268 .table-responsive > .table > tfoot > tr > th,
2269 .table-responsive > .table > thead > tr > td,
2270 .table-responsive > .table > tbody > tr > td,
2271 .table-responsive > .table > tfoot > tr > td {
2272 white-space: nowrap;
2273 }
2274 .table-responsive > .table-bordered {
2275 border: 0;
2276 }
2277 .table-responsive > .table-bordered > thead > tr > th:first-child,
2278 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2279 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2280 .table-responsive > .table-bordered > thead > tr > td:first-child,
2281 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2282 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2283 border-left: 0;
2284 }
2285 .table-responsive > .table-bordered > thead > tr > th:last-child,
2286 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2287 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2288 .table-responsive > .table-bordered > thead > tr > td:last-child,
2289 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2290 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2291 border-right: 0;
2292 }
2293 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2294 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2295 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2296 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2297 border-bottom: 0;
2298 }
2299}
2300fieldset {
2301 min-width: 0;
2302 padding: 0;
2303 margin: 0;
2304 border: 0;
2305}
2306legend {
2307 display: block;
2308 width: 100%;
2309 padding: 0;
2310 margin-bottom: 20px;
2311 font-size: 21px;
2312 line-height: inherit;
2313 color: #333;
2314 border: 0;
2315 border-bottom: 1px solid #e5e5e5;
2316}
2317label {
2318 display: inline-block;
2319 max-width: 100%;
2320 margin-bottom: 5px;
2321 font-weight: bold;
2322}
2323input[type="search"] {
2324 -webkit-box-sizing: border-box;
2325 -moz-box-sizing: border-box;
2326 box-sizing: border-box;
2327}
2328input[type="radio"],
2329input[type="checkbox"] {
2330 margin: 4px 0 0;
2331 margin-top: 1px \9;
2332 line-height: normal;
2333}
2334input[type="file"] {
2335 display: block;
2336}
2337input[type="range"] {
2338 display: block;
2339 width: 100%;
2340}
2341select[multiple],
2342select[size] {
2343 height: auto;
2344}
2345input[type="file"]:focus,
2346input[type="radio"]:focus,
2347input[type="checkbox"]:focus {
2348 outline: thin dotted;
2349 outline: 5px auto -webkit-focus-ring-color;
2350 outline-offset: -2px;
2351}
2352output {
2353 display: block;
2354 padding-top: 7px;
2355 font-size: 14px;
2356 line-height: 1.42857143;
2357 color: #555;
2358}
2359.form-control {
2360 display: block;
2361 width: 100%;
2362 height: 34px;
2363 padding: 6px 12px;
2364 font-size: 14px;
2365 line-height: 1.42857143;
2366 color: #555;
2367 background-color: #fff;
2368 background-image: none;
2369 border: 1px solid #ccc;
2370 border-radius: 4px;
2371 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2372 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2373 -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2374 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2375 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2376}
2377.form-control:focus {
2378 border-color: #66afe9;
2379 outline: 0;
2380 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2381 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2382}
2383.form-control::-moz-placeholder {
2384 color: #777;
2385 opacity: 1;
2386}
2387.form-control:-ms-input-placeholder {
2388 color: #777;
2389}
2390.form-control::-webkit-input-placeholder {
2391 color: #777;
2392}
2393.form-control[disabled],
2394.form-control[readonly],
2395fieldset[disabled] .form-control {
2396 cursor: not-allowed;
2397 background-color: #eee;
2398 opacity: 1;
2399}
2400textarea.form-control {
2401 height: auto;
2402}
2403input[type="search"] {
2404 -webkit-appearance: none;
2405}
2406input[type="date"],
2407input[type="time"],
2408input[type="datetime-local"],
2409input[type="month"] {
2410 line-height: 34px;
2411 line-height: 1.42857143 \0;
2412}
2413input[type="date"].input-sm,
2414input[type="time"].input-sm,
2415input[type="datetime-local"].input-sm,
2416input[type="month"].input-sm {
2417 line-height: 30px;
2418}
2419input[type="date"].input-lg,
2420input[type="time"].input-lg,
2421input[type="datetime-local"].input-lg,
2422input[type="month"].input-lg {
2423 line-height: 46px;
2424}
2425.form-group {
2426 margin-bottom: 15px;
2427}
2428.radio,
2429.checkbox {
2430 position: relative;
2431 display: block;
2432 min-height: 20px;
2433 margin-top: 10px;
2434 margin-bottom: 10px;
2435}
2436.radio label,
2437.checkbox label {
2438 padding-left: 20px;
2439 margin-bottom: 0;
2440 font-weight: normal;
2441 cursor: pointer;
2442}
2443.radio input[type="radio"],
2444.radio-inline input[type="radio"],
2445.checkbox input[type="checkbox"],
2446.checkbox-inline input[type="checkbox"] {
2447 position: absolute;
2448 margin-top: 4px \9;
2449 margin-left: -20px;
2450}
2451.radio + .radio,
2452.checkbox + .checkbox {
2453 margin-top: -5px;
2454}
2455.radio-inline,
2456.checkbox-inline {
2457 display: inline-block;
2458 padding-left: 20px;
2459 margin-bottom: 0;
2460 font-weight: normal;
2461 vertical-align: middle;
2462 cursor: pointer;
2463}
2464.radio-inline + .radio-inline,
2465.checkbox-inline + .checkbox-inline {
2466 margin-top: 0;
2467 margin-left: 10px;
2468}
2469input[type="radio"][disabled],
2470input[type="checkbox"][disabled],
2471input[type="radio"].disabled,
2472input[type="checkbox"].disabled,
2473fieldset[disabled] input[type="radio"],
2474fieldset[disabled] input[type="checkbox"] {
2475 cursor: not-allowed;
2476}
2477.radio-inline.disabled,
2478.checkbox-inline.disabled,
2479fieldset[disabled] .radio-inline,
2480fieldset[disabled] .checkbox-inline {
2481 cursor: not-allowed;
2482}
2483.radio.disabled label,
2484.checkbox.disabled label,
2485fieldset[disabled] .radio label,
2486fieldset[disabled] .checkbox label {
2487 cursor: not-allowed;
2488}
2489.form-control-static {
2490 padding-top: 7px;
2491 padding-bottom: 7px;
2492 margin-bottom: 0;
2493}
2494.form-control-static.input-lg,
2495.form-control-static.input-sm {
2496 padding-right: 0;
2497 padding-left: 0;
2498}
2499.input-sm,
2500.form-horizontal .form-group-sm .form-control {
2501 height: 30px;
2502 padding: 5px 10px;
2503 font-size: 12px;
2504 line-height: 1.5;
2505 border-radius: 3px;
2506}
2507select.input-sm {
2508 height: 30px;
2509 line-height: 30px;
2510}
2511textarea.input-sm,
2512select[multiple].input-sm {
2513 height: auto;
2514}
2515.input-lg,
2516.form-horizontal .form-group-lg .form-control {
2517 height: 46px;
2518 padding: 10px 16px;
2519 font-size: 18px;
2520 line-height: 1.33;
2521 border-radius: 6px;
2522}
2523select.input-lg {
2524 height: 46px;
2525 line-height: 46px;
2526}
2527textarea.input-lg,
2528select[multiple].input-lg {
2529 height: auto;
2530}
2531.has-feedback {
2532 position: relative;
2533}
2534.has-feedback .form-control {
2535 padding-right: 42.5px;
2536}
2537.form-control-feedback {
2538 position: absolute;
2539 top: 25px;
2540 right: 0;
2541 z-index: 2;
2542 display: block;
2543 width: 34px;
2544 height: 34px;
2545 line-height: 34px;
2546 text-align: center;
2547}
2548.input-lg + .form-control-feedback {
2549 width: 46px;
2550 height: 46px;
2551 line-height: 46px;
2552}
2553.input-sm + .form-control-feedback {
2554 width: 30px;
2555 height: 30px;
2556 line-height: 30px;
2557}
2558.has-success .help-block,
2559.has-success .control-label,
2560.has-success .radio,
2561.has-success .checkbox,
2562.has-success .radio-inline,
2563.has-success .checkbox-inline {
2564 color: #3c763d;
2565}
2566.has-success .form-control {
2567 border-color: #3c763d;
2568 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2569 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2570}
2571.has-success .form-control:focus {
2572 border-color: #2b542c;
2573 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2574 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2575}
2576.has-success .input-group-addon {
2577 color: #3c763d;
2578 background-color: #dff0d8;
2579 border-color: #3c763d;
2580}
2581.has-success .form-control-feedback {
2582 color: #3c763d;
2583}
2584.has-warning .help-block,
2585.has-warning .control-label,
2586.has-warning .radio,
2587.has-warning .checkbox,
2588.has-warning .radio-inline,
2589.has-warning .checkbox-inline {
2590 color: #8a6d3b;
2591}
2592.has-warning .form-control {
2593 border-color: #8a6d3b;
2594 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2595 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2596}
2597.has-warning .form-control:focus {
2598 border-color: #66512c;
2599 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2600 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2601}
2602.has-warning .input-group-addon {
2603 color: #8a6d3b;
2604 background-color: #fcf8e3;
2605 border-color: #8a6d3b;
2606}
2607.has-warning .form-control-feedback {
2608 color: #8a6d3b;
2609}
2610.has-error .help-block,
2611.has-error .control-label,
2612.has-error .radio,
2613.has-error .checkbox,
2614.has-error .radio-inline,
2615.has-error .checkbox-inline {
2616 color: #a94442;
2617}
2618.has-error .form-control {
2619 border-color: #a94442;
2620 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2621 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2622}
2623.has-error .form-control:focus {
2624 border-color: #843534;
2625 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2626 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2627}
2628.has-error .input-group-addon {
2629 color: #a94442;
2630 background-color: #f2dede;
2631 border-color: #a94442;
2632}
2633.has-error .form-control-feedback {
2634 color: #a94442;
2635}
2636.has-feedback label.sr-only ~ .form-control-feedback {
2637 top: 0;
2638}
2639.help-block {
2640 display: block;
2641 margin-top: 5px;
2642 margin-bottom: 10px;
2643 color: #737373;
2644}
2645@media (min-width: 768px) {
2646 .form-inline .form-group {
2647 display: inline-block;
2648 margin-bottom: 0;
2649 vertical-align: middle;
2650 }
2651 .form-inline .form-control {
2652 display: inline-block;
2653 width: auto;
2654 vertical-align: middle;
2655 }
2656 .form-inline .input-group {
2657 display: inline-table;
2658 vertical-align: middle;
2659 }
2660 .form-inline .input-group .input-group-addon,
2661 .form-inline .input-group .input-group-btn,
2662 .form-inline .input-group .form-control {
2663 width: auto;
2664 }
2665 .form-inline .input-group > .form-control {
2666 width: 100%;
2667 }
2668 .form-inline .control-label {
2669 margin-bottom: 0;
2670 vertical-align: middle;
2671 }
2672 .form-inline .radio,
2673 .form-inline .checkbox {
2674 display: inline-block;
2675 margin-top: 0;
2676 margin-bottom: 0;
2677 vertical-align: middle;
2678 }
2679 .form-inline .radio label,
2680 .form-inline .checkbox label {
2681 padding-left: 0;
2682 }
2683 .form-inline .radio input[type="radio"],
2684 .form-inline .checkbox input[type="checkbox"] {
2685 position: relative;
2686 margin-left: 0;
2687 }
2688 .form-inline .has-feedback .form-control-feedback {
2689 top: 0;
2690 }
2691}
2692.form-horizontal .radio,
2693.form-horizontal .checkbox,
2694.form-horizontal .radio-inline,
2695.form-horizontal .checkbox-inline {
2696 padding-top: 7px;
2697 margin-top: 0;
2698 margin-bottom: 0;
2699}
2700.form-horizontal .radio,
2701.form-horizontal .checkbox {
2702 min-height: 27px;
2703}
2704.form-horizontal .form-group {
2705 margin-right: -15px;
2706 margin-left: -15px;
2707}
2708@media (min-width: 768px) {
2709 .form-horizontal .control-label {
2710 padding-top: 7px;
2711 margin-bottom: 0;
2712 text-align: right;
2713 }
2714}
2715.form-horizontal .has-feedback .form-control-feedback {
2716 top: 0;
2717 right: 15px;
2718}
2719@media (min-width: 768px) {
2720 .form-horizontal .form-group-lg .control-label {
2721 padding-top: 14.3px;
2722 }
2723}
2724@media (min-width: 768px) {
2725 .form-horizontal .form-group-sm .control-label {
2726 padding-top: 6px;
2727 }
2728}
2729.btn {
2730 display: inline-block;
2731 padding: 6px 12px;
2732 margin-bottom: 0;
2733 font-size: 14px;
2734 font-weight: normal;
2735 line-height: 1.42857143;
2736 text-align: center;
2737 white-space: nowrap;
2738 vertical-align: middle;
2739 cursor: pointer;
2740 -webkit-user-select: none;
2741 -moz-user-select: none;
2742 -ms-user-select: none;
2743 user-select: none;
2744 background-image: none;
2745 border: 1px solid transparent;
2746 border-radius: 4px;
2747}
2748.btn:focus,
2749.btn:active:focus,
2750.btn.active:focus {
2751 outline: thin dotted;
2752 outline: 5px auto -webkit-focus-ring-color;
2753 outline-offset: -2px;
2754}
2755.btn:hover,
2756.btn:focus {
2757 color: #333;
2758 text-decoration: none;
2759}
2760.btn:active,
2761.btn.active {
2762 background-image: none;
2763 outline: 0;
2764 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
2765 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
2766}
2767.btn.disabled,
2768.btn[disabled],
2769fieldset[disabled] .btn {
2770 pointer-events: none;
2771 cursor: not-allowed;
2772 filter: alpha(opacity=65);
2773 -webkit-box-shadow: none;
2774 box-shadow: none;
2775 opacity: .65;
2776}
2777.btn-default {
2778 color: #333;
2779 background-color: #fff;
2780 border-color: #ccc;
2781}
2782.btn-default:hover,
2783.btn-default:focus,
2784.btn-default:active,
2785.btn-default.active,
2786.open > .dropdown-toggle.btn-default {
2787 color: #333;
2788 background-color: #e6e6e6;
2789 border-color: #adadad;
2790}
2791.btn-default:active,
2792.btn-default.active,
2793.open > .dropdown-toggle.btn-default {
2794 background-image: none;
2795}
2796.btn-default.disabled,
2797.btn-default[disabled],
2798fieldset[disabled] .btn-default,
2799.btn-default.disabled:hover,
2800.btn-default[disabled]:hover,
2801fieldset[disabled] .btn-default:hover,
2802.btn-default.disabled:focus,
2803.btn-default[disabled]:focus,
2804fieldset[disabled] .btn-default:focus,
2805.btn-default.disabled:active,
2806.btn-default[disabled]:active,
2807fieldset[disabled] .btn-default:active,
2808.btn-default.disabled.active,
2809.btn-default[disabled].active,
2810fieldset[disabled] .btn-default.active {
2811 background-color: #fff;
2812 border-color: #ccc;
2813}
2814.btn-default .badge {
2815 color: #fff;
2816 background-color: #333;
2817}
2818.btn-primary {
2819 color: #fff;
2820 background-color: #428bca;
2821 border-color: #357ebd;
2822}
2823.btn-primary:hover,
2824.btn-primary:focus,
2825.btn-primary:active,
2826.btn-primary.active,
2827.open > .dropdown-toggle.btn-primary {
2828 color: #fff;
2829 background-color: #3071a9;
2830 border-color: #285e8e;
2831}
2832.btn-primary:active,
2833.btn-primary.active,
2834.open > .dropdown-toggle.btn-primary {
2835 background-image: none;
2836}
2837.btn-primary.disabled,
2838.btn-primary[disabled],
2839fieldset[disabled] .btn-primary,
2840.btn-primary.disabled:hover,
2841.btn-primary[disabled]:hover,
2842fieldset[disabled] .btn-primary:hover,
2843.btn-primary.disabled:focus,
2844.btn-primary[disabled]:focus,
2845fieldset[disabled] .btn-primary:focus,
2846.btn-primary.disabled:active,
2847.btn-primary[disabled]:active,
2848fieldset[disabled] .btn-primary:active,
2849.btn-primary.disabled.active,
2850.btn-primary[disabled].active,
2851fieldset[disabled] .btn-primary.active {
2852 background-color: #428bca;
2853 border-color: #357ebd;
2854}
2855.btn-primary .badge {
2856 color: #428bca;
2857 background-color: #fff;
2858}
2859.btn-success {
2860 color: #fff;
2861 background-color: #5cb85c;
2862 border-color: #4cae4c;
2863}
2864.btn-success:hover,
2865.btn-success:focus,
2866.btn-success:active,
2867.btn-success.active,
2868.open > .dropdown-toggle.btn-success {
2869 color: #fff;
2870 background-color: #449d44;
2871 border-color: #398439;
2872}
2873.btn-success:active,
2874.btn-success.active,
2875.open > .dropdown-toggle.btn-success {
2876 background-image: none;
2877}
2878.btn-success.disabled,
2879.btn-success[disabled],
2880fieldset[disabled] .btn-success,
2881.btn-success.disabled:hover,
2882.btn-success[disabled]:hover,
2883fieldset[disabled] .btn-success:hover,
2884.btn-success.disabled:focus,
2885.btn-success[disabled]:focus,
2886fieldset[disabled] .btn-success:focus,
2887.btn-success.disabled:active,
2888.btn-success[disabled]:active,
2889fieldset[disabled] .btn-success:active,
2890.btn-success.disabled.active,
2891.btn-success[disabled].active,
2892fieldset[disabled] .btn-success.active {
2893 background-color: #5cb85c;
2894 border-color: #4cae4c;
2895}
2896.btn-success .badge {
2897 color: #5cb85c;
2898 background-color: #fff;
2899}
2900.btn-info {
2901 color: #fff;
2902 background-color: #5bc0de;
2903 border-color: #46b8da;
2904}
2905.btn-info:hover,
2906.btn-info:focus,
2907.btn-info:active,
2908.btn-info.active,
2909.open > .dropdown-toggle.btn-info {
2910 color: #fff;
2911 background-color: #31b0d5;
2912 border-color: #269abc;
2913}
2914.btn-info:active,
2915.btn-info.active,
2916.open > .dropdown-toggle.btn-info {
2917 background-image: none;
2918}
2919.btn-info.disabled,
2920.btn-info[disabled],
2921fieldset[disabled] .btn-info,
2922.btn-info.disabled:hover,
2923.btn-info[disabled]:hover,
2924fieldset[disabled] .btn-info:hover,
2925.btn-info.disabled:focus,
2926.btn-info[disabled]:focus,
2927fieldset[disabled] .btn-info:focus,
2928.btn-info.disabled:active,
2929.btn-info[disabled]:active,
2930fieldset[disabled] .btn-info:active,
2931.btn-info.disabled.active,
2932.btn-info[disabled].active,
2933fieldset[disabled] .btn-info.active {
2934 background-color: #5bc0de;
2935 border-color: #46b8da;
2936}
2937.btn-info .badge {
2938 color: #5bc0de;
2939 background-color: #fff;
2940}
2941.btn-warning {
2942 color: #fff;
2943 background-color: #f0ad4e;
2944 border-color: #eea236;
2945}
2946.btn-warning:hover,
2947.btn-warning:focus,
2948.btn-warning:active,
2949.btn-warning.active,
2950.open > .dropdown-toggle.btn-warning {
2951 color: #fff;
2952 background-color: #ec971f;
2953 border-color: #d58512;
2954}
2955.btn-warning:active,
2956.btn-warning.active,
2957.open > .dropdown-toggle.btn-warning {
2958 background-image: none;
2959}
2960.btn-warning.disabled,
2961.btn-warning[disabled],
2962fieldset[disabled] .btn-warning,
2963.btn-warning.disabled:hover,
2964.btn-warning[disabled]:hover,
2965fieldset[disabled] .btn-warning:hover,
2966.btn-warning.disabled:focus,
2967.btn-warning[disabled]:focus,
2968fieldset[disabled] .btn-warning:focus,
2969.btn-warning.disabled:active,
2970.btn-warning[disabled]:active,
2971fieldset[disabled] .btn-warning:active,
2972.btn-warning.disabled.active,
2973.btn-warning[disabled].active,
2974fieldset[disabled] .btn-warning.active {
2975 background-color: #f0ad4e;
2976 border-color: #eea236;
2977}
2978.btn-warning .badge {
2979 color: #f0ad4e;
2980 background-color: #fff;
2981}
2982.btn-danger {
2983 color: #fff;
2984 background-color: #d9534f;
2985 border-color: #d43f3a;
2986}
2987.btn-danger:hover,
2988.btn-danger:focus,
2989.btn-danger:active,
2990.btn-danger.active,
2991.open > .dropdown-toggle.btn-danger {
2992 color: #fff;
2993 background-color: #c9302c;
2994 border-color: #ac2925;
2995}
2996.btn-danger:active,
2997.btn-danger.active,
2998.open > .dropdown-toggle.btn-danger {
2999 background-image: none;
3000}
3001.btn-danger.disabled,
3002.btn-danger[disabled],
3003fieldset[disabled] .btn-danger,
3004.btn-danger.disabled:hover,
3005.btn-danger[disabled]:hover,
3006fieldset[disabled] .btn-danger:hover,
3007.btn-danger.disabled:focus,
3008.btn-danger[disabled]:focus,
3009fieldset[disabled] .btn-danger:focus,
3010.btn-danger.disabled:active,
3011.btn-danger[disabled]:active,
3012fieldset[disabled] .btn-danger:active,
3013.btn-danger.disabled.active,
3014.btn-danger[disabled].active,
3015fieldset[disabled] .btn-danger.active {
3016 background-color: #d9534f;
3017 border-color: #d43f3a;
3018}
3019.btn-danger .badge {
3020 color: #d9534f;
3021 background-color: #fff;
3022}
3023.btn-link {
3024 font-weight: normal;
3025 color: #428bca;
3026 cursor: pointer;
3027 border-radius: 0;
3028}
3029.btn-link,
3030.btn-link:active,
3031.btn-link[disabled],
3032fieldset[disabled] .btn-link {
3033 background-color: transparent;
3034 -webkit-box-shadow: none;
3035 box-shadow: none;
3036}
3037.btn-link,
3038.btn-link:hover,
3039.btn-link:focus,
3040.btn-link:active {
3041 border-color: transparent;
3042}
3043.btn-link:hover,
3044.btn-link:focus {
3045 color: #2a6496;
3046 text-decoration: underline;
3047 background-color: transparent;
3048}
3049.btn-link[disabled]:hover,
3050fieldset[disabled] .btn-link:hover,
3051.btn-link[disabled]:focus,
3052fieldset[disabled] .btn-link:focus {
3053 color: #777;
3054 text-decoration: none;
3055}
3056.btn-lg,
3057.btn-group-lg > .btn {
3058 padding: 10px 16px;
3059 font-size: 18px;
3060 line-height: 1.33;
3061 border-radius: 6px;
3062}
3063.btn-sm,
3064.btn-group-sm > .btn {
3065 padding: 5px 10px;
3066 font-size: 12px;
3067 line-height: 1.5;
3068 border-radius: 3px;
3069}
3070.btn-xs,
3071.btn-group-xs > .btn {
3072 padding: 1px 5px;
3073 font-size: 12px;
3074 line-height: 1.5;
3075 border-radius: 3px;
3076}
3077.btn-block {
3078 display: block;
3079 width: 100%;
3080}
3081.btn-block + .btn-block {
3082 margin-top: 5px;
3083}
3084input[type="submit"].btn-block,
3085input[type="reset"].btn-block,
3086input[type="button"].btn-block {
3087 width: 100%;
3088}
3089.fade {
3090 opacity: 0;
3091 -webkit-transition: opacity .15s linear;
3092 -o-transition: opacity .15s linear;
3093 transition: opacity .15s linear;
3094}
3095.fade.in {
3096 opacity: 1;
3097}
3098.collapse {
3099 display: none;
3100}
3101.collapse.in {
3102 display: block;
3103}
3104tr.collapse.in {
3105 display: table-row;
3106}
3107tbody.collapse.in {
3108 display: table-row-group;
3109}
3110.collapsing {
3111 position: relative;
3112 height: 0;
3113 overflow: hidden;
3114 -webkit-transition: height .35s ease;
3115 -o-transition: height .35s ease;
3116 transition: height .35s ease;
3117}
3118.caret {
3119 display: inline-block;
3120 width: 0;
3121 height: 0;
3122 margin-left: 2px;
3123 vertical-align: middle;
3124 border-top: 4px solid;
3125 border-right: 4px solid transparent;
3126 border-left: 4px solid transparent;
3127}
3128.dropdown {
3129 position: relative;
3130}
3131.dropdown-toggle:focus {
3132 outline: 0;
3133}
3134.dropdown-menu {
3135 position: absolute;
3136 top: 100%;
3137 left: 0;
3138 z-index: 1000;
3139 display: none;
3140 float: left;
3141 min-width: 160px;
3142 padding: 5px 0;
3143 margin: 2px 0 0;
3144 font-size: 14px;
3145 text-align: left;
3146 list-style: none;
3147 background-color: #fff;
3148 -webkit-background-clip: padding-box;
3149 background-clip: padding-box;
3150 border: 1px solid #ccc;
3151 border: 1px solid rgba(0, 0, 0, .15);
3152 border-radius: 4px;
3153 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3154 box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3155}
3156.dropdown-menu.pull-right {
3157 right: 0;
3158 left: auto;
3159}
3160.dropdown-menu .divider {
3161 height: 1px;
3162 margin: 9px 0;
3163 overflow: hidden;
3164 background-color: #e5e5e5;
3165}
3166.dropdown-menu > li > a {
3167 display: block;
3168 padding: 3px 20px;
3169 clear: both;
3170 font-weight: normal;
3171 line-height: 1.42857143;
3172 color: #333;
3173 white-space: nowrap;
3174}
3175.dropdown-menu > li > a:hover,
3176.dropdown-menu > li > a:focus {
3177 color: #262626;
3178 text-decoration: none;
3179 background-color: #f5f5f5;
3180}
3181.dropdown-menu > .active > a,
3182.dropdown-menu > .active > a:hover,
3183.dropdown-menu > .active > a:focus {
3184 color: #fff;
3185 text-decoration: none;
3186 background-color: #428bca;
3187 outline: 0;
3188}
3189.dropdown-menu > .disabled > a,
3190.dropdown-menu > .disabled > a:hover,
3191.dropdown-menu > .disabled > a:focus {
3192 color: #777;
3193}
3194.dropdown-menu > .disabled > a:hover,
3195.dropdown-menu > .disabled > a:focus {
3196 text-decoration: none;
3197 cursor: not-allowed;
3198 background-color: transparent;
3199 background-image: none;
3200 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3201}
3202.open > .dropdown-menu {
3203 display: block;
3204}
3205.open > a {
3206 outline: 0;
3207}
3208.dropdown-menu-right {
3209 right: 0;
3210 left: auto;
3211}
3212.dropdown-menu-left {
3213 right: auto;
3214 left: 0;
3215}
3216.dropdown-header {
3217 display: block;
3218 padding: 3px 20px;
3219 font-size: 12px;
3220 line-height: 1.42857143;
3221 color: #777;
3222 white-space: nowrap;
3223}
3224.dropdown-backdrop {
3225 position: fixed;
3226 top: 0;
3227 right: 0;
3228 bottom: 0;
3229 left: 0;
3230 z-index: 990;
3231}
3232.pull-right > .dropdown-menu {
3233 right: 0;
3234 left: auto;
3235}
3236.dropup .caret,
3237.navbar-fixed-bottom .dropdown .caret {
3238 content: "";
3239 border-top: 0;
3240 border-bottom: 4px solid;
3241}
3242.dropup .dropdown-menu,
3243.navbar-fixed-bottom .dropdown .dropdown-menu {
3244 top: auto;
3245 bottom: 100%;
3246 margin-bottom: 1px;
3247}
3248@media (min-width: 768px) {
3249 .navbar-right .dropdown-menu {
3250 right: 0;
3251 left: auto;
3252 }
3253 .navbar-right .dropdown-menu-left {
3254 right: auto;
3255 left: 0;
3256 }
3257}
3258.btn-group,
3259.btn-group-vertical {
3260 position: relative;
3261 display: inline-block;
3262 vertical-align: middle;
3263}
3264.btn-group > .btn,
3265.btn-group-vertical > .btn {
3266 position: relative;
3267 float: left;
3268}
3269.btn-group > .btn:hover,
3270.btn-group-vertical > .btn:hover,
3271.btn-group > .btn:focus,
3272.btn-group-vertical > .btn:focus,
3273.btn-group > .btn:active,
3274.btn-group-vertical > .btn:active,
3275.btn-group > .btn.active,
3276.btn-group-vertical > .btn.active {
3277 z-index: 2;
3278}
3279.btn-group > .btn:focus,
3280.btn-group-vertical > .btn:focus {
3281 outline: 0;
3282}
3283.btn-group .btn + .btn,
3284.btn-group .btn + .btn-group,
3285.btn-group .btn-group + .btn,
3286.btn-group .btn-group + .btn-group {
3287 margin-left: -1px;
3288}
3289.btn-toolbar {
3290 margin-left: -5px;
3291}
3292.btn-toolbar .btn-group,
3293.btn-toolbar .input-group {
3294 float: left;
3295}
3296.btn-toolbar > .btn,
3297.btn-toolbar > .btn-group,
3298.btn-toolbar > .input-group {
3299 margin-left: 5px;
3300}
3301.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3302 border-radius: 0;
3303}
3304.btn-group > .btn:first-child {
3305 margin-left: 0;
3306}
3307.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3308 border-top-right-radius: 0;
3309 border-bottom-right-radius: 0;
3310}
3311.btn-group > .btn:last-child:not(:first-child),
3312.btn-group > .dropdown-toggle:not(:first-child) {
3313 border-top-left-radius: 0;
3314 border-bottom-left-radius: 0;
3315}
3316.btn-group > .btn-group {
3317 float: left;
3318}
3319.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3320 border-radius: 0;
3321}
3322.btn-group > .btn-group:first-child > .btn:last-child,
3323.btn-group > .btn-group:first-child > .dropdown-toggle {
3324 border-top-right-radius: 0;
3325 border-bottom-right-radius: 0;
3326}
3327.btn-group > .btn-group:last-child > .btn:first-child {
3328 border-top-left-radius: 0;
3329 border-bottom-left-radius: 0;
3330}
3331.btn-group .dropdown-toggle:active,
3332.btn-group.open .dropdown-toggle {
3333 outline: 0;
3334}
3335.btn-group > .btn + .dropdown-toggle {
3336 padding-right: 8px;
3337 padding-left: 8px;
3338}
3339.btn-group > .btn-lg + .dropdown-toggle {
3340 padding-right: 12px;
3341 padding-left: 12px;
3342}
3343.btn-group.open .dropdown-toggle {
3344 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3345 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3346}
3347.btn-group.open .dropdown-toggle.btn-link {
3348 -webkit-box-shadow: none;
3349 box-shadow: none;
3350}
3351.btn .caret {
3352 margin-left: 0;
3353}
3354.btn-lg .caret {
3355 border-width: 5px 5px 0;
3356 border-bottom-width: 0;
3357}
3358.dropup .btn-lg .caret {
3359 border-width: 0 5px 5px;
3360}
3361.btn-group-vertical > .btn,
3362.btn-group-vertical > .btn-group,
3363.btn-group-vertical > .btn-group > .btn {
3364 display: block;
3365 float: none;
3366 width: 100%;
3367 max-width: 100%;
3368}
3369.btn-group-vertical > .btn-group > .btn {
3370 float: none;
3371}
3372.btn-group-vertical > .btn + .btn,
3373.btn-group-vertical > .btn + .btn-group,
3374.btn-group-vertical > .btn-group + .btn,
3375.btn-group-vertical > .btn-group + .btn-group {
3376 margin-top: -1px;
3377 margin-left: 0;
3378}
3379.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3380 border-radius: 0;
3381}
3382.btn-group-vertical > .btn:first-child:not(:last-child) {
3383 border-top-right-radius: 4px;
3384 border-bottom-right-radius: 0;
3385 border-bottom-left-radius: 0;
3386}
3387.btn-group-vertical > .btn:last-child:not(:first-child) {
3388 border-top-left-radius: 0;
3389 border-top-right-radius: 0;
3390 border-bottom-left-radius: 4px;
3391}
3392.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3393 border-radius: 0;
3394}
3395.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3396.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3397 border-bottom-right-radius: 0;
3398 border-bottom-left-radius: 0;
3399}
3400.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3401 border-top-left-radius: 0;
3402 border-top-right-radius: 0;
3403}
3404.btn-group-justified {
3405 display: table;
3406 width: 100%;
3407 table-layout: fixed;
3408 border-collapse: separate;
3409}
3410.btn-group-justified > .btn,
3411.btn-group-justified > .btn-group {
3412 display: table-cell;
3413 float: none;
3414 width: 1%;
3415}
3416.btn-group-justified > .btn-group .btn {
3417 width: 100%;
3418}
3419.btn-group-justified > .btn-group .dropdown-menu {
3420 left: auto;
3421}
3422[data-toggle="buttons"] > .btn > input[type="radio"],
3423[data-toggle="buttons"] > .btn > input[type="checkbox"] {
3424 position: absolute;
3425 z-index: -1;
3426 filter: alpha(opacity=0);
3427 opacity: 0;
3428}
3429.input-group {
3430 position: relative;
3431 display: table;
3432 border-collapse: separate;
3433}
3434.input-group[class*="col-"] {
3435 float: none;
3436 padding-right: 0;
3437 padding-left: 0;
3438}
3439.input-group .form-control {
3440 position: relative;
3441 z-index: 2;
3442 float: left;
3443 width: 100%;
3444 margin-bottom: 0;
3445}
3446.input-group-lg > .form-control,
3447.input-group-lg > .input-group-addon,
3448.input-group-lg > .input-group-btn > .btn {
3449 height: 46px;
3450 padding: 10px 16px;
3451 font-size: 18px;
3452 line-height: 1.33;
3453 border-radius: 6px;
3454}
3455select.input-group-lg > .form-control,
3456select.input-group-lg > .input-group-addon,
3457select.input-group-lg > .input-group-btn > .btn {
3458 height: 46px;
3459 line-height: 46px;
3460}
3461textarea.input-group-lg > .form-control,
3462textarea.input-group-lg > .input-group-addon,
3463textarea.input-group-lg > .input-group-btn > .btn,
3464select[multiple].input-group-lg > .form-control,
3465select[multiple].input-group-lg > .input-group-addon,
3466select[multiple].input-group-lg > .input-group-btn > .btn {
3467 height: auto;
3468}
3469.input-group-sm > .form-control,
3470.input-group-sm > .input-group-addon,
3471.input-group-sm > .input-group-btn > .btn {
3472 height: 30px;
3473 padding: 5px 10px;
3474 font-size: 12px;
3475 line-height: 1.5;
3476 border-radius: 3px;
3477}
3478select.input-group-sm > .form-control,
3479select.input-group-sm > .input-group-addon,
3480select.input-group-sm > .input-group-btn > .btn {
3481 height: 30px;
3482 line-height: 30px;
3483}
3484textarea.input-group-sm > .form-control,
3485textarea.input-group-sm > .input-group-addon,
3486textarea.input-group-sm > .input-group-btn > .btn,
3487select[multiple].input-group-sm > .form-control,
3488select[multiple].input-group-sm > .input-group-addon,
3489select[multiple].input-group-sm > .input-group-btn > .btn {
3490 height: auto;
3491}
3492.input-group-addon,
3493.input-group-btn,
3494.input-group .form-control {
3495 display: table-cell;
3496}
3497.input-group-addon:not(:first-child):not(:last-child),
3498.input-group-btn:not(:first-child):not(:last-child),
3499.input-group .form-control:not(:first-child):not(:last-child) {
3500 border-radius: 0;
3501}
3502.input-group-addon,
3503.input-group-btn {
3504 width: 1%;
3505 white-space: nowrap;
3506 vertical-align: middle;
3507}
3508.input-group-addon {
3509 padding: 6px 12px;
3510 font-size: 14px;
3511 font-weight: normal;
3512 line-height: 1;
3513 color: #555;
3514 text-align: center;
3515 background-color: #eee;
3516 border: 1px solid #ccc;
3517 border-radius: 4px;
3518}
3519.input-group-addon.input-sm {
3520 padding: 5px 10px;
3521 font-size: 12px;
3522 border-radius: 3px;
3523}
3524.input-group-addon.input-lg {
3525 padding: 10px 16px;
3526 font-size: 18px;
3527 border-radius: 6px;
3528}
3529.input-group-addon input[type="radio"],
3530.input-group-addon input[type="checkbox"] {
3531 margin-top: 0;
3532}
3533.input-group .form-control:first-child,
3534.input-group-addon:first-child,
3535.input-group-btn:first-child > .btn,
3536.input-group-btn:first-child > .btn-group > .btn,
3537.input-group-btn:first-child > .dropdown-toggle,
3538.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3539.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3540 border-top-right-radius: 0;
3541 border-bottom-right-radius: 0;
3542}
3543.input-group-addon:first-child {
3544 border-right: 0;
3545}
3546.input-group .form-control:last-child,
3547.input-group-addon:last-child,
3548.input-group-btn:last-child > .btn,
3549.input-group-btn:last-child > .btn-group > .btn,
3550.input-group-btn:last-child > .dropdown-toggle,
3551.input-group-btn:first-child > .btn:not(:first-child),
3552.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3553 border-top-left-radius: 0;
3554 border-bottom-left-radius: 0;
3555}
3556.input-group-addon:last-child {
3557 border-left: 0;
3558}
3559.input-group-btn {
3560 position: relative;
3561 font-size: 0;
3562 white-space: nowrap;
3563}
3564.input-group-btn > .btn {
3565 position: relative;
3566}
3567.input-group-btn > .btn + .btn {
3568 margin-left: -1px;
3569}
3570.input-group-btn > .btn:hover,
3571.input-group-btn > .btn:focus,
3572.input-group-btn > .btn:active {
3573 z-index: 2;
3574}
3575.input-group-btn:first-child > .btn,
3576.input-group-btn:first-child > .btn-group {
3577 margin-right: -1px;
3578}
3579.input-group-btn:last-child > .btn,
3580.input-group-btn:last-child > .btn-group {
3581 margin-left: -1px;
3582}
3583.nav {
3584 padding-left: 0;
3585 margin-bottom: 0;
3586 list-style: none;
3587}
3588.nav > li {
3589 position: relative;
3590 display: block;
3591}
3592.nav > li > a {
3593 position: relative;
3594 display: block;
3595 padding: 10px 15px;
3596}
3597.nav > li > a:hover,
3598.nav > li > a:focus {
3599 text-decoration: none;
3600 background-color: #eee;
3601}
3602.nav > li.disabled > a {
3603 color: #777;
3604}
3605.nav > li.disabled > a:hover,
3606.nav > li.disabled > a:focus {
3607 color: #777;
3608 text-decoration: none;
3609 cursor: not-allowed;
3610 background-color: transparent;
3611}
3612.nav .open > a,
3613.nav .open > a:hover,
3614.nav .open > a:focus {
3615 background-color: #eee;
3616 border-color: #428bca;
3617}
3618.nav .nav-divider {
3619 height: 1px;
3620 margin: 9px 0;
3621 overflow: hidden;
3622 background-color: #e5e5e5;
3623}
3624.nav > li > a > img {
3625 max-width: none;
3626}
3627.nav-tabs {
3628 border-bottom: 1px solid #ddd;
3629}
3630.nav-tabs > li {
3631 float: left;
3632 margin-bottom: -1px;
3633}
3634.nav-tabs > li > a {
3635 margin-right: 2px;
3636 line-height: 1.42857143;
3637 border: 1px solid transparent;
3638 border-radius: 4px 4px 0 0;
3639}
3640.nav-tabs > li > a:hover {
3641 border-color: #eee #eee #ddd;
3642}
3643.nav-tabs > li.active > a,
3644.nav-tabs > li.active > a:hover,
3645.nav-tabs > li.active > a:focus {
3646 color: #555;
3647 cursor: default;
3648 background-color: #fff;
3649 border: 1px solid #ddd;
3650 border-bottom-color: transparent;
3651}
3652.nav-tabs.nav-justified {
3653 width: 100%;
3654 border-bottom: 0;
3655}
3656.nav-tabs.nav-justified > li {
3657 float: none;
3658}
3659.nav-tabs.nav-justified > li > a {
3660 margin-bottom: 5px;
3661 text-align: center;
3662}
3663.nav-tabs.nav-justified > .dropdown .dropdown-menu {
3664 top: auto;
3665 left: auto;
3666}
3667@media (min-width: 768px) {
3668 .nav-tabs.nav-justified > li {
3669 display: table-cell;
3670 width: 1%;
3671 }
3672 .nav-tabs.nav-justified > li > a {
3673 margin-bottom: 0;
3674 }
3675}
3676.nav-tabs.nav-justified > li > a {
3677 margin-right: 0;
3678 border-radius: 4px;
3679}
3680.nav-tabs.nav-justified > .active > a,
3681.nav-tabs.nav-justified > .active > a:hover,
3682.nav-tabs.nav-justified > .active > a:focus {
3683 border: 1px solid #ddd;
3684}
3685@media (min-width: 768px) {
3686 .nav-tabs.nav-justified > li > a {
3687 border-bottom: 1px solid #ddd;
3688 border-radius: 4px 4px 0 0;
3689 }
3690 .nav-tabs.nav-justified > .active > a,
3691 .nav-tabs.nav-justified > .active > a:hover,
3692 .nav-tabs.nav-justified > .active > a:focus {
3693 border-bottom-color: #fff;
3694 }
3695}
3696.nav-pills > li {
3697 float: left;
3698}
3699.nav-pills > li > a {
3700 border-radius: 4px;
3701}
3702.nav-pills > li + li {
3703 margin-left: 2px;
3704}
3705.nav-pills > li.active > a,
3706.nav-pills > li.active > a:hover,
3707.nav-pills > li.active > a:focus {
3708 color: #fff;
3709 background-color: #428bca;
3710}
3711.nav-stacked > li {
3712 float: none;
3713}
3714.nav-stacked > li + li {
3715 margin-top: 2px;
3716 margin-left: 0;
3717}
3718.nav-justified {
3719 width: 100%;
3720}
3721.nav-justified > li {
3722 float: none;
3723}
3724.nav-justified > li > a {
3725 margin-bottom: 5px;
3726 text-align: center;
3727}
3728.nav-justified > .dropdown .dropdown-menu {
3729 top: auto;
3730 left: auto;
3731}
3732@media (min-width: 768px) {
3733 .nav-justified > li {
3734 display: table-cell;
3735 width: 1%;
3736 }
3737 .nav-justified > li > a {
3738 margin-bottom: 0;
3739 }
3740}
3741.nav-tabs-justified {
3742 border-bottom: 0;
3743}
3744.nav-tabs-justified > li > a {
3745 margin-right: 0;
3746 border-radius: 4px;
3747}
3748.nav-tabs-justified > .active > a,
3749.nav-tabs-justified > .active > a:hover,
3750.nav-tabs-justified > .active > a:focus {
3751 border: 1px solid #ddd;
3752}
3753@media (min-width: 768px) {
3754 .nav-tabs-justified > li > a {
3755 border-bottom: 1px solid #ddd;
3756 border-radius: 4px 4px 0 0;
3757 }
3758 .nav-tabs-justified > .active > a,
3759 .nav-tabs-justified > .active > a:hover,
3760 .nav-tabs-justified > .active > a:focus {
3761 border-bottom-color: #fff;
3762 }
3763}
3764.tab-content > .tab-pane {
3765 display: none;
3766}
3767.tab-content > .active {
3768 display: block;
3769}
3770.nav-tabs .dropdown-menu {
3771 margin-top: -1px;
3772 border-top-left-radius: 0;
3773 border-top-right-radius: 0;
3774}
3775.navbar {
3776 position: relative;
3777 min-height: 50px;
3778 margin-bottom: 20px;
3779 border: 1px solid transparent;
3780}
3781@media (min-width: 768px) {
3782 .navbar {
3783 border-radius: 4px;
3784 }
3785}
3786@media (min-width: 768px) {
3787 .navbar-header {
3788 float: left;
3789 }
3790}
3791.navbar-collapse {
3792 padding-right: 15px;
3793 padding-left: 15px;
3794 overflow-x: visible;
3795 -webkit-overflow-scrolling: touch;
3796 border-top: 1px solid transparent;
3797 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
3798 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
3799}
3800.navbar-collapse.in {
3801 overflow-y: auto;
3802}
3803@media (min-width: 768px) {
3804 .navbar-collapse {
3805 width: auto;
3806 border-top: 0;
3807 -webkit-box-shadow: none;
3808 box-shadow: none;
3809 }
3810 .navbar-collapse.collapse {
3811 display: block !important;
3812 height: auto !important;
3813 padding-bottom: 0;
3814 overflow: visible !important;
3815 }
3816 .navbar-collapse.in {
3817 overflow-y: visible;
3818 }
3819 .navbar-fixed-top .navbar-collapse,
3820 .navbar-static-top .navbar-collapse,
3821 .navbar-fixed-bottom .navbar-collapse {
3822 padding-right: 0;
3823 padding-left: 0;
3824 }
3825}
3826.navbar-fixed-top .navbar-collapse,
3827.navbar-fixed-bottom .navbar-collapse {
3828 max-height: 340px;
3829}
3830@media (max-width: 480px) and (orientation: landscape) {
3831 .navbar-fixed-top .navbar-collapse,
3832 .navbar-fixed-bottom .navbar-collapse {
3833 max-height: 200px;
3834 }
3835}
3836.container > .navbar-header,
3837.container-fluid > .navbar-header,
3838.container > .navbar-collapse,
3839.container-fluid > .navbar-collapse {
3840 margin-right: -15px;
3841 margin-left: -15px;
3842}
3843@media (min-width: 768px) {
3844 .container > .navbar-header,
3845 .container-fluid > .navbar-header,
3846 .container > .navbar-collapse,
3847 .container-fluid > .navbar-collapse {
3848 margin-right: 0;
3849 margin-left: 0;
3850 }
3851}
3852.navbar-static-top {
3853 z-index: 1000;
3854 border-width: 0 0 1px;
3855}
3856@media (min-width: 768px) {
3857 .navbar-static-top {
3858 border-radius: 0;
3859 }
3860}
3861.navbar-fixed-top,
3862.navbar-fixed-bottom {
3863 position: fixed;
3864 right: 0;
3865 left: 0;
3866 z-index: 1030;
3867 -webkit-transform: translate3d(0, 0, 0);
3868 -o-transform: translate3d(0, 0, 0);
3869 transform: translate3d(0, 0, 0);
3870}
3871@media (min-width: 768px) {
3872 .navbar-fixed-top,
3873 .navbar-fixed-bottom {
3874 border-radius: 0;
3875 }
3876}
3877.navbar-fixed-top {
3878 top: 0;
3879 border-width: 0 0 1px;
3880}
3881.navbar-fixed-bottom {
3882 bottom: 0;
3883 margin-bottom: 0;
3884 border-width: 1px 0 0;
3885}
3886.navbar-brand {
3887 float: left;
3888 height: 50px;
3889 padding: 15px 15px;
3890 font-size: 18px;
3891 line-height: 20px;
3892}
3893.navbar-brand:hover,
3894.navbar-brand:focus {
3895 text-decoration: none;
3896}
3897@media (min-width: 768px) {
3898 .navbar > .container .navbar-brand,
3899 .navbar > .container-fluid .navbar-brand {
3900 margin-left: -15px;
3901 }
3902}
3903.navbar-toggle {
3904 position: relative;
3905 float: right;
3906 padding: 9px 10px;
3907 margin-top: 8px;
3908 margin-right: 15px;
3909 margin-bottom: 8px;
3910 background-color: transparent;
3911 background-image: none;
3912 border: 1px solid transparent;
3913 border-radius: 4px;
3914}
3915.navbar-toggle:focus {
3916 outline: 0;
3917}
3918.navbar-toggle .icon-bar {
3919 display: block;
3920 width: 22px;
3921 height: 2px;
3922 border-radius: 1px;
3923}
3924.navbar-toggle .icon-bar + .icon-bar {
3925 margin-top: 4px;
3926}
3927@media (min-width: 768px) {
3928 .navbar-toggle {
3929 display: none;
3930 }
3931}
3932.navbar-nav {
3933 margin: 7.5px -15px;
3934}
3935.navbar-nav > li > a {
3936 padding-top: 10px;
3937 padding-bottom: 10px;
3938 line-height: 20px;
3939}
3940@media (max-width: 767px) {
3941 .navbar-nav .open .dropdown-menu {
3942 position: static;
3943 float: none;
3944 width: auto;
3945 margin-top: 0;
3946 background-color: transparent;
3947 border: 0;
3948 -webkit-box-shadow: none;
3949 box-shadow: none;
3950 }
3951 .navbar-nav .open .dropdown-menu > li > a,
3952 .navbar-nav .open .dropdown-menu .dropdown-header {
3953 padding: 5px 15px 5px 25px;
3954 }
3955 .navbar-nav .open .dropdown-menu > li > a {
3956 line-height: 20px;
3957 }
3958 .navbar-nav .open .dropdown-menu > li > a:hover,
3959 .navbar-nav .open .dropdown-menu > li > a:focus {
3960 background-image: none;
3961 }
3962}
3963@media (min-width: 768px) {
3964 .navbar-nav {
3965 float: left;
3966 margin: 0;
3967 }
3968 .navbar-nav > li {
3969 float: left;
3970 }
3971 .navbar-nav > li > a {
3972 padding-top: 15px;
3973 padding-bottom: 15px;
3974 }
3975 .navbar-nav.navbar-right:last-child {
3976 margin-right: -15px;
3977 }
3978}
3979@media (min-width: 768px) {
3980 .navbar-left {
3981 float: left !important;
3982 }
3983 .navbar-right {
3984 float: right !important;
3985 }
3986}
3987.navbar-form {
3988 padding: 10px 15px;
3989 margin-top: 8px;
3990 margin-right: -15px;
3991 margin-bottom: 8px;
3992 margin-left: -15px;
3993 border-top: 1px solid transparent;
3994 border-bottom: 1px solid transparent;
3995 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
3996 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
3997}
3998@media (min-width: 768px) {
3999 .navbar-form .form-group {
4000 display: inline-block;
4001 margin-bottom: 0;
4002 vertical-align: middle;
4003 }
4004 .navbar-form .form-control {
4005 display: inline-block;
4006 width: auto;
4007 vertical-align: middle;
4008 }
4009 .navbar-form .input-group {
4010 display: inline-table;
4011 vertical-align: middle;
4012 }
4013 .navbar-form .input-group .input-group-addon,
4014 .navbar-form .input-group .input-group-btn,
4015 .navbar-form .input-group .form-control {
4016 width: auto;
4017 }
4018 .navbar-form .input-group > .form-control {
4019 width: 100%;
4020 }
4021 .navbar-form .control-label {
4022 margin-bottom: 0;
4023 vertical-align: middle;
4024 }
4025 .navbar-form .radio,
4026 .navbar-form .checkbox {
4027 display: inline-block;
4028 margin-top: 0;
4029 margin-bottom: 0;
4030 vertical-align: middle;
4031 }
4032 .navbar-form .radio label,
4033 .navbar-form .checkbox label {
4034 padding-left: 0;
4035 }
4036 .navbar-form .radio input[type="radio"],
4037 .navbar-form .checkbox input[type="checkbox"] {
4038 position: relative;
4039 margin-left: 0;
4040 }
4041 .navbar-form .has-feedback .form-control-feedback {
4042 top: 0;
4043 }
4044}
4045@media (max-width: 767px) {
4046 .navbar-form .form-group {
4047 margin-bottom: 5px;
4048 }
4049}
4050@media (min-width: 768px) {
4051 .navbar-form {
4052 width: auto;
4053 padding-top: 0;
4054 padding-bottom: 0;
4055 margin-right: 0;
4056 margin-left: 0;
4057 border: 0;
4058 -webkit-box-shadow: none;
4059 box-shadow: none;
4060 }
4061 .navbar-form.navbar-right:last-child {
4062 margin-right: -15px;
4063 }
4064}
4065.navbar-nav > li > .dropdown-menu {
4066 margin-top: 0;
4067 border-top-left-radius: 0;
4068 border-top-right-radius: 0;
4069}
4070.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4071 border-bottom-right-radius: 0;
4072 border-bottom-left-radius: 0;
4073}
4074.navbar-btn {
4075 margin-top: 8px;
4076 margin-bottom: 8px;
4077}
4078.navbar-btn.btn-sm {
4079 margin-top: 10px;
4080 margin-bottom: 10px;
4081}
4082.navbar-btn.btn-xs {
4083 margin-top: 14px;
4084 margin-bottom: 14px;
4085}
4086.navbar-text {
4087 margin-top: 15px;
4088 margin-bottom: 15px;
4089}
4090@media (min-width: 768px) {
4091 .navbar-text {
4092 float: left;
4093 margin-right: 15px;
4094 margin-left: 15px;
4095 }
4096 .navbar-text.navbar-right:last-child {
4097 margin-right: 0;
4098 }
4099}
4100.navbar-default {
4101 background-color: #f8f8f8;
4102 border-color: #e7e7e7;
4103}
4104.navbar-default .navbar-brand {
4105 color: #777;
4106}
4107.navbar-default .navbar-brand:hover,
4108.navbar-default .navbar-brand:focus {
4109 color: #5e5e5e;
4110 background-color: transparent;
4111}
4112.navbar-default .navbar-text {
4113 color: #777;
4114}
4115.navbar-default .navbar-nav > li > a {
4116 color: #777;
4117}
4118.navbar-default .navbar-nav > li > a:hover,
4119.navbar-default .navbar-nav > li > a:focus {
4120 color: #333;
4121 background-color: transparent;
4122}
4123.navbar-default .navbar-nav > .active > a,
4124.navbar-default .navbar-nav > .active > a:hover,
4125.navbar-default .navbar-nav > .active > a:focus {
4126 color: #555;
4127 background-color: #e7e7e7;
4128}
4129.navbar-default .navbar-nav > .disabled > a,
4130.navbar-default .navbar-nav > .disabled > a:hover,
4131.navbar-default .navbar-nav > .disabled > a:focus {
4132 color: #ccc;
4133 background-color: transparent;
4134}
4135.navbar-default .navbar-toggle {
4136 border-color: #ddd;
4137}
4138.navbar-default .navbar-toggle:hover,
4139.navbar-default .navbar-toggle:focus {
4140 background-color: #ddd;
4141}
4142.navbar-default .navbar-toggle .icon-bar {
4143 background-color: #888;
4144}
4145.navbar-default .navbar-collapse,
4146.navbar-default .navbar-form {
4147 border-color: #e7e7e7;
4148}
4149.navbar-default .navbar-nav > .open > a,
4150.navbar-default .navbar-nav > .open > a:hover,
4151.navbar-default .navbar-nav > .open > a:focus {
4152 color: #555;
4153 background-color: #e7e7e7;
4154}
4155@media (max-width: 767px) {
4156 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4157 color: #777;
4158 }
4159 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4160 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4161 color: #333;
4162 background-color: transparent;
4163 }
4164 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4165 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4166 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4167 color: #555;
4168 background-color: #e7e7e7;
4169 }
4170 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4171 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4172 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4173 color: #ccc;
4174 background-color: transparent;
4175 }
4176}
4177.navbar-default .navbar-link {
4178 color: #777;
4179}
4180.navbar-default .navbar-link:hover {
4181 color: #333;
4182}
4183.navbar-default .btn-link {
4184 color: #777;
4185}
4186.navbar-default .btn-link:hover,
4187.navbar-default .btn-link:focus {
4188 color: #333;
4189}
4190.navbar-default .btn-link[disabled]:hover,
4191fieldset[disabled] .navbar-default .btn-link:hover,
4192.navbar-default .btn-link[disabled]:focus,
4193fieldset[disabled] .navbar-default .btn-link:focus {
4194 color: #ccc;
4195}
4196.navbar-inverse {
4197 background-color: #222;
4198 border-color: #080808;
4199}
4200.navbar-inverse .navbar-brand {
4201 color: #777;
4202}
4203.navbar-inverse .navbar-brand:hover,
4204.navbar-inverse .navbar-brand:focus {
4205 color: #fff;
4206 background-color: transparent;
4207}
4208.navbar-inverse .navbar-text {
4209 color: #777;
4210}
4211.navbar-inverse .navbar-nav > li > a {
4212 color: #777;
4213}
4214.navbar-inverse .navbar-nav > li > a:hover,
4215.navbar-inverse .navbar-nav > li > a:focus {
4216 color: #fff;
4217 background-color: transparent;
4218}
4219.navbar-inverse .navbar-nav > .active > a,
4220.navbar-inverse .navbar-nav > .active > a:hover,
4221.navbar-inverse .navbar-nav > .active > a:focus {
4222 color: #fff;
4223 background-color: #080808;
4224}
4225.navbar-inverse .navbar-nav > .disabled > a,
4226.navbar-inverse .navbar-nav > .disabled > a:hover,
4227.navbar-inverse .navbar-nav > .disabled > a:focus {
4228 color: #444;
4229 background-color: transparent;
4230}
4231.navbar-inverse .navbar-toggle {
4232 border-color: #333;
4233}
4234.navbar-inverse .navbar-toggle:hover,
4235.navbar-inverse .navbar-toggle:focus {
4236 background-color: #333;
4237}
4238.navbar-inverse .navbar-toggle .icon-bar {
4239 background-color: #fff;
4240}
4241.navbar-inverse .navbar-collapse,
4242.navbar-inverse .navbar-form {
4243 border-color: #101010;
4244}
4245.navbar-inverse .navbar-nav > .open > a,
4246.navbar-inverse .navbar-nav > .open > a:hover,
4247.navbar-inverse .navbar-nav > .open > a:focus {
4248 color: #fff;
4249 background-color: #080808;
4250}
4251@media (max-width: 767px) {
4252 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4253 border-color: #080808;
4254 }
4255 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4256 background-color: #080808;
4257 }
4258 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4259 color: #777;
4260 }
4261 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4262 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4263 color: #fff;
4264 background-color: transparent;
4265 }
4266 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4267 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4268 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4269 color: #fff;
4270 background-color: #080808;
4271 }
4272 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4273 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4274 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4275 color: #444;
4276 background-color: transparent;
4277 }
4278}
4279.navbar-inverse .navbar-link {
4280 color: #777;
4281}
4282.navbar-inverse .navbar-link:hover {
4283 color: #fff;
4284}
4285.navbar-inverse .btn-link {
4286 color: #777;
4287}
4288.navbar-inverse .btn-link:hover,
4289.navbar-inverse .btn-link:focus {
4290 color: #fff;
4291}
4292.navbar-inverse .btn-link[disabled]:hover,
4293fieldset[disabled] .navbar-inverse .btn-link:hover,
4294.navbar-inverse .btn-link[disabled]:focus,
4295fieldset[disabled] .navbar-inverse .btn-link:focus {
4296 color: #444;
4297}
4298.breadcrumb {
4299 padding: 8px 15px;
4300 margin-bottom: 20px;
4301 list-style: none;
4302 background-color: #f5f5f5;
4303 border-radius: 4px;
4304}
4305.breadcrumb > li {
4306 display: inline-block;
4307}
4308.breadcrumb > li + li:before {
4309 padding: 0 5px;
4310 color: #ccc;
4311 content: "/\00a0";
4312}
4313.breadcrumb > .active {
4314 color: #777;
4315}
4316.pagination {
4317 display: inline-block;
4318 padding-left: 0;
4319 margin: 20px 0;
4320 border-radius: 4px;
4321}
4322.pagination > li {
4323 display: inline;
4324}
4325.pagination > li > a,
4326.pagination > li > span {
4327 position: relative;
4328 float: left;
4329 padding: 6px 12px;
4330 margin-left: -1px;
4331 line-height: 1.42857143;
4332 color: #428bca;
4333 text-decoration: none;
4334 background-color: #fff;
4335 border: 1px solid #ddd;
4336}
4337.pagination > li:first-child > a,
4338.pagination > li:first-child > span {
4339 margin-left: 0;
4340 border-top-left-radius: 4px;
4341 border-bottom-left-radius: 4px;
4342}
4343.pagination > li:last-child > a,
4344.pagination > li:last-child > span {
4345 border-top-right-radius: 4px;
4346 border-bottom-right-radius: 4px;
4347}
4348.pagination > li > a:hover,
4349.pagination > li > span:hover,
4350.pagination > li > a:focus,
4351.pagination > li > span:focus {
4352 color: #2a6496;
4353 background-color: #eee;
4354 border-color: #ddd;
4355}
4356.pagination > .active > a,
4357.pagination > .active > span,
4358.pagination > .active > a:hover,
4359.pagination > .active > span:hover,
4360.pagination > .active > a:focus,
4361.pagination > .active > span:focus {
4362 z-index: 2;
4363 color: #fff;
4364 cursor: default;
4365 background-color: #428bca;
4366 border-color: #428bca;
4367}
4368.pagination > .disabled > span,
4369.pagination > .disabled > span:hover,
4370.pagination > .disabled > span:focus,
4371.pagination > .disabled > a,
4372.pagination > .disabled > a:hover,
4373.pagination > .disabled > a:focus {
4374 color: #777;
4375 cursor: not-allowed;
4376 background-color: #fff;
4377 border-color: #ddd;
4378}
4379.pagination-lg > li > a,
4380.pagination-lg > li > span {
4381 padding: 10px 16px;
4382 font-size: 18px;
4383}
4384.pagination-lg > li:first-child > a,
4385.pagination-lg > li:first-child > span {
4386 border-top-left-radius: 6px;
4387 border-bottom-left-radius: 6px;
4388}
4389.pagination-lg > li:last-child > a,
4390.pagination-lg > li:last-child > span {
4391 border-top-right-radius: 6px;
4392 border-bottom-right-radius: 6px;
4393}
4394.pagination-sm > li > a,
4395.pagination-sm > li > span {
4396 padding: 5px 10px;
4397 font-size: 12px;
4398}
4399.pagination-sm > li:first-child > a,
4400.pagination-sm > li:first-child > span {
4401 border-top-left-radius: 3px;
4402 border-bottom-left-radius: 3px;
4403}
4404.pagination-sm > li:last-child > a,
4405.pagination-sm > li:last-child > span {
4406 border-top-right-radius: 3px;
4407 border-bottom-right-radius: 3px;
4408}
4409.pager {
4410 padding-left: 0;
4411 margin: 20px 0;
4412 text-align: center;
4413 list-style: none;
4414}
4415.pager li {
4416 display: inline;
4417}
4418.pager li > a,
4419.pager li > span {
4420 display: inline-block;
4421 padding: 5px 14px;
4422 background-color: #fff;
4423 border: 1px solid #ddd;
4424 border-radius: 15px;
4425}
4426.pager li > a:hover,
4427.pager li > a:focus {
4428 text-decoration: none;
4429 background-color: #eee;
4430}
4431.pager .next > a,
4432.pager .next > span {
4433 float: right;
4434}
4435.pager .previous > a,
4436.pager .previous > span {
4437 float: left;
4438}
4439.pager .disabled > a,
4440.pager .disabled > a:hover,
4441.pager .disabled > a:focus,
4442.pager .disabled > span {
4443 color: #777;
4444 cursor: not-allowed;
4445 background-color: #fff;
4446}
4447.label {
4448 display: inline;
4449 padding: .2em .6em .3em;
4450 font-size: 75%;
4451 font-weight: bold;
4452 line-height: 1;
4453 color: #fff;
4454 text-align: center;
4455 white-space: nowrap;
4456 vertical-align: baseline;
4457 border-radius: .25em;
4458}
4459a.label:hover,
4460a.label:focus {
4461 color: #fff;
4462 text-decoration: none;
4463 cursor: pointer;
4464}
4465.label:empty {
4466 display: none;
4467}
4468.btn .label {
4469 position: relative;
4470 top: -1px;
4471}
4472.label-default {
4473 background-color: #777;
4474}
4475.label-default[href]:hover,
4476.label-default[href]:focus {
4477 background-color: #5e5e5e;
4478}
4479.label-primary {
4480 background-color: #428bca;
4481}
4482.label-primary[href]:hover,
4483.label-primary[href]:focus {
4484 background-color: #3071a9;
4485}
4486.label-success {
4487 background-color: #5cb85c;
4488}
4489.label-success[href]:hover,
4490.label-success[href]:focus {
4491 background-color: #449d44;
4492}
4493.label-info {
4494 background-color: #5bc0de;
4495}
4496.label-info[href]:hover,
4497.label-info[href]:focus {
4498 background-color: #31b0d5;
4499}
4500.label-warning {
4501 background-color: #f0ad4e;
4502}
4503.label-warning[href]:hover,
4504.label-warning[href]:focus {
4505 background-color: #ec971f;
4506}
4507.label-danger {
4508 background-color: #d9534f;
4509}
4510.label-danger[href]:hover,
4511.label-danger[href]:focus {
4512 background-color: #c9302c;
4513}
4514.badge {
4515 display: inline-block;
4516 min-width: 10px;
4517 padding: 3px 7px;
4518 font-size: 12px;
4519 font-weight: bold;
4520 line-height: 1;
4521 color: #fff;
4522 text-align: center;
4523 white-space: nowrap;
4524 vertical-align: baseline;
4525 background-color: #777;
4526 border-radius: 10px;
4527}
4528.badge:empty {
4529 display: none;
4530}
4531.btn .badge {
4532 position: relative;
4533 top: -1px;
4534}
4535.btn-xs .badge {
4536 top: 0;
4537 padding: 1px 5px;
4538}
4539a.badge:hover,
4540a.badge:focus {
4541 color: #fff;
4542 text-decoration: none;
4543 cursor: pointer;
4544}
4545a.list-group-item.active > .badge,
4546.nav-pills > .active > a > .badge {
4547 color: #428bca;
4548 background-color: #fff;
4549}
4550.nav-pills > li > a > .badge {
4551 margin-left: 3px;
4552}
4553.jumbotron {
4554 padding: 30px;
4555 margin-bottom: 30px;
4556 color: inherit;
4557 background-color: #eee;
4558}
4559.jumbotron h1,
4560.jumbotron .h1 {
4561 color: inherit;
4562}
4563.jumbotron p {
4564 margin-bottom: 15px;
4565 font-size: 21px;
4566 font-weight: 200;
4567}
4568.jumbotron > hr {
4569 border-top-color: #d5d5d5;
4570}
4571.container .jumbotron {
4572 border-radius: 6px;
4573}
4574.jumbotron .container {
4575 max-width: 100%;
4576}
4577@media screen and (min-width: 768px) {
4578 .jumbotron {
4579 padding-top: 48px;
4580 padding-bottom: 48px;
4581 }
4582 .container .jumbotron {
4583 padding-right: 60px;
4584 padding-left: 60px;
4585 }
4586 .jumbotron h1,
4587 .jumbotron .h1 {
4588 font-size: 63px;
4589 }
4590}
4591.thumbnail {
4592 display: block;
4593 padding: 4px;
4594 margin-bottom: 20px;
4595 line-height: 1.42857143;
4596 background-color: #fff;
4597 border: 1px solid #ddd;
4598 border-radius: 4px;
4599 -webkit-transition: all .2s ease-in-out;
4600 -o-transition: all .2s ease-in-out;
4601 transition: all .2s ease-in-out;
4602}
4603.thumbnail > img,
4604.thumbnail a > img {
4605 margin-right: auto;
4606 margin-left: auto;
4607}
4608a.thumbnail:hover,
4609a.thumbnail:focus,
4610a.thumbnail.active {
4611 border-color: #428bca;
4612}
4613.thumbnail .caption {
4614 padding: 9px;
4615 color: #333;
4616}
4617.alert {
4618 padding: 15px;
4619 margin-bottom: 20px;
4620 border: 1px solid transparent;
4621 border-radius: 4px;
4622}
4623.alert h4 {
4624 margin-top: 0;
4625 color: inherit;
4626}
4627.alert .alert-link {
4628 font-weight: bold;
4629}
4630.alert > p,
4631.alert > ul {
4632 margin-bottom: 0;
4633}
4634.alert > p + p {
4635 margin-top: 5px;
4636}
4637.alert-dismissable,
4638.alert-dismissible {
4639 padding-right: 35px;
4640}
4641.alert-dismissable .close,
4642.alert-dismissible .close {
4643 position: relative;
4644 top: -2px;
4645 right: -21px;
4646 color: inherit;
4647}
4648.alert-success {
4649 color: #3c763d;
4650 background-color: #dff0d8;
4651 border-color: #d6e9c6;
4652}
4653.alert-success hr {
4654 border-top-color: #c9e2b3;
4655}
4656.alert-success .alert-link {
4657 color: #2b542c;
4658}
4659.alert-info {
4660 color: #31708f;
4661 background-color: #d9edf7;
4662 border-color: #bce8f1;
4663}
4664.alert-info hr {
4665 border-top-color: #a6e1ec;
4666}
4667.alert-info .alert-link {
4668 color: #245269;
4669}
4670.alert-warning {
4671 color: #8a6d3b;
4672 background-color: #fcf8e3;
4673 border-color: #faebcc;
4674}
4675.alert-warning hr {
4676 border-top-color: #f7e1b5;
4677}
4678.alert-warning .alert-link {
4679 color: #66512c;
4680}
4681.alert-danger {
4682 color: #a94442;
4683 background-color: #f2dede;
4684 border-color: #ebccd1;
4685}
4686.alert-danger hr {
4687 border-top-color: #e4b9c0;
4688}
4689.alert-danger .alert-link {
4690 color: #843534;
4691}
4692@-webkit-keyframes progress-bar-stripes {
4693 from {
4694 background-position: 40px 0;
4695 }
4696 to {
4697 background-position: 0 0;
4698 }
4699}
4700@-o-keyframes progress-bar-stripes {
4701 from {
4702 background-position: 40px 0;
4703 }
4704 to {
4705 background-position: 0 0;
4706 }
4707}
4708@keyframes progress-bar-stripes {
4709 from {
4710 background-position: 40px 0;
4711 }
4712 to {
4713 background-position: 0 0;
4714 }
4715}
4716.progress {
4717 height: 20px;
4718 margin-bottom: 20px;
4719 overflow: hidden;
4720 background-color: #f5f5f5;
4721 border-radius: 4px;
4722 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
4723 box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
4724}
4725.progress-bar {
4726 float: left;
4727 width: 0;
4728 height: 100%;
4729 font-size: 12px;
4730 line-height: 20px;
4731 color: #fff;
4732 text-align: center;
4733 background-color: #428bca;
4734 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
4735 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
4736 -webkit-transition: width .6s ease;
4737 -o-transition: width .6s ease;
4738 transition: width .6s ease;
4739}
4740.progress-striped .progress-bar,
4741.progress-bar-striped {
4742 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);
4743 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);
4744 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);
4745 -webkit-background-size: 40px 40px;
4746 background-size: 40px 40px;
4747}
4748.progress.active .progress-bar,
4749.progress-bar.active {
4750 -webkit-animation: progress-bar-stripes 2s linear infinite;
4751 -o-animation: progress-bar-stripes 2s linear infinite;
4752 animation: progress-bar-stripes 2s linear infinite;
4753}
4754.progress-bar[aria-valuenow="1"],
4755.progress-bar[aria-valuenow="2"] {
4756 min-width: 30px;
4757}
4758.progress-bar[aria-valuenow="0"] {
4759 min-width: 30px;
4760 color: #777;
4761 background-color: transparent;
4762 background-image: none;
4763 -webkit-box-shadow: none;
4764 box-shadow: none;
4765}
4766.progress-bar-success {
4767 background-color: #5cb85c;
4768}
4769.progress-striped .progress-bar-success {
4770 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);
4771 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);
4772 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);
4773}
4774.progress-bar-info {
4775 background-color: #5bc0de;
4776}
4777.progress-striped .progress-bar-info {
4778 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);
4779 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);
4780 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);
4781}
4782.progress-bar-warning {
4783 background-color: #f0ad4e;
4784}
4785.progress-striped .progress-bar-warning {
4786 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);
4787 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);
4788 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);
4789}
4790.progress-bar-danger {
4791 background-color: #d9534f;
4792}
4793.progress-striped .progress-bar-danger {
4794 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);
4795 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);
4796 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);
4797}
4798.media,
4799.media-body {
4800 overflow: hidden;
4801 zoom: 1;
4802}
4803.media,
4804.media .media {
4805 margin-top: 15px;
4806}
4807.media:first-child {
4808 margin-top: 0;
4809}
4810.media-object {
4811 display: block;
4812}
4813.media-heading {
4814 margin: 0 0 5px;
4815}
4816.media > .pull-left {
4817 margin-right: 10px;
4818}
4819.media > .pull-right {
4820 margin-left: 10px;
4821}
4822.media-list {
4823 padding-left: 0;
4824 list-style: none;
4825}
4826.list-group {
4827 padding-left: 0;
4828 margin-bottom: 20px;
4829}
4830.list-group-item {
4831 position: relative;
4832 display: block;
4833 padding: 10px 15px;
4834 margin-bottom: -1px;
4835 background-color: #fff;
4836 border: 1px solid #ddd;
4837}
4838.list-group-item:first-child {
4839 border-top-left-radius: 4px;
4840 border-top-right-radius: 4px;
4841}
4842.list-group-item:last-child {
4843 margin-bottom: 0;
4844 border-bottom-right-radius: 4px;
4845 border-bottom-left-radius: 4px;
4846}
4847.list-group-item > .badge {
4848 float: right;
4849}
4850.list-group-item > .badge + .badge {
4851 margin-right: 5px;
4852}
4853a.list-group-item {
4854 color: #555;
4855}
4856a.list-group-item .list-group-item-heading {
4857 color: #333;
4858}
4859a.list-group-item:hover,
4860a.list-group-item:focus {
4861 color: #555;
4862 text-decoration: none;
4863 background-color: #f5f5f5;
4864}
4865.list-group-item.disabled,
4866.list-group-item.disabled:hover,
4867.list-group-item.disabled:focus {
4868 color: #777;
4869 background-color: #eee;
4870}
4871.list-group-item.disabled .list-group-item-heading,
4872.list-group-item.disabled:hover .list-group-item-heading,
4873.list-group-item.disabled:focus .list-group-item-heading {
4874 color: inherit;
4875}
4876.list-group-item.disabled .list-group-item-text,
4877.list-group-item.disabled:hover .list-group-item-text,
4878.list-group-item.disabled:focus .list-group-item-text {
4879 color: #777;
4880}
4881.list-group-item.active,
4882.list-group-item.active:hover,
4883.list-group-item.active:focus {
4884 z-index: 2;
4885 color: #fff;
4886 background-color: #428bca;
4887 border-color: #428bca;
4888}
4889.list-group-item.active .list-group-item-heading,
4890.list-group-item.active:hover .list-group-item-heading,
4891.list-group-item.active:focus .list-group-item-heading,
4892.list-group-item.active .list-group-item-heading > small,
4893.list-group-item.active:hover .list-group-item-heading > small,
4894.list-group-item.active:focus .list-group-item-heading > small,
4895.list-group-item.active .list-group-item-heading > .small,
4896.list-group-item.active:hover .list-group-item-heading > .small,
4897.list-group-item.active:focus .list-group-item-heading > .small {
4898 color: inherit;
4899}
4900.list-group-item.active .list-group-item-text,
4901.list-group-item.active:hover .list-group-item-text,
4902.list-group-item.active:focus .list-group-item-text {
4903 color: #e1edf7;
4904}
4905.list-group-item-success {
4906 color: #3c763d;
4907 background-color: #dff0d8;
4908}
4909a.list-group-item-success {
4910 color: #3c763d;
4911}
4912a.list-group-item-success .list-group-item-heading {
4913 color: inherit;
4914}
4915a.list-group-item-success:hover,
4916a.list-group-item-success:focus {
4917 color: #3c763d;
4918 background-color: #d0e9c6;
4919}
4920a.list-group-item-success.active,
4921a.list-group-item-success.active:hover,
4922a.list-group-item-success.active:focus {
4923 color: #fff;
4924 background-color: #3c763d;
4925 border-color: #3c763d;
4926}
4927.list-group-item-info {
4928 color: #31708f;
4929 background-color: #d9edf7;
4930}
4931a.list-group-item-info {
4932 color: #31708f;
4933}
4934a.list-group-item-info .list-group-item-heading {
4935 color: inherit;
4936}
4937a.list-group-item-info:hover,
4938a.list-group-item-info:focus {
4939 color: #31708f;
4940 background-color: #c4e3f3;
4941}
4942a.list-group-item-info.active,
4943a.list-group-item-info.active:hover,
4944a.list-group-item-info.active:focus {
4945 color: #fff;
4946 background-color: #31708f;
4947 border-color: #31708f;
4948}
4949.list-group-item-warning {
4950 color: #8a6d3b;
4951 background-color: #fcf8e3;
4952}
4953a.list-group-item-warning {
4954 color: #8a6d3b;
4955}
4956a.list-group-item-warning .list-group-item-heading {
4957 color: inherit;
4958}
4959a.list-group-item-warning:hover,
4960a.list-group-item-warning:focus {
4961 color: #8a6d3b;
4962 background-color: #faf2cc;
4963}
4964a.list-group-item-warning.active,
4965a.list-group-item-warning.active:hover,
4966a.list-group-item-warning.active:focus {
4967 color: #fff;
4968 background-color: #8a6d3b;
4969 border-color: #8a6d3b;
4970}
4971.list-group-item-danger {
4972 color: #a94442;
4973 background-color: #f2dede;
4974}
4975a.list-group-item-danger {
4976 color: #a94442;
4977}
4978a.list-group-item-danger .list-group-item-heading {
4979 color: inherit;
4980}
4981a.list-group-item-danger:hover,
4982a.list-group-item-danger:focus {
4983 color: #a94442;
4984 background-color: #ebcccc;
4985}
4986a.list-group-item-danger.active,
4987a.list-group-item-danger.active:hover,
4988a.list-group-item-danger.active:focus {
4989 color: #fff;
4990 background-color: #a94442;
4991 border-color: #a94442;
4992}
4993.list-group-item-heading {
4994 margin-top: 0;
4995 margin-bottom: 5px;
4996}
4997.list-group-item-text {
4998 margin-bottom: 0;
4999 line-height: 1.3;
5000}
5001.panel {
5002 margin-bottom: 20px;
5003 background-color: #fff;
5004 border: 1px solid transparent;
5005 border-radius: 4px;
5006 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5007 box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5008}
5009.panel-body {
5010 padding: 15px;
5011}
5012.panel-heading {
5013 padding: 10px 15px;
5014 border-bottom: 1px solid transparent;
5015 border-top-left-radius: 3px;
5016 border-top-right-radius: 3px;
5017}
5018.panel-heading > .dropdown .dropdown-toggle {
5019 color: inherit;
5020}
5021.panel-title {
5022 margin-top: 0;
5023 margin-bottom: 0;
5024 font-size: 16px;
5025 color: inherit;
5026}
5027.panel-title > a {
5028 color: inherit;
5029}
5030.panel-footer {
5031 padding: 10px 15px;
5032 background-color: #f5f5f5;
5033 border-top: 1px solid #ddd;
5034 border-bottom-right-radius: 3px;
5035 border-bottom-left-radius: 3px;
5036}
5037.panel > .list-group {
5038 margin-bottom: 0;
5039}
5040.panel > .list-group .list-group-item {
5041 border-width: 1px 0;
5042 border-radius: 0;
5043}
5044.panel > .list-group:first-child .list-group-item:first-child {
5045 border-top: 0;
5046 border-top-left-radius: 3px;
5047 border-top-right-radius: 3px;
5048}
5049.panel > .list-group:last-child .list-group-item:last-child {
5050 border-bottom: 0;
5051 border-bottom-right-radius: 3px;
5052 border-bottom-left-radius: 3px;
5053}
5054.panel-heading + .list-group .list-group-item:first-child {
5055 border-top-width: 0;
5056}
5057.list-group + .panel-footer {
5058 border-top-width: 0;
5059}
5060.panel > .table,
5061.panel > .table-responsive > .table,
5062.panel > .panel-collapse > .table {
5063 margin-bottom: 0;
5064}
5065.panel > .table:first-child,
5066.panel > .table-responsive:first-child > .table:first-child {
5067 border-top-left-radius: 3px;
5068 border-top-right-radius: 3px;
5069}
5070.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5071.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5072.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5073.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5074.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5075.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5076.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5077.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5078 border-top-left-radius: 3px;
5079}
5080.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5081.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5082.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5083.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5084.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5085.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5086.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5087.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5088 border-top-right-radius: 3px;
5089}
5090.panel > .table:last-child,
5091.panel > .table-responsive:last-child > .table:last-child {
5092 border-bottom-right-radius: 3px;
5093 border-bottom-left-radius: 3px;
5094}
5095.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5096.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5097.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5098.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5099.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5100.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5101.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5102.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5103 border-bottom-left-radius: 3px;
5104}
5105.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5106.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5107.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5108.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5109.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5110.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5111.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5112.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5113 border-bottom-right-radius: 3px;
5114}
5115.panel > .panel-body + .table,
5116.panel > .panel-body + .table-responsive {
5117 border-top: 1px solid #ddd;
5118}
5119.panel > .table > tbody:first-child > tr:first-child th,
5120.panel > .table > tbody:first-child > tr:first-child td {
5121 border-top: 0;
5122}
5123.panel > .table-bordered,
5124.panel > .table-responsive > .table-bordered {
5125 border: 0;
5126}
5127.panel > .table-bordered > thead > tr > th:first-child,
5128.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5129.panel > .table-bordered > tbody > tr > th:first-child,
5130.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5131.panel > .table-bordered > tfoot > tr > th:first-child,
5132.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5133.panel > .table-bordered > thead > tr > td:first-child,
5134.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5135.panel > .table-bordered > tbody > tr > td:first-child,
5136.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5137.panel > .table-bordered > tfoot > tr > td:first-child,
5138.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5139 border-left: 0;
5140}
5141.panel > .table-bordered > thead > tr > th:last-child,
5142.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5143.panel > .table-bordered > tbody > tr > th:last-child,
5144.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5145.panel > .table-bordered > tfoot > tr > th:last-child,
5146.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5147.panel > .table-bordered > thead > tr > td:last-child,
5148.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5149.panel > .table-bordered > tbody > tr > td:last-child,
5150.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5151.panel > .table-bordered > tfoot > tr > td:last-child,
5152.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5153 border-right: 0;
5154}
5155.panel > .table-bordered > thead > tr:first-child > td,
5156.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5157.panel > .table-bordered > tbody > tr:first-child > td,
5158.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5159.panel > .table-bordered > thead > tr:first-child > th,
5160.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5161.panel > .table-bordered > tbody > tr:first-child > th,
5162.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5163 border-bottom: 0;
5164}
5165.panel > .table-bordered > tbody > tr:last-child > td,
5166.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5167.panel > .table-bordered > tfoot > tr:last-child > td,
5168.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5169.panel > .table-bordered > tbody > tr:last-child > th,
5170.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5171.panel > .table-bordered > tfoot > tr:last-child > th,
5172.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5173 border-bottom: 0;
5174}
5175.panel > .table-responsive {
5176 margin-bottom: 0;
5177 border: 0;
5178}
5179.panel-group {
5180 margin-bottom: 20px;
5181}
5182.panel-group .panel {
5183 margin-bottom: 0;
5184 border-radius: 4px;
5185}
5186.panel-group .panel + .panel {
5187 margin-top: 5px;
5188}
5189.panel-group .panel-heading {
5190 border-bottom: 0;
5191}
5192.panel-group .panel-heading + .panel-collapse > .panel-body {
5193 border-top: 1px solid #ddd;
5194}
5195.panel-group .panel-footer {
5196 border-top: 0;
5197}
5198.panel-group .panel-footer + .panel-collapse .panel-body {
5199 border-bottom: 1px solid #ddd;
5200}
5201.panel-default {
5202 border-color: #ddd;
5203}
5204.panel-default > .panel-heading {
5205 color: #333;
5206 background-color: #f5f5f5;
5207 border-color: #ddd;
5208}
5209.panel-default > .panel-heading + .panel-collapse > .panel-body {
5210 border-top-color: #ddd;
5211}
5212.panel-default > .panel-heading .badge {
5213 color: #f5f5f5;
5214 background-color: #333;
5215}
5216.panel-default > .panel-footer + .panel-collapse > .panel-body {
5217 border-bottom-color: #ddd;
5218}
5219.panel-primary {
5220 border-color: #428bca;
5221}
5222.panel-primary > .panel-heading {
5223 color: #fff;
5224 background-color: #428bca;
5225 border-color: #428bca;
5226}
5227.panel-primary > .panel-heading + .panel-collapse > .panel-body {
5228 border-top-color: #428bca;
5229}
5230.panel-primary > .panel-heading .badge {
5231 color: #428bca;
5232 background-color: #fff;
5233}
5234.panel-primary > .panel-footer + .panel-collapse > .panel-body {
5235 border-bottom-color: #428bca;
5236}
5237.panel-success {
5238 border-color: #d6e9c6;
5239}
5240.panel-success > .panel-heading {
5241 color: #3c763d;
5242 background-color: #dff0d8;
5243 border-color: #d6e9c6;
5244}
5245.panel-success > .panel-heading + .panel-collapse > .panel-body {
5246 border-top-color: #d6e9c6;
5247}
5248.panel-success > .panel-heading .badge {
5249 color: #dff0d8;
5250 background-color: #3c763d;
5251}
5252.panel-success > .panel-footer + .panel-collapse > .panel-body {
5253 border-bottom-color: #d6e9c6;
5254}
5255.panel-info {
5256 border-color: #bce8f1;
5257}
5258.panel-info > .panel-heading {
5259 color: #31708f;
5260 background-color: #d9edf7;
5261 border-color: #bce8f1;
5262}
5263.panel-info > .panel-heading + .panel-collapse > .panel-body {
5264 border-top-color: #bce8f1;
5265}
5266.panel-info > .panel-heading .badge {
5267 color: #d9edf7;
5268 background-color: #31708f;
5269}
5270.panel-info > .panel-footer + .panel-collapse > .panel-body {
5271 border-bottom-color: #bce8f1;
5272}
5273.panel-warning {
5274 border-color: #faebcc;
5275}
5276.panel-warning > .panel-heading {
5277 color: #8a6d3b;
5278 background-color: #fcf8e3;
5279 border-color: #faebcc;
5280}
5281.panel-warning > .panel-heading + .panel-collapse > .panel-body {
5282 border-top-color: #faebcc;
5283}
5284.panel-warning > .panel-heading .badge {
5285 color: #fcf8e3;
5286 background-color: #8a6d3b;
5287}
5288.panel-warning > .panel-footer + .panel-collapse > .panel-body {
5289 border-bottom-color: #faebcc;
5290}
5291.panel-danger {
5292 border-color: #ebccd1;
5293}
5294.panel-danger > .panel-heading {
5295 color: #a94442;
5296 background-color: #f2dede;
5297 border-color: #ebccd1;
5298}
5299.panel-danger > .panel-heading + .panel-collapse > .panel-body {
5300 border-top-color: #ebccd1;
5301}
5302.panel-danger > .panel-heading .badge {
5303 color: #f2dede;
5304 background-color: #a94442;
5305}
5306.panel-danger > .panel-footer + .panel-collapse > .panel-body {
5307 border-bottom-color: #ebccd1;
5308}
5309.embed-responsive {
5310 position: relative;
5311 display: block;
5312 height: 0;
5313 padding: 0;
5314 overflow: hidden;
5315}
5316.embed-responsive .embed-responsive-item,
5317.embed-responsive iframe,
5318.embed-responsive embed,
5319.embed-responsive object {
5320 position: absolute;
5321 top: 0;
5322 bottom: 0;
5323 left: 0;
5324 width: 100%;
5325 height: 100%;
5326 border: 0;
5327}
5328.embed-responsive.embed-responsive-16by9 {
5329 padding-bottom: 56.25%;
5330}
5331.embed-responsive.embed-responsive-4by3 {
5332 padding-bottom: 75%;
5333}
5334.well {
5335 min-height: 20px;
5336 padding: 19px;
5337 margin-bottom: 20px;
5338 background-color: #f5f5f5;
5339 border: 1px solid #e3e3e3;
5340 border-radius: 4px;
5341 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5342 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5343}
5344.well blockquote {
5345 border-color: #ddd;
5346 border-color: rgba(0, 0, 0, .15);
5347}
5348.well-lg {
5349 padding: 24px;
5350 border-radius: 6px;
5351}
5352.well-sm {
5353 padding: 9px;
5354 border-radius: 3px;
5355}
5356.close {
5357 float: right;
5358 font-size: 21px;
5359 font-weight: bold;
5360 line-height: 1;
5361 color: #000;
5362 text-shadow: 0 1px 0 #fff;
5363 filter: alpha(opacity=20);
5364 opacity: .2;
5365}
5366.close:hover,
5367.close:focus {
5368 color: #000;
5369 text-decoration: none;
5370 cursor: pointer;
5371 filter: alpha(opacity=50);
5372 opacity: .5;
5373}
5374button.close {
5375 -webkit-appearance: none;
5376 padding: 0;
5377 cursor: pointer;
5378 background: transparent;
5379 border: 0;
5380}
5381.modal-open {
5382 overflow: hidden;
5383}
5384.modal {
5385 position: fixed;
5386 top: 0;
5387 right: 0;
5388 bottom: 0;
5389 left: 0;
5390 z-index: 1050;
5391 display: none;
5392 overflow: hidden;
5393 -webkit-overflow-scrolling: touch;
5394 outline: 0;
5395}
5396.modal.fade .modal-dialog {
5397 -webkit-transition: -webkit-transform .3s ease-out;
5398 -o-transition: -o-transform .3s ease-out;
5399 transition: transform .3s ease-out;
5400 -webkit-transform: translate3d(0, -25%, 0);
5401 -o-transform: translate3d(0, -25%, 0);
5402 transform: translate3d(0, -25%, 0);
5403}
5404.modal.in .modal-dialog {
5405 -webkit-transform: translate3d(0, 0, 0);
5406 -o-transform: translate3d(0, 0, 0);
5407 transform: translate3d(0, 0, 0);
5408}
5409.modal-open .modal {
5410 overflow-x: hidden;
5411 overflow-y: auto;
5412}
5413.modal-dialog {
5414 position: relative;
5415 width: auto;
5416 margin: 10px;
5417}
5418.modal-content {
5419 position: relative;
5420 background-color: #fff;
5421 -webkit-background-clip: padding-box;
5422 background-clip: padding-box;
5423 border: 1px solid #999;
5424 border: 1px solid rgba(0, 0, 0, .2);
5425 border-radius: 6px;
5426 outline: 0;
5427 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5428 box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5429}
5430.modal-backdrop {
5431 position: fixed;
5432 top: 0;
5433 right: 0;
5434 bottom: 0;
5435 left: 0;
5436 z-index: 1040;
5437 background-color: #000;
5438}
5439.modal-backdrop.fade {
5440 filter: alpha(opacity=0);
5441 opacity: 0;
5442}
5443.modal-backdrop.in {
5444 filter: alpha(opacity=50);
5445 opacity: .5;
5446}
5447.modal-header {
5448 min-height: 16.42857143px;
5449 padding: 15px;
5450 border-bottom: 1px solid #e5e5e5;
5451}
5452.modal-header .close {
5453 margin-top: -2px;
5454}
5455.modal-title {
5456 margin: 0;
5457 line-height: 1.42857143;
5458}
5459.modal-body {
5460 position: relative;
5461 padding: 15px;
5462}
5463.modal-footer {
5464 padding: 15px;
5465 text-align: right;
5466 border-top: 1px solid #e5e5e5;
5467}
5468.modal-footer .btn + .btn {
5469 margin-bottom: 0;
5470 margin-left: 5px;
5471}
5472.modal-footer .btn-group .btn + .btn {
5473 margin-left: -1px;
5474}
5475.modal-footer .btn-block + .btn-block {
5476 margin-left: 0;
5477}
5478.modal-scrollbar-measure {
5479 position: absolute;
5480 top: -9999px;
5481 width: 50px;
5482 height: 50px;
5483 overflow: scroll;
5484}
5485@media (min-width: 768px) {
5486 .modal-dialog {
5487 width: 600px;
5488 margin: 30px auto;
5489 }
5490 .modal-content {
5491 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5492 box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5493 }
5494 .modal-sm {
5495 width: 300px;
5496 }
5497}
5498@media (min-width: 992px) {
5499 .modal-lg {
5500 width: 900px;
5501 }
5502}
5503.tooltip {
5504 position: absolute;
5505 z-index: 1070;
5506 display: block;
5507 font-size: 12px;
5508 line-height: 1.4;
5509 visibility: visible;
5510 filter: alpha(opacity=0);
5511 opacity: 0;
5512}
5513.tooltip.in {
5514 filter: alpha(opacity=90);
5515 opacity: .9;
5516}
5517.tooltip.top {
5518 padding: 5px 0;
5519 margin-top: -3px;
5520}
5521.tooltip.right {
5522 padding: 0 5px;
5523 margin-left: 3px;
5524}
5525.tooltip.bottom {
5526 padding: 5px 0;
5527 margin-top: 3px;
5528}
5529.tooltip.left {
5530 padding: 0 5px;
5531 margin-left: -3px;
5532}
5533.tooltip-inner {
5534 max-width: 200px;
5535 padding: 3px 8px;
5536 color: #fff;
5537 text-align: center;
5538 text-decoration: none;
5539 background-color: #000;
5540 border-radius: 4px;
5541}
5542.tooltip-arrow {
5543 position: absolute;
5544 width: 0;
5545 height: 0;
5546 border-color: transparent;
5547 border-style: solid;
5548}
5549.tooltip.top .tooltip-arrow {
5550 bottom: 0;
5551 left: 50%;
5552 margin-left: -5px;
5553 border-width: 5px 5px 0;
5554 border-top-color: #000;
5555}
5556.tooltip.top-left .tooltip-arrow {
5557 bottom: 0;
5558 left: 5px;
5559 border-width: 5px 5px 0;
5560 border-top-color: #000;
5561}
5562.tooltip.top-right .tooltip-arrow {
5563 right: 5px;
5564 bottom: 0;
5565 border-width: 5px 5px 0;
5566 border-top-color: #000;
5567}
5568.tooltip.right .tooltip-arrow {
5569 top: 50%;
5570 left: 0;
5571 margin-top: -5px;
5572 border-width: 5px 5px 5px 0;
5573 border-right-color: #000;
5574}
5575.tooltip.left .tooltip-arrow {
5576 top: 50%;
5577 right: 0;
5578 margin-top: -5px;
5579 border-width: 5px 0 5px 5px;
5580 border-left-color: #000;
5581}
5582.tooltip.bottom .tooltip-arrow {
5583 top: 0;
5584 left: 50%;
5585 margin-left: -5px;
5586 border-width: 0 5px 5px;
5587 border-bottom-color: #000;
5588}
5589.tooltip.bottom-left .tooltip-arrow {
5590 top: 0;
5591 left: 5px;
5592 border-width: 0 5px 5px;
5593 border-bottom-color: #000;
5594}
5595.tooltip.bottom-right .tooltip-arrow {
5596 top: 0;
5597 right: 5px;
5598 border-width: 0 5px 5px;
5599 border-bottom-color: #000;
5600}
5601.popover {
5602 position: absolute;
5603 top: 0;
5604 left: 0;
5605 z-index: 1060;
5606 display: none;
5607 max-width: 276px;
5608 padding: 1px;
5609 text-align: left;
5610 white-space: normal;
5611 background-color: #fff;
5612 -webkit-background-clip: padding-box;
5613 background-clip: padding-box;
5614 border: 1px solid #ccc;
5615 border: 1px solid rgba(0, 0, 0, .2);
5616 border-radius: 6px;
5617 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
5618 box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
5619}
5620.popover.top {
5621 margin-top: -10px;
5622}
5623.popover.right {
5624 margin-left: 10px;
5625}
5626.popover.bottom {
5627 margin-top: 10px;
5628}
5629.popover.left {
5630 margin-left: -10px;
5631}
5632.popover-title {
5633 padding: 8px 14px;
5634 margin: 0;
5635 font-size: 14px;
5636 font-weight: normal;
5637 line-height: 18px;
5638 background-color: #f7f7f7;
5639 border-bottom: 1px solid #ebebeb;
5640 border-radius: 5px 5px 0 0;
5641}
5642.popover-content {
5643 padding: 9px 14px;
5644}
5645.popover > .arrow,
5646.popover > .arrow:after {
5647 position: absolute;
5648 display: block;
5649 width: 0;
5650 height: 0;
5651 border-color: transparent;
5652 border-style: solid;
5653}
5654.popover > .arrow {
5655 border-width: 11px;
5656}
5657.popover > .arrow:after {
5658 content: "";
5659 border-width: 10px;
5660}
5661.popover.top > .arrow {
5662 bottom: -11px;
5663 left: 50%;
5664 margin-left: -11px;
5665 border-top-color: #999;
5666 border-top-color: rgba(0, 0, 0, .25);
5667 border-bottom-width: 0;
5668}
5669.popover.top > .arrow:after {
5670 bottom: 1px;
5671 margin-left: -10px;
5672 content: " ";
5673 border-top-color: #fff;
5674 border-bottom-width: 0;
5675}
5676.popover.right > .arrow {
5677 top: 50%;
5678 left: -11px;
5679 margin-top: -11px;
5680 border-right-color: #999;
5681 border-right-color: rgba(0, 0, 0, .25);
5682 border-left-width: 0;
5683}
5684.popover.right > .arrow:after {
5685 bottom: -10px;
5686 left: 1px;
5687 content: " ";
5688 border-right-color: #fff;
5689 border-left-width: 0;
5690}
5691.popover.bottom > .arrow {
5692 top: -11px;
5693 left: 50%;
5694 margin-left: -11px;
5695 border-top-width: 0;
5696 border-bottom-color: #999;
5697 border-bottom-color: rgba(0, 0, 0, .25);
5698}
5699.popover.bottom > .arrow:after {
5700 top: 1px;
5701 margin-left: -10px;
5702 content: " ";
5703 border-top-width: 0;
5704 border-bottom-color: #fff;
5705}
5706.popover.left > .arrow {
5707 top: 50%;
5708 right: -11px;
5709 margin-top: -11px;
5710 border-right-width: 0;
5711 border-left-color: #999;
5712 border-left-color: rgba(0, 0, 0, .25);
5713}
5714.popover.left > .arrow:after {
5715 right: 1px;
5716 bottom: -10px;
5717 content: " ";
5718 border-right-width: 0;
5719 border-left-color: #fff;
5720}
5721.carousel {
5722 position: relative;
5723}
5724.carousel-inner {
5725 position: relative;
5726 width: 100%;
5727 overflow: hidden;
5728}
5729.carousel-inner > .item {
5730 position: relative;
5731 display: none;
5732 -webkit-transition: .6s ease-in-out left;
5733 -o-transition: .6s ease-in-out left;
5734 transition: .6s ease-in-out left;
5735}
5736.carousel-inner > .item > img,
5737.carousel-inner > .item > a > img {
5738 line-height: 1;
5739}
5740.carousel-inner > .active,
5741.carousel-inner > .next,
5742.carousel-inner > .prev {
5743 display: block;
5744}
5745.carousel-inner > .active {
5746 left: 0;
5747}
5748.carousel-inner > .next,
5749.carousel-inner > .prev {
5750 position: absolute;
5751 top: 0;
5752 width: 100%;
5753}
5754.carousel-inner > .next {
5755 left: 100%;
5756}
5757.carousel-inner > .prev {
5758 left: -100%;
5759}
5760.carousel-inner > .next.left,
5761.carousel-inner > .prev.right {
5762 left: 0;
5763}
5764.carousel-inner > .active.left {
5765 left: -100%;
5766}
5767.carousel-inner > .active.right {
5768 left: 100%;
5769}
5770.carousel-control {
5771 position: absolute;
5772 top: 0;
5773 bottom: 0;
5774 left: 0;
5775 width: 15%;
5776 font-size: 20px;
5777 color: #fff;
5778 text-align: center;
5779 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
5780 filter: alpha(opacity=50);
5781 opacity: .5;
5782}
5783.carousel-control.left {
5784 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5785 background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5786 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
5787 background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5788 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5789 background-repeat: repeat-x;
5790}
5791.carousel-control.right {
5792 right: 0;
5793 left: auto;
5794 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5795 background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5796 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
5797 background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5798 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5799 background-repeat: repeat-x;
5800}
5801.carousel-control:hover,
5802.carousel-control:focus {
5803 color: #fff;
5804 text-decoration: none;
5805 filter: alpha(opacity=90);
5806 outline: 0;
5807 opacity: .9;
5808}
5809.carousel-control .icon-prev,
5810.carousel-control .icon-next,
5811.carousel-control .glyphicon-chevron-left,
5812.carousel-control .glyphicon-chevron-right {
5813 position: absolute;
5814 top: 50%;
5815 z-index: 5;
5816 display: inline-block;
5817}
5818.carousel-control .icon-prev,
5819.carousel-control .glyphicon-chevron-left {
5820 left: 50%;
5821 margin-left: -10px;
5822}
5823.carousel-control .icon-next,
5824.carousel-control .glyphicon-chevron-right {
5825 right: 50%;
5826 margin-right: -10px;
5827}
5828.carousel-control .icon-prev,
5829.carousel-control .icon-next {
5830 width: 20px;
5831 height: 20px;
5832 margin-top: -10px;
5833 font-family: serif;
5834}
5835.carousel-control .icon-prev:before {
5836 content: '\2039';
5837}
5838.carousel-control .icon-next:before {
5839 content: '\203a';
5840}
5841.carousel-indicators {
5842 position: absolute;
5843 bottom: 10px;
5844 left: 50%;
5845 z-index: 15;
5846 width: 60%;
5847 padding-left: 0;
5848 margin-left: -30%;
5849 text-align: center;
5850 list-style: none;
5851}
5852.carousel-indicators li {
5853 display: inline-block;
5854 width: 10px;
5855 height: 10px;
5856 margin: 1px;
5857 text-indent: -999px;
5858 cursor: pointer;
5859 background-color: #000 \9;
5860 background-color: rgba(0, 0, 0, 0);
5861 border: 1px solid #fff;
5862 border-radius: 10px;
5863}
5864.carousel-indicators .active {
5865 width: 12px;
5866 height: 12px;
5867 margin: 0;
5868 background-color: #fff;
5869}
5870.carousel-caption {
5871 position: absolute;
5872 right: 15%;
5873 bottom: 20px;
5874 left: 15%;
5875 z-index: 10;
5876 padding-top: 20px;
5877 padding-bottom: 20px;
5878 color: #fff;
5879 text-align: center;
5880 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
5881}
5882.carousel-caption .btn {
5883 text-shadow: none;
5884}
5885@media screen and (min-width: 768px) {
5886 .carousel-control .glyphicon-chevron-left,
5887 .carousel-control .glyphicon-chevron-right,
5888 .carousel-control .icon-prev,
5889 .carousel-control .icon-next {
5890 width: 30px;
5891 height: 30px;
5892 margin-top: -15px;
5893 font-size: 30px;
5894 }
5895 .carousel-control .glyphicon-chevron-left,
5896 .carousel-control .icon-prev {
5897 margin-left: -15px;
5898 }
5899 .carousel-control .glyphicon-chevron-right,
5900 .carousel-control .icon-next {
5901 margin-right: -15px;
5902 }
5903 .carousel-caption {
5904 right: 20%;
5905 left: 20%;
5906 padding-bottom: 30px;
5907 }
5908 .carousel-indicators {
5909 bottom: 20px;
5910 }
5911}
5912.clearfix:before,
5913.clearfix:after,
5914.dl-horizontal dd:before,
5915.dl-horizontal dd:after,
5916.container:before,
5917.container:after,
5918.container-fluid:before,
5919.container-fluid:after,
5920.row:before,
5921.row:after,
5922.form-horizontal .form-group:before,
5923.form-horizontal .form-group:after,
5924.btn-toolbar:before,
5925.btn-toolbar:after,
5926.btn-group-vertical > .btn-group:before,
5927.btn-group-vertical > .btn-group:after,
5928.nav:before,
5929.nav:after,
5930.navbar:before,
5931.navbar:after,
5932.navbar-header:before,
5933.navbar-header:after,
5934.navbar-collapse:before,
5935.navbar-collapse:after,
5936.pager:before,
5937.pager:after,
5938.panel-body:before,
5939.panel-body:after,
5940.modal-footer:before,
5941.modal-footer:after {
5942 display: table;
5943 content: " ";
5944}
5945.clearfix:after,
5946.dl-horizontal dd:after,
5947.container:after,
5948.container-fluid:after,
5949.row:after,
5950.form-horizontal .form-group:after,
5951.btn-toolbar:after,
5952.btn-group-vertical > .btn-group:after,
5953.nav:after,
5954.navbar:after,
5955.navbar-header:after,
5956.navbar-collapse:after,
5957.pager:after,
5958.panel-body:after,
5959.modal-footer:after {
5960 clear: both;
5961}
5962.center-block {
5963 display: block;
5964 margin-right: auto;
5965 margin-left: auto;
5966}
5967.pull-right {
5968 float: right !important;
5969}
5970.pull-left {
5971 float: left !important;
5972}
5973.hide {
5974 display: none !important;
5975}
5976.show {
5977 display: block !important;
5978}
5979.invisible {
5980 visibility: hidden;
5981}
5982.text-hide {
5983 font: 0/0 a;
5984 color: transparent;
5985 text-shadow: none;
5986 background-color: transparent;
5987 border: 0;
5988}
5989.hidden {
5990 display: none !important;
5991 visibility: hidden !important;
5992}
5993.affix {
5994 position: fixed;
5995 -webkit-transform: translate3d(0, 0, 0);
5996 -o-transform: translate3d(0, 0, 0);
5997 transform: translate3d(0, 0, 0);
5998}
5999@-ms-viewport {
6000 width: device-width;
6001}
6002.visible-xs,
6003.visible-sm,
6004.visible-md,
6005.visible-lg {
6006 display: none !important;
6007}
6008.visible-xs-block,
6009.visible-xs-inline,
6010.visible-xs-inline-block,
6011.visible-sm-block,
6012.visible-sm-inline,
6013.visible-sm-inline-block,
6014.visible-md-block,
6015.visible-md-inline,
6016.visible-md-inline-block,
6017.visible-lg-block,
6018.visible-lg-inline,
6019.visible-lg-inline-block {
6020 display: none !important;
6021}
6022@media (max-width: 767px) {
6023 .visible-xs {
6024 display: block !important;
6025 }
6026 table.visible-xs {
6027 display: table;
6028 }
6029 tr.visible-xs {
6030 display: table-row !important;
6031 }
6032 th.visible-xs,
6033 td.visible-xs {
6034 display: table-cell !important;
6035 }
6036}
6037@media (max-width: 767px) {
6038 .visible-xs-block {
6039 display: block !important;
6040 }
6041}
6042@media (max-width: 767px) {
6043 .visible-xs-inline {
6044 display: inline !important;
6045 }
6046}
6047@media (max-width: 767px) {
6048 .visible-xs-inline-block {
6049 display: inline-block !important;
6050 }
6051}
6052@media (min-width: 768px) and (max-width: 991px) {
6053 .visible-sm {
6054 display: block !important;
6055 }
6056 table.visible-sm {
6057 display: table;
6058 }
6059 tr.visible-sm {
6060 display: table-row !important;
6061 }
6062 th.visible-sm,
6063 td.visible-sm {
6064 display: table-cell !important;
6065 }
6066}
6067@media (min-width: 768px) and (max-width: 991px) {
6068 .visible-sm-block {
6069 display: block !important;
6070 }
6071}
6072@media (min-width: 768px) and (max-width: 991px) {
6073 .visible-sm-inline {
6074 display: inline !important;
6075 }
6076}
6077@media (min-width: 768px) and (max-width: 991px) {
6078 .visible-sm-inline-block {
6079 display: inline-block !important;
6080 }
6081}
6082@media (min-width: 992px) and (max-width: 1199px) {
6083 .visible-md {
6084 display: block !important;
6085 }
6086 table.visible-md {
6087 display: table;
6088 }
6089 tr.visible-md {
6090 display: table-row !important;
6091 }
6092 th.visible-md,
6093 td.visible-md {
6094 display: table-cell !important;
6095 }
6096}
6097@media (min-width: 992px) and (max-width: 1199px) {
6098 .visible-md-block {
6099 display: block !important;
6100 }
6101}
6102@media (min-width: 992px) and (max-width: 1199px) {
6103 .visible-md-inline {
6104 display: inline !important;
6105 }
6106}
6107@media (min-width: 992px) and (max-width: 1199px) {
6108 .visible-md-inline-block {
6109 display: inline-block !important;
6110 }
6111}
6112@media (min-width: 1200px) {
6113 .visible-lg {
6114 display: block !important;
6115 }
6116 table.visible-lg {
6117 display: table;
6118 }
6119 tr.visible-lg {
6120 display: table-row !important;
6121 }
6122 th.visible-lg,
6123 td.visible-lg {
6124 display: table-cell !important;
6125 }
6126}
6127@media (min-width: 1200px) {
6128 .visible-lg-block {
6129 display: block !important;
6130 }
6131}
6132@media (min-width: 1200px) {
6133 .visible-lg-inline {
6134 display: inline !important;
6135 }
6136}
6137@media (min-width: 1200px) {
6138 .visible-lg-inline-block {
6139 display: inline-block !important;
6140 }
6141}
6142@media (max-width: 767px) {
6143 .hidden-xs {
6144 display: none !important;
6145 }
6146}
6147@media (min-width: 768px) and (max-width: 991px) {
6148 .hidden-sm {
6149 display: none !important;
6150 }
6151}
6152@media (min-width: 992px) and (max-width: 1199px) {
6153 .hidden-md {
6154 display: none !important;
6155 }
6156}
6157@media (min-width: 1200px) {
6158 .hidden-lg {
6159 display: none !important;
6160 }
6161}
6162.visible-print {
6163 display: none !important;
6164}
6165@media print {
6166 .visible-print {
6167 display: block !important;
6168 }
6169 table.visible-print {
6170 display: table;
6171 }
6172 tr.visible-print {
6173 display: table-row !important;
6174 }
6175 th.visible-print,
6176 td.visible-print {
6177 display: table-cell !important;
6178 }
6179}
6180.visible-print-block {
6181 display: none !important;
6182}
6183@media print {
6184 .visible-print-block {
6185 display: block !important;
6186 }
6187}
6188.visible-print-inline {
6189 display: none !important;
6190}
6191@media print {
6192 .visible-print-inline {
6193 display: inline !important;
6194 }
6195}
6196.visible-print-inline-block {
6197 display: none !important;
6198}
6199@media print {
6200 .visible-print-inline-block {
6201 display: inline-block !important;
6202 }
6203}
6204@media print {
6205 .hidden-print {
6206 display: none !important;
6207 }
6208}
6209/*# sourceMappingURL=bootstrap.css.map */
6210 </style>
15 <meta content="Mnemonic code for generating deterministic keys" name="description"/> 6211 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
16 <meta content="width=device-width, initial-scale=1.0" name="viewport" /> 6212 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
17 <meta content="bitcoin mnemonic converter" name="description" /> 6213 <meta content="bitcoin mnemonic converter" name="description" />
@@ -350,26 +6546,11314 @@
350 <td class="privkey"><span></span></td> 6546 <td class="privkey"><span></span></td>
351 </tr> 6547 </tr>
352 </script> 6548 </script>
353
354 <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
355 <script> 6549 <script>
356/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ 6550/*!
357!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),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("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) 6551 * jQuery JavaScript Library v2.1.1
358},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={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,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{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:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b)) 6552 * http://jquery.com/
359},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n}); 6553 *
360 </script> 6554 * Includes Sizzle.js
6555 * http://sizzlejs.com/
6556 *
6557 * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
6558 * Released under the MIT license
6559 * http://jquery.org/license
6560 *
6561 * Date: 2014-05-01T17:11Z
6562 */
6563
6564(function( global, factory ) {
6565
6566 if ( typeof module === "object" && typeof module.exports === "object" ) {
6567 // For CommonJS and CommonJS-like environments where a proper window is present,
6568 // execute the factory and get jQuery
6569 // For environments that do not inherently posses a window with a document
6570 // (such as Node.js), expose a jQuery-making factory as module.exports
6571 // This accentuates the need for the creation of a real window
6572 // e.g. var jQuery = require("jquery")(window);
6573 // See ticket #14549 for more info
6574 module.exports = global.document ?
6575 factory( global, true ) :
6576 function( w ) {
6577 if ( !w.document ) {
6578 throw new Error( "jQuery requires a window with a document" );
6579 }
6580 return factory( w );
6581 };
6582 } else {
6583 factory( global );
6584 }
6585
6586// Pass this if window is not defined yet
6587}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
6588
6589// Can't do this because several apps including ASP.NET trace
6590// the stack via arguments.caller.callee and Firefox dies if
6591// you try to trace through "use strict" call chains. (#13335)
6592// Support: Firefox 18+
6593//
6594
6595var arr = [];
6596
6597var slice = arr.slice;
6598
6599var concat = arr.concat;
6600
6601var push = arr.push;
6602
6603var indexOf = arr.indexOf;
6604
6605var class2type = {};
6606
6607var toString = class2type.toString;
6608
6609var hasOwn = class2type.hasOwnProperty;
6610
6611var support = {};
6612
6613
6614
6615var
6616 // Use the correct document accordingly with window argument (sandbox)
6617 document = window.document,
6618
6619 version = "2.1.1",
6620
6621 // Define a local copy of jQuery
6622 jQuery = function( selector, context ) {
6623 // The jQuery object is actually just the init constructor 'enhanced'
6624 // Need init if jQuery is called (just allow error to be thrown if not included)
6625 return new jQuery.fn.init( selector, context );
6626 },
6627
6628 // Support: Android<4.1
6629 // Make sure we trim BOM and NBSP
6630 rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
6631
6632 // Matches dashed string for camelizing
6633 rmsPrefix = /^-ms-/,
6634 rdashAlpha = /-([\da-z])/gi,
6635
6636 // Used by jQuery.camelCase as callback to replace()
6637 fcamelCase = function( all, letter ) {
6638 return letter.toUpperCase();
6639 };
6640
6641jQuery.fn = jQuery.prototype = {
6642 // The current version of jQuery being used
6643 jquery: version,
6644
6645 constructor: jQuery,
6646
6647 // Start with an empty selector
6648 selector: "",
6649
6650 // The default length of a jQuery object is 0
6651 length: 0,
6652
6653 toArray: function() {
6654 return slice.call( this );
6655 },
6656
6657 // Get the Nth element in the matched element set OR
6658 // Get the whole matched element set as a clean array
6659 get: function( num ) {
6660 return num != null ?
6661
6662 // Return just the one element from the set
6663 ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
6664
6665 // Return all the elements in a clean array
6666 slice.call( this );
6667 },
6668
6669 // Take an array of elements and push it onto the stack
6670 // (returning the new matched element set)
6671 pushStack: function( elems ) {
6672
6673 // Build a new jQuery matched element set
6674 var ret = jQuery.merge( this.constructor(), elems );
6675
6676 // Add the old object onto the stack (as a reference)
6677 ret.prevObject = this;
6678 ret.context = this.context;
6679
6680 // Return the newly-formed element set
6681 return ret;
6682 },
6683
6684 // Execute a callback for every element in the matched set.
6685 // (You can seed the arguments with an array of args, but this is
6686 // only used internally.)
6687 each: function( callback, args ) {
6688 return jQuery.each( this, callback, args );
6689 },
6690
6691 map: function( callback ) {
6692 return this.pushStack( jQuery.map(this, function( elem, i ) {
6693 return callback.call( elem, i, elem );
6694 }));
6695 },
6696
6697 slice: function() {
6698 return this.pushStack( slice.apply( this, arguments ) );
6699 },
6700
6701 first: function() {
6702 return this.eq( 0 );
6703 },
6704
6705 last: function() {
6706 return this.eq( -1 );
6707 },
6708
6709 eq: function( i ) {
6710 var len = this.length,
6711 j = +i + ( i < 0 ? len : 0 );
6712 return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
6713 },
6714
6715 end: function() {
6716 return this.prevObject || this.constructor(null);
6717 },
6718
6719 // For internal use only.
6720 // Behaves like an Array's method, not like a jQuery method.
6721 push: push,
6722 sort: arr.sort,
6723 splice: arr.splice
6724};
6725
6726jQuery.extend = jQuery.fn.extend = function() {
6727 var options, name, src, copy, copyIsArray, clone,
6728 target = arguments[0] || {},
6729 i = 1,
6730 length = arguments.length,
6731 deep = false;
6732
6733 // Handle a deep copy situation
6734 if ( typeof target === "boolean" ) {
6735 deep = target;
6736
6737 // skip the boolean and the target
6738 target = arguments[ i ] || {};
6739 i++;
6740 }
6741
6742 // Handle case when target is a string or something (possible in deep copy)
6743 if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
6744 target = {};
6745 }
6746
6747 // extend jQuery itself if only one argument is passed
6748 if ( i === length ) {
6749 target = this;
6750 i--;
6751 }
6752
6753 for ( ; i < length; i++ ) {
6754 // Only deal with non-null/undefined values
6755 if ( (options = arguments[ i ]) != null ) {
6756 // Extend the base object
6757 for ( name in options ) {
6758 src = target[ name ];
6759 copy = options[ name ];
6760
6761 // Prevent never-ending loop
6762 if ( target === copy ) {
6763 continue;
6764 }
6765
6766 // Recurse if we're merging plain objects or arrays
6767 if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
6768 if ( copyIsArray ) {
6769 copyIsArray = false;
6770 clone = src && jQuery.isArray(src) ? src : [];
6771
6772 } else {
6773 clone = src && jQuery.isPlainObject(src) ? src : {};
6774 }
6775
6776 // Never move original objects, clone them
6777 target[ name ] = jQuery.extend( deep, clone, copy );
6778
6779 // Don't bring in undefined values
6780 } else if ( copy !== undefined ) {
6781 target[ name ] = copy;
6782 }
6783 }
6784 }
6785 }
6786
6787 // Return the modified object
6788 return target;
6789};
6790
6791jQuery.extend({
6792 // Unique for each copy of jQuery on the page
6793 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
6794
6795 // Assume jQuery is ready without the ready module
6796 isReady: true,
6797
6798 error: function( msg ) {
6799 throw new Error( msg );
6800 },
6801
6802 noop: function() {},
6803
6804 // See test/unit/core.js for details concerning isFunction.
6805 // Since version 1.3, DOM methods and functions like alert
6806 // aren't supported. They return false on IE (#2968).
6807 isFunction: function( obj ) {
6808 return jQuery.type(obj) === "function";
6809 },
6810
6811 isArray: Array.isArray,
6812
6813 isWindow: function( obj ) {
6814 return obj != null && obj === obj.window;
6815 },
6816
6817 isNumeric: function( obj ) {
6818 // parseFloat NaNs numeric-cast false positives (null|true|false|"")
6819 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
6820 // subtraction forces infinities to NaN
6821 return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
6822 },
6823
6824 isPlainObject: function( obj ) {
6825 // Not plain objects:
6826 // - Any object or value whose internal [[Class]] property is not "[object Object]"
6827 // - DOM nodes
6828 // - window
6829 if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
6830 return false;
6831 }
6832
6833 if ( obj.constructor &&
6834 !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
6835 return false;
6836 }
6837
6838 // If the function hasn't returned already, we're confident that
6839 // |obj| is a plain object, created by {} or constructed with new Object
6840 return true;
6841 },
6842
6843 isEmptyObject: function( obj ) {
6844 var name;
6845 for ( name in obj ) {
6846 return false;
6847 }
6848 return true;
6849 },
6850
6851 type: function( obj ) {
6852 if ( obj == null ) {
6853 return obj + "";
6854 }
6855 // Support: Android < 4.0, iOS < 6 (functionish RegExp)
6856 return typeof obj === "object" || typeof obj === "function" ?
6857 class2type[ toString.call(obj) ] || "object" :
6858 typeof obj;
6859 },
6860
6861 // Evaluates a script in a global context
6862 globalEval: function( code ) {
6863 var script,
6864 indirect = eval;
6865
6866 code = jQuery.trim( code );
6867
6868 if ( code ) {
6869 // If the code includes a valid, prologue position
6870 // strict mode pragma, execute code by injecting a
6871 // script tag into the document.
6872 if ( code.indexOf("use strict") === 1 ) {
6873 script = document.createElement("script");
6874 script.text = code;
6875 document.head.appendChild( script ).parentNode.removeChild( script );
6876 } else {
6877 // Otherwise, avoid the DOM node creation, insertion
6878 // and removal by using an indirect global eval
6879 indirect( code );
6880 }
6881 }
6882 },
6883
6884 // Convert dashed to camelCase; used by the css and data modules
6885 // Microsoft forgot to hump their vendor prefix (#9572)
6886 camelCase: function( string ) {
6887 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
6888 },
6889
6890 nodeName: function( elem, name ) {
6891 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
6892 },
6893
6894 // args is for internal usage only
6895 each: function( obj, callback, args ) {
6896 var value,
6897 i = 0,
6898 length = obj.length,
6899 isArray = isArraylike( obj );
6900
6901 if ( args ) {
6902 if ( isArray ) {
6903 for ( ; i < length; i++ ) {
6904 value = callback.apply( obj[ i ], args );
6905
6906 if ( value === false ) {
6907 break;
6908 }
6909 }
6910 } else {
6911 for ( i in obj ) {
6912 value = callback.apply( obj[ i ], args );
6913
6914 if ( value === false ) {
6915 break;
6916 }
6917 }
6918 }
6919
6920 // A special, fast, case for the most common use of each
6921 } else {
6922 if ( isArray ) {
6923 for ( ; i < length; i++ ) {
6924 value = callback.call( obj[ i ], i, obj[ i ] );
6925
6926 if ( value === false ) {
6927 break;
6928 }
6929 }
6930 } else {
6931 for ( i in obj ) {
6932 value = callback.call( obj[ i ], i, obj[ i ] );
6933
6934 if ( value === false ) {
6935 break;
6936 }
6937 }
6938 }
6939 }
6940
6941 return obj;
6942 },
6943
6944 // Support: Android<4.1
6945 trim: function( text ) {
6946 return text == null ?
6947 "" :
6948 ( text + "" ).replace( rtrim, "" );
6949 },
6950
6951 // results is for internal usage only
6952 makeArray: function( arr, results ) {
6953 var ret = results || [];
6954
6955 if ( arr != null ) {
6956 if ( isArraylike( Object(arr) ) ) {
6957 jQuery.merge( ret,
6958 typeof arr === "string" ?
6959 [ arr ] : arr
6960 );
6961 } else {
6962 push.call( ret, arr );
6963 }
6964 }
6965
6966 return ret;
6967 },
6968
6969 inArray: function( elem, arr, i ) {
6970 return arr == null ? -1 : indexOf.call( arr, elem, i );
6971 },
6972
6973 merge: function( first, second ) {
6974 var len = +second.length,
6975 j = 0,
6976 i = first.length;
6977
6978 for ( ; j < len; j++ ) {
6979 first[ i++ ] = second[ j ];
6980 }
6981
6982 first.length = i;
6983
6984 return first;
6985 },
6986
6987 grep: function( elems, callback, invert ) {
6988 var callbackInverse,
6989 matches = [],
6990 i = 0,
6991 length = elems.length,
6992 callbackExpect = !invert;
6993
6994 // Go through the array, only saving the items
6995 // that pass the validator function
6996 for ( ; i < length; i++ ) {
6997 callbackInverse = !callback( elems[ i ], i );
6998 if ( callbackInverse !== callbackExpect ) {
6999 matches.push( elems[ i ] );
7000 }
7001 }
7002
7003 return matches;
7004 },
7005
7006 // arg is for internal usage only
7007 map: function( elems, callback, arg ) {
7008 var value,
7009 i = 0,
7010 length = elems.length,
7011 isArray = isArraylike( elems ),
7012 ret = [];
7013
7014 // Go through the array, translating each of the items to their new values
7015 if ( isArray ) {
7016 for ( ; i < length; i++ ) {
7017 value = callback( elems[ i ], i, arg );
7018
7019 if ( value != null ) {
7020 ret.push( value );
7021 }
7022 }
7023
7024 // Go through every key on the object,
7025 } else {
7026 for ( i in elems ) {
7027 value = callback( elems[ i ], i, arg );
7028
7029 if ( value != null ) {
7030 ret.push( value );
7031 }
7032 }
7033 }
7034
7035 // Flatten any nested arrays
7036 return concat.apply( [], ret );
7037 },
7038
7039 // A global GUID counter for objects
7040 guid: 1,
7041
7042 // Bind a function to a context, optionally partially applying any
7043 // arguments.
7044 proxy: function( fn, context ) {
7045 var tmp, args, proxy;
7046
7047 if ( typeof context === "string" ) {
7048 tmp = fn[ context ];
7049 context = fn;
7050 fn = tmp;
7051 }
7052
7053 // Quick check to determine if target is callable, in the spec
7054 // this throws a TypeError, but we will just return undefined.
7055 if ( !jQuery.isFunction( fn ) ) {
7056 return undefined;
7057 }
7058
7059 // Simulated bind
7060 args = slice.call( arguments, 2 );
7061 proxy = function() {
7062 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
7063 };
7064
7065 // Set the guid of unique handler to the same of original handler, so it can be removed
7066 proxy.guid = fn.guid = fn.guid || jQuery.guid++;
7067
7068 return proxy;
7069 },
7070
7071 now: Date.now,
7072
7073 // jQuery.support is not used in Core but other projects attach their
7074 // properties to it so it needs to exist.
7075 support: support
7076});
7077
7078// Populate the class2type map
7079jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
7080 class2type[ "[object " + name + "]" ] = name.toLowerCase();
7081});
7082
7083function isArraylike( obj ) {
7084 var length = obj.length,
7085 type = jQuery.type( obj );
7086
7087 if ( type === "function" || jQuery.isWindow( obj ) ) {
7088 return false;
7089 }
7090
7091 if ( obj.nodeType === 1 && length ) {
7092 return true;
7093 }
7094
7095 return type === "array" || length === 0 ||
7096 typeof length === "number" && length > 0 && ( length - 1 ) in obj;
7097}
7098var Sizzle =
7099/*!
7100 * Sizzle CSS Selector Engine v1.10.19
7101 * http://sizzlejs.com/
7102 *
7103 * Copyright 2013 jQuery Foundation, Inc. and other contributors
7104 * Released under the MIT license
7105 * http://jquery.org/license
7106 *
7107 * Date: 2014-04-18
7108 */
7109(function( window ) {
7110
7111var i,
7112 support,
7113 Expr,
7114 getText,
7115 isXML,
7116 tokenize,
7117 compile,
7118 select,
7119 outermostContext,
7120 sortInput,
7121 hasDuplicate,
7122
7123 // Local document vars
7124 setDocument,
7125 document,
7126 docElem,
7127 documentIsHTML,
7128 rbuggyQSA,
7129 rbuggyMatches,
7130 matches,
7131 contains,
7132
7133 // Instance-specific data
7134 expando = "sizzle" + -(new Date()),
7135 preferredDoc = window.document,
7136 dirruns = 0,
7137 done = 0,
7138 classCache = createCache(),
7139 tokenCache = createCache(),
7140 compilerCache = createCache(),
7141 sortOrder = function( a, b ) {
7142 if ( a === b ) {
7143 hasDuplicate = true;
7144 }
7145 return 0;
7146 },
7147
7148 // General-purpose constants
7149 strundefined = typeof undefined,
7150 MAX_NEGATIVE = 1 << 31,
7151
7152 // Instance methods
7153 hasOwn = ({}).hasOwnProperty,
7154 arr = [],
7155 pop = arr.pop,
7156 push_native = arr.push,
7157 push = arr.push,
7158 slice = arr.slice,
7159 // Use a stripped-down indexOf if we can't use a native one
7160 indexOf = arr.indexOf || function( elem ) {
7161 var i = 0,
7162 len = this.length;
7163 for ( ; i < len; i++ ) {
7164 if ( this[i] === elem ) {
7165 return i;
7166 }
7167 }
7168 return -1;
7169 },
7170
7171 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
7172
7173 // Regular expressions
7174
7175 // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
7176 whitespace = "[\\x20\\t\\r\\n\\f]",
7177 // http://www.w3.org/TR/css3-syntax/#characters
7178 characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
7179
7180 // Loosely modeled on CSS identifier characters
7181 // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
7182 // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
7183 identifier = characterEncoding.replace( "w", "w#" ),
7184
7185 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
7186 attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
7187 // Operator (capture 2)
7188 "*([*^$|!~]?=)" + whitespace +
7189 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
7190 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
7191 "*\\]",
7192
7193 pseudos = ":(" + characterEncoding + ")(?:\\((" +
7194 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
7195 // 1. quoted (capture 3; capture 4 or capture 5)
7196 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
7197 // 2. simple (capture 6)
7198 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
7199 // 3. anything else (capture 2)
7200 ".*" +
7201 ")\\)|)",
7202
7203 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
7204 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
7205
7206 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
7207 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
7208
7209 rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
7210
7211 rpseudo = new RegExp( pseudos ),
7212 ridentifier = new RegExp( "^" + identifier + "$" ),
7213
7214 matchExpr = {
7215 "ID": new RegExp( "^#(" + characterEncoding + ")" ),
7216 "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
7217 "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
7218 "ATTR": new RegExp( "^" + attributes ),
7219 "PSEUDO": new RegExp( "^" + pseudos ),
7220 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
7221 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
7222 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
7223 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
7224 // For use in libraries implementing .is()
7225 // We use this for POS matching in `select`
7226 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
7227 whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
7228 },
7229
7230 rinputs = /^(?:input|select|textarea|button)$/i,
7231 rheader = /^h\d$/i,
7232
7233 rnative = /^[^{]+\{\s*\[native \w/,
7234
7235 // Easily-parseable/retrievable ID or TAG or CLASS selectors
7236 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
7237
7238 rsibling = /[+~]/,
7239 rescape = /'|\\/g,
7240
7241 // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
7242 runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
7243 funescape = function( _, escaped, escapedWhitespace ) {
7244 var high = "0x" + escaped - 0x10000;
7245 // NaN means non-codepoint
7246 // Support: Firefox<24
7247 // Workaround erroneous numeric interpretation of +"0x"
7248 return high !== high || escapedWhitespace ?
7249 escaped :
7250 high < 0 ?
7251 // BMP codepoint
7252 String.fromCharCode( high + 0x10000 ) :
7253 // Supplemental Plane codepoint (surrogate pair)
7254 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
7255 };
7256
7257// Optimize for push.apply( _, NodeList )
7258try {
7259 push.apply(
7260 (arr = slice.call( preferredDoc.childNodes )),
7261 preferredDoc.childNodes
7262 );
7263 // Support: Android<4.0
7264 // Detect silently failing push.apply
7265 arr[ preferredDoc.childNodes.length ].nodeType;
7266} catch ( e ) {
7267 push = { apply: arr.length ?
7268
7269 // Leverage slice if possible
7270 function( target, els ) {
7271 push_native.apply( target, slice.call(els) );
7272 } :
7273
7274 // Support: IE<9
7275 // Otherwise append directly
7276 function( target, els ) {
7277 var j = target.length,
7278 i = 0;
7279 // Can't trust NodeList.length
7280 while ( (target[j++] = els[i++]) ) {}
7281 target.length = j - 1;
7282 }
7283 };
7284}
7285
7286function Sizzle( selector, context, results, seed ) {
7287 var match, elem, m, nodeType,
7288 // QSA vars
7289 i, groups, old, nid, newContext, newSelector;
7290
7291 if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
7292 setDocument( context );
7293 }
7294
7295 context = context || document;
7296 results = results || [];
7297
7298 if ( !selector || typeof selector !== "string" ) {
7299 return results;
7300 }
7301
7302 if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
7303 return [];
7304 }
7305
7306 if ( documentIsHTML && !seed ) {
7307
7308 // Shortcuts
7309 if ( (match = rquickExpr.exec( selector )) ) {
7310 // Speed-up: Sizzle("#ID")
7311 if ( (m = match[1]) ) {
7312 if ( nodeType === 9 ) {
7313 elem = context.getElementById( m );
7314 // Check parentNode to catch when Blackberry 4.6 returns
7315 // nodes that are no longer in the document (jQuery #6963)
7316 if ( elem && elem.parentNode ) {
7317 // Handle the case where IE, Opera, and Webkit return items
7318 // by name instead of ID
7319 if ( elem.id === m ) {
7320 results.push( elem );
7321 return results;
7322 }
7323 } else {
7324 return results;
7325 }
7326 } else {
7327 // Context is not a document
7328 if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
7329 contains( context, elem ) && elem.id === m ) {
7330 results.push( elem );
7331 return results;
7332 }
7333 }
7334
7335 // Speed-up: Sizzle("TAG")
7336 } else if ( match[2] ) {
7337 push.apply( results, context.getElementsByTagName( selector ) );
7338 return results;
7339
7340 // Speed-up: Sizzle(".CLASS")
7341 } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
7342 push.apply( results, context.getElementsByClassName( m ) );
7343 return results;
7344 }
7345 }
7346
7347 // QSA path
7348 if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
7349 nid = old = expando;
7350 newContext = context;
7351 newSelector = nodeType === 9 && selector;
7352
7353 // qSA works strangely on Element-rooted queries
7354 // We can work around this by specifying an extra ID on the root
7355 // and working up from there (Thanks to Andrew Dupont for the technique)
7356 // IE 8 doesn't work on object elements
7357 if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
7358 groups = tokenize( selector );
7359
7360 if ( (old = context.getAttribute("id")) ) {
7361 nid = old.replace( rescape, "\\$&" );
7362 } else {
7363 context.setAttribute( "id", nid );
7364 }
7365 nid = "[id='" + nid + "'] ";
7366
7367 i = groups.length;
7368 while ( i-- ) {
7369 groups[i] = nid + toSelector( groups[i] );
7370 }
7371 newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
7372 newSelector = groups.join(",");
7373 }
7374
7375 if ( newSelector ) {
7376 try {
7377 push.apply( results,
7378 newContext.querySelectorAll( newSelector )
7379 );
7380 return results;
7381 } catch(qsaError) {
7382 } finally {
7383 if ( !old ) {
7384 context.removeAttribute("id");
7385 }
7386 }
7387 }
7388 }
7389 }
7390
7391 // All others
7392 return select( selector.replace( rtrim, "$1" ), context, results, seed );
7393}
7394
7395/**
7396 * Create key-value caches of limited size
7397 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
7398 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
7399 * deleting the oldest entry
7400 */
7401function createCache() {
7402 var keys = [];
7403
7404 function cache( key, value ) {
7405 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
7406 if ( keys.push( key + " " ) > Expr.cacheLength ) {
7407 // Only keep the most recent entries
7408 delete cache[ keys.shift() ];
7409 }
7410 return (cache[ key + " " ] = value);
7411 }
7412 return cache;
7413}
7414
7415/**
7416 * Mark a function for special use by Sizzle
7417 * @param {Function} fn The function to mark
7418 */
7419function markFunction( fn ) {
7420 fn[ expando ] = true;
7421 return fn;
7422}
7423
7424/**
7425 * Support testing using an element
7426 * @param {Function} fn Passed the created div and expects a boolean result
7427 */
7428function assert( fn ) {
7429 var div = document.createElement("div");
7430
7431 try {
7432 return !!fn( div );
7433 } catch (e) {
7434 return false;
7435 } finally {
7436 // Remove from its parent by default
7437 if ( div.parentNode ) {
7438 div.parentNode.removeChild( div );
7439 }
7440 // release memory in IE
7441 div = null;
7442 }
7443}
7444
7445/**
7446 * Adds the same handler for all of the specified attrs
7447 * @param {String} attrs Pipe-separated list of attributes
7448 * @param {Function} handler The method that will be applied
7449 */
7450function addHandle( attrs, handler ) {
7451 var arr = attrs.split("|"),
7452 i = attrs.length;
7453
7454 while ( i-- ) {
7455 Expr.attrHandle[ arr[i] ] = handler;
7456 }
7457}
7458
7459/**
7460 * Checks document order of two siblings
7461 * @param {Element} a
7462 * @param {Element} b
7463 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
7464 */
7465function siblingCheck( a, b ) {
7466 var cur = b && a,
7467 diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
7468 ( ~b.sourceIndex || MAX_NEGATIVE ) -
7469 ( ~a.sourceIndex || MAX_NEGATIVE );
7470
7471 // Use IE sourceIndex if available on both nodes
7472 if ( diff ) {
7473 return diff;
7474 }
7475
7476 // Check if b follows a
7477 if ( cur ) {
7478 while ( (cur = cur.nextSibling) ) {
7479 if ( cur === b ) {
7480 return -1;
7481 }
7482 }
7483 }
7484
7485 return a ? 1 : -1;
7486}
7487
7488/**
7489 * Returns a function to use in pseudos for input types
7490 * @param {String} type
7491 */
7492function createInputPseudo( type ) {
7493 return function( elem ) {
7494 var name = elem.nodeName.toLowerCase();
7495 return name === "input" && elem.type === type;
7496 };
7497}
7498
7499/**
7500 * Returns a function to use in pseudos for buttons
7501 * @param {String} type
7502 */
7503function createButtonPseudo( type ) {
7504 return function( elem ) {
7505 var name = elem.nodeName.toLowerCase();
7506 return (name === "input" || name === "button") && elem.type === type;
7507 };
7508}
7509
7510/**
7511 * Returns a function to use in pseudos for positionals
7512 * @param {Function} fn
7513 */
7514function createPositionalPseudo( fn ) {
7515 return markFunction(function( argument ) {
7516 argument = +argument;
7517 return markFunction(function( seed, matches ) {
7518 var j,
7519 matchIndexes = fn( [], seed.length, argument ),
7520 i = matchIndexes.length;
7521
7522 // Match elements found at the specified indexes
7523 while ( i-- ) {
7524 if ( seed[ (j = matchIndexes[i]) ] ) {
7525 seed[j] = !(matches[j] = seed[j]);
7526 }
7527 }
7528 });
7529 });
7530}
7531
7532/**
7533 * Checks a node for validity as a Sizzle context
7534 * @param {Element|Object=} context
7535 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
7536 */
7537function testContext( context ) {
7538 return context && typeof context.getElementsByTagName !== strundefined && context;
7539}
7540
7541// Expose support vars for convenience
7542support = Sizzle.support = {};
7543
7544/**
7545 * Detects XML nodes
7546 * @param {Element|Object} elem An element or a document
7547 * @returns {Boolean} True iff elem is a non-HTML XML node
7548 */
7549isXML = Sizzle.isXML = function( elem ) {
7550 // documentElement is verified for cases where it doesn't yet exist
7551 // (such as loading iframes in IE - #4833)
7552 var documentElement = elem && (elem.ownerDocument || elem).documentElement;
7553 return documentElement ? documentElement.nodeName !== "HTML" : false;
7554};
7555
7556/**
7557 * Sets document-related variables once based on the current document
7558 * @param {Element|Object} [doc] An element or document object to use to set the document
7559 * @returns {Object} Returns the current document
7560 */
7561setDocument = Sizzle.setDocument = function( node ) {
7562 var hasCompare,
7563 doc = node ? node.ownerDocument || node : preferredDoc,
7564 parent = doc.defaultView;
7565
7566 // If no document and documentElement is available, return
7567 if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
7568 return document;
7569 }
7570
7571 // Set our document
7572 document = doc;
7573 docElem = doc.documentElement;
7574
7575 // Support tests
7576 documentIsHTML = !isXML( doc );
7577
7578 // Support: IE>8
7579 // If iframe document is assigned to "document" variable and if iframe has been reloaded,
7580 // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
7581 // IE6-8 do not support the defaultView property so parent will be undefined
7582 if ( parent && parent !== parent.top ) {
7583 // IE11 does not have attachEvent, so all must suffer
7584 if ( parent.addEventListener ) {
7585 parent.addEventListener( "unload", function() {
7586 setDocument();
7587 }, false );
7588 } else if ( parent.attachEvent ) {
7589 parent.attachEvent( "onunload", function() {
7590 setDocument();
7591 });
7592 }
7593 }
7594
7595 /* Attributes
7596 ---------------------------------------------------------------------- */
7597
7598 // Support: IE<8
7599 // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
7600 support.attributes = assert(function( div ) {
7601 div.className = "i";
7602 return !div.getAttribute("className");
7603 });
7604
7605 /* getElement(s)By*
7606 ---------------------------------------------------------------------- */
7607
7608 // Check if getElementsByTagName("*") returns only elements
7609 support.getElementsByTagName = assert(function( div ) {
7610 div.appendChild( doc.createComment("") );
7611 return !div.getElementsByTagName("*").length;
7612 });
7613
7614 // Check if getElementsByClassName can be trusted
7615 support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
7616 div.innerHTML = "<div class='a'></div><div class='a i'></div>";
7617
7618 // Support: Safari<4
7619 // Catch class over-caching
7620 div.firstChild.className = "i";
7621 // Support: Opera<10
7622 // Catch gEBCN failure to find non-leading classes
7623 return div.getElementsByClassName("i").length === 2;
7624 });
7625
7626 // Support: IE<10
7627 // Check if getElementById returns elements by name
7628 // The broken getElementById methods don't pick up programatically-set names,
7629 // so use a roundabout getElementsByName test
7630 support.getById = assert(function( div ) {
7631 docElem.appendChild( div ).id = expando;
7632 return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
7633 });
7634
7635 // ID find and filter
7636 if ( support.getById ) {
7637 Expr.find["ID"] = function( id, context ) {
7638 if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
7639 var m = context.getElementById( id );
7640 // Check parentNode to catch when Blackberry 4.6 returns
7641 // nodes that are no longer in the document #6963
7642 return m && m.parentNode ? [ m ] : [];
7643 }
7644 };
7645 Expr.filter["ID"] = function( id ) {
7646 var attrId = id.replace( runescape, funescape );
7647 return function( elem ) {
7648 return elem.getAttribute("id") === attrId;
7649 };
7650 };
7651 } else {
7652 // Support: IE6/7
7653 // getElementById is not reliable as a find shortcut
7654 delete Expr.find["ID"];
7655
7656 Expr.filter["ID"] = function( id ) {
7657 var attrId = id.replace( runescape, funescape );
7658 return function( elem ) {
7659 var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
7660 return node && node.value === attrId;
7661 };
7662 };
7663 }
7664
7665 // Tag
7666 Expr.find["TAG"] = support.getElementsByTagName ?
7667 function( tag, context ) {
7668 if ( typeof context.getElementsByTagName !== strundefined ) {
7669 return context.getElementsByTagName( tag );
7670 }
7671 } :
7672 function( tag, context ) {
7673 var elem,
7674 tmp = [],
7675 i = 0,
7676 results = context.getElementsByTagName( tag );
7677
7678 // Filter out possible comments
7679 if ( tag === "*" ) {
7680 while ( (elem = results[i++]) ) {
7681 if ( elem.nodeType === 1 ) {
7682 tmp.push( elem );
7683 }
7684 }
7685
7686 return tmp;
7687 }
7688 return results;
7689 };
7690
7691 // Class
7692 Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
7693 if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
7694 return context.getElementsByClassName( className );
7695 }
7696 };
7697
7698 /* QSA/matchesSelector
7699 ---------------------------------------------------------------------- */
7700
7701 // QSA and matchesSelector support
7702
7703 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
7704 rbuggyMatches = [];
7705
7706 // qSa(:focus) reports false when true (Chrome 21)
7707 // We allow this because of a bug in IE8/9 that throws an error
7708 // whenever `document.activeElement` is accessed on an iframe
7709 // So, we allow :focus to pass through QSA all the time to avoid the IE error
7710 // See http://bugs.jquery.com/ticket/13378
7711 rbuggyQSA = [];
7712
7713 if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
7714 // Build QSA regex
7715 // Regex strategy adopted from Diego Perini
7716 assert(function( div ) {
7717 // Select is set to empty string on purpose
7718 // This is to test IE's treatment of not explicitly
7719 // setting a boolean content attribute,
7720 // since its presence should be enough
7721 // http://bugs.jquery.com/ticket/12359
7722 div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
7723
7724 // Support: IE8, Opera 11-12.16
7725 // Nothing should be selected when empty strings follow ^= or $= or *=
7726 // The test attribute must be unknown in Opera but "safe" for WinRT
7727 // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
7728 if ( div.querySelectorAll("[msallowclip^='']").length ) {
7729 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
7730 }
7731
7732 // Support: IE8
7733 // Boolean attributes and "value" are not treated correctly
7734 if ( !div.querySelectorAll("[selected]").length ) {
7735 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
7736 }
7737
7738 // Webkit/Opera - :checked should return selected option elements
7739 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
7740 // IE8 throws error here and will not see later tests
7741 if ( !div.querySelectorAll(":checked").length ) {
7742 rbuggyQSA.push(":checked");
7743 }
7744 });
7745
7746 assert(function( div ) {
7747 // Support: Windows 8 Native Apps
7748 // The type and name attributes are restricted during .innerHTML assignment
7749 var input = doc.createElement("input");
7750 input.setAttribute( "type", "hidden" );
7751 div.appendChild( input ).setAttribute( "name", "D" );
7752
7753 // Support: IE8
7754 // Enforce case-sensitivity of name attribute
7755 if ( div.querySelectorAll("[name=d]").length ) {
7756 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
7757 }
7758
7759 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
7760 // IE8 throws error here and will not see later tests
7761 if ( !div.querySelectorAll(":enabled").length ) {
7762 rbuggyQSA.push( ":enabled", ":disabled" );
7763 }
7764
7765 // Opera 10-11 does not throw on post-comma invalid pseudos
7766 div.querySelectorAll("*,:x");
7767 rbuggyQSA.push(",.*:");
7768 });
7769 }
7770
7771 if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
7772 docElem.webkitMatchesSelector ||
7773 docElem.mozMatchesSelector ||
7774 docElem.oMatchesSelector ||
7775 docElem.msMatchesSelector) )) ) {
7776
7777 assert(function( div ) {
7778 // Check to see if it's possible to do matchesSelector
7779 // on a disconnected node (IE 9)
7780 support.disconnectedMatch = matches.call( div, "div" );
7781
7782 // This should fail with an exception
7783 // Gecko does not error, returns false instead
7784 matches.call( div, "[s!='']:x" );
7785 rbuggyMatches.push( "!=", pseudos );
7786 });
7787 }
7788
7789 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
7790 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
7791
7792 /* Contains
7793 ---------------------------------------------------------------------- */
7794 hasCompare = rnative.test( docElem.compareDocumentPosition );
7795
7796 // Element contains another
7797 // Purposefully does not implement inclusive descendent
7798 // As in, an element does not contain itself
7799 contains = hasCompare || rnative.test( docElem.contains ) ?
7800 function( a, b ) {
7801 var adown = a.nodeType === 9 ? a.documentElement : a,
7802 bup = b && b.parentNode;
7803 return a === bup || !!( bup && bup.nodeType === 1 && (
7804 adown.contains ?
7805 adown.contains( bup ) :
7806 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
7807 ));
7808 } :
7809 function( a, b ) {
7810 if ( b ) {
7811 while ( (b = b.parentNode) ) {
7812 if ( b === a ) {
7813 return true;
7814 }
7815 }
7816 }
7817 return false;
7818 };
7819
7820 /* Sorting
7821 ---------------------------------------------------------------------- */
7822
7823 // Document order sorting
7824 sortOrder = hasCompare ?
7825 function( a, b ) {
7826
7827 // Flag for duplicate removal
7828 if ( a === b ) {
7829 hasDuplicate = true;
7830 return 0;
7831 }
7832
7833 // Sort on method existence if only one input has compareDocumentPosition
7834 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
7835 if ( compare ) {
7836 return compare;
7837 }
7838
7839 // Calculate position if both inputs belong to the same document
7840 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
7841 a.compareDocumentPosition( b ) :
7842
7843 // Otherwise we know they are disconnected
7844 1;
7845
7846 // Disconnected nodes
7847 if ( compare & 1 ||
7848 (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
7849
7850 // Choose the first element that is related to our preferred document
7851 if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
7852 return -1;
7853 }
7854 if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
7855 return 1;
7856 }
7857
7858 // Maintain original order
7859 return sortInput ?
7860 ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
7861 0;
7862 }
7863
7864 return compare & 4 ? -1 : 1;
7865 } :
7866 function( a, b ) {
7867 // Exit early if the nodes are identical
7868 if ( a === b ) {
7869 hasDuplicate = true;
7870 return 0;
7871 }
7872
7873 var cur,
7874 i = 0,
7875 aup = a.parentNode,
7876 bup = b.parentNode,
7877 ap = [ a ],
7878 bp = [ b ];
7879
7880 // Parentless nodes are either documents or disconnected
7881 if ( !aup || !bup ) {
7882 return a === doc ? -1 :
7883 b === doc ? 1 :
7884 aup ? -1 :
7885 bup ? 1 :
7886 sortInput ?
7887 ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
7888 0;
7889
7890 // If the nodes are siblings, we can do a quick check
7891 } else if ( aup === bup ) {
7892 return siblingCheck( a, b );
7893 }
7894
7895 // Otherwise we need full lists of their ancestors for comparison
7896 cur = a;
7897 while ( (cur = cur.parentNode) ) {
7898 ap.unshift( cur );
7899 }
7900 cur = b;
7901 while ( (cur = cur.parentNode) ) {
7902 bp.unshift( cur );
7903 }
7904
7905 // Walk down the tree looking for a discrepancy
7906 while ( ap[i] === bp[i] ) {
7907 i++;
7908 }
7909
7910 return i ?
7911 // Do a sibling check if the nodes have a common ancestor
7912 siblingCheck( ap[i], bp[i] ) :
7913
7914 // Otherwise nodes in our document sort first
7915 ap[i] === preferredDoc ? -1 :
7916 bp[i] === preferredDoc ? 1 :
7917 0;
7918 };
7919
7920 return doc;
7921};
7922
7923Sizzle.matches = function( expr, elements ) {
7924 return Sizzle( expr, null, null, elements );
7925};
7926
7927Sizzle.matchesSelector = function( elem, expr ) {
7928 // Set document vars if needed
7929 if ( ( elem.ownerDocument || elem ) !== document ) {
7930 setDocument( elem );
7931 }
7932
7933 // Make sure that attribute selectors are quoted
7934 expr = expr.replace( rattributeQuotes, "='$1']" );
7935
7936 if ( support.matchesSelector && documentIsHTML &&
7937 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
7938 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
7939
7940 try {
7941 var ret = matches.call( elem, expr );
7942
7943 // IE 9's matchesSelector returns false on disconnected nodes
7944 if ( ret || support.disconnectedMatch ||
7945 // As well, disconnected nodes are said to be in a document
7946 // fragment in IE 9
7947 elem.document && elem.document.nodeType !== 11 ) {
7948 return ret;
7949 }
7950 } catch(e) {}
7951 }
7952
7953 return Sizzle( expr, document, null, [ elem ] ).length > 0;
7954};
7955
7956Sizzle.contains = function( context, elem ) {
7957 // Set document vars if needed
7958 if ( ( context.ownerDocument || context ) !== document ) {
7959 setDocument( context );
7960 }
7961 return contains( context, elem );
7962};
7963
7964Sizzle.attr = function( elem, name ) {
7965 // Set document vars if needed
7966 if ( ( elem.ownerDocument || elem ) !== document ) {
7967 setDocument( elem );
7968 }
7969
7970 var fn = Expr.attrHandle[ name.toLowerCase() ],
7971 // Don't get fooled by Object.prototype properties (jQuery #13807)
7972 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
7973 fn( elem, name, !documentIsHTML ) :
7974 undefined;
7975
7976 return val !== undefined ?
7977 val :
7978 support.attributes || !documentIsHTML ?
7979 elem.getAttribute( name ) :
7980 (val = elem.getAttributeNode(name)) && val.specified ?
7981 val.value :
7982 null;
7983};
7984
7985Sizzle.error = function( msg ) {
7986 throw new Error( "Syntax error, unrecognized expression: " + msg );
7987};
7988
7989/**
7990 * Document sorting and removing duplicates
7991 * @param {ArrayLike} results
7992 */
7993Sizzle.uniqueSort = function( results ) {
7994 var elem,
7995 duplicates = [],
7996 j = 0,
7997 i = 0;
7998
7999 // Unless we *know* we can detect duplicates, assume their presence
8000 hasDuplicate = !support.detectDuplicates;
8001 sortInput = !support.sortStable && results.slice( 0 );
8002 results.sort( sortOrder );
8003
8004 if ( hasDuplicate ) {
8005 while ( (elem = results[i++]) ) {
8006 if ( elem === results[ i ] ) {
8007 j = duplicates.push( i );
8008 }
8009 }
8010 while ( j-- ) {
8011 results.splice( duplicates[ j ], 1 );
8012 }
8013 }
8014
8015 // Clear input after sorting to release objects
8016 // See https://github.com/jquery/sizzle/pull/225
8017 sortInput = null;
8018
8019 return results;
8020};
8021
8022/**
8023 * Utility function for retrieving the text value of an array of DOM nodes
8024 * @param {Array|Element} elem
8025 */
8026getText = Sizzle.getText = function( elem ) {
8027 var node,
8028 ret = "",
8029 i = 0,
8030 nodeType = elem.nodeType;
8031
8032 if ( !nodeType ) {
8033 // If no nodeType, this is expected to be an array
8034 while ( (node = elem[i++]) ) {
8035 // Do not traverse comment nodes
8036 ret += getText( node );
8037 }
8038 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
8039 // Use textContent for elements
8040 // innerText usage removed for consistency of new lines (jQuery #11153)
8041 if ( typeof elem.textContent === "string" ) {
8042 return elem.textContent;
8043 } else {
8044 // Traverse its children
8045 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
8046 ret += getText( elem );
8047 }
8048 }
8049 } else if ( nodeType === 3 || nodeType === 4 ) {
8050 return elem.nodeValue;
8051 }
8052 // Do not include comment or processing instruction nodes
8053
8054 return ret;
8055};
8056
8057Expr = Sizzle.selectors = {
8058
8059 // Can be adjusted by the user
8060 cacheLength: 50,
8061
8062 createPseudo: markFunction,
8063
8064 match: matchExpr,
8065
8066 attrHandle: {},
8067
8068 find: {},
8069
8070 relative: {
8071 ">": { dir: "parentNode", first: true },
8072 " ": { dir: "parentNode" },
8073 "+": { dir: "previousSibling", first: true },
8074 "~": { dir: "previousSibling" }
8075 },
8076
8077 preFilter: {
8078 "ATTR": function( match ) {
8079 match[1] = match[1].replace( runescape, funescape );
8080
8081 // Move the given value to match[3] whether quoted or unquoted
8082 match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
8083
8084 if ( match[2] === "~=" ) {
8085 match[3] = " " + match[3] + " ";
8086 }
8087
8088 return match.slice( 0, 4 );
8089 },
8090
8091 "CHILD": function( match ) {
8092 /* matches from matchExpr["CHILD"]
8093 1 type (only|nth|...)
8094 2 what (child|of-type)
8095 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
8096 4 xn-component of xn+y argument ([+-]?\d*n|)
8097 5 sign of xn-component
8098 6 x of xn-component
8099 7 sign of y-component
8100 8 y of y-component
8101 */
8102 match[1] = match[1].toLowerCase();
8103
8104 if ( match[1].slice( 0, 3 ) === "nth" ) {
8105 // nth-* requires argument
8106 if ( !match[3] ) {
8107 Sizzle.error( match[0] );
8108 }
8109
8110 // numeric x and y parameters for Expr.filter.CHILD
8111 // remember that false/true cast respectively to 0/1
8112 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
8113 match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
8114
8115 // other types prohibit arguments
8116 } else if ( match[3] ) {
8117 Sizzle.error( match[0] );
8118 }
8119
8120 return match;
8121 },
8122
8123 "PSEUDO": function( match ) {
8124 var excess,
8125 unquoted = !match[6] && match[2];
8126
8127 if ( matchExpr["CHILD"].test( match[0] ) ) {
8128 return null;
8129 }
8130
8131 // Accept quoted arguments as-is
8132 if ( match[3] ) {
8133 match[2] = match[4] || match[5] || "";
8134
8135 // Strip excess characters from unquoted arguments
8136 } else if ( unquoted && rpseudo.test( unquoted ) &&
8137 // Get excess from tokenize (recursively)
8138 (excess = tokenize( unquoted, true )) &&
8139 // advance to the next closing parenthesis
8140 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
8141
8142 // excess is a negative index
8143 match[0] = match[0].slice( 0, excess );
8144 match[2] = unquoted.slice( 0, excess );
8145 }
8146
8147 // Return only captures needed by the pseudo filter method (type and argument)
8148 return match.slice( 0, 3 );
8149 }
8150 },
8151
8152 filter: {
8153
8154 "TAG": function( nodeNameSelector ) {
8155 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
8156 return nodeNameSelector === "*" ?
8157 function() { return true; } :
8158 function( elem ) {
8159 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
8160 };
8161 },
8162
8163 "CLASS": function( className ) {
8164 var pattern = classCache[ className + " " ];
8165
8166 return pattern ||
8167 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
8168 classCache( className, function( elem ) {
8169 return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
8170 });
8171 },
8172
8173 "ATTR": function( name, operator, check ) {
8174 return function( elem ) {
8175 var result = Sizzle.attr( elem, name );
8176
8177 if ( result == null ) {
8178 return operator === "!=";
8179 }
8180 if ( !operator ) {
8181 return true;
8182 }
8183
8184 result += "";
8185
8186 return operator === "=" ? result === check :
8187 operator === "!=" ? result !== check :
8188 operator === "^=" ? check && result.indexOf( check ) === 0 :
8189 operator === "*=" ? check && result.indexOf( check ) > -1 :
8190 operator === "$=" ? check && result.slice( -check.length ) === check :
8191 operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
8192 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
8193 false;
8194 };
8195 },
8196
8197 "CHILD": function( type, what, argument, first, last ) {
8198 var simple = type.slice( 0, 3 ) !== "nth",
8199 forward = type.slice( -4 ) !== "last",
8200 ofType = what === "of-type";
8201
8202 return first === 1 && last === 0 ?
8203
8204 // Shortcut for :nth-*(n)
8205 function( elem ) {
8206 return !!elem.parentNode;
8207 } :
8208
8209 function( elem, context, xml ) {
8210 var cache, outerCache, node, diff, nodeIndex, start,
8211 dir = simple !== forward ? "nextSibling" : "previousSibling",
8212 parent = elem.parentNode,
8213 name = ofType && elem.nodeName.toLowerCase(),
8214 useCache = !xml && !ofType;
8215
8216 if ( parent ) {
8217
8218 // :(first|last|only)-(child|of-type)
8219 if ( simple ) {
8220 while ( dir ) {
8221 node = elem;
8222 while ( (node = node[ dir ]) ) {
8223 if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
8224 return false;
8225 }
8226 }
8227 // Reverse direction for :only-* (if we haven't yet done so)
8228 start = dir = type === "only" && !start && "nextSibling";
8229 }
8230 return true;
8231 }
8232
8233 start = [ forward ? parent.firstChild : parent.lastChild ];
8234
8235 // non-xml :nth-child(...) stores cache data on `parent`
8236 if ( forward && useCache ) {
8237 // Seek `elem` from a previously-cached index
8238 outerCache = parent[ expando ] || (parent[ expando ] = {});
8239 cache = outerCache[ type ] || [];
8240 nodeIndex = cache[0] === dirruns && cache[1];
8241 diff = cache[0] === dirruns && cache[2];
8242 node = nodeIndex && parent.childNodes[ nodeIndex ];
8243
8244 while ( (node = ++nodeIndex && node && node[ dir ] ||
8245
8246 // Fallback to seeking `elem` from the start
8247 (diff = nodeIndex = 0) || start.pop()) ) {
8248
8249 // When found, cache indexes on `parent` and break
8250 if ( node.nodeType === 1 && ++diff && node === elem ) {
8251 outerCache[ type ] = [ dirruns, nodeIndex, diff ];
8252 break;
8253 }
8254 }
8255
8256 // Use previously-cached element index if available
8257 } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
8258 diff = cache[1];
8259
8260 // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
8261 } else {
8262 // Use the same loop as above to seek `elem` from the start
8263 while ( (node = ++nodeIndex && node && node[ dir ] ||
8264 (diff = nodeIndex = 0) || start.pop()) ) {
8265
8266 if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
8267 // Cache the index of each encountered element
8268 if ( useCache ) {
8269 (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
8270 }
8271
8272 if ( node === elem ) {
8273 break;
8274 }
8275 }
8276 }
8277 }
8278
8279 // Incorporate the offset, then check against cycle size
8280 diff -= last;
8281 return diff === first || ( diff % first === 0 && diff / first >= 0 );
8282 }
8283 };
8284 },
8285
8286 "PSEUDO": function( pseudo, argument ) {
8287 // pseudo-class names are case-insensitive
8288 // http://www.w3.org/TR/selectors/#pseudo-classes
8289 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
8290 // Remember that setFilters inherits from pseudos
8291 var args,
8292 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
8293 Sizzle.error( "unsupported pseudo: " + pseudo );
8294
8295 // The user may use createPseudo to indicate that
8296 // arguments are needed to create the filter function
8297 // just as Sizzle does
8298 if ( fn[ expando ] ) {
8299 return fn( argument );
8300 }
8301
8302 // But maintain support for old signatures
8303 if ( fn.length > 1 ) {
8304 args = [ pseudo, pseudo, "", argument ];
8305 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
8306 markFunction(function( seed, matches ) {
8307 var idx,
8308 matched = fn( seed, argument ),
8309 i = matched.length;
8310 while ( i-- ) {
8311 idx = indexOf.call( seed, matched[i] );
8312 seed[ idx ] = !( matches[ idx ] = matched[i] );
8313 }
8314 }) :
8315 function( elem ) {
8316 return fn( elem, 0, args );
8317 };
8318 }
8319
8320 return fn;
8321 }
8322 },
8323
8324 pseudos: {
8325 // Potentially complex pseudos
8326 "not": markFunction(function( selector ) {
8327 // Trim the selector passed to compile
8328 // to avoid treating leading and trailing
8329 // spaces as combinators
8330 var input = [],
8331 results = [],
8332 matcher = compile( selector.replace( rtrim, "$1" ) );
8333
8334 return matcher[ expando ] ?
8335 markFunction(function( seed, matches, context, xml ) {
8336 var elem,
8337 unmatched = matcher( seed, null, xml, [] ),
8338 i = seed.length;
8339
8340 // Match elements unmatched by `matcher`
8341 while ( i-- ) {
8342 if ( (elem = unmatched[i]) ) {
8343 seed[i] = !(matches[i] = elem);
8344 }
8345 }
8346 }) :
8347 function( elem, context, xml ) {
8348 input[0] = elem;
8349 matcher( input, null, xml, results );
8350 return !results.pop();
8351 };
8352 }),
8353
8354 "has": markFunction(function( selector ) {
8355 return function( elem ) {
8356 return Sizzle( selector, elem ).length > 0;
8357 };
8358 }),
8359
8360 "contains": markFunction(function( text ) {
8361 return function( elem ) {
8362 return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
8363 };
8364 }),
8365
8366 // "Whether an element is represented by a :lang() selector
8367 // is based solely on the element's language value
8368 // being equal to the identifier C,
8369 // or beginning with the identifier C immediately followed by "-".
8370 // The matching of C against the element's language value is performed case-insensitively.
8371 // The identifier C does not have to be a valid language name."
8372 // http://www.w3.org/TR/selectors/#lang-pseudo
8373 "lang": markFunction( function( lang ) {
8374 // lang value must be a valid identifier
8375 if ( !ridentifier.test(lang || "") ) {
8376 Sizzle.error( "unsupported lang: " + lang );
8377 }
8378 lang = lang.replace( runescape, funescape ).toLowerCase();
8379 return function( elem ) {
8380 var elemLang;
8381 do {
8382 if ( (elemLang = documentIsHTML ?
8383 elem.lang :
8384 elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
8385
8386 elemLang = elemLang.toLowerCase();
8387 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
8388 }
8389 } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
8390 return false;
8391 };
8392 }),
8393
8394 // Miscellaneous
8395 "target": function( elem ) {
8396 var hash = window.location && window.location.hash;
8397 return hash && hash.slice( 1 ) === elem.id;
8398 },
8399
8400 "root": function( elem ) {
8401 return elem === docElem;
8402 },
8403
8404 "focus": function( elem ) {
8405 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
8406 },
8407
8408 // Boolean properties
8409 "enabled": function( elem ) {
8410 return elem.disabled === false;
8411 },
8412
8413 "disabled": function( elem ) {
8414 return elem.disabled === true;
8415 },
8416
8417 "checked": function( elem ) {
8418 // In CSS3, :checked should return both checked and selected elements
8419 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
8420 var nodeName = elem.nodeName.toLowerCase();
8421 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
8422 },
8423
8424 "selected": function( elem ) {
8425 // Accessing this property makes selected-by-default
8426 // options in Safari work properly
8427 if ( elem.parentNode ) {
8428 elem.parentNode.selectedIndex;
8429 }
8430
8431 return elem.selected === true;
8432 },
8433
8434 // Contents
8435 "empty": function( elem ) {
8436 // http://www.w3.org/TR/selectors/#empty-pseudo
8437 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
8438 // but not by others (comment: 8; processing instruction: 7; etc.)
8439 // nodeType < 6 works because attributes (2) do not appear as children
8440 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
8441 if ( elem.nodeType < 6 ) {
8442 return false;
8443 }
8444 }
8445 return true;
8446 },
8447
8448 "parent": function( elem ) {
8449 return !Expr.pseudos["empty"]( elem );
8450 },
8451
8452 // Element/input types
8453 "header": function( elem ) {
8454 return rheader.test( elem.nodeName );
8455 },
8456
8457 "input": function( elem ) {
8458 return rinputs.test( elem.nodeName );
8459 },
8460
8461 "button": function( elem ) {
8462 var name = elem.nodeName.toLowerCase();
8463 return name === "input" && elem.type === "button" || name === "button";
8464 },
8465
8466 "text": function( elem ) {
8467 var attr;
8468 return elem.nodeName.toLowerCase() === "input" &&
8469 elem.type === "text" &&
8470
8471 // Support: IE<8
8472 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
8473 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
8474 },
8475
8476 // Position-in-collection
8477 "first": createPositionalPseudo(function() {
8478 return [ 0 ];
8479 }),
8480
8481 "last": createPositionalPseudo(function( matchIndexes, length ) {
8482 return [ length - 1 ];
8483 }),
8484
8485 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
8486 return [ argument < 0 ? argument + length : argument ];
8487 }),
8488
8489 "even": createPositionalPseudo(function( matchIndexes, length ) {
8490 var i = 0;
8491 for ( ; i < length; i += 2 ) {
8492 matchIndexes.push( i );
8493 }
8494 return matchIndexes;
8495 }),
8496
8497 "odd": createPositionalPseudo(function( matchIndexes, length ) {
8498 var i = 1;
8499 for ( ; i < length; i += 2 ) {
8500 matchIndexes.push( i );
8501 }
8502 return matchIndexes;
8503 }),
8504
8505 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
8506 var i = argument < 0 ? argument + length : argument;
8507 for ( ; --i >= 0; ) {
8508 matchIndexes.push( i );
8509 }
8510 return matchIndexes;
8511 }),
8512
8513 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
8514 var i = argument < 0 ? argument + length : argument;
8515 for ( ; ++i < length; ) {
8516 matchIndexes.push( i );
8517 }
8518 return matchIndexes;
8519 })
8520 }
8521};
8522
8523Expr.pseudos["nth"] = Expr.pseudos["eq"];
8524
8525// Add button/input type pseudos
8526for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
8527 Expr.pseudos[ i ] = createInputPseudo( i );
8528}
8529for ( i in { submit: true, reset: true } ) {
8530 Expr.pseudos[ i ] = createButtonPseudo( i );
8531}
8532
8533// Easy API for creating new setFilters
8534function setFilters() {}
8535setFilters.prototype = Expr.filters = Expr.pseudos;
8536Expr.setFilters = new setFilters();
8537
8538tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
8539 var matched, match, tokens, type,
8540 soFar, groups, preFilters,
8541 cached = tokenCache[ selector + " " ];
8542
8543 if ( cached ) {
8544 return parseOnly ? 0 : cached.slice( 0 );
8545 }
8546
8547 soFar = selector;
8548 groups = [];
8549 preFilters = Expr.preFilter;
8550
8551 while ( soFar ) {
8552
8553 // Comma and first run
8554 if ( !matched || (match = rcomma.exec( soFar )) ) {
8555 if ( match ) {
8556 // Don't consume trailing commas as valid
8557 soFar = soFar.slice( match[0].length ) || soFar;
8558 }
8559 groups.push( (tokens = []) );
8560 }
8561
8562 matched = false;
8563
8564 // Combinators
8565 if ( (match = rcombinators.exec( soFar )) ) {
8566 matched = match.shift();
8567 tokens.push({
8568 value: matched,
8569 // Cast descendant combinators to space
8570 type: match[0].replace( rtrim, " " )
8571 });
8572 soFar = soFar.slice( matched.length );
8573 }
8574
8575 // Filters
8576 for ( type in Expr.filter ) {
8577 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
8578 (match = preFilters[ type ]( match ))) ) {
8579 matched = match.shift();
8580 tokens.push({
8581 value: matched,
8582 type: type,
8583 matches: match
8584 });
8585 soFar = soFar.slice( matched.length );
8586 }
8587 }
8588
8589 if ( !matched ) {
8590 break;
8591 }
8592 }
8593
8594 // Return the length of the invalid excess
8595 // if we're just parsing
8596 // Otherwise, throw an error or return tokens
8597 return parseOnly ?
8598 soFar.length :
8599 soFar ?
8600 Sizzle.error( selector ) :
8601 // Cache the tokens
8602 tokenCache( selector, groups ).slice( 0 );
8603};
8604
8605function toSelector( tokens ) {
8606 var i = 0,
8607 len = tokens.length,
8608 selector = "";
8609 for ( ; i < len; i++ ) {
8610 selector += tokens[i].value;
8611 }
8612 return selector;
8613}
8614
8615function addCombinator( matcher, combinator, base ) {
8616 var dir = combinator.dir,
8617 checkNonElements = base && dir === "parentNode",
8618 doneName = done++;
8619
8620 return combinator.first ?
8621 // Check against closest ancestor/preceding element
8622 function( elem, context, xml ) {
8623 while ( (elem = elem[ dir ]) ) {
8624 if ( elem.nodeType === 1 || checkNonElements ) {
8625 return matcher( elem, context, xml );
8626 }
8627 }
8628 } :
8629
8630 // Check against all ancestor/preceding elements
8631 function( elem, context, xml ) {
8632 var oldCache, outerCache,
8633 newCache = [ dirruns, doneName ];
8634
8635 // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
8636 if ( xml ) {
8637 while ( (elem = elem[ dir ]) ) {
8638 if ( elem.nodeType === 1 || checkNonElements ) {
8639 if ( matcher( elem, context, xml ) ) {
8640 return true;
8641 }
8642 }
8643 }
8644 } else {
8645 while ( (elem = elem[ dir ]) ) {
8646 if ( elem.nodeType === 1 || checkNonElements ) {
8647 outerCache = elem[ expando ] || (elem[ expando ] = {});
8648 if ( (oldCache = outerCache[ dir ]) &&
8649 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
8650
8651 // Assign to newCache so results back-propagate to previous elements
8652 return (newCache[ 2 ] = oldCache[ 2 ]);
8653 } else {
8654 // Reuse newcache so results back-propagate to previous elements
8655 outerCache[ dir ] = newCache;
8656
8657 // A match means we're done; a fail means we have to keep checking
8658 if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
8659 return true;
8660 }
8661 }
8662 }
8663 }
8664 }
8665 };
8666}
8667
8668function elementMatcher( matchers ) {
8669 return matchers.length > 1 ?
8670 function( elem, context, xml ) {
8671 var i = matchers.length;
8672 while ( i-- ) {
8673 if ( !matchers[i]( elem, context, xml ) ) {
8674 return false;
8675 }
8676 }
8677 return true;
8678 } :
8679 matchers[0];
8680}
8681
8682function multipleContexts( selector, contexts, results ) {
8683 var i = 0,
8684 len = contexts.length;
8685 for ( ; i < len; i++ ) {
8686 Sizzle( selector, contexts[i], results );
8687 }
8688 return results;
8689}
8690
8691function condense( unmatched, map, filter, context, xml ) {
8692 var elem,
8693 newUnmatched = [],
8694 i = 0,
8695 len = unmatched.length,
8696 mapped = map != null;
8697
8698 for ( ; i < len; i++ ) {
8699 if ( (elem = unmatched[i]) ) {
8700 if ( !filter || filter( elem, context, xml ) ) {
8701 newUnmatched.push( elem );
8702 if ( mapped ) {
8703 map.push( i );
8704 }
8705 }
8706 }
8707 }
8708
8709 return newUnmatched;
8710}
8711
8712function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
8713 if ( postFilter && !postFilter[ expando ] ) {
8714 postFilter = setMatcher( postFilter );
8715 }
8716 if ( postFinder && !postFinder[ expando ] ) {
8717 postFinder = setMatcher( postFinder, postSelector );
8718 }
8719 return markFunction(function( seed, results, context, xml ) {
8720 var temp, i, elem,
8721 preMap = [],
8722 postMap = [],
8723 preexisting = results.length,
8724
8725 // Get initial elements from seed or context
8726 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
8727
8728 // Prefilter to get matcher input, preserving a map for seed-results synchronization
8729 matcherIn = preFilter && ( seed || !selector ) ?
8730 condense( elems, preMap, preFilter, context, xml ) :
8731 elems,
8732
8733 matcherOut = matcher ?
8734 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
8735 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
8736
8737 // ...intermediate processing is necessary
8738 [] :
8739
8740 // ...otherwise use results directly
8741 results :
8742 matcherIn;
8743
8744 // Find primary matches
8745 if ( matcher ) {
8746 matcher( matcherIn, matcherOut, context, xml );
8747 }
8748
8749 // Apply postFilter
8750 if ( postFilter ) {
8751 temp = condense( matcherOut, postMap );
8752 postFilter( temp, [], context, xml );
8753
8754 // Un-match failing elements by moving them back to matcherIn
8755 i = temp.length;
8756 while ( i-- ) {
8757 if ( (elem = temp[i]) ) {
8758 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
8759 }
8760 }
8761 }
8762
8763 if ( seed ) {
8764 if ( postFinder || preFilter ) {
8765 if ( postFinder ) {
8766 // Get the final matcherOut by condensing this intermediate into postFinder contexts
8767 temp = [];
8768 i = matcherOut.length;
8769 while ( i-- ) {
8770 if ( (elem = matcherOut[i]) ) {
8771 // Restore matcherIn since elem is not yet a final match
8772 temp.push( (matcherIn[i] = elem) );
8773 }
8774 }
8775 postFinder( null, (matcherOut = []), temp, xml );
8776 }
8777
8778 // Move matched elements from seed to results to keep them synchronized
8779 i = matcherOut.length;
8780 while ( i-- ) {
8781 if ( (elem = matcherOut[i]) &&
8782 (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
8783
8784 seed[temp] = !(results[temp] = elem);
8785 }
8786 }
8787 }
8788
8789 // Add elements to results, through postFinder if defined
8790 } else {
8791 matcherOut = condense(
8792 matcherOut === results ?
8793 matcherOut.splice( preexisting, matcherOut.length ) :
8794 matcherOut
8795 );
8796 if ( postFinder ) {
8797 postFinder( null, results, matcherOut, xml );
8798 } else {
8799 push.apply( results, matcherOut );
8800 }
8801 }
8802 });
8803}
8804
8805function matcherFromTokens( tokens ) {
8806 var checkContext, matcher, j,
8807 len = tokens.length,
8808 leadingRelative = Expr.relative[ tokens[0].type ],
8809 implicitRelative = leadingRelative || Expr.relative[" "],
8810 i = leadingRelative ? 1 : 0,
8811
8812 // The foundational matcher ensures that elements are reachable from top-level context(s)
8813 matchContext = addCombinator( function( elem ) {
8814 return elem === checkContext;
8815 }, implicitRelative, true ),
8816 matchAnyContext = addCombinator( function( elem ) {
8817 return indexOf.call( checkContext, elem ) > -1;
8818 }, implicitRelative, true ),
8819 matchers = [ function( elem, context, xml ) {
8820 return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
8821 (checkContext = context).nodeType ?
8822 matchContext( elem, context, xml ) :
8823 matchAnyContext( elem, context, xml ) );
8824 } ];
8825
8826 for ( ; i < len; i++ ) {
8827 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
8828 matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
8829 } else {
8830 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
8831
8832 // Return special upon seeing a positional matcher
8833 if ( matcher[ expando ] ) {
8834 // Find the next relative operator (if any) for proper handling
8835 j = ++i;
8836 for ( ; j < len; j++ ) {
8837 if ( Expr.relative[ tokens[j].type ] ) {
8838 break;
8839 }
8840 }
8841 return setMatcher(
8842 i > 1 && elementMatcher( matchers ),
8843 i > 1 && toSelector(
8844 // If the preceding token was a descendant combinator, insert an implicit any-element `*`
8845 tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
8846 ).replace( rtrim, "$1" ),
8847 matcher,
8848 i < j && matcherFromTokens( tokens.slice( i, j ) ),
8849 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
8850 j < len && toSelector( tokens )
8851 );
8852 }
8853 matchers.push( matcher );
8854 }
8855 }
8856
8857 return elementMatcher( matchers );
8858}
8859
8860function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8861 var bySet = setMatchers.length > 0,
8862 byElement = elementMatchers.length > 0,
8863 superMatcher = function( seed, context, xml, results, outermost ) {
8864 var elem, j, matcher,
8865 matchedCount = 0,
8866 i = "0",
8867 unmatched = seed && [],
8868 setMatched = [],
8869 contextBackup = outermostContext,
8870 // We must always have either seed elements or outermost context
8871 elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
8872 // Use integer dirruns iff this is the outermost matcher
8873 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
8874 len = elems.length;
8875
8876 if ( outermost ) {
8877 outermostContext = context !== document && context;
8878 }
8879
8880 // Add elements passing elementMatchers directly to results
8881 // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
8882 // Support: IE<9, Safari
8883 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
8884 for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
8885 if ( byElement && elem ) {
8886 j = 0;
8887 while ( (matcher = elementMatchers[j++]) ) {
8888 if ( matcher( elem, context, xml ) ) {
8889 results.push( elem );
8890 break;
8891 }
8892 }
8893 if ( outermost ) {
8894 dirruns = dirrunsUnique;
8895 }
8896 }
8897
8898 // Track unmatched elements for set filters
8899 if ( bySet ) {
8900 // They will have gone through all possible matchers
8901 if ( (elem = !matcher && elem) ) {
8902 matchedCount--;
8903 }
8904
8905 // Lengthen the array for every element, matched or not
8906 if ( seed ) {
8907 unmatched.push( elem );
8908 }
8909 }
8910 }
8911
8912 // Apply set filters to unmatched elements
8913 matchedCount += i;
8914 if ( bySet && i !== matchedCount ) {
8915 j = 0;
8916 while ( (matcher = setMatchers[j++]) ) {
8917 matcher( unmatched, setMatched, context, xml );
8918 }
8919
8920 if ( seed ) {
8921 // Reintegrate element matches to eliminate the need for sorting
8922 if ( matchedCount > 0 ) {
8923 while ( i-- ) {
8924 if ( !(unmatched[i] || setMatched[i]) ) {
8925 setMatched[i] = pop.call( results );
8926 }
8927 }
8928 }
8929
8930 // Discard index placeholder values to get only actual matches
8931 setMatched = condense( setMatched );
8932 }
8933
8934 // Add matches to results
8935 push.apply( results, setMatched );
8936
8937 // Seedless set matches succeeding multiple successful matchers stipulate sorting
8938 if ( outermost && !seed && setMatched.length > 0 &&
8939 ( matchedCount + setMatchers.length ) > 1 ) {
8940
8941 Sizzle.uniqueSort( results );
8942 }
8943 }
8944
8945 // Override manipulation of globals by nested matchers
8946 if ( outermost ) {
8947 dirruns = dirrunsUnique;
8948 outermostContext = contextBackup;
8949 }
8950
8951 return unmatched;
8952 };
8953
8954 return bySet ?
8955 markFunction( superMatcher ) :
8956 superMatcher;
8957}
8958
8959compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
8960 var i,
8961 setMatchers = [],
8962 elementMatchers = [],
8963 cached = compilerCache[ selector + " " ];
8964
8965 if ( !cached ) {
8966 // Generate a function of recursive functions that can be used to check each element
8967 if ( !match ) {
8968 match = tokenize( selector );
8969 }
8970 i = match.length;
8971 while ( i-- ) {
8972 cached = matcherFromTokens( match[i] );
8973 if ( cached[ expando ] ) {
8974 setMatchers.push( cached );
8975 } else {
8976 elementMatchers.push( cached );
8977 }
8978 }
8979
8980 // Cache the compiled function
8981 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
8982
8983 // Save selector and tokenization
8984 cached.selector = selector;
8985 }
8986 return cached;
8987};
8988
8989/**
8990 * A low-level selection function that works with Sizzle's compiled
8991 * selector functions
8992 * @param {String|Function} selector A selector or a pre-compiled
8993 * selector function built with Sizzle.compile
8994 * @param {Element} context
8995 * @param {Array} [results]
8996 * @param {Array} [seed] A set of elements to match against
8997 */
8998select = Sizzle.select = function( selector, context, results, seed ) {
8999 var i, tokens, token, type, find,
9000 compiled = typeof selector === "function" && selector,
9001 match = !seed && tokenize( (selector = compiled.selector || selector) );
9002
9003 results = results || [];
9004
9005 // Try to minimize operations if there is no seed and only one group
9006 if ( match.length === 1 ) {
9007
9008 // Take a shortcut and set the context if the root selector is an ID
9009 tokens = match[0] = match[0].slice( 0 );
9010 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
9011 support.getById && context.nodeType === 9 && documentIsHTML &&
9012 Expr.relative[ tokens[1].type ] ) {
9013
9014 context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
9015 if ( !context ) {
9016 return results;
9017
9018 // Precompiled matchers will still verify ancestry, so step up a level
9019 } else if ( compiled ) {
9020 context = context.parentNode;
9021 }
9022
9023 selector = selector.slice( tokens.shift().value.length );
9024 }
9025
9026 // Fetch a seed set for right-to-left matching
9027 i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
9028 while ( i-- ) {
9029 token = tokens[i];
9030
9031 // Abort if we hit a combinator
9032 if ( Expr.relative[ (type = token.type) ] ) {
9033 break;
9034 }
9035 if ( (find = Expr.find[ type ]) ) {
9036 // Search, expanding context for leading sibling combinators
9037 if ( (seed = find(
9038 token.matches[0].replace( runescape, funescape ),
9039 rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
9040 )) ) {
9041
9042 // If seed is empty or no tokens remain, we can return early
9043 tokens.splice( i, 1 );
9044 selector = seed.length && toSelector( tokens );
9045 if ( !selector ) {
9046 push.apply( results, seed );
9047 return results;
9048 }
9049
9050 break;
9051 }
9052 }
9053 }
9054 }
9055
9056 // Compile and execute a filtering function if one is not provided
9057 // Provide `match` to avoid retokenization if we modified the selector above
9058 ( compiled || compile( selector, match ) )(
9059 seed,
9060 context,
9061 !documentIsHTML,
9062 results,
9063 rsibling.test( selector ) && testContext( context.parentNode ) || context
9064 );
9065 return results;
9066};
9067
9068// One-time assignments
9069
9070// Sort stability
9071support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
9072
9073// Support: Chrome<14
9074// Always assume duplicates if they aren't passed to the comparison function
9075support.detectDuplicates = !!hasDuplicate;
9076
9077// Initialize against the default document
9078setDocument();
9079
9080// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
9081// Detached nodes confoundingly follow *each other*
9082support.sortDetached = assert(function( div1 ) {
9083 // Should return 1, but returns 4 (following)
9084 return div1.compareDocumentPosition( document.createElement("div") ) & 1;
9085});
9086
9087// Support: IE<8
9088// Prevent attribute/property "interpolation"
9089// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
9090if ( !assert(function( div ) {
9091 div.innerHTML = "<a href='#'></a>";
9092 return div.firstChild.getAttribute("href") === "#" ;
9093}) ) {
9094 addHandle( "type|href|height|width", function( elem, name, isXML ) {
9095 if ( !isXML ) {
9096 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
9097 }
9098 });
9099}
9100
9101// Support: IE<9
9102// Use defaultValue in place of getAttribute("value")
9103if ( !support.attributes || !assert(function( div ) {
9104 div.innerHTML = "<input/>";
9105 div.firstChild.setAttribute( "value", "" );
9106 return div.firstChild.getAttribute( "value" ) === "";
9107}) ) {
9108 addHandle( "value", function( elem, name, isXML ) {
9109 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
9110 return elem.defaultValue;
9111 }
9112 });
9113}
9114
9115// Support: IE<9
9116// Use getAttributeNode to fetch booleans when getAttribute lies
9117if ( !assert(function( div ) {
9118 return div.getAttribute("disabled") == null;
9119}) ) {
9120 addHandle( booleans, function( elem, name, isXML ) {
9121 var val;
9122 if ( !isXML ) {
9123 return elem[ name ] === true ? name.toLowerCase() :
9124 (val = elem.getAttributeNode( name )) && val.specified ?
9125 val.value :
9126 null;
9127 }
9128 });
9129}
9130
9131return Sizzle;
9132
9133})( window );
9134
9135
9136
9137jQuery.find = Sizzle;
9138jQuery.expr = Sizzle.selectors;
9139jQuery.expr[":"] = jQuery.expr.pseudos;
9140jQuery.unique = Sizzle.uniqueSort;
9141jQuery.text = Sizzle.getText;
9142jQuery.isXMLDoc = Sizzle.isXML;
9143jQuery.contains = Sizzle.contains;
9144
9145
9146
9147var rneedsContext = jQuery.expr.match.needsContext;
9148
9149var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
9150
9151
9152
9153var risSimple = /^.[^:#\[\.,]*$/;
9154
9155// Implement the identical functionality for filter and not
9156function winnow( elements, qualifier, not ) {
9157 if ( jQuery.isFunction( qualifier ) ) {
9158 return jQuery.grep( elements, function( elem, i ) {
9159 /* jshint -W018 */
9160 return !!qualifier.call( elem, i, elem ) !== not;
9161 });
9162
9163 }
9164
9165 if ( qualifier.nodeType ) {
9166 return jQuery.grep( elements, function( elem ) {
9167 return ( elem === qualifier ) !== not;
9168 });
9169
9170 }
9171
9172 if ( typeof qualifier === "string" ) {
9173 if ( risSimple.test( qualifier ) ) {
9174 return jQuery.filter( qualifier, elements, not );
9175 }
9176
9177 qualifier = jQuery.filter( qualifier, elements );
9178 }
9179
9180 return jQuery.grep( elements, function( elem ) {
9181 return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
9182 });
9183}
9184
9185jQuery.filter = function( expr, elems, not ) {
9186 var elem = elems[ 0 ];
9187
9188 if ( not ) {
9189 expr = ":not(" + expr + ")";
9190 }
9191
9192 return elems.length === 1 && elem.nodeType === 1 ?
9193 jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
9194 jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
9195 return elem.nodeType === 1;
9196 }));
9197};
9198
9199jQuery.fn.extend({
9200 find: function( selector ) {
9201 var i,
9202 len = this.length,
9203 ret = [],
9204 self = this;
9205
9206 if ( typeof selector !== "string" ) {
9207 return this.pushStack( jQuery( selector ).filter(function() {
9208 for ( i = 0; i < len; i++ ) {
9209 if ( jQuery.contains( self[ i ], this ) ) {
9210 return true;
9211 }
9212 }
9213 }) );
9214 }
9215
9216 for ( i = 0; i < len; i++ ) {
9217 jQuery.find( selector, self[ i ], ret );
9218 }
9219
9220 // Needed because $( selector, context ) becomes $( context ).find( selector )
9221 ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
9222 ret.selector = this.selector ? this.selector + " " + selector : selector;
9223 return ret;
9224 },
9225 filter: function( selector ) {
9226 return this.pushStack( winnow(this, selector || [], false) );
9227 },
9228 not: function( selector ) {
9229 return this.pushStack( winnow(this, selector || [], true) );
9230 },
9231 is: function( selector ) {
9232 return !!winnow(
9233 this,
9234
9235 // If this is a positional/relative selector, check membership in the returned set
9236 // so $("p:first").is("p:last") won't return true for a doc with two "p".
9237 typeof selector === "string" && rneedsContext.test( selector ) ?
9238 jQuery( selector ) :
9239 selector || [],
9240 false
9241 ).length;
9242 }
9243});
9244
9245
9246// Initialize a jQuery object
9247
9248
9249// A central reference to the root jQuery(document)
9250var rootjQuery,
9251
9252 // A simple way to check for HTML strings
9253 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
9254 // Strict HTML recognition (#11290: must start with <)
9255 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
9256
9257 init = jQuery.fn.init = function( selector, context ) {
9258 var match, elem;
9259
9260 // HANDLE: $(""), $(null), $(undefined), $(false)
9261 if ( !selector ) {
9262 return this;
9263 }
9264
9265 // Handle HTML strings
9266 if ( typeof selector === "string" ) {
9267 if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
9268 // Assume that strings that start and end with <> are HTML and skip the regex check
9269 match = [ null, selector, null ];
9270
9271 } else {
9272 match = rquickExpr.exec( selector );
9273 }
9274
9275 // Match html or make sure no context is specified for #id
9276 if ( match && (match[1] || !context) ) {
9277
9278 // HANDLE: $(html) -> $(array)
9279 if ( match[1] ) {
9280 context = context instanceof jQuery ? context[0] : context;
9281
9282 // scripts is true for back-compat
9283 // Intentionally let the error be thrown if parseHTML is not present
9284 jQuery.merge( this, jQuery.parseHTML(
9285 match[1],
9286 context && context.nodeType ? context.ownerDocument || context : document,
9287 true
9288 ) );
9289
9290 // HANDLE: $(html, props)
9291 if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
9292 for ( match in context ) {
9293 // Properties of context are called as methods if possible
9294 if ( jQuery.isFunction( this[ match ] ) ) {
9295 this[ match ]( context[ match ] );
9296
9297 // ...and otherwise set as attributes
9298 } else {
9299 this.attr( match, context[ match ] );
9300 }
9301 }
9302 }
9303
9304 return this;
9305
9306 // HANDLE: $(#id)
9307 } else {
9308 elem = document.getElementById( match[2] );
9309
9310 // Check parentNode to catch when Blackberry 4.6 returns
9311 // nodes that are no longer in the document #6963
9312 if ( elem && elem.parentNode ) {
9313 // Inject the element directly into the jQuery object
9314 this.length = 1;
9315 this[0] = elem;
9316 }
9317
9318 this.context = document;
9319 this.selector = selector;
9320 return this;
9321 }
9322
9323 // HANDLE: $(expr, $(...))
9324 } else if ( !context || context.jquery ) {
9325 return ( context || rootjQuery ).find( selector );
9326
9327 // HANDLE: $(expr, context)
9328 // (which is just equivalent to: $(context).find(expr)
9329 } else {
9330 return this.constructor( context ).find( selector );
9331 }
9332
9333 // HANDLE: $(DOMElement)
9334 } else if ( selector.nodeType ) {
9335 this.context = this[0] = selector;
9336 this.length = 1;
9337 return this;
9338
9339 // HANDLE: $(function)
9340 // Shortcut for document ready
9341 } else if ( jQuery.isFunction( selector ) ) {
9342 return typeof rootjQuery.ready !== "undefined" ?
9343 rootjQuery.ready( selector ) :
9344 // Execute immediately if ready is not present
9345 selector( jQuery );
9346 }
9347
9348 if ( selector.selector !== undefined ) {
9349 this.selector = selector.selector;
9350 this.context = selector.context;
9351 }
9352
9353 return jQuery.makeArray( selector, this );
9354 };
9355
9356// Give the init function the jQuery prototype for later instantiation
9357init.prototype = jQuery.fn;
9358
9359// Initialize central reference
9360rootjQuery = jQuery( document );
9361
9362
9363var rparentsprev = /^(?:parents|prev(?:Until|All))/,
9364 // methods guaranteed to produce a unique set when starting from a unique set
9365 guaranteedUnique = {
9366 children: true,
9367 contents: true,
9368 next: true,
9369 prev: true
9370 };
9371
9372jQuery.extend({
9373 dir: function( elem, dir, until ) {
9374 var matched = [],
9375 truncate = until !== undefined;
9376
9377 while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
9378 if ( elem.nodeType === 1 ) {
9379 if ( truncate && jQuery( elem ).is( until ) ) {
9380 break;
9381 }
9382 matched.push( elem );
9383 }
9384 }
9385 return matched;
9386 },
9387
9388 sibling: function( n, elem ) {
9389 var matched = [];
9390
9391 for ( ; n; n = n.nextSibling ) {
9392 if ( n.nodeType === 1 && n !== elem ) {
9393 matched.push( n );
9394 }
9395 }
9396
9397 return matched;
9398 }
9399});
9400
9401jQuery.fn.extend({
9402 has: function( target ) {
9403 var targets = jQuery( target, this ),
9404 l = targets.length;
9405
9406 return this.filter(function() {
9407 var i = 0;
9408 for ( ; i < l; i++ ) {
9409 if ( jQuery.contains( this, targets[i] ) ) {
9410 return true;
9411 }
9412 }
9413 });
9414 },
9415
9416 closest: function( selectors, context ) {
9417 var cur,
9418 i = 0,
9419 l = this.length,
9420 matched = [],
9421 pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
9422 jQuery( selectors, context || this.context ) :
9423 0;
9424
9425 for ( ; i < l; i++ ) {
9426 for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
9427 // Always skip document fragments
9428 if ( cur.nodeType < 11 && (pos ?
9429 pos.index(cur) > -1 :
9430
9431 // Don't pass non-elements to Sizzle
9432 cur.nodeType === 1 &&
9433 jQuery.find.matchesSelector(cur, selectors)) ) {
9434
9435 matched.push( cur );
9436 break;
9437 }
9438 }
9439 }
9440
9441 return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
9442 },
9443
9444 // Determine the position of an element within
9445 // the matched set of elements
9446 index: function( elem ) {
9447
9448 // No argument, return index in parent
9449 if ( !elem ) {
9450 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
9451 }
9452
9453 // index in selector
9454 if ( typeof elem === "string" ) {
9455 return indexOf.call( jQuery( elem ), this[ 0 ] );
9456 }
9457
9458 // Locate the position of the desired element
9459 return indexOf.call( this,
9460
9461 // If it receives a jQuery object, the first element is used
9462 elem.jquery ? elem[ 0 ] : elem
9463 );
9464 },
9465
9466 add: function( selector, context ) {
9467 return this.pushStack(
9468 jQuery.unique(
9469 jQuery.merge( this.get(), jQuery( selector, context ) )
9470 )
9471 );
9472 },
9473
9474 addBack: function( selector ) {
9475 return this.add( selector == null ?
9476 this.prevObject : this.prevObject.filter(selector)
9477 );
9478 }
9479});
9480
9481function sibling( cur, dir ) {
9482 while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
9483 return cur;
9484}
9485
9486jQuery.each({
9487 parent: function( elem ) {
9488 var parent = elem.parentNode;
9489 return parent && parent.nodeType !== 11 ? parent : null;
9490 },
9491 parents: function( elem ) {
9492 return jQuery.dir( elem, "parentNode" );
9493 },
9494 parentsUntil: function( elem, i, until ) {
9495 return jQuery.dir( elem, "parentNode", until );
9496 },
9497 next: function( elem ) {
9498 return sibling( elem, "nextSibling" );
9499 },
9500 prev: function( elem ) {
9501 return sibling( elem, "previousSibling" );
9502 },
9503 nextAll: function( elem ) {
9504 return jQuery.dir( elem, "nextSibling" );
9505 },
9506 prevAll: function( elem ) {
9507 return jQuery.dir( elem, "previousSibling" );
9508 },
9509 nextUntil: function( elem, i, until ) {
9510 return jQuery.dir( elem, "nextSibling", until );
9511 },
9512 prevUntil: function( elem, i, until ) {
9513 return jQuery.dir( elem, "previousSibling", until );
9514 },
9515 siblings: function( elem ) {
9516 return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
9517 },
9518 children: function( elem ) {
9519 return jQuery.sibling( elem.firstChild );
9520 },
9521 contents: function( elem ) {
9522 return elem.contentDocument || jQuery.merge( [], elem.childNodes );
9523 }
9524}, function( name, fn ) {
9525 jQuery.fn[ name ] = function( until, selector ) {
9526 var matched = jQuery.map( this, fn, until );
9527
9528 if ( name.slice( -5 ) !== "Until" ) {
9529 selector = until;
9530 }
9531
9532 if ( selector && typeof selector === "string" ) {
9533 matched = jQuery.filter( selector, matched );
9534 }
9535
9536 if ( this.length > 1 ) {
9537 // Remove duplicates
9538 if ( !guaranteedUnique[ name ] ) {
9539 jQuery.unique( matched );
9540 }
9541
9542 // Reverse order for parents* and prev-derivatives
9543 if ( rparentsprev.test( name ) ) {
9544 matched.reverse();
9545 }
9546 }
9547
9548 return this.pushStack( matched );
9549 };
9550});
9551var rnotwhite = (/\S+/g);
9552
9553
9554
9555// String to Object options format cache
9556var optionsCache = {};
9557
9558// Convert String-formatted options into Object-formatted ones and store in cache
9559function createOptions( options ) {
9560 var object = optionsCache[ options ] = {};
9561 jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
9562 object[ flag ] = true;
9563 });
9564 return object;
9565}
9566
9567/*
9568 * Create a callback list using the following parameters:
9569 *
9570 * options: an optional list of space-separated options that will change how
9571 * the callback list behaves or a more traditional option object
9572 *
9573 * By default a callback list will act like an event callback list and can be
9574 * "fired" multiple times.
9575 *
9576 * Possible options:
9577 *
9578 * once: will ensure the callback list can only be fired once (like a Deferred)
9579 *
9580 * memory: will keep track of previous values and will call any callback added
9581 * after the list has been fired right away with the latest "memorized"
9582 * values (like a Deferred)
9583 *
9584 * unique: will ensure a callback can only be added once (no duplicate in the list)
9585 *
9586 * stopOnFalse: interrupt callings when a callback returns false
9587 *
9588 */
9589jQuery.Callbacks = function( options ) {
9590
9591 // Convert options from String-formatted to Object-formatted if needed
9592 // (we check in cache first)
9593 options = typeof options === "string" ?
9594 ( optionsCache[ options ] || createOptions( options ) ) :
9595 jQuery.extend( {}, options );
9596
9597 var // Last fire value (for non-forgettable lists)
9598 memory,
9599 // Flag to know if list was already fired
9600 fired,
9601 // Flag to know if list is currently firing
9602 firing,
9603 // First callback to fire (used internally by add and fireWith)
9604 firingStart,
9605 // End of the loop when firing
9606 firingLength,
9607 // Index of currently firing callback (modified by remove if needed)
9608 firingIndex,
9609 // Actual callback list
9610 list = [],
9611 // Stack of fire calls for repeatable lists
9612 stack = !options.once && [],
9613 // Fire callbacks
9614 fire = function( data ) {
9615 memory = options.memory && data;
9616 fired = true;
9617 firingIndex = firingStart || 0;
9618 firingStart = 0;
9619 firingLength = list.length;
9620 firing = true;
9621 for ( ; list && firingIndex < firingLength; firingIndex++ ) {
9622 if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
9623 memory = false; // To prevent further calls using add
9624 break;
9625 }
9626 }
9627 firing = false;
9628 if ( list ) {
9629 if ( stack ) {
9630 if ( stack.length ) {
9631 fire( stack.shift() );
9632 }
9633 } else if ( memory ) {
9634 list = [];
9635 } else {
9636 self.disable();
9637 }
9638 }
9639 },
9640 // Actual Callbacks object
9641 self = {
9642 // Add a callback or a collection of callbacks to the list
9643 add: function() {
9644 if ( list ) {
9645 // First, we save the current length
9646 var start = list.length;
9647 (function add( args ) {
9648 jQuery.each( args, function( _, arg ) {
9649 var type = jQuery.type( arg );
9650 if ( type === "function" ) {
9651 if ( !options.unique || !self.has( arg ) ) {
9652 list.push( arg );
9653 }
9654 } else if ( arg && arg.length && type !== "string" ) {
9655 // Inspect recursively
9656 add( arg );
9657 }
9658 });
9659 })( arguments );
9660 // Do we need to add the callbacks to the
9661 // current firing batch?
9662 if ( firing ) {
9663 firingLength = list.length;
9664 // With memory, if we're not firing then
9665 // we should call right away
9666 } else if ( memory ) {
9667 firingStart = start;
9668 fire( memory );
9669 }
9670 }
9671 return this;
9672 },
9673 // Remove a callback from the list
9674 remove: function() {
9675 if ( list ) {
9676 jQuery.each( arguments, function( _, arg ) {
9677 var index;
9678 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
9679 list.splice( index, 1 );
9680 // Handle firing indexes
9681 if ( firing ) {
9682 if ( index <= firingLength ) {
9683 firingLength--;
9684 }
9685 if ( index <= firingIndex ) {
9686 firingIndex--;
9687 }
9688 }
9689 }
9690 });
9691 }
9692 return this;
9693 },
9694 // Check if a given callback is in the list.
9695 // If no argument is given, return whether or not list has callbacks attached.
9696 has: function( fn ) {
9697 return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
9698 },
9699 // Remove all callbacks from the list
9700 empty: function() {
9701 list = [];
9702 firingLength = 0;
9703 return this;
9704 },
9705 // Have the list do nothing anymore
9706 disable: function() {
9707 list = stack = memory = undefined;
9708 return this;
9709 },
9710 // Is it disabled?
9711 disabled: function() {
9712 return !list;
9713 },
9714 // Lock the list in its current state
9715 lock: function() {
9716 stack = undefined;
9717 if ( !memory ) {
9718 self.disable();
9719 }
9720 return this;
9721 },
9722 // Is it locked?
9723 locked: function() {
9724 return !stack;
9725 },
9726 // Call all callbacks with the given context and arguments
9727 fireWith: function( context, args ) {
9728 if ( list && ( !fired || stack ) ) {
9729 args = args || [];
9730 args = [ context, args.slice ? args.slice() : args ];
9731 if ( firing ) {
9732 stack.push( args );
9733 } else {
9734 fire( args );
9735 }
9736 }
9737 return this;
9738 },
9739 // Call all the callbacks with the given arguments
9740 fire: function() {
9741 self.fireWith( this, arguments );
9742 return this;
9743 },
9744 // To know if the callbacks have already been called at least once
9745 fired: function() {
9746 return !!fired;
9747 }
9748 };
9749
9750 return self;
9751};
9752
9753
9754jQuery.extend({
9755
9756 Deferred: function( func ) {
9757 var tuples = [
9758 // action, add listener, listener list, final state
9759 [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
9760 [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
9761 [ "notify", "progress", jQuery.Callbacks("memory") ]
9762 ],
9763 state = "pending",
9764 promise = {
9765 state: function() {
9766 return state;
9767 },
9768 always: function() {
9769 deferred.done( arguments ).fail( arguments );
9770 return this;
9771 },
9772 then: function( /* fnDone, fnFail, fnProgress */ ) {
9773 var fns = arguments;
9774 return jQuery.Deferred(function( newDefer ) {
9775 jQuery.each( tuples, function( i, tuple ) {
9776 var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
9777 // deferred[ done | fail | progress ] for forwarding actions to newDefer
9778 deferred[ tuple[1] ](function() {
9779 var returned = fn && fn.apply( this, arguments );
9780 if ( returned && jQuery.isFunction( returned.promise ) ) {
9781 returned.promise()
9782 .done( newDefer.resolve )
9783 .fail( newDefer.reject )
9784 .progress( newDefer.notify );
9785 } else {
9786 newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
9787 }
9788 });
9789 });
9790 fns = null;
9791 }).promise();
9792 },
9793 // Get a promise for this deferred
9794 // If obj is provided, the promise aspect is added to the object
9795 promise: function( obj ) {
9796 return obj != null ? jQuery.extend( obj, promise ) : promise;
9797 }
9798 },
9799 deferred = {};
9800
9801 // Keep pipe for back-compat
9802 promise.pipe = promise.then;
9803
9804 // Add list-specific methods
9805 jQuery.each( tuples, function( i, tuple ) {
9806 var list = tuple[ 2 ],
9807 stateString = tuple[ 3 ];
9808
9809 // promise[ done | fail | progress ] = list.add
9810 promise[ tuple[1] ] = list.add;
9811
9812 // Handle state
9813 if ( stateString ) {
9814 list.add(function() {
9815 // state = [ resolved | rejected ]
9816 state = stateString;
9817
9818 // [ reject_list | resolve_list ].disable; progress_list.lock
9819 }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
9820 }
9821
9822 // deferred[ resolve | reject | notify ]
9823 deferred[ tuple[0] ] = function() {
9824 deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
9825 return this;
9826 };
9827 deferred[ tuple[0] + "With" ] = list.fireWith;
9828 });
9829
9830 // Make the deferred a promise
9831 promise.promise( deferred );
9832
9833 // Call given func if any
9834 if ( func ) {
9835 func.call( deferred, deferred );
9836 }
9837
9838 // All done!
9839 return deferred;
9840 },
9841
9842 // Deferred helper
9843 when: function( subordinate /* , ..., subordinateN */ ) {
9844 var i = 0,
9845 resolveValues = slice.call( arguments ),
9846 length = resolveValues.length,
9847
9848 // the count of uncompleted subordinates
9849 remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
9850
9851 // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
9852 deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
9853
9854 // Update function for both resolve and progress values
9855 updateFunc = function( i, contexts, values ) {
9856 return function( value ) {
9857 contexts[ i ] = this;
9858 values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
9859 if ( values === progressValues ) {
9860 deferred.notifyWith( contexts, values );
9861 } else if ( !( --remaining ) ) {
9862 deferred.resolveWith( contexts, values );
9863 }
9864 };
9865 },
9866
9867 progressValues, progressContexts, resolveContexts;
9868
9869 // add listeners to Deferred subordinates; treat others as resolved
9870 if ( length > 1 ) {
9871 progressValues = new Array( length );
9872 progressContexts = new Array( length );
9873 resolveContexts = new Array( length );
9874 for ( ; i < length; i++ ) {
9875 if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
9876 resolveValues[ i ].promise()
9877 .done( updateFunc( i, resolveContexts, resolveValues ) )
9878 .fail( deferred.reject )
9879 .progress( updateFunc( i, progressContexts, progressValues ) );
9880 } else {
9881 --remaining;
9882 }
9883 }
9884 }
9885
9886 // if we're not waiting on anything, resolve the master
9887 if ( !remaining ) {
9888 deferred.resolveWith( resolveContexts, resolveValues );
9889 }
9890
9891 return deferred.promise();
9892 }
9893});
9894
9895
9896// The deferred used on DOM ready
9897var readyList;
9898
9899jQuery.fn.ready = function( fn ) {
9900 // Add the callback
9901 jQuery.ready.promise().done( fn );
9902
9903 return this;
9904};
9905
9906jQuery.extend({
9907 // Is the DOM ready to be used? Set to true once it occurs.
9908 isReady: false,
9909
9910 // A counter to track how many items to wait for before
9911 // the ready event fires. See #6781
9912 readyWait: 1,
9913
9914 // Hold (or release) the ready event
9915 holdReady: function( hold ) {
9916 if ( hold ) {
9917 jQuery.readyWait++;
9918 } else {
9919 jQuery.ready( true );
9920 }
9921 },
9922
9923 // Handle when the DOM is ready
9924 ready: function( wait ) {
9925
9926 // Abort if there are pending holds or we're already ready
9927 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
9928 return;
9929 }
9930
9931 // Remember that the DOM is ready
9932 jQuery.isReady = true;
9933
9934 // If a normal DOM Ready event fired, decrement, and wait if need be
9935 if ( wait !== true && --jQuery.readyWait > 0 ) {
9936 return;
9937 }
9938
9939 // If there are functions bound, to execute
9940 readyList.resolveWith( document, [ jQuery ] );
9941
9942 // Trigger any bound ready events
9943 if ( jQuery.fn.triggerHandler ) {
9944 jQuery( document ).triggerHandler( "ready" );
9945 jQuery( document ).off( "ready" );
9946 }
9947 }
9948});
9949
9950/**
9951 * The ready event handler and self cleanup method
9952 */
9953function completed() {
9954 document.removeEventListener( "DOMContentLoaded", completed, false );
9955 window.removeEventListener( "load", completed, false );
9956 jQuery.ready();
9957}
9958
9959jQuery.ready.promise = function( obj ) {
9960 if ( !readyList ) {
9961
9962 readyList = jQuery.Deferred();
9963
9964 // Catch cases where $(document).ready() is called after the browser event has already occurred.
9965 // we once tried to use readyState "interactive" here, but it caused issues like the one
9966 // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
9967 if ( document.readyState === "complete" ) {
9968 // Handle it asynchronously to allow scripts the opportunity to delay ready
9969 setTimeout( jQuery.ready );
9970
9971 } else {
9972
9973 // Use the handy event callback
9974 document.addEventListener( "DOMContentLoaded", completed, false );
9975
9976 // A fallback to window.onload, that will always work
9977 window.addEventListener( "load", completed, false );
9978 }
9979 }
9980 return readyList.promise( obj );
9981};
9982
9983// Kick off the DOM ready check even if the user does not
9984jQuery.ready.promise();
9985
9986
9987
9988
9989// Multifunctional method to get and set values of a collection
9990// The value/s can optionally be executed if it's a function
9991var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
9992 var i = 0,
9993 len = elems.length,
9994 bulk = key == null;
9995
9996 // Sets many values
9997 if ( jQuery.type( key ) === "object" ) {
9998 chainable = true;
9999 for ( i in key ) {
10000 jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
10001 }
10002
10003 // Sets one value
10004 } else if ( value !== undefined ) {
10005 chainable = true;
10006
10007 if ( !jQuery.isFunction( value ) ) {
10008 raw = true;
10009 }
10010
10011 if ( bulk ) {
10012 // Bulk operations run against the entire set
10013 if ( raw ) {
10014 fn.call( elems, value );
10015 fn = null;
10016
10017 // ...except when executing function values
10018 } else {
10019 bulk = fn;
10020 fn = function( elem, key, value ) {
10021 return bulk.call( jQuery( elem ), value );
10022 };
10023 }
10024 }
10025
10026 if ( fn ) {
10027 for ( ; i < len; i++ ) {
10028 fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
10029 }
10030 }
10031 }
10032
10033 return chainable ?
10034 elems :
10035
10036 // Gets
10037 bulk ?
10038 fn.call( elems ) :
10039 len ? fn( elems[0], key ) : emptyGet;
10040};
10041
10042
10043/**
10044 * Determines whether an object can have data
10045 */
10046jQuery.acceptData = function( owner ) {
10047 // Accepts only:
10048 // - Node
10049 // - Node.ELEMENT_NODE
10050 // - Node.DOCUMENT_NODE
10051 // - Object
10052 // - Any
10053 /* jshint -W018 */
10054 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
10055};
10056
10057
10058function Data() {
10059 // Support: Android < 4,
10060 // Old WebKit does not have Object.preventExtensions/freeze method,
10061 // return new empty object instead with no [[set]] accessor
10062 Object.defineProperty( this.cache = {}, 0, {
10063 get: function() {
10064 return {};
10065 }
10066 });
10067
10068 this.expando = jQuery.expando + Math.random();
10069}
10070
10071Data.uid = 1;
10072Data.accepts = jQuery.acceptData;
10073
10074Data.prototype = {
10075 key: function( owner ) {
10076 // We can accept data for non-element nodes in modern browsers,
10077 // but we should not, see #8335.
10078 // Always return the key for a frozen object.
10079 if ( !Data.accepts( owner ) ) {
10080 return 0;
10081 }
10082
10083 var descriptor = {},
10084 // Check if the owner object already has a cache key
10085 unlock = owner[ this.expando ];
10086
10087 // If not, create one
10088 if ( !unlock ) {
10089 unlock = Data.uid++;
10090
10091 // Secure it in a non-enumerable, non-writable property
10092 try {
10093 descriptor[ this.expando ] = { value: unlock };
10094 Object.defineProperties( owner, descriptor );
10095
10096 // Support: Android < 4
10097 // Fallback to a less secure definition
10098 } catch ( e ) {
10099 descriptor[ this.expando ] = unlock;
10100 jQuery.extend( owner, descriptor );
10101 }
10102 }
10103
10104 // Ensure the cache object
10105 if ( !this.cache[ unlock ] ) {
10106 this.cache[ unlock ] = {};
10107 }
10108
10109 return unlock;
10110 },
10111 set: function( owner, data, value ) {
10112 var prop,
10113 // There may be an unlock assigned to this node,
10114 // if there is no entry for this "owner", create one inline
10115 // and set the unlock as though an owner entry had always existed
10116 unlock = this.key( owner ),
10117 cache = this.cache[ unlock ];
10118
10119 // Handle: [ owner, key, value ] args
10120 if ( typeof data === "string" ) {
10121 cache[ data ] = value;
10122
10123 // Handle: [ owner, { properties } ] args
10124 } else {
10125 // Fresh assignments by object are shallow copied
10126 if ( jQuery.isEmptyObject( cache ) ) {
10127 jQuery.extend( this.cache[ unlock ], data );
10128 // Otherwise, copy the properties one-by-one to the cache object
10129 } else {
10130 for ( prop in data ) {
10131 cache[ prop ] = data[ prop ];
10132 }
10133 }
10134 }
10135 return cache;
10136 },
10137 get: function( owner, key ) {
10138 // Either a valid cache is found, or will be created.
10139 // New caches will be created and the unlock returned,
10140 // allowing direct access to the newly created
10141 // empty data object. A valid owner object must be provided.
10142 var cache = this.cache[ this.key( owner ) ];
10143
10144 return key === undefined ?
10145 cache : cache[ key ];
10146 },
10147 access: function( owner, key, value ) {
10148 var stored;
10149 // In cases where either:
10150 //
10151 // 1. No key was specified
10152 // 2. A string key was specified, but no value provided
10153 //
10154 // Take the "read" path and allow the get method to determine
10155 // which value to return, respectively either:
10156 //
10157 // 1. The entire cache object
10158 // 2. The data stored at the key
10159 //
10160 if ( key === undefined ||
10161 ((key && typeof key === "string") && value === undefined) ) {
10162
10163 stored = this.get( owner, key );
10164
10165 return stored !== undefined ?
10166 stored : this.get( owner, jQuery.camelCase(key) );
10167 }
10168
10169 // [*]When the key is not a string, or both a key and value
10170 // are specified, set or extend (existing objects) with either:
10171 //
10172 // 1. An object of properties
10173 // 2. A key and value
10174 //
10175 this.set( owner, key, value );
10176
10177 // Since the "set" path can have two possible entry points
10178 // return the expected data based on which path was taken[*]
10179 return value !== undefined ? value : key;
10180 },
10181 remove: function( owner, key ) {
10182 var i, name, camel,
10183 unlock = this.key( owner ),
10184 cache = this.cache[ unlock ];
10185
10186 if ( key === undefined ) {
10187 this.cache[ unlock ] = {};
10188
10189 } else {
10190 // Support array or space separated string of keys
10191 if ( jQuery.isArray( key ) ) {
10192 // If "name" is an array of keys...
10193 // When data is initially created, via ("key", "val") signature,
10194 // keys will be converted to camelCase.
10195 // Since there is no way to tell _how_ a key was added, remove
10196 // both plain key and camelCase key. #12786
10197 // This will only penalize the array argument path.
10198 name = key.concat( key.map( jQuery.camelCase ) );
10199 } else {
10200 camel = jQuery.camelCase( key );
10201 // Try the string as a key before any manipulation
10202 if ( key in cache ) {
10203 name = [ key, camel ];
10204 } else {
10205 // If a key with the spaces exists, use it.
10206 // Otherwise, create an array by matching non-whitespace
10207 name = camel;
10208 name = name in cache ?
10209 [ name ] : ( name.match( rnotwhite ) || [] );
10210 }
10211 }
10212
10213 i = name.length;
10214 while ( i-- ) {
10215 delete cache[ name[ i ] ];
10216 }
10217 }
10218 },
10219 hasData: function( owner ) {
10220 return !jQuery.isEmptyObject(
10221 this.cache[ owner[ this.expando ] ] || {}
10222 );
10223 },
10224 discard: function( owner ) {
10225 if ( owner[ this.expando ] ) {
10226 delete this.cache[ owner[ this.expando ] ];
10227 }
10228 }
10229};
10230var data_priv = new Data();
10231
10232var data_user = new Data();
10233
10234
10235
10236/*
10237 Implementation Summary
10238
10239 1. Enforce API surface and semantic compatibility with 1.9.x branch
10240 2. Improve the module's maintainability by reducing the storage
10241 paths to a single mechanism.
10242 3. Use the same single mechanism to support "private" and "user" data.
10243 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
10244 5. Avoid exposing implementation details on user objects (eg. expando properties)
10245 6. Provide a clear path for implementation upgrade to WeakMap in 2014
10246*/
10247var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
10248 rmultiDash = /([A-Z])/g;
10249
10250function dataAttr( elem, key, data ) {
10251 var name;
10252
10253 // If nothing was found internally, try to fetch any
10254 // data from the HTML5 data-* attribute
10255 if ( data === undefined && elem.nodeType === 1 ) {
10256 name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
10257 data = elem.getAttribute( name );
10258
10259 if ( typeof data === "string" ) {
10260 try {
10261 data = data === "true" ? true :
10262 data === "false" ? false :
10263 data === "null" ? null :
10264 // Only convert to a number if it doesn't change the string
10265 +data + "" === data ? +data :
10266 rbrace.test( data ) ? jQuery.parseJSON( data ) :
10267 data;
10268 } catch( e ) {}
10269
10270 // Make sure we set the data so it isn't changed later
10271 data_user.set( elem, key, data );
10272 } else {
10273 data = undefined;
10274 }
10275 }
10276 return data;
10277}
10278
10279jQuery.extend({
10280 hasData: function( elem ) {
10281 return data_user.hasData( elem ) || data_priv.hasData( elem );
10282 },
10283
10284 data: function( elem, name, data ) {
10285 return data_user.access( elem, name, data );
10286 },
10287
10288 removeData: function( elem, name ) {
10289 data_user.remove( elem, name );
10290 },
10291
10292 // TODO: Now that all calls to _data and _removeData have been replaced
10293 // with direct calls to data_priv methods, these can be deprecated.
10294 _data: function( elem, name, data ) {
10295 return data_priv.access( elem, name, data );
10296 },
10297
10298 _removeData: function( elem, name ) {
10299 data_priv.remove( elem, name );
10300 }
10301});
10302
10303jQuery.fn.extend({
10304 data: function( key, value ) {
10305 var i, name, data,
10306 elem = this[ 0 ],
10307 attrs = elem && elem.attributes;
10308
10309 // Gets all values
10310 if ( key === undefined ) {
10311 if ( this.length ) {
10312 data = data_user.get( elem );
10313
10314 if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
10315 i = attrs.length;
10316 while ( i-- ) {
10317
10318 // Support: IE11+
10319 // The attrs elements can be null (#14894)
10320 if ( attrs[ i ] ) {
10321 name = attrs[ i ].name;
10322 if ( name.indexOf( "data-" ) === 0 ) {
10323 name = jQuery.camelCase( name.slice(5) );
10324 dataAttr( elem, name, data[ name ] );
10325 }
10326 }
10327 }
10328 data_priv.set( elem, "hasDataAttrs", true );
10329 }
10330 }
10331
10332 return data;
10333 }
10334
10335 // Sets multiple values
10336 if ( typeof key === "object" ) {
10337 return this.each(function() {
10338 data_user.set( this, key );
10339 });
10340 }
10341
10342 return access( this, function( value ) {
10343 var data,
10344 camelKey = jQuery.camelCase( key );
10345
10346 // The calling jQuery object (element matches) is not empty
10347 // (and therefore has an element appears at this[ 0 ]) and the
10348 // `value` parameter was not undefined. An empty jQuery object
10349 // will result in `undefined` for elem = this[ 0 ] which will
10350 // throw an exception if an attempt to read a data cache is made.
10351 if ( elem && value === undefined ) {
10352 // Attempt to get data from the cache
10353 // with the key as-is
10354 data = data_user.get( elem, key );
10355 if ( data !== undefined ) {
10356 return data;
10357 }
10358
10359 // Attempt to get data from the cache
10360 // with the key camelized
10361 data = data_user.get( elem, camelKey );
10362 if ( data !== undefined ) {
10363 return data;
10364 }
10365
10366 // Attempt to "discover" the data in
10367 // HTML5 custom data-* attrs
10368 data = dataAttr( elem, camelKey, undefined );
10369 if ( data !== undefined ) {
10370 return data;
10371 }
10372
10373 // We tried really hard, but the data doesn't exist.
10374 return;
10375 }
10376
10377 // Set the data...
10378 this.each(function() {
10379 // First, attempt to store a copy or reference of any
10380 // data that might've been store with a camelCased key.
10381 var data = data_user.get( this, camelKey );
10382
10383 // For HTML5 data-* attribute interop, we have to
10384 // store property names with dashes in a camelCase form.
10385 // This might not apply to all properties...*
10386 data_user.set( this, camelKey, value );
10387
10388 // *... In the case of properties that might _actually_
10389 // have dashes, we need to also store a copy of that
10390 // unchanged property.
10391 if ( key.indexOf("-") !== -1 && data !== undefined ) {
10392 data_user.set( this, key, value );
10393 }
10394 });
10395 }, null, value, arguments.length > 1, null, true );
10396 },
10397
10398 removeData: function( key ) {
10399 return this.each(function() {
10400 data_user.remove( this, key );
10401 });
10402 }
10403});
10404
10405
10406jQuery.extend({
10407 queue: function( elem, type, data ) {
10408 var queue;
10409
10410 if ( elem ) {
10411 type = ( type || "fx" ) + "queue";
10412 queue = data_priv.get( elem, type );
10413
10414 // Speed up dequeue by getting out quickly if this is just a lookup
10415 if ( data ) {
10416 if ( !queue || jQuery.isArray( data ) ) {
10417 queue = data_priv.access( elem, type, jQuery.makeArray(data) );
10418 } else {
10419 queue.push( data );
10420 }
10421 }
10422 return queue || [];
10423 }
10424 },
10425
10426 dequeue: function( elem, type ) {
10427 type = type || "fx";
10428
10429 var queue = jQuery.queue( elem, type ),
10430 startLength = queue.length,
10431 fn = queue.shift(),
10432 hooks = jQuery._queueHooks( elem, type ),
10433 next = function() {
10434 jQuery.dequeue( elem, type );
10435 };
10436
10437 // If the fx queue is dequeued, always remove the progress sentinel
10438 if ( fn === "inprogress" ) {
10439 fn = queue.shift();
10440 startLength--;
10441 }
10442
10443 if ( fn ) {
10444
10445 // Add a progress sentinel to prevent the fx queue from being
10446 // automatically dequeued
10447 if ( type === "fx" ) {
10448 queue.unshift( "inprogress" );
10449 }
10450
10451 // clear up the last queue stop function
10452 delete hooks.stop;
10453 fn.call( elem, next, hooks );
10454 }
10455
10456 if ( !startLength && hooks ) {
10457 hooks.empty.fire();
10458 }
10459 },
10460
10461 // not intended for public consumption - generates a queueHooks object, or returns the current one
10462 _queueHooks: function( elem, type ) {
10463 var key = type + "queueHooks";
10464 return data_priv.get( elem, key ) || data_priv.access( elem, key, {
10465 empty: jQuery.Callbacks("once memory").add(function() {
10466 data_priv.remove( elem, [ type + "queue", key ] );
10467 })
10468 });
10469 }
10470});
10471
10472jQuery.fn.extend({
10473 queue: function( type, data ) {
10474 var setter = 2;
10475
10476 if ( typeof type !== "string" ) {
10477 data = type;
10478 type = "fx";
10479 setter--;
10480 }
10481
10482 if ( arguments.length < setter ) {
10483 return jQuery.queue( this[0], type );
10484 }
10485
10486 return data === undefined ?
10487 this :
10488 this.each(function() {
10489 var queue = jQuery.queue( this, type, data );
10490
10491 // ensure a hooks for this queue
10492 jQuery._queueHooks( this, type );
10493
10494 if ( type === "fx" && queue[0] !== "inprogress" ) {
10495 jQuery.dequeue( this, type );
10496 }
10497 });
10498 },
10499 dequeue: function( type ) {
10500 return this.each(function() {
10501 jQuery.dequeue( this, type );
10502 });
10503 },
10504 clearQueue: function( type ) {
10505 return this.queue( type || "fx", [] );
10506 },
10507 // Get a promise resolved when queues of a certain type
10508 // are emptied (fx is the type by default)
10509 promise: function( type, obj ) {
10510 var tmp,
10511 count = 1,
10512 defer = jQuery.Deferred(),
10513 elements = this,
10514 i = this.length,
10515 resolve = function() {
10516 if ( !( --count ) ) {
10517 defer.resolveWith( elements, [ elements ] );
10518 }
10519 };
10520
10521 if ( typeof type !== "string" ) {
10522 obj = type;
10523 type = undefined;
10524 }
10525 type = type || "fx";
10526
10527 while ( i-- ) {
10528 tmp = data_priv.get( elements[ i ], type + "queueHooks" );
10529 if ( tmp && tmp.empty ) {
10530 count++;
10531 tmp.empty.add( resolve );
10532 }
10533 }
10534 resolve();
10535 return defer.promise( obj );
10536 }
10537});
10538var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
10539
10540var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
10541
10542var isHidden = function( elem, el ) {
10543 // isHidden might be called from jQuery#filter function;
10544 // in that case, element will be second argument
10545 elem = el || elem;
10546 return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
10547 };
10548
10549var rcheckableType = (/^(?:checkbox|radio)$/i);
10550
10551
10552
10553(function() {
10554 var fragment = document.createDocumentFragment(),
10555 div = fragment.appendChild( document.createElement( "div" ) ),
10556 input = document.createElement( "input" );
10557
10558 // #11217 - WebKit loses check when the name is after the checked attribute
10559 // Support: Windows Web Apps (WWA)
10560 // `name` and `type` need .setAttribute for WWA
10561 input.setAttribute( "type", "radio" );
10562 input.setAttribute( "checked", "checked" );
10563 input.setAttribute( "name", "t" );
10564
10565 div.appendChild( input );
10566
10567 // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
10568 // old WebKit doesn't clone checked state correctly in fragments
10569 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
10570
10571 // Make sure textarea (and checkbox) defaultValue is properly cloned
10572 // Support: IE9-IE11+
10573 div.innerHTML = "<textarea>x</textarea>";
10574 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
10575})();
10576var strundefined = typeof undefined;
10577
10578
10579
10580support.focusinBubbles = "onfocusin" in window;
10581
10582
10583var
10584 rkeyEvent = /^key/,
10585 rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
10586 rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
10587 rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
10588
10589function returnTrue() {
10590 return true;
10591}
10592
10593function returnFalse() {
10594 return false;
10595}
10596
10597function safeActiveElement() {
10598 try {
10599 return document.activeElement;
10600 } catch ( err ) { }
10601}
10602
10603/*
10604 * Helper functions for managing events -- not part of the public interface.
10605 * Props to Dean Edwards' addEvent library for many of the ideas.
10606 */
10607jQuery.event = {
10608
10609 global: {},
10610
10611 add: function( elem, types, handler, data, selector ) {
10612
10613 var handleObjIn, eventHandle, tmp,
10614 events, t, handleObj,
10615 special, handlers, type, namespaces, origType,
10616 elemData = data_priv.get( elem );
10617
10618 // Don't attach events to noData or text/comment nodes (but allow plain objects)
10619 if ( !elemData ) {
10620 return;
10621 }
10622
10623 // Caller can pass in an object of custom data in lieu of the handler
10624 if ( handler.handler ) {
10625 handleObjIn = handler;
10626 handler = handleObjIn.handler;
10627 selector = handleObjIn.selector;
10628 }
10629
10630 // Make sure that the handler has a unique ID, used to find/remove it later
10631 if ( !handler.guid ) {
10632 handler.guid = jQuery.guid++;
10633 }
10634
10635 // Init the element's event structure and main handler, if this is the first
10636 if ( !(events = elemData.events) ) {
10637 events = elemData.events = {};
10638 }
10639 if ( !(eventHandle = elemData.handle) ) {
10640 eventHandle = elemData.handle = function( e ) {
10641 // Discard the second event of a jQuery.event.trigger() and
10642 // when an event is called after a page has unloaded
10643 return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
10644 jQuery.event.dispatch.apply( elem, arguments ) : undefined;
10645 };
10646 }
10647
10648 // Handle multiple events separated by a space
10649 types = ( types || "" ).match( rnotwhite ) || [ "" ];
10650 t = types.length;
10651 while ( t-- ) {
10652 tmp = rtypenamespace.exec( types[t] ) || [];
10653 type = origType = tmp[1];
10654 namespaces = ( tmp[2] || "" ).split( "." ).sort();
10655
10656 // There *must* be a type, no attaching namespace-only handlers
10657 if ( !type ) {
10658 continue;
10659 }
10660
10661 // If event changes its type, use the special event handlers for the changed type
10662 special = jQuery.event.special[ type ] || {};
10663
10664 // If selector defined, determine special event api type, otherwise given type
10665 type = ( selector ? special.delegateType : special.bindType ) || type;
10666
10667 // Update special based on newly reset type
10668 special = jQuery.event.special[ type ] || {};
10669
10670 // handleObj is passed to all event handlers
10671 handleObj = jQuery.extend({
10672 type: type,
10673 origType: origType,
10674 data: data,
10675 handler: handler,
10676 guid: handler.guid,
10677 selector: selector,
10678 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
10679 namespace: namespaces.join(".")
10680 }, handleObjIn );
10681
10682 // Init the event handler queue if we're the first
10683 if ( !(handlers = events[ type ]) ) {
10684 handlers = events[ type ] = [];
10685 handlers.delegateCount = 0;
10686
10687 // Only use addEventListener if the special events handler returns false
10688 if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
10689 if ( elem.addEventListener ) {
10690 elem.addEventListener( type, eventHandle, false );
10691 }
10692 }
10693 }
10694
10695 if ( special.add ) {
10696 special.add.call( elem, handleObj );
10697
10698 if ( !handleObj.handler.guid ) {
10699 handleObj.handler.guid = handler.guid;
10700 }
10701 }
10702
10703 // Add to the element's handler list, delegates in front
10704 if ( selector ) {
10705 handlers.splice( handlers.delegateCount++, 0, handleObj );
10706 } else {
10707 handlers.push( handleObj );
10708 }
10709
10710 // Keep track of which events have ever been used, for event optimization
10711 jQuery.event.global[ type ] = true;
10712 }
10713
10714 },
10715
10716 // Detach an event or set of events from an element
10717 remove: function( elem, types, handler, selector, mappedTypes ) {
10718
10719 var j, origCount, tmp,
10720 events, t, handleObj,
10721 special, handlers, type, namespaces, origType,
10722 elemData = data_priv.hasData( elem ) && data_priv.get( elem );
10723
10724 if ( !elemData || !(events = elemData.events) ) {
10725 return;
10726 }
10727
10728 // Once for each type.namespace in types; type may be omitted
10729 types = ( types || "" ).match( rnotwhite ) || [ "" ];
10730 t = types.length;
10731 while ( t-- ) {
10732 tmp = rtypenamespace.exec( types[t] ) || [];
10733 type = origType = tmp[1];
10734 namespaces = ( tmp[2] || "" ).split( "." ).sort();
10735
10736 // Unbind all events (on this namespace, if provided) for the element
10737 if ( !type ) {
10738 for ( type in events ) {
10739 jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
10740 }
10741 continue;
10742 }
10743
10744 special = jQuery.event.special[ type ] || {};
10745 type = ( selector ? special.delegateType : special.bindType ) || type;
10746 handlers = events[ type ] || [];
10747 tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
10748
10749 // Remove matching events
10750 origCount = j = handlers.length;
10751 while ( j-- ) {
10752 handleObj = handlers[ j ];
10753
10754 if ( ( mappedTypes || origType === handleObj.origType ) &&
10755 ( !handler || handler.guid === handleObj.guid ) &&
10756 ( !tmp || tmp.test( handleObj.namespace ) ) &&
10757 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
10758 handlers.splice( j, 1 );
10759
10760 if ( handleObj.selector ) {
10761 handlers.delegateCount--;
10762 }
10763 if ( special.remove ) {
10764 special.remove.call( elem, handleObj );
10765 }
10766 }
10767 }
10768
10769 // Remove generic event handler if we removed something and no more handlers exist
10770 // (avoids potential for endless recursion during removal of special event handlers)
10771 if ( origCount && !handlers.length ) {
10772 if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
10773 jQuery.removeEvent( elem, type, elemData.handle );
10774 }
10775
10776 delete events[ type ];
10777 }
10778 }
10779
10780 // Remove the expando if it's no longer used
10781 if ( jQuery.isEmptyObject( events ) ) {
10782 delete elemData.handle;
10783 data_priv.remove( elem, "events" );
10784 }
10785 },
10786
10787 trigger: function( event, data, elem, onlyHandlers ) {
10788
10789 var i, cur, tmp, bubbleType, ontype, handle, special,
10790 eventPath = [ elem || document ],
10791 type = hasOwn.call( event, "type" ) ? event.type : event,
10792 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
10793
10794 cur = tmp = elem = elem || document;
10795
10796 // Don't do events on text and comment nodes
10797 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
10798 return;
10799 }
10800
10801 // focus/blur morphs to focusin/out; ensure we're not firing them right now
10802 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
10803 return;
10804 }
10805
10806 if ( type.indexOf(".") >= 0 ) {
10807 // Namespaced trigger; create a regexp to match event type in handle()
10808 namespaces = type.split(".");
10809 type = namespaces.shift();
10810 namespaces.sort();
10811 }
10812 ontype = type.indexOf(":") < 0 && "on" + type;
10813
10814 // Caller can pass in a jQuery.Event object, Object, or just an event type string
10815 event = event[ jQuery.expando ] ?
10816 event :
10817 new jQuery.Event( type, typeof event === "object" && event );
10818
10819 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
10820 event.isTrigger = onlyHandlers ? 2 : 3;
10821 event.namespace = namespaces.join(".");
10822 event.namespace_re = event.namespace ?
10823 new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
10824 null;
10825
10826 // Clean up the event in case it is being reused
10827 event.result = undefined;
10828 if ( !event.target ) {
10829 event.target = elem;
10830 }
10831
10832 // Clone any incoming data and prepend the event, creating the handler arg list
10833 data = data == null ?
10834 [ event ] :
10835 jQuery.makeArray( data, [ event ] );
10836
10837 // Allow special events to draw outside the lines
10838 special = jQuery.event.special[ type ] || {};
10839 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
10840 return;
10841 }
10842
10843 // Determine event propagation path in advance, per W3C events spec (#9951)
10844 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
10845 if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
10846
10847 bubbleType = special.delegateType || type;
10848 if ( !rfocusMorph.test( bubbleType + type ) ) {
10849 cur = cur.parentNode;
10850 }
10851 for ( ; cur; cur = cur.parentNode ) {
10852 eventPath.push( cur );
10853 tmp = cur;
10854 }
10855
10856 // Only add window if we got to document (e.g., not plain obj or detached DOM)
10857 if ( tmp === (elem.ownerDocument || document) ) {
10858 eventPath.push( tmp.defaultView || tmp.parentWindow || window );
10859 }
10860 }
10861
10862 // Fire handlers on the event path
10863 i = 0;
10864 while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
10865
10866 event.type = i > 1 ?
10867 bubbleType :
10868 special.bindType || type;
10869
10870 // jQuery handler
10871 handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
10872 if ( handle ) {
10873 handle.apply( cur, data );
10874 }
10875
10876 // Native handler
10877 handle = ontype && cur[ ontype ];
10878 if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
10879 event.result = handle.apply( cur, data );
10880 if ( event.result === false ) {
10881 event.preventDefault();
10882 }
10883 }
10884 }
10885 event.type = type;
10886
10887 // If nobody prevented the default action, do it now
10888 if ( !onlyHandlers && !event.isDefaultPrevented() ) {
10889
10890 if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
10891 jQuery.acceptData( elem ) ) {
10892
10893 // Call a native DOM method on the target with the same name name as the event.
10894 // Don't do default actions on window, that's where global variables be (#6170)
10895 if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
10896
10897 // Don't re-trigger an onFOO event when we call its FOO() method
10898 tmp = elem[ ontype ];
10899
10900 if ( tmp ) {
10901 elem[ ontype ] = null;
10902 }
10903
10904 // Prevent re-triggering of the same event, since we already bubbled it above
10905 jQuery.event.triggered = type;
10906 elem[ type ]();
10907 jQuery.event.triggered = undefined;
10908
10909 if ( tmp ) {
10910 elem[ ontype ] = tmp;
10911 }
10912 }
10913 }
10914 }
10915
10916 return event.result;
10917 },
10918
10919 dispatch: function( event ) {
10920
10921 // Make a writable jQuery.Event from the native event object
10922 event = jQuery.event.fix( event );
10923
10924 var i, j, ret, matched, handleObj,
10925 handlerQueue = [],
10926 args = slice.call( arguments ),
10927 handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
10928 special = jQuery.event.special[ event.type ] || {};
10929
10930 // Use the fix-ed jQuery.Event rather than the (read-only) native event
10931 args[0] = event;
10932 event.delegateTarget = this;
10933
10934 // Call the preDispatch hook for the mapped type, and let it bail if desired
10935 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
10936 return;
10937 }
10938
10939 // Determine handlers
10940 handlerQueue = jQuery.event.handlers.call( this, event, handlers );
10941
10942 // Run delegates first; they may want to stop propagation beneath us
10943 i = 0;
10944 while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
10945 event.currentTarget = matched.elem;
10946
10947 j = 0;
10948 while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
10949
10950 // Triggered event must either 1) have no namespace, or
10951 // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
10952 if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
10953
10954 event.handleObj = handleObj;
10955 event.data = handleObj.data;
10956
10957 ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
10958 .apply( matched.elem, args );
10959
10960 if ( ret !== undefined ) {
10961 if ( (event.result = ret) === false ) {
10962 event.preventDefault();
10963 event.stopPropagation();
10964 }
10965 }
10966 }
10967 }
10968 }
10969
10970 // Call the postDispatch hook for the mapped type
10971 if ( special.postDispatch ) {
10972 special.postDispatch.call( this, event );
10973 }
10974
10975 return event.result;
10976 },
10977
10978 handlers: function( event, handlers ) {
10979 var i, matches, sel, handleObj,
10980 handlerQueue = [],
10981 delegateCount = handlers.delegateCount,
10982 cur = event.target;
10983
10984 // Find delegate handlers
10985 // Black-hole SVG <use> instance trees (#13180)
10986 // Avoid non-left-click bubbling in Firefox (#3861)
10987 if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
10988
10989 for ( ; cur !== this; cur = cur.parentNode || this ) {
10990
10991 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
10992 if ( cur.disabled !== true || event.type !== "click" ) {
10993 matches = [];
10994 for ( i = 0; i < delegateCount; i++ ) {
10995 handleObj = handlers[ i ];
10996
10997 // Don't conflict with Object.prototype properties (#13203)
10998 sel = handleObj.selector + " ";
10999
11000 if ( matches[ sel ] === undefined ) {
11001 matches[ sel ] = handleObj.needsContext ?
11002 jQuery( sel, this ).index( cur ) >= 0 :
11003 jQuery.find( sel, this, null, [ cur ] ).length;
11004 }
11005 if ( matches[ sel ] ) {
11006 matches.push( handleObj );
11007 }
11008 }
11009 if ( matches.length ) {
11010 handlerQueue.push({ elem: cur, handlers: matches });
11011 }
11012 }
11013 }
11014 }
11015
11016 // Add the remaining (directly-bound) handlers
11017 if ( delegateCount < handlers.length ) {
11018 handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
11019 }
11020
11021 return handlerQueue;
11022 },
11023
11024 // Includes some event props shared by KeyEvent and MouseEvent
11025 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
11026
11027 fixHooks: {},
11028
11029 keyHooks: {
11030 props: "char charCode key keyCode".split(" "),
11031 filter: function( event, original ) {
11032
11033 // Add which for key events
11034 if ( event.which == null ) {
11035 event.which = original.charCode != null ? original.charCode : original.keyCode;
11036 }
11037
11038 return event;
11039 }
11040 },
11041
11042 mouseHooks: {
11043 props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
11044 filter: function( event, original ) {
11045 var eventDoc, doc, body,
11046 button = original.button;
11047
11048 // Calculate pageX/Y if missing and clientX/Y available
11049 if ( event.pageX == null && original.clientX != null ) {
11050 eventDoc = event.target.ownerDocument || document;
11051 doc = eventDoc.documentElement;
11052 body = eventDoc.body;
11053
11054 event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
11055 event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
11056 }
11057
11058 // Add which for click: 1 === left; 2 === middle; 3 === right
11059 // Note: button is not normalized, so don't use it
11060 if ( !event.which && button !== undefined ) {
11061 event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
11062 }
11063
11064 return event;
11065 }
11066 },
11067
11068 fix: function( event ) {
11069 if ( event[ jQuery.expando ] ) {
11070 return event;
11071 }
11072
11073 // Create a writable copy of the event object and normalize some properties
11074 var i, prop, copy,
11075 type = event.type,
11076 originalEvent = event,
11077 fixHook = this.fixHooks[ type ];
11078
11079 if ( !fixHook ) {
11080 this.fixHooks[ type ] = fixHook =
11081 rmouseEvent.test( type ) ? this.mouseHooks :
11082 rkeyEvent.test( type ) ? this.keyHooks :
11083 {};
11084 }
11085 copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
11086
11087 event = new jQuery.Event( originalEvent );
11088
11089 i = copy.length;
11090 while ( i-- ) {
11091 prop = copy[ i ];
11092 event[ prop ] = originalEvent[ prop ];
11093 }
11094
11095 // Support: Cordova 2.5 (WebKit) (#13255)
11096 // All events should have a target; Cordova deviceready doesn't
11097 if ( !event.target ) {
11098 event.target = document;
11099 }
11100
11101 // Support: Safari 6.0+, Chrome < 28
11102 // Target should not be a text node (#504, #13143)
11103 if ( event.target.nodeType === 3 ) {
11104 event.target = event.target.parentNode;
11105 }
11106
11107 return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
11108 },
11109
11110 special: {
11111 load: {
11112 // Prevent triggered image.load events from bubbling to window.load
11113 noBubble: true
11114 },
11115 focus: {
11116 // Fire native event if possible so blur/focus sequence is correct
11117 trigger: function() {
11118 if ( this !== safeActiveElement() && this.focus ) {
11119 this.focus();
11120 return false;
11121 }
11122 },
11123 delegateType: "focusin"
11124 },
11125 blur: {
11126 trigger: function() {
11127 if ( this === safeActiveElement() && this.blur ) {
11128 this.blur();
11129 return false;
11130 }
11131 },
11132 delegateType: "focusout"
11133 },
11134 click: {
11135 // For checkbox, fire native event so checked state will be right
11136 trigger: function() {
11137 if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
11138 this.click();
11139 return false;
11140 }
11141 },
11142
11143 // For cross-browser consistency, don't fire native .click() on links
11144 _default: function( event ) {
11145 return jQuery.nodeName( event.target, "a" );
11146 }
11147 },
11148
11149 beforeunload: {
11150 postDispatch: function( event ) {
11151
11152 // Support: Firefox 20+
11153 // Firefox doesn't alert if the returnValue field is not set.
11154 if ( event.result !== undefined && event.originalEvent ) {
11155 event.originalEvent.returnValue = event.result;
11156 }
11157 }
11158 }
11159 },
11160
11161 simulate: function( type, elem, event, bubble ) {
11162 // Piggyback on a donor event to simulate a different one.
11163 // Fake originalEvent to avoid donor's stopPropagation, but if the
11164 // simulated event prevents default then we do the same on the donor.
11165 var e = jQuery.extend(
11166 new jQuery.Event(),
11167 event,
11168 {
11169 type: type,
11170 isSimulated: true,
11171 originalEvent: {}
11172 }
11173 );
11174 if ( bubble ) {
11175 jQuery.event.trigger( e, null, elem );
11176 } else {
11177 jQuery.event.dispatch.call( elem, e );
11178 }
11179 if ( e.isDefaultPrevented() ) {
11180 event.preventDefault();
11181 }
11182 }
11183};
11184
11185jQuery.removeEvent = function( elem, type, handle ) {
11186 if ( elem.removeEventListener ) {
11187 elem.removeEventListener( type, handle, false );
11188 }
11189};
11190
11191jQuery.Event = function( src, props ) {
11192 // Allow instantiation without the 'new' keyword
11193 if ( !(this instanceof jQuery.Event) ) {
11194 return new jQuery.Event( src, props );
11195 }
11196
11197 // Event object
11198 if ( src && src.type ) {
11199 this.originalEvent = src;
11200 this.type = src.type;
11201
11202 // Events bubbling up the document may have been marked as prevented
11203 // by a handler lower down the tree; reflect the correct value.
11204 this.isDefaultPrevented = src.defaultPrevented ||
11205 src.defaultPrevented === undefined &&
11206 // Support: Android < 4.0
11207 src.returnValue === false ?
11208 returnTrue :
11209 returnFalse;
11210
11211 // Event type
11212 } else {
11213 this.type = src;
11214 }
11215
11216 // Put explicitly provided properties onto the event object
11217 if ( props ) {
11218 jQuery.extend( this, props );
11219 }
11220
11221 // Create a timestamp if incoming event doesn't have one
11222 this.timeStamp = src && src.timeStamp || jQuery.now();
11223
11224 // Mark it as fixed
11225 this[ jQuery.expando ] = true;
11226};
11227
11228// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
11229// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
11230jQuery.Event.prototype = {
11231 isDefaultPrevented: returnFalse,
11232 isPropagationStopped: returnFalse,
11233 isImmediatePropagationStopped: returnFalse,
11234
11235 preventDefault: function() {
11236 var e = this.originalEvent;
11237
11238 this.isDefaultPrevented = returnTrue;
11239
11240 if ( e && e.preventDefault ) {
11241 e.preventDefault();
11242 }
11243 },
11244 stopPropagation: function() {
11245 var e = this.originalEvent;
11246
11247 this.isPropagationStopped = returnTrue;
11248
11249 if ( e && e.stopPropagation ) {
11250 e.stopPropagation();
11251 }
11252 },
11253 stopImmediatePropagation: function() {
11254 var e = this.originalEvent;
11255
11256 this.isImmediatePropagationStopped = returnTrue;
11257
11258 if ( e && e.stopImmediatePropagation ) {
11259 e.stopImmediatePropagation();
11260 }
11261
11262 this.stopPropagation();
11263 }
11264};
11265
11266// Create mouseenter/leave events using mouseover/out and event-time checks
11267// Support: Chrome 15+
11268jQuery.each({
11269 mouseenter: "mouseover",
11270 mouseleave: "mouseout",
11271 pointerenter: "pointerover",
11272 pointerleave: "pointerout"
11273}, function( orig, fix ) {
11274 jQuery.event.special[ orig ] = {
11275 delegateType: fix,
11276 bindType: fix,
11277
11278 handle: function( event ) {
11279 var ret,
11280 target = this,
11281 related = event.relatedTarget,
11282 handleObj = event.handleObj;
11283
11284 // For mousenter/leave call the handler if related is outside the target.
11285 // NB: No relatedTarget if the mouse left/entered the browser window
11286 if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
11287 event.type = handleObj.origType;
11288 ret = handleObj.handler.apply( this, arguments );
11289 event.type = fix;
11290 }
11291 return ret;
11292 }
11293 };
11294});
11295
11296// Create "bubbling" focus and blur events
11297// Support: Firefox, Chrome, Safari
11298if ( !support.focusinBubbles ) {
11299 jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
11300
11301 // Attach a single capturing handler on the document while someone wants focusin/focusout
11302 var handler = function( event ) {
11303 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
11304 };
11305
11306 jQuery.event.special[ fix ] = {
11307 setup: function() {
11308 var doc = this.ownerDocument || this,
11309 attaches = data_priv.access( doc, fix );
11310
11311 if ( !attaches ) {
11312 doc.addEventListener( orig, handler, true );
11313 }
11314 data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
11315 },
11316 teardown: function() {
11317 var doc = this.ownerDocument || this,
11318 attaches = data_priv.access( doc, fix ) - 1;
11319
11320 if ( !attaches ) {
11321 doc.removeEventListener( orig, handler, true );
11322 data_priv.remove( doc, fix );
11323
11324 } else {
11325 data_priv.access( doc, fix, attaches );
11326 }
11327 }
11328 };
11329 });
11330}
11331
11332jQuery.fn.extend({
11333
11334 on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
11335 var origFn, type;
11336
11337 // Types can be a map of types/handlers
11338 if ( typeof types === "object" ) {
11339 // ( types-Object, selector, data )
11340 if ( typeof selector !== "string" ) {
11341 // ( types-Object, data )
11342 data = data || selector;
11343 selector = undefined;
11344 }
11345 for ( type in types ) {
11346 this.on( type, selector, data, types[ type ], one );
11347 }
11348 return this;
11349 }
11350
11351 if ( data == null && fn == null ) {
11352 // ( types, fn )
11353 fn = selector;
11354 data = selector = undefined;
11355 } else if ( fn == null ) {
11356 if ( typeof selector === "string" ) {
11357 // ( types, selector, fn )
11358 fn = data;
11359 data = undefined;
11360 } else {
11361 // ( types, data, fn )
11362 fn = data;
11363 data = selector;
11364 selector = undefined;
11365 }
11366 }
11367 if ( fn === false ) {
11368 fn = returnFalse;
11369 } else if ( !fn ) {
11370 return this;
11371 }
11372
11373 if ( one === 1 ) {
11374 origFn = fn;
11375 fn = function( event ) {
11376 // Can use an empty set, since event contains the info
11377 jQuery().off( event );
11378 return origFn.apply( this, arguments );
11379 };
11380 // Use same guid so caller can remove using origFn
11381 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
11382 }
11383 return this.each( function() {
11384 jQuery.event.add( this, types, fn, data, selector );
11385 });
11386 },
11387 one: function( types, selector, data, fn ) {
11388 return this.on( types, selector, data, fn, 1 );
11389 },
11390 off: function( types, selector, fn ) {
11391 var handleObj, type;
11392 if ( types && types.preventDefault && types.handleObj ) {
11393 // ( event ) dispatched jQuery.Event
11394 handleObj = types.handleObj;
11395 jQuery( types.delegateTarget ).off(
11396 handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
11397 handleObj.selector,
11398 handleObj.handler
11399 );
11400 return this;
11401 }
11402 if ( typeof types === "object" ) {
11403 // ( types-object [, selector] )
11404 for ( type in types ) {
11405 this.off( type, selector, types[ type ] );
11406 }
11407 return this;
11408 }
11409 if ( selector === false || typeof selector === "function" ) {
11410 // ( types [, fn] )
11411 fn = selector;
11412 selector = undefined;
11413 }
11414 if ( fn === false ) {
11415 fn = returnFalse;
11416 }
11417 return this.each(function() {
11418 jQuery.event.remove( this, types, fn, selector );
11419 });
11420 },
11421
11422 trigger: function( type, data ) {
11423 return this.each(function() {
11424 jQuery.event.trigger( type, data, this );
11425 });
11426 },
11427 triggerHandler: function( type, data ) {
11428 var elem = this[0];
11429 if ( elem ) {
11430 return jQuery.event.trigger( type, data, elem, true );
11431 }
11432 }
11433});
11434
11435
11436var
11437 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
11438 rtagName = /<([\w:]+)/,
11439 rhtml = /<|&#?\w+;/,
11440 rnoInnerhtml = /<(?:script|style|link)/i,
11441 // checked="checked" or checked
11442 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
11443 rscriptType = /^$|\/(?:java|ecma)script/i,
11444 rscriptTypeMasked = /^true\/(.*)/,
11445 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
11446
11447 // We have to close these tags to support XHTML (#13200)
11448 wrapMap = {
11449
11450 // Support: IE 9
11451 option: [ 1, "<select multiple='multiple'>", "</select>" ],
11452
11453 thead: [ 1, "<table>", "</table>" ],
11454 col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
11455 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
11456 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
11457
11458 _default: [ 0, "", "" ]
11459 };
11460
11461// Support: IE 9
11462wrapMap.optgroup = wrapMap.option;
11463
11464wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
11465wrapMap.th = wrapMap.td;
11466
11467// Support: 1.x compatibility
11468// Manipulating tables requires a tbody
11469function manipulationTarget( elem, content ) {
11470 return jQuery.nodeName( elem, "table" ) &&
11471 jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
11472
11473 elem.getElementsByTagName("tbody")[0] ||
11474 elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
11475 elem;
11476}
11477
11478// Replace/restore the type attribute of script elements for safe DOM manipulation
11479function disableScript( elem ) {
11480 elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
11481 return elem;
11482}
11483function restoreScript( elem ) {
11484 var match = rscriptTypeMasked.exec( elem.type );
11485
11486 if ( match ) {
11487 elem.type = match[ 1 ];
11488 } else {
11489 elem.removeAttribute("type");
11490 }
11491
11492 return elem;
11493}
11494
11495// Mark scripts as having already been evaluated
11496function setGlobalEval( elems, refElements ) {
11497 var i = 0,
11498 l = elems.length;
11499
11500 for ( ; i < l; i++ ) {
11501 data_priv.set(
11502 elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
11503 );
11504 }
11505}
11506
11507function cloneCopyEvent( src, dest ) {
11508 var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
11509
11510 if ( dest.nodeType !== 1 ) {
11511 return;
11512 }
11513
11514 // 1. Copy private data: events, handlers, etc.
11515 if ( data_priv.hasData( src ) ) {
11516 pdataOld = data_priv.access( src );
11517 pdataCur = data_priv.set( dest, pdataOld );
11518 events = pdataOld.events;
11519
11520 if ( events ) {
11521 delete pdataCur.handle;
11522 pdataCur.events = {};
11523
11524 for ( type in events ) {
11525 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
11526 jQuery.event.add( dest, type, events[ type ][ i ] );
11527 }
11528 }
11529 }
11530 }
11531
11532 // 2. Copy user data
11533 if ( data_user.hasData( src ) ) {
11534 udataOld = data_user.access( src );
11535 udataCur = jQuery.extend( {}, udataOld );
11536
11537 data_user.set( dest, udataCur );
11538 }
11539}
11540
11541function getAll( context, tag ) {
11542 var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
11543 context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
11544 [];
11545
11546 return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
11547 jQuery.merge( [ context ], ret ) :
11548 ret;
11549}
11550
11551// Support: IE >= 9
11552function fixInput( src, dest ) {
11553 var nodeName = dest.nodeName.toLowerCase();
11554
11555 // Fails to persist the checked state of a cloned checkbox or radio button.
11556 if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
11557 dest.checked = src.checked;
11558
11559 // Fails to return the selected option to the default selected state when cloning options
11560 } else if ( nodeName === "input" || nodeName === "textarea" ) {
11561 dest.defaultValue = src.defaultValue;
11562 }
11563}
11564
11565jQuery.extend({
11566 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
11567 var i, l, srcElements, destElements,
11568 clone = elem.cloneNode( true ),
11569 inPage = jQuery.contains( elem.ownerDocument, elem );
11570
11571 // Support: IE >= 9
11572 // Fix Cloning issues
11573 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
11574 !jQuery.isXMLDoc( elem ) ) {
11575
11576 // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
11577 destElements = getAll( clone );
11578 srcElements = getAll( elem );
11579
11580 for ( i = 0, l = srcElements.length; i < l; i++ ) {
11581 fixInput( srcElements[ i ], destElements[ i ] );
11582 }
11583 }
11584
11585 // Copy the events from the original to the clone
11586 if ( dataAndEvents ) {
11587 if ( deepDataAndEvents ) {
11588 srcElements = srcElements || getAll( elem );
11589 destElements = destElements || getAll( clone );
11590
11591 for ( i = 0, l = srcElements.length; i < l; i++ ) {
11592 cloneCopyEvent( srcElements[ i ], destElements[ i ] );
11593 }
11594 } else {
11595 cloneCopyEvent( elem, clone );
11596 }
11597 }
11598
11599 // Preserve script evaluation history
11600 destElements = getAll( clone, "script" );
11601 if ( destElements.length > 0 ) {
11602 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
11603 }
11604
11605 // Return the cloned set
11606 return clone;
11607 },
11608
11609 buildFragment: function( elems, context, scripts, selection ) {
11610 var elem, tmp, tag, wrap, contains, j,
11611 fragment = context.createDocumentFragment(),
11612 nodes = [],
11613 i = 0,
11614 l = elems.length;
11615
11616 for ( ; i < l; i++ ) {
11617 elem = elems[ i ];
11618
11619 if ( elem || elem === 0 ) {
11620
11621 // Add nodes directly
11622 if ( jQuery.type( elem ) === "object" ) {
11623 // Support: QtWebKit
11624 // jQuery.merge because push.apply(_, arraylike) throws
11625 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
11626
11627 // Convert non-html into a text node
11628 } else if ( !rhtml.test( elem ) ) {
11629 nodes.push( context.createTextNode( elem ) );
11630
11631 // Convert html into DOM nodes
11632 } else {
11633 tmp = tmp || fragment.appendChild( context.createElement("div") );
11634
11635 // Deserialize a standard representation
11636 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
11637 wrap = wrapMap[ tag ] || wrapMap._default;
11638 tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
11639
11640 // Descend through wrappers to the right content
11641 j = wrap[ 0 ];
11642 while ( j-- ) {
11643 tmp = tmp.lastChild;
11644 }
11645
11646 // Support: QtWebKit
11647 // jQuery.merge because push.apply(_, arraylike) throws
11648 jQuery.merge( nodes, tmp.childNodes );
11649
11650 // Remember the top-level container
11651 tmp = fragment.firstChild;
11652
11653 // Fixes #12346
11654 // Support: Webkit, IE
11655 tmp.textContent = "";
11656 }
11657 }
11658 }
11659
11660 // Remove wrapper from fragment
11661 fragment.textContent = "";
11662
11663 i = 0;
11664 while ( (elem = nodes[ i++ ]) ) {
11665
11666 // #4087 - If origin and destination elements are the same, and this is
11667 // that element, do not do anything
11668 if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
11669 continue;
11670 }
11671
11672 contains = jQuery.contains( elem.ownerDocument, elem );
11673
11674 // Append to fragment
11675 tmp = getAll( fragment.appendChild( elem ), "script" );
11676
11677 // Preserve script evaluation history
11678 if ( contains ) {
11679 setGlobalEval( tmp );
11680 }
11681
11682 // Capture executables
11683 if ( scripts ) {
11684 j = 0;
11685 while ( (elem = tmp[ j++ ]) ) {
11686 if ( rscriptType.test( elem.type || "" ) ) {
11687 scripts.push( elem );
11688 }
11689 }
11690 }
11691 }
11692
11693 return fragment;
11694 },
11695
11696 cleanData: function( elems ) {
11697 var data, elem, type, key,
11698 special = jQuery.event.special,
11699 i = 0;
11700
11701 for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
11702 if ( jQuery.acceptData( elem ) ) {
11703 key = elem[ data_priv.expando ];
11704
11705 if ( key && (data = data_priv.cache[ key ]) ) {
11706 if ( data.events ) {
11707 for ( type in data.events ) {
11708 if ( special[ type ] ) {
11709 jQuery.event.remove( elem, type );
11710
11711 // This is a shortcut to avoid jQuery.event.remove's overhead
11712 } else {
11713 jQuery.removeEvent( elem, type, data.handle );
11714 }
11715 }
11716 }
11717 if ( data_priv.cache[ key ] ) {
11718 // Discard any remaining `private` data
11719 delete data_priv.cache[ key ];
11720 }
11721 }
11722 }
11723 // Discard any remaining `user` data
11724 delete data_user.cache[ elem[ data_user.expando ] ];
11725 }
11726 }
11727});
11728
11729jQuery.fn.extend({
11730 text: function( value ) {
11731 return access( this, function( value ) {
11732 return value === undefined ?
11733 jQuery.text( this ) :
11734 this.empty().each(function() {
11735 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
11736 this.textContent = value;
11737 }
11738 });
11739 }, null, value, arguments.length );
11740 },
11741
11742 append: function() {
11743 return this.domManip( arguments, function( elem ) {
11744 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
11745 var target = manipulationTarget( this, elem );
11746 target.appendChild( elem );
11747 }
11748 });
11749 },
11750
11751 prepend: function() {
11752 return this.domManip( arguments, function( elem ) {
11753 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
11754 var target = manipulationTarget( this, elem );
11755 target.insertBefore( elem, target.firstChild );
11756 }
11757 });
11758 },
11759
11760 before: function() {
11761 return this.domManip( arguments, function( elem ) {
11762 if ( this.parentNode ) {
11763 this.parentNode.insertBefore( elem, this );
11764 }
11765 });
11766 },
11767
11768 after: function() {
11769 return this.domManip( arguments, function( elem ) {
11770 if ( this.parentNode ) {
11771 this.parentNode.insertBefore( elem, this.nextSibling );
11772 }
11773 });
11774 },
11775
11776 remove: function( selector, keepData /* Internal Use Only */ ) {
11777 var elem,
11778 elems = selector ? jQuery.filter( selector, this ) : this,
11779 i = 0;
11780
11781 for ( ; (elem = elems[i]) != null; i++ ) {
11782 if ( !keepData && elem.nodeType === 1 ) {
11783 jQuery.cleanData( getAll( elem ) );
11784 }
11785
11786 if ( elem.parentNode ) {
11787 if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
11788 setGlobalEval( getAll( elem, "script" ) );
11789 }
11790 elem.parentNode.removeChild( elem );
11791 }
11792 }
11793
11794 return this;
11795 },
11796
11797 empty: function() {
11798 var elem,
11799 i = 0;
11800
11801 for ( ; (elem = this[i]) != null; i++ ) {
11802 if ( elem.nodeType === 1 ) {
11803
11804 // Prevent memory leaks
11805 jQuery.cleanData( getAll( elem, false ) );
11806
11807 // Remove any remaining nodes
11808 elem.textContent = "";
11809 }
11810 }
11811
11812 return this;
11813 },
11814
11815 clone: function( dataAndEvents, deepDataAndEvents ) {
11816 dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
11817 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
11818
11819 return this.map(function() {
11820 return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
11821 });
11822 },
11823
11824 html: function( value ) {
11825 return access( this, function( value ) {
11826 var elem = this[ 0 ] || {},
11827 i = 0,
11828 l = this.length;
11829
11830 if ( value === undefined && elem.nodeType === 1 ) {
11831 return elem.innerHTML;
11832 }
11833
11834 // See if we can take a shortcut and just use innerHTML
11835 if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
11836 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
11837
11838 value = value.replace( rxhtmlTag, "<$1></$2>" );
11839
11840 try {
11841 for ( ; i < l; i++ ) {
11842 elem = this[ i ] || {};
11843
11844 // Remove element nodes and prevent memory leaks
11845 if ( elem.nodeType === 1 ) {
11846 jQuery.cleanData( getAll( elem, false ) );
11847 elem.innerHTML = value;
11848 }
11849 }
11850
11851 elem = 0;
11852
11853 // If using innerHTML throws an exception, use the fallback method
11854 } catch( e ) {}
11855 }
11856
11857 if ( elem ) {
11858 this.empty().append( value );
11859 }
11860 }, null, value, arguments.length );
11861 },
11862
11863 replaceWith: function() {
11864 var arg = arguments[ 0 ];
11865
11866 // Make the changes, replacing each context element with the new content
11867 this.domManip( arguments, function( elem ) {
11868 arg = this.parentNode;
11869
11870 jQuery.cleanData( getAll( this ) );
11871
11872 if ( arg ) {
11873 arg.replaceChild( elem, this );
11874 }
11875 });
11876
11877 // Force removal if there was no new content (e.g., from empty arguments)
11878 return arg && (arg.length || arg.nodeType) ? this : this.remove();
11879 },
11880
11881 detach: function( selector ) {
11882 return this.remove( selector, true );
11883 },
11884
11885 domManip: function( args, callback ) {
11886
11887 // Flatten any nested arrays
11888 args = concat.apply( [], args );
11889
11890 var fragment, first, scripts, hasScripts, node, doc,
11891 i = 0,
11892 l = this.length,
11893 set = this,
11894 iNoClone = l - 1,
11895 value = args[ 0 ],
11896 isFunction = jQuery.isFunction( value );
11897
11898 // We can't cloneNode fragments that contain checked, in WebKit
11899 if ( isFunction ||
11900 ( l > 1 && typeof value === "string" &&
11901 !support.checkClone && rchecked.test( value ) ) ) {
11902 return this.each(function( index ) {
11903 var self = set.eq( index );
11904 if ( isFunction ) {
11905 args[ 0 ] = value.call( this, index, self.html() );
11906 }
11907 self.domManip( args, callback );
11908 });
11909 }
11910
11911 if ( l ) {
11912 fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
11913 first = fragment.firstChild;
11914
11915 if ( fragment.childNodes.length === 1 ) {
11916 fragment = first;
11917 }
11918
11919 if ( first ) {
11920 scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
11921 hasScripts = scripts.length;
11922
11923 // Use the original fragment for the last item instead of the first because it can end up
11924 // being emptied incorrectly in certain situations (#8070).
11925 for ( ; i < l; i++ ) {
11926 node = fragment;
11927
11928 if ( i !== iNoClone ) {
11929 node = jQuery.clone( node, true, true );
11930
11931 // Keep references to cloned scripts for later restoration
11932 if ( hasScripts ) {
11933 // Support: QtWebKit
11934 // jQuery.merge because push.apply(_, arraylike) throws
11935 jQuery.merge( scripts, getAll( node, "script" ) );
11936 }
11937 }
11938
11939 callback.call( this[ i ], node, i );
11940 }
11941
11942 if ( hasScripts ) {
11943 doc = scripts[ scripts.length - 1 ].ownerDocument;
11944
11945 // Reenable scripts
11946 jQuery.map( scripts, restoreScript );
11947
11948 // Evaluate executable scripts on first document insertion
11949 for ( i = 0; i < hasScripts; i++ ) {
11950 node = scripts[ i ];
11951 if ( rscriptType.test( node.type || "" ) &&
11952 !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
11953
11954 if ( node.src ) {
11955 // Optional AJAX dependency, but won't run scripts if not present
11956 if ( jQuery._evalUrl ) {
11957 jQuery._evalUrl( node.src );
11958 }
11959 } else {
11960 jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
11961 }
11962 }
11963 }
11964 }
11965 }
11966 }
11967
11968 return this;
11969 }
11970});
11971
11972jQuery.each({
11973 appendTo: "append",
11974 prependTo: "prepend",
11975 insertBefore: "before",
11976 insertAfter: "after",
11977 replaceAll: "replaceWith"
11978}, function( name, original ) {
11979 jQuery.fn[ name ] = function( selector ) {
11980 var elems,
11981 ret = [],
11982 insert = jQuery( selector ),
11983 last = insert.length - 1,
11984 i = 0;
11985
11986 for ( ; i <= last; i++ ) {
11987 elems = i === last ? this : this.clone( true );
11988 jQuery( insert[ i ] )[ original ]( elems );
11989
11990 // Support: QtWebKit
11991 // .get() because push.apply(_, arraylike) throws
11992 push.apply( ret, elems.get() );
11993 }
11994
11995 return this.pushStack( ret );
11996 };
11997});
11998
11999
12000var iframe,
12001 elemdisplay = {};
12002
12003/**
12004 * Retrieve the actual display of a element
12005 * @param {String} name nodeName of the element
12006 * @param {Object} doc Document object
12007 */
12008// Called only from within defaultDisplay
12009function actualDisplay( name, doc ) {
12010 var style,
12011 elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
12012
12013 // getDefaultComputedStyle might be reliably used only on attached element
12014 display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
12015
12016 // Use of this method is a temporary fix (more like optmization) until something better comes along,
12017 // since it was removed from specification and supported only in FF
12018 style.display : jQuery.css( elem[ 0 ], "display" );
12019
12020 // We don't have any data stored on the element,
12021 // so use "detach" method as fast way to get rid of the element
12022 elem.detach();
12023
12024 return display;
12025}
12026
12027/**
12028 * Try to determine the default display value of an element
12029 * @param {String} nodeName
12030 */
12031function defaultDisplay( nodeName ) {
12032 var doc = document,
12033 display = elemdisplay[ nodeName ];
12034
12035 if ( !display ) {
12036 display = actualDisplay( nodeName, doc );
12037
12038 // If the simple way fails, read from inside an iframe
12039 if ( display === "none" || !display ) {
12040
12041 // Use the already-created iframe if possible
12042 iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
12043
12044 // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
12045 doc = iframe[ 0 ].contentDocument;
12046
12047 // Support: IE
12048 doc.write();
12049 doc.close();
12050
12051 display = actualDisplay( nodeName, doc );
12052 iframe.detach();
12053 }
12054
12055 // Store the correct default display
12056 elemdisplay[ nodeName ] = display;
12057 }
12058
12059 return display;
12060}
12061var rmargin = (/^margin/);
12062
12063var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
12064
12065var getStyles = function( elem ) {
12066 return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
12067 };
12068
12069
12070
12071function curCSS( elem, name, computed ) {
12072 var width, minWidth, maxWidth, ret,
12073 style = elem.style;
12074
12075 computed = computed || getStyles( elem );
12076
12077 // Support: IE9
12078 // getPropertyValue is only needed for .css('filter') in IE9, see #12537
12079 if ( computed ) {
12080 ret = computed.getPropertyValue( name ) || computed[ name ];
12081 }
12082
12083 if ( computed ) {
12084
12085 if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
12086 ret = jQuery.style( elem, name );
12087 }
12088
12089 // Support: iOS < 6
12090 // A tribute to the "awesome hack by Dean Edwards"
12091 // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
12092 // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
12093 if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
12094
12095 // Remember the original values
12096 width = style.width;
12097 minWidth = style.minWidth;
12098 maxWidth = style.maxWidth;
12099
12100 // Put in the new values to get a computed value out
12101 style.minWidth = style.maxWidth = style.width = ret;
12102 ret = computed.width;
12103
12104 // Revert the changed values
12105 style.width = width;
12106 style.minWidth = minWidth;
12107 style.maxWidth = maxWidth;
12108 }
12109 }
12110
12111 return ret !== undefined ?
12112 // Support: IE
12113 // IE returns zIndex value as an integer.
12114 ret + "" :
12115 ret;
12116}
12117
12118
12119function addGetHookIf( conditionFn, hookFn ) {
12120 // Define the hook, we'll check on the first run if it's really needed.
12121 return {
12122 get: function() {
12123 if ( conditionFn() ) {
12124 // Hook not needed (or it's not possible to use it due to missing dependency),
12125 // remove it.
12126 // Since there are no other hooks for marginRight, remove the whole object.
12127 delete this.get;
12128 return;
12129 }
12130
12131 // Hook needed; redefine it so that the support test is not executed again.
12132
12133 return (this.get = hookFn).apply( this, arguments );
12134 }
12135 };
12136}
12137
12138
12139(function() {
12140 var pixelPositionVal, boxSizingReliableVal,
12141 docElem = document.documentElement,
12142 container = document.createElement( "div" ),
12143 div = document.createElement( "div" );
12144
12145 if ( !div.style ) {
12146 return;
12147 }
12148
12149 div.style.backgroundClip = "content-box";
12150 div.cloneNode( true ).style.backgroundClip = "";
12151 support.clearCloneStyle = div.style.backgroundClip === "content-box";
12152
12153 container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
12154 "position:absolute";
12155 container.appendChild( div );
12156
12157 // Executing both pixelPosition & boxSizingReliable tests require only one layout
12158 // so they're executed at the same time to save the second computation.
12159 function computePixelPositionAndBoxSizingReliable() {
12160 div.style.cssText =
12161 // Support: Firefox<29, Android 2.3
12162 // Vendor-prefix box-sizing
12163 "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
12164 "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
12165 "border:1px;padding:1px;width:4px;position:absolute";
12166 div.innerHTML = "";
12167 docElem.appendChild( container );
12168
12169 var divStyle = window.getComputedStyle( div, null );
12170 pixelPositionVal = divStyle.top !== "1%";
12171 boxSizingReliableVal = divStyle.width === "4px";
12172
12173 docElem.removeChild( container );
12174 }
12175
12176 // Support: node.js jsdom
12177 // Don't assume that getComputedStyle is a property of the global object
12178 if ( window.getComputedStyle ) {
12179 jQuery.extend( support, {
12180 pixelPosition: function() {
12181 // This test is executed only once but we still do memoizing
12182 // since we can use the boxSizingReliable pre-computing.
12183 // No need to check if the test was already performed, though.
12184 computePixelPositionAndBoxSizingReliable();
12185 return pixelPositionVal;
12186 },
12187 boxSizingReliable: function() {
12188 if ( boxSizingReliableVal == null ) {
12189 computePixelPositionAndBoxSizingReliable();
12190 }
12191 return boxSizingReliableVal;
12192 },
12193 reliableMarginRight: function() {
12194 // Support: Android 2.3
12195 // Check if div with explicit width and no margin-right incorrectly
12196 // gets computed margin-right based on width of container. (#3333)
12197 // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
12198 // This support function is only executed once so no memoizing is needed.
12199 var ret,
12200 marginDiv = div.appendChild( document.createElement( "div" ) );
12201
12202 // Reset CSS: box-sizing; display; margin; border; padding
12203 marginDiv.style.cssText = div.style.cssText =
12204 // Support: Firefox<29, Android 2.3
12205 // Vendor-prefix box-sizing
12206 "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
12207 "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
12208 marginDiv.style.marginRight = marginDiv.style.width = "0";
12209 div.style.width = "1px";
12210 docElem.appendChild( container );
12211
12212 ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
12213
12214 docElem.removeChild( container );
12215
12216 return ret;
12217 }
12218 });
12219 }
12220})();
12221
12222
12223// A method for quickly swapping in/out CSS properties to get correct calculations.
12224jQuery.swap = function( elem, options, callback, args ) {
12225 var ret, name,
12226 old = {};
12227
12228 // Remember the old values, and insert the new ones
12229 for ( name in options ) {
12230 old[ name ] = elem.style[ name ];
12231 elem.style[ name ] = options[ name ];
12232 }
12233
12234 ret = callback.apply( elem, args || [] );
12235
12236 // Revert the old values
12237 for ( name in options ) {
12238 elem.style[ name ] = old[ name ];
12239 }
12240
12241 return ret;
12242};
12243
12244
12245var
12246 // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
12247 // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
12248 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
12249 rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
12250 rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
12251
12252 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
12253 cssNormalTransform = {
12254 letterSpacing: "0",
12255 fontWeight: "400"
12256 },
12257
12258 cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
12259
12260// return a css property mapped to a potentially vendor prefixed property
12261function vendorPropName( style, name ) {
12262
12263 // shortcut for names that are not vendor prefixed
12264 if ( name in style ) {
12265 return name;
12266 }
12267
12268 // check for vendor prefixed names
12269 var capName = name[0].toUpperCase() + name.slice(1),
12270 origName = name,
12271 i = cssPrefixes.length;
12272
12273 while ( i-- ) {
12274 name = cssPrefixes[ i ] + capName;
12275 if ( name in style ) {
12276 return name;
12277 }
12278 }
12279
12280 return origName;
12281}
12282
12283function setPositiveNumber( elem, value, subtract ) {
12284 var matches = rnumsplit.exec( value );
12285 return matches ?
12286 // Guard against undefined "subtract", e.g., when used as in cssHooks
12287 Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
12288 value;
12289}
12290
12291function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
12292 var i = extra === ( isBorderBox ? "border" : "content" ) ?
12293 // If we already have the right measurement, avoid augmentation
12294 4 :
12295 // Otherwise initialize for horizontal or vertical properties
12296 name === "width" ? 1 : 0,
12297
12298 val = 0;
12299
12300 for ( ; i < 4; i += 2 ) {
12301 // both box models exclude margin, so add it if we want it
12302 if ( extra === "margin" ) {
12303 val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
12304 }
12305
12306 if ( isBorderBox ) {
12307 // border-box includes padding, so remove it if we want content
12308 if ( extra === "content" ) {
12309 val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
12310 }
12311
12312 // at this point, extra isn't border nor margin, so remove border
12313 if ( extra !== "margin" ) {
12314 val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
12315 }
12316 } else {
12317 // at this point, extra isn't content, so add padding
12318 val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
12319
12320 // at this point, extra isn't content nor padding, so add border
12321 if ( extra !== "padding" ) {
12322 val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
12323 }
12324 }
12325 }
12326
12327 return val;
12328}
12329
12330function getWidthOrHeight( elem, name, extra ) {
361 12331
362 <!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>--> 12332 // Start with offset property, which is equivalent to the border-box value
12333 var valueIsBorderBox = true,
12334 val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
12335 styles = getStyles( elem ),
12336 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
12337
12338 // some non-html elements return undefined for offsetWidth, so check for null/undefined
12339 // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
12340 // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
12341 if ( val <= 0 || val == null ) {
12342 // Fall back to computed then uncomputed css if necessary
12343 val = curCSS( elem, name, styles );
12344 if ( val < 0 || val == null ) {
12345 val = elem.style[ name ];
12346 }
12347
12348 // Computed unit is not pixels. Stop here and return.
12349 if ( rnumnonpx.test(val) ) {
12350 return val;
12351 }
12352
12353 // we need the check for style in case a browser which returns unreliable values
12354 // for getComputedStyle silently falls back to the reliable elem.style
12355 valueIsBorderBox = isBorderBox &&
12356 ( support.boxSizingReliable() || val === elem.style[ name ] );
12357
12358 // Normalize "", auto, and prepare for extra
12359 val = parseFloat( val ) || 0;
12360 }
12361
12362 // use the active box-sizing model to add/subtract irrelevant styles
12363 return ( val +
12364 augmentWidthOrHeight(
12365 elem,
12366 name,
12367 extra || ( isBorderBox ? "border" : "content" ),
12368 valueIsBorderBox,
12369 styles
12370 )
12371 ) + "px";
12372}
12373
12374function showHide( elements, show ) {
12375 var display, elem, hidden,
12376 values = [],
12377 index = 0,
12378 length = elements.length;
12379
12380 for ( ; index < length; index++ ) {
12381 elem = elements[ index ];
12382 if ( !elem.style ) {
12383 continue;
12384 }
12385
12386 values[ index ] = data_priv.get( elem, "olddisplay" );
12387 display = elem.style.display;
12388 if ( show ) {
12389 // Reset the inline display of this element to learn if it is
12390 // being hidden by cascaded rules or not
12391 if ( !values[ index ] && display === "none" ) {
12392 elem.style.display = "";
12393 }
12394
12395 // Set elements which have been overridden with display: none
12396 // in a stylesheet to whatever the default browser style is
12397 // for such an element
12398 if ( elem.style.display === "" && isHidden( elem ) ) {
12399 values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
12400 }
12401 } else {
12402 hidden = isHidden( elem );
12403
12404 if ( display !== "none" || !hidden ) {
12405 data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
12406 }
12407 }
12408 }
12409
12410 // Set the display of most of the elements in a second loop
12411 // to avoid the constant reflow
12412 for ( index = 0; index < length; index++ ) {
12413 elem = elements[ index ];
12414 if ( !elem.style ) {
12415 continue;
12416 }
12417 if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
12418 elem.style.display = show ? values[ index ] || "" : "none";
12419 }
12420 }
12421
12422 return elements;
12423}
12424
12425jQuery.extend({
12426 // Add in style property hooks for overriding the default
12427 // behavior of getting and setting a style property
12428 cssHooks: {
12429 opacity: {
12430 get: function( elem, computed ) {
12431 if ( computed ) {
12432 // We should always get a number back from opacity
12433 var ret = curCSS( elem, "opacity" );
12434 return ret === "" ? "1" : ret;
12435 }
12436 }
12437 }
12438 },
12439
12440 // Don't automatically add "px" to these possibly-unitless properties
12441 cssNumber: {
12442 "columnCount": true,
12443 "fillOpacity": true,
12444 "flexGrow": true,
12445 "flexShrink": true,
12446 "fontWeight": true,
12447 "lineHeight": true,
12448 "opacity": true,
12449 "order": true,
12450 "orphans": true,
12451 "widows": true,
12452 "zIndex": true,
12453 "zoom": true
12454 },
12455
12456 // Add in properties whose names you wish to fix before
12457 // setting or getting the value
12458 cssProps: {
12459 // normalize float css property
12460 "float": "cssFloat"
12461 },
12462
12463 // Get and set the style property on a DOM Node
12464 style: function( elem, name, value, extra ) {
12465 // Don't set styles on text and comment nodes
12466 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
12467 return;
12468 }
12469
12470 // Make sure that we're working with the right name
12471 var ret, type, hooks,
12472 origName = jQuery.camelCase( name ),
12473 style = elem.style;
12474
12475 name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
12476
12477 // gets hook for the prefixed version
12478 // followed by the unprefixed version
12479 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
12480
12481 // Check if we're setting a value
12482 if ( value !== undefined ) {
12483 type = typeof value;
12484
12485 // convert relative number strings (+= or -=) to relative numbers. #7345
12486 if ( type === "string" && (ret = rrelNum.exec( value )) ) {
12487 value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
12488 // Fixes bug #9237
12489 type = "number";
12490 }
12491
12492 // Make sure that null and NaN values aren't set. See: #7116
12493 if ( value == null || value !== value ) {
12494 return;
12495 }
12496
12497 // If a number was passed in, add 'px' to the (except for certain CSS properties)
12498 if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
12499 value += "px";
12500 }
12501
12502 // Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
12503 // but it would mean to define eight (for every problematic property) identical functions
12504 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
12505 style[ name ] = "inherit";
12506 }
12507
12508 // If a hook was provided, use that value, otherwise just set the specified value
12509 if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
12510 style[ name ] = value;
12511 }
12512
12513 } else {
12514 // If a hook was provided get the non-computed value from there
12515 if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
12516 return ret;
12517 }
12518
12519 // Otherwise just get the value from the style object
12520 return style[ name ];
12521 }
12522 },
12523
12524 css: function( elem, name, extra, styles ) {
12525 var val, num, hooks,
12526 origName = jQuery.camelCase( name );
12527
12528 // Make sure that we're working with the right name
12529 name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
12530
12531 // gets hook for the prefixed version
12532 // followed by the unprefixed version
12533 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
12534
12535 // If a hook was provided get the computed value from there
12536 if ( hooks && "get" in hooks ) {
12537 val = hooks.get( elem, true, extra );
12538 }
12539
12540 // Otherwise, if a way to get the computed value exists, use that
12541 if ( val === undefined ) {
12542 val = curCSS( elem, name, styles );
12543 }
12544
12545 //convert "normal" to computed value
12546 if ( val === "normal" && name in cssNormalTransform ) {
12547 val = cssNormalTransform[ name ];
12548 }
12549
12550 // Return, converting to number if forced or a qualifier was provided and val looks numeric
12551 if ( extra === "" || extra ) {
12552 num = parseFloat( val );
12553 return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
12554 }
12555 return val;
12556 }
12557});
12558
12559jQuery.each([ "height", "width" ], function( i, name ) {
12560 jQuery.cssHooks[ name ] = {
12561 get: function( elem, computed, extra ) {
12562 if ( computed ) {
12563 // certain elements can have dimension info if we invisibly show them
12564 // however, it must have a current display style that would benefit from this
12565 return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
12566 jQuery.swap( elem, cssShow, function() {
12567 return getWidthOrHeight( elem, name, extra );
12568 }) :
12569 getWidthOrHeight( elem, name, extra );
12570 }
12571 },
12572
12573 set: function( elem, value, extra ) {
12574 var styles = extra && getStyles( elem );
12575 return setPositiveNumber( elem, value, extra ?
12576 augmentWidthOrHeight(
12577 elem,
12578 name,
12579 extra,
12580 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
12581 styles
12582 ) : 0
12583 );
12584 }
12585 };
12586});
12587
12588// Support: Android 2.3
12589jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
12590 function( elem, computed ) {
12591 if ( computed ) {
12592 // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
12593 // Work around by temporarily setting element display to inline-block
12594 return jQuery.swap( elem, { "display": "inline-block" },
12595 curCSS, [ elem, "marginRight" ] );
12596 }
12597 }
12598);
12599
12600// These hooks are used by animate to expand properties
12601jQuery.each({
12602 margin: "",
12603 padding: "",
12604 border: "Width"
12605}, function( prefix, suffix ) {
12606 jQuery.cssHooks[ prefix + suffix ] = {
12607 expand: function( value ) {
12608 var i = 0,
12609 expanded = {},
12610
12611 // assumes a single number if not a string
12612 parts = typeof value === "string" ? value.split(" ") : [ value ];
12613
12614 for ( ; i < 4; i++ ) {
12615 expanded[ prefix + cssExpand[ i ] + suffix ] =
12616 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
12617 }
12618
12619 return expanded;
12620 }
12621 };
12622
12623 if ( !rmargin.test( prefix ) ) {
12624 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
12625 }
12626});
12627
12628jQuery.fn.extend({
12629 css: function( name, value ) {
12630 return access( this, function( elem, name, value ) {
12631 var styles, len,
12632 map = {},
12633 i = 0;
12634
12635 if ( jQuery.isArray( name ) ) {
12636 styles = getStyles( elem );
12637 len = name.length;
12638
12639 for ( ; i < len; i++ ) {
12640 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
12641 }
12642
12643 return map;
12644 }
12645
12646 return value !== undefined ?
12647 jQuery.style( elem, name, value ) :
12648 jQuery.css( elem, name );
12649 }, name, value, arguments.length > 1 );
12650 },
12651 show: function() {
12652 return showHide( this, true );
12653 },
12654 hide: function() {
12655 return showHide( this );
12656 },
12657 toggle: function( state ) {
12658 if ( typeof state === "boolean" ) {
12659 return state ? this.show() : this.hide();
12660 }
12661
12662 return this.each(function() {
12663 if ( isHidden( this ) ) {
12664 jQuery( this ).show();
12665 } else {
12666 jQuery( this ).hide();
12667 }
12668 });
12669 }
12670});
12671
12672
12673function Tween( elem, options, prop, end, easing ) {
12674 return new Tween.prototype.init( elem, options, prop, end, easing );
12675}
12676jQuery.Tween = Tween;
12677
12678Tween.prototype = {
12679 constructor: Tween,
12680 init: function( elem, options, prop, end, easing, unit ) {
12681 this.elem = elem;
12682 this.prop = prop;
12683 this.easing = easing || "swing";
12684 this.options = options;
12685 this.start = this.now = this.cur();
12686 this.end = end;
12687 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
12688 },
12689 cur: function() {
12690 var hooks = Tween.propHooks[ this.prop ];
12691
12692 return hooks && hooks.get ?
12693 hooks.get( this ) :
12694 Tween.propHooks._default.get( this );
12695 },
12696 run: function( percent ) {
12697 var eased,
12698 hooks = Tween.propHooks[ this.prop ];
12699
12700 if ( this.options.duration ) {
12701 this.pos = eased = jQuery.easing[ this.easing ](
12702 percent, this.options.duration * percent, 0, 1, this.options.duration
12703 );
12704 } else {
12705 this.pos = eased = percent;
12706 }
12707 this.now = ( this.end - this.start ) * eased + this.start;
12708
12709 if ( this.options.step ) {
12710 this.options.step.call( this.elem, this.now, this );
12711 }
12712
12713 if ( hooks && hooks.set ) {
12714 hooks.set( this );
12715 } else {
12716 Tween.propHooks._default.set( this );
12717 }
12718 return this;
12719 }
12720};
12721
12722Tween.prototype.init.prototype = Tween.prototype;
12723
12724Tween.propHooks = {
12725 _default: {
12726 get: function( tween ) {
12727 var result;
12728
12729 if ( tween.elem[ tween.prop ] != null &&
12730 (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
12731 return tween.elem[ tween.prop ];
12732 }
12733
12734 // passing an empty string as a 3rd parameter to .css will automatically
12735 // attempt a parseFloat and fallback to a string if the parse fails
12736 // so, simple values such as "10px" are parsed to Float.
12737 // complex values such as "rotate(1rad)" are returned as is.
12738 result = jQuery.css( tween.elem, tween.prop, "" );
12739 // Empty strings, null, undefined and "auto" are converted to 0.
12740 return !result || result === "auto" ? 0 : result;
12741 },
12742 set: function( tween ) {
12743 // use step hook for back compat - use cssHook if its there - use .style if its
12744 // available and use plain properties where available
12745 if ( jQuery.fx.step[ tween.prop ] ) {
12746 jQuery.fx.step[ tween.prop ]( tween );
12747 } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
12748 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
12749 } else {
12750 tween.elem[ tween.prop ] = tween.now;
12751 }
12752 }
12753 }
12754};
12755
12756// Support: IE9
12757// Panic based approach to setting things on disconnected nodes
12758
12759Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
12760 set: function( tween ) {
12761 if ( tween.elem.nodeType && tween.elem.parentNode ) {
12762 tween.elem[ tween.prop ] = tween.now;
12763 }
12764 }
12765};
12766
12767jQuery.easing = {
12768 linear: function( p ) {
12769 return p;
12770 },
12771 swing: function( p ) {
12772 return 0.5 - Math.cos( p * Math.PI ) / 2;
12773 }
12774};
12775
12776jQuery.fx = Tween.prototype.init;
12777
12778// Back Compat <1.8 extension point
12779jQuery.fx.step = {};
12780
12781
12782
12783
12784var
12785 fxNow, timerId,
12786 rfxtypes = /^(?:toggle|show|hide)$/,
12787 rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
12788 rrun = /queueHooks$/,
12789 animationPrefilters = [ defaultPrefilter ],
12790 tweeners = {
12791 "*": [ function( prop, value ) {
12792 var tween = this.createTween( prop, value ),
12793 target = tween.cur(),
12794 parts = rfxnum.exec( value ),
12795 unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
12796
12797 // Starting value computation is required for potential unit mismatches
12798 start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
12799 rfxnum.exec( jQuery.css( tween.elem, prop ) ),
12800 scale = 1,
12801 maxIterations = 20;
12802
12803 if ( start && start[ 3 ] !== unit ) {
12804 // Trust units reported by jQuery.css
12805 unit = unit || start[ 3 ];
12806
12807 // Make sure we update the tween properties later on
12808 parts = parts || [];
12809
12810 // Iteratively approximate from a nonzero starting point
12811 start = +target || 1;
12812
12813 do {
12814 // If previous iteration zeroed out, double until we get *something*
12815 // Use a string for doubling factor so we don't accidentally see scale as unchanged below
12816 scale = scale || ".5";
12817
12818 // Adjust and apply
12819 start = start / scale;
12820 jQuery.style( tween.elem, prop, start + unit );
12821
12822 // Update scale, tolerating zero or NaN from tween.cur()
12823 // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
12824 } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
12825 }
12826
12827 // Update tween properties
12828 if ( parts ) {
12829 start = tween.start = +start || +target || 0;
12830 tween.unit = unit;
12831 // If a +=/-= token was provided, we're doing a relative animation
12832 tween.end = parts[ 1 ] ?
12833 start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
12834 +parts[ 2 ];
12835 }
12836
12837 return tween;
12838 } ]
12839 };
12840
12841// Animations created synchronously will run synchronously
12842function createFxNow() {
12843 setTimeout(function() {
12844 fxNow = undefined;
12845 });
12846 return ( fxNow = jQuery.now() );
12847}
12848
12849// Generate parameters to create a standard animation
12850function genFx( type, includeWidth ) {
12851 var which,
12852 i = 0,
12853 attrs = { height: type };
12854
12855 // if we include width, step value is 1 to do all cssExpand values,
12856 // if we don't include width, step value is 2 to skip over Left and Right
12857 includeWidth = includeWidth ? 1 : 0;
12858 for ( ; i < 4 ; i += 2 - includeWidth ) {
12859 which = cssExpand[ i ];
12860 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
12861 }
12862
12863 if ( includeWidth ) {
12864 attrs.opacity = attrs.width = type;
12865 }
12866
12867 return attrs;
12868}
12869
12870function createTween( value, prop, animation ) {
12871 var tween,
12872 collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
12873 index = 0,
12874 length = collection.length;
12875 for ( ; index < length; index++ ) {
12876 if ( (tween = collection[ index ].call( animation, prop, value )) ) {
12877
12878 // we're done with this property
12879 return tween;
12880 }
12881 }
12882}
12883
12884function defaultPrefilter( elem, props, opts ) {
12885 /* jshint validthis: true */
12886 var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
12887 anim = this,
12888 orig = {},
12889 style = elem.style,
12890 hidden = elem.nodeType && isHidden( elem ),
12891 dataShow = data_priv.get( elem, "fxshow" );
12892
12893 // handle queue: false promises
12894 if ( !opts.queue ) {
12895 hooks = jQuery._queueHooks( elem, "fx" );
12896 if ( hooks.unqueued == null ) {
12897 hooks.unqueued = 0;
12898 oldfire = hooks.empty.fire;
12899 hooks.empty.fire = function() {
12900 if ( !hooks.unqueued ) {
12901 oldfire();
12902 }
12903 };
12904 }
12905 hooks.unqueued++;
12906
12907 anim.always(function() {
12908 // doing this makes sure that the complete handler will be called
12909 // before this completes
12910 anim.always(function() {
12911 hooks.unqueued--;
12912 if ( !jQuery.queue( elem, "fx" ).length ) {
12913 hooks.empty.fire();
12914 }
12915 });
12916 });
12917 }
12918
12919 // height/width overflow pass
12920 if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
12921 // Make sure that nothing sneaks out
12922 // Record all 3 overflow attributes because IE9-10 do not
12923 // change the overflow attribute when overflowX and
12924 // overflowY are set to the same value
12925 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
12926
12927 // Set display property to inline-block for height/width
12928 // animations on inline elements that are having width/height animated
12929 display = jQuery.css( elem, "display" );
12930
12931 // Test default display if display is currently "none"
12932 checkDisplay = display === "none" ?
12933 data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
12934
12935 if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
12936 style.display = "inline-block";
12937 }
12938 }
12939
12940 if ( opts.overflow ) {
12941 style.overflow = "hidden";
12942 anim.always(function() {
12943 style.overflow = opts.overflow[ 0 ];
12944 style.overflowX = opts.overflow[ 1 ];
12945 style.overflowY = opts.overflow[ 2 ];
12946 });
12947 }
12948
12949 // show/hide pass
12950 for ( prop in props ) {
12951 value = props[ prop ];
12952 if ( rfxtypes.exec( value ) ) {
12953 delete props[ prop ];
12954 toggle = toggle || value === "toggle";
12955 if ( value === ( hidden ? "hide" : "show" ) ) {
12956
12957 // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
12958 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
12959 hidden = true;
12960 } else {
12961 continue;
12962 }
12963 }
12964 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
12965
12966 // Any non-fx value stops us from restoring the original display value
12967 } else {
12968 display = undefined;
12969 }
12970 }
12971
12972 if ( !jQuery.isEmptyObject( orig ) ) {
12973 if ( dataShow ) {
12974 if ( "hidden" in dataShow ) {
12975 hidden = dataShow.hidden;
12976 }
12977 } else {
12978 dataShow = data_priv.access( elem, "fxshow", {} );
12979 }
12980
12981 // store state if its toggle - enables .stop().toggle() to "reverse"
12982 if ( toggle ) {
12983 dataShow.hidden = !hidden;
12984 }
12985 if ( hidden ) {
12986 jQuery( elem ).show();
12987 } else {
12988 anim.done(function() {
12989 jQuery( elem ).hide();
12990 });
12991 }
12992 anim.done(function() {
12993 var prop;
12994
12995 data_priv.remove( elem, "fxshow" );
12996 for ( prop in orig ) {
12997 jQuery.style( elem, prop, orig[ prop ] );
12998 }
12999 });
13000 for ( prop in orig ) {
13001 tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
13002
13003 if ( !( prop in dataShow ) ) {
13004 dataShow[ prop ] = tween.start;
13005 if ( hidden ) {
13006 tween.end = tween.start;
13007 tween.start = prop === "width" || prop === "height" ? 1 : 0;
13008 }
13009 }
13010 }
13011
13012 // If this is a noop like .hide().hide(), restore an overwritten display value
13013 } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
13014 style.display = display;
13015 }
13016}
13017
13018function propFilter( props, specialEasing ) {
13019 var index, name, easing, value, hooks;
13020
13021 // camelCase, specialEasing and expand cssHook pass
13022 for ( index in props ) {
13023 name = jQuery.camelCase( index );
13024 easing = specialEasing[ name ];
13025 value = props[ index ];
13026 if ( jQuery.isArray( value ) ) {
13027 easing = value[ 1 ];
13028 value = props[ index ] = value[ 0 ];
13029 }
13030
13031 if ( index !== name ) {
13032 props[ name ] = value;
13033 delete props[ index ];
13034 }
13035
13036 hooks = jQuery.cssHooks[ name ];
13037 if ( hooks && "expand" in hooks ) {
13038 value = hooks.expand( value );
13039 delete props[ name ];
13040
13041 // not quite $.extend, this wont overwrite keys already present.
13042 // also - reusing 'index' from above because we have the correct "name"
13043 for ( index in value ) {
13044 if ( !( index in props ) ) {
13045 props[ index ] = value[ index ];
13046 specialEasing[ index ] = easing;
13047 }
13048 }
13049 } else {
13050 specialEasing[ name ] = easing;
13051 }
13052 }
13053}
13054
13055function Animation( elem, properties, options ) {
13056 var result,
13057 stopped,
13058 index = 0,
13059 length = animationPrefilters.length,
13060 deferred = jQuery.Deferred().always( function() {
13061 // don't match elem in the :animated selector
13062 delete tick.elem;
13063 }),
13064 tick = function() {
13065 if ( stopped ) {
13066 return false;
13067 }
13068 var currentTime = fxNow || createFxNow(),
13069 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
13070 // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
13071 temp = remaining / animation.duration || 0,
13072 percent = 1 - temp,
13073 index = 0,
13074 length = animation.tweens.length;
13075
13076 for ( ; index < length ; index++ ) {
13077 animation.tweens[ index ].run( percent );
13078 }
13079
13080 deferred.notifyWith( elem, [ animation, percent, remaining ]);
13081
13082 if ( percent < 1 && length ) {
13083 return remaining;
13084 } else {
13085 deferred.resolveWith( elem, [ animation ] );
13086 return false;
13087 }
13088 },
13089 animation = deferred.promise({
13090 elem: elem,
13091 props: jQuery.extend( {}, properties ),
13092 opts: jQuery.extend( true, { specialEasing: {} }, options ),
13093 originalProperties: properties,
13094 originalOptions: options,
13095 startTime: fxNow || createFxNow(),
13096 duration: options.duration,
13097 tweens: [],
13098 createTween: function( prop, end ) {
13099 var tween = jQuery.Tween( elem, animation.opts, prop, end,
13100 animation.opts.specialEasing[ prop ] || animation.opts.easing );
13101 animation.tweens.push( tween );
13102 return tween;
13103 },
13104 stop: function( gotoEnd ) {
13105 var index = 0,
13106 // if we are going to the end, we want to run all the tweens
13107 // otherwise we skip this part
13108 length = gotoEnd ? animation.tweens.length : 0;
13109 if ( stopped ) {
13110 return this;
13111 }
13112 stopped = true;
13113 for ( ; index < length ; index++ ) {
13114 animation.tweens[ index ].run( 1 );
13115 }
13116
13117 // resolve when we played the last frame
13118 // otherwise, reject
13119 if ( gotoEnd ) {
13120 deferred.resolveWith( elem, [ animation, gotoEnd ] );
13121 } else {
13122 deferred.rejectWith( elem, [ animation, gotoEnd ] );
13123 }
13124 return this;
13125 }
13126 }),
13127 props = animation.props;
13128
13129 propFilter( props, animation.opts.specialEasing );
13130
13131 for ( ; index < length ; index++ ) {
13132 result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
13133 if ( result ) {
13134 return result;
13135 }
13136 }
13137
13138 jQuery.map( props, createTween, animation );
13139
13140 if ( jQuery.isFunction( animation.opts.start ) ) {
13141 animation.opts.start.call( elem, animation );
13142 }
13143
13144 jQuery.fx.timer(
13145 jQuery.extend( tick, {
13146 elem: elem,
13147 anim: animation,
13148 queue: animation.opts.queue
13149 })
13150 );
13151
13152 // attach callbacks from options
13153 return animation.progress( animation.opts.progress )
13154 .done( animation.opts.done, animation.opts.complete )
13155 .fail( animation.opts.fail )
13156 .always( animation.opts.always );
13157}
13158
13159jQuery.Animation = jQuery.extend( Animation, {
13160
13161 tweener: function( props, callback ) {
13162 if ( jQuery.isFunction( props ) ) {
13163 callback = props;
13164 props = [ "*" ];
13165 } else {
13166 props = props.split(" ");
13167 }
13168
13169 var prop,
13170 index = 0,
13171 length = props.length;
13172
13173 for ( ; index < length ; index++ ) {
13174 prop = props[ index ];
13175 tweeners[ prop ] = tweeners[ prop ] || [];
13176 tweeners[ prop ].unshift( callback );
13177 }
13178 },
13179
13180 prefilter: function( callback, prepend ) {
13181 if ( prepend ) {
13182 animationPrefilters.unshift( callback );
13183 } else {
13184 animationPrefilters.push( callback );
13185 }
13186 }
13187});
13188
13189jQuery.speed = function( speed, easing, fn ) {
13190 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
13191 complete: fn || !fn && easing ||
13192 jQuery.isFunction( speed ) && speed,
13193 duration: speed,
13194 easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
13195 };
13196
13197 opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
13198 opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
13199
13200 // normalize opt.queue - true/undefined/null -> "fx"
13201 if ( opt.queue == null || opt.queue === true ) {
13202 opt.queue = "fx";
13203 }
13204
13205 // Queueing
13206 opt.old = opt.complete;
13207
13208 opt.complete = function() {
13209 if ( jQuery.isFunction( opt.old ) ) {
13210 opt.old.call( this );
13211 }
13212
13213 if ( opt.queue ) {
13214 jQuery.dequeue( this, opt.queue );
13215 }
13216 };
13217
13218 return opt;
13219};
13220
13221jQuery.fn.extend({
13222 fadeTo: function( speed, to, easing, callback ) {
13223
13224 // show any hidden elements after setting opacity to 0
13225 return this.filter( isHidden ).css( "opacity", 0 ).show()
13226
13227 // animate to the value specified
13228 .end().animate({ opacity: to }, speed, easing, callback );
13229 },
13230 animate: function( prop, speed, easing, callback ) {
13231 var empty = jQuery.isEmptyObject( prop ),
13232 optall = jQuery.speed( speed, easing, callback ),
13233 doAnimation = function() {
13234 // Operate on a copy of prop so per-property easing won't be lost
13235 var anim = Animation( this, jQuery.extend( {}, prop ), optall );
13236
13237 // Empty animations, or finishing resolves immediately
13238 if ( empty || data_priv.get( this, "finish" ) ) {
13239 anim.stop( true );
13240 }
13241 };
13242 doAnimation.finish = doAnimation;
13243
13244 return empty || optall.queue === false ?
13245 this.each( doAnimation ) :
13246 this.queue( optall.queue, doAnimation );
13247 },
13248 stop: function( type, clearQueue, gotoEnd ) {
13249 var stopQueue = function( hooks ) {
13250 var stop = hooks.stop;
13251 delete hooks.stop;
13252 stop( gotoEnd );
13253 };
13254
13255 if ( typeof type !== "string" ) {
13256 gotoEnd = clearQueue;
13257 clearQueue = type;
13258 type = undefined;
13259 }
13260 if ( clearQueue && type !== false ) {
13261 this.queue( type || "fx", [] );
13262 }
13263
13264 return this.each(function() {
13265 var dequeue = true,
13266 index = type != null && type + "queueHooks",
13267 timers = jQuery.timers,
13268 data = data_priv.get( this );
13269
13270 if ( index ) {
13271 if ( data[ index ] && data[ index ].stop ) {
13272 stopQueue( data[ index ] );
13273 }
13274 } else {
13275 for ( index in data ) {
13276 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
13277 stopQueue( data[ index ] );
13278 }
13279 }
13280 }
13281
13282 for ( index = timers.length; index--; ) {
13283 if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
13284 timers[ index ].anim.stop( gotoEnd );
13285 dequeue = false;
13286 timers.splice( index, 1 );
13287 }
13288 }
13289
13290 // start the next in the queue if the last step wasn't forced
13291 // timers currently will call their complete callbacks, which will dequeue
13292 // but only if they were gotoEnd
13293 if ( dequeue || !gotoEnd ) {
13294 jQuery.dequeue( this, type );
13295 }
13296 });
13297 },
13298 finish: function( type ) {
13299 if ( type !== false ) {
13300 type = type || "fx";
13301 }
13302 return this.each(function() {
13303 var index,
13304 data = data_priv.get( this ),
13305 queue = data[ type + "queue" ],
13306 hooks = data[ type + "queueHooks" ],
13307 timers = jQuery.timers,
13308 length = queue ? queue.length : 0;
13309
13310 // enable finishing flag on private data
13311 data.finish = true;
13312
13313 // empty the queue first
13314 jQuery.queue( this, type, [] );
13315
13316 if ( hooks && hooks.stop ) {
13317 hooks.stop.call( this, true );
13318 }
13319
13320 // look for any active animations, and finish them
13321 for ( index = timers.length; index--; ) {
13322 if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
13323 timers[ index ].anim.stop( true );
13324 timers.splice( index, 1 );
13325 }
13326 }
13327
13328 // look for any animations in the old queue and finish them
13329 for ( index = 0; index < length; index++ ) {
13330 if ( queue[ index ] && queue[ index ].finish ) {
13331 queue[ index ].finish.call( this );
13332 }
13333 }
13334
13335 // turn off finishing flag
13336 delete data.finish;
13337 });
13338 }
13339});
13340
13341jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
13342 var cssFn = jQuery.fn[ name ];
13343 jQuery.fn[ name ] = function( speed, easing, callback ) {
13344 return speed == null || typeof speed === "boolean" ?
13345 cssFn.apply( this, arguments ) :
13346 this.animate( genFx( name, true ), speed, easing, callback );
13347 };
13348});
13349
13350// Generate shortcuts for custom animations
13351jQuery.each({
13352 slideDown: genFx("show"),
13353 slideUp: genFx("hide"),
13354 slideToggle: genFx("toggle"),
13355 fadeIn: { opacity: "show" },
13356 fadeOut: { opacity: "hide" },
13357 fadeToggle: { opacity: "toggle" }
13358}, function( name, props ) {
13359 jQuery.fn[ name ] = function( speed, easing, callback ) {
13360 return this.animate( props, speed, easing, callback );
13361 };
13362});
13363
13364jQuery.timers = [];
13365jQuery.fx.tick = function() {
13366 var timer,
13367 i = 0,
13368 timers = jQuery.timers;
13369
13370 fxNow = jQuery.now();
13371
13372 for ( ; i < timers.length; i++ ) {
13373 timer = timers[ i ];
13374 // Checks the timer has not already been removed
13375 if ( !timer() && timers[ i ] === timer ) {
13376 timers.splice( i--, 1 );
13377 }
13378 }
13379
13380 if ( !timers.length ) {
13381 jQuery.fx.stop();
13382 }
13383 fxNow = undefined;
13384};
13385
13386jQuery.fx.timer = function( timer ) {
13387 jQuery.timers.push( timer );
13388 if ( timer() ) {
13389 jQuery.fx.start();
13390 } else {
13391 jQuery.timers.pop();
13392 }
13393};
13394
13395jQuery.fx.interval = 13;
13396
13397jQuery.fx.start = function() {
13398 if ( !timerId ) {
13399 timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
13400 }
13401};
13402
13403jQuery.fx.stop = function() {
13404 clearInterval( timerId );
13405 timerId = null;
13406};
13407
13408jQuery.fx.speeds = {
13409 slow: 600,
13410 fast: 200,
13411 // Default speed
13412 _default: 400
13413};
13414
13415
13416// Based off of the plugin by Clint Helfers, with permission.
13417// http://blindsignals.com/index.php/2009/07/jquery-delay/
13418jQuery.fn.delay = function( time, type ) {
13419 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
13420 type = type || "fx";
13421
13422 return this.queue( type, function( next, hooks ) {
13423 var timeout = setTimeout( next, time );
13424 hooks.stop = function() {
13425 clearTimeout( timeout );
13426 };
13427 });
13428};
13429
13430
13431(function() {
13432 var input = document.createElement( "input" ),
13433 select = document.createElement( "select" ),
13434 opt = select.appendChild( document.createElement( "option" ) );
13435
13436 input.type = "checkbox";
13437
13438 // Support: iOS 5.1, Android 4.x, Android 2.3
13439 // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
13440 support.checkOn = input.value !== "";
13441
13442 // Must access the parent to make an option select properly
13443 // Support: IE9, IE10
13444 support.optSelected = opt.selected;
13445
13446 // Make sure that the options inside disabled selects aren't marked as disabled
13447 // (WebKit marks them as disabled)
13448 select.disabled = true;
13449 support.optDisabled = !opt.disabled;
13450
13451 // Check if an input maintains its value after becoming a radio
13452 // Support: IE9, IE10
13453 input = document.createElement( "input" );
13454 input.value = "t";
13455 input.type = "radio";
13456 support.radioValue = input.value === "t";
13457})();
13458
13459
13460var nodeHook, boolHook,
13461 attrHandle = jQuery.expr.attrHandle;
13462
13463jQuery.fn.extend({
13464 attr: function( name, value ) {
13465 return access( this, jQuery.attr, name, value, arguments.length > 1 );
13466 },
13467
13468 removeAttr: function( name ) {
13469 return this.each(function() {
13470 jQuery.removeAttr( this, name );
13471 });
13472 }
13473});
13474
13475jQuery.extend({
13476 attr: function( elem, name, value ) {
13477 var hooks, ret,
13478 nType = elem.nodeType;
13479
13480 // don't get/set attributes on text, comment and attribute nodes
13481 if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
13482 return;
13483 }
13484
13485 // Fallback to prop when attributes are not supported
13486 if ( typeof elem.getAttribute === strundefined ) {
13487 return jQuery.prop( elem, name, value );
13488 }
13489
13490 // All attributes are lowercase
13491 // Grab necessary hook if one is defined
13492 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
13493 name = name.toLowerCase();
13494 hooks = jQuery.attrHooks[ name ] ||
13495 ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
13496 }
13497
13498 if ( value !== undefined ) {
13499
13500 if ( value === null ) {
13501 jQuery.removeAttr( elem, name );
13502
13503 } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
13504 return ret;
13505
13506 } else {
13507 elem.setAttribute( name, value + "" );
13508 return value;
13509 }
13510
13511 } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
13512 return ret;
13513
13514 } else {
13515 ret = jQuery.find.attr( elem, name );
13516
13517 // Non-existent attributes return null, we normalize to undefined
13518 return ret == null ?
13519 undefined :
13520 ret;
13521 }
13522 },
13523
13524 removeAttr: function( elem, value ) {
13525 var name, propName,
13526 i = 0,
13527 attrNames = value && value.match( rnotwhite );
13528
13529 if ( attrNames && elem.nodeType === 1 ) {
13530 while ( (name = attrNames[i++]) ) {
13531 propName = jQuery.propFix[ name ] || name;
13532
13533 // Boolean attributes get special treatment (#10870)
13534 if ( jQuery.expr.match.bool.test( name ) ) {
13535 // Set corresponding property to false
13536 elem[ propName ] = false;
13537 }
13538
13539 elem.removeAttribute( name );
13540 }
13541 }
13542 },
13543
13544 attrHooks: {
13545 type: {
13546 set: function( elem, value ) {
13547 if ( !support.radioValue && value === "radio" &&
13548 jQuery.nodeName( elem, "input" ) ) {
13549 // Setting the type on a radio button after the value resets the value in IE6-9
13550 // Reset value to default in case type is set after value during creation
13551 var val = elem.value;
13552 elem.setAttribute( "type", value );
13553 if ( val ) {
13554 elem.value = val;
13555 }
13556 return value;
13557 }
13558 }
13559 }
13560 }
13561});
13562
13563// Hooks for boolean attributes
13564boolHook = {
13565 set: function( elem, value, name ) {
13566 if ( value === false ) {
13567 // Remove boolean attributes when set to false
13568 jQuery.removeAttr( elem, name );
13569 } else {
13570 elem.setAttribute( name, name );
13571 }
13572 return name;
13573 }
13574};
13575jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
13576 var getter = attrHandle[ name ] || jQuery.find.attr;
13577
13578 attrHandle[ name ] = function( elem, name, isXML ) {
13579 var ret, handle;
13580 if ( !isXML ) {
13581 // Avoid an infinite loop by temporarily removing this function from the getter
13582 handle = attrHandle[ name ];
13583 attrHandle[ name ] = ret;
13584 ret = getter( elem, name, isXML ) != null ?
13585 name.toLowerCase() :
13586 null;
13587 attrHandle[ name ] = handle;
13588 }
13589 return ret;
13590 };
13591});
13592
13593
13594
13595
13596var rfocusable = /^(?:input|select|textarea|button)$/i;
13597
13598jQuery.fn.extend({
13599 prop: function( name, value ) {
13600 return access( this, jQuery.prop, name, value, arguments.length > 1 );
13601 },
13602
13603 removeProp: function( name ) {
13604 return this.each(function() {
13605 delete this[ jQuery.propFix[ name ] || name ];
13606 });
13607 }
13608});
13609
13610jQuery.extend({
13611 propFix: {
13612 "for": "htmlFor",
13613 "class": "className"
13614 },
13615
13616 prop: function( elem, name, value ) {
13617 var ret, hooks, notxml,
13618 nType = elem.nodeType;
13619
13620 // don't get/set properties on text, comment and attribute nodes
13621 if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
13622 return;
13623 }
13624
13625 notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
13626
13627 if ( notxml ) {
13628 // Fix name and attach hooks
13629 name = jQuery.propFix[ name ] || name;
13630 hooks = jQuery.propHooks[ name ];
13631 }
13632
13633 if ( value !== undefined ) {
13634 return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
13635 ret :
13636 ( elem[ name ] = value );
13637
13638 } else {
13639 return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
13640 ret :
13641 elem[ name ];
13642 }
13643 },
13644
13645 propHooks: {
13646 tabIndex: {
13647 get: function( elem ) {
13648 return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
13649 elem.tabIndex :
13650 -1;
13651 }
13652 }
13653 }
13654});
13655
13656// Support: IE9+
13657// Selectedness for an option in an optgroup can be inaccurate
13658if ( !support.optSelected ) {
13659 jQuery.propHooks.selected = {
13660 get: function( elem ) {
13661 var parent = elem.parentNode;
13662 if ( parent && parent.parentNode ) {
13663 parent.parentNode.selectedIndex;
13664 }
13665 return null;
13666 }
13667 };
13668}
13669
13670jQuery.each([
13671 "tabIndex",
13672 "readOnly",
13673 "maxLength",
13674 "cellSpacing",
13675 "cellPadding",
13676 "rowSpan",
13677 "colSpan",
13678 "useMap",
13679 "frameBorder",
13680 "contentEditable"
13681], function() {
13682 jQuery.propFix[ this.toLowerCase() ] = this;
13683});
13684
13685
13686
13687
13688var rclass = /[\t\r\n\f]/g;
13689
13690jQuery.fn.extend({
13691 addClass: function( value ) {
13692 var classes, elem, cur, clazz, j, finalValue,
13693 proceed = typeof value === "string" && value,
13694 i = 0,
13695 len = this.length;
13696
13697 if ( jQuery.isFunction( value ) ) {
13698 return this.each(function( j ) {
13699 jQuery( this ).addClass( value.call( this, j, this.className ) );
13700 });
13701 }
13702
13703 if ( proceed ) {
13704 // The disjunction here is for better compressibility (see removeClass)
13705 classes = ( value || "" ).match( rnotwhite ) || [];
13706
13707 for ( ; i < len; i++ ) {
13708 elem = this[ i ];
13709 cur = elem.nodeType === 1 && ( elem.className ?
13710 ( " " + elem.className + " " ).replace( rclass, " " ) :
13711 " "
13712 );
13713
13714 if ( cur ) {
13715 j = 0;
13716 while ( (clazz = classes[j++]) ) {
13717 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
13718 cur += clazz + " ";
13719 }
13720 }
13721
13722 // only assign if different to avoid unneeded rendering.
13723 finalValue = jQuery.trim( cur );
13724 if ( elem.className !== finalValue ) {
13725 elem.className = finalValue;
13726 }
13727 }
13728 }
13729 }
13730
13731 return this;
13732 },
13733
13734 removeClass: function( value ) {
13735 var classes, elem, cur, clazz, j, finalValue,
13736 proceed = arguments.length === 0 || typeof value === "string" && value,
13737 i = 0,
13738 len = this.length;
13739
13740 if ( jQuery.isFunction( value ) ) {
13741 return this.each(function( j ) {
13742 jQuery( this ).removeClass( value.call( this, j, this.className ) );
13743 });
13744 }
13745 if ( proceed ) {
13746 classes = ( value || "" ).match( rnotwhite ) || [];
13747
13748 for ( ; i < len; i++ ) {
13749 elem = this[ i ];
13750 // This expression is here for better compressibility (see addClass)
13751 cur = elem.nodeType === 1 && ( elem.className ?
13752 ( " " + elem.className + " " ).replace( rclass, " " ) :
13753 ""
13754 );
13755
13756 if ( cur ) {
13757 j = 0;
13758 while ( (clazz = classes[j++]) ) {
13759 // Remove *all* instances
13760 while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
13761 cur = cur.replace( " " + clazz + " ", " " );
13762 }
13763 }
13764
13765 // only assign if different to avoid unneeded rendering.
13766 finalValue = value ? jQuery.trim( cur ) : "";
13767 if ( elem.className !== finalValue ) {
13768 elem.className = finalValue;
13769 }
13770 }
13771 }
13772 }
13773
13774 return this;
13775 },
13776
13777 toggleClass: function( value, stateVal ) {
13778 var type = typeof value;
13779
13780 if ( typeof stateVal === "boolean" && type === "string" ) {
13781 return stateVal ? this.addClass( value ) : this.removeClass( value );
13782 }
13783
13784 if ( jQuery.isFunction( value ) ) {
13785 return this.each(function( i ) {
13786 jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
13787 });
13788 }
13789
13790 return this.each(function() {
13791 if ( type === "string" ) {
13792 // toggle individual class names
13793 var className,
13794 i = 0,
13795 self = jQuery( this ),
13796 classNames = value.match( rnotwhite ) || [];
13797
13798 while ( (className = classNames[ i++ ]) ) {
13799 // check each className given, space separated list
13800 if ( self.hasClass( className ) ) {
13801 self.removeClass( className );
13802 } else {
13803 self.addClass( className );
13804 }
13805 }
13806
13807 // Toggle whole class name
13808 } else if ( type === strundefined || type === "boolean" ) {
13809 if ( this.className ) {
13810 // store className if set
13811 data_priv.set( this, "__className__", this.className );
13812 }
13813
13814 // If the element has a class name or if we're passed "false",
13815 // then remove the whole classname (if there was one, the above saved it).
13816 // Otherwise bring back whatever was previously saved (if anything),
13817 // falling back to the empty string if nothing was stored.
13818 this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
13819 }
13820 });
13821 },
13822
13823 hasClass: function( selector ) {
13824 var className = " " + selector + " ",
13825 i = 0,
13826 l = this.length;
13827 for ( ; i < l; i++ ) {
13828 if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
13829 return true;
13830 }
13831 }
13832
13833 return false;
13834 }
13835});
13836
13837
13838
13839
13840var rreturn = /\r/g;
13841
13842jQuery.fn.extend({
13843 val: function( value ) {
13844 var hooks, ret, isFunction,
13845 elem = this[0];
13846
13847 if ( !arguments.length ) {
13848 if ( elem ) {
13849 hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
13850
13851 if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
13852 return ret;
13853 }
13854
13855 ret = elem.value;
13856
13857 return typeof ret === "string" ?
13858 // handle most common string cases
13859 ret.replace(rreturn, "") :
13860 // handle cases where value is null/undef or number
13861 ret == null ? "" : ret;
13862 }
13863
13864 return;
13865 }
13866
13867 isFunction = jQuery.isFunction( value );
13868
13869 return this.each(function( i ) {
13870 var val;
13871
13872 if ( this.nodeType !== 1 ) {
13873 return;
13874 }
13875
13876 if ( isFunction ) {
13877 val = value.call( this, i, jQuery( this ).val() );
13878 } else {
13879 val = value;
13880 }
13881
13882 // Treat null/undefined as ""; convert numbers to string
13883 if ( val == null ) {
13884 val = "";
13885
13886 } else if ( typeof val === "number" ) {
13887 val += "";
13888
13889 } else if ( jQuery.isArray( val ) ) {
13890 val = jQuery.map( val, function( value ) {
13891 return value == null ? "" : value + "";
13892 });
13893 }
13894
13895 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
13896
13897 // If set returns undefined, fall back to normal setting
13898 if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
13899 this.value = val;
13900 }
13901 });
13902 }
13903});
13904
13905jQuery.extend({
13906 valHooks: {
13907 option: {
13908 get: function( elem ) {
13909 var val = jQuery.find.attr( elem, "value" );
13910 return val != null ?
13911 val :
13912 // Support: IE10-11+
13913 // option.text throws exceptions (#14686, #14858)
13914 jQuery.trim( jQuery.text( elem ) );
13915 }
13916 },
13917 select: {
13918 get: function( elem ) {
13919 var value, option,
13920 options = elem.options,
13921 index = elem.selectedIndex,
13922 one = elem.type === "select-one" || index < 0,
13923 values = one ? null : [],
13924 max = one ? index + 1 : options.length,
13925 i = index < 0 ?
13926 max :
13927 one ? index : 0;
13928
13929 // Loop through all the selected options
13930 for ( ; i < max; i++ ) {
13931 option = options[ i ];
13932
13933 // IE6-9 doesn't update selected after form reset (#2551)
13934 if ( ( option.selected || i === index ) &&
13935 // Don't return options that are disabled or in a disabled optgroup
13936 ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
13937 ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
13938
13939 // Get the specific value for the option
13940 value = jQuery( option ).val();
13941
13942 // We don't need an array for one selects
13943 if ( one ) {
13944 return value;
13945 }
13946
13947 // Multi-Selects return an array
13948 values.push( value );
13949 }
13950 }
13951
13952 return values;
13953 },
13954
13955 set: function( elem, value ) {
13956 var optionSet, option,
13957 options = elem.options,
13958 values = jQuery.makeArray( value ),
13959 i = options.length;
13960
13961 while ( i-- ) {
13962 option = options[ i ];
13963 if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
13964 optionSet = true;
13965 }
13966 }
13967
13968 // force browsers to behave consistently when non-matching value is set
13969 if ( !optionSet ) {
13970 elem.selectedIndex = -1;
13971 }
13972 return values;
13973 }
13974 }
13975 }
13976});
13977
13978// Radios and checkboxes getter/setter
13979jQuery.each([ "radio", "checkbox" ], function() {
13980 jQuery.valHooks[ this ] = {
13981 set: function( elem, value ) {
13982 if ( jQuery.isArray( value ) ) {
13983 return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
13984 }
13985 }
13986 };
13987 if ( !support.checkOn ) {
13988 jQuery.valHooks[ this ].get = function( elem ) {
13989 // Support: Webkit
13990 // "" is returned instead of "on" if a value isn't specified
13991 return elem.getAttribute("value") === null ? "on" : elem.value;
13992 };
13993 }
13994});
13995
13996
13997
13998
13999// Return jQuery for attributes-only inclusion
14000
14001
14002jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
14003 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
14004 "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
14005
14006 // Handle event binding
14007 jQuery.fn[ name ] = function( data, fn ) {
14008 return arguments.length > 0 ?
14009 this.on( name, null, data, fn ) :
14010 this.trigger( name );
14011 };
14012});
14013
14014jQuery.fn.extend({
14015 hover: function( fnOver, fnOut ) {
14016 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
14017 },
14018
14019 bind: function( types, data, fn ) {
14020 return this.on( types, null, data, fn );
14021 },
14022 unbind: function( types, fn ) {
14023 return this.off( types, null, fn );
14024 },
14025
14026 delegate: function( selector, types, data, fn ) {
14027 return this.on( types, selector, data, fn );
14028 },
14029 undelegate: function( selector, types, fn ) {
14030 // ( namespace ) or ( selector, types [, fn] )
14031 return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
14032 }
14033});
14034
14035
14036var nonce = jQuery.now();
14037
14038var rquery = (/\?/);
14039
14040
14041
14042// Support: Android 2.3
14043// Workaround failure to string-cast null input
14044jQuery.parseJSON = function( data ) {
14045 return JSON.parse( data + "" );
14046};
14047
14048
14049// Cross-browser xml parsing
14050jQuery.parseXML = function( data ) {
14051 var xml, tmp;
14052 if ( !data || typeof data !== "string" ) {
14053 return null;
14054 }
14055
14056 // Support: IE9
14057 try {
14058 tmp = new DOMParser();
14059 xml = tmp.parseFromString( data, "text/xml" );
14060 } catch ( e ) {
14061 xml = undefined;
14062 }
14063
14064 if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
14065 jQuery.error( "Invalid XML: " + data );
14066 }
14067 return xml;
14068};
14069
14070
14071var
14072 // Document location
14073 ajaxLocParts,
14074 ajaxLocation,
14075
14076 rhash = /#.*$/,
14077 rts = /([?&])_=[^&]*/,
14078 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
14079 // #7653, #8125, #8152: local protocol detection
14080 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
14081 rnoContent = /^(?:GET|HEAD)$/,
14082 rprotocol = /^\/\//,
14083 rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
14084
14085 /* Prefilters
14086 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
14087 * 2) These are called:
14088 * - BEFORE asking for a transport
14089 * - AFTER param serialization (s.data is a string if s.processData is true)
14090 * 3) key is the dataType
14091 * 4) the catchall symbol "*" can be used
14092 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
14093 */
14094 prefilters = {},
14095
14096 /* Transports bindings
14097 * 1) key is the dataType
14098 * 2) the catchall symbol "*" can be used
14099 * 3) selection will start with transport dataType and THEN go to "*" if needed
14100 */
14101 transports = {},
14102
14103 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
14104 allTypes = "*/".concat("*");
14105
14106// #8138, IE may throw an exception when accessing
14107// a field from window.location if document.domain has been set
14108try {
14109 ajaxLocation = location.href;
14110} catch( e ) {
14111 // Use the href attribute of an A element
14112 // since IE will modify it given document.location
14113 ajaxLocation = document.createElement( "a" );
14114 ajaxLocation.href = "";
14115 ajaxLocation = ajaxLocation.href;
14116}
14117
14118// Segment location into parts
14119ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
14120
14121// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
14122function addToPrefiltersOrTransports( structure ) {
14123
14124 // dataTypeExpression is optional and defaults to "*"
14125 return function( dataTypeExpression, func ) {
14126
14127 if ( typeof dataTypeExpression !== "string" ) {
14128 func = dataTypeExpression;
14129 dataTypeExpression = "*";
14130 }
14131
14132 var dataType,
14133 i = 0,
14134 dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
14135
14136 if ( jQuery.isFunction( func ) ) {
14137 // For each dataType in the dataTypeExpression
14138 while ( (dataType = dataTypes[i++]) ) {
14139 // Prepend if requested
14140 if ( dataType[0] === "+" ) {
14141 dataType = dataType.slice( 1 ) || "*";
14142 (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
14143
14144 // Otherwise append
14145 } else {
14146 (structure[ dataType ] = structure[ dataType ] || []).push( func );
14147 }
14148 }
14149 }
14150 };
14151}
14152
14153// Base inspection function for prefilters and transports
14154function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
14155
14156 var inspected = {},
14157 seekingTransport = ( structure === transports );
14158
14159 function inspect( dataType ) {
14160 var selected;
14161 inspected[ dataType ] = true;
14162 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
14163 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
14164 if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
14165 options.dataTypes.unshift( dataTypeOrTransport );
14166 inspect( dataTypeOrTransport );
14167 return false;
14168 } else if ( seekingTransport ) {
14169 return !( selected = dataTypeOrTransport );
14170 }
14171 });
14172 return selected;
14173 }
14174
14175 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
14176}
14177
14178// A special extend for ajax options
14179// that takes "flat" options (not to be deep extended)
14180// Fixes #9887
14181function ajaxExtend( target, src ) {
14182 var key, deep,
14183 flatOptions = jQuery.ajaxSettings.flatOptions || {};
14184
14185 for ( key in src ) {
14186 if ( src[ key ] !== undefined ) {
14187 ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
14188 }
14189 }
14190 if ( deep ) {
14191 jQuery.extend( true, target, deep );
14192 }
14193
14194 return target;
14195}
14196
14197/* Handles responses to an ajax request:
14198 * - finds the right dataType (mediates between content-type and expected dataType)
14199 * - returns the corresponding response
14200 */
14201function ajaxHandleResponses( s, jqXHR, responses ) {
14202
14203 var ct, type, finalDataType, firstDataType,
14204 contents = s.contents,
14205 dataTypes = s.dataTypes;
14206
14207 // Remove auto dataType and get content-type in the process
14208 while ( dataTypes[ 0 ] === "*" ) {
14209 dataTypes.shift();
14210 if ( ct === undefined ) {
14211 ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
14212 }
14213 }
14214
14215 // Check if we're dealing with a known content-type
14216 if ( ct ) {
14217 for ( type in contents ) {
14218 if ( contents[ type ] && contents[ type ].test( ct ) ) {
14219 dataTypes.unshift( type );
14220 break;
14221 }
14222 }
14223 }
14224
14225 // Check to see if we have a response for the expected dataType
14226 if ( dataTypes[ 0 ] in responses ) {
14227 finalDataType = dataTypes[ 0 ];
14228 } else {
14229 // Try convertible dataTypes
14230 for ( type in responses ) {
14231 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
14232 finalDataType = type;
14233 break;
14234 }
14235 if ( !firstDataType ) {
14236 firstDataType = type;
14237 }
14238 }
14239 // Or just use first one
14240 finalDataType = finalDataType || firstDataType;
14241 }
14242
14243 // If we found a dataType
14244 // We add the dataType to the list if needed
14245 // and return the corresponding response
14246 if ( finalDataType ) {
14247 if ( finalDataType !== dataTypes[ 0 ] ) {
14248 dataTypes.unshift( finalDataType );
14249 }
14250 return responses[ finalDataType ];
14251 }
14252}
14253
14254/* Chain conversions given the request and the original response
14255 * Also sets the responseXXX fields on the jqXHR instance
14256 */
14257function ajaxConvert( s, response, jqXHR, isSuccess ) {
14258 var conv2, current, conv, tmp, prev,
14259 converters = {},
14260 // Work with a copy of dataTypes in case we need to modify it for conversion
14261 dataTypes = s.dataTypes.slice();
14262
14263 // Create converters map with lowercased keys
14264 if ( dataTypes[ 1 ] ) {
14265 for ( conv in s.converters ) {
14266 converters[ conv.toLowerCase() ] = s.converters[ conv ];
14267 }
14268 }
14269
14270 current = dataTypes.shift();
14271
14272 // Convert to each sequential dataType
14273 while ( current ) {
14274
14275 if ( s.responseFields[ current ] ) {
14276 jqXHR[ s.responseFields[ current ] ] = response;
14277 }
14278
14279 // Apply the dataFilter if provided
14280 if ( !prev && isSuccess && s.dataFilter ) {
14281 response = s.dataFilter( response, s.dataType );
14282 }
14283
14284 prev = current;
14285 current = dataTypes.shift();
14286
14287 if ( current ) {
14288
14289 // There's only work to do if current dataType is non-auto
14290 if ( current === "*" ) {
14291
14292 current = prev;
14293
14294 // Convert response if prev dataType is non-auto and differs from current
14295 } else if ( prev !== "*" && prev !== current ) {
14296
14297 // Seek a direct converter
14298 conv = converters[ prev + " " + current ] || converters[ "* " + current ];
14299
14300 // If none found, seek a pair
14301 if ( !conv ) {
14302 for ( conv2 in converters ) {
14303
14304 // If conv2 outputs current
14305 tmp = conv2.split( " " );
14306 if ( tmp[ 1 ] === current ) {
14307
14308 // If prev can be converted to accepted input
14309 conv = converters[ prev + " " + tmp[ 0 ] ] ||
14310 converters[ "* " + tmp[ 0 ] ];
14311 if ( conv ) {
14312 // Condense equivalence converters
14313 if ( conv === true ) {
14314 conv = converters[ conv2 ];
14315
14316 // Otherwise, insert the intermediate dataType
14317 } else if ( converters[ conv2 ] !== true ) {
14318 current = tmp[ 0 ];
14319 dataTypes.unshift( tmp[ 1 ] );
14320 }
14321 break;
14322 }
14323 }
14324 }
14325 }
14326
14327 // Apply converter (if not an equivalence)
14328 if ( conv !== true ) {
14329
14330 // Unless errors are allowed to bubble, catch and return them
14331 if ( conv && s[ "throws" ] ) {
14332 response = conv( response );
14333 } else {
14334 try {
14335 response = conv( response );
14336 } catch ( e ) {
14337 return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
14338 }
14339 }
14340 }
14341 }
14342 }
14343 }
14344
14345 return { state: "success", data: response };
14346}
14347
14348jQuery.extend({
14349
14350 // Counter for holding the number of active queries
14351 active: 0,
14352
14353 // Last-Modified header cache for next request
14354 lastModified: {},
14355 etag: {},
14356
14357 ajaxSettings: {
14358 url: ajaxLocation,
14359 type: "GET",
14360 isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
14361 global: true,
14362 processData: true,
14363 async: true,
14364 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
14365 /*
14366 timeout: 0,
14367 data: null,
14368 dataType: null,
14369 username: null,
14370 password: null,
14371 cache: null,
14372 throws: false,
14373 traditional: false,
14374 headers: {},
14375 */
14376
14377 accepts: {
14378 "*": allTypes,
14379 text: "text/plain",
14380 html: "text/html",
14381 xml: "application/xml, text/xml",
14382 json: "application/json, text/javascript"
14383 },
14384
14385 contents: {
14386 xml: /xml/,
14387 html: /html/,
14388 json: /json/
14389 },
14390
14391 responseFields: {
14392 xml: "responseXML",
14393 text: "responseText",
14394 json: "responseJSON"
14395 },
14396
14397 // Data converters
14398 // Keys separate source (or catchall "*") and destination types with a single space
14399 converters: {
14400
14401 // Convert anything to text
14402 "* text": String,
14403
14404 // Text to html (true = no transformation)
14405 "text html": true,
14406
14407 // Evaluate text as a json expression
14408 "text json": jQuery.parseJSON,
14409
14410 // Parse text as xml
14411 "text xml": jQuery.parseXML
14412 },
14413
14414 // For options that shouldn't be deep extended:
14415 // you can add your own custom options here if
14416 // and when you create one that shouldn't be
14417 // deep extended (see ajaxExtend)
14418 flatOptions: {
14419 url: true,
14420 context: true
14421 }
14422 },
14423
14424 // Creates a full fledged settings object into target
14425 // with both ajaxSettings and settings fields.
14426 // If target is omitted, writes into ajaxSettings.
14427 ajaxSetup: function( target, settings ) {
14428 return settings ?
14429
14430 // Building a settings object
14431 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
14432
14433 // Extending ajaxSettings
14434 ajaxExtend( jQuery.ajaxSettings, target );
14435 },
14436
14437 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
14438 ajaxTransport: addToPrefiltersOrTransports( transports ),
14439
14440 // Main method
14441 ajax: function( url, options ) {
14442
14443 // If url is an object, simulate pre-1.5 signature
14444 if ( typeof url === "object" ) {
14445 options = url;
14446 url = undefined;
14447 }
14448
14449 // Force options to be an object
14450 options = options || {};
14451
14452 var transport,
14453 // URL without anti-cache param
14454 cacheURL,
14455 // Response headers
14456 responseHeadersString,
14457 responseHeaders,
14458 // timeout handle
14459 timeoutTimer,
14460 // Cross-domain detection vars
14461 parts,
14462 // To know if global events are to be dispatched
14463 fireGlobals,
14464 // Loop variable
14465 i,
14466 // Create the final options object
14467 s = jQuery.ajaxSetup( {}, options ),
14468 // Callbacks context
14469 callbackContext = s.context || s,
14470 // Context for global events is callbackContext if it is a DOM node or jQuery collection
14471 globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
14472 jQuery( callbackContext ) :
14473 jQuery.event,
14474 // Deferreds
14475 deferred = jQuery.Deferred(),
14476 completeDeferred = jQuery.Callbacks("once memory"),
14477 // Status-dependent callbacks
14478 statusCode = s.statusCode || {},
14479 // Headers (they are sent all at once)
14480 requestHeaders = {},
14481 requestHeadersNames = {},
14482 // The jqXHR state
14483 state = 0,
14484 // Default abort message
14485 strAbort = "canceled",
14486 // Fake xhr
14487 jqXHR = {
14488 readyState: 0,
14489
14490 // Builds headers hashtable if needed
14491 getResponseHeader: function( key ) {
14492 var match;
14493 if ( state === 2 ) {
14494 if ( !responseHeaders ) {
14495 responseHeaders = {};
14496 while ( (match = rheaders.exec( responseHeadersString )) ) {
14497 responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
14498 }
14499 }
14500 match = responseHeaders[ key.toLowerCase() ];
14501 }
14502 return match == null ? null : match;
14503 },
14504
14505 // Raw string
14506 getAllResponseHeaders: function() {
14507 return state === 2 ? responseHeadersString : null;
14508 },
14509
14510 // Caches the header
14511 setRequestHeader: function( name, value ) {
14512 var lname = name.toLowerCase();
14513 if ( !state ) {
14514 name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
14515 requestHeaders[ name ] = value;
14516 }
14517 return this;
14518 },
14519
14520 // Overrides response content-type header
14521 overrideMimeType: function( type ) {
14522 if ( !state ) {
14523 s.mimeType = type;
14524 }
14525 return this;
14526 },
14527
14528 // Status-dependent callbacks
14529 statusCode: function( map ) {
14530 var code;
14531 if ( map ) {
14532 if ( state < 2 ) {
14533 for ( code in map ) {
14534 // Lazy-add the new callback in a way that preserves old ones
14535 statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
14536 }
14537 } else {
14538 // Execute the appropriate callbacks
14539 jqXHR.always( map[ jqXHR.status ] );
14540 }
14541 }
14542 return this;
14543 },
14544
14545 // Cancel the request
14546 abort: function( statusText ) {
14547 var finalText = statusText || strAbort;
14548 if ( transport ) {
14549 transport.abort( finalText );
14550 }
14551 done( 0, finalText );
14552 return this;
14553 }
14554 };
14555
14556 // Attach deferreds
14557 deferred.promise( jqXHR ).complete = completeDeferred.add;
14558 jqXHR.success = jqXHR.done;
14559 jqXHR.error = jqXHR.fail;
14560
14561 // Remove hash character (#7531: and string promotion)
14562 // Add protocol if not provided (prefilters might expect it)
14563 // Handle falsy url in the settings object (#10093: consistency with old signature)
14564 // We also use the url parameter if available
14565 s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
14566 .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
14567
14568 // Alias method option to type as per ticket #12004
14569 s.type = options.method || options.type || s.method || s.type;
14570
14571 // Extract dataTypes list
14572 s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
14573
14574 // A cross-domain request is in order when we have a protocol:host:port mismatch
14575 if ( s.crossDomain == null ) {
14576 parts = rurl.exec( s.url.toLowerCase() );
14577 s.crossDomain = !!( parts &&
14578 ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
14579 ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
14580 ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
14581 );
14582 }
14583
14584 // Convert data if not already a string
14585 if ( s.data && s.processData && typeof s.data !== "string" ) {
14586 s.data = jQuery.param( s.data, s.traditional );
14587 }
14588
14589 // Apply prefilters
14590 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
14591
14592 // If request was aborted inside a prefilter, stop there
14593 if ( state === 2 ) {
14594 return jqXHR;
14595 }
14596
14597 // We can fire global events as of now if asked to
14598 fireGlobals = s.global;
14599
14600 // Watch for a new set of requests
14601 if ( fireGlobals && jQuery.active++ === 0 ) {
14602 jQuery.event.trigger("ajaxStart");
14603 }
14604
14605 // Uppercase the type
14606 s.type = s.type.toUpperCase();
14607
14608 // Determine if request has content
14609 s.hasContent = !rnoContent.test( s.type );
14610
14611 // Save the URL in case we're toying with the If-Modified-Since
14612 // and/or If-None-Match header later on
14613 cacheURL = s.url;
14614
14615 // More options handling for requests with no content
14616 if ( !s.hasContent ) {
14617
14618 // If data is available, append data to url
14619 if ( s.data ) {
14620 cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
14621 // #9682: remove data so that it's not used in an eventual retry
14622 delete s.data;
14623 }
14624
14625 // Add anti-cache in url if needed
14626 if ( s.cache === false ) {
14627 s.url = rts.test( cacheURL ) ?
14628
14629 // If there is already a '_' parameter, set its value
14630 cacheURL.replace( rts, "$1_=" + nonce++ ) :
14631
14632 // Otherwise add one to the end
14633 cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
14634 }
14635 }
14636
14637 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
14638 if ( s.ifModified ) {
14639 if ( jQuery.lastModified[ cacheURL ] ) {
14640 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
14641 }
14642 if ( jQuery.etag[ cacheURL ] ) {
14643 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
14644 }
14645 }
14646
14647 // Set the correct header, if data is being sent
14648 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
14649 jqXHR.setRequestHeader( "Content-Type", s.contentType );
14650 }
14651
14652 // Set the Accepts header for the server, depending on the dataType
14653 jqXHR.setRequestHeader(
14654 "Accept",
14655 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
14656 s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
14657 s.accepts[ "*" ]
14658 );
14659
14660 // Check for headers option
14661 for ( i in s.headers ) {
14662 jqXHR.setRequestHeader( i, s.headers[ i ] );
14663 }
14664
14665 // Allow custom headers/mimetypes and early abort
14666 if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
14667 // Abort if not done already and return
14668 return jqXHR.abort();
14669 }
14670
14671 // aborting is no longer a cancellation
14672 strAbort = "abort";
14673
14674 // Install callbacks on deferreds
14675 for ( i in { success: 1, error: 1, complete: 1 } ) {
14676 jqXHR[ i ]( s[ i ] );
14677 }
14678
14679 // Get transport
14680 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
14681
14682 // If no transport, we auto-abort
14683 if ( !transport ) {
14684 done( -1, "No Transport" );
14685 } else {
14686 jqXHR.readyState = 1;
14687
14688 // Send global event
14689 if ( fireGlobals ) {
14690 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
14691 }
14692 // Timeout
14693 if ( s.async && s.timeout > 0 ) {
14694 timeoutTimer = setTimeout(function() {
14695 jqXHR.abort("timeout");
14696 }, s.timeout );
14697 }
14698
14699 try {
14700 state = 1;
14701 transport.send( requestHeaders, done );
14702 } catch ( e ) {
14703 // Propagate exception as error if not done
14704 if ( state < 2 ) {
14705 done( -1, e );
14706 // Simply rethrow otherwise
14707 } else {
14708 throw e;
14709 }
14710 }
14711 }
14712
14713 // Callback for when everything is done
14714 function done( status, nativeStatusText, responses, headers ) {
14715 var isSuccess, success, error, response, modified,
14716 statusText = nativeStatusText;
14717
14718 // Called once
14719 if ( state === 2 ) {
14720 return;
14721 }
14722
14723 // State is "done" now
14724 state = 2;
14725
14726 // Clear timeout if it exists
14727 if ( timeoutTimer ) {
14728 clearTimeout( timeoutTimer );
14729 }
14730
14731 // Dereference transport for early garbage collection
14732 // (no matter how long the jqXHR object will be used)
14733 transport = undefined;
14734
14735 // Cache response headers
14736 responseHeadersString = headers || "";
14737
14738 // Set readyState
14739 jqXHR.readyState = status > 0 ? 4 : 0;
14740
14741 // Determine if successful
14742 isSuccess = status >= 200 && status < 300 || status === 304;
14743
14744 // Get response data
14745 if ( responses ) {
14746 response = ajaxHandleResponses( s, jqXHR, responses );
14747 }
14748
14749 // Convert no matter what (that way responseXXX fields are always set)
14750 response = ajaxConvert( s, response, jqXHR, isSuccess );
14751
14752 // If successful, handle type chaining
14753 if ( isSuccess ) {
14754
14755 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
14756 if ( s.ifModified ) {
14757 modified = jqXHR.getResponseHeader("Last-Modified");
14758 if ( modified ) {
14759 jQuery.lastModified[ cacheURL ] = modified;
14760 }
14761 modified = jqXHR.getResponseHeader("etag");
14762 if ( modified ) {
14763 jQuery.etag[ cacheURL ] = modified;
14764 }
14765 }
14766
14767 // if no content
14768 if ( status === 204 || s.type === "HEAD" ) {
14769 statusText = "nocontent";
14770
14771 // if not modified
14772 } else if ( status === 304 ) {
14773 statusText = "notmodified";
14774
14775 // If we have data, let's convert it
14776 } else {
14777 statusText = response.state;
14778 success = response.data;
14779 error = response.error;
14780 isSuccess = !error;
14781 }
14782 } else {
14783 // We extract error from statusText
14784 // then normalize statusText and status for non-aborts
14785 error = statusText;
14786 if ( status || !statusText ) {
14787 statusText = "error";
14788 if ( status < 0 ) {
14789 status = 0;
14790 }
14791 }
14792 }
14793
14794 // Set data for the fake xhr object
14795 jqXHR.status = status;
14796 jqXHR.statusText = ( nativeStatusText || statusText ) + "";
14797
14798 // Success/Error
14799 if ( isSuccess ) {
14800 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
14801 } else {
14802 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
14803 }
14804
14805 // Status-dependent callbacks
14806 jqXHR.statusCode( statusCode );
14807 statusCode = undefined;
14808
14809 if ( fireGlobals ) {
14810 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
14811 [ jqXHR, s, isSuccess ? success : error ] );
14812 }
14813
14814 // Complete
14815 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
14816
14817 if ( fireGlobals ) {
14818 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
14819 // Handle the global AJAX counter
14820 if ( !( --jQuery.active ) ) {
14821 jQuery.event.trigger("ajaxStop");
14822 }
14823 }
14824 }
14825
14826 return jqXHR;
14827 },
14828
14829 getJSON: function( url, data, callback ) {
14830 return jQuery.get( url, data, callback, "json" );
14831 },
14832
14833 getScript: function( url, callback ) {
14834 return jQuery.get( url, undefined, callback, "script" );
14835 }
14836});
14837
14838jQuery.each( [ "get", "post" ], function( i, method ) {
14839 jQuery[ method ] = function( url, data, callback, type ) {
14840 // shift arguments if data argument was omitted
14841 if ( jQuery.isFunction( data ) ) {
14842 type = type || callback;
14843 callback = data;
14844 data = undefined;
14845 }
14846
14847 return jQuery.ajax({
14848 url: url,
14849 type: method,
14850 dataType: type,
14851 data: data,
14852 success: callback
14853 });
14854 };
14855});
14856
14857// Attach a bunch of functions for handling common AJAX events
14858jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
14859 jQuery.fn[ type ] = function( fn ) {
14860 return this.on( type, fn );
14861 };
14862});
14863
14864
14865jQuery._evalUrl = function( url ) {
14866 return jQuery.ajax({
14867 url: url,
14868 type: "GET",
14869 dataType: "script",
14870 async: false,
14871 global: false,
14872 "throws": true
14873 });
14874};
14875
14876
14877jQuery.fn.extend({
14878 wrapAll: function( html ) {
14879 var wrap;
14880
14881 if ( jQuery.isFunction( html ) ) {
14882 return this.each(function( i ) {
14883 jQuery( this ).wrapAll( html.call(this, i) );
14884 });
14885 }
14886
14887 if ( this[ 0 ] ) {
14888
14889 // The elements to wrap the target around
14890 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
14891
14892 if ( this[ 0 ].parentNode ) {
14893 wrap.insertBefore( this[ 0 ] );
14894 }
14895
14896 wrap.map(function() {
14897 var elem = this;
14898
14899 while ( elem.firstElementChild ) {
14900 elem = elem.firstElementChild;
14901 }
14902
14903 return elem;
14904 }).append( this );
14905 }
14906
14907 return this;
14908 },
14909
14910 wrapInner: function( html ) {
14911 if ( jQuery.isFunction( html ) ) {
14912 return this.each(function( i ) {
14913 jQuery( this ).wrapInner( html.call(this, i) );
14914 });
14915 }
14916
14917 return this.each(function() {
14918 var self = jQuery( this ),
14919 contents = self.contents();
14920
14921 if ( contents.length ) {
14922 contents.wrapAll( html );
14923
14924 } else {
14925 self.append( html );
14926 }
14927 });
14928 },
14929
14930 wrap: function( html ) {
14931 var isFunction = jQuery.isFunction( html );
14932
14933 return this.each(function( i ) {
14934 jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
14935 });
14936 },
14937
14938 unwrap: function() {
14939 return this.parent().each(function() {
14940 if ( !jQuery.nodeName( this, "body" ) ) {
14941 jQuery( this ).replaceWith( this.childNodes );
14942 }
14943 }).end();
14944 }
14945});
14946
14947
14948jQuery.expr.filters.hidden = function( elem ) {
14949 // Support: Opera <= 12.12
14950 // Opera reports offsetWidths and offsetHeights less than zero on some elements
14951 return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
14952};
14953jQuery.expr.filters.visible = function( elem ) {
14954 return !jQuery.expr.filters.hidden( elem );
14955};
14956
14957
14958
14959
14960var r20 = /%20/g,
14961 rbracket = /\[\]$/,
14962 rCRLF = /\r?\n/g,
14963 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
14964 rsubmittable = /^(?:input|select|textarea|keygen)/i;
14965
14966function buildParams( prefix, obj, traditional, add ) {
14967 var name;
14968
14969 if ( jQuery.isArray( obj ) ) {
14970 // Serialize array item.
14971 jQuery.each( obj, function( i, v ) {
14972 if ( traditional || rbracket.test( prefix ) ) {
14973 // Treat each array item as a scalar.
14974 add( prefix, v );
14975
14976 } else {
14977 // Item is non-scalar (array or object), encode its numeric index.
14978 buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
14979 }
14980 });
14981
14982 } else if ( !traditional && jQuery.type( obj ) === "object" ) {
14983 // Serialize object item.
14984 for ( name in obj ) {
14985 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
14986 }
14987
14988 } else {
14989 // Serialize scalar item.
14990 add( prefix, obj );
14991 }
14992}
14993
14994// Serialize an array of form elements or a set of
14995// key/values into a query string
14996jQuery.param = function( a, traditional ) {
14997 var prefix,
14998 s = [],
14999 add = function( key, value ) {
15000 // If value is a function, invoke it and return its value
15001 value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
15002 s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
15003 };
15004
15005 // Set traditional to true for jQuery <= 1.3.2 behavior.
15006 if ( traditional === undefined ) {
15007 traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
15008 }
15009
15010 // If an array was passed in, assume that it is an array of form elements.
15011 if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
15012 // Serialize the form elements
15013 jQuery.each( a, function() {
15014 add( this.name, this.value );
15015 });
15016
15017 } else {
15018 // If traditional, encode the "old" way (the way 1.3.2 or older
15019 // did it), otherwise encode params recursively.
15020 for ( prefix in a ) {
15021 buildParams( prefix, a[ prefix ], traditional, add );
15022 }
15023 }
15024
15025 // Return the resulting serialization
15026 return s.join( "&" ).replace( r20, "+" );
15027};
15028
15029jQuery.fn.extend({
15030 serialize: function() {
15031 return jQuery.param( this.serializeArray() );
15032 },
15033 serializeArray: function() {
15034 return this.map(function() {
15035 // Can add propHook for "elements" to filter or add form elements
15036 var elements = jQuery.prop( this, "elements" );
15037 return elements ? jQuery.makeArray( elements ) : this;
15038 })
15039 .filter(function() {
15040 var type = this.type;
15041
15042 // Use .is( ":disabled" ) so that fieldset[disabled] works
15043 return this.name && !jQuery( this ).is( ":disabled" ) &&
15044 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
15045 ( this.checked || !rcheckableType.test( type ) );
15046 })
15047 .map(function( i, elem ) {
15048 var val = jQuery( this ).val();
15049
15050 return val == null ?
15051 null :
15052 jQuery.isArray( val ) ?
15053 jQuery.map( val, function( val ) {
15054 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
15055 }) :
15056 { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
15057 }).get();
15058 }
15059});
15060
15061
15062jQuery.ajaxSettings.xhr = function() {
15063 try {
15064 return new XMLHttpRequest();
15065 } catch( e ) {}
15066};
15067
15068var xhrId = 0,
15069 xhrCallbacks = {},
15070 xhrSuccessStatus = {
15071 // file protocol always yields status code 0, assume 200
15072 0: 200,
15073 // Support: IE9
15074 // #1450: sometimes IE returns 1223 when it should be 204
15075 1223: 204
15076 },
15077 xhrSupported = jQuery.ajaxSettings.xhr();
15078
15079// Support: IE9
15080// Open requests must be manually aborted on unload (#5280)
15081if ( window.ActiveXObject ) {
15082 jQuery( window ).on( "unload", function() {
15083 for ( var key in xhrCallbacks ) {
15084 xhrCallbacks[ key ]();
15085 }
15086 });
15087}
15088
15089support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
15090support.ajax = xhrSupported = !!xhrSupported;
15091
15092jQuery.ajaxTransport(function( options ) {
15093 var callback;
15094
15095 // Cross domain only allowed if supported through XMLHttpRequest
15096 if ( support.cors || xhrSupported && !options.crossDomain ) {
15097 return {
15098 send: function( headers, complete ) {
15099 var i,
15100 xhr = options.xhr(),
15101 id = ++xhrId;
15102
15103 xhr.open( options.type, options.url, options.async, options.username, options.password );
15104
15105 // Apply custom fields if provided
15106 if ( options.xhrFields ) {
15107 for ( i in options.xhrFields ) {
15108 xhr[ i ] = options.xhrFields[ i ];
15109 }
15110 }
15111
15112 // Override mime type if needed
15113 if ( options.mimeType && xhr.overrideMimeType ) {
15114 xhr.overrideMimeType( options.mimeType );
15115 }
15116
15117 // X-Requested-With header
15118 // For cross-domain requests, seeing as conditions for a preflight are
15119 // akin to a jigsaw puzzle, we simply never set it to be sure.
15120 // (it can always be set on a per-request basis or even using ajaxSetup)
15121 // For same-domain requests, won't change header if already provided.
15122 if ( !options.crossDomain && !headers["X-Requested-With"] ) {
15123 headers["X-Requested-With"] = "XMLHttpRequest";
15124 }
15125
15126 // Set headers
15127 for ( i in headers ) {
15128 xhr.setRequestHeader( i, headers[ i ] );
15129 }
15130
15131 // Callback
15132 callback = function( type ) {
15133 return function() {
15134 if ( callback ) {
15135 delete xhrCallbacks[ id ];
15136 callback = xhr.onload = xhr.onerror = null;
15137
15138 if ( type === "abort" ) {
15139 xhr.abort();
15140 } else if ( type === "error" ) {
15141 complete(
15142 // file: protocol always yields status 0; see #8605, #14207
15143 xhr.status,
15144 xhr.statusText
15145 );
15146 } else {
15147 complete(
15148 xhrSuccessStatus[ xhr.status ] || xhr.status,
15149 xhr.statusText,
15150 // Support: IE9
15151 // Accessing binary-data responseText throws an exception
15152 // (#11426)
15153 typeof xhr.responseText === "string" ? {
15154 text: xhr.responseText
15155 } : undefined,
15156 xhr.getAllResponseHeaders()
15157 );
15158 }
15159 }
15160 };
15161 };
15162
15163 // Listen to events
15164 xhr.onload = callback();
15165 xhr.onerror = callback("error");
15166
15167 // Create the abort callback
15168 callback = xhrCallbacks[ id ] = callback("abort");
15169
15170 try {
15171 // Do send the request (this may raise an exception)
15172 xhr.send( options.hasContent && options.data || null );
15173 } catch ( e ) {
15174 // #14683: Only rethrow if this hasn't been notified as an error yet
15175 if ( callback ) {
15176 throw e;
15177 }
15178 }
15179 },
15180
15181 abort: function() {
15182 if ( callback ) {
15183 callback();
15184 }
15185 }
15186 };
15187 }
15188});
15189
15190
15191
15192
15193// Install script dataType
15194jQuery.ajaxSetup({
15195 accepts: {
15196 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
15197 },
15198 contents: {
15199 script: /(?:java|ecma)script/
15200 },
15201 converters: {
15202 "text script": function( text ) {
15203 jQuery.globalEval( text );
15204 return text;
15205 }
15206 }
15207});
15208
15209// Handle cache's special case and crossDomain
15210jQuery.ajaxPrefilter( "script", function( s ) {
15211 if ( s.cache === undefined ) {
15212 s.cache = false;
15213 }
15214 if ( s.crossDomain ) {
15215 s.type = "GET";
15216 }
15217});
15218
15219// Bind script tag hack transport
15220jQuery.ajaxTransport( "script", function( s ) {
15221 // This transport only deals with cross domain requests
15222 if ( s.crossDomain ) {
15223 var script, callback;
15224 return {
15225 send: function( _, complete ) {
15226 script = jQuery("<script>").prop({
15227 async: true,
15228 charset: s.scriptCharset,
15229 src: s.url
15230 }).on(
15231 "load error",
15232 callback = function( evt ) {
15233 script.remove();
15234 callback = null;
15235 if ( evt ) {
15236 complete( evt.type === "error" ? 404 : 200, evt.type );
15237 }
15238 }
15239 );
15240 document.head.appendChild( script[ 0 ] );
15241 },
15242 abort: function() {
15243 if ( callback ) {
15244 callback();
15245 }
15246 }
15247 };
15248 }
15249});
15250
15251
15252
15253
15254var oldCallbacks = [],
15255 rjsonp = /(=)\?(?=&|$)|\?\?/;
15256
15257// Default jsonp settings
15258jQuery.ajaxSetup({
15259 jsonp: "callback",
15260 jsonpCallback: function() {
15261 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
15262 this[ callback ] = true;
15263 return callback;
15264 }
15265});
15266
15267// Detect, normalize options and install callbacks for jsonp requests
15268jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
15269
15270 var callbackName, overwritten, responseContainer,
15271 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
15272 "url" :
15273 typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
15274 );
15275
15276 // Handle iff the expected data type is "jsonp" or we have a parameter to set
15277 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
15278
15279 // Get callback name, remembering preexisting value associated with it
15280 callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
15281 s.jsonpCallback() :
15282 s.jsonpCallback;
15283
15284 // Insert callback into url or form data
15285 if ( jsonProp ) {
15286 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
15287 } else if ( s.jsonp !== false ) {
15288 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
15289 }
15290
15291 // Use data converter to retrieve json after script execution
15292 s.converters["script json"] = function() {
15293 if ( !responseContainer ) {
15294 jQuery.error( callbackName + " was not called" );
15295 }
15296 return responseContainer[ 0 ];
15297 };
15298
15299 // force json dataType
15300 s.dataTypes[ 0 ] = "json";
15301
15302 // Install callback
15303 overwritten = window[ callbackName ];
15304 window[ callbackName ] = function() {
15305 responseContainer = arguments;
15306 };
15307
15308 // Clean-up function (fires after converters)
15309 jqXHR.always(function() {
15310 // Restore preexisting value
15311 window[ callbackName ] = overwritten;
15312
15313 // Save back as free
15314 if ( s[ callbackName ] ) {
15315 // make sure that re-using the options doesn't screw things around
15316 s.jsonpCallback = originalSettings.jsonpCallback;
15317
15318 // save the callback name for future use
15319 oldCallbacks.push( callbackName );
15320 }
15321
15322 // Call if it was a function and we have a response
15323 if ( responseContainer && jQuery.isFunction( overwritten ) ) {
15324 overwritten( responseContainer[ 0 ] );
15325 }
15326
15327 responseContainer = overwritten = undefined;
15328 });
15329
15330 // Delegate to script
15331 return "script";
15332 }
15333});
15334
15335
15336
15337
15338// data: string of html
15339// context (optional): If specified, the fragment will be created in this context, defaults to document
15340// keepScripts (optional): If true, will include scripts passed in the html string
15341jQuery.parseHTML = function( data, context, keepScripts ) {
15342 if ( !data || typeof data !== "string" ) {
15343 return null;
15344 }
15345 if ( typeof context === "boolean" ) {
15346 keepScripts = context;
15347 context = false;
15348 }
15349 context = context || document;
15350
15351 var parsed = rsingleTag.exec( data ),
15352 scripts = !keepScripts && [];
15353
15354 // Single tag
15355 if ( parsed ) {
15356 return [ context.createElement( parsed[1] ) ];
15357 }
15358
15359 parsed = jQuery.buildFragment( [ data ], context, scripts );
15360
15361 if ( scripts && scripts.length ) {
15362 jQuery( scripts ).remove();
15363 }
15364
15365 return jQuery.merge( [], parsed.childNodes );
15366};
15367
15368
15369// Keep a copy of the old load method
15370var _load = jQuery.fn.load;
15371
15372/**
15373 * Load a url into a page
15374 */
15375jQuery.fn.load = function( url, params, callback ) {
15376 if ( typeof url !== "string" && _load ) {
15377 return _load.apply( this, arguments );
15378 }
15379
15380 var selector, type, response,
15381 self = this,
15382 off = url.indexOf(" ");
15383
15384 if ( off >= 0 ) {
15385 selector = jQuery.trim( url.slice( off ) );
15386 url = url.slice( 0, off );
15387 }
15388
15389 // If it's a function
15390 if ( jQuery.isFunction( params ) ) {
15391
15392 // We assume that it's the callback
15393 callback = params;
15394 params = undefined;
15395
15396 // Otherwise, build a param string
15397 } else if ( params && typeof params === "object" ) {
15398 type = "POST";
15399 }
15400
15401 // If we have elements to modify, make the request
15402 if ( self.length > 0 ) {
15403 jQuery.ajax({
15404 url: url,
15405
15406 // if "type" variable is undefined, then "GET" method will be used
15407 type: type,
15408 dataType: "html",
15409 data: params
15410 }).done(function( responseText ) {
15411
15412 // Save response for use in complete callback
15413 response = arguments;
15414
15415 self.html( selector ?
15416
15417 // If a selector was specified, locate the right elements in a dummy div
15418 // Exclude scripts to avoid IE 'Permission Denied' errors
15419 jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
15420
15421 // Otherwise use the full result
15422 responseText );
15423
15424 }).complete( callback && function( jqXHR, status ) {
15425 self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
15426 });
15427 }
15428
15429 return this;
15430};
15431
15432
15433
15434
15435jQuery.expr.filters.animated = function( elem ) {
15436 return jQuery.grep(jQuery.timers, function( fn ) {
15437 return elem === fn.elem;
15438 }).length;
15439};
15440
15441
15442
15443
15444var docElem = window.document.documentElement;
15445
15446/**
15447 * Gets a window from an element
15448 */
15449function getWindow( elem ) {
15450 return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
15451}
15452
15453jQuery.offset = {
15454 setOffset: function( elem, options, i ) {
15455 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
15456 position = jQuery.css( elem, "position" ),
15457 curElem = jQuery( elem ),
15458 props = {};
15459
15460 // Set position first, in-case top/left are set even on static elem
15461 if ( position === "static" ) {
15462 elem.style.position = "relative";
15463 }
15464
15465 curOffset = curElem.offset();
15466 curCSSTop = jQuery.css( elem, "top" );
15467 curCSSLeft = jQuery.css( elem, "left" );
15468 calculatePosition = ( position === "absolute" || position === "fixed" ) &&
15469 ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
15470
15471 // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
15472 if ( calculatePosition ) {
15473 curPosition = curElem.position();
15474 curTop = curPosition.top;
15475 curLeft = curPosition.left;
15476
15477 } else {
15478 curTop = parseFloat( curCSSTop ) || 0;
15479 curLeft = parseFloat( curCSSLeft ) || 0;
15480 }
15481
15482 if ( jQuery.isFunction( options ) ) {
15483 options = options.call( elem, i, curOffset );
15484 }
15485
15486 if ( options.top != null ) {
15487 props.top = ( options.top - curOffset.top ) + curTop;
15488 }
15489 if ( options.left != null ) {
15490 props.left = ( options.left - curOffset.left ) + curLeft;
15491 }
15492
15493 if ( "using" in options ) {
15494 options.using.call( elem, props );
15495
15496 } else {
15497 curElem.css( props );
15498 }
15499 }
15500};
15501
15502jQuery.fn.extend({
15503 offset: function( options ) {
15504 if ( arguments.length ) {
15505 return options === undefined ?
15506 this :
15507 this.each(function( i ) {
15508 jQuery.offset.setOffset( this, options, i );
15509 });
15510 }
15511
15512 var docElem, win,
15513 elem = this[ 0 ],
15514 box = { top: 0, left: 0 },
15515 doc = elem && elem.ownerDocument;
15516
15517 if ( !doc ) {
15518 return;
15519 }
15520
15521 docElem = doc.documentElement;
15522
15523 // Make sure it's not a disconnected DOM node
15524 if ( !jQuery.contains( docElem, elem ) ) {
15525 return box;
15526 }
15527
15528 // If we don't have gBCR, just use 0,0 rather than error
15529 // BlackBerry 5, iOS 3 (original iPhone)
15530 if ( typeof elem.getBoundingClientRect !== strundefined ) {
15531 box = elem.getBoundingClientRect();
15532 }
15533 win = getWindow( doc );
15534 return {
15535 top: box.top + win.pageYOffset - docElem.clientTop,
15536 left: box.left + win.pageXOffset - docElem.clientLeft
15537 };
15538 },
15539
15540 position: function() {
15541 if ( !this[ 0 ] ) {
15542 return;
15543 }
15544
15545 var offsetParent, offset,
15546 elem = this[ 0 ],
15547 parentOffset = { top: 0, left: 0 };
15548
15549 // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
15550 if ( jQuery.css( elem, "position" ) === "fixed" ) {
15551 // We assume that getBoundingClientRect is available when computed position is fixed
15552 offset = elem.getBoundingClientRect();
15553
15554 } else {
15555 // Get *real* offsetParent
15556 offsetParent = this.offsetParent();
15557
15558 // Get correct offsets
15559 offset = this.offset();
15560 if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
15561 parentOffset = offsetParent.offset();
15562 }
15563
15564 // Add offsetParent borders
15565 parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
15566 parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
15567 }
15568
15569 // Subtract parent offsets and element margins
15570 return {
15571 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
15572 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
15573 };
15574 },
15575
15576 offsetParent: function() {
15577 return this.map(function() {
15578 var offsetParent = this.offsetParent || docElem;
15579
15580 while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
15581 offsetParent = offsetParent.offsetParent;
15582 }
15583
15584 return offsetParent || docElem;
15585 });
15586 }
15587});
15588
15589// Create scrollLeft and scrollTop methods
15590jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
15591 var top = "pageYOffset" === prop;
15592
15593 jQuery.fn[ method ] = function( val ) {
15594 return access( this, function( elem, method, val ) {
15595 var win = getWindow( elem );
15596
15597 if ( val === undefined ) {
15598 return win ? win[ prop ] : elem[ method ];
15599 }
15600
15601 if ( win ) {
15602 win.scrollTo(
15603 !top ? val : window.pageXOffset,
15604 top ? val : window.pageYOffset
15605 );
15606
15607 } else {
15608 elem[ method ] = val;
15609 }
15610 }, method, val, arguments.length, null );
15611 };
15612});
15613
15614// Add the top/left cssHooks using jQuery.fn.position
15615// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
15616// getComputedStyle returns percent when specified for top/left/bottom/right
15617// rather than make the css module depend on the offset module, we just check for it here
15618jQuery.each( [ "top", "left" ], function( i, prop ) {
15619 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
15620 function( elem, computed ) {
15621 if ( computed ) {
15622 computed = curCSS( elem, prop );
15623 // if curCSS returns percentage, fallback to offset
15624 return rnumnonpx.test( computed ) ?
15625 jQuery( elem ).position()[ prop ] + "px" :
15626 computed;
15627 }
15628 }
15629 );
15630});
15631
15632
15633// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
15634jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
15635 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
15636 // margin is only for outerHeight, outerWidth
15637 jQuery.fn[ funcName ] = function( margin, value ) {
15638 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
15639 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
15640
15641 return access( this, function( elem, type, value ) {
15642 var doc;
15643
15644 if ( jQuery.isWindow( elem ) ) {
15645 // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
15646 // isn't a whole lot we can do. See pull request at this URL for discussion:
15647 // https://github.com/jquery/jquery/pull/764
15648 return elem.document.documentElement[ "client" + name ];
15649 }
15650
15651 // Get document width or height
15652 if ( elem.nodeType === 9 ) {
15653 doc = elem.documentElement;
15654
15655 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
15656 // whichever is greatest
15657 return Math.max(
15658 elem.body[ "scroll" + name ], doc[ "scroll" + name ],
15659 elem.body[ "offset" + name ], doc[ "offset" + name ],
15660 doc[ "client" + name ]
15661 );
15662 }
15663
15664 return value === undefined ?
15665 // Get width or height on the element, requesting but not forcing parseFloat
15666 jQuery.css( elem, type, extra ) :
15667
15668 // Set width or height on the element
15669 jQuery.style( elem, type, value, extra );
15670 }, type, chainable ? margin : undefined, chainable, null );
15671 };
15672 });
15673});
15674
15675
15676// The number of elements contained in the matched element set
15677jQuery.fn.size = function() {
15678 return this.length;
15679};
15680
15681jQuery.fn.andSelf = jQuery.fn.addBack;
15682
15683
15684
15685
15686// Register as a named AMD module, since jQuery can be concatenated with other
15687// files that may use define, but not via a proper concatenation script that
15688// understands anonymous AMD modules. A named AMD is safest and most robust
15689// way to register. Lowercase jquery is used because AMD module names are
15690// derived from file names, and jQuery is normally delivered in a lowercase
15691// file name. Do this after creating the global so that if an AMD module wants
15692// to call noConflict to hide this version of jQuery, it will work.
15693
15694// Note that for maximum portability, libraries that are not jQuery should
15695// declare themselves as anonymous modules, and avoid setting a global if an
15696// AMD loader is present. jQuery is a special case. For more information, see
15697// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
15698
15699if ( typeof define === "function" && define.amd ) {
15700 define( "jquery", [], function() {
15701 return jQuery;
15702 });
15703}
15704
15705
15706
15707
15708var
15709 // Map over jQuery in case of overwrite
15710 _jQuery = window.jQuery,
15711
15712 // Map over the $ in case of overwrite
15713 _$ = window.$;
15714
15715jQuery.noConflict = function( deep ) {
15716 if ( window.$ === jQuery ) {
15717 window.$ = _$;
15718 }
15719
15720 if ( deep && window.jQuery === jQuery ) {
15721 window.jQuery = _jQuery;
15722 }
15723
15724 return jQuery;
15725};
15726
15727// Expose jQuery and $ identifiers, even in
15728// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
15729// and CommonJS for browser emulators (#13566)
15730if ( typeof noGlobal === strundefined ) {
15731 window.jQuery = window.$ = jQuery;
15732}
15733
15734
15735
15736
15737return jQuery;
15738
15739}));
15740 </script>
363 <script> 15741 <script>
364/*! 15742/*!
365 * Bootstrap v3.2.0 (http://getbootstrap.com) 15743 * Bootstrap v3.2.0 (http://getbootstrap.com)
366 * Copyright 2011-2014 Twitter, Inc. 15744 * Copyright 2011-2014 Twitter, Inc.
367 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 15745 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
368 */ 15746 */
369if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
370 </script>
371 15747
372 <!--<script src="/js/bitcoinjs-1-0-0.js"></script>--> 15748if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
15749
15750/* ========================================================================
15751 * Bootstrap: transition.js v3.2.0
15752 * http://getbootstrap.com/javascript/#transitions
15753 * ========================================================================
15754 * Copyright 2011-2014 Twitter, Inc.
15755 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
15756 * ======================================================================== */
15757
15758
15759+function ($) {
15760 'use strict';
15761
15762 // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
15763 // ============================================================
15764
15765 function transitionEnd() {
15766 var el = document.createElement('bootstrap')
15767
15768 var transEndEventNames = {
15769 WebkitTransition : 'webkitTransitionEnd',
15770 MozTransition : 'transitionend',
15771 OTransition : 'oTransitionEnd otransitionend',
15772 transition : 'transitionend'
15773 }
15774
15775 for (var name in transEndEventNames) {
15776 if (el.style[name] !== undefined) {
15777 return { end: transEndEventNames[name] }
15778 }
15779 }
15780
15781 return false // explicit for ie8 ( ._.)
15782 }
15783
15784 // http://blog.alexmaccaw.com/css-transitions
15785 $.fn.emulateTransitionEnd = function (duration) {
15786 var called = false
15787 var $el = this
15788 $(this).one('bsTransitionEnd', function () { called = true })
15789 var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
15790 setTimeout(callback, duration)
15791 return this
15792 }
15793
15794 $(function () {
15795 $.support.transition = transitionEnd()
15796
15797 if (!$.support.transition) return
15798
15799 $.event.special.bsTransitionEnd = {
15800 bindType: $.support.transition.end,
15801 delegateType: $.support.transition.end,
15802 handle: function (e) {
15803 if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
15804 }
15805 }
15806 })
15807
15808}(jQuery);
15809
15810/* ========================================================================
15811 * Bootstrap: alert.js v3.2.0
15812 * http://getbootstrap.com/javascript/#alerts
15813 * ========================================================================
15814 * Copyright 2011-2014 Twitter, Inc.
15815 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
15816 * ======================================================================== */
15817
15818
15819+function ($) {
15820 'use strict';
15821
15822 // ALERT CLASS DEFINITION
15823 // ======================
15824
15825 var dismiss = '[data-dismiss="alert"]'
15826 var Alert = function (el) {
15827 $(el).on('click', dismiss, this.close)
15828 }
15829
15830 Alert.VERSION = '3.2.0'
15831
15832 Alert.prototype.close = function (e) {
15833 var $this = $(this)
15834 var selector = $this.attr('data-target')
15835
15836 if (!selector) {
15837 selector = $this.attr('href')
15838 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
15839 }
15840
15841 var $parent = $(selector)
15842
15843 if (e) e.preventDefault()
15844
15845 if (!$parent.length) {
15846 $parent = $this.hasClass('alert') ? $this : $this.parent()
15847 }
15848
15849 $parent.trigger(e = $.Event('close.bs.alert'))
15850
15851 if (e.isDefaultPrevented()) return
15852
15853 $parent.removeClass('in')
15854
15855 function removeElement() {
15856 // detach from parent, fire event then clean up data
15857 $parent.detach().trigger('closed.bs.alert').remove()
15858 }
15859
15860 $.support.transition && $parent.hasClass('fade') ?
15861 $parent
15862 .one('bsTransitionEnd', removeElement)
15863 .emulateTransitionEnd(150) :
15864 removeElement()
15865 }
15866
15867
15868 // ALERT PLUGIN DEFINITION
15869 // =======================
15870
15871 function Plugin(option) {
15872 return this.each(function () {
15873 var $this = $(this)
15874 var data = $this.data('bs.alert')
15875
15876 if (!data) $this.data('bs.alert', (data = new Alert(this)))
15877 if (typeof option == 'string') data[option].call($this)
15878 })
15879 }
15880
15881 var old = $.fn.alert
15882
15883 $.fn.alert = Plugin
15884 $.fn.alert.Constructor = Alert
15885
15886
15887 // ALERT NO CONFLICT
15888 // =================
15889
15890 $.fn.alert.noConflict = function () {
15891 $.fn.alert = old
15892 return this
15893 }
15894
15895
15896 // ALERT DATA-API
15897 // ==============
15898
15899 $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
15900
15901}(jQuery);
15902
15903/* ========================================================================
15904 * Bootstrap: button.js v3.2.0
15905 * http://getbootstrap.com/javascript/#buttons
15906 * ========================================================================
15907 * Copyright 2011-2014 Twitter, Inc.
15908 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
15909 * ======================================================================== */
15910
15911
15912+function ($) {
15913 'use strict';
15914
15915 // BUTTON PUBLIC CLASS DEFINITION
15916 // ==============================
15917
15918 var Button = function (element, options) {
15919 this.$element = $(element)
15920 this.options = $.extend({}, Button.DEFAULTS, options)
15921 this.isLoading = false
15922 }
15923
15924 Button.VERSION = '3.2.0'
15925
15926 Button.DEFAULTS = {
15927 loadingText: 'loading...'
15928 }
15929
15930 Button.prototype.setState = function (state) {
15931 var d = 'disabled'
15932 var $el = this.$element
15933 var val = $el.is('input') ? 'val' : 'html'
15934 var data = $el.data()
15935
15936 state = state + 'Text'
15937
15938 if (data.resetText == null) $el.data('resetText', $el[val]())
15939
15940 $el[val](data[state] == null ? this.options[state] : data[state])
15941
15942 // push to event loop to allow forms to submit
15943 setTimeout($.proxy(function () {
15944 if (state == 'loadingText') {
15945 this.isLoading = true
15946 $el.addClass(d).attr(d, d)
15947 } else if (this.isLoading) {
15948 this.isLoading = false
15949 $el.removeClass(d).removeAttr(d)
15950 }
15951 }, this), 0)
15952 }
15953
15954 Button.prototype.toggle = function () {
15955 var changed = true
15956 var $parent = this.$element.closest('[data-toggle="buttons"]')
15957
15958 if ($parent.length) {
15959 var $input = this.$element.find('input')
15960 if ($input.prop('type') == 'radio') {
15961 if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
15962 else $parent.find('.active').removeClass('active')
15963 }
15964 if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
15965 }
15966
15967 if (changed) this.$element.toggleClass('active')
15968 }
15969
15970
15971 // BUTTON PLUGIN DEFINITION
15972 // ========================
15973
15974 function Plugin(option) {
15975 return this.each(function () {
15976 var $this = $(this)
15977 var data = $this.data('bs.button')
15978 var options = typeof option == 'object' && option
15979
15980 if (!data) $this.data('bs.button', (data = new Button(this, options)))
15981
15982 if (option == 'toggle') data.toggle()
15983 else if (option) data.setState(option)
15984 })
15985 }
15986
15987 var old = $.fn.button
15988
15989 $.fn.button = Plugin
15990 $.fn.button.Constructor = Button
15991
15992
15993 // BUTTON NO CONFLICT
15994 // ==================
15995
15996 $.fn.button.noConflict = function () {
15997 $.fn.button = old
15998 return this
15999 }
16000
16001
16002 // BUTTON DATA-API
16003 // ===============
16004
16005 $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
16006 var $btn = $(e.target)
16007 if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
16008 Plugin.call($btn, 'toggle')
16009 e.preventDefault()
16010 })
16011
16012}(jQuery);
16013
16014/* ========================================================================
16015 * Bootstrap: carousel.js v3.2.0
16016 * http://getbootstrap.com/javascript/#carousel
16017 * ========================================================================
16018 * Copyright 2011-2014 Twitter, Inc.
16019 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
16020 * ======================================================================== */
16021
16022
16023+function ($) {
16024 'use strict';
16025
16026 // CAROUSEL CLASS DEFINITION
16027 // =========================
16028
16029 var Carousel = function (element, options) {
16030 this.$element = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this))
16031 this.$indicators = this.$element.find('.carousel-indicators')
16032 this.options = options
16033 this.paused =
16034 this.sliding =
16035 this.interval =
16036 this.$active =
16037 this.$items = null
16038
16039 this.options.pause == 'hover' && this.$element
16040 .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
16041 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
16042 }
16043
16044 Carousel.VERSION = '3.2.0'
16045
16046 Carousel.DEFAULTS = {
16047 interval: 5000,
16048 pause: 'hover',
16049 wrap: true
16050 }
16051
16052 Carousel.prototype.keydown = function (e) {
16053 switch (e.which) {
16054 case 37: this.prev(); break
16055 case 39: this.next(); break
16056 default: return
16057 }
16058
16059 e.preventDefault()
16060 }
16061
16062 Carousel.prototype.cycle = function (e) {
16063 e || (this.paused = false)
16064
16065 this.interval && clearInterval(this.interval)
16066
16067 this.options.interval
16068 && !this.paused
16069 && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
16070
16071 return this
16072 }
16073
16074 Carousel.prototype.getItemIndex = function (item) {
16075 this.$items = item.parent().children('.item')
16076 return this.$items.index(item || this.$active)
16077 }
16078
16079 Carousel.prototype.to = function (pos) {
16080 var that = this
16081 var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
16082
16083 if (pos > (this.$items.length - 1) || pos < 0) return
16084
16085 if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
16086 if (activeIndex == pos) return this.pause().cycle()
16087
16088 return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
16089 }
16090
16091 Carousel.prototype.pause = function (e) {
16092 e || (this.paused = true)
16093
16094 if (this.$element.find('.next, .prev').length && $.support.transition) {
16095 this.$element.trigger($.support.transition.end)
16096 this.cycle(true)
16097 }
16098
16099 this.interval = clearInterval(this.interval)
16100
16101 return this
16102 }
16103
16104 Carousel.prototype.next = function () {
16105 if (this.sliding) return
16106 return this.slide('next')
16107 }
16108
16109 Carousel.prototype.prev = function () {
16110 if (this.sliding) return
16111 return this.slide('prev')
16112 }
16113
16114 Carousel.prototype.slide = function (type, next) {
16115 var $active = this.$element.find('.item.active')
16116 var $next = next || $active[type]()
16117 var isCycling = this.interval
16118 var direction = type == 'next' ? 'left' : 'right'
16119 var fallback = type == 'next' ? 'first' : 'last'
16120 var that = this
16121
16122 if (!$next.length) {
16123 if (!this.options.wrap) return
16124 $next = this.$element.find('.item')[fallback]()
16125 }
16126
16127 if ($next.hasClass('active')) return (this.sliding = false)
16128
16129 var relatedTarget = $next[0]
16130 var slideEvent = $.Event('slide.bs.carousel', {
16131 relatedTarget: relatedTarget,
16132 direction: direction
16133 })
16134 this.$element.trigger(slideEvent)
16135 if (slideEvent.isDefaultPrevented()) return
16136
16137 this.sliding = true
16138
16139 isCycling && this.pause()
16140
16141 if (this.$indicators.length) {
16142 this.$indicators.find('.active').removeClass('active')
16143 var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
16144 $nextIndicator && $nextIndicator.addClass('active')
16145 }
16146
16147 var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
16148 if ($.support.transition && this.$element.hasClass('slide')) {
16149 $next.addClass(type)
16150 $next[0].offsetWidth // force reflow
16151 $active.addClass(direction)
16152 $next.addClass(direction)
16153 $active
16154 .one('bsTransitionEnd', function () {
16155 $next.removeClass([type, direction].join(' ')).addClass('active')
16156 $active.removeClass(['active', direction].join(' '))
16157 that.sliding = false
16158 setTimeout(function () {
16159 that.$element.trigger(slidEvent)
16160 }, 0)
16161 })
16162 .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
16163 } else {
16164 $active.removeClass('active')
16165 $next.addClass('active')
16166 this.sliding = false
16167 this.$element.trigger(slidEvent)
16168 }
16169
16170 isCycling && this.cycle()
16171
16172 return this
16173 }
16174
16175
16176 // CAROUSEL PLUGIN DEFINITION
16177 // ==========================
16178
16179 function Plugin(option) {
16180 return this.each(function () {
16181 var $this = $(this)
16182 var data = $this.data('bs.carousel')
16183 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
16184 var action = typeof option == 'string' ? option : options.slide
16185
16186 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
16187 if (typeof option == 'number') data.to(option)
16188 else if (action) data[action]()
16189 else if (options.interval) data.pause().cycle()
16190 })
16191 }
16192
16193 var old = $.fn.carousel
16194
16195 $.fn.carousel = Plugin
16196 $.fn.carousel.Constructor = Carousel
16197
16198
16199 // CAROUSEL NO CONFLICT
16200 // ====================
16201
16202 $.fn.carousel.noConflict = function () {
16203 $.fn.carousel = old
16204 return this
16205 }
16206
16207
16208 // CAROUSEL DATA-API
16209 // =================
16210
16211 $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
16212 var href
16213 var $this = $(this)
16214 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
16215 if (!$target.hasClass('carousel')) return
16216 var options = $.extend({}, $target.data(), $this.data())
16217 var slideIndex = $this.attr('data-slide-to')
16218 if (slideIndex) options.interval = false
16219
16220 Plugin.call($target, options)
16221
16222 if (slideIndex) {
16223 $target.data('bs.carousel').to(slideIndex)
16224 }
16225
16226 e.preventDefault()
16227 })
16228
16229 $(window).on('load', function () {
16230 $('[data-ride="carousel"]').each(function () {
16231 var $carousel = $(this)
16232 Plugin.call($carousel, $carousel.data())
16233 })
16234 })
16235
16236}(jQuery);
16237
16238/* ========================================================================
16239 * Bootstrap: collapse.js v3.2.0
16240 * http://getbootstrap.com/javascript/#collapse
16241 * ========================================================================
16242 * Copyright 2011-2014 Twitter, Inc.
16243 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
16244 * ======================================================================== */
16245
16246
16247+function ($) {
16248 'use strict';
16249
16250 // COLLAPSE PUBLIC CLASS DEFINITION
16251 // ================================
16252
16253 var Collapse = function (element, options) {
16254 this.$element = $(element)
16255 this.options = $.extend({}, Collapse.DEFAULTS, options)
16256 this.transitioning = null
16257
16258 if (this.options.parent) this.$parent = $(this.options.parent)
16259 if (this.options.toggle) this.toggle()
16260 }
16261
16262 Collapse.VERSION = '3.2.0'
16263
16264 Collapse.DEFAULTS = {
16265 toggle: true
16266 }
16267
16268 Collapse.prototype.dimension = function () {
16269 var hasWidth = this.$element.hasClass('width')
16270 return hasWidth ? 'width' : 'height'
16271 }
16272
16273 Collapse.prototype.show = function () {
16274 if (this.transitioning || this.$element.hasClass('in')) return
16275
16276 var startEvent = $.Event('show.bs.collapse')
16277 this.$element.trigger(startEvent)
16278 if (startEvent.isDefaultPrevented()) return
16279
16280 var actives = this.$parent && this.$parent.find('> .panel > .in')
16281
16282 if (actives && actives.length) {
16283 var hasData = actives.data('bs.collapse')
16284 if (hasData && hasData.transitioning) return
16285 Plugin.call(actives, 'hide')
16286 hasData || actives.data('bs.collapse', null)
16287 }
16288
16289 var dimension = this.dimension()
16290
16291 this.$element
16292 .removeClass('collapse')
16293 .addClass('collapsing')[dimension](0)
16294
16295 this.transitioning = 1
16296
16297 var complete = function () {
16298 this.$element
16299 .removeClass('collapsing')
16300 .addClass('collapse in')[dimension]('')
16301 this.transitioning = 0
16302 this.$element
16303 .trigger('shown.bs.collapse')
16304 }
16305
16306 if (!$.support.transition) return complete.call(this)
16307
16308 var scrollSize = $.camelCase(['scroll', dimension].join('-'))
16309
16310 this.$element
16311 .one('bsTransitionEnd', $.proxy(complete, this))
16312 .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize])
16313 }
16314
16315 Collapse.prototype.hide = function () {
16316 if (this.transitioning || !this.$element.hasClass('in')) return
16317
16318 var startEvent = $.Event('hide.bs.collapse')
16319 this.$element.trigger(startEvent)
16320 if (startEvent.isDefaultPrevented()) return
16321
16322 var dimension = this.dimension()
16323
16324 this.$element[dimension](this.$element[dimension]())[0].offsetHeight
16325
16326 this.$element
16327 .addClass('collapsing')
16328 .removeClass('collapse')
16329 .removeClass('in')
16330
16331 this.transitioning = 1
16332
16333 var complete = function () {
16334 this.transitioning = 0
16335 this.$element
16336 .trigger('hidden.bs.collapse')
16337 .removeClass('collapsing')
16338 .addClass('collapse')
16339 }
16340
16341 if (!$.support.transition) return complete.call(this)
16342
16343 this.$element
16344 [dimension](0)
16345 .one('bsTransitionEnd', $.proxy(complete, this))
16346 .emulateTransitionEnd(350)
16347 }
16348
16349 Collapse.prototype.toggle = function () {
16350 this[this.$element.hasClass('in') ? 'hide' : 'show']()
16351 }
16352
16353
16354 // COLLAPSE PLUGIN DEFINITION
16355 // ==========================
16356
16357 function Plugin(option) {
16358 return this.each(function () {
16359 var $this = $(this)
16360 var data = $this.data('bs.collapse')
16361 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
16362
16363 if (!data && options.toggle && option == 'show') option = !option
16364 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
16365 if (typeof option == 'string') data[option]()
16366 })
16367 }
16368
16369 var old = $.fn.collapse
16370
16371 $.fn.collapse = Plugin
16372 $.fn.collapse.Constructor = Collapse
16373
16374
16375 // COLLAPSE NO CONFLICT
16376 // ====================
16377
16378 $.fn.collapse.noConflict = function () {
16379 $.fn.collapse = old
16380 return this
16381 }
16382
16383
16384 // COLLAPSE DATA-API
16385 // =================
16386
16387 $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
16388 var href
16389 var $this = $(this)
16390 var target = $this.attr('data-target')
16391 || e.preventDefault()
16392 || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
16393 var $target = $(target)
16394 var data = $target.data('bs.collapse')
16395 var option = data ? 'toggle' : $this.data()
16396 var parent = $this.attr('data-parent')
16397 var $parent = parent && $(parent)
16398
16399 if (!data || !data.transitioning) {
16400 if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed')
16401 $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
16402 }
16403
16404 Plugin.call($target, option)
16405 })
16406
16407}(jQuery);
16408
16409/* ========================================================================
16410 * Bootstrap: dropdown.js v3.2.0
16411 * http://getbootstrap.com/javascript/#dropdowns
16412 * ========================================================================
16413 * Copyright 2011-2014 Twitter, Inc.
16414 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
16415 * ======================================================================== */
16416
16417
16418+function ($) {
16419 'use strict';
16420
16421 // DROPDOWN CLASS DEFINITION
16422 // =========================
16423
16424 var backdrop = '.dropdown-backdrop'
16425 var toggle = '[data-toggle="dropdown"]'
16426 var Dropdown = function (element) {
16427 $(element).on('click.bs.dropdown', this.toggle)
16428 }
16429
16430 Dropdown.VERSION = '3.2.0'
16431
16432 Dropdown.prototype.toggle = function (e) {
16433 var $this = $(this)
16434
16435 if ($this.is('.disabled, :disabled')) return
16436
16437 var $parent = getParent($this)
16438 var isActive = $parent.hasClass('open')
16439
16440 clearMenus()
16441
16442 if (!isActive) {
16443 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
16444 // if mobile we use a backdrop because click events don't delegate
16445 $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
16446 }
16447
16448 var relatedTarget = { relatedTarget: this }
16449 $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
16450
16451 if (e.isDefaultPrevented()) return
16452
16453 $this.trigger('focus')
16454
16455 $parent
16456 .toggleClass('open')
16457 .trigger('shown.bs.dropdown', relatedTarget)
16458 }
16459
16460 return false
16461 }
16462
16463 Dropdown.prototype.keydown = function (e) {
16464 if (!/(38|40|27)/.test(e.keyCode)) return
16465
16466 var $this = $(this)
16467
16468 e.preventDefault()
16469 e.stopPropagation()
16470
16471 if ($this.is('.disabled, :disabled')) return
16472
16473 var $parent = getParent($this)
16474 var isActive = $parent.hasClass('open')
16475
16476 if (!isActive || (isActive && e.keyCode == 27)) {
16477 if (e.which == 27) $parent.find(toggle).trigger('focus')
16478 return $this.trigger('click')
16479 }
16480
16481 var desc = ' li:not(.divider):visible a'
16482 var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
16483
16484 if (!$items.length) return
16485
16486 var index = $items.index($items.filter(':focus'))
16487
16488 if (e.keyCode == 38 && index > 0) index-- // up
16489 if (e.keyCode == 40 && index < $items.length - 1) index++ // down
16490 if (!~index) index = 0
16491
16492 $items.eq(index).trigger('focus')
16493 }
16494
16495 function clearMenus(e) {
16496 if (e && e.which === 3) return
16497 $(backdrop).remove()
16498 $(toggle).each(function () {
16499 var $parent = getParent($(this))
16500 var relatedTarget = { relatedTarget: this }
16501 if (!$parent.hasClass('open')) return
16502 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
16503 if (e.isDefaultPrevented()) return
16504 $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
16505 })
16506 }
16507
16508 function getParent($this) {
16509 var selector = $this.attr('data-target')
16510
16511 if (!selector) {
16512 selector = $this.attr('href')
16513 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
16514 }
16515
16516 var $parent = selector && $(selector)
16517
16518 return $parent && $parent.length ? $parent : $this.parent()
16519 }
16520
16521
16522 // DROPDOWN PLUGIN DEFINITION
16523 // ==========================
16524
16525 function Plugin(option) {
16526 return this.each(function () {
16527 var $this = $(this)
16528 var data = $this.data('bs.dropdown')
16529
16530 if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
16531 if (typeof option == 'string') data[option].call($this)
16532 })
16533 }
16534
16535 var old = $.fn.dropdown
16536
16537 $.fn.dropdown = Plugin
16538 $.fn.dropdown.Constructor = Dropdown
16539
16540
16541 // DROPDOWN NO CONFLICT
16542 // ====================
16543
16544 $.fn.dropdown.noConflict = function () {
16545 $.fn.dropdown = old
16546 return this
16547 }
16548
16549
16550 // APPLY TO STANDARD DROPDOWN ELEMENTS
16551 // ===================================
16552
16553 $(document)
16554 .on('click.bs.dropdown.data-api', clearMenus)
16555 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
16556 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
16557 .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
16558
16559}(jQuery);
16560
16561/* ========================================================================
16562 * Bootstrap: modal.js v3.2.0
16563 * http://getbootstrap.com/javascript/#modals
16564 * ========================================================================
16565 * Copyright 2011-2014 Twitter, Inc.
16566 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
16567 * ======================================================================== */
16568
16569
16570+function ($) {
16571 'use strict';
16572
16573 // MODAL CLASS DEFINITION
16574 // ======================
16575
16576 var Modal = function (element, options) {
16577 this.options = options
16578 this.$body = $(document.body)
16579 this.$element = $(element)
16580 this.$backdrop =
16581 this.isShown = null
16582 this.scrollbarWidth = 0
16583
16584 if (this.options.remote) {
16585 this.$element
16586 .find('.modal-content')
16587 .load(this.options.remote, $.proxy(function () {
16588 this.$element.trigger('loaded.bs.modal')
16589 }, this))
16590 }
16591 }
16592
16593 Modal.VERSION = '3.2.0'
16594
16595 Modal.DEFAULTS = {
16596 backdrop: true,
16597 keyboard: true,
16598 show: true
16599 }
16600
16601 Modal.prototype.toggle = function (_relatedTarget) {
16602 return this.isShown ? this.hide() : this.show(_relatedTarget)
16603 }
16604
16605 Modal.prototype.show = function (_relatedTarget) {
16606 var that = this
16607 var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
16608
16609 this.$element.trigger(e)
16610
16611 if (this.isShown || e.isDefaultPrevented()) return
16612
16613 this.isShown = true
16614
16615 this.checkScrollbar()
16616 this.$body.addClass('modal-open')
16617
16618 this.setScrollbar()
16619 this.escape()
16620
16621 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
16622
16623 this.backdrop(function () {
16624 var transition = $.support.transition && that.$element.hasClass('fade')
16625
16626 if (!that.$element.parent().length) {
16627 that.$element.appendTo(that.$body) // don't move modals dom position
16628 }
16629
16630 that.$element
16631 .show()
16632 .scrollTop(0)
16633
16634 if (transition) {
16635 that.$element[0].offsetWidth // force reflow
16636 }
16637
16638 that.$element
16639 .addClass('in')
16640 .attr('aria-hidden', false)
16641
16642 that.enforceFocus()
16643
16644 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
16645
16646 transition ?
16647 that.$element.find('.modal-dialog') // wait for modal to slide in
16648 .one('bsTransitionEnd', function () {
16649 that.$element.trigger('focus').trigger(e)
16650 })
16651 .emulateTransitionEnd(300) :
16652 that.$element.trigger('focus').trigger(e)
16653 })
16654 }
16655
16656 Modal.prototype.hide = function (e) {
16657 if (e) e.preventDefault()
16658
16659 e = $.Event('hide.bs.modal')
16660
16661 this.$element.trigger(e)
16662
16663 if (!this.isShown || e.isDefaultPrevented()) return
16664
16665 this.isShown = false
16666
16667 this.$body.removeClass('modal-open')
16668
16669 this.resetScrollbar()
16670 this.escape()
16671
16672 $(document).off('focusin.bs.modal')
16673
16674 this.$element
16675 .removeClass('in')
16676 .attr('aria-hidden', true)
16677 .off('click.dismiss.bs.modal')
16678
16679 $.support.transition && this.$element.hasClass('fade') ?
16680 this.$element
16681 .one('bsTransitionEnd', $.proxy(this.hideModal, this))
16682 .emulateTransitionEnd(300) :
16683 this.hideModal()
16684 }
16685
16686 Modal.prototype.enforceFocus = function () {
16687 $(document)
16688 .off('focusin.bs.modal') // guard against infinite focus loop
16689 .on('focusin.bs.modal', $.proxy(function (e) {
16690 if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
16691 this.$element.trigger('focus')
16692 }
16693 }, this))
16694 }
16695
16696 Modal.prototype.escape = function () {
16697 if (this.isShown && this.options.keyboard) {
16698 this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
16699 e.which == 27 && this.hide()
16700 }, this))
16701 } else if (!this.isShown) {
16702 this.$element.off('keyup.dismiss.bs.modal')
16703 }
16704 }
16705
16706 Modal.prototype.hideModal = function () {
16707 var that = this
16708 this.$element.hide()
16709 this.backdrop(function () {
16710 that.$element.trigger('hidden.bs.modal')
16711 })
16712 }
16713
16714 Modal.prototype.removeBackdrop = function () {
16715 this.$backdrop && this.$backdrop.remove()
16716 this.$backdrop = null
16717 }
16718
16719 Modal.prototype.backdrop = function (callback) {
16720 var that = this
16721 var animate = this.$element.hasClass('fade') ? 'fade' : ''
16722
16723 if (this.isShown && this.options.backdrop) {
16724 var doAnimate = $.support.transition && animate
16725
16726 this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
16727 .appendTo(this.$body)
16728
16729 this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
16730 if (e.target !== e.currentTarget) return
16731 this.options.backdrop == 'static'
16732 ? this.$element[0].focus.call(this.$element[0])
16733 : this.hide.call(this)
16734 }, this))
16735
16736 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
16737
16738 this.$backdrop.addClass('in')
16739
16740 if (!callback) return
16741
16742 doAnimate ?
16743 this.$backdrop
16744 .one('bsTransitionEnd', callback)
16745 .emulateTransitionEnd(150) :
16746 callback()
16747
16748 } else if (!this.isShown && this.$backdrop) {
16749 this.$backdrop.removeClass('in')
16750
16751 var callbackRemove = function () {
16752 that.removeBackdrop()
16753 callback && callback()
16754 }
16755 $.support.transition && this.$element.hasClass('fade') ?
16756 this.$backdrop
16757 .one('bsTransitionEnd', callbackRemove)
16758 .emulateTransitionEnd(150) :
16759 callbackRemove()
16760
16761 } else if (callback) {
16762 callback()
16763 }
16764 }
16765
16766 Modal.prototype.checkScrollbar = function () {
16767 if (document.body.clientWidth >= window.innerWidth) return
16768 this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
16769 }
16770
16771 Modal.prototype.setScrollbar = function () {
16772 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
16773 if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
16774 }
16775
16776 Modal.prototype.resetScrollbar = function () {
16777 this.$body.css('padding-right', '')
16778 }
16779
16780 Modal.prototype.measureScrollbar = function () { // thx walsh
16781 var scrollDiv = document.createElement('div')
16782 scrollDiv.className = 'modal-scrollbar-measure'
16783 this.$body.append(scrollDiv)
16784 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
16785 this.$body[0].removeChild(scrollDiv)
16786 return scrollbarWidth
16787 }
16788
16789
16790 // MODAL PLUGIN DEFINITION
16791 // =======================
16792
16793 function Plugin(option, _relatedTarget) {
16794 return this.each(function () {
16795 var $this = $(this)
16796 var data = $this.data('bs.modal')
16797 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
16798
16799 if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
16800 if (typeof option == 'string') data[option](_relatedTarget)
16801 else if (options.show) data.show(_relatedTarget)
16802 })
16803 }
16804
16805 var old = $.fn.modal
16806
16807 $.fn.modal = Plugin
16808 $.fn.modal.Constructor = Modal
16809
16810
16811 // MODAL NO CONFLICT
16812 // =================
16813
16814 $.fn.modal.noConflict = function () {
16815 $.fn.modal = old
16816 return this
16817 }
16818
16819
16820 // MODAL DATA-API
16821 // ==============
16822
16823 $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
16824 var $this = $(this)
16825 var href = $this.attr('href')
16826 var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
16827 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
16828
16829 if ($this.is('a')) e.preventDefault()
16830
16831 $target.one('show.bs.modal', function (showEvent) {
16832 if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
16833 $target.one('hidden.bs.modal', function () {
16834 $this.is(':visible') && $this.trigger('focus')
16835 })
16836 })
16837 Plugin.call($target, option, this)
16838 })
16839
16840}(jQuery);
16841
16842/* ========================================================================
16843 * Bootstrap: tooltip.js v3.2.0
16844 * http://getbootstrap.com/javascript/#tooltip
16845 * Inspired by the original jQuery.tipsy by Jason Frame
16846 * ========================================================================
16847 * Copyright 2011-2014 Twitter, Inc.
16848 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
16849 * ======================================================================== */
16850
16851
16852+function ($) {
16853 'use strict';
16854
16855 // TOOLTIP PUBLIC CLASS DEFINITION
16856 // ===============================
16857
16858 var Tooltip = function (element, options) {
16859 this.type =
16860 this.options =
16861 this.enabled =
16862 this.timeout =
16863 this.hoverState =
16864 this.$element = null
16865
16866 this.init('tooltip', element, options)
16867 }
16868
16869 Tooltip.VERSION = '3.2.0'
16870
16871 Tooltip.DEFAULTS = {
16872 animation: true,
16873 placement: 'top',
16874 selector: false,
16875 template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
16876 trigger: 'hover focus',
16877 title: '',
16878 delay: 0,
16879 html: false,
16880 container: false,
16881 viewport: {
16882 selector: 'body',
16883 padding: 0
16884 }
16885 }
16886
16887 Tooltip.prototype.init = function (type, element, options) {
16888 this.enabled = true
16889 this.type = type
16890 this.$element = $(element)
16891 this.options = this.getOptions(options)
16892 this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
16893
16894 var triggers = this.options.trigger.split(' ')
16895
16896 for (var i = triggers.length; i--;) {
16897 var trigger = triggers[i]
16898
16899 if (trigger == 'click') {
16900 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
16901 } else if (trigger != 'manual') {
16902 var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
16903 var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
16904
16905 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
16906 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
16907 }
16908 }
16909
16910 this.options.selector ?
16911 (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
16912 this.fixTitle()
16913 }
16914
16915 Tooltip.prototype.getDefaults = function () {
16916 return Tooltip.DEFAULTS
16917 }
16918
16919 Tooltip.prototype.getOptions = function (options) {
16920 options = $.extend({}, this.getDefaults(), this.$element.data(), options)
16921
16922 if (options.delay && typeof options.delay == 'number') {
16923 options.delay = {
16924 show: options.delay,
16925 hide: options.delay
16926 }
16927 }
16928
16929 return options
16930 }
16931
16932 Tooltip.prototype.getDelegateOptions = function () {
16933 var options = {}
16934 var defaults = this.getDefaults()
16935
16936 this._options && $.each(this._options, function (key, value) {
16937 if (defaults[key] != value) options[key] = value
16938 })
16939
16940 return options
16941 }
16942
16943 Tooltip.prototype.enter = function (obj) {
16944 var self = obj instanceof this.constructor ?
16945 obj : $(obj.currentTarget).data('bs.' + this.type)
16946
16947 if (!self) {
16948 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
16949 $(obj.currentTarget).data('bs.' + this.type, self)
16950 }
16951
16952 clearTimeout(self.timeout)
16953
16954 self.hoverState = 'in'
16955
16956 if (!self.options.delay || !self.options.delay.show) return self.show()
16957
16958 self.timeout = setTimeout(function () {
16959 if (self.hoverState == 'in') self.show()
16960 }, self.options.delay.show)
16961 }
16962
16963 Tooltip.prototype.leave = function (obj) {
16964 var self = obj instanceof this.constructor ?
16965 obj : $(obj.currentTarget).data('bs.' + this.type)
16966
16967 if (!self) {
16968 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
16969 $(obj.currentTarget).data('bs.' + this.type, self)
16970 }
16971
16972 clearTimeout(self.timeout)
16973
16974 self.hoverState = 'out'
16975
16976 if (!self.options.delay || !self.options.delay.hide) return self.hide()
16977
16978 self.timeout = setTimeout(function () {
16979 if (self.hoverState == 'out') self.hide()
16980 }, self.options.delay.hide)
16981 }
16982
16983 Tooltip.prototype.show = function () {
16984 var e = $.Event('show.bs.' + this.type)
16985
16986 if (this.hasContent() && this.enabled) {
16987 this.$element.trigger(e)
16988
16989 var inDom = $.contains(document.documentElement, this.$element[0])
16990 if (e.isDefaultPrevented() || !inDom) return
16991 var that = this
16992
16993 var $tip = this.tip()
16994
16995 var tipId = this.getUID(this.type)
16996
16997 this.setContent()
16998 $tip.attr('id', tipId)
16999 this.$element.attr('aria-describedby', tipId)
17000
17001 if (this.options.animation) $tip.addClass('fade')
17002
17003 var placement = typeof this.options.placement == 'function' ?
17004 this.options.placement.call(this, $tip[0], this.$element[0]) :
17005 this.options.placement
17006
17007 var autoToken = /\s?auto?\s?/i
17008 var autoPlace = autoToken.test(placement)
17009 if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
17010
17011 $tip
17012 .detach()
17013 .css({ top: 0, left: 0, display: 'block' })
17014 .addClass(placement)
17015 .data('bs.' + this.type, this)
17016
17017 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
17018
17019 var pos = this.getPosition()
17020 var actualWidth = $tip[0].offsetWidth
17021 var actualHeight = $tip[0].offsetHeight
17022
17023 if (autoPlace) {
17024 var orgPlacement = placement
17025 var $parent = this.$element.parent()
17026 var parentDim = this.getPosition($parent)
17027
17028 placement = placement == 'bottom' && pos.top + pos.height + actualHeight - parentDim.scroll > parentDim.height ? 'top' :
17029 placement == 'top' && pos.top - parentDim.scroll - actualHeight < 0 ? 'bottom' :
17030 placement == 'right' && pos.right + actualWidth > parentDim.width ? 'left' :
17031 placement == 'left' && pos.left - actualWidth < parentDim.left ? 'right' :
17032 placement
17033
17034 $tip
17035 .removeClass(orgPlacement)
17036 .addClass(placement)
17037 }
17038
17039 var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
17040
17041 this.applyPlacement(calculatedOffset, placement)
17042
17043 var complete = function () {
17044 that.$element.trigger('shown.bs.' + that.type)
17045 that.hoverState = null
17046 }
17047
17048 $.support.transition && this.$tip.hasClass('fade') ?
17049 $tip
17050 .one('bsTransitionEnd', complete)
17051 .emulateTransitionEnd(150) :
17052 complete()
17053 }
17054 }
17055
17056 Tooltip.prototype.applyPlacement = function (offset, placement) {
17057 var $tip = this.tip()
17058 var width = $tip[0].offsetWidth
17059 var height = $tip[0].offsetHeight
17060
17061 // manually read margins because getBoundingClientRect includes difference
17062 var marginTop = parseInt($tip.css('margin-top'), 10)
17063 var marginLeft = parseInt($tip.css('margin-left'), 10)
17064
17065 // we must check for NaN for ie 8/9
17066 if (isNaN(marginTop)) marginTop = 0
17067 if (isNaN(marginLeft)) marginLeft = 0
17068
17069 offset.top = offset.top + marginTop
17070 offset.left = offset.left + marginLeft
17071
17072 // $.fn.offset doesn't round pixel values
17073 // so we use setOffset directly with our own function B-0
17074 $.offset.setOffset($tip[0], $.extend({
17075 using: function (props) {
17076 $tip.css({
17077 top: Math.round(props.top),
17078 left: Math.round(props.left)
17079 })
17080 }
17081 }, offset), 0)
17082
17083 $tip.addClass('in')
17084
17085 // check to see if placing tip in new offset caused the tip to resize itself
17086 var actualWidth = $tip[0].offsetWidth
17087 var actualHeight = $tip[0].offsetHeight
17088
17089 if (placement == 'top' && actualHeight != height) {
17090 offset.top = offset.top + height - actualHeight
17091 }
17092
17093 var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
17094
17095 if (delta.left) offset.left += delta.left
17096 else offset.top += delta.top
17097
17098 var arrowDelta = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
17099 var arrowPosition = delta.left ? 'left' : 'top'
17100 var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight'
17101
17102 $tip.offset(offset)
17103 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition)
17104 }
17105
17106 Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
17107 this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
17108 }
17109
17110 Tooltip.prototype.setContent = function () {
17111 var $tip = this.tip()
17112 var title = this.getTitle()
17113
17114 $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
17115 $tip.removeClass('fade in top bottom left right')
17116 }
17117
17118 Tooltip.prototype.hide = function () {
17119 var that = this
17120 var $tip = this.tip()
17121 var e = $.Event('hide.bs.' + this.type)
17122
17123 this.$element.removeAttr('aria-describedby')
17124
17125 function complete() {
17126 if (that.hoverState != 'in') $tip.detach()
17127 that.$element.trigger('hidden.bs.' + that.type)
17128 }
17129
17130 this.$element.trigger(e)
17131
17132 if (e.isDefaultPrevented()) return
17133
17134 $tip.removeClass('in')
17135
17136 $.support.transition && this.$tip.hasClass('fade') ?
17137 $tip
17138 .one('bsTransitionEnd', complete)
17139 .emulateTransitionEnd(150) :
17140 complete()
17141
17142 this.hoverState = null
17143
17144 return this
17145 }
17146
17147 Tooltip.prototype.fixTitle = function () {
17148 var $e = this.$element
17149 if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
17150 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
17151 }
17152 }
17153
17154 Tooltip.prototype.hasContent = function () {
17155 return this.getTitle()
17156 }
17157
17158 Tooltip.prototype.getPosition = function ($element) {
17159 $element = $element || this.$element
17160 var el = $element[0]
17161 var isBody = el.tagName == 'BODY'
17162 return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, {
17163 scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),
17164 width: isBody ? $(window).width() : $element.outerWidth(),
17165 height: isBody ? $(window).height() : $element.outerHeight()
17166 }, isBody ? { top: 0, left: 0 } : $element.offset())
17167 }
17168
17169 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
17170 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
17171 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
17172 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
17173 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
17174
17175 }
17176
17177 Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
17178 var delta = { top: 0, left: 0 }
17179 if (!this.$viewport) return delta
17180
17181 var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
17182 var viewportDimensions = this.getPosition(this.$viewport)
17183
17184 if (/right|left/.test(placement)) {
17185 var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
17186 var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
17187 if (topEdgeOffset < viewportDimensions.top) { // top overflow
17188 delta.top = viewportDimensions.top - topEdgeOffset
17189 } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
17190 delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
17191 }
17192 } else {
17193 var leftEdgeOffset = pos.left - viewportPadding
17194 var rightEdgeOffset = pos.left + viewportPadding + actualWidth
17195 if (leftEdgeOffset < viewportDimensions.left) { // left overflow
17196 delta.left = viewportDimensions.left - leftEdgeOffset
17197 } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
17198 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
17199 }
17200 }
17201
17202 return delta
17203 }
17204
17205 Tooltip.prototype.getTitle = function () {
17206 var title
17207 var $e = this.$element
17208 var o = this.options
17209
17210 title = $e.attr('data-original-title')
17211 || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
17212
17213 return title
17214 }
17215
17216 Tooltip.prototype.getUID = function (prefix) {
17217 do prefix += ~~(Math.random() * 1000000)
17218 while (document.getElementById(prefix))
17219 return prefix
17220 }
17221
17222 Tooltip.prototype.tip = function () {
17223 return (this.$tip = this.$tip || $(this.options.template))
17224 }
17225
17226 Tooltip.prototype.arrow = function () {
17227 return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
17228 }
17229
17230 Tooltip.prototype.validate = function () {
17231 if (!this.$element[0].parentNode) {
17232 this.hide()
17233 this.$element = null
17234 this.options = null
17235 }
17236 }
17237
17238 Tooltip.prototype.enable = function () {
17239 this.enabled = true
17240 }
17241
17242 Tooltip.prototype.disable = function () {
17243 this.enabled = false
17244 }
17245
17246 Tooltip.prototype.toggleEnabled = function () {
17247 this.enabled = !this.enabled
17248 }
17249
17250 Tooltip.prototype.toggle = function (e) {
17251 var self = this
17252 if (e) {
17253 self = $(e.currentTarget).data('bs.' + this.type)
17254 if (!self) {
17255 self = new this.constructor(e.currentTarget, this.getDelegateOptions())
17256 $(e.currentTarget).data('bs.' + this.type, self)
17257 }
17258 }
17259
17260 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
17261 }
17262
17263 Tooltip.prototype.destroy = function () {
17264 clearTimeout(this.timeout)
17265 this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
17266 }
17267
17268
17269 // TOOLTIP PLUGIN DEFINITION
17270 // =========================
17271
17272 function Plugin(option) {
17273 return this.each(function () {
17274 var $this = $(this)
17275 var data = $this.data('bs.tooltip')
17276 var options = typeof option == 'object' && option
17277
17278 if (!data && option == 'destroy') return
17279 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
17280 if (typeof option == 'string') data[option]()
17281 })
17282 }
17283
17284 var old = $.fn.tooltip
17285
17286 $.fn.tooltip = Plugin
17287 $.fn.tooltip.Constructor = Tooltip
17288
17289
17290 // TOOLTIP NO CONFLICT
17291 // ===================
17292
17293 $.fn.tooltip.noConflict = function () {
17294 $.fn.tooltip = old
17295 return this
17296 }
17297
17298}(jQuery);
17299
17300/* ========================================================================
17301 * Bootstrap: popover.js v3.2.0
17302 * http://getbootstrap.com/javascript/#popovers
17303 * ========================================================================
17304 * Copyright 2011-2014 Twitter, Inc.
17305 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
17306 * ======================================================================== */
17307
17308
17309+function ($) {
17310 'use strict';
17311
17312 // POPOVER PUBLIC CLASS DEFINITION
17313 // ===============================
17314
17315 var Popover = function (element, options) {
17316 this.init('popover', element, options)
17317 }
17318
17319 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
17320
17321 Popover.VERSION = '3.2.0'
17322
17323 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
17324 placement: 'right',
17325 trigger: 'click',
17326 content: '',
17327 template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
17328 })
17329
17330
17331 // NOTE: POPOVER EXTENDS tooltip.js
17332 // ================================
17333
17334 Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
17335
17336 Popover.prototype.constructor = Popover
17337
17338 Popover.prototype.getDefaults = function () {
17339 return Popover.DEFAULTS
17340 }
17341
17342 Popover.prototype.setContent = function () {
17343 var $tip = this.tip()
17344 var title = this.getTitle()
17345 var content = this.getContent()
17346
17347 $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
17348 $tip.find('.popover-content').empty()[ // we use append for html objects to maintain js events
17349 this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
17350 ](content)
17351
17352 $tip.removeClass('fade top bottom left right in')
17353
17354 // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
17355 // this manually by checking the contents.
17356 if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
17357 }
17358
17359 Popover.prototype.hasContent = function () {
17360 return this.getTitle() || this.getContent()
17361 }
17362
17363 Popover.prototype.getContent = function () {
17364 var $e = this.$element
17365 var o = this.options
17366
17367 return $e.attr('data-content')
17368 || (typeof o.content == 'function' ?
17369 o.content.call($e[0]) :
17370 o.content)
17371 }
17372
17373 Popover.prototype.arrow = function () {
17374 return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
17375 }
17376
17377 Popover.prototype.tip = function () {
17378 if (!this.$tip) this.$tip = $(this.options.template)
17379 return this.$tip
17380 }
17381
17382
17383 // POPOVER PLUGIN DEFINITION
17384 // =========================
17385
17386 function Plugin(option) {
17387 return this.each(function () {
17388 var $this = $(this)
17389 var data = $this.data('bs.popover')
17390 var options = typeof option == 'object' && option
17391
17392 if (!data && option == 'destroy') return
17393 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
17394 if (typeof option == 'string') data[option]()
17395 })
17396 }
17397
17398 var old = $.fn.popover
17399
17400 $.fn.popover = Plugin
17401 $.fn.popover.Constructor = Popover
17402
17403
17404 // POPOVER NO CONFLICT
17405 // ===================
17406
17407 $.fn.popover.noConflict = function () {
17408 $.fn.popover = old
17409 return this
17410 }
17411
17412}(jQuery);
17413
17414/* ========================================================================
17415 * Bootstrap: scrollspy.js v3.2.0
17416 * http://getbootstrap.com/javascript/#scrollspy
17417 * ========================================================================
17418 * Copyright 2011-2014 Twitter, Inc.
17419 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
17420 * ======================================================================== */
17421
17422
17423+function ($) {
17424 'use strict';
17425
17426 // SCROLLSPY CLASS DEFINITION
17427 // ==========================
17428
17429 function ScrollSpy(element, options) {
17430 var process = $.proxy(this.process, this)
17431
17432 this.$body = $('body')
17433 this.$scrollElement = $(element).is('body') ? $(window) : $(element)
17434 this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
17435 this.selector = (this.options.target || '') + ' .nav li > a'
17436 this.offsets = []
17437 this.targets = []
17438 this.activeTarget = null
17439 this.scrollHeight = 0
17440
17441 this.$scrollElement.on('scroll.bs.scrollspy', process)
17442 this.refresh()
17443 this.process()
17444 }
17445
17446 ScrollSpy.VERSION = '3.2.0'
17447
17448 ScrollSpy.DEFAULTS = {
17449 offset: 10
17450 }
17451
17452 ScrollSpy.prototype.getScrollHeight = function () {
17453 return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
17454 }
17455
17456 ScrollSpy.prototype.refresh = function () {
17457 var offsetMethod = 'offset'
17458 var offsetBase = 0
17459
17460 if (!$.isWindow(this.$scrollElement[0])) {
17461 offsetMethod = 'position'
17462 offsetBase = this.$scrollElement.scrollTop()
17463 }
17464
17465 this.offsets = []
17466 this.targets = []
17467 this.scrollHeight = this.getScrollHeight()
17468
17469 var self = this
17470
17471 this.$body
17472 .find(this.selector)
17473 .map(function () {
17474 var $el = $(this)
17475 var href = $el.data('target') || $el.attr('href')
17476 var $href = /^#./.test(href) && $(href)
17477
17478 return ($href
17479 && $href.length
17480 && $href.is(':visible')
17481 && [[$href[offsetMethod]().top + offsetBase, href]]) || null
17482 })
17483 .sort(function (a, b) { return a[0] - b[0] })
17484 .each(function () {
17485 self.offsets.push(this[0])
17486 self.targets.push(this[1])
17487 })
17488 }
17489
17490 ScrollSpy.prototype.process = function () {
17491 var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
17492 var scrollHeight = this.getScrollHeight()
17493 var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
17494 var offsets = this.offsets
17495 var targets = this.targets
17496 var activeTarget = this.activeTarget
17497 var i
17498
17499 if (this.scrollHeight != scrollHeight) {
17500 this.refresh()
17501 }
17502
17503 if (scrollTop >= maxScroll) {
17504 return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
17505 }
17506
17507 if (activeTarget && scrollTop <= offsets[0]) {
17508 return activeTarget != (i = targets[0]) && this.activate(i)
17509 }
17510
17511 for (i = offsets.length; i--;) {
17512 activeTarget != targets[i]
17513 && scrollTop >= offsets[i]
17514 && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
17515 && this.activate(targets[i])
17516 }
17517 }
17518
17519 ScrollSpy.prototype.activate = function (target) {
17520 this.activeTarget = target
17521
17522 $(this.selector)
17523 .parentsUntil(this.options.target, '.active')
17524 .removeClass('active')
17525
17526 var selector = this.selector +
17527 '[data-target="' + target + '"],' +
17528 this.selector + '[href="' + target + '"]'
17529
17530 var active = $(selector)
17531 .parents('li')
17532 .addClass('active')
17533
17534 if (active.parent('.dropdown-menu').length) {
17535 active = active
17536 .closest('li.dropdown')
17537 .addClass('active')
17538 }
17539
17540 active.trigger('activate.bs.scrollspy')
17541 }
17542
17543
17544 // SCROLLSPY PLUGIN DEFINITION
17545 // ===========================
17546
17547 function Plugin(option) {
17548 return this.each(function () {
17549 var $this = $(this)
17550 var data = $this.data('bs.scrollspy')
17551 var options = typeof option == 'object' && option
17552
17553 if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
17554 if (typeof option == 'string') data[option]()
17555 })
17556 }
17557
17558 var old = $.fn.scrollspy
17559
17560 $.fn.scrollspy = Plugin
17561 $.fn.scrollspy.Constructor = ScrollSpy
17562
17563
17564 // SCROLLSPY NO CONFLICT
17565 // =====================
17566
17567 $.fn.scrollspy.noConflict = function () {
17568 $.fn.scrollspy = old
17569 return this
17570 }
17571
17572
17573 // SCROLLSPY DATA-API
17574 // ==================
17575
17576 $(window).on('load.bs.scrollspy.data-api', function () {
17577 $('[data-spy="scroll"]').each(function () {
17578 var $spy = $(this)
17579 Plugin.call($spy, $spy.data())
17580 })
17581 })
17582
17583}(jQuery);
17584
17585/* ========================================================================
17586 * Bootstrap: tab.js v3.2.0
17587 * http://getbootstrap.com/javascript/#tabs
17588 * ========================================================================
17589 * Copyright 2011-2014 Twitter, Inc.
17590 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
17591 * ======================================================================== */
17592
17593
17594+function ($) {
17595 'use strict';
17596
17597 // TAB CLASS DEFINITION
17598 // ====================
17599
17600 var Tab = function (element) {
17601 this.element = $(element)
17602 }
17603
17604 Tab.VERSION = '3.2.0'
17605
17606 Tab.prototype.show = function () {
17607 var $this = this.element
17608 var $ul = $this.closest('ul:not(.dropdown-menu)')
17609 var selector = $this.data('target')
17610
17611 if (!selector) {
17612 selector = $this.attr('href')
17613 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
17614 }
17615
17616 if ($this.parent('li').hasClass('active')) return
17617
17618 var previous = $ul.find('.active:last a')[0]
17619 var e = $.Event('show.bs.tab', {
17620 relatedTarget: previous
17621 })
17622
17623 $this.trigger(e)
17624
17625 if (e.isDefaultPrevented()) return
17626
17627 var $target = $(selector)
17628
17629 this.activate($this.closest('li'), $ul)
17630 this.activate($target, $target.parent(), function () {
17631 $this.trigger({
17632 type: 'shown.bs.tab',
17633 relatedTarget: previous
17634 })
17635 })
17636 }
17637
17638 Tab.prototype.activate = function (element, container, callback) {
17639 var $active = container.find('> .active')
17640 var transition = callback
17641 && $.support.transition
17642 && $active.hasClass('fade')
17643
17644 function next() {
17645 $active
17646 .removeClass('active')
17647 .find('> .dropdown-menu > .active')
17648 .removeClass('active')
17649
17650 element.addClass('active')
17651
17652 if (transition) {
17653 element[0].offsetWidth // reflow for transition
17654 element.addClass('in')
17655 } else {
17656 element.removeClass('fade')
17657 }
17658
17659 if (element.parent('.dropdown-menu')) {
17660 element.closest('li.dropdown').addClass('active')
17661 }
17662
17663 callback && callback()
17664 }
17665
17666 transition ?
17667 $active
17668 .one('bsTransitionEnd', next)
17669 .emulateTransitionEnd(150) :
17670 next()
17671
17672 $active.removeClass('in')
17673 }
17674
17675
17676 // TAB PLUGIN DEFINITION
17677 // =====================
17678
17679 function Plugin(option) {
17680 return this.each(function () {
17681 var $this = $(this)
17682 var data = $this.data('bs.tab')
17683
17684 if (!data) $this.data('bs.tab', (data = new Tab(this)))
17685 if (typeof option == 'string') data[option]()
17686 })
17687 }
17688
17689 var old = $.fn.tab
17690
17691 $.fn.tab = Plugin
17692 $.fn.tab.Constructor = Tab
17693
17694
17695 // TAB NO CONFLICT
17696 // ===============
17697
17698 $.fn.tab.noConflict = function () {
17699 $.fn.tab = old
17700 return this
17701 }
17702
17703
17704 // TAB DATA-API
17705 // ============
17706
17707 $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
17708 e.preventDefault()
17709 Plugin.call($(this), 'show')
17710 })
17711
17712}(jQuery);
17713
17714/* ========================================================================
17715 * Bootstrap: affix.js v3.2.0
17716 * http://getbootstrap.com/javascript/#affix
17717 * ========================================================================
17718 * Copyright 2011-2014 Twitter, Inc.
17719 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
17720 * ======================================================================== */
17721
17722
17723+function ($) {
17724 'use strict';
17725
17726 // AFFIX CLASS DEFINITION
17727 // ======================
17728
17729 var Affix = function (element, options) {
17730 this.options = $.extend({}, Affix.DEFAULTS, options)
17731
17732 this.$target = $(this.options.target)
17733 .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
17734 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
17735
17736 this.$element = $(element)
17737 this.affixed =
17738 this.unpin =
17739 this.pinnedOffset = null
17740
17741 this.checkPosition()
17742 }
17743
17744 Affix.VERSION = '3.2.0'
17745
17746 Affix.RESET = 'affix affix-top affix-bottom'
17747
17748 Affix.DEFAULTS = {
17749 offset: 0,
17750 target: window
17751 }
17752
17753 Affix.prototype.getPinnedOffset = function () {
17754 if (this.pinnedOffset) return this.pinnedOffset
17755 this.$element.removeClass(Affix.RESET).addClass('affix')
17756 var scrollTop = this.$target.scrollTop()
17757 var position = this.$element.offset()
17758 return (this.pinnedOffset = position.top - scrollTop)
17759 }
17760
17761 Affix.prototype.checkPositionWithEventLoop = function () {
17762 setTimeout($.proxy(this.checkPosition, this), 1)
17763 }
17764
17765 Affix.prototype.checkPosition = function () {
17766 if (!this.$element.is(':visible')) return
17767
17768 var scrollHeight = $(document).height()
17769 var scrollTop = this.$target.scrollTop()
17770 var position = this.$element.offset()
17771 var offset = this.options.offset
17772 var offsetTop = offset.top
17773 var offsetBottom = offset.bottom
17774
17775 if (typeof offset != 'object') offsetBottom = offsetTop = offset
17776 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
17777 if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
17778
17779 var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
17780 offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
17781 offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
17782
17783 if (this.affixed === affix) return
17784 if (this.unpin != null) this.$element.css('top', '')
17785
17786 var affixType = 'affix' + (affix ? '-' + affix : '')
17787 var e = $.Event(affixType + '.bs.affix')
17788
17789 this.$element.trigger(e)
17790
17791 if (e.isDefaultPrevented()) return
17792
17793 this.affixed = affix
17794 this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
17795
17796 this.$element
17797 .removeClass(Affix.RESET)
17798 .addClass(affixType)
17799 .trigger($.Event(affixType.replace('affix', 'affixed')))
17800
17801 if (affix == 'bottom') {
17802 this.$element.offset({
17803 top: scrollHeight - this.$element.height() - offsetBottom
17804 })
17805 }
17806 }
17807
17808
17809 // AFFIX PLUGIN DEFINITION
17810 // =======================
17811
17812 function Plugin(option) {
17813 return this.each(function () {
17814 var $this = $(this)
17815 var data = $this.data('bs.affix')
17816 var options = typeof option == 'object' && option
17817
17818 if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
17819 if (typeof option == 'string') data[option]()
17820 })
17821 }
17822
17823 var old = $.fn.affix
17824
17825 $.fn.affix = Plugin
17826 $.fn.affix.Constructor = Affix
17827
17828
17829 // AFFIX NO CONFLICT
17830 // =================
17831
17832 $.fn.affix.noConflict = function () {
17833 $.fn.affix = old
17834 return this
17835 }
17836
17837
17838 // AFFIX DATA-API
17839 // ==============
17840
17841 $(window).on('load', function () {
17842 $('[data-spy="affix"]').each(function () {
17843 var $spy = $(this)
17844 var data = $spy.data()
17845
17846 data.offset = data.offset || {}
17847
17848 if (data.offsetBottom) data.offset.bottom = data.offsetBottom
17849 if (data.offsetTop) data.offset.top = data.offsetTop
17850
17851 Plugin.call($spy, data)
17852 })
17853 })
17854
17855}(jQuery);
17856 </script>
373 <script> 17857 <script>
374(function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Bitcoin=e()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 17858(function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Bitcoin=e()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
375var assert = _dereq_('assert') 17859var assert = _dereq_('assert')
@@ -14835,10 +32319,7 @@ module.exports = Wallet
14835(79) 32319(79)
14836}); 32320});
14837 </script> 32321 </script>
14838 32322 <script>
14839 <!--<script src="/js/asmcrypto.js"></script>-->
14840<script>
14841// INCLUDE ASMCRYPTO
14842// https://rawgit.com/tresorit/asmcrypto.js/598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js 32323// https://rawgit.com/tresorit/asmcrypto.js/598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js
14843// Provides PBKDF2 functionality 32324// Provides PBKDF2 functionality
14844// It's faster than CryptoJS 32325// It's faster than CryptoJS
@@ -14846,8 +32327,8 @@ module.exports = Wallet
14846 32327
14847 32328
14848(function(exports, global) { 32329(function(exports, global) {
14849 "use strict";
14850 global["asmCrypto"] = exports; 32330 global["asmCrypto"] = exports;
32331 "use strict";
14851 function string_to_bytes(str) { 32332 function string_to_bytes(str) {
14852 var i, len = str.length, arr = new Uint8Array(len); 32333 var i, len = str.length, arr = new Uint8Array(len);
14853 for (i = 0; i < len; i += 1) { 32334 for (i = 0; i < len; i += 1) {
@@ -14926,8 +32407,7 @@ module.exports = Wallet
14926 var _aes_tables = [ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, 198, 248, 238, 246, 255, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44, 165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 255, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58, 0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 255, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70, 0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 255, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163, 0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 255, 180, 185, 174, 163, 128, 141, 154, 151, 0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 255, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141 ]; 32407 var _aes_tables = [ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, 198, 248, 238, 246, 255, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44, 165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 255, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58, 0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 255, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70, 0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 255, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163, 0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 255, 180, 185, 174, 163, 128, 141, 154, 151, 0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 255, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141 ];
14927 var _aes_heap_start = 2048; 32408 var _aes_heap_start = 2048;
14928 function _aes_asm(stdlib, foreign, buffer) { 32409 function _aes_asm(stdlib, foreign, buffer) {
14929 // Closure Compiler warning - commented out 32410 "use asm";
14930 //"use asm";
14931 var S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, S5 = 0, S6 = 0, S7 = 0, S8 = 0, S9 = 0, SA = 0, SB = 0, SC = 0, SD = 0, SE = 0, SF = 0; 32411 var S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, S5 = 0, S6 = 0, S7 = 0, S8 = 0, S9 = 0, SA = 0, SB = 0, SC = 0, SD = 0, SE = 0, SF = 0;
14932 var keySize = 0; 32412 var keySize = 0;
14933 var R00 = 0, R01 = 0, R02 = 0, R03 = 0, R04 = 0, R05 = 0, R06 = 0, R07 = 0, R08 = 0, R09 = 0, R0A = 0, R0B = 0, R0C = 0, R0D = 0, R0E = 0, R0F = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, R15 = 0, R16 = 0, R17 = 0, R18 = 0, R19 = 0, R1A = 0, R1B = 0, R1C = 0, R1D = 0, R1E = 0, R1F = 0, R20 = 0, R21 = 0, R22 = 0, R23 = 0, R24 = 0, R25 = 0, R26 = 0, R27 = 0, R28 = 0, R29 = 0, R2A = 0, R2B = 0, R2C = 0, R2D = 0, R2E = 0, R2F = 0, R30 = 0, R31 = 0, R32 = 0, R33 = 0, R34 = 0, R35 = 0, R36 = 0, R37 = 0, R38 = 0, R39 = 0, R3A = 0, R3B = 0, R3C = 0, R3D = 0, R3E = 0, R3F = 0, R40 = 0, R41 = 0, R42 = 0, R43 = 0, R44 = 0, R45 = 0, R46 = 0, R47 = 0, R48 = 0, R49 = 0, R4A = 0, R4B = 0, R4C = 0, R4D = 0, R4E = 0, R4F = 0, R50 = 0, R51 = 0, R52 = 0, R53 = 0, R54 = 0, R55 = 0, R56 = 0, R57 = 0, R58 = 0, R59 = 0, R5A = 0, R5B = 0, R5C = 0, R5D = 0, R5E = 0, R5F = 0, R60 = 0, R61 = 0, R62 = 0, R63 = 0, R64 = 0, R65 = 0, R66 = 0, R67 = 0, R68 = 0, R69 = 0, R6A = 0, R6B = 0, R6C = 0, R6D = 0, R6E = 0, R6F = 0, R70 = 0, R71 = 0, R72 = 0, R73 = 0, R74 = 0, R75 = 0, R76 = 0, R77 = 0, R78 = 0, R79 = 0, R7A = 0, R7B = 0, R7C = 0, R7D = 0, R7E = 0, R7F = 0, R80 = 0, R81 = 0, R82 = 0, R83 = 0, R84 = 0, R85 = 0, R86 = 0, R87 = 0, R88 = 0, R89 = 0, R8A = 0, R8B = 0, R8C = 0, R8D = 0, R8E = 0, R8F = 0, R90 = 0, R91 = 0, R92 = 0, R93 = 0, R94 = 0, R95 = 0, R96 = 0, R97 = 0, R98 = 0, R99 = 0, R9A = 0, R9B = 0, R9C = 0, R9D = 0, R9E = 0, R9F = 0, RA0 = 0, RA1 = 0, RA2 = 0, RA3 = 0, RA4 = 0, RA5 = 0, RA6 = 0, RA7 = 0, RA8 = 0, RA9 = 0, RAA = 0, RAB = 0, RAC = 0, RAD = 0, RAE = 0, RAF = 0, RB0 = 0, RB1 = 0, RB2 = 0, RB3 = 0, RB4 = 0, RB5 = 0, RB6 = 0, RB7 = 0, RB8 = 0, RB9 = 0, RBA = 0, RBB = 0, RBC = 0, RBD = 0, RBE = 0, RBF = 0, RC0 = 0, RC1 = 0, RC2 = 0, RC3 = 0, RC4 = 0, RC5 = 0, RC6 = 0, RC7 = 0, RC8 = 0, RC9 = 0, RCA = 0, RCB = 0, RCC = 0, RCD = 0, RCE = 0, RCF = 0, RD0 = 0, RD1 = 0, RD2 = 0, RD3 = 0, RD4 = 0, RD5 = 0, RD6 = 0, RD7 = 0, RD8 = 0, RD9 = 0, RDA = 0, RDB = 0, RDC = 0, RDD = 0, RDE = 0, RDF = 0, RE0 = 0, RE1 = 0, RE2 = 0, RE3 = 0, RE4 = 0, RE5 = 0, RE6 = 0, RE7 = 0, RE8 = 0, RE9 = 0, REA = 0, REB = 0, REC = 0, RED = 0, REE = 0, REF = 0; 32413 var R00 = 0, R01 = 0, R02 = 0, R03 = 0, R04 = 0, R05 = 0, R06 = 0, R07 = 0, R08 = 0, R09 = 0, R0A = 0, R0B = 0, R0C = 0, R0D = 0, R0E = 0, R0F = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, R15 = 0, R16 = 0, R17 = 0, R18 = 0, R19 = 0, R1A = 0, R1B = 0, R1C = 0, R1D = 0, R1E = 0, R1F = 0, R20 = 0, R21 = 0, R22 = 0, R23 = 0, R24 = 0, R25 = 0, R26 = 0, R27 = 0, R28 = 0, R29 = 0, R2A = 0, R2B = 0, R2C = 0, R2D = 0, R2E = 0, R2F = 0, R30 = 0, R31 = 0, R32 = 0, R33 = 0, R34 = 0, R35 = 0, R36 = 0, R37 = 0, R38 = 0, R39 = 0, R3A = 0, R3B = 0, R3C = 0, R3D = 0, R3E = 0, R3F = 0, R40 = 0, R41 = 0, R42 = 0, R43 = 0, R44 = 0, R45 = 0, R46 = 0, R47 = 0, R48 = 0, R49 = 0, R4A = 0, R4B = 0, R4C = 0, R4D = 0, R4E = 0, R4F = 0, R50 = 0, R51 = 0, R52 = 0, R53 = 0, R54 = 0, R55 = 0, R56 = 0, R57 = 0, R58 = 0, R59 = 0, R5A = 0, R5B = 0, R5C = 0, R5D = 0, R5E = 0, R5F = 0, R60 = 0, R61 = 0, R62 = 0, R63 = 0, R64 = 0, R65 = 0, R66 = 0, R67 = 0, R68 = 0, R69 = 0, R6A = 0, R6B = 0, R6C = 0, R6D = 0, R6E = 0, R6F = 0, R70 = 0, R71 = 0, R72 = 0, R73 = 0, R74 = 0, R75 = 0, R76 = 0, R77 = 0, R78 = 0, R79 = 0, R7A = 0, R7B = 0, R7C = 0, R7D = 0, R7E = 0, R7F = 0, R80 = 0, R81 = 0, R82 = 0, R83 = 0, R84 = 0, R85 = 0, R86 = 0, R87 = 0, R88 = 0, R89 = 0, R8A = 0, R8B = 0, R8C = 0, R8D = 0, R8E = 0, R8F = 0, R90 = 0, R91 = 0, R92 = 0, R93 = 0, R94 = 0, R95 = 0, R96 = 0, R97 = 0, R98 = 0, R99 = 0, R9A = 0, R9B = 0, R9C = 0, R9D = 0, R9E = 0, R9F = 0, RA0 = 0, RA1 = 0, RA2 = 0, RA3 = 0, RA4 = 0, RA5 = 0, RA6 = 0, RA7 = 0, RA8 = 0, RA9 = 0, RAA = 0, RAB = 0, RAC = 0, RAD = 0, RAE = 0, RAF = 0, RB0 = 0, RB1 = 0, RB2 = 0, RB3 = 0, RB4 = 0, RB5 = 0, RB6 = 0, RB7 = 0, RB8 = 0, RB9 = 0, RBA = 0, RBB = 0, RBC = 0, RBD = 0, RBE = 0, RBF = 0, RC0 = 0, RC1 = 0, RC2 = 0, RC3 = 0, RC4 = 0, RC5 = 0, RC6 = 0, RC7 = 0, RC8 = 0, RC9 = 0, RCA = 0, RCB = 0, RCC = 0, RCD = 0, RCE = 0, RCF = 0, RD0 = 0, RD1 = 0, RD2 = 0, RD3 = 0, RD4 = 0, RD5 = 0, RD6 = 0, RD7 = 0, RD8 = 0, RD9 = 0, RDA = 0, RDB = 0, RDC = 0, RDD = 0, RDE = 0, RDF = 0, RE0 = 0, RE1 = 0, RE2 = 0, RE3 = 0, RE4 = 0, RE5 = 0, RE6 = 0, RE7 = 0, RE8 = 0, RE9 = 0, REA = 0, REB = 0, REC = 0, RED = 0, REE = 0, REF = 0;
@@ -17384,8 +34864,7 @@ module.exports = Wallet
17384 cfb_aes_prototype.encrypt = cfb_aes_encrypt; 34864 cfb_aes_prototype.encrypt = cfb_aes_encrypt;
17385 cfb_aes_prototype.decrypt = cfb_aes_decrypt; 34865 cfb_aes_prototype.decrypt = cfb_aes_decrypt;
17386 function sha256_asm(stdlib, foreign, buffer) { 34866 function sha256_asm(stdlib, foreign, buffer) {
17387 // Closure Compiler warning - commented out 34867 "use asm";
17388 //"use asm";
17389 var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0, TOTAL = 0; 34868 var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0, TOTAL = 0;
17390 var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0, O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0; 34869 var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0, O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0;
17391 var HEAP = new stdlib.Uint8Array(buffer); 34870 var HEAP = new stdlib.Uint8Array(buffer);
@@ -18252,9 +35731,7 @@ module.exports = Wallet
18252 HEAP[offset + length + 1 | 0] = block >>> 16 & 255; 35731 HEAP[offset + length + 1 | 0] = block >>> 16 & 255;
18253 HEAP[offset + length + 2 | 0] = block >>> 8 & 255; 35732 HEAP[offset + length + 2 | 0] = block >>> 8 & 255;
18254 HEAP[offset + length + 3 | 0] = block & 255; 35733 HEAP[offset + length + 3 | 0] = block & 255;
18255 // Closure compiler warning - The result of the 'bitor' operator is not being used 35734 hmac_finish(offset, length + 4 | 0, -1) | 0;
18256 //hmac_finish(offset, length + 4 | 0, -1) | 0;
18257 hmac_finish(offset, length + 4 | 0, -1);
18258 h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5, 35735 h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5,
18259 h6 = t6 = H6, h7 = t7 = H7; 35736 h6 = t6 = H6, h7 = t7 = H7;
18260 count = count - 1 | 0; 35737 count = count - 1 | 0;
@@ -18364,8 +35841,7 @@ module.exports = Wallet
18364 sha256_prototype.process = sha256_process; 35841 sha256_prototype.process = sha256_process;
18365 sha256_prototype.finish = sha256_finish; 35842 sha256_prototype.finish = sha256_finish;
18366 function sha512_asm(stdlib, foreign, buffer) { 35843 function sha512_asm(stdlib, foreign, buffer) {
18367 // Closure Compiler warning - commented out 35844 "use asm";
18368 //"use asm";
18369 var H0h = 0, H0l = 0, H1h = 0, H1l = 0, H2h = 0, H2l = 0, H3h = 0, H3l = 0, H4h = 0, H4l = 0, H5h = 0, H5l = 0, H6h = 0, H6l = 0, H7h = 0, H7l = 0, TOTAL = 0; 35845 var H0h = 0, H0l = 0, H1h = 0, H1l = 0, H2h = 0, H2l = 0, H3h = 0, H3l = 0, H4h = 0, H4l = 0, H5h = 0, H5l = 0, H6h = 0, H6l = 0, H7h = 0, H7l = 0, TOTAL = 0;
18370 var I0h = 0, I0l = 0, I1h = 0, I1l = 0, I2h = 0, I2l = 0, I3h = 0, I3l = 0, I4h = 0, I4l = 0, I5h = 0, I5l = 0, I6h = 0, I6l = 0, I7h = 0, I7l = 0, O0h = 0, O0l = 0, O1h = 0, O1l = 0, O2h = 0, O2l = 0, O3h = 0, O3l = 0, O4h = 0, O4l = 0, O5h = 0, O5l = 0, O6h = 0, O6l = 0, O7h = 0, O7l = 0; 35846 var I0h = 0, I0l = 0, I1h = 0, I1l = 0, I2h = 0, I2l = 0, I3h = 0, I3l = 0, I4h = 0, I4l = 0, I5h = 0, I5l = 0, I6h = 0, I6l = 0, I7h = 0, I7l = 0, O0h = 0, O0l = 0, O1h = 0, O1l = 0, O2h = 0, O2l = 0, O3h = 0, O3l = 0, O4h = 0, O4l = 0, O5h = 0, O5l = 0, O6h = 0, O6l = 0, O7h = 0, O7l = 0;
18371 var HEAP = new stdlib.Uint8Array(buffer); 35847 var HEAP = new stdlib.Uint8Array(buffer);
@@ -21591,9 +39067,7 @@ module.exports = Wallet
21591 HEAP[offset + length + 1 | 0] = block >>> 16 & 255; 39067 HEAP[offset + length + 1 | 0] = block >>> 16 & 255;
21592 HEAP[offset + length + 2 | 0] = block >>> 8 & 255; 39068 HEAP[offset + length + 2 | 0] = block >>> 8 & 255;
21593 HEAP[offset + length + 3 | 0] = block & 255; 39069 HEAP[offset + length + 3 | 0] = block & 255;
21594 // Closure compiler warning - The result of the 'bitor' operator is not being used 39070 hmac_finish(offset, length + 4 | 0, -1) | 0;
21595 //hmac_finish(offset, length + 4 | 0, -1) | 0;
21596 hmac_finish(offset, length + 4 | 0, -1);
21597 h0h = t0h = H0h; 39071 h0h = t0h = H0h;
21598 h0l = t0l = H0l; 39072 h0l = t0l = H0l;
21599 h1h = t1h = H1h; 39073 h1h = t1h = H1h;
@@ -22076,7 +39550,7 @@ module.exports = Wallet
22076 return SHA256_instance.reset().process(data).finish().result; 39550 return SHA256_instance.reset().process(data).finish().result;
22077 } 39551 }
22078 function sha256_hex(data) { 39552 function sha256_hex(data) {
22079 var result = sha256_bytes(data); 39553 var result = sha256_bytes(data.toUTF8Array());
22080 return bytes_to_hex(result); 39554 return bytes_to_hex(result);
22081 } 39555 }
22082 function sha256_base64(data) { 39556 function sha256_base64(data) {
@@ -22161,8 +39635,8 @@ module.exports = Wallet
22161 if (password === undefined) throw new SyntaxError("password required"); 39635 if (password === undefined) throw new SyntaxError("password required");
22162 if (salt === undefined) throw new SyntaxError("salt required"); 39636 if (salt === undefined) throw new SyntaxError("salt required");
22163 return pbkdf2_hmac_sha256_instance.reset({ 39637 return pbkdf2_hmac_sha256_instance.reset({
22164 password: password 39638 password: password.toUTF8Array()
22165 }).generate(salt, iterations, dklen).result; 39639 }).generate(salt.toUTF8Array(), iterations, dklen).result;
22166 } 39640 }
22167 function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) { 39641 function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) {
22168 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen); 39642 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen);
@@ -22184,8 +39658,8 @@ module.exports = Wallet
22184 if (password === undefined) throw new SyntaxError("password required"); 39658 if (password === undefined) throw new SyntaxError("password required");
22185 if (salt === undefined) throw new SyntaxError("salt required"); 39659 if (salt === undefined) throw new SyntaxError("salt required");
22186 return pbkdf2_hmac_sha512_instance.reset({ 39660 return pbkdf2_hmac_sha512_instance.reset({
22187 password: password 39661 password: password.toUTF8Array()
22188 }).generate(salt, iterations, dklen).result; 39662 }).generate(salt.toUTF8Array(), iterations, dklen).result;
22189 } 39663 }
22190 function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) { 39664 function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) {
22191 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen); 39665 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen);
@@ -22305,190 +39779,44 @@ module.exports = Wallet
22305})({}, function() { 39779})({}, function() {
22306 return this; 39780 return this;
22307}()); 39781}());
22308</script>
22309
22310 <!--<script src="/js/jsbip39.js"></script>-->
22311<script>
22312/*
22313 * Copyright (c) 2013 Pavol Rusnak
22314 *
22315 * Permission is hereby granted, free of charge, to any person obtaining a copy of
22316 * this software and associated documentation files (the "Software"), to deal in
22317 * the Software without restriction, including without limitation the rights to
22318 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
22319 * of the Software, and to permit persons to whom the Software is furnished to do
22320 * so, subject to the following conditions:
22321 *
22322 * The above copyright notice and this permission notice shall be included in all
22323 * copies or substantial portions of the Software.
22324 *
22325 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22326 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22327 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22328 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22329 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22330 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22331 */
22332
22333/*
22334 * Javascript port from python by Ian Coleman
22335 *
22336 * Includes code from asmCrypto
22337 * https://github.com/tresorit/asmcrypto.js
22338 */
22339
22340var Mnemonic = function(language) {
22341
22342 var PBKDF2_ROUNDS = 2048;
22343 var RADIX = 2048;
22344
22345 var self = this;
22346 var wordlist = [];
22347
22348 function init() {
22349 wordlist = WORDLISTS[language];
22350 if (wordlist.length != RADIX) {
22351 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
22352 throw err;
22353 }
22354 }
22355
22356 self.generate = function(strength) {
22357 strength = strength || 128;
22358 var r = strength % 32;
22359 if (r > 0) {
22360 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
22361 }
22362 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
22363 if (!hasStrongCrypto) {
22364 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
22365 }
22366 var buffer = new Uint8Array(strength / 8);
22367 var data = crypto.getRandomValues(buffer);
22368 return self.toMnemonic(data);
22369 }
22370
22371 self.toMnemonic = function(data) {
22372 if (data.length % 4 > 0) {
22373 throw 'Data length in bits should be divisible by 32, but it is not (' + data.length + ' bytes = ' + data.length*8 + ' bits).'
22374 }
22375
22376 //h = hashlib.sha256(data).hexdigest()
22377 var uintArray = new Uint8Array(data);
22378 var h = asmCrypto.SHA256.bytes(uintArray);
22379
22380 // b is a binary string, eg '00111010101100...'
22381 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
22382 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
22383 //
22384 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
22385 // c = bin(int(h, 16))[2:].zfill(256)
22386 // d = c[:len(data) * 8 / 32]
22387 var a = byteArrayToBinaryString(data);
22388 var c = byteArrayToBinaryString(h);
22389 var d = c.substring(0, data.length * 8 / 32);
22390 // b = line1 + line2
22391 var b = a + d;
22392 39782
22393 var result = []; 39783String.prototype.toUTF8Array = function() {
22394 var blen = b.length / 11; 39784 var str = this;
22395 for (var i=0; i<blen; i++) { 39785 var utf8 = [];
22396 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2); 39786 for (var i=0; i < str.length; i++) {
22397 result.push(wordlist[idx]); 39787 var charcode = str.charCodeAt(i);
39788 if (charcode < 0x80) utf8.push(charcode);
39789 else if (charcode < 0x800) {
39790 utf8.push(0xc0 | (charcode >> 6),
39791 0x80 | (charcode & 0x3f));
22398 } 39792 }
22399 return result.join(' '); 39793 else if (charcode < 0xd800 || charcode >= 0xe000) {
22400 } 39794 utf8.push(0xe0 | (charcode >> 12),
22401 39795 0x80 | ((charcode>>6) & 0x3f),
22402 self.check = function(mnemonic) { 39796 0x80 | (charcode & 0x3f));
22403 var mnemonic = mnemonic.split(' ')
22404 if (mnemonic.length % 3 > 0) {
22405 return false
22406 }
22407 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
22408 var idx = [];
22409 for (var i=0; i<mnemonic.length; i++) {
22410 var word = mnemonic[i];
22411 var wordIndex = wordlist.indexOf(word);
22412 if (wordIndex == -1) {
22413 return false;
22414 }
22415 var binaryIndex = zfill(wordIndex.toString(2), 11);
22416 idx.push(binaryIndex);
22417 }
22418 var b = idx.join('');
22419 var l = b.length;
22420 //d = b[:l / 33 * 32]
22421 //h = b[-l / 33:]
22422 var d = b.substring(0, l / 33 * 32);
22423 var h = b.substring(l - l / 33, l);
22424 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
22425 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
22426 var nd = binaryStringToByteArray(d);
22427 var ndHash = asmCrypto.SHA256.bytes(nd);
22428 var ndBstr = zfill(byteArrayToBinaryString(ndHash), 256);
22429 var nh = ndBstr.substring(0,l/33);
22430 return h == nh;
22431 }
22432
22433 self.toSeed = function(mnemonic, passphrase) {
22434 passphrase = passphrase || '';
22435 mnemonic = self.normalizeString(mnemonic)
22436 passphrase = self.normalizeString(passphrase)
22437 passphrase = "mnemonic" + passphrase;
22438 //return PBKDF2(mnemonic, 'mnemonic' + passphrase, iterations=PBKDF2_ROUNDS, macmodule=hmac, digestmodule=hashlib.sha512).read(64)
22439 return asmCrypto.PBKDF2_HMAC_SHA512.hex(mnemonic, passphrase, PBKDF2_ROUNDS, 512/8);
22440 }
22441
22442 self.normalizeString = function(str) {
22443 if (typeof str.normalize == "function") {
22444 return str.normalize("NFKD");
22445 } 39797 }
39798 // surrogate pair
22446 else { 39799 else {
22447 // TODO find a library to do this 39800 i++;
22448 // Not supported on firefox mobile 39801 // UTF-16 encodes 0x10000-0x10FFFF by
22449 console.warn("NFKD Normalization is unavailable"); 39802 // subtracting 0x10000 and splitting the
22450 return str; 39803 // 20 bits of 0x0-0xFFFFF into two halves
22451 } 39804 charcode = 0x10000 + (((charcode & 0x3ff)<<10)
22452 } 39805 | (str.charCodeAt(i) & 0x3ff))
22453 39806 utf8.push(0xf0 | (charcode >>18),
22454 function byteArrayToBinaryString(data) { 39807 0x80 | ((charcode>>12) & 0x3f),
22455 var bin = ""; 39808 0x80 | ((charcode>>6) & 0x3f),
22456 for (var i=0; i<data.length; i++) { 39809 0x80 | (charcode & 0x3f));
22457 bin += zfill(data[i].toString(2), 8);
22458 }
22459 return bin;
22460 }
22461
22462 function binaryStringToByteArray(str) {
22463 var arrayLen = str.length / 8;
22464 var array = new Uint8Array(arrayLen);
22465 for (var i=0; i<arrayLen; i++) {
22466 var valueStr = str.substring(0,8);
22467 var value = parseInt(valueStr, 2);
22468 array[i] = value;
22469 str = str.slice(8);
22470 } 39810 }
22471 return array;
22472 } 39811 }
22473 39812 return new Uint8Array(utf8);
22474 // Pad a numeric string on the left with zero digits until the given width
22475 // is reached.
22476 // Note this differs to the python implementation because it does not
22477 // handle numbers starting with a sign.
22478 function zfill(source, length) {
22479 source = source.toString();
22480 while (source.length < length) {
22481 source = '0' + source;
22482 }
22483 return source;
22484 }
22485
22486 init();
22487
22488} 39813}
22489 39814 </script>
22490WORDLISTS = { 39815 <script>
22491"english": [ 39816WORDLISTS = {};
39817 </script>
39818 <script>
39819WORDLISTS["english"] = [
22492"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse", 39820"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
22493"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act", 39821"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
22494"action","actor","actress","actual","adapt","add","addict","address","adjust","admit", 39822"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
@@ -22694,11 +40022,186 @@ WORDLISTS = {
22694"wish","witness","wolf","woman","wonder","wood","wool","word","work","world", 40022"wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
22695"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year", 40023"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
22696"yellow","you","young","youth","zebra","zero","zone","zoo"] 40024"yellow","you","young","youth","zebra","zero","zone","zoo"]
22697}; 40025 </script>
22698</script> 40026 <script>
40027/*
40028 * Copyright (c) 2013 Pavol Rusnak
40029 *
40030 * Permission is hereby granted, free of charge, to any person obtaining a copy of
40031 * this software and associated documentation files (the "Software"), to deal in
40032 * the Software without restriction, including without limitation the rights to
40033 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
40034 * of the Software, and to permit persons to whom the Software is furnished to do
40035 * so, subject to the following conditions:
40036 *
40037 * The above copyright notice and this permission notice shall be included in all
40038 * copies or substantial portions of the Software.
40039 *
40040 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40041 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
40042 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
40043 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40044 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
40045 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40046 */
40047
40048/*
40049 * Javascript port from python by Ian Coleman
40050 *
40051 * Includes code from asmCrypto
40052 * https://github.com/tresorit/asmcrypto.js
40053 */
22699 40054
22700 <!--<script src="/js/index.js"></script>--> 40055var Mnemonic = function(language) {
22701<script> 40056
40057 var PBKDF2_ROUNDS = 2048;
40058 var RADIX = 2048;
40059
40060 var self = this;
40061 var wordlist = [];
40062
40063 function init() {
40064 wordlist = WORDLISTS[language];
40065 if (wordlist.length != RADIX) {
40066 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
40067 throw err;
40068 }
40069 }
40070
40071 self.generate = function(strength) {
40072 strength = strength || 128;
40073 var r = strength % 32;
40074 if (r > 0) {
40075 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
40076 }
40077 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
40078 if (!hasStrongCrypto) {
40079 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
40080 }
40081 var buffer = new Uint8Array(strength / 8);
40082 var data = crypto.getRandomValues(buffer);
40083 return self.toMnemonic(data);
40084 }
40085
40086 self.toMnemonic = function(data) {
40087 if (data.length % 4 > 0) {
40088 throw 'Data length in bits should be divisible by 32, but it is not (' + data.length + ' bytes = ' + data.length*8 + ' bits).'
40089 }
40090
40091 //h = hashlib.sha256(data).hexdigest()
40092 var uintArray = new Uint8Array(data);
40093 var h = asmCrypto.SHA256.bytes(uintArray);
40094
40095 // b is a binary string, eg '00111010101100...'
40096 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
40097 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
40098 //
40099 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
40100 // c = bin(int(h, 16))[2:].zfill(256)
40101 // d = c[:len(data) * 8 / 32]
40102 var a = byteArrayToBinaryString(data);
40103 var c = byteArrayToBinaryString(h);
40104 var d = c.substring(0, data.length * 8 / 32);
40105 // b = line1 + line2
40106 var b = a + d;
40107
40108 var result = [];
40109 var blen = b.length / 11;
40110 for (var i=0; i<blen; i++) {
40111 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
40112 result.push(wordlist[idx]);
40113 }
40114 return result.join(' ');
40115 }
40116
40117 self.check = function(mnemonic) {
40118 var mnemonic = mnemonic.split(' ')
40119 if (mnemonic.length % 3 > 0) {
40120 return false
40121 }
40122 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
40123 var idx = [];
40124 for (var i=0; i<mnemonic.length; i++) {
40125 var word = mnemonic[i];
40126 var wordIndex = wordlist.indexOf(word);
40127 if (wordIndex == -1) {
40128 return false;
40129 }
40130 var binaryIndex = zfill(wordIndex.toString(2), 11);
40131 idx.push(binaryIndex);
40132 }
40133 var b = idx.join('');
40134 var l = b.length;
40135 //d = b[:l / 33 * 32]
40136 //h = b[-l / 33:]
40137 var d = b.substring(0, l / 33 * 32);
40138 var h = b.substring(l - l / 33, l);
40139 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
40140 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
40141 var nd = binaryStringToByteArray(d);
40142 var ndHash = asmCrypto.SHA256.bytes(nd);
40143 var ndBstr = zfill(byteArrayToBinaryString(ndHash), 256);
40144 var nh = ndBstr.substring(0,l/33);
40145 return h == nh;
40146 }
40147
40148 self.toSeed = function(mnemonic, passphrase) {
40149 passphrase = passphrase || '';
40150 mnemonic = self.normalizeString(mnemonic)
40151 passphrase = self.normalizeString(passphrase)
40152 passphrase = "mnemonic" + passphrase;
40153 //return PBKDF2(mnemonic, 'mnemonic' + passphrase, iterations=PBKDF2_ROUNDS, macmodule=hmac, digestmodule=hashlib.sha512).read(64)
40154 return asmCrypto.PBKDF2_HMAC_SHA512.hex(mnemonic, passphrase, PBKDF2_ROUNDS, 512/8);
40155 }
40156
40157 self.normalizeString = function(str) {
40158 if (typeof str.normalize == "function") {
40159 return str.normalize("NFKD");
40160 }
40161 else {
40162 // TODO decide how to handle this in the future.
40163 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
40164 return str;
40165 }
40166 }
40167
40168 function byteArrayToBinaryString(data) {
40169 var bin = "";
40170 for (var i=0; i<data.length; i++) {
40171 bin += zfill(data[i].toString(2), 8);
40172 }
40173 return bin;
40174 }
40175
40176 function binaryStringToByteArray(str) {
40177 var arrayLen = str.length / 8;
40178 var array = new Uint8Array(arrayLen);
40179 for (var i=0; i<arrayLen; i++) {
40180 var valueStr = str.substring(0,8);
40181 var value = parseInt(valueStr, 2);
40182 array[i] = value;
40183 str = str.slice(8);
40184 }
40185 return array;
40186 }
40187
40188 // Pad a numeric string on the left with zero digits until the given width
40189 // is reached.
40190 // Note this differs to the python implementation because it does not
40191 // handle numbers starting with a sign.
40192 function zfill(source, length) {
40193 source = source.toString();
40194 while (source.length < length) {
40195 source = '0' + source;
40196 }
40197 return source;
40198 }
40199
40200 init();
40201
40202}
40203 </script>
40204 <script>
22702(function() { 40205(function() {
22703 40206
22704 var mnemonic = new Mnemonic("english"); 40207 var mnemonic = new Mnemonic("english");
@@ -23039,6 +40542,6 @@ WORDLISTS = {
23039 init(); 40542 init();
23040 40543
23041})(); 40544})();
23042</script> 40545 </script>
23043 </body> 40546 </body>
23044</html> 40547</html>