From 8bc338c81a98cf30b02cd5d67be8287bc6500c8a Mon Sep 17 00:00:00 2001 From: "theotherp@gmx.de" Date: Wed, 29 Nov 2017 17:46:06 +0100 Subject: [PATCH] Don't uglify nzbhydra js code --- gulpfile.js | 5 +- static/css/alllibs.css | 6 +- static/css/alllibs.css.map | 2 +- static/js/nzbhydra.js | 7289 +++++++++++++++++++++++++++++++++++- static/js/nzbhydra.js.map | 2 +- 5 files changed, 7292 insertions(+), 12 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 8bf9c24..6e6dc04 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -56,7 +56,7 @@ gulp.task('scripts', function () { .on('error', swallowError) .pipe(sourcemaps.init()) .pipe(concat('nzbhydra.js')) - .pipe(uglify()) + //.pipe(uglify()) //Will cause errors .on('error', swallowError) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(dest)); @@ -91,7 +91,7 @@ gulp.task('less', function () { .on('error', swallowError) .pipe(sourcemaps.write(".")) .pipe(gulp.dest(dest)); - + return merge(brightTheme, greyTheme, darkTheme); }); @@ -138,7 +138,6 @@ gulp.task('delMainLessCache', function () { }); - gulp.task('index', function () { runSequence(['scripts', 'less', 'vendor-scripts', 'vendor-css', 'copy-assets'], ['reload', 'add']); }); diff --git a/static/css/alllibs.css b/static/css/alllibs.css index d329913..e17cbbf 100644 --- a/static/css/alllibs.css +++ b/static/css/alllibs.css @@ -7,7 +7,7 @@ * https://chieffancypants.github.io/angular-loading-bar * Copyright (c) 2015 Wes Cruver * License: MIT - */#loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active,#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active{opacity:0}#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave,#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:loading-bar-spinner .4s linear infinite;-moz-animation:loading-bar-spinner .4s linear infinite;-ms-animation:loading-bar-spinner .4s linear infinite;-o-animation:loading-bar-spinner .4s linear infinite;animation:loading-bar-spinner .4s linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0);transform:rotate(0)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0);transform:rotate(0)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0);transform:rotate(0)}100%{transform:rotate(360deg);transform:rotate(360deg)}}.growl-container.growl-fixed{position:fixed;float:right;width:90%;max-width:400px;z-index:9999}.growl-container.growl-fixed.top-right{top:10px;right:15px}.growl-container.growl-fixed.bottom-right{bottom:10px;right:15px}.growl-container.growl-fixed.middle-right{top:49%;right:15px}.growl-container.growl-fixed.top-left{top:10px;left:15px}.growl-container.growl-fixed.bottom-left{bottom:10px;left:15px}.growl-container.growl-fixed.middle-left{top:49%;left:15px}.growl-container.growl-fixed.top-center{top:10px;left:50%;margin-left:-200px}.growl-container.growl-fixed.bottom-center{bottom:10px;left:50%;margin-left:-200px}.growl-container.growl-fixed.middle-center{top:49%;left:50%;margin-left:-200px}.growl-container>.growl-item{padding:10px;padding-right:35px;margin-bottom:10px;cursor:pointer}.growl-container>button{border:none;outline:0}.growl-container>.growl-item.ng-enter,.growl-container>.growl-item.ng-leave{-webkit-transition:.5s linear all;-moz-transition:.5s linear all;-o-transition:.5s linear all;transition:.5s linear all}.growl-container>.growl-item.ng-enter,.growl-container>.growl-item.ng-leave.ng-leave-active{opacity:0}.growl-container>.growl-item.ng-enter.ng-enter-active,.growl-container>.growl-item.ng-leave{opacity:1}.growl-container>div.growl-item{background-position:12px center;background-repeat:no-repeat}.growl-title{font-size:16px}.growl-item.icon>.growl-title{margin:0 0 0 40px}.growl-item.icon>.growl-message{margin:0 0 0 40px}.growl-container>.alert-info.icon{background-image:url(data:image/png;base64,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)}.growl-container>.alert-error.icon{background-image:url(data:image/png;base64,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)}.growl-container>.alert-success.icon{background-image:url(data:image/png;base64,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)}.growl-container>.alert-warning.icon{background-image:url(data:image/png;base64,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)}/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.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"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;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}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{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;display:inline-block;max-width:100%;height:auto}.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;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,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,.h5,.h6,h4,h5,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%}.mark,mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.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:#337ab7}a.bg-primary:hover{background-color:#286090}.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}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[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 ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}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;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;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{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{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-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{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-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{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-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #b0b0b0}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #b0b0b0}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #b0b0b0}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #b0b0b0}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #b0b0b0}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #b0b0b0}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width: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=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]: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,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:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=datetime-local],input[type=month],input[type=time]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;min-height:32px}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;min-height:38px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.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 .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{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;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{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;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{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;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.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.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.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.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.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.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.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.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.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.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{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=button].btn-block,input[type=reset].btn-block,input[type=submit].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-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;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);background-clip:padding-box}.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:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.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-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-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.3333333;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}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.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}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn: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=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{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{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.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:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{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:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius: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;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{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-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.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);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;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-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{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:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{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:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{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:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{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:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{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{content:"/\00a0";padding:0 5px;color:#ccc}.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;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.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-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-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-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{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:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.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:focus,a.label:hover{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]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;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,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right: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:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.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{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.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}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;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:#337ab7;-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-bar-striped,.progress-striped .progress-bar{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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#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{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.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:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{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:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{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:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{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:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{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-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>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,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius: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>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.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,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #b0b0b0}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom: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>.list-group,.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:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.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 embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius: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;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.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-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;opacity:0}.tooltip.in{opacity:.9}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;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;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;background-color:#fff;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);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;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{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.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:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{left:auto;right:0;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:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.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-next,.carousel-control .icon-prev{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{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-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}td.visible-xs,th.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}td.visible-sm,th.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}td.visible-md,th.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}td.visible-lg,th.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}td.visible-print,th.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}}/*! + */#loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active,#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active{opacity:0}#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave,#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:loading-bar-spinner .4s linear infinite;-moz-animation:loading-bar-spinner .4s linear infinite;-ms-animation:loading-bar-spinner .4s linear infinite;-o-animation:loading-bar-spinner .4s linear infinite;animation:loading-bar-spinner .4s linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0);transform:rotate(0)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0);transform:rotate(0)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0);transform:rotate(0)}100%{transform:rotate(360deg);transform:rotate(360deg)}}/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.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"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;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}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{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;display:inline-block;max-width:100%;height:auto}.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;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,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,.h5,.h6,h4,h5,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%}.mark,mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.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:#337ab7}a.bg-primary:hover{background-color:#286090}.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}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[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 ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}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;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;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{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{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-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{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-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{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-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #b0b0b0}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #b0b0b0}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #b0b0b0}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #b0b0b0}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #b0b0b0}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #b0b0b0}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width: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=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]: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,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:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=datetime-local],input[type=month],input[type=time]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;min-height:32px}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;min-height:38px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.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 .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{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;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{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;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{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;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.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.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.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.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.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.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.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.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.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.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{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=button].btn-block,input[type=reset].btn-block,input[type=submit].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-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;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);background-clip:padding-box}.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:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.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-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-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.3333333;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}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.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}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn: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=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{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{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.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:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{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:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius: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;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{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-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.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);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;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-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{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:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{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:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{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:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{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:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{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{content:"/\00a0";padding:0 5px;color:#ccc}.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;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.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-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-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-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{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:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.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:focus,a.label:hover{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]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;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,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right: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:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.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{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.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}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;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:#337ab7;-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-bar-striped,.progress-striped .progress-bar{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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#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{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.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:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{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:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{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:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{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:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{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-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>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,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius: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>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.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,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #b0b0b0}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom: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>.list-group,.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:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.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 embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius: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;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.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-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;opacity:0}.tooltip.in{opacity:.9}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;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;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;background-color:#fff;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);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;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{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.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:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{left:auto;right:0;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:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.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-next,.carousel-control .icon-prev{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{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-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}td.visible-xs,th.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}td.visible-sm,th.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}td.visible-md,th.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}td.visible-lg,th.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}td.visible-print,th.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}}.growl-container.growl-fixed{position:fixed;float:right;width:90%;max-width:400px;z-index:9999}.growl-container.growl-fixed.top-right{top:10px;right:15px}.growl-container.growl-fixed.bottom-right{bottom:10px;right:15px}.growl-container.growl-fixed.middle-right{top:49%;right:15px}.growl-container.growl-fixed.top-left{top:10px;left:15px}.growl-container.growl-fixed.bottom-left{bottom:10px;left:15px}.growl-container.growl-fixed.middle-left{top:49%;left:15px}.growl-container.growl-fixed.top-center{top:10px;left:50%;margin-left:-200px}.growl-container.growl-fixed.bottom-center{bottom:10px;left:50%;margin-left:-200px}.growl-container.growl-fixed.middle-center{top:49%;left:50%;margin-left:-200px}.growl-container>.growl-item{padding:10px;padding-right:35px;margin-bottom:10px;cursor:pointer}.growl-container>button{border:none;outline:0}.growl-container>.growl-item.ng-enter,.growl-container>.growl-item.ng-leave{-webkit-transition:.5s linear all;-moz-transition:.5s linear all;-o-transition:.5s linear all;transition:.5s linear all}.growl-container>.growl-item.ng-enter,.growl-container>.growl-item.ng-leave.ng-leave-active{opacity:0}.growl-container>.growl-item.ng-enter.ng-enter-active,.growl-container>.growl-item.ng-leave{opacity:1}.growl-container>div.growl-item{background-position:12px center;background-repeat:no-repeat}.growl-title{font-size:16px}.growl-item.icon>.growl-title{margin:0 0 0 40px}.growl-item.icon>.growl-message{margin:0 0 0 40px}.growl-container>.alert-info.icon{background-image:url(data:image/png;base64,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)}.growl-container>.alert-error.icon{background-image:url(data:image/png;base64,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)}.growl-container>.alert-success.icon{background-image:url(data:image/png;base64,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)}.growl-container>.alert-warning.icon{background-image:url(data:image/png;base64,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)}/*! Animate.css - http://daneden.me/animate Licensed under the MIT license - http://opensource.org/licenses/MIT @@ -38,14 +38,14 @@ Copyright (c) 2015 Daniel Eden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ========================================================= */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:210px;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection,.slider.slider-horizontal .slider-track-high,.slider.slider-horizontal .slider-track-low{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-handle,.slider.slider-horizontal .slider-tick{margin-left:-10px;margin-top:-5px}.slider.slider-horizontal .slider-handle.triangle,.slider.slider-horizontal .slider-tick.triangle{border-width:0 10px 10px 10px;width:0;height:0;border-bottom-color:#0480be;margin-top:0}.slider.slider-horizontal .slider-tick-label-container{white-space:nowrap;margin-top:20px}.slider.slider-horizontal .slider-tick-label-container .slider-tick-label{padding-top:4px;display:inline-block;text-align:center}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;margin-left:-5px;left:50%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-track-high,.slider.slider-vertical .slider-track-low{width:100%;left:0;right:0}.slider.slider-vertical .slider-handle,.slider.slider-vertical .slider-tick{margin-left:-5px;margin-top:-10px}.slider.slider-vertical .slider-handle.triangle,.slider.slider-vertical .slider-tick.triangle{border-width:10px 0 10px 10px;width:1px;height:1px;border-left-color:#0480be;margin-left:0}.slider.slider-disabled .slider-handle{background-image:-webkit-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:-o-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:linear-gradient(to bottom,#dfdfdf 0,#bebebe 100%);background-repeat:repeat-x}.slider.slider-disabled .slider-track{background-image:-webkit-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:linear-gradient(to bottom,#e5e5e5 0,#e9e9e9 100%);background-repeat:repeat-x;cursor:not-allowed}.slider input{display:none}.slider .tooltip.top{margin-top:-36px}.slider .tooltip-inner{white-space:nowrap}.slider .hide{display:none}.slider-track{position:absolute;cursor:pointer;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#f9f9f9 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);border-radius:4px}.slider-selection{position:absolute;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-selection.tick-slider-selection{background-image:-webkit-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:-o-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:linear-gradient(to bottom,#89cdef 0,#81bfde 100%);background-repeat:repeat-x}.slider-track-high,.slider-track-low{position:absolute;background:0 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-handle{position:absolute;width:20px;height:20px;background-color:#337ab7;background-image:-webkit-linear-gradient(top,#149bdf 0,#0480be 100%);background-image:-o-linear-gradient(top,#149bdf 0,#0480be 100%);background-image:linear-gradient(to bottom,#149bdf 0,#0480be 100%);background-repeat:repeat-x;filter:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);border:0 solid transparent}.slider-handle.round{border-radius:50%}.slider-handle.triangle{background:transparent none}.slider-handle.custom{background:transparent none}.slider-handle.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick{position:absolute;width:20px;height:20px;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;filter:none;opacity:.8;border:0 solid transparent}.slider-tick.round{border-radius:50%}.slider-tick.triangle{background:transparent none}.slider-tick.custom{background:transparent none}.slider-tick.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick.in-selection{background-image:-webkit-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:-o-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:linear-gradient(to bottom,#89cdef 0,#81bfde 100%);background-repeat:repeat-x;opacity:1}@font-face{font-family:typicons;font-weight:400;font-style:normal;src:url(typicons.eot);src:url(typicons.eot?#iefix) format('embedded-opentype'),url(typicons.woff) format('woff'),url(typicons.ttf) format('truetype'),url(typicons.svg#typicons) format('svg')}.typcn:before{font-family:typicons;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;height:1em;font-size:1em;text-align:center;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.typcn-adjust-brightness:before{content:'\e000'}.typcn-adjust-contrast:before{content:'\e001'}.typcn-anchor-outline:before{content:'\e002'}.typcn-anchor:before{content:'\e003'}.typcn-archive:before{content:'\e004'}.typcn-arrow-back-outline:before{content:'\e005'}.typcn-arrow-back:before{content:'\e006'}.typcn-arrow-down-outline:before{content:'\e007'}.typcn-arrow-down-thick:before{content:'\e008'}.typcn-arrow-down:before{content:'\e009'}.typcn-arrow-forward-outline:before{content:'\e00a'}.typcn-arrow-forward:before{content:'\e00b'}.typcn-arrow-left-outline:before{content:'\e00c'}.typcn-arrow-left-thick:before{content:'\e00d'}.typcn-arrow-left:before{content:'\e00e'}.typcn-arrow-loop-outline:before{content:'\e00f'}.typcn-arrow-loop:before{content:'\e010'}.typcn-arrow-maximise-outline:before{content:'\e011'}.typcn-arrow-maximise:before{content:'\e012'}.typcn-arrow-minimise-outline:before{content:'\e013'}.typcn-arrow-minimise:before{content:'\e014'}.typcn-arrow-move-outline:before{content:'\e015'}.typcn-arrow-move:before{content:'\e016'}.typcn-arrow-repeat-outline:before{content:'\e017'}.typcn-arrow-repeat:before{content:'\e018'}.typcn-arrow-right-outline:before{content:'\e019'}.typcn-arrow-right-thick:before{content:'\e01a'}.typcn-arrow-right:before{content:'\e01b'}.typcn-arrow-shuffle:before{content:'\e01c'}.typcn-arrow-sorted-down:before{content:'\e01d'}.typcn-arrow-sorted-up:before{content:'\e01e'}.typcn-arrow-sync-outline:before{content:'\e01f'}.typcn-arrow-sync:before{content:'\e020'}.typcn-arrow-unsorted:before{content:'\e021'}.typcn-arrow-up-outline:before{content:'\e022'}.typcn-arrow-up-thick:before{content:'\e023'}.typcn-arrow-up:before{content:'\e024'}.typcn-at:before{content:'\e025'}.typcn-attachment-outline:before{content:'\e026'}.typcn-attachment:before{content:'\e027'}.typcn-backspace-outline:before{content:'\e028'}.typcn-backspace:before{content:'\e029'}.typcn-battery-charge:before{content:'\e02a'}.typcn-battery-full:before{content:'\e02b'}.typcn-battery-high:before{content:'\e02c'}.typcn-battery-low:before{content:'\e02d'}.typcn-battery-mid:before{content:'\e02e'}.typcn-beaker:before{content:'\e02f'}.typcn-beer:before{content:'\e030'}.typcn-bell:before{content:'\e031'}.typcn-book:before{content:'\e032'}.typcn-bookmark:before{content:'\e033'}.typcn-briefcase:before{content:'\e034'}.typcn-brush:before{content:'\e035'}.typcn-business-card:before{content:'\e036'}.typcn-calculator:before{content:'\e037'}.typcn-calendar-outline:before{content:'\e038'}.typcn-calendar:before{content:'\e039'}.typcn-camera-outline:before{content:'\e03a'}.typcn-camera:before{content:'\e03b'}.typcn-cancel-outline:before{content:'\e03c'}.typcn-cancel:before{content:'\e03d'}.typcn-chart-area-outline:before{content:'\e03e'}.typcn-chart-area:before{content:'\e03f'}.typcn-chart-bar-outline:before{content:'\e040'}.typcn-chart-bar:before{content:'\e041'}.typcn-chart-line-outline:before{content:'\e042'}.typcn-chart-line:before{content:'\e043'}.typcn-chart-pie-outline:before{content:'\e044'}.typcn-chart-pie:before{content:'\e045'}.typcn-chevron-left-outline:before{content:'\e046'}.typcn-chevron-left:before{content:'\e047'}.typcn-chevron-right-outline:before{content:'\e048'}.typcn-chevron-right:before{content:'\e049'}.typcn-clipboard:before{content:'\e04a'}.typcn-cloud-storage:before{content:'\e04b'}.typcn-cloud-storage-outline:before{content:'\e054'}.typcn-code-outline:before{content:'\e04c'}.typcn-code:before{content:'\e04d'}.typcn-coffee:before{content:'\e04e'}.typcn-cog-outline:before{content:'\e04f'}.typcn-cog:before{content:'\e050'}.typcn-compass:before{content:'\e051'}.typcn-contacts:before{content:'\e052'}.typcn-credit-card:before{content:'\e053'}.typcn-css3:before{content:'\e055'}.typcn-database:before{content:'\e056'}.typcn-delete-outline:before{content:'\e057'}.typcn-delete:before{content:'\e058'}.typcn-device-desktop:before{content:'\e059'}.typcn-device-laptop:before{content:'\e05a'}.typcn-device-phone:before{content:'\e05b'}.typcn-device-tablet:before{content:'\e05c'}.typcn-directions:before{content:'\e05d'}.typcn-divide-outline:before{content:'\e05e'}.typcn-divide:before{content:'\e05f'}.typcn-document-add:before{content:'\e060'}.typcn-document-delete:before{content:'\e061'}.typcn-document-text:before{content:'\e062'}.typcn-document:before{content:'\e063'}.typcn-download-outline:before{content:'\e064'}.typcn-download:before{content:'\e065'}.typcn-dropbox:before{content:'\e066'}.typcn-edit:before{content:'\e067'}.typcn-eject-outline:before{content:'\e068'}.typcn-eject:before{content:'\e069'}.typcn-equals-outline:before{content:'\e06a'}.typcn-equals:before{content:'\e06b'}.typcn-export-outline:before{content:'\e06c'}.typcn-export:before{content:'\e06d'}.typcn-eye-outline:before{content:'\e06e'}.typcn-eye:before{content:'\e06f'}.typcn-feather:before{content:'\e070'}.typcn-film:before{content:'\e071'}.typcn-filter:before{content:'\e072'}.typcn-flag-outline:before{content:'\e073'}.typcn-flag:before{content:'\e074'}.typcn-flash-outline:before{content:'\e075'}.typcn-flash:before{content:'\e076'}.typcn-flow-children:before{content:'\e077'}.typcn-flow-merge:before{content:'\e078'}.typcn-flow-parallel:before{content:'\e079'}.typcn-flow-switch:before{content:'\e07a'}.typcn-folder-add:before{content:'\e07b'}.typcn-folder-delete:before{content:'\e07c'}.typcn-folder-open:before{content:'\e07d'}.typcn-folder:before{content:'\e07e'}.typcn-gift:before{content:'\e07f'}.typcn-globe-outline:before{content:'\e080'}.typcn-globe:before{content:'\e081'}.typcn-group-outline:before{content:'\e082'}.typcn-group:before{content:'\e083'}.typcn-headphones:before{content:'\e084'}.typcn-heart-full-outline:before{content:'\e085'}.typcn-heart-half-outline:before{content:'\e086'}.typcn-heart-outline:before{content:'\e087'}.typcn-heart:before{content:'\e088'}.typcn-home-outline:before{content:'\e089'}.typcn-home:before{content:'\e08a'}.typcn-html5:before{content:'\e08b'}.typcn-image-outline:before{content:'\e08c'}.typcn-image:before{content:'\e08d'}.typcn-infinity-outline:before{content:'\e08e'}.typcn-infinity:before{content:'\e08f'}.typcn-info-large-outline:before{content:'\e090'}.typcn-info-large:before{content:'\e091'}.typcn-info-outline:before{content:'\e092'}.typcn-info:before{content:'\e093'}.typcn-input-checked-outline:before{content:'\e094'}.typcn-input-checked:before{content:'\e095'}.typcn-key-outline:before{content:'\e096'}.typcn-key:before{content:'\e097'}.typcn-keyboard:before{content:'\e098'}.typcn-leaf:before{content:'\e099'}.typcn-lightbulb:before{content:'\e09a'}.typcn-link-outline:before{content:'\e09b'}.typcn-link:before{content:'\e09c'}.typcn-location-arrow-outline:before{content:'\e09d'}.typcn-location-arrow:before{content:'\e09e'}.typcn-location-outline:before{content:'\e09f'}.typcn-location:before{content:'\e0a0'}.typcn-lock-closed-outline:before{content:'\e0a1'}.typcn-lock-closed:before{content:'\e0a2'}.typcn-lock-open-outline:before{content:'\e0a3'}.typcn-lock-open:before{content:'\e0a4'}.typcn-mail:before{content:'\e0a5'}.typcn-map:before{content:'\e0a6'}.typcn-media-eject-outline:before{content:'\e0a7'}.typcn-media-eject:before{content:'\e0a8'}.typcn-media-fast-forward-outline:before{content:'\e0a9'}.typcn-media-fast-forward:before{content:'\e0aa'}.typcn-media-pause-outline:before{content:'\e0ab'}.typcn-media-pause:before{content:'\e0ac'}.typcn-media-play-outline:before{content:'\e0ad'}.typcn-media-play-reverse-outline:before{content:'\e0ae'}.typcn-media-play-reverse:before{content:'\e0af'}.typcn-media-play:before{content:'\e0b0'}.typcn-media-record-outline:before{content:'\e0b1'}.typcn-media-record:before{content:'\e0b2'}.typcn-media-rewind-outline:before{content:'\e0b3'}.typcn-media-rewind:before{content:'\e0b4'}.typcn-media-stop-outline:before{content:'\e0b5'}.typcn-media-stop:before{content:'\e0b6'}.typcn-message-typing:before{content:'\e0b7'}.typcn-message:before{content:'\e0b8'}.typcn-messages:before{content:'\e0b9'}.typcn-microphone-outline:before{content:'\e0ba'}.typcn-microphone:before{content:'\e0bb'}.typcn-minus-outline:before{content:'\e0bc'}.typcn-minus:before{content:'\e0bd'}.typcn-mortar-board:before{content:'\e0be'}.typcn-news:before{content:'\e0bf'}.typcn-notes-outline:before{content:'\e0c0'}.typcn-notes:before{content:'\e0c1'}.typcn-pen:before{content:'\e0c2'}.typcn-pencil:before{content:'\e0c3'}.typcn-phone-outline:before{content:'\e0c4'}.typcn-phone:before{content:'\e0c5'}.typcn-pi-outline:before{content:'\e0c6'}.typcn-pi:before{content:'\e0c7'}.typcn-pin-outline:before{content:'\e0c8'}.typcn-pin:before{content:'\e0c9'}.typcn-pipette:before{content:'\e0ca'}.typcn-plane-outline:before{content:'\e0cb'}.typcn-plane:before{content:'\e0cc'}.typcn-plug:before{content:'\e0cd'}.typcn-plus-outline:before{content:'\e0ce'}.typcn-plus:before{content:'\e0cf'}.typcn-point-of-interest-outline:before{content:'\e0d0'}.typcn-point-of-interest:before{content:'\e0d1'}.typcn-power-outline:before{content:'\e0d2'}.typcn-power:before{content:'\e0d3'}.typcn-printer:before{content:'\e0d4'}.typcn-puzzle-outline:before{content:'\e0d5'}.typcn-puzzle:before{content:'\e0d6'}.typcn-radar-outline:before{content:'\e0d7'}.typcn-radar:before{content:'\e0d8'}.typcn-refresh-outline:before{content:'\e0d9'}.typcn-refresh:before{content:'\e0da'}.typcn-rss-outline:before{content:'\e0db'}.typcn-rss:before{content:'\e0dc'}.typcn-scissors-outline:before{content:'\e0dd'}.typcn-scissors:before{content:'\e0de'}.typcn-shopping-bag:before{content:'\e0df'}.typcn-shopping-cart:before{content:'\e0e0'}.typcn-social-at-circular:before{content:'\e0e1'}.typcn-social-dribbble-circular:before{content:'\e0e2'}.typcn-social-dribbble:before{content:'\e0e3'}.typcn-social-facebook-circular:before{content:'\e0e4'}.typcn-social-facebook:before{content:'\e0e5'}.typcn-social-flickr-circular:before{content:'\e0e6'}.typcn-social-flickr:before{content:'\e0e7'}.typcn-social-github-circular:before{content:'\e0e8'}.typcn-social-github:before{content:'\e0e9'}.typcn-social-google-plus-circular:before{content:'\e0ea'}.typcn-social-google-plus:before{content:'\e0eb'}.typcn-social-instagram-circular:before{content:'\e0ec'}.typcn-social-instagram:before{content:'\e0ed'}.typcn-social-last-fm-circular:before{content:'\e0ee'}.typcn-social-last-fm:before{content:'\e0ef'}.typcn-social-linkedin-circular:before{content:'\e0f0'}.typcn-social-linkedin:before{content:'\e0f1'}.typcn-social-pinterest-circular:before{content:'\e0f2'}.typcn-social-pinterest:before{content:'\e0f3'}.typcn-social-skype-outline:before{content:'\e0f4'}.typcn-social-skype:before{content:'\e0f5'}.typcn-social-tumbler-circular:before{content:'\e0f6'}.typcn-social-tumbler:before{content:'\e0f7'}.typcn-social-twitter-circular:before{content:'\e0f8'}.typcn-social-twitter:before{content:'\e0f9'}.typcn-social-vimeo-circular:before{content:'\e0fa'}.typcn-social-vimeo:before{content:'\e0fb'}.typcn-social-youtube-circular:before{content:'\e0fc'}.typcn-social-youtube:before{content:'\e0fd'}.typcn-sort-alphabetically-outline:before{content:'\e0fe'}.typcn-sort-alphabetically:before{content:'\e0ff'}.typcn-sort-numerically-outline:before{content:'\e100'}.typcn-sort-numerically:before{content:'\e101'}.typcn-spanner-outline:before{content:'\e102'}.typcn-spanner:before{content:'\e103'}.typcn-spiral:before{content:'\e104'}.typcn-star-full-outline:before{content:'\e105'}.typcn-star-half-outline:before{content:'\e106'}.typcn-star-half:before{content:'\e107'}.typcn-star-outline:before{content:'\e108'}.typcn-star:before{content:'\e109'}.typcn-starburst-outline:before{content:'\e10a'}.typcn-starburst:before{content:'\e10b'}.typcn-stopwatch:before{content:'\e10c'}.typcn-support:before{content:'\e10d'}.typcn-tabs-outline:before{content:'\e10e'}.typcn-tag:before{content:'\e10f'}.typcn-tags:before{content:'\e110'}.typcn-th-large-outline:before{content:'\e111'}.typcn-th-large:before{content:'\e112'}.typcn-th-list-outline:before{content:'\e113'}.typcn-th-list:before{content:'\e114'}.typcn-th-menu-outline:before{content:'\e115'}.typcn-th-menu:before{content:'\e116'}.typcn-th-small-outline:before{content:'\e117'}.typcn-th-small:before{content:'\e118'}.typcn-thermometer:before{content:'\e119'}.typcn-thumbs-down:before{content:'\e11a'}.typcn-thumbs-ok:before{content:'\e11b'}.typcn-thumbs-up:before{content:'\e11c'}.typcn-tick-outline:before{content:'\e11d'}.typcn-tick:before{content:'\e11e'}.typcn-ticket:before{content:'\e11f'}.typcn-time:before{content:'\e120'}.typcn-times-outline:before{content:'\e121'}.typcn-times:before{content:'\e122'}.typcn-trash:before{content:'\e123'}.typcn-tree:before{content:'\e124'}.typcn-upload-outline:before{content:'\e125'}.typcn-upload:before{content:'\e126'}.typcn-user-add-outline:before{content:'\e127'}.typcn-user-add:before{content:'\e128'}.typcn-user-delete-outline:before{content:'\e129'}.typcn-user-delete:before{content:'\e12a'}.typcn-user-outline:before{content:'\e12b'}.typcn-user:before{content:'\e12c'}.typcn-vendor-android:before{content:'\e12d'}.typcn-vendor-apple:before{content:'\e12e'}.typcn-vendor-microsoft:before{content:'\e12f'}.typcn-video-outline:before{content:'\e130'}.typcn-video:before{content:'\e131'}.typcn-volume-down:before{content:'\e132'}.typcn-volume-mute:before{content:'\e133'}.typcn-volume-up:before{content:'\e134'}.typcn-volume:before{content:'\e135'}.typcn-warning-outline:before{content:'\e136'}.typcn-warning:before{content:'\e137'}.typcn-watch:before{content:'\e138'}.typcn-waves-outline:before{content:'\e139'}.typcn-waves:before{content:'\e13a'}.typcn-weather-cloudy:before{content:'\e13b'}.typcn-weather-downpour:before{content:'\e13c'}.typcn-weather-night:before{content:'\e13d'}.typcn-weather-partly-sunny:before{content:'\e13e'}.typcn-weather-shower:before{content:'\e13f'}.typcn-weather-snow:before{content:'\e140'}.typcn-weather-stormy:before{content:'\e141'}.typcn-weather-sunny:before{content:'\e142'}.typcn-weather-windy-cloudy:before{content:'\e143'}.typcn-weather-windy:before{content:'\e144'}.typcn-wi-fi-outline:before{content:'\e145'}.typcn-wi-fi:before{content:'\e146'}.typcn-wine:before{content:'\e147'}.typcn-world-outline:before{content:'\e148'}.typcn-world:before{content:'\e149'}.typcn-zoom-in-outline:before{content:'\e14a'}.typcn-zoom-in:before{content:'\e14b'}.typcn-zoom-out-outline:before{content:'\e14c'}.typcn-zoom-out:before{content:'\e14d'}.typcn-zoom-outline:before{content:'\e14e'}.typcn-zoom:before{content:'\e14f'}/*! + * ========================================================= */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:210px;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection,.slider.slider-horizontal .slider-track-high,.slider.slider-horizontal .slider-track-low{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-handle,.slider.slider-horizontal .slider-tick{margin-left:-10px;margin-top:-5px}.slider.slider-horizontal .slider-handle.triangle,.slider.slider-horizontal .slider-tick.triangle{border-width:0 10px 10px 10px;width:0;height:0;border-bottom-color:#0480be;margin-top:0}.slider.slider-horizontal .slider-tick-label-container{white-space:nowrap;margin-top:20px}.slider.slider-horizontal .slider-tick-label-container .slider-tick-label{padding-top:4px;display:inline-block;text-align:center}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;margin-left:-5px;left:50%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-track-high,.slider.slider-vertical .slider-track-low{width:100%;left:0;right:0}.slider.slider-vertical .slider-handle,.slider.slider-vertical .slider-tick{margin-left:-5px;margin-top:-10px}.slider.slider-vertical .slider-handle.triangle,.slider.slider-vertical .slider-tick.triangle{border-width:10px 0 10px 10px;width:1px;height:1px;border-left-color:#0480be;margin-left:0}.slider.slider-disabled .slider-handle{background-image:-webkit-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:-o-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:linear-gradient(to bottom,#dfdfdf 0,#bebebe 100%);background-repeat:repeat-x}.slider.slider-disabled .slider-track{background-image:-webkit-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:linear-gradient(to bottom,#e5e5e5 0,#e9e9e9 100%);background-repeat:repeat-x;cursor:not-allowed}.slider input{display:none}.slider .tooltip.top{margin-top:-36px}.slider .tooltip-inner{white-space:nowrap}.slider .hide{display:none}.slider-track{position:absolute;cursor:pointer;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#f9f9f9 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);border-radius:4px}.slider-selection{position:absolute;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-selection.tick-slider-selection{background-image:-webkit-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:-o-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:linear-gradient(to bottom,#89cdef 0,#81bfde 100%);background-repeat:repeat-x}.slider-track-high,.slider-track-low{position:absolute;background:0 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-handle{position:absolute;width:20px;height:20px;background-color:#337ab7;background-image:-webkit-linear-gradient(top,#149bdf 0,#0480be 100%);background-image:-o-linear-gradient(top,#149bdf 0,#0480be 100%);background-image:linear-gradient(to bottom,#149bdf 0,#0480be 100%);background-repeat:repeat-x;filter:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);border:0 solid transparent}.slider-handle.round{border-radius:50%}.slider-handle.triangle{background:transparent none}.slider-handle.custom{background:transparent none}.slider-handle.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick{position:absolute;width:20px;height:20px;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;filter:none;opacity:.8;border:0 solid transparent}.slider-tick.round{border-radius:50%}.slider-tick.triangle{background:transparent none}.slider-tick.custom{background:transparent none}.slider-tick.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick.in-selection{background-image:-webkit-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:-o-linear-gradient(top,#89cdef 0,#81bfde 100%);background-image:linear-gradient(to bottom,#89cdef 0,#81bfde 100%);background-repeat:repeat-x;opacity:1}/*! * Bootstrap v3.3.5 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.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"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;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}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{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;display:inline-block;max-width:100%;height:auto}.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;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,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,.h5,.h6,h4,h5,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%}.mark,mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[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 ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}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;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;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{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{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-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{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-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{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-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{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>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width: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=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]: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,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:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{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;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{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;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{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;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{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=button].btn-block,input[type=reset].btn-block,input[type=submit].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-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;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);background-clip:padding-box}.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:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.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-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-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.3333333;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}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.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}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn: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=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.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:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{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:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius: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;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{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-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.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);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;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-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{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:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{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:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{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:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{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:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{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{content:"/\00a0";padding:0 5px;color:#ccc}.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;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{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:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.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:focus,a.label:hover{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]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#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,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size: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:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.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{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.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}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;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:#337ab7;-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-bar-striped,.progress-striped .progress-bar{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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#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{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{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-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>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,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.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,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom: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>.list-group,.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:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.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 embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius: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;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.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-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0}.tooltip.in{opacity:.9}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius: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;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;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{margin:0;padding:8px 14px;font-size:14px;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{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.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:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{left:auto;right:0;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:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.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-next,.carousel-control .icon-prev{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{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.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}}@font-face{font-family:typicons;font-weight:400;font-style:normal;src:url(typicons.eot);src:url(typicons.eot?#iefix) format('embedded-opentype'),url(typicons.woff) format('woff'),url(typicons.ttf) format('truetype'),url(typicons.svg#typicons) format('svg')}.typcn:before{font-family:typicons;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;height:1em;font-size:1em;text-align:center;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.typcn-adjust-brightness:before{content:'\e000'}.typcn-adjust-contrast:before{content:'\e001'}.typcn-anchor-outline:before{content:'\e002'}.typcn-anchor:before{content:'\e003'}.typcn-archive:before{content:'\e004'}.typcn-arrow-back-outline:before{content:'\e005'}.typcn-arrow-back:before{content:'\e006'}.typcn-arrow-down-outline:before{content:'\e007'}.typcn-arrow-down-thick:before{content:'\e008'}.typcn-arrow-down:before{content:'\e009'}.typcn-arrow-forward-outline:before{content:'\e00a'}.typcn-arrow-forward:before{content:'\e00b'}.typcn-arrow-left-outline:before{content:'\e00c'}.typcn-arrow-left-thick:before{content:'\e00d'}.typcn-arrow-left:before{content:'\e00e'}.typcn-arrow-loop-outline:before{content:'\e00f'}.typcn-arrow-loop:before{content:'\e010'}.typcn-arrow-maximise-outline:before{content:'\e011'}.typcn-arrow-maximise:before{content:'\e012'}.typcn-arrow-minimise-outline:before{content:'\e013'}.typcn-arrow-minimise:before{content:'\e014'}.typcn-arrow-move-outline:before{content:'\e015'}.typcn-arrow-move:before{content:'\e016'}.typcn-arrow-repeat-outline:before{content:'\e017'}.typcn-arrow-repeat:before{content:'\e018'}.typcn-arrow-right-outline:before{content:'\e019'}.typcn-arrow-right-thick:before{content:'\e01a'}.typcn-arrow-right:before{content:'\e01b'}.typcn-arrow-shuffle:before{content:'\e01c'}.typcn-arrow-sorted-down:before{content:'\e01d'}.typcn-arrow-sorted-up:before{content:'\e01e'}.typcn-arrow-sync-outline:before{content:'\e01f'}.typcn-arrow-sync:before{content:'\e020'}.typcn-arrow-unsorted:before{content:'\e021'}.typcn-arrow-up-outline:before{content:'\e022'}.typcn-arrow-up-thick:before{content:'\e023'}.typcn-arrow-up:before{content:'\e024'}.typcn-at:before{content:'\e025'}.typcn-attachment-outline:before{content:'\e026'}.typcn-attachment:before{content:'\e027'}.typcn-backspace-outline:before{content:'\e028'}.typcn-backspace:before{content:'\e029'}.typcn-battery-charge:before{content:'\e02a'}.typcn-battery-full:before{content:'\e02b'}.typcn-battery-high:before{content:'\e02c'}.typcn-battery-low:before{content:'\e02d'}.typcn-battery-mid:before{content:'\e02e'}.typcn-beaker:before{content:'\e02f'}.typcn-beer:before{content:'\e030'}.typcn-bell:before{content:'\e031'}.typcn-book:before{content:'\e032'}.typcn-bookmark:before{content:'\e033'}.typcn-briefcase:before{content:'\e034'}.typcn-brush:before{content:'\e035'}.typcn-business-card:before{content:'\e036'}.typcn-calculator:before{content:'\e037'}.typcn-calendar-outline:before{content:'\e038'}.typcn-calendar:before{content:'\e039'}.typcn-camera-outline:before{content:'\e03a'}.typcn-camera:before{content:'\e03b'}.typcn-cancel-outline:before{content:'\e03c'}.typcn-cancel:before{content:'\e03d'}.typcn-chart-area-outline:before{content:'\e03e'}.typcn-chart-area:before{content:'\e03f'}.typcn-chart-bar-outline:before{content:'\e040'}.typcn-chart-bar:before{content:'\e041'}.typcn-chart-line-outline:before{content:'\e042'}.typcn-chart-line:before{content:'\e043'}.typcn-chart-pie-outline:before{content:'\e044'}.typcn-chart-pie:before{content:'\e045'}.typcn-chevron-left-outline:before{content:'\e046'}.typcn-chevron-left:before{content:'\e047'}.typcn-chevron-right-outline:before{content:'\e048'}.typcn-chevron-right:before{content:'\e049'}.typcn-clipboard:before{content:'\e04a'}.typcn-cloud-storage:before{content:'\e04b'}.typcn-cloud-storage-outline:before{content:'\e054'}.typcn-code-outline:before{content:'\e04c'}.typcn-code:before{content:'\e04d'}.typcn-coffee:before{content:'\e04e'}.typcn-cog-outline:before{content:'\e04f'}.typcn-cog:before{content:'\e050'}.typcn-compass:before{content:'\e051'}.typcn-contacts:before{content:'\e052'}.typcn-credit-card:before{content:'\e053'}.typcn-css3:before{content:'\e055'}.typcn-database:before{content:'\e056'}.typcn-delete-outline:before{content:'\e057'}.typcn-delete:before{content:'\e058'}.typcn-device-desktop:before{content:'\e059'}.typcn-device-laptop:before{content:'\e05a'}.typcn-device-phone:before{content:'\e05b'}.typcn-device-tablet:before{content:'\e05c'}.typcn-directions:before{content:'\e05d'}.typcn-divide-outline:before{content:'\e05e'}.typcn-divide:before{content:'\e05f'}.typcn-document-add:before{content:'\e060'}.typcn-document-delete:before{content:'\e061'}.typcn-document-text:before{content:'\e062'}.typcn-document:before{content:'\e063'}.typcn-download-outline:before{content:'\e064'}.typcn-download:before{content:'\e065'}.typcn-dropbox:before{content:'\e066'}.typcn-edit:before{content:'\e067'}.typcn-eject-outline:before{content:'\e068'}.typcn-eject:before{content:'\e069'}.typcn-equals-outline:before{content:'\e06a'}.typcn-equals:before{content:'\e06b'}.typcn-export-outline:before{content:'\e06c'}.typcn-export:before{content:'\e06d'}.typcn-eye-outline:before{content:'\e06e'}.typcn-eye:before{content:'\e06f'}.typcn-feather:before{content:'\e070'}.typcn-film:before{content:'\e071'}.typcn-filter:before{content:'\e072'}.typcn-flag-outline:before{content:'\e073'}.typcn-flag:before{content:'\e074'}.typcn-flash-outline:before{content:'\e075'}.typcn-flash:before{content:'\e076'}.typcn-flow-children:before{content:'\e077'}.typcn-flow-merge:before{content:'\e078'}.typcn-flow-parallel:before{content:'\e079'}.typcn-flow-switch:before{content:'\e07a'}.typcn-folder-add:before{content:'\e07b'}.typcn-folder-delete:before{content:'\e07c'}.typcn-folder-open:before{content:'\e07d'}.typcn-folder:before{content:'\e07e'}.typcn-gift:before{content:'\e07f'}.typcn-globe-outline:before{content:'\e080'}.typcn-globe:before{content:'\e081'}.typcn-group-outline:before{content:'\e082'}.typcn-group:before{content:'\e083'}.typcn-headphones:before{content:'\e084'}.typcn-heart-full-outline:before{content:'\e085'}.typcn-heart-half-outline:before{content:'\e086'}.typcn-heart-outline:before{content:'\e087'}.typcn-heart:before{content:'\e088'}.typcn-home-outline:before{content:'\e089'}.typcn-home:before{content:'\e08a'}.typcn-html5:before{content:'\e08b'}.typcn-image-outline:before{content:'\e08c'}.typcn-image:before{content:'\e08d'}.typcn-infinity-outline:before{content:'\e08e'}.typcn-infinity:before{content:'\e08f'}.typcn-info-large-outline:before{content:'\e090'}.typcn-info-large:before{content:'\e091'}.typcn-info-outline:before{content:'\e092'}.typcn-info:before{content:'\e093'}.typcn-input-checked-outline:before{content:'\e094'}.typcn-input-checked:before{content:'\e095'}.typcn-key-outline:before{content:'\e096'}.typcn-key:before{content:'\e097'}.typcn-keyboard:before{content:'\e098'}.typcn-leaf:before{content:'\e099'}.typcn-lightbulb:before{content:'\e09a'}.typcn-link-outline:before{content:'\e09b'}.typcn-link:before{content:'\e09c'}.typcn-location-arrow-outline:before{content:'\e09d'}.typcn-location-arrow:before{content:'\e09e'}.typcn-location-outline:before{content:'\e09f'}.typcn-location:before{content:'\e0a0'}.typcn-lock-closed-outline:before{content:'\e0a1'}.typcn-lock-closed:before{content:'\e0a2'}.typcn-lock-open-outline:before{content:'\e0a3'}.typcn-lock-open:before{content:'\e0a4'}.typcn-mail:before{content:'\e0a5'}.typcn-map:before{content:'\e0a6'}.typcn-media-eject-outline:before{content:'\e0a7'}.typcn-media-eject:before{content:'\e0a8'}.typcn-media-fast-forward-outline:before{content:'\e0a9'}.typcn-media-fast-forward:before{content:'\e0aa'}.typcn-media-pause-outline:before{content:'\e0ab'}.typcn-media-pause:before{content:'\e0ac'}.typcn-media-play-outline:before{content:'\e0ad'}.typcn-media-play-reverse-outline:before{content:'\e0ae'}.typcn-media-play-reverse:before{content:'\e0af'}.typcn-media-play:before{content:'\e0b0'}.typcn-media-record-outline:before{content:'\e0b1'}.typcn-media-record:before{content:'\e0b2'}.typcn-media-rewind-outline:before{content:'\e0b3'}.typcn-media-rewind:before{content:'\e0b4'}.typcn-media-stop-outline:before{content:'\e0b5'}.typcn-media-stop:before{content:'\e0b6'}.typcn-message-typing:before{content:'\e0b7'}.typcn-message:before{content:'\e0b8'}.typcn-messages:before{content:'\e0b9'}.typcn-microphone-outline:before{content:'\e0ba'}.typcn-microphone:before{content:'\e0bb'}.typcn-minus-outline:before{content:'\e0bc'}.typcn-minus:before{content:'\e0bd'}.typcn-mortar-board:before{content:'\e0be'}.typcn-news:before{content:'\e0bf'}.typcn-notes-outline:before{content:'\e0c0'}.typcn-notes:before{content:'\e0c1'}.typcn-pen:before{content:'\e0c2'}.typcn-pencil:before{content:'\e0c3'}.typcn-phone-outline:before{content:'\e0c4'}.typcn-phone:before{content:'\e0c5'}.typcn-pi-outline:before{content:'\e0c6'}.typcn-pi:before{content:'\e0c7'}.typcn-pin-outline:before{content:'\e0c8'}.typcn-pin:before{content:'\e0c9'}.typcn-pipette:before{content:'\e0ca'}.typcn-plane-outline:before{content:'\e0cb'}.typcn-plane:before{content:'\e0cc'}.typcn-plug:before{content:'\e0cd'}.typcn-plus-outline:before{content:'\e0ce'}.typcn-plus:before{content:'\e0cf'}.typcn-point-of-interest-outline:before{content:'\e0d0'}.typcn-point-of-interest:before{content:'\e0d1'}.typcn-power-outline:before{content:'\e0d2'}.typcn-power:before{content:'\e0d3'}.typcn-printer:before{content:'\e0d4'}.typcn-puzzle-outline:before{content:'\e0d5'}.typcn-puzzle:before{content:'\e0d6'}.typcn-radar-outline:before{content:'\e0d7'}.typcn-radar:before{content:'\e0d8'}.typcn-refresh-outline:before{content:'\e0d9'}.typcn-refresh:before{content:'\e0da'}.typcn-rss-outline:before{content:'\e0db'}.typcn-rss:before{content:'\e0dc'}.typcn-scissors-outline:before{content:'\e0dd'}.typcn-scissors:before{content:'\e0de'}.typcn-shopping-bag:before{content:'\e0df'}.typcn-shopping-cart:before{content:'\e0e0'}.typcn-social-at-circular:before{content:'\e0e1'}.typcn-social-dribbble-circular:before{content:'\e0e2'}.typcn-social-dribbble:before{content:'\e0e3'}.typcn-social-facebook-circular:before{content:'\e0e4'}.typcn-social-facebook:before{content:'\e0e5'}.typcn-social-flickr-circular:before{content:'\e0e6'}.typcn-social-flickr:before{content:'\e0e7'}.typcn-social-github-circular:before{content:'\e0e8'}.typcn-social-github:before{content:'\e0e9'}.typcn-social-google-plus-circular:before{content:'\e0ea'}.typcn-social-google-plus:before{content:'\e0eb'}.typcn-social-instagram-circular:before{content:'\e0ec'}.typcn-social-instagram:before{content:'\e0ed'}.typcn-social-last-fm-circular:before{content:'\e0ee'}.typcn-social-last-fm:before{content:'\e0ef'}.typcn-social-linkedin-circular:before{content:'\e0f0'}.typcn-social-linkedin:before{content:'\e0f1'}.typcn-social-pinterest-circular:before{content:'\e0f2'}.typcn-social-pinterest:before{content:'\e0f3'}.typcn-social-skype-outline:before{content:'\e0f4'}.typcn-social-skype:before{content:'\e0f5'}.typcn-social-tumbler-circular:before{content:'\e0f6'}.typcn-social-tumbler:before{content:'\e0f7'}.typcn-social-twitter-circular:before{content:'\e0f8'}.typcn-social-twitter:before{content:'\e0f9'}.typcn-social-vimeo-circular:before{content:'\e0fa'}.typcn-social-vimeo:before{content:'\e0fb'}.typcn-social-youtube-circular:before{content:'\e0fc'}.typcn-social-youtube:before{content:'\e0fd'}.typcn-sort-alphabetically-outline:before{content:'\e0fe'}.typcn-sort-alphabetically:before{content:'\e0ff'}.typcn-sort-numerically-outline:before{content:'\e100'}.typcn-sort-numerically:before{content:'\e101'}.typcn-spanner-outline:before{content:'\e102'}.typcn-spanner:before{content:'\e103'}.typcn-spiral:before{content:'\e104'}.typcn-star-full-outline:before{content:'\e105'}.typcn-star-half-outline:before{content:'\e106'}.typcn-star-half:before{content:'\e107'}.typcn-star-outline:before{content:'\e108'}.typcn-star:before{content:'\e109'}.typcn-starburst-outline:before{content:'\e10a'}.typcn-starburst:before{content:'\e10b'}.typcn-stopwatch:before{content:'\e10c'}.typcn-support:before{content:'\e10d'}.typcn-tabs-outline:before{content:'\e10e'}.typcn-tag:before{content:'\e10f'}.typcn-tags:before{content:'\e110'}.typcn-th-large-outline:before{content:'\e111'}.typcn-th-large:before{content:'\e112'}.typcn-th-list-outline:before{content:'\e113'}.typcn-th-list:before{content:'\e114'}.typcn-th-menu-outline:before{content:'\e115'}.typcn-th-menu:before{content:'\e116'}.typcn-th-small-outline:before{content:'\e117'}.typcn-th-small:before{content:'\e118'}.typcn-thermometer:before{content:'\e119'}.typcn-thumbs-down:before{content:'\e11a'}.typcn-thumbs-ok:before{content:'\e11b'}.typcn-thumbs-up:before{content:'\e11c'}.typcn-tick-outline:before{content:'\e11d'}.typcn-tick:before{content:'\e11e'}.typcn-ticket:before{content:'\e11f'}.typcn-time:before{content:'\e120'}.typcn-times-outline:before{content:'\e121'}.typcn-times:before{content:'\e122'}.typcn-trash:before{content:'\e123'}.typcn-tree:before{content:'\e124'}.typcn-upload-outline:before{content:'\e125'}.typcn-upload:before{content:'\e126'}.typcn-user-add-outline:before{content:'\e127'}.typcn-user-add:before{content:'\e128'}.typcn-user-delete-outline:before{content:'\e129'}.typcn-user-delete:before{content:'\e12a'}.typcn-user-outline:before{content:'\e12b'}.typcn-user:before{content:'\e12c'}.typcn-vendor-android:before{content:'\e12d'}.typcn-vendor-apple:before{content:'\e12e'}.typcn-vendor-microsoft:before{content:'\e12f'}.typcn-video-outline:before{content:'\e130'}.typcn-video:before{content:'\e131'}.typcn-volume-down:before{content:'\e132'}.typcn-volume-mute:before{content:'\e133'}.typcn-volume-up:before{content:'\e134'}.typcn-volume:before{content:'\e135'}.typcn-warning-outline:before{content:'\e136'}.typcn-warning:before{content:'\e137'}.typcn-watch:before{content:'\e138'}.typcn-waves-outline:before{content:'\e139'}.typcn-waves:before{content:'\e13a'}.typcn-weather-cloudy:before{content:'\e13b'}.typcn-weather-downpour:before{content:'\e13c'}.typcn-weather-night:before{content:'\e13d'}.typcn-weather-partly-sunny:before{content:'\e13e'}.typcn-weather-shower:before{content:'\e13f'}.typcn-weather-snow:before{content:'\e140'}.typcn-weather-stormy:before{content:'\e141'}.typcn-weather-sunny:before{content:'\e142'}.typcn-weather-windy-cloudy:before{content:'\e143'}.typcn-weather-windy:before{content:'\e144'}.typcn-wi-fi-outline:before{content:'\e145'}.typcn-wi-fi:before{content:'\e146'}.typcn-wine:before{content:'\e147'}.typcn-world-outline:before{content:'\e148'}.typcn-world:before{content:'\e149'}.typcn-zoom-in-outline:before{content:'\e14a'}.typcn-zoom-in:before{content:'\e14b'}.typcn-zoom-out-outline:before{content:'\e14c'}.typcn-zoom-out:before{content:'\e14d'}.typcn-zoom-outline:before{content:'\e14e'}.typcn-zoom:before{content:'\e14f'}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}/*! + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}@font-face{font-family:typicons;font-weight:400;font-style:normal;src:url(typicons.eot);src:url(typicons.eot?#iefix) format('embedded-opentype'),url(typicons.woff) format('woff'),url(typicons.ttf) format('truetype'),url(typicons.svg#typicons) format('svg')}.typcn:before{font-family:typicons;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;height:1em;font-size:1em;text-align:center;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.typcn-adjust-brightness:before{content:'\e000'}.typcn-adjust-contrast:before{content:'\e001'}.typcn-anchor-outline:before{content:'\e002'}.typcn-anchor:before{content:'\e003'}.typcn-archive:before{content:'\e004'}.typcn-arrow-back-outline:before{content:'\e005'}.typcn-arrow-back:before{content:'\e006'}.typcn-arrow-down-outline:before{content:'\e007'}.typcn-arrow-down-thick:before{content:'\e008'}.typcn-arrow-down:before{content:'\e009'}.typcn-arrow-forward-outline:before{content:'\e00a'}.typcn-arrow-forward:before{content:'\e00b'}.typcn-arrow-left-outline:before{content:'\e00c'}.typcn-arrow-left-thick:before{content:'\e00d'}.typcn-arrow-left:before{content:'\e00e'}.typcn-arrow-loop-outline:before{content:'\e00f'}.typcn-arrow-loop:before{content:'\e010'}.typcn-arrow-maximise-outline:before{content:'\e011'}.typcn-arrow-maximise:before{content:'\e012'}.typcn-arrow-minimise-outline:before{content:'\e013'}.typcn-arrow-minimise:before{content:'\e014'}.typcn-arrow-move-outline:before{content:'\e015'}.typcn-arrow-move:before{content:'\e016'}.typcn-arrow-repeat-outline:before{content:'\e017'}.typcn-arrow-repeat:before{content:'\e018'}.typcn-arrow-right-outline:before{content:'\e019'}.typcn-arrow-right-thick:before{content:'\e01a'}.typcn-arrow-right:before{content:'\e01b'}.typcn-arrow-shuffle:before{content:'\e01c'}.typcn-arrow-sorted-down:before{content:'\e01d'}.typcn-arrow-sorted-up:before{content:'\e01e'}.typcn-arrow-sync-outline:before{content:'\e01f'}.typcn-arrow-sync:before{content:'\e020'}.typcn-arrow-unsorted:before{content:'\e021'}.typcn-arrow-up-outline:before{content:'\e022'}.typcn-arrow-up-thick:before{content:'\e023'}.typcn-arrow-up:before{content:'\e024'}.typcn-at:before{content:'\e025'}.typcn-attachment-outline:before{content:'\e026'}.typcn-attachment:before{content:'\e027'}.typcn-backspace-outline:before{content:'\e028'}.typcn-backspace:before{content:'\e029'}.typcn-battery-charge:before{content:'\e02a'}.typcn-battery-full:before{content:'\e02b'}.typcn-battery-high:before{content:'\e02c'}.typcn-battery-low:before{content:'\e02d'}.typcn-battery-mid:before{content:'\e02e'}.typcn-beaker:before{content:'\e02f'}.typcn-beer:before{content:'\e030'}.typcn-bell:before{content:'\e031'}.typcn-book:before{content:'\e032'}.typcn-bookmark:before{content:'\e033'}.typcn-briefcase:before{content:'\e034'}.typcn-brush:before{content:'\e035'}.typcn-business-card:before{content:'\e036'}.typcn-calculator:before{content:'\e037'}.typcn-calendar-outline:before{content:'\e038'}.typcn-calendar:before{content:'\e039'}.typcn-camera-outline:before{content:'\e03a'}.typcn-camera:before{content:'\e03b'}.typcn-cancel-outline:before{content:'\e03c'}.typcn-cancel:before{content:'\e03d'}.typcn-chart-area-outline:before{content:'\e03e'}.typcn-chart-area:before{content:'\e03f'}.typcn-chart-bar-outline:before{content:'\e040'}.typcn-chart-bar:before{content:'\e041'}.typcn-chart-line-outline:before{content:'\e042'}.typcn-chart-line:before{content:'\e043'}.typcn-chart-pie-outline:before{content:'\e044'}.typcn-chart-pie:before{content:'\e045'}.typcn-chevron-left-outline:before{content:'\e046'}.typcn-chevron-left:before{content:'\e047'}.typcn-chevron-right-outline:before{content:'\e048'}.typcn-chevron-right:before{content:'\e049'}.typcn-clipboard:before{content:'\e04a'}.typcn-cloud-storage:before{content:'\e04b'}.typcn-cloud-storage-outline:before{content:'\e054'}.typcn-code-outline:before{content:'\e04c'}.typcn-code:before{content:'\e04d'}.typcn-coffee:before{content:'\e04e'}.typcn-cog-outline:before{content:'\e04f'}.typcn-cog:before{content:'\e050'}.typcn-compass:before{content:'\e051'}.typcn-contacts:before{content:'\e052'}.typcn-credit-card:before{content:'\e053'}.typcn-css3:before{content:'\e055'}.typcn-database:before{content:'\e056'}.typcn-delete-outline:before{content:'\e057'}.typcn-delete:before{content:'\e058'}.typcn-device-desktop:before{content:'\e059'}.typcn-device-laptop:before{content:'\e05a'}.typcn-device-phone:before{content:'\e05b'}.typcn-device-tablet:before{content:'\e05c'}.typcn-directions:before{content:'\e05d'}.typcn-divide-outline:before{content:'\e05e'}.typcn-divide:before{content:'\e05f'}.typcn-document-add:before{content:'\e060'}.typcn-document-delete:before{content:'\e061'}.typcn-document-text:before{content:'\e062'}.typcn-document:before{content:'\e063'}.typcn-download-outline:before{content:'\e064'}.typcn-download:before{content:'\e065'}.typcn-dropbox:before{content:'\e066'}.typcn-edit:before{content:'\e067'}.typcn-eject-outline:before{content:'\e068'}.typcn-eject:before{content:'\e069'}.typcn-equals-outline:before{content:'\e06a'}.typcn-equals:before{content:'\e06b'}.typcn-export-outline:before{content:'\e06c'}.typcn-export:before{content:'\e06d'}.typcn-eye-outline:before{content:'\e06e'}.typcn-eye:before{content:'\e06f'}.typcn-feather:before{content:'\e070'}.typcn-film:before{content:'\e071'}.typcn-filter:before{content:'\e072'}.typcn-flag-outline:before{content:'\e073'}.typcn-flag:before{content:'\e074'}.typcn-flash-outline:before{content:'\e075'}.typcn-flash:before{content:'\e076'}.typcn-flow-children:before{content:'\e077'}.typcn-flow-merge:before{content:'\e078'}.typcn-flow-parallel:before{content:'\e079'}.typcn-flow-switch:before{content:'\e07a'}.typcn-folder-add:before{content:'\e07b'}.typcn-folder-delete:before{content:'\e07c'}.typcn-folder-open:before{content:'\e07d'}.typcn-folder:before{content:'\e07e'}.typcn-gift:before{content:'\e07f'}.typcn-globe-outline:before{content:'\e080'}.typcn-globe:before{content:'\e081'}.typcn-group-outline:before{content:'\e082'}.typcn-group:before{content:'\e083'}.typcn-headphones:before{content:'\e084'}.typcn-heart-full-outline:before{content:'\e085'}.typcn-heart-half-outline:before{content:'\e086'}.typcn-heart-outline:before{content:'\e087'}.typcn-heart:before{content:'\e088'}.typcn-home-outline:before{content:'\e089'}.typcn-home:before{content:'\e08a'}.typcn-html5:before{content:'\e08b'}.typcn-image-outline:before{content:'\e08c'}.typcn-image:before{content:'\e08d'}.typcn-infinity-outline:before{content:'\e08e'}.typcn-infinity:before{content:'\e08f'}.typcn-info-large-outline:before{content:'\e090'}.typcn-info-large:before{content:'\e091'}.typcn-info-outline:before{content:'\e092'}.typcn-info:before{content:'\e093'}.typcn-input-checked-outline:before{content:'\e094'}.typcn-input-checked:before{content:'\e095'}.typcn-key-outline:before{content:'\e096'}.typcn-key:before{content:'\e097'}.typcn-keyboard:before{content:'\e098'}.typcn-leaf:before{content:'\e099'}.typcn-lightbulb:before{content:'\e09a'}.typcn-link-outline:before{content:'\e09b'}.typcn-link:before{content:'\e09c'}.typcn-location-arrow-outline:before{content:'\e09d'}.typcn-location-arrow:before{content:'\e09e'}.typcn-location-outline:before{content:'\e09f'}.typcn-location:before{content:'\e0a0'}.typcn-lock-closed-outline:before{content:'\e0a1'}.typcn-lock-closed:before{content:'\e0a2'}.typcn-lock-open-outline:before{content:'\e0a3'}.typcn-lock-open:before{content:'\e0a4'}.typcn-mail:before{content:'\e0a5'}.typcn-map:before{content:'\e0a6'}.typcn-media-eject-outline:before{content:'\e0a7'}.typcn-media-eject:before{content:'\e0a8'}.typcn-media-fast-forward-outline:before{content:'\e0a9'}.typcn-media-fast-forward:before{content:'\e0aa'}.typcn-media-pause-outline:before{content:'\e0ab'}.typcn-media-pause:before{content:'\e0ac'}.typcn-media-play-outline:before{content:'\e0ad'}.typcn-media-play-reverse-outline:before{content:'\e0ae'}.typcn-media-play-reverse:before{content:'\e0af'}.typcn-media-play:before{content:'\e0b0'}.typcn-media-record-outline:before{content:'\e0b1'}.typcn-media-record:before{content:'\e0b2'}.typcn-media-rewind-outline:before{content:'\e0b3'}.typcn-media-rewind:before{content:'\e0b4'}.typcn-media-stop-outline:before{content:'\e0b5'}.typcn-media-stop:before{content:'\e0b6'}.typcn-message-typing:before{content:'\e0b7'}.typcn-message:before{content:'\e0b8'}.typcn-messages:before{content:'\e0b9'}.typcn-microphone-outline:before{content:'\e0ba'}.typcn-microphone:before{content:'\e0bb'}.typcn-minus-outline:before{content:'\e0bc'}.typcn-minus:before{content:'\e0bd'}.typcn-mortar-board:before{content:'\e0be'}.typcn-news:before{content:'\e0bf'}.typcn-notes-outline:before{content:'\e0c0'}.typcn-notes:before{content:'\e0c1'}.typcn-pen:before{content:'\e0c2'}.typcn-pencil:before{content:'\e0c3'}.typcn-phone-outline:before{content:'\e0c4'}.typcn-phone:before{content:'\e0c5'}.typcn-pi-outline:before{content:'\e0c6'}.typcn-pi:before{content:'\e0c7'}.typcn-pin-outline:before{content:'\e0c8'}.typcn-pin:before{content:'\e0c9'}.typcn-pipette:before{content:'\e0ca'}.typcn-plane-outline:before{content:'\e0cb'}.typcn-plane:before{content:'\e0cc'}.typcn-plug:before{content:'\e0cd'}.typcn-plus-outline:before{content:'\e0ce'}.typcn-plus:before{content:'\e0cf'}.typcn-point-of-interest-outline:before{content:'\e0d0'}.typcn-point-of-interest:before{content:'\e0d1'}.typcn-power-outline:before{content:'\e0d2'}.typcn-power:before{content:'\e0d3'}.typcn-printer:before{content:'\e0d4'}.typcn-puzzle-outline:before{content:'\e0d5'}.typcn-puzzle:before{content:'\e0d6'}.typcn-radar-outline:before{content:'\e0d7'}.typcn-radar:before{content:'\e0d8'}.typcn-refresh-outline:before{content:'\e0d9'}.typcn-refresh:before{content:'\e0da'}.typcn-rss-outline:before{content:'\e0db'}.typcn-rss:before{content:'\e0dc'}.typcn-scissors-outline:before{content:'\e0dd'}.typcn-scissors:before{content:'\e0de'}.typcn-shopping-bag:before{content:'\e0df'}.typcn-shopping-cart:before{content:'\e0e0'}.typcn-social-at-circular:before{content:'\e0e1'}.typcn-social-dribbble-circular:before{content:'\e0e2'}.typcn-social-dribbble:before{content:'\e0e3'}.typcn-social-facebook-circular:before{content:'\e0e4'}.typcn-social-facebook:before{content:'\e0e5'}.typcn-social-flickr-circular:before{content:'\e0e6'}.typcn-social-flickr:before{content:'\e0e7'}.typcn-social-github-circular:before{content:'\e0e8'}.typcn-social-github:before{content:'\e0e9'}.typcn-social-google-plus-circular:before{content:'\e0ea'}.typcn-social-google-plus:before{content:'\e0eb'}.typcn-social-instagram-circular:before{content:'\e0ec'}.typcn-social-instagram:before{content:'\e0ed'}.typcn-social-last-fm-circular:before{content:'\e0ee'}.typcn-social-last-fm:before{content:'\e0ef'}.typcn-social-linkedin-circular:before{content:'\e0f0'}.typcn-social-linkedin:before{content:'\e0f1'}.typcn-social-pinterest-circular:before{content:'\e0f2'}.typcn-social-pinterest:before{content:'\e0f3'}.typcn-social-skype-outline:before{content:'\e0f4'}.typcn-social-skype:before{content:'\e0f5'}.typcn-social-tumbler-circular:before{content:'\e0f6'}.typcn-social-tumbler:before{content:'\e0f7'}.typcn-social-twitter-circular:before{content:'\e0f8'}.typcn-social-twitter:before{content:'\e0f9'}.typcn-social-vimeo-circular:before{content:'\e0fa'}.typcn-social-vimeo:before{content:'\e0fb'}.typcn-social-youtube-circular:before{content:'\e0fc'}.typcn-social-youtube:before{content:'\e0fd'}.typcn-sort-alphabetically-outline:before{content:'\e0fe'}.typcn-sort-alphabetically:before{content:'\e0ff'}.typcn-sort-numerically-outline:before{content:'\e100'}.typcn-sort-numerically:before{content:'\e101'}.typcn-spanner-outline:before{content:'\e102'}.typcn-spanner:before{content:'\e103'}.typcn-spiral:before{content:'\e104'}.typcn-star-full-outline:before{content:'\e105'}.typcn-star-half-outline:before{content:'\e106'}.typcn-star-half:before{content:'\e107'}.typcn-star-outline:before{content:'\e108'}.typcn-star:before{content:'\e109'}.typcn-starburst-outline:before{content:'\e10a'}.typcn-starburst:before{content:'\e10b'}.typcn-stopwatch:before{content:'\e10c'}.typcn-support:before{content:'\e10d'}.typcn-tabs-outline:before{content:'\e10e'}.typcn-tag:before{content:'\e10f'}.typcn-tags:before{content:'\e110'}.typcn-th-large-outline:before{content:'\e111'}.typcn-th-large:before{content:'\e112'}.typcn-th-list-outline:before{content:'\e113'}.typcn-th-list:before{content:'\e114'}.typcn-th-menu-outline:before{content:'\e115'}.typcn-th-menu:before{content:'\e116'}.typcn-th-small-outline:before{content:'\e117'}.typcn-th-small:before{content:'\e118'}.typcn-thermometer:before{content:'\e119'}.typcn-thumbs-down:before{content:'\e11a'}.typcn-thumbs-ok:before{content:'\e11b'}.typcn-thumbs-up:before{content:'\e11c'}.typcn-tick-outline:before{content:'\e11d'}.typcn-tick:before{content:'\e11e'}.typcn-ticket:before{content:'\e11f'}.typcn-time:before{content:'\e120'}.typcn-times-outline:before{content:'\e121'}.typcn-times:before{content:'\e122'}.typcn-trash:before{content:'\e123'}.typcn-tree:before{content:'\e124'}.typcn-upload-outline:before{content:'\e125'}.typcn-upload:before{content:'\e126'}.typcn-user-add-outline:before{content:'\e127'}.typcn-user-add:before{content:'\e128'}.typcn-user-delete-outline:before{content:'\e129'}.typcn-user-delete:before{content:'\e12a'}.typcn-user-outline:before{content:'\e12b'}.typcn-user:before{content:'\e12c'}.typcn-vendor-android:before{content:'\e12d'}.typcn-vendor-apple:before{content:'\e12e'}.typcn-vendor-microsoft:before{content:'\e12f'}.typcn-video-outline:before{content:'\e130'}.typcn-video:before{content:'\e131'}.typcn-volume-down:before{content:'\e132'}.typcn-volume-mute:before{content:'\e133'}.typcn-volume-up:before{content:'\e134'}.typcn-volume:before{content:'\e135'}.typcn-warning-outline:before{content:'\e136'}.typcn-warning:before{content:'\e137'}.typcn-watch:before{content:'\e138'}.typcn-waves-outline:before{content:'\e139'}.typcn-waves:before{content:'\e13a'}.typcn-weather-cloudy:before{content:'\e13b'}.typcn-weather-downpour:before{content:'\e13c'}.typcn-weather-night:before{content:'\e13d'}.typcn-weather-partly-sunny:before{content:'\e13e'}.typcn-weather-shower:before{content:'\e13f'}.typcn-weather-snow:before{content:'\e140'}.typcn-weather-stormy:before{content:'\e141'}.typcn-weather-sunny:before{content:'\e142'}.typcn-weather-windy-cloudy:before{content:'\e143'}.typcn-weather-windy:before{content:'\e144'}.typcn-wi-fi-outline:before{content:'\e145'}.typcn-wi-fi:before{content:'\e146'}.typcn-wine:before{content:'\e147'}.typcn-world-outline:before{content:'\e148'}.typcn-world:before{content:'\e149'}.typcn-zoom-in-outline:before{content:'\e14a'}.typcn-zoom-in:before{content:'\e14b'}.typcn-zoom-out-outline:before{content:'\e14c'}.typcn-zoom-out:before{content:'\e14d'}.typcn-zoom-outline:before{content:'\e14e'}.typcn-zoom:before{content:'\e14f'}/*! * ui-select * http://github.com/angular-ui/ui-select * Version: 0.17.1 - 2016-06-09T20:41:58.462Z diff --git a/static/css/alllibs.css.map b/static/css/alllibs.css.map index 7dc5b3f..4d4b904 100644 --- a/static/css/alllibs.css.map +++ b/static/css/alllibs.css.map @@ -1 +1 @@ -{"version":3,"sources":["angular-block-ui.css","loading-bar.css","angular-growl.css","bootstrap.css","animate.css","bootstrap-slider.css","typicons.css","typicons.min.css","font-awesome.css","select.css","nv.d3.css","bootstrap-switch.css","angular-busy.css"],"names":[],"mappings":"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wICrIA,4DACA,KACA,YAAA,WACA,qBAAA,KACA,yBAAA,KAEA,KACA,OAAA,EAEA,QACA,MACA,QACA,WACA,OACA,OACA,OACA,OACA,KACA,KACA,IACA,QACA,QACA,QAAA,MAEA,MACA,OACA,SACA,MACA,QAAA,aACA,eAAA,SAEA,sBACA,QAAA,KACA,OAAA,EAEA,SACA,SACA,QAAA,KAEA,EACA,iBAAA,YAEA,SACA,QACA,QAAA,EAEA,YACA,cAAA,IAAA,OAEA,EACA,OACA,YAAA,IAEA,IACA,WAAA,OAEA,GACA,UAAA,IACA,OAAA,MAAA,EAEA,KACA,WAAA,KACA,MAAA,KAEA,MACA,UAAA,IAEA,IACA,IACA,UAAA,IACA,YAAA,EACA,SAAA,SACA,eAAA,SAEA,IACA,IAAA,MAEA,IACA,OAAA,OAEA,IACA,OAAA,EAEA,eACA,SAAA,OAEA,OACA,OAAA,IAAA,KAEA,GACA,gBAAA,YACA,WAAA,YACA,OAAA,EAEA,IACA,SAAA,KAEA,KACA,IACA,IACA,KACA,YAAA,SAAA,CAAA,UACA,UAAA,IAEA,OACA,MACA,SACA,OACA,SACA,MAAA,QACA,KAAA,QACA,OAAA,EAEA,OACA,SAAA,QAEA,OACA,OACA,eAAA,KAEA,OACA,wBACA,kBACA,mBACA,mBAAA,OACA,OAAA,QAEA,iBACA,qBACA,OAAA,QAEA,yBACA,wBACA,OAAA,EACA,QAAA,EAEA,MACA,YAAA,OAEA,qBACA,kBACA,WAAA,WACA,QAAA,EAEA,8CACA,8CACA,OAAA,KAEA,mBACA,mBAAA,UACA,gBAAA,YACA,mBAAA,YACA,WAAA,YAEA,iDACA,8CACA,mBAAA,KAEA,SACA,OAAA,IAAA,MAAA,OACA,OAAA,EAAA,IACA,QAAA,MAAA,OAAA,MAEA,OACA,OAAA,EACA,QAAA,EAEA,SACA,SAAA,KAEA,SACA,YAAA,IAEA,MACA,gBAAA,SACA,eAAA,EAEA,GACA,GACA,QAAA,EAEA,qFACA,aACA,EAEA,OADA,QAEA,WAAA,cACA,MAAA,eACA,WAAA,eACA,YAAA,eAEA,EACA,UACA,gBAAA,UAEA,cACA,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","file":"alllibs.css","sourcesContent":["/*!\n angular-block-ui v0.2.0\n (c) 2015 (null) McNull https://github.com/McNull/angular-block-ui\n License: MIT\n*/\n\n.block-ui {\n position: relative;\n}\n\nbody.block-ui {\n /* IE8 doesn't support .block-ui:not(body) */\n \n position: static;\n}\n\nbody.block-ui > .block-ui-container,\n.block-ui-main > .block-ui-container {\n position: fixed;\n}\n\n.block-ui-container {\n position: absolute;\n z-index: 10000;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n filter: alpha(opacity=00);\n}\n\n.block-ui-active > .block-ui-container {\n height: 100%;\n cursor: wait;\n}\n\n.block-ui-active .block-ui-active > .block-ui-container {\n height: 0;\n}\n\n.block-ui-visible > .block-ui-container {\n opacity: 1;\n filter: alpha(opacity=100);\n}\n\n.block-ui-overlay {\n width: 100%;\n height: 100%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n background-color: white;\n}\n\n.block-ui-message-container {\n position: absolute;\n top: 35%;\n left: 0;\n right: 0;\n height: 0;\n text-align: center;\n z-index: 10001;\n}\n\n.block-ui-message {\n display: inline-block;\n text-align: left;\n background-color: #333;\n color: #f5f5f5;\n padding: 20px;\n border-radius: 4px;\n font-size: 20px;\n font-weight: bold;\n /* needed for IE */\n \n filter: alpha(opacity=100);\n}\n\n/* - - - - - - 8-< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n.block-ui-anim-fade > .block-ui-container {\n -webkit-transition: height 0s linear 200ms, opacity 200ms ease 0s;\n transition: height 0s linear 200ms, opacity 200ms ease 0s;\n}\n\n.block-ui-anim-fade.block-ui-active > .block-ui-container {\n /*this resets the initial delay of the height */\n /*and sizes the block to full height at once at the start of the block. */\n -webkit-transition-delay: 0s;\n transition-delay: 0s;\n}\n\n/* - - - - - - 8-< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n/*# sourceMappingURL=angular-block-ui.css.map */","/*! \n * angular-loading-bar v0.8.0\n * https://chieffancypants.github.io/angular-loading-bar\n * Copyright (c) 2015 Wes Cruver\n * License: MIT\n */\n\n/* Make clicks pass-through */\n#loading-bar,\n#loading-bar-spinner {\n pointer-events: none;\n -webkit-pointer-events: none;\n -webkit-transition: 350ms linear all;\n -moz-transition: 350ms linear all;\n -o-transition: 350ms linear all;\n transition: 350ms linear all;\n}\n\n#loading-bar.ng-enter,\n#loading-bar.ng-leave.ng-leave-active,\n#loading-bar-spinner.ng-enter,\n#loading-bar-spinner.ng-leave.ng-leave-active {\n opacity: 0;\n}\n\n#loading-bar.ng-enter.ng-enter-active,\n#loading-bar.ng-leave,\n#loading-bar-spinner.ng-enter.ng-enter-active,\n#loading-bar-spinner.ng-leave {\n opacity: 1;\n}\n\n#loading-bar .bar {\n -webkit-transition: width 350ms;\n -moz-transition: width 350ms;\n -o-transition: width 350ms;\n transition: width 350ms;\n\n background: #29d;\n position: fixed;\n z-index: 10002;\n top: 0;\n left: 0;\n width: 100%;\n height: 2px;\n border-bottom-right-radius: 1px;\n border-top-right-radius: 1px;\n}\n\n/* Fancy blur effect */\n#loading-bar .peg {\n position: absolute;\n width: 70px;\n right: 0;\n top: 0;\n height: 2px;\n opacity: .45;\n -moz-box-shadow: #29d 1px 0 6px 1px;\n -ms-box-shadow: #29d 1px 0 6px 1px;\n -webkit-box-shadow: #29d 1px 0 6px 1px;\n box-shadow: #29d 1px 0 6px 1px;\n -moz-border-radius: 100%;\n -webkit-border-radius: 100%;\n border-radius: 100%;\n}\n\n#loading-bar-spinner {\n display: block;\n position: fixed;\n z-index: 10002;\n top: 10px;\n left: 10px;\n}\n\n#loading-bar-spinner .spinner-icon {\n width: 14px;\n height: 14px;\n\n border: solid 2px transparent;\n border-top-color: #29d;\n border-left-color: #29d;\n border-radius: 50%;\n\n -webkit-animation: loading-bar-spinner 400ms linear infinite;\n -moz-animation: loading-bar-spinner 400ms linear infinite;\n -ms-animation: loading-bar-spinner 400ms linear infinite;\n -o-animation: loading-bar-spinner 400ms linear infinite;\n animation: loading-bar-spinner 400ms linear infinite;\n}\n\n@-webkit-keyframes loading-bar-spinner {\n 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@-moz-keyframes loading-bar-spinner {\n 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@-o-keyframes loading-bar-spinner {\n 0% { -o-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -o-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@-ms-keyframes loading-bar-spinner {\n 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@keyframes loading-bar-spinner {\n 0% { transform: rotate(0deg); transform: rotate(0deg); }\n 100% { transform: rotate(360deg); transform: rotate(360deg); }\n}\n","/**\n * angular-growl-v2 - v0.7.8 - 2015-10-25\n * http://janstevens.github.io/angular-growl-2\n * Copyright (c) 2015 Marco Rinck,Jan Stevens,Silvan van Leeuwen; Licensed MIT\n */\n/*\n * growl-container styles\n */\n.growl-container.growl-fixed {\n position: fixed;\n float: right;\n width: 90%;\n max-width: 400px;\n z-index: 9999;\n}\n.growl-container.growl-fixed.top-right {\n top: 10px;\n right: 15px;\n}\n.growl-container.growl-fixed.bottom-right {\n bottom: 10px;\n right: 15px;\n}\n.growl-container.growl-fixed.middle-right {\n top: 49%;\n right: 15px;\n}\n.growl-container.growl-fixed.top-left {\n top: 10px;\n left: 15px;\n}\n.growl-container.growl-fixed.bottom-left {\n bottom: 10px;\n left: 15px;\n}\n.growl-container.growl-fixed.middle-left {\n top: 49%;\n left: 15px;\n}\n.growl-container.growl-fixed.top-center {\n top: 10px;\n left: 50%;\n margin-left: -200px;\n}\n.growl-container.growl-fixed.bottom-center {\n bottom: 10px;\n left: 50%;\n margin-left: -200px;\n}\n.growl-container.growl-fixed.middle-center {\n top: 49%;\n left: 50%;\n margin-left: -200px;\n}\n\n/*\n * growl-item styles\n */\n.growl-container > .growl-item {\n padding: 10px;\n padding-right: 35px;\n margin-bottom: 10px;\n cursor: pointer;\n}\n\n.growl-container > button {\n border: none;\n outline:none;\n}\n.growl-container > .growl-item.ng-enter,\n.growl-container > .growl-item.ng-leave {\n -webkit-transition:0.5s linear all;\n -moz-transition:0.5s linear all;\n -o-transition:0.5s linear all;\n transition:0.5s linear all;\n}\n\n.growl-container > .growl-item.ng-enter,\n.growl-container > .growl-item.ng-leave.ng-leave-active {\n opacity:0;\n}\n.growl-container > .growl-item.ng-leave,\n.growl-container > .growl-item.ng-enter.ng-enter-active {\n opacity:1;\n}\n\n.growl-container > div.growl-item {\n background-position: 12px center;\n background-repeat: no-repeat;\n}\n\n/*\n * growl-title styles\n */\n.growl-title {\n font-size: 16px;\n}\n.growl-item.icon > .growl-title {\n margin: 0 0 0 40px;\n}\n\n/*\n * growl-message styles\n */\n.growl-item.icon > .growl-message {\n margin: 0 0 0 40px;\n}\n\n/*\n * growl background images\n */\n.growl-container > .alert-info.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n.growl-container > .alert-error.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n.growl-container > .alert-success.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n.growl-container > .alert-warning.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n","/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.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 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.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 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 3;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n","@charset \"UTF-8\";\n\n/*!\nAnimate.css - http://daneden.me/animate\nLicensed under the MIT license - http://opensource.org/licenses/MIT\n\nCopyright (c) 2015 Daniel Eden\n*/\n\n.animated {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n}\n\n.animated.infinite {\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n}\n\n.animated.hinge {\n -webkit-animation-duration: 2s;\n animation-duration: 2s;\n}\n\n.animated.bounceIn,\n.animated.bounceOut {\n -webkit-animation-duration: .75s;\n animation-duration: .75s;\n}\n\n.animated.flipOutX,\n.animated.flipOutY {\n -webkit-animation-duration: .75s;\n animation-duration: .75s;\n}\n\n@-webkit-keyframes bounce {\n from, 20%, 53%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n 40%, 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0,-4px,0);\n transform: translate3d(0,-4px,0);\n }\n}\n\n@keyframes bounce {\n from, 20%, 53%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n 40%, 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0,-4px,0);\n transform: translate3d(0,-4px,0);\n }\n}\n\n.bounce {\n -webkit-animation-name: bounce;\n animation-name: bounce;\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n from, 50%, 100% {\n opacity: 1;\n }\n\n 25%, 75% {\n opacity: 0;\n }\n}\n\n@keyframes flash {\n from, 50%, 100% {\n opacity: 1;\n }\n\n 25%, 75% {\n opacity: 0;\n }\n}\n\n.flash {\n -webkit-animation-name: flash;\n animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.pulse {\n -webkit-animation-name: pulse;\n animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(.95, 1.05, 1);\n transform: scale3d(.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, .95, 1);\n transform: scale3d(1.05, .95, 1);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(.95, 1.05, 1);\n transform: scale3d(.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, .95, 1);\n transform: scale3d(1.05, .95, 1);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.rubberBand {\n -webkit-animation-name: rubberBand;\n animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n from, 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%, 30%, 50%, 70%, 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%, 40%, 60%, 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n@keyframes shake {\n from, 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%, 30%, 50%, 70%, 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%, 40%, 60%, 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n.shake {\n -webkit-animation-name: shake;\n animation-name: shake;\n}\n\n@-webkit-keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n 100% {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n@keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n 100% {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n.swing {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n -webkit-animation-name: swing;\n animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%, 20% {\n -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%, 50%, 70%, 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%, 60%, 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%, 20% {\n -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%, 50%, 70%, 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%, 60%, 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.tada {\n -webkit-animation-name: tada;\n animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n from {\n -webkit-transform: none;\n transform: none;\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes wobble {\n from {\n -webkit-transform: none;\n transform: none;\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.wobble {\n -webkit-animation-name: wobble;\n animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n from, 11.1%, 100% {\n -webkit-transform: none;\n transform: none;\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n@keyframes jello {\n from, 11.1%, 100% {\n -webkit-transform: none;\n transform: none;\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n.jello {\n -webkit-animation-name: jello;\n animation-name: jello;\n -webkit-transform-origin: center;\n transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n from, 20%, 40%, 60%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(.97, .97, .97);\n transform: scale3d(.97, .97, .97);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes bounceIn {\n from, 20%, 40%, 60%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(.97, .97, .97);\n transform: scale3d(.97, .97, .97);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.bounceIn {\n -webkit-animation-name: bounceIn;\n animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes bounceInDown {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.bounceInDown {\n -webkit-animation-name: bounceInDown;\n animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes bounceInLeft {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.bounceInLeft {\n -webkit-animation-name: bounceInLeft;\n animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes bounceInRight {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.bounceInRight {\n -webkit-animation-name: bounceInRight;\n animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInUp {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInUp {\n -webkit-animation-name: bounceInUp;\n animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 50%, 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n}\n\n@keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 50%, 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n}\n\n.bounceOut {\n -webkit-animation-name: bounceOut;\n animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.bounceOutDown {\n -webkit-animation-name: bounceOutDown;\n animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.bounceOutLeft {\n -webkit-animation-name: bounceOutLeft;\n animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.bounceOutRight {\n -webkit-animation-name: bounceOutRight;\n animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.bounceOutUp {\n -webkit-animation-name: bounceOutUp;\n animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.fadeIn {\n -webkit-animation-name: fadeIn;\n animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInDown {\n -webkit-animation-name: fadeInDown;\n animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInDownBig {\n -webkit-animation-name: fadeInDownBig;\n animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInLeft {\n -webkit-animation-name: fadeInLeft;\n animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInLeftBig {\n -webkit-animation-name: fadeInLeftBig;\n animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInRight {\n -webkit-animation-name: fadeInRight;\n animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInRightBig {\n -webkit-animation-name: fadeInRightBig;\n animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInUp {\n -webkit-animation-name: fadeInUp;\n animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInUpBig {\n -webkit-animation-name: fadeInUpBig;\n animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n.fadeOut {\n -webkit-animation-name: fadeOut;\n animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.fadeOutDown {\n -webkit-animation-name: fadeOutDown;\n animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.fadeOutDownBig {\n -webkit-animation-name: fadeOutDownBig;\n animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.fadeOutLeft {\n -webkit-animation-name: fadeOutLeft;\n animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.fadeOutLeftBig {\n -webkit-animation-name: fadeOutLeftBig;\n animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.fadeOutRight {\n -webkit-animation-name: fadeOutRight;\n animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.fadeOutRightBig {\n -webkit-animation-name: fadeOutRightBig;\n animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.fadeOutUp {\n -webkit-animation-name: fadeOutUp;\n animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.fadeOutUpBig {\n -webkit-animation-name: fadeOutUpBig;\n animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n transform: perspective(400px) scale3d(.95, .95, .95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n@keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n transform: perspective(400px) scale3d(.95, .95, .95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n.animated.flip {\n -webkit-backface-visibility: visible;\n backface-visibility: visible;\n -webkit-animation-name: flip;\n animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInX {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInX;\n animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInY {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInY;\n animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutX {\n -webkit-animation-name: flipOutX;\n animation-name: flipOutX;\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutY {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipOutY;\n animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.lightSpeedIn {\n -webkit-animation-name: lightSpeedIn;\n animation-name: lightSpeedIn;\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n@keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n.lightSpeedOut {\n -webkit-animation-name: lightSpeedOut;\n animation-name: lightSpeedOut;\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateIn {\n -webkit-animation-name: rotateIn;\n animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInDownLeft {\n -webkit-animation-name: rotateInDownLeft;\n animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInDownRight {\n -webkit-animation-name: rotateInDownRight;\n animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInUpLeft {\n -webkit-animation-name: rotateInUpLeft;\n animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInUpRight {\n -webkit-animation-name: rotateInUpRight;\n animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n.rotateOut {\n -webkit-animation-name: rotateOut;\n animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownLeft {\n -webkit-animation-name: rotateOutDownLeft;\n animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownRight {\n -webkit-animation-name: rotateOutDownRight;\n animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpLeft {\n -webkit-animation-name: rotateOutUpLeft;\n animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpRight {\n -webkit-animation-name: rotateOutUpRight;\n animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%, 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%, 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n@keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%, 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%, 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n.hinge {\n -webkit-animation-name: hinge;\n animation-name: hinge;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.rollIn {\n -webkit-animation-name: rollIn;\n animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n@keyframes rollOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n.rollOut {\n -webkit-animation-name: rollOut;\n animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n.zoomIn {\n -webkit-animation-name: zoomIn;\n animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInDown {\n -webkit-animation-name: zoomInDown;\n animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInLeft {\n -webkit-animation-name: zoomInLeft;\n animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInRight {\n -webkit-animation-name: zoomInRight;\n animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInUp {\n -webkit-animation-name: zoomInUp;\n animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n@keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n.zoomOut {\n -webkit-animation-name: zoomOut;\n animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomOutDown {\n -webkit-animation-name: zoomOutDown;\n animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n transform: scale(.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n@keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n transform: scale(.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n.zoomOutLeft {\n -webkit-animation-name: zoomOutLeft;\n animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n transform: scale(.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n@keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n transform: scale(.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n.zoomOutRight {\n -webkit-animation-name: zoomOutRight;\n animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomOutUp {\n -webkit-animation-name: zoomOutUp;\n animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInDown {\n -webkit-animation-name: slideInDown;\n animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInLeft {\n -webkit-animation-name: slideInLeft;\n animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInRight {\n -webkit-animation-name: slideInRight;\n animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInUp {\n -webkit-animation-name: slideInUp;\n animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.slideOutDown {\n -webkit-animation-name: slideOutDown;\n animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.slideOutLeft {\n -webkit-animation-name: slideOutLeft;\n animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.slideOutRight {\n -webkit-animation-name: slideOutRight;\n animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.slideOutUp {\n -webkit-animation-name: slideOutUp;\n animation-name: slideOutUp;\n}","/*! =======================================================\n VERSION 5.2.4 \n========================================================= */\n/*! =========================================================\n * bootstrap-slider.js\n *\n * Maintainers:\n *\t\tKyle Kemp\n *\t\t\t- Twitter: @seiyria\n *\t\t\t- Github: seiyria\n *\t\tRohit Kalkur\n *\t\t\t- Twitter: @Rovolutionary\n *\t\t\t- Github: rovolution\n *\n * =========================================================\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n.slider {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n}\n.slider.slider-horizontal {\n width: 210px;\n height: 20px;\n}\n.slider.slider-horizontal .slider-track {\n height: 10px;\n width: 100%;\n margin-top: -5px;\n top: 50%;\n left: 0;\n}\n.slider.slider-horizontal .slider-selection,\n.slider.slider-horizontal .slider-track-low,\n.slider.slider-horizontal .slider-track-high {\n height: 100%;\n top: 0;\n bottom: 0;\n}\n.slider.slider-horizontal .slider-tick,\n.slider.slider-horizontal .slider-handle {\n margin-left: -10px;\n margin-top: -5px;\n}\n.slider.slider-horizontal .slider-tick.triangle,\n.slider.slider-horizontal .slider-handle.triangle {\n border-width: 0 10px 10px 10px;\n width: 0;\n height: 0;\n border-bottom-color: #0480be;\n margin-top: 0;\n}\n.slider.slider-horizontal .slider-tick-label-container {\n white-space: nowrap;\n margin-top: 20px;\n}\n.slider.slider-horizontal .slider-tick-label-container .slider-tick-label {\n padding-top: 4px;\n display: inline-block;\n text-align: center;\n}\n.slider.slider-vertical {\n height: 210px;\n width: 20px;\n}\n.slider.slider-vertical .slider-track {\n width: 10px;\n height: 100%;\n margin-left: -5px;\n left: 50%;\n top: 0;\n}\n.slider.slider-vertical .slider-selection {\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n}\n.slider.slider-vertical .slider-track-low,\n.slider.slider-vertical .slider-track-high {\n width: 100%;\n left: 0;\n right: 0;\n}\n.slider.slider-vertical .slider-tick,\n.slider.slider-vertical .slider-handle {\n margin-left: -5px;\n margin-top: -10px;\n}\n.slider.slider-vertical .slider-tick.triangle,\n.slider.slider-vertical .slider-handle.triangle {\n border-width: 10px 0 10px 10px;\n width: 1px;\n height: 1px;\n border-left-color: #0480be;\n margin-left: 0;\n}\n.slider.slider-disabled .slider-handle {\n background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);\n background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);\n background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0);\n}\n.slider.slider-disabled .slider-track {\n background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);\n background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);\n background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0);\n cursor: not-allowed;\n}\n.slider input {\n display: none;\n}\n.slider .tooltip.top {\n margin-top: -36px;\n}\n.slider .tooltip-inner {\n white-space: nowrap;\n}\n.slider .hide {\n display: none;\n}\n.slider-track {\n position: absolute;\n cursor: pointer;\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n}\n.slider-selection {\n position: absolute;\n background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border-radius: 4px;\n}\n.slider-selection.tick-slider-selection {\n background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0);\n}\n.slider-track-low,\n.slider-track-high {\n position: absolute;\n background: transparent;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border-radius: 4px;\n}\n.slider-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-color: #337ab7;\n background-image: -webkit-linear-gradient(top, #149bdf 0%, #0480be 100%);\n background-image: -o-linear-gradient(top, #149bdf 0%, #0480be 100%);\n background-image: linear-gradient(to bottom, #149bdf 0%, #0480be 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);\n filter: none;\n -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n border: 0px solid transparent;\n}\n.slider-handle.round {\n border-radius: 50%;\n}\n.slider-handle.triangle {\n background: transparent none;\n}\n.slider-handle.custom {\n background: transparent none;\n}\n.slider-handle.custom::before {\n line-height: 20px;\n font-size: 20px;\n content: '\\2605';\n color: #726204;\n}\n.slider-tick {\n position: absolute;\n width: 20px;\n height: 20px;\n background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n filter: none;\n opacity: 0.8;\n border: 0px solid transparent;\n}\n.slider-tick.round {\n border-radius: 50%;\n}\n.slider-tick.triangle {\n background: transparent none;\n}\n.slider-tick.custom {\n background: transparent none;\n}\n.slider-tick.custom::before {\n line-height: 20px;\n font-size: 20px;\n content: '\\2605';\n color: #726204;\n}\n.slider-tick.in-selection {\n background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0);\n opacity: 1;\n}\n","@charset 'UTF-8';\n \n/* @FONT-FACE loads font into browser */\n@font-face {\n font-family: 'typicons';\n font-weight: normal;\n font-style: normal;\n src: url('typicons.eot');\n src: url('typicons.eot?#iefix') format('embedded-opentype'),\n url('typicons.woff') format('woff'),\n url('typicons.ttf') format('truetype'),\n url('typicons.svg#typicons') format('svg');\n}\n \n/* :before psuedo-selector inserts and styles icon */\n.typcn:before {\n font-family: 'typicons';\n font-style: normal;\n font-weight: normal;\n speak: none;\n display: inline-block;\n text-decoration: inherit;\n width: 1em;\n height: 1em;\n font-size: 1em;\n text-align: center;\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\n \n/* Code for individual icons */ \n.typcn-adjust-brightness:before { \n content: '\\e000'; /* '' */\n} \n.typcn-adjust-contrast:before { \n content: '\\e001'; /* '' */\n} \n.typcn-anchor-outline:before { \n content: '\\e002'; /* '' */\n} \n.typcn-anchor:before { \n content: '\\e003'; /* '' */\n} \n.typcn-archive:before { \n content: '\\e004'; /* '' */\n} \n.typcn-arrow-back-outline:before { \n content: '\\e005'; /* '' */\n} \n.typcn-arrow-back:before { \n content: '\\e006'; /* '' */\n} \n.typcn-arrow-down-outline:before { \n content: '\\e007'; /* '' */\n} \n.typcn-arrow-down-thick:before { \n content: '\\e008'; /* '' */\n} \n.typcn-arrow-down:before { \n content: '\\e009'; /* '' */\n} \n.typcn-arrow-forward-outline:before { \n content: '\\e00a'; /* '' */\n} \n.typcn-arrow-forward:before { \n content: '\\e00b'; /* '' */\n} \n.typcn-arrow-left-outline:before { \n content: '\\e00c'; /* '' */\n} \n.typcn-arrow-left-thick:before { \n content: '\\e00d'; /* '' */\n} \n.typcn-arrow-left:before { \n content: '\\e00e'; /* '' */\n} \n.typcn-arrow-loop-outline:before { \n content: '\\e00f'; /* '' */\n} \n.typcn-arrow-loop:before { \n content: '\\e010'; /* '' */\n} \n.typcn-arrow-maximise-outline:before { \n content: '\\e011'; /* '' */\n} \n.typcn-arrow-maximise:before { \n content: '\\e012'; /* '' */\n} \n.typcn-arrow-minimise-outline:before { \n content: '\\e013'; /* '' */\n} \n.typcn-arrow-minimise:before { \n content: '\\e014'; /* '' */\n} \n.typcn-arrow-move-outline:before { \n content: '\\e015'; /* '' */\n} \n.typcn-arrow-move:before { \n content: '\\e016'; /* '' */\n} \n.typcn-arrow-repeat-outline:before { \n content: '\\e017'; /* '' */\n} \n.typcn-arrow-repeat:before { \n content: '\\e018'; /* '' */\n} \n.typcn-arrow-right-outline:before { \n content: '\\e019'; /* '' */\n} \n.typcn-arrow-right-thick:before { \n content: '\\e01a'; /* '' */\n} \n.typcn-arrow-right:before { \n content: '\\e01b'; /* '' */\n} \n.typcn-arrow-shuffle:before { \n content: '\\e01c'; /* '' */\n} \n.typcn-arrow-sorted-down:before { \n content: '\\e01d'; /* '' */\n} \n.typcn-arrow-sorted-up:before { \n content: '\\e01e'; /* '' */\n} \n.typcn-arrow-sync-outline:before { \n content: '\\e01f'; /* '' */\n} \n.typcn-arrow-sync:before { \n content: '\\e020'; /* '' */\n} \n.typcn-arrow-unsorted:before { \n content: '\\e021'; /* '' */\n} \n.typcn-arrow-up-outline:before { \n content: '\\e022'; /* '' */\n} \n.typcn-arrow-up-thick:before { \n content: '\\e023'; /* '' */\n} \n.typcn-arrow-up:before { \n content: '\\e024'; /* '' */\n} \n.typcn-at:before { \n content: '\\e025'; /* '' */\n} \n.typcn-attachment-outline:before { \n content: '\\e026'; /* '' */\n} \n.typcn-attachment:before { \n content: '\\e027'; /* '' */\n} \n.typcn-backspace-outline:before { \n content: '\\e028'; /* '' */\n} \n.typcn-backspace:before { \n content: '\\e029'; /* '' */\n} \n.typcn-battery-charge:before { \n content: '\\e02a'; /* '' */\n} \n.typcn-battery-full:before { \n content: '\\e02b'; /* '' */\n} \n.typcn-battery-high:before { \n content: '\\e02c'; /* '' */\n} \n.typcn-battery-low:before { \n content: '\\e02d'; /* '' */\n} \n.typcn-battery-mid:before { \n content: '\\e02e'; /* '' */\n} \n.typcn-beaker:before { \n content: '\\e02f'; /* '' */\n} \n.typcn-beer:before { \n content: '\\e030'; /* '' */\n} \n.typcn-bell:before { \n content: '\\e031'; /* '' */\n} \n.typcn-book:before { \n content: '\\e032'; /* '' */\n} \n.typcn-bookmark:before { \n content: '\\e033'; /* '' */\n} \n.typcn-briefcase:before { \n content: '\\e034'; /* '' */\n} \n.typcn-brush:before { \n content: '\\e035'; /* '' */\n} \n.typcn-business-card:before { \n content: '\\e036'; /* '' */\n} \n.typcn-calculator:before { \n content: '\\e037'; /* '' */\n} \n.typcn-calendar-outline:before { \n content: '\\e038'; /* '' */\n} \n.typcn-calendar:before { \n content: '\\e039'; /* '' */\n} \n.typcn-camera-outline:before { \n content: '\\e03a'; /* '' */\n} \n.typcn-camera:before { \n content: '\\e03b'; /* '' */\n} \n.typcn-cancel-outline:before { \n content: '\\e03c'; /* '' */\n} \n.typcn-cancel:before { \n content: '\\e03d'; /* '' */\n} \n.typcn-chart-area-outline:before { \n content: '\\e03e'; /* '' */\n} \n.typcn-chart-area:before { \n content: '\\e03f'; /* '' */\n} \n.typcn-chart-bar-outline:before { \n content: '\\e040'; /* '' */\n} \n.typcn-chart-bar:before { \n content: '\\e041'; /* '' */\n} \n.typcn-chart-line-outline:before { \n content: '\\e042'; /* '' */\n} \n.typcn-chart-line:before { \n content: '\\e043'; /* '' */\n} \n.typcn-chart-pie-outline:before { \n content: '\\e044'; /* '' */\n} \n.typcn-chart-pie:before { \n content: '\\e045'; /* '' */\n} \n.typcn-chevron-left-outline:before { \n content: '\\e046'; /* '' */\n} \n.typcn-chevron-left:before { \n content: '\\e047'; /* '' */\n} \n.typcn-chevron-right-outline:before { \n content: '\\e048'; /* '' */\n} \n.typcn-chevron-right:before { \n content: '\\e049'; /* '' */\n} \n.typcn-clipboard:before { \n content: '\\e04a'; /* '' */\n} \n.typcn-cloud-storage:before { \n content: '\\e04b'; /* '' */\n} \n.typcn-cloud-storage-outline:before { \n content: '\\e054'; /* '' */\n} \n.typcn-code-outline:before { \n content: '\\e04c'; /* '' */\n} \n.typcn-code:before { \n content: '\\e04d'; /* '' */\n} \n.typcn-coffee:before { \n content: '\\e04e'; /* '' */\n} \n.typcn-cog-outline:before { \n content: '\\e04f'; /* '' */\n} \n.typcn-cog:before { \n content: '\\e050'; /* '' */\n} \n.typcn-compass:before { \n content: '\\e051'; /* '' */\n} \n.typcn-contacts:before { \n content: '\\e052'; /* '' */\n} \n.typcn-credit-card:before { \n content: '\\e053'; /* '' */\n} \n.typcn-css3:before { \n content: '\\e055'; /* '' */\n} \n.typcn-database:before { \n content: '\\e056'; /* '' */\n} \n.typcn-delete-outline:before { \n content: '\\e057'; /* '' */\n} \n.typcn-delete:before { \n content: '\\e058'; /* '' */\n} \n.typcn-device-desktop:before { \n content: '\\e059'; /* '' */\n} \n.typcn-device-laptop:before { \n content: '\\e05a'; /* '' */\n} \n.typcn-device-phone:before { \n content: '\\e05b'; /* '' */\n} \n.typcn-device-tablet:before { \n content: '\\e05c'; /* '' */\n} \n.typcn-directions:before { \n content: '\\e05d'; /* '' */\n} \n.typcn-divide-outline:before { \n content: '\\e05e'; /* '' */\n} \n.typcn-divide:before { \n content: '\\e05f'; /* '' */\n} \n.typcn-document-add:before { \n content: '\\e060'; /* '' */\n} \n.typcn-document-delete:before { \n content: '\\e061'; /* '' */\n} \n.typcn-document-text:before { \n content: '\\e062'; /* '' */\n} \n.typcn-document:before { \n content: '\\e063'; /* '' */\n} \n.typcn-download-outline:before { \n content: '\\e064'; /* '' */\n} \n.typcn-download:before { \n content: '\\e065'; /* '' */\n} \n.typcn-dropbox:before { \n content: '\\e066'; /* '' */\n} \n.typcn-edit:before { \n content: '\\e067'; /* '' */\n} \n.typcn-eject-outline:before { \n content: '\\e068'; /* '' */\n} \n.typcn-eject:before { \n content: '\\e069'; /* '' */\n} \n.typcn-equals-outline:before { \n content: '\\e06a'; /* '' */\n} \n.typcn-equals:before { \n content: '\\e06b'; /* '' */\n} \n.typcn-export-outline:before { \n content: '\\e06c'; /* '' */\n} \n.typcn-export:before { \n content: '\\e06d'; /* '' */\n} \n.typcn-eye-outline:before { \n content: '\\e06e'; /* '' */\n} \n.typcn-eye:before { \n content: '\\e06f'; /* '' */\n} \n.typcn-feather:before { \n content: '\\e070'; /* '' */\n} \n.typcn-film:before { \n content: '\\e071'; /* '' */\n} \n.typcn-filter:before { \n content: '\\e072'; /* '' */\n} \n.typcn-flag-outline:before { \n content: '\\e073'; /* '' */\n} \n.typcn-flag:before { \n content: '\\e074'; /* '' */\n} \n.typcn-flash-outline:before { \n content: '\\e075'; /* '' */\n} \n.typcn-flash:before { \n content: '\\e076'; /* '' */\n} \n.typcn-flow-children:before { \n content: '\\e077'; /* '' */\n} \n.typcn-flow-merge:before { \n content: '\\e078'; /* '' */\n} \n.typcn-flow-parallel:before { \n content: '\\e079'; /* '' */\n} \n.typcn-flow-switch:before { \n content: '\\e07a'; /* '' */\n} \n.typcn-folder-add:before { \n content: '\\e07b'; /* '' */\n} \n.typcn-folder-delete:before { \n content: '\\e07c'; /* '' */\n} \n.typcn-folder-open:before { \n content: '\\e07d'; /* '' */\n} \n.typcn-folder:before { \n content: '\\e07e'; /* '' */\n} \n.typcn-gift:before { \n content: '\\e07f'; /* '' */\n} \n.typcn-globe-outline:before { \n content: '\\e080'; /* '' */\n} \n.typcn-globe:before { \n content: '\\e081'; /* '' */\n} \n.typcn-group-outline:before { \n content: '\\e082'; /* '' */\n} \n.typcn-group:before { \n content: '\\e083'; /* '' */\n} \n.typcn-headphones:before { \n content: '\\e084'; /* '' */\n} \n.typcn-heart-full-outline:before { \n content: '\\e085'; /* '' */\n} \n.typcn-heart-half-outline:before { \n content: '\\e086'; /* '' */\n} \n.typcn-heart-outline:before { \n content: '\\e087'; /* '' */\n} \n.typcn-heart:before { \n content: '\\e088'; /* '' */\n} \n.typcn-home-outline:before { \n content: '\\e089'; /* '' */\n} \n.typcn-home:before { \n content: '\\e08a'; /* '' */\n} \n.typcn-html5:before { \n content: '\\e08b'; /* '' */\n} \n.typcn-image-outline:before { \n content: '\\e08c'; /* '' */\n} \n.typcn-image:before { \n content: '\\e08d'; /* '' */\n} \n.typcn-infinity-outline:before { \n content: '\\e08e'; /* '' */\n} \n.typcn-infinity:before { \n content: '\\e08f'; /* '' */\n} \n.typcn-info-large-outline:before { \n content: '\\e090'; /* '' */\n} \n.typcn-info-large:before { \n content: '\\e091'; /* '' */\n} \n.typcn-info-outline:before { \n content: '\\e092'; /* '' */\n} \n.typcn-info:before { \n content: '\\e093'; /* '' */\n} \n.typcn-input-checked-outline:before { \n content: '\\e094'; /* '' */\n} \n.typcn-input-checked:before { \n content: '\\e095'; /* '' */\n} \n.typcn-key-outline:before { \n content: '\\e096'; /* '' */\n} \n.typcn-key:before { \n content: '\\e097'; /* '' */\n} \n.typcn-keyboard:before { \n content: '\\e098'; /* '' */\n} \n.typcn-leaf:before { \n content: '\\e099'; /* '' */\n} \n.typcn-lightbulb:before { \n content: '\\e09a'; /* '' */\n} \n.typcn-link-outline:before { \n content: '\\e09b'; /* '' */\n} \n.typcn-link:before { \n content: '\\e09c'; /* '' */\n} \n.typcn-location-arrow-outline:before { \n content: '\\e09d'; /* '' */\n} \n.typcn-location-arrow:before { \n content: '\\e09e'; /* '' */\n} \n.typcn-location-outline:before { \n content: '\\e09f'; /* '' */\n} \n.typcn-location:before { \n content: '\\e0a0'; /* '' */\n} \n.typcn-lock-closed-outline:before { \n content: '\\e0a1'; /* '' */\n} \n.typcn-lock-closed:before { \n content: '\\e0a2'; /* '' */\n} \n.typcn-lock-open-outline:before { \n content: '\\e0a3'; /* '' */\n} \n.typcn-lock-open:before { \n content: '\\e0a4'; /* '' */\n} \n.typcn-mail:before { \n content: '\\e0a5'; /* '' */\n} \n.typcn-map:before { \n content: '\\e0a6'; /* '' */\n} \n.typcn-media-eject-outline:before { \n content: '\\e0a7'; /* '' */\n} \n.typcn-media-eject:before { \n content: '\\e0a8'; /* '' */\n} \n.typcn-media-fast-forward-outline:before { \n content: '\\e0a9'; /* '' */\n} \n.typcn-media-fast-forward:before { \n content: '\\e0aa'; /* '' */\n} \n.typcn-media-pause-outline:before { \n content: '\\e0ab'; /* '' */\n} \n.typcn-media-pause:before { \n content: '\\e0ac'; /* '' */\n} \n.typcn-media-play-outline:before { \n content: '\\e0ad'; /* '' */\n} \n.typcn-media-play-reverse-outline:before { \n content: '\\e0ae'; /* '' */\n} \n.typcn-media-play-reverse:before { \n content: '\\e0af'; /* '' */\n} \n.typcn-media-play:before { \n content: '\\e0b0'; /* '' */\n} \n.typcn-media-record-outline:before { \n content: '\\e0b1'; /* '' */\n} \n.typcn-media-record:before { \n content: '\\e0b2'; /* '' */\n} \n.typcn-media-rewind-outline:before { \n content: '\\e0b3'; /* '' */\n} \n.typcn-media-rewind:before { \n content: '\\e0b4'; /* '' */\n} \n.typcn-media-stop-outline:before { \n content: '\\e0b5'; /* '' */\n} \n.typcn-media-stop:before { \n content: '\\e0b6'; /* '' */\n} \n.typcn-message-typing:before { \n content: '\\e0b7'; /* '' */\n} \n.typcn-message:before { \n content: '\\e0b8'; /* '' */\n} \n.typcn-messages:before { \n content: '\\e0b9'; /* '' */\n} \n.typcn-microphone-outline:before { \n content: '\\e0ba'; /* '' */\n} \n.typcn-microphone:before { \n content: '\\e0bb'; /* '' */\n} \n.typcn-minus-outline:before { \n content: '\\e0bc'; /* '' */\n} \n.typcn-minus:before { \n content: '\\e0bd'; /* '' */\n} \n.typcn-mortar-board:before { \n content: '\\e0be'; /* '' */\n} \n.typcn-news:before { \n content: '\\e0bf'; /* '' */\n} \n.typcn-notes-outline:before { \n content: '\\e0c0'; /* '' */\n} \n.typcn-notes:before { \n content: '\\e0c1'; /* '' */\n} \n.typcn-pen:before { \n content: '\\e0c2'; /* '' */\n} \n.typcn-pencil:before { \n content: '\\e0c3'; /* '' */\n} \n.typcn-phone-outline:before { \n content: '\\e0c4'; /* '' */\n} \n.typcn-phone:before { \n content: '\\e0c5'; /* '' */\n} \n.typcn-pi-outline:before { \n content: '\\e0c6'; /* '' */\n} \n.typcn-pi:before { \n content: '\\e0c7'; /* '' */\n} \n.typcn-pin-outline:before { \n content: '\\e0c8'; /* '' */\n} \n.typcn-pin:before { \n content: '\\e0c9'; /* '' */\n} \n.typcn-pipette:before { \n content: '\\e0ca'; /* '' */\n} \n.typcn-plane-outline:before { \n content: '\\e0cb'; /* '' */\n} \n.typcn-plane:before { \n content: '\\e0cc'; /* '' */\n} \n.typcn-plug:before { \n content: '\\e0cd'; /* '' */\n} \n.typcn-plus-outline:before { \n content: '\\e0ce'; /* '' */\n} \n.typcn-plus:before { \n content: '\\e0cf'; /* '' */\n} \n.typcn-point-of-interest-outline:before { \n content: '\\e0d0'; /* '' */\n} \n.typcn-point-of-interest:before { \n content: '\\e0d1'; /* '' */\n} \n.typcn-power-outline:before { \n content: '\\e0d2'; /* '' */\n} \n.typcn-power:before { \n content: '\\e0d3'; /* '' */\n} \n.typcn-printer:before { \n content: '\\e0d4'; /* '' */\n} \n.typcn-puzzle-outline:before { \n content: '\\e0d5'; /* '' */\n} \n.typcn-puzzle:before { \n content: '\\e0d6'; /* '' */\n} \n.typcn-radar-outline:before { \n content: '\\e0d7'; /* '' */\n} \n.typcn-radar:before { \n content: '\\e0d8'; /* '' */\n} \n.typcn-refresh-outline:before { \n content: '\\e0d9'; /* '' */\n} \n.typcn-refresh:before { \n content: '\\e0da'; /* '' */\n} \n.typcn-rss-outline:before { \n content: '\\e0db'; /* '' */\n} \n.typcn-rss:before { \n content: '\\e0dc'; /* '' */\n} \n.typcn-scissors-outline:before { \n content: '\\e0dd'; /* '' */\n} \n.typcn-scissors:before { \n content: '\\e0de'; /* '' */\n} \n.typcn-shopping-bag:before { \n content: '\\e0df'; /* '' */\n} \n.typcn-shopping-cart:before { \n content: '\\e0e0'; /* '' */\n} \n.typcn-social-at-circular:before { \n content: '\\e0e1'; /* '' */\n} \n.typcn-social-dribbble-circular:before { \n content: '\\e0e2'; /* '' */\n} \n.typcn-social-dribbble:before { \n content: '\\e0e3'; /* '' */\n} \n.typcn-social-facebook-circular:before { \n content: '\\e0e4'; /* '' */\n} \n.typcn-social-facebook:before { \n content: '\\e0e5'; /* '' */\n} \n.typcn-social-flickr-circular:before { \n content: '\\e0e6'; /* '' */\n} \n.typcn-social-flickr:before { \n content: '\\e0e7'; /* '' */\n} \n.typcn-social-github-circular:before { \n content: '\\e0e8'; /* '' */\n} \n.typcn-social-github:before { \n content: '\\e0e9'; /* '' */\n} \n.typcn-social-google-plus-circular:before { \n content: '\\e0ea'; /* '' */\n} \n.typcn-social-google-plus:before { \n content: '\\e0eb'; /* '' */\n} \n.typcn-social-instagram-circular:before { \n content: '\\e0ec'; /* '' */\n} \n.typcn-social-instagram:before { \n content: '\\e0ed'; /* '' */\n} \n.typcn-social-last-fm-circular:before { \n content: '\\e0ee'; /* '' */\n} \n.typcn-social-last-fm:before { \n content: '\\e0ef'; /* '' */\n} \n.typcn-social-linkedin-circular:before { \n content: '\\e0f0'; /* '' */\n} \n.typcn-social-linkedin:before { \n content: '\\e0f1'; /* '' */\n} \n.typcn-social-pinterest-circular:before { \n content: '\\e0f2'; /* '' */\n} \n.typcn-social-pinterest:before { \n content: '\\e0f3'; /* '' */\n} \n.typcn-social-skype-outline:before { \n content: '\\e0f4'; /* '' */\n} \n.typcn-social-skype:before { \n content: '\\e0f5'; /* '' */\n} \n.typcn-social-tumbler-circular:before { \n content: '\\e0f6'; /* '' */\n} \n.typcn-social-tumbler:before { \n content: '\\e0f7'; /* '' */\n} \n.typcn-social-twitter-circular:before { \n content: '\\e0f8'; /* '' */\n} \n.typcn-social-twitter:before { \n content: '\\e0f9'; /* '' */\n} \n.typcn-social-vimeo-circular:before { \n content: '\\e0fa'; /* '' */\n} \n.typcn-social-vimeo:before { \n content: '\\e0fb'; /* '' */\n} \n.typcn-social-youtube-circular:before { \n content: '\\e0fc'; /* '' */\n} \n.typcn-social-youtube:before { \n content: '\\e0fd'; /* '' */\n} \n.typcn-sort-alphabetically-outline:before { \n content: '\\e0fe'; /* '' */\n} \n.typcn-sort-alphabetically:before { \n content: '\\e0ff'; /* '' */\n} \n.typcn-sort-numerically-outline:before { \n content: '\\e100'; /* '' */\n} \n.typcn-sort-numerically:before { \n content: '\\e101'; /* '' */\n} \n.typcn-spanner-outline:before { \n content: '\\e102'; /* '' */\n} \n.typcn-spanner:before { \n content: '\\e103'; /* '' */\n} \n.typcn-spiral:before { \n content: '\\e104'; /* '' */\n} \n.typcn-star-full-outline:before { \n content: '\\e105'; /* '' */\n} \n.typcn-star-half-outline:before { \n content: '\\e106'; /* '' */\n} \n.typcn-star-half:before { \n content: '\\e107'; /* '' */\n} \n.typcn-star-outline:before { \n content: '\\e108'; /* '' */\n} \n.typcn-star:before { \n content: '\\e109'; /* '' */\n} \n.typcn-starburst-outline:before { \n content: '\\e10a'; /* '' */\n} \n.typcn-starburst:before { \n content: '\\e10b'; /* '' */\n} \n.typcn-stopwatch:before { \n content: '\\e10c'; /* '' */\n} \n.typcn-support:before { \n content: '\\e10d'; /* '' */\n} \n.typcn-tabs-outline:before { \n content: '\\e10e'; /* '' */\n} \n.typcn-tag:before { \n content: '\\e10f'; /* '' */\n} \n.typcn-tags:before { \n content: '\\e110'; /* '' */\n} \n.typcn-th-large-outline:before { \n content: '\\e111'; /* '' */\n} \n.typcn-th-large:before { \n content: '\\e112'; /* '' */\n} \n.typcn-th-list-outline:before { \n content: '\\e113'; /* '' */\n} \n.typcn-th-list:before { \n content: '\\e114'; /* '' */\n} \n.typcn-th-menu-outline:before { \n content: '\\e115'; /* '' */\n} \n.typcn-th-menu:before { \n content: '\\e116'; /* '' */\n} \n.typcn-th-small-outline:before { \n content: '\\e117'; /* '' */\n} \n.typcn-th-small:before { \n content: '\\e118'; /* '' */\n} \n.typcn-thermometer:before { \n content: '\\e119'; /* '' */\n} \n.typcn-thumbs-down:before { \n content: '\\e11a'; /* '' */\n} \n.typcn-thumbs-ok:before { \n content: '\\e11b'; /* '' */\n} \n.typcn-thumbs-up:before { \n content: '\\e11c'; /* '' */\n} \n.typcn-tick-outline:before { \n content: '\\e11d'; /* '' */\n} \n.typcn-tick:before { \n content: '\\e11e'; /* '' */\n} \n.typcn-ticket:before { \n content: '\\e11f'; /* '' */\n} \n.typcn-time:before { \n content: '\\e120'; /* '' */\n} \n.typcn-times-outline:before { \n content: '\\e121'; /* '' */\n} \n.typcn-times:before { \n content: '\\e122'; /* '' */\n} \n.typcn-trash:before { \n content: '\\e123'; /* '' */\n} \n.typcn-tree:before { \n content: '\\e124'; /* '' */\n} \n.typcn-upload-outline:before { \n content: '\\e125'; /* '' */\n} \n.typcn-upload:before { \n content: '\\e126'; /* '' */\n} \n.typcn-user-add-outline:before { \n content: '\\e127'; /* '' */\n} \n.typcn-user-add:before { \n content: '\\e128'; /* '' */\n} \n.typcn-user-delete-outline:before { \n content: '\\e129'; /* '' */\n} \n.typcn-user-delete:before { \n content: '\\e12a'; /* '' */\n} \n.typcn-user-outline:before { \n content: '\\e12b'; /* '' */\n} \n.typcn-user:before { \n content: '\\e12c'; /* '' */\n} \n.typcn-vendor-android:before { \n content: '\\e12d'; /* '' */\n} \n.typcn-vendor-apple:before { \n content: '\\e12e'; /* '' */\n} \n.typcn-vendor-microsoft:before { \n content: '\\e12f'; /* '' */\n} \n.typcn-video-outline:before { \n content: '\\e130'; /* '' */\n} \n.typcn-video:before { \n content: '\\e131'; /* '' */\n} \n.typcn-volume-down:before { \n content: '\\e132'; /* '' */\n} \n.typcn-volume-mute:before { \n content: '\\e133'; /* '' */\n} \n.typcn-volume-up:before { \n content: '\\e134'; /* '' */\n} \n.typcn-volume:before { \n content: '\\e135'; /* '' */\n} \n.typcn-warning-outline:before { \n content: '\\e136'; /* '' */\n} \n.typcn-warning:before { \n content: '\\e137'; /* '' */\n} \n.typcn-watch:before { \n content: '\\e138'; /* '' */\n} \n.typcn-waves-outline:before { \n content: '\\e139'; /* '' */\n} \n.typcn-waves:before { \n content: '\\e13a'; /* '' */\n} \n.typcn-weather-cloudy:before { \n content: '\\e13b'; /* '' */\n} \n.typcn-weather-downpour:before { \n content: '\\e13c'; /* '' */\n} \n.typcn-weather-night:before { \n content: '\\e13d'; /* '' */\n} \n.typcn-weather-partly-sunny:before { \n content: '\\e13e'; /* '' */\n} \n.typcn-weather-shower:before { \n content: '\\e13f'; /* '' */\n} \n.typcn-weather-snow:before { \n content: '\\e140'; /* '' */\n} \n.typcn-weather-stormy:before { \n content: '\\e141'; /* '' */\n} \n.typcn-weather-sunny:before { \n content: '\\e142'; /* '' */\n} \n.typcn-weather-windy-cloudy:before { \n content: '\\e143'; /* '' */\n} \n.typcn-weather-windy:before { \n content: '\\e144'; /* '' */\n} \n.typcn-wi-fi-outline:before { \n content: '\\e145'; /* '' */\n} \n.typcn-wi-fi:before { \n content: '\\e146'; /* '' */\n} \n.typcn-wine:before { \n content: '\\e147'; /* '' */\n} \n.typcn-world-outline:before { \n content: '\\e148'; /* '' */\n} \n.typcn-world:before { \n content: '\\e149'; /* '' */\n} \n.typcn-zoom-in-outline:before { \n content: '\\e14a'; /* '' */\n} \n.typcn-zoom-in:before { \n content: '\\e14b'; /* '' */\n} \n.typcn-zoom-out-outline:before { \n content: '\\e14c'; /* '' */\n} \n.typcn-zoom-out:before { \n content: '\\e14d'; /* '' */\n} \n.typcn-zoom-outline:before { \n content: '\\e14e'; /* '' */\n} \n.typcn-zoom:before { \n content: '\\e14f'; /* '' */\n}","@charset 'UTF-8';@font-face{font-family:'typicons';font-weight:normal;font-style:normal;src:url('typicons.eot');src:url('typicons.eot?#iefix') format('embedded-opentype'),url('typicons.woff') format('woff'),url('typicons.ttf') format('truetype'),url('typicons.svg#typicons') format('svg')}.typcn:before{font-family:'typicons';font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;height:1em;font-size:1em;text-align:center;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.typcn-adjust-brightness:before{content:'\\e000'}.typcn-adjust-contrast:before{content:'\\e001'}.typcn-anchor-outline:before{content:'\\e002'}.typcn-anchor:before{content:'\\e003'}.typcn-archive:before{content:'\\e004'}.typcn-arrow-back-outline:before{content:'\\e005'}.typcn-arrow-back:before{content:'\\e006'}.typcn-arrow-down-outline:before{content:'\\e007'}.typcn-arrow-down-thick:before{content:'\\e008'}.typcn-arrow-down:before{content:'\\e009'}.typcn-arrow-forward-outline:before{content:'\\e00a'}.typcn-arrow-forward:before{content:'\\e00b'}.typcn-arrow-left-outline:before{content:'\\e00c'}.typcn-arrow-left-thick:before{content:'\\e00d'}.typcn-arrow-left:before{content:'\\e00e'}.typcn-arrow-loop-outline:before{content:'\\e00f'}.typcn-arrow-loop:before{content:'\\e010'}.typcn-arrow-maximise-outline:before{content:'\\e011'}.typcn-arrow-maximise:before{content:'\\e012'}.typcn-arrow-minimise-outline:before{content:'\\e013'}.typcn-arrow-minimise:before{content:'\\e014'}.typcn-arrow-move-outline:before{content:'\\e015'}.typcn-arrow-move:before{content:'\\e016'}.typcn-arrow-repeat-outline:before{content:'\\e017'}.typcn-arrow-repeat:before{content:'\\e018'}.typcn-arrow-right-outline:before{content:'\\e019'}.typcn-arrow-right-thick:before{content:'\\e01a'}.typcn-arrow-right:before{content:'\\e01b'}.typcn-arrow-shuffle:before{content:'\\e01c'}.typcn-arrow-sorted-down:before{content:'\\e01d'}.typcn-arrow-sorted-up:before{content:'\\e01e'}.typcn-arrow-sync-outline:before{content:'\\e01f'}.typcn-arrow-sync:before{content:'\\e020'}.typcn-arrow-unsorted:before{content:'\\e021'}.typcn-arrow-up-outline:before{content:'\\e022'}.typcn-arrow-up-thick:before{content:'\\e023'}.typcn-arrow-up:before{content:'\\e024'}.typcn-at:before{content:'\\e025'}.typcn-attachment-outline:before{content:'\\e026'}.typcn-attachment:before{content:'\\e027'}.typcn-backspace-outline:before{content:'\\e028'}.typcn-backspace:before{content:'\\e029'}.typcn-battery-charge:before{content:'\\e02a'}.typcn-battery-full:before{content:'\\e02b'}.typcn-battery-high:before{content:'\\e02c'}.typcn-battery-low:before{content:'\\e02d'}.typcn-battery-mid:before{content:'\\e02e'}.typcn-beaker:before{content:'\\e02f'}.typcn-beer:before{content:'\\e030'}.typcn-bell:before{content:'\\e031'}.typcn-book:before{content:'\\e032'}.typcn-bookmark:before{content:'\\e033'}.typcn-briefcase:before{content:'\\e034'}.typcn-brush:before{content:'\\e035'}.typcn-business-card:before{content:'\\e036'}.typcn-calculator:before{content:'\\e037'}.typcn-calendar-outline:before{content:'\\e038'}.typcn-calendar:before{content:'\\e039'}.typcn-camera-outline:before{content:'\\e03a'}.typcn-camera:before{content:'\\e03b'}.typcn-cancel-outline:before{content:'\\e03c'}.typcn-cancel:before{content:'\\e03d'}.typcn-chart-area-outline:before{content:'\\e03e'}.typcn-chart-area:before{content:'\\e03f'}.typcn-chart-bar-outline:before{content:'\\e040'}.typcn-chart-bar:before{content:'\\e041'}.typcn-chart-line-outline:before{content:'\\e042'}.typcn-chart-line:before{content:'\\e043'}.typcn-chart-pie-outline:before{content:'\\e044'}.typcn-chart-pie:before{content:'\\e045'}.typcn-chevron-left-outline:before{content:'\\e046'}.typcn-chevron-left:before{content:'\\e047'}.typcn-chevron-right-outline:before{content:'\\e048'}.typcn-chevron-right:before{content:'\\e049'}.typcn-clipboard:before{content:'\\e04a'}.typcn-cloud-storage:before{content:'\\e04b'}.typcn-cloud-storage-outline:before{content:'\\e054'}.typcn-code-outline:before{content:'\\e04c'}.typcn-code:before{content:'\\e04d'}.typcn-coffee:before{content:'\\e04e'}.typcn-cog-outline:before{content:'\\e04f'}.typcn-cog:before{content:'\\e050'}.typcn-compass:before{content:'\\e051'}.typcn-contacts:before{content:'\\e052'}.typcn-credit-card:before{content:'\\e053'}.typcn-css3:before{content:'\\e055'}.typcn-database:before{content:'\\e056'}.typcn-delete-outline:before{content:'\\e057'}.typcn-delete:before{content:'\\e058'}.typcn-device-desktop:before{content:'\\e059'}.typcn-device-laptop:before{content:'\\e05a'}.typcn-device-phone:before{content:'\\e05b'}.typcn-device-tablet:before{content:'\\e05c'}.typcn-directions:before{content:'\\e05d'}.typcn-divide-outline:before{content:'\\e05e'}.typcn-divide:before{content:'\\e05f'}.typcn-document-add:before{content:'\\e060'}.typcn-document-delete:before{content:'\\e061'}.typcn-document-text:before{content:'\\e062'}.typcn-document:before{content:'\\e063'}.typcn-download-outline:before{content:'\\e064'}.typcn-download:before{content:'\\e065'}.typcn-dropbox:before{content:'\\e066'}.typcn-edit:before{content:'\\e067'}.typcn-eject-outline:before{content:'\\e068'}.typcn-eject:before{content:'\\e069'}.typcn-equals-outline:before{content:'\\e06a'}.typcn-equals:before{content:'\\e06b'}.typcn-export-outline:before{content:'\\e06c'}.typcn-export:before{content:'\\e06d'}.typcn-eye-outline:before{content:'\\e06e'}.typcn-eye:before{content:'\\e06f'}.typcn-feather:before{content:'\\e070'}.typcn-film:before{content:'\\e071'}.typcn-filter:before{content:'\\e072'}.typcn-flag-outline:before{content:'\\e073'}.typcn-flag:before{content:'\\e074'}.typcn-flash-outline:before{content:'\\e075'}.typcn-flash:before{content:'\\e076'}.typcn-flow-children:before{content:'\\e077'}.typcn-flow-merge:before{content:'\\e078'}.typcn-flow-parallel:before{content:'\\e079'}.typcn-flow-switch:before{content:'\\e07a'}.typcn-folder-add:before{content:'\\e07b'}.typcn-folder-delete:before{content:'\\e07c'}.typcn-folder-open:before{content:'\\e07d'}.typcn-folder:before{content:'\\e07e'}.typcn-gift:before{content:'\\e07f'}.typcn-globe-outline:before{content:'\\e080'}.typcn-globe:before{content:'\\e081'}.typcn-group-outline:before{content:'\\e082'}.typcn-group:before{content:'\\e083'}.typcn-headphones:before{content:'\\e084'}.typcn-heart-full-outline:before{content:'\\e085'}.typcn-heart-half-outline:before{content:'\\e086'}.typcn-heart-outline:before{content:'\\e087'}.typcn-heart:before{content:'\\e088'}.typcn-home-outline:before{content:'\\e089'}.typcn-home:before{content:'\\e08a'}.typcn-html5:before{content:'\\e08b'}.typcn-image-outline:before{content:'\\e08c'}.typcn-image:before{content:'\\e08d'}.typcn-infinity-outline:before{content:'\\e08e'}.typcn-infinity:before{content:'\\e08f'}.typcn-info-large-outline:before{content:'\\e090'}.typcn-info-large:before{content:'\\e091'}.typcn-info-outline:before{content:'\\e092'}.typcn-info:before{content:'\\e093'}.typcn-input-checked-outline:before{content:'\\e094'}.typcn-input-checked:before{content:'\\e095'}.typcn-key-outline:before{content:'\\e096'}.typcn-key:before{content:'\\e097'}.typcn-keyboard:before{content:'\\e098'}.typcn-leaf:before{content:'\\e099'}.typcn-lightbulb:before{content:'\\e09a'}.typcn-link-outline:before{content:'\\e09b'}.typcn-link:before{content:'\\e09c'}.typcn-location-arrow-outline:before{content:'\\e09d'}.typcn-location-arrow:before{content:'\\e09e'}.typcn-location-outline:before{content:'\\e09f'}.typcn-location:before{content:'\\e0a0'}.typcn-lock-closed-outline:before{content:'\\e0a1'}.typcn-lock-closed:before{content:'\\e0a2'}.typcn-lock-open-outline:before{content:'\\e0a3'}.typcn-lock-open:before{content:'\\e0a4'}.typcn-mail:before{content:'\\e0a5'}.typcn-map:before{content:'\\e0a6'}.typcn-media-eject-outline:before{content:'\\e0a7'}.typcn-media-eject:before{content:'\\e0a8'}.typcn-media-fast-forward-outline:before{content:'\\e0a9'}.typcn-media-fast-forward:before{content:'\\e0aa'}.typcn-media-pause-outline:before{content:'\\e0ab'}.typcn-media-pause:before{content:'\\e0ac'}.typcn-media-play-outline:before{content:'\\e0ad'}.typcn-media-play-reverse-outline:before{content:'\\e0ae'}.typcn-media-play-reverse:before{content:'\\e0af'}.typcn-media-play:before{content:'\\e0b0'}.typcn-media-record-outline:before{content:'\\e0b1'}.typcn-media-record:before{content:'\\e0b2'}.typcn-media-rewind-outline:before{content:'\\e0b3'}.typcn-media-rewind:before{content:'\\e0b4'}.typcn-media-stop-outline:before{content:'\\e0b5'}.typcn-media-stop:before{content:'\\e0b6'}.typcn-message-typing:before{content:'\\e0b7'}.typcn-message:before{content:'\\e0b8'}.typcn-messages:before{content:'\\e0b9'}.typcn-microphone-outline:before{content:'\\e0ba'}.typcn-microphone:before{content:'\\e0bb'}.typcn-minus-outline:before{content:'\\e0bc'}.typcn-minus:before{content:'\\e0bd'}.typcn-mortar-board:before{content:'\\e0be'}.typcn-news:before{content:'\\e0bf'}.typcn-notes-outline:before{content:'\\e0c0'}.typcn-notes:before{content:'\\e0c1'}.typcn-pen:before{content:'\\e0c2'}.typcn-pencil:before{content:'\\e0c3'}.typcn-phone-outline:before{content:'\\e0c4'}.typcn-phone:before{content:'\\e0c5'}.typcn-pi-outline:before{content:'\\e0c6'}.typcn-pi:before{content:'\\e0c7'}.typcn-pin-outline:before{content:'\\e0c8'}.typcn-pin:before{content:'\\e0c9'}.typcn-pipette:before{content:'\\e0ca'}.typcn-plane-outline:before{content:'\\e0cb'}.typcn-plane:before{content:'\\e0cc'}.typcn-plug:before{content:'\\e0cd'}.typcn-plus-outline:before{content:'\\e0ce'}.typcn-plus:before{content:'\\e0cf'}.typcn-point-of-interest-outline:before{content:'\\e0d0'}.typcn-point-of-interest:before{content:'\\e0d1'}.typcn-power-outline:before{content:'\\e0d2'}.typcn-power:before{content:'\\e0d3'}.typcn-printer:before{content:'\\e0d4'}.typcn-puzzle-outline:before{content:'\\e0d5'}.typcn-puzzle:before{content:'\\e0d6'}.typcn-radar-outline:before{content:'\\e0d7'}.typcn-radar:before{content:'\\e0d8'}.typcn-refresh-outline:before{content:'\\e0d9'}.typcn-refresh:before{content:'\\e0da'}.typcn-rss-outline:before{content:'\\e0db'}.typcn-rss:before{content:'\\e0dc'}.typcn-scissors-outline:before{content:'\\e0dd'}.typcn-scissors:before{content:'\\e0de'}.typcn-shopping-bag:before{content:'\\e0df'}.typcn-shopping-cart:before{content:'\\e0e0'}.typcn-social-at-circular:before{content:'\\e0e1'}.typcn-social-dribbble-circular:before{content:'\\e0e2'}.typcn-social-dribbble:before{content:'\\e0e3'}.typcn-social-facebook-circular:before{content:'\\e0e4'}.typcn-social-facebook:before{content:'\\e0e5'}.typcn-social-flickr-circular:before{content:'\\e0e6'}.typcn-social-flickr:before{content:'\\e0e7'}.typcn-social-github-circular:before{content:'\\e0e8'}.typcn-social-github:before{content:'\\e0e9'}.typcn-social-google-plus-circular:before{content:'\\e0ea'}.typcn-social-google-plus:before{content:'\\e0eb'}.typcn-social-instagram-circular:before{content:'\\e0ec'}.typcn-social-instagram:before{content:'\\e0ed'}.typcn-social-last-fm-circular:before{content:'\\e0ee'}.typcn-social-last-fm:before{content:'\\e0ef'}.typcn-social-linkedin-circular:before{content:'\\e0f0'}.typcn-social-linkedin:before{content:'\\e0f1'}.typcn-social-pinterest-circular:before{content:'\\e0f2'}.typcn-social-pinterest:before{content:'\\e0f3'}.typcn-social-skype-outline:before{content:'\\e0f4'}.typcn-social-skype:before{content:'\\e0f5'}.typcn-social-tumbler-circular:before{content:'\\e0f6'}.typcn-social-tumbler:before{content:'\\e0f7'}.typcn-social-twitter-circular:before{content:'\\e0f8'}.typcn-social-twitter:before{content:'\\e0f9'}.typcn-social-vimeo-circular:before{content:'\\e0fa'}.typcn-social-vimeo:before{content:'\\e0fb'}.typcn-social-youtube-circular:before{content:'\\e0fc'}.typcn-social-youtube:before{content:'\\e0fd'}.typcn-sort-alphabetically-outline:before{content:'\\e0fe'}.typcn-sort-alphabetically:before{content:'\\e0ff'}.typcn-sort-numerically-outline:before{content:'\\e100'}.typcn-sort-numerically:before{content:'\\e101'}.typcn-spanner-outline:before{content:'\\e102'}.typcn-spanner:before{content:'\\e103'}.typcn-spiral:before{content:'\\e104'}.typcn-star-full-outline:before{content:'\\e105'}.typcn-star-half-outline:before{content:'\\e106'}.typcn-star-half:before{content:'\\e107'}.typcn-star-outline:before{content:'\\e108'}.typcn-star:before{content:'\\e109'}.typcn-starburst-outline:before{content:'\\e10a'}.typcn-starburst:before{content:'\\e10b'}.typcn-stopwatch:before{content:'\\e10c'}.typcn-support:before{content:'\\e10d'}.typcn-tabs-outline:before{content:'\\e10e'}.typcn-tag:before{content:'\\e10f'}.typcn-tags:before{content:'\\e110'}.typcn-th-large-outline:before{content:'\\e111'}.typcn-th-large:before{content:'\\e112'}.typcn-th-list-outline:before{content:'\\e113'}.typcn-th-list:before{content:'\\e114'}.typcn-th-menu-outline:before{content:'\\e115'}.typcn-th-menu:before{content:'\\e116'}.typcn-th-small-outline:before{content:'\\e117'}.typcn-th-small:before{content:'\\e118'}.typcn-thermometer:before{content:'\\e119'}.typcn-thumbs-down:before{content:'\\e11a'}.typcn-thumbs-ok:before{content:'\\e11b'}.typcn-thumbs-up:before{content:'\\e11c'}.typcn-tick-outline:before{content:'\\e11d'}.typcn-tick:before{content:'\\e11e'}.typcn-ticket:before{content:'\\e11f'}.typcn-time:before{content:'\\e120'}.typcn-times-outline:before{content:'\\e121'}.typcn-times:before{content:'\\e122'}.typcn-trash:before{content:'\\e123'}.typcn-tree:before{content:'\\e124'}.typcn-upload-outline:before{content:'\\e125'}.typcn-upload:before{content:'\\e126'}.typcn-user-add-outline:before{content:'\\e127'}.typcn-user-add:before{content:'\\e128'}.typcn-user-delete-outline:before{content:'\\e129'}.typcn-user-delete:before{content:'\\e12a'}.typcn-user-outline:before{content:'\\e12b'}.typcn-user:before{content:'\\e12c'}.typcn-vendor-android:before{content:'\\e12d'}.typcn-vendor-apple:before{content:'\\e12e'}.typcn-vendor-microsoft:before{content:'\\e12f'}.typcn-video-outline:before{content:'\\e130'}.typcn-video:before{content:'\\e131'}.typcn-volume-down:before{content:'\\e132'}.typcn-volume-mute:before{content:'\\e133'}.typcn-volume-up:before{content:'\\e134'}.typcn-volume:before{content:'\\e135'}.typcn-warning-outline:before{content:'\\e136'}.typcn-warning:before{content:'\\e137'}.typcn-watch:before{content:'\\e138'}.typcn-waves-outline:before{content:'\\e139'}.typcn-waves:before{content:'\\e13a'}.typcn-weather-cloudy:before{content:'\\e13b'}.typcn-weather-downpour:before{content:'\\e13c'}.typcn-weather-night:before{content:'\\e13d'}.typcn-weather-partly-sunny:before{content:'\\e13e'}.typcn-weather-shower:before{content:'\\e13f'}.typcn-weather-snow:before{content:'\\e140'}.typcn-weather-stormy:before{content:'\\e141'}.typcn-weather-sunny:before{content:'\\e142'}.typcn-weather-windy-cloudy:before{content:'\\e143'}.typcn-weather-windy:before{content:'\\e144'}.typcn-wi-fi-outline:before{content:'\\e145'}.typcn-wi-fi:before{content:'\\e146'}.typcn-wine:before{content:'\\e147'}.typcn-world-outline:before{content:'\\e148'}.typcn-world:before{content:'\\e149'}.typcn-zoom-in-outline:before{content:'\\e14a'}.typcn-zoom-in:before{content:'\\e14b'}.typcn-zoom-out-outline:before{content:'\\e14c'}.typcn-zoom-out:before{content:'\\e14d'}.typcn-zoom-outline:before{content:'\\e14e'}.typcn-zoom:before{content:'\\e14f'}","/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n font-family: 'FontAwesome';\n src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');\n src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n.fa {\n display: inline-block;\n font: normal normal normal 14px/1 FontAwesome;\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n font-size: 1.33333333em;\n line-height: 0.75em;\n vertical-align: -15%;\n}\n.fa-2x {\n font-size: 2em;\n}\n.fa-3x {\n font-size: 3em;\n}\n.fa-4x {\n font-size: 4em;\n}\n.fa-5x {\n font-size: 5em;\n}\n.fa-fw {\n width: 1.28571429em;\n text-align: center;\n}\n.fa-ul {\n padding-left: 0;\n margin-left: 2.14285714em;\n list-style-type: none;\n}\n.fa-ul > li {\n position: relative;\n}\n.fa-li {\n position: absolute;\n left: -2.14285714em;\n width: 2.14285714em;\n top: 0.14285714em;\n text-align: center;\n}\n.fa-li.fa-lg {\n left: -1.85714286em;\n}\n.fa-border {\n padding: .2em .25em .15em;\n border: solid 0.08em #eee;\n border-radius: .1em;\n}\n.fa-pull-left {\n float: left;\n}\n.fa-pull-right {\n float: right;\n}\n.fa.fa-pull-left {\n margin-right: .3em;\n}\n.fa.fa-pull-right {\n margin-left: .3em;\n}\n/* Deprecated as of 4.4.0 */\n.pull-right {\n float: right;\n}\n.pull-left {\n float: left;\n}\n.fa.pull-left {\n margin-right: .3em;\n}\n.fa.pull-right {\n margin-left: .3em;\n}\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n -ms-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n -ms-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n filter: none;\n}\n.fa-stack {\n position: relative;\n display: inline-block;\n width: 2em;\n height: 2em;\n line-height: 2em;\n vertical-align: middle;\n}\n.fa-stack-1x,\n.fa-stack-2x {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center;\n}\n.fa-stack-1x {\n line-height: inherit;\n}\n.fa-stack-2x {\n font-size: 2em;\n}\n.fa-inverse {\n color: #fff;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n readers do not read off random characters that represent icons */\n.fa-glass:before {\n content: \"\\f000\";\n}\n.fa-music:before {\n content: \"\\f001\";\n}\n.fa-search:before {\n content: \"\\f002\";\n}\n.fa-envelope-o:before {\n content: \"\\f003\";\n}\n.fa-heart:before {\n content: \"\\f004\";\n}\n.fa-star:before {\n content: \"\\f005\";\n}\n.fa-star-o:before {\n content: \"\\f006\";\n}\n.fa-user:before {\n content: \"\\f007\";\n}\n.fa-film:before {\n content: \"\\f008\";\n}\n.fa-th-large:before {\n content: \"\\f009\";\n}\n.fa-th:before {\n content: \"\\f00a\";\n}\n.fa-th-list:before {\n content: \"\\f00b\";\n}\n.fa-check:before {\n content: \"\\f00c\";\n}\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n content: \"\\f00d\";\n}\n.fa-search-plus:before {\n content: \"\\f00e\";\n}\n.fa-search-minus:before {\n content: \"\\f010\";\n}\n.fa-power-off:before {\n content: \"\\f011\";\n}\n.fa-signal:before {\n content: \"\\f012\";\n}\n.fa-gear:before,\n.fa-cog:before {\n content: \"\\f013\";\n}\n.fa-trash-o:before {\n content: \"\\f014\";\n}\n.fa-home:before {\n content: \"\\f015\";\n}\n.fa-file-o:before {\n content: \"\\f016\";\n}\n.fa-clock-o:before {\n content: \"\\f017\";\n}\n.fa-road:before {\n content: \"\\f018\";\n}\n.fa-download:before {\n content: \"\\f019\";\n}\n.fa-arrow-circle-o-down:before {\n content: \"\\f01a\";\n}\n.fa-arrow-circle-o-up:before {\n content: \"\\f01b\";\n}\n.fa-inbox:before {\n content: \"\\f01c\";\n}\n.fa-play-circle-o:before {\n content: \"\\f01d\";\n}\n.fa-rotate-right:before,\n.fa-repeat:before {\n content: \"\\f01e\";\n}\n.fa-refresh:before {\n content: \"\\f021\";\n}\n.fa-list-alt:before {\n content: \"\\f022\";\n}\n.fa-lock:before {\n content: \"\\f023\";\n}\n.fa-flag:before {\n content: \"\\f024\";\n}\n.fa-headphones:before {\n content: \"\\f025\";\n}\n.fa-volume-off:before {\n content: \"\\f026\";\n}\n.fa-volume-down:before {\n content: \"\\f027\";\n}\n.fa-volume-up:before {\n content: \"\\f028\";\n}\n.fa-qrcode:before {\n content: \"\\f029\";\n}\n.fa-barcode:before {\n content: \"\\f02a\";\n}\n.fa-tag:before {\n content: \"\\f02b\";\n}\n.fa-tags:before {\n content: \"\\f02c\";\n}\n.fa-book:before {\n content: \"\\f02d\";\n}\n.fa-bookmark:before {\n content: \"\\f02e\";\n}\n.fa-print:before {\n content: \"\\f02f\";\n}\n.fa-camera:before {\n content: \"\\f030\";\n}\n.fa-font:before {\n content: \"\\f031\";\n}\n.fa-bold:before {\n content: \"\\f032\";\n}\n.fa-italic:before {\n content: \"\\f033\";\n}\n.fa-text-height:before {\n content: \"\\f034\";\n}\n.fa-text-width:before {\n content: \"\\f035\";\n}\n.fa-align-left:before {\n content: \"\\f036\";\n}\n.fa-align-center:before {\n content: \"\\f037\";\n}\n.fa-align-right:before {\n content: \"\\f038\";\n}\n.fa-align-justify:before {\n content: \"\\f039\";\n}\n.fa-list:before {\n content: \"\\f03a\";\n}\n.fa-dedent:before,\n.fa-outdent:before {\n content: \"\\f03b\";\n}\n.fa-indent:before {\n content: \"\\f03c\";\n}\n.fa-video-camera:before {\n content: \"\\f03d\";\n}\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n content: \"\\f03e\";\n}\n.fa-pencil:before {\n content: \"\\f040\";\n}\n.fa-map-marker:before {\n content: \"\\f041\";\n}\n.fa-adjust:before {\n content: \"\\f042\";\n}\n.fa-tint:before {\n content: \"\\f043\";\n}\n.fa-edit:before,\n.fa-pencil-square-o:before {\n content: \"\\f044\";\n}\n.fa-share-square-o:before {\n content: \"\\f045\";\n}\n.fa-check-square-o:before {\n content: \"\\f046\";\n}\n.fa-arrows:before {\n content: \"\\f047\";\n}\n.fa-step-backward:before {\n content: \"\\f048\";\n}\n.fa-fast-backward:before {\n content: \"\\f049\";\n}\n.fa-backward:before {\n content: \"\\f04a\";\n}\n.fa-play:before {\n content: \"\\f04b\";\n}\n.fa-pause:before {\n content: \"\\f04c\";\n}\n.fa-stop:before {\n content: \"\\f04d\";\n}\n.fa-forward:before {\n content: \"\\f04e\";\n}\n.fa-fast-forward:before {\n content: \"\\f050\";\n}\n.fa-step-forward:before {\n content: \"\\f051\";\n}\n.fa-eject:before {\n content: \"\\f052\";\n}\n.fa-chevron-left:before {\n content: \"\\f053\";\n}\n.fa-chevron-right:before {\n content: \"\\f054\";\n}\n.fa-plus-circle:before {\n content: \"\\f055\";\n}\n.fa-minus-circle:before {\n content: \"\\f056\";\n}\n.fa-times-circle:before {\n content: \"\\f057\";\n}\n.fa-check-circle:before {\n content: \"\\f058\";\n}\n.fa-question-circle:before {\n content: \"\\f059\";\n}\n.fa-info-circle:before {\n content: \"\\f05a\";\n}\n.fa-crosshairs:before {\n content: \"\\f05b\";\n}\n.fa-times-circle-o:before {\n content: \"\\f05c\";\n}\n.fa-check-circle-o:before {\n content: \"\\f05d\";\n}\n.fa-ban:before {\n content: \"\\f05e\";\n}\n.fa-arrow-left:before {\n content: \"\\f060\";\n}\n.fa-arrow-right:before {\n content: \"\\f061\";\n}\n.fa-arrow-up:before {\n content: \"\\f062\";\n}\n.fa-arrow-down:before {\n content: \"\\f063\";\n}\n.fa-mail-forward:before,\n.fa-share:before {\n content: \"\\f064\";\n}\n.fa-expand:before {\n content: \"\\f065\";\n}\n.fa-compress:before {\n content: \"\\f066\";\n}\n.fa-plus:before {\n content: \"\\f067\";\n}\n.fa-minus:before {\n content: \"\\f068\";\n}\n.fa-asterisk:before {\n content: \"\\f069\";\n}\n.fa-exclamation-circle:before {\n content: \"\\f06a\";\n}\n.fa-gift:before {\n content: \"\\f06b\";\n}\n.fa-leaf:before {\n content: \"\\f06c\";\n}\n.fa-fire:before {\n content: \"\\f06d\";\n}\n.fa-eye:before {\n content: \"\\f06e\";\n}\n.fa-eye-slash:before {\n content: \"\\f070\";\n}\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n content: \"\\f071\";\n}\n.fa-plane:before {\n content: \"\\f072\";\n}\n.fa-calendar:before {\n content: \"\\f073\";\n}\n.fa-random:before {\n content: \"\\f074\";\n}\n.fa-comment:before {\n content: \"\\f075\";\n}\n.fa-magnet:before {\n content: \"\\f076\";\n}\n.fa-chevron-up:before {\n content: \"\\f077\";\n}\n.fa-chevron-down:before {\n content: \"\\f078\";\n}\n.fa-retweet:before {\n content: \"\\f079\";\n}\n.fa-shopping-cart:before {\n content: \"\\f07a\";\n}\n.fa-folder:before {\n content: \"\\f07b\";\n}\n.fa-folder-open:before {\n content: \"\\f07c\";\n}\n.fa-arrows-v:before {\n content: \"\\f07d\";\n}\n.fa-arrows-h:before {\n content: \"\\f07e\";\n}\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n content: \"\\f080\";\n}\n.fa-twitter-square:before {\n content: \"\\f081\";\n}\n.fa-facebook-square:before {\n content: \"\\f082\";\n}\n.fa-camera-retro:before {\n content: \"\\f083\";\n}\n.fa-key:before {\n content: \"\\f084\";\n}\n.fa-gears:before,\n.fa-cogs:before {\n content: \"\\f085\";\n}\n.fa-comments:before {\n content: \"\\f086\";\n}\n.fa-thumbs-o-up:before {\n content: \"\\f087\";\n}\n.fa-thumbs-o-down:before {\n content: \"\\f088\";\n}\n.fa-star-half:before {\n content: \"\\f089\";\n}\n.fa-heart-o:before {\n content: \"\\f08a\";\n}\n.fa-sign-out:before {\n content: \"\\f08b\";\n}\n.fa-linkedin-square:before {\n content: \"\\f08c\";\n}\n.fa-thumb-tack:before {\n content: \"\\f08d\";\n}\n.fa-external-link:before {\n content: \"\\f08e\";\n}\n.fa-sign-in:before {\n content: \"\\f090\";\n}\n.fa-trophy:before {\n content: \"\\f091\";\n}\n.fa-github-square:before {\n content: \"\\f092\";\n}\n.fa-upload:before {\n content: \"\\f093\";\n}\n.fa-lemon-o:before {\n content: \"\\f094\";\n}\n.fa-phone:before {\n content: \"\\f095\";\n}\n.fa-square-o:before {\n content: \"\\f096\";\n}\n.fa-bookmark-o:before {\n content: \"\\f097\";\n}\n.fa-phone-square:before {\n content: \"\\f098\";\n}\n.fa-twitter:before {\n content: \"\\f099\";\n}\n.fa-facebook-f:before,\n.fa-facebook:before {\n content: \"\\f09a\";\n}\n.fa-github:before {\n content: \"\\f09b\";\n}\n.fa-unlock:before {\n content: \"\\f09c\";\n}\n.fa-credit-card:before {\n content: \"\\f09d\";\n}\n.fa-feed:before,\n.fa-rss:before {\n content: \"\\f09e\";\n}\n.fa-hdd-o:before {\n content: \"\\f0a0\";\n}\n.fa-bullhorn:before {\n content: \"\\f0a1\";\n}\n.fa-bell:before {\n content: \"\\f0f3\";\n}\n.fa-certificate:before {\n content: \"\\f0a3\";\n}\n.fa-hand-o-right:before {\n content: \"\\f0a4\";\n}\n.fa-hand-o-left:before {\n content: \"\\f0a5\";\n}\n.fa-hand-o-up:before {\n content: \"\\f0a6\";\n}\n.fa-hand-o-down:before {\n content: \"\\f0a7\";\n}\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\";\n}\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\";\n}\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\";\n}\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\";\n}\n.fa-globe:before {\n content: \"\\f0ac\";\n}\n.fa-wrench:before {\n content: \"\\f0ad\";\n}\n.fa-tasks:before {\n content: \"\\f0ae\";\n}\n.fa-filter:before {\n content: \"\\f0b0\";\n}\n.fa-briefcase:before {\n content: \"\\f0b1\";\n}\n.fa-arrows-alt:before {\n content: \"\\f0b2\";\n}\n.fa-group:before,\n.fa-users:before {\n content: \"\\f0c0\";\n}\n.fa-chain:before,\n.fa-link:before {\n content: \"\\f0c1\";\n}\n.fa-cloud:before {\n content: \"\\f0c2\";\n}\n.fa-flask:before {\n content: \"\\f0c3\";\n}\n.fa-cut:before,\n.fa-scissors:before {\n content: \"\\f0c4\";\n}\n.fa-copy:before,\n.fa-files-o:before {\n content: \"\\f0c5\";\n}\n.fa-paperclip:before {\n content: \"\\f0c6\";\n}\n.fa-save:before,\n.fa-floppy-o:before {\n content: \"\\f0c7\";\n}\n.fa-square:before {\n content: \"\\f0c8\";\n}\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n content: \"\\f0c9\";\n}\n.fa-list-ul:before {\n content: \"\\f0ca\";\n}\n.fa-list-ol:before {\n content: \"\\f0cb\";\n}\n.fa-strikethrough:before {\n content: \"\\f0cc\";\n}\n.fa-underline:before {\n content: \"\\f0cd\";\n}\n.fa-table:before {\n content: \"\\f0ce\";\n}\n.fa-magic:before {\n content: \"\\f0d0\";\n}\n.fa-truck:before {\n content: \"\\f0d1\";\n}\n.fa-pinterest:before {\n content: \"\\f0d2\";\n}\n.fa-pinterest-square:before {\n content: \"\\f0d3\";\n}\n.fa-google-plus-square:before {\n content: \"\\f0d4\";\n}\n.fa-google-plus:before {\n content: \"\\f0d5\";\n}\n.fa-money:before {\n content: \"\\f0d6\";\n}\n.fa-caret-down:before {\n content: \"\\f0d7\";\n}\n.fa-caret-up:before {\n content: \"\\f0d8\";\n}\n.fa-caret-left:before {\n content: \"\\f0d9\";\n}\n.fa-caret-right:before {\n content: \"\\f0da\";\n}\n.fa-columns:before {\n content: \"\\f0db\";\n}\n.fa-unsorted:before,\n.fa-sort:before {\n content: \"\\f0dc\";\n}\n.fa-sort-down:before,\n.fa-sort-desc:before {\n content: \"\\f0dd\";\n}\n.fa-sort-up:before,\n.fa-sort-asc:before {\n content: \"\\f0de\";\n}\n.fa-envelope:before {\n content: \"\\f0e0\";\n}\n.fa-linkedin:before {\n content: \"\\f0e1\";\n}\n.fa-rotate-left:before,\n.fa-undo:before {\n content: \"\\f0e2\";\n}\n.fa-legal:before,\n.fa-gavel:before {\n content: \"\\f0e3\";\n}\n.fa-dashboard:before,\n.fa-tachometer:before {\n content: \"\\f0e4\";\n}\n.fa-comment-o:before {\n content: \"\\f0e5\";\n}\n.fa-comments-o:before {\n content: \"\\f0e6\";\n}\n.fa-flash:before,\n.fa-bolt:before {\n content: \"\\f0e7\";\n}\n.fa-sitemap:before {\n content: \"\\f0e8\";\n}\n.fa-umbrella:before {\n content: \"\\f0e9\";\n}\n.fa-paste:before,\n.fa-clipboard:before {\n content: \"\\f0ea\";\n}\n.fa-lightbulb-o:before {\n content: \"\\f0eb\";\n}\n.fa-exchange:before {\n content: \"\\f0ec\";\n}\n.fa-cloud-download:before {\n content: \"\\f0ed\";\n}\n.fa-cloud-upload:before {\n content: \"\\f0ee\";\n}\n.fa-user-md:before {\n content: \"\\f0f0\";\n}\n.fa-stethoscope:before {\n content: \"\\f0f1\";\n}\n.fa-suitcase:before {\n content: \"\\f0f2\";\n}\n.fa-bell-o:before {\n content: \"\\f0a2\";\n}\n.fa-coffee:before {\n content: \"\\f0f4\";\n}\n.fa-cutlery:before {\n content: \"\\f0f5\";\n}\n.fa-file-text-o:before {\n content: \"\\f0f6\";\n}\n.fa-building-o:before {\n content: \"\\f0f7\";\n}\n.fa-hospital-o:before {\n content: \"\\f0f8\";\n}\n.fa-ambulance:before {\n content: \"\\f0f9\";\n}\n.fa-medkit:before {\n content: \"\\f0fa\";\n}\n.fa-fighter-jet:before {\n content: \"\\f0fb\";\n}\n.fa-beer:before {\n content: \"\\f0fc\";\n}\n.fa-h-square:before {\n content: \"\\f0fd\";\n}\n.fa-plus-square:before {\n content: \"\\f0fe\";\n}\n.fa-angle-double-left:before {\n content: \"\\f100\";\n}\n.fa-angle-double-right:before {\n content: \"\\f101\";\n}\n.fa-angle-double-up:before {\n content: \"\\f102\";\n}\n.fa-angle-double-down:before {\n content: \"\\f103\";\n}\n.fa-angle-left:before {\n content: \"\\f104\";\n}\n.fa-angle-right:before {\n content: \"\\f105\";\n}\n.fa-angle-up:before {\n content: \"\\f106\";\n}\n.fa-angle-down:before {\n content: \"\\f107\";\n}\n.fa-desktop:before {\n content: \"\\f108\";\n}\n.fa-laptop:before {\n content: \"\\f109\";\n}\n.fa-tablet:before {\n content: \"\\f10a\";\n}\n.fa-mobile-phone:before,\n.fa-mobile:before {\n content: \"\\f10b\";\n}\n.fa-circle-o:before {\n content: \"\\f10c\";\n}\n.fa-quote-left:before {\n content: \"\\f10d\";\n}\n.fa-quote-right:before {\n content: \"\\f10e\";\n}\n.fa-spinner:before {\n content: \"\\f110\";\n}\n.fa-circle:before {\n content: \"\\f111\";\n}\n.fa-mail-reply:before,\n.fa-reply:before {\n content: \"\\f112\";\n}\n.fa-github-alt:before {\n content: \"\\f113\";\n}\n.fa-folder-o:before {\n content: \"\\f114\";\n}\n.fa-folder-open-o:before {\n content: \"\\f115\";\n}\n.fa-smile-o:before {\n content: \"\\f118\";\n}\n.fa-frown-o:before {\n content: \"\\f119\";\n}\n.fa-meh-o:before {\n content: \"\\f11a\";\n}\n.fa-gamepad:before {\n content: \"\\f11b\";\n}\n.fa-keyboard-o:before {\n content: \"\\f11c\";\n}\n.fa-flag-o:before {\n content: \"\\f11d\";\n}\n.fa-flag-checkered:before {\n content: \"\\f11e\";\n}\n.fa-terminal:before {\n content: \"\\f120\";\n}\n.fa-code:before {\n content: \"\\f121\";\n}\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n content: \"\\f122\";\n}\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n content: \"\\f123\";\n}\n.fa-location-arrow:before {\n content: \"\\f124\";\n}\n.fa-crop:before {\n content: \"\\f125\";\n}\n.fa-code-fork:before {\n content: \"\\f126\";\n}\n.fa-unlink:before,\n.fa-chain-broken:before {\n content: \"\\f127\";\n}\n.fa-question:before {\n content: \"\\f128\";\n}\n.fa-info:before {\n content: \"\\f129\";\n}\n.fa-exclamation:before {\n content: \"\\f12a\";\n}\n.fa-superscript:before {\n content: \"\\f12b\";\n}\n.fa-subscript:before {\n content: \"\\f12c\";\n}\n.fa-eraser:before {\n content: \"\\f12d\";\n}\n.fa-puzzle-piece:before {\n content: \"\\f12e\";\n}\n.fa-microphone:before {\n content: \"\\f130\";\n}\n.fa-microphone-slash:before {\n content: \"\\f131\";\n}\n.fa-shield:before {\n content: \"\\f132\";\n}\n.fa-calendar-o:before {\n content: \"\\f133\";\n}\n.fa-fire-extinguisher:before {\n content: \"\\f134\";\n}\n.fa-rocket:before {\n content: \"\\f135\";\n}\n.fa-maxcdn:before {\n content: \"\\f136\";\n}\n.fa-chevron-circle-left:before {\n content: \"\\f137\";\n}\n.fa-chevron-circle-right:before {\n content: \"\\f138\";\n}\n.fa-chevron-circle-up:before {\n content: \"\\f139\";\n}\n.fa-chevron-circle-down:before {\n content: \"\\f13a\";\n}\n.fa-html5:before {\n content: \"\\f13b\";\n}\n.fa-css3:before {\n content: \"\\f13c\";\n}\n.fa-anchor:before {\n content: \"\\f13d\";\n}\n.fa-unlock-alt:before {\n content: \"\\f13e\";\n}\n.fa-bullseye:before {\n content: \"\\f140\";\n}\n.fa-ellipsis-h:before {\n content: \"\\f141\";\n}\n.fa-ellipsis-v:before {\n content: \"\\f142\";\n}\n.fa-rss-square:before {\n content: \"\\f143\";\n}\n.fa-play-circle:before {\n content: \"\\f144\";\n}\n.fa-ticket:before {\n content: \"\\f145\";\n}\n.fa-minus-square:before {\n content: \"\\f146\";\n}\n.fa-minus-square-o:before {\n content: \"\\f147\";\n}\n.fa-level-up:before {\n content: \"\\f148\";\n}\n.fa-level-down:before {\n content: \"\\f149\";\n}\n.fa-check-square:before {\n content: \"\\f14a\";\n}\n.fa-pencil-square:before {\n content: \"\\f14b\";\n}\n.fa-external-link-square:before {\n content: \"\\f14c\";\n}\n.fa-share-square:before {\n content: \"\\f14d\";\n}\n.fa-compass:before {\n content: \"\\f14e\";\n}\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n content: \"\\f150\";\n}\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n content: \"\\f151\";\n}\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n content: \"\\f152\";\n}\n.fa-euro:before,\n.fa-eur:before {\n content: \"\\f153\";\n}\n.fa-gbp:before {\n content: \"\\f154\";\n}\n.fa-dollar:before,\n.fa-usd:before {\n content: \"\\f155\";\n}\n.fa-rupee:before,\n.fa-inr:before {\n content: \"\\f156\";\n}\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n content: \"\\f157\";\n}\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n content: \"\\f158\";\n}\n.fa-won:before,\n.fa-krw:before {\n content: \"\\f159\";\n}\n.fa-bitcoin:before,\n.fa-btc:before {\n content: \"\\f15a\";\n}\n.fa-file:before {\n content: \"\\f15b\";\n}\n.fa-file-text:before {\n content: \"\\f15c\";\n}\n.fa-sort-alpha-asc:before {\n content: \"\\f15d\";\n}\n.fa-sort-alpha-desc:before {\n content: \"\\f15e\";\n}\n.fa-sort-amount-asc:before {\n content: \"\\f160\";\n}\n.fa-sort-amount-desc:before {\n content: \"\\f161\";\n}\n.fa-sort-numeric-asc:before {\n content: \"\\f162\";\n}\n.fa-sort-numeric-desc:before {\n content: \"\\f163\";\n}\n.fa-thumbs-up:before {\n content: \"\\f164\";\n}\n.fa-thumbs-down:before {\n content: \"\\f165\";\n}\n.fa-youtube-square:before {\n content: \"\\f166\";\n}\n.fa-youtube:before {\n content: \"\\f167\";\n}\n.fa-xing:before {\n content: \"\\f168\";\n}\n.fa-xing-square:before {\n content: \"\\f169\";\n}\n.fa-youtube-play:before {\n content: \"\\f16a\";\n}\n.fa-dropbox:before {\n content: \"\\f16b\";\n}\n.fa-stack-overflow:before {\n content: \"\\f16c\";\n}\n.fa-instagram:before {\n content: \"\\f16d\";\n}\n.fa-flickr:before {\n content: \"\\f16e\";\n}\n.fa-adn:before {\n content: \"\\f170\";\n}\n.fa-bitbucket:before {\n content: \"\\f171\";\n}\n.fa-bitbucket-square:before {\n content: \"\\f172\";\n}\n.fa-tumblr:before {\n content: \"\\f173\";\n}\n.fa-tumblr-square:before {\n content: \"\\f174\";\n}\n.fa-long-arrow-down:before {\n content: \"\\f175\";\n}\n.fa-long-arrow-up:before {\n content: \"\\f176\";\n}\n.fa-long-arrow-left:before {\n content: \"\\f177\";\n}\n.fa-long-arrow-right:before {\n content: \"\\f178\";\n}\n.fa-apple:before {\n content: \"\\f179\";\n}\n.fa-windows:before {\n content: \"\\f17a\";\n}\n.fa-android:before {\n content: \"\\f17b\";\n}\n.fa-linux:before {\n content: \"\\f17c\";\n}\n.fa-dribbble:before {\n content: \"\\f17d\";\n}\n.fa-skype:before {\n content: \"\\f17e\";\n}\n.fa-foursquare:before {\n content: \"\\f180\";\n}\n.fa-trello:before {\n content: \"\\f181\";\n}\n.fa-female:before {\n content: \"\\f182\";\n}\n.fa-male:before {\n content: \"\\f183\";\n}\n.fa-gittip:before,\n.fa-gratipay:before {\n content: \"\\f184\";\n}\n.fa-sun-o:before {\n content: \"\\f185\";\n}\n.fa-moon-o:before {\n content: \"\\f186\";\n}\n.fa-archive:before {\n content: \"\\f187\";\n}\n.fa-bug:before {\n content: \"\\f188\";\n}\n.fa-vk:before {\n content: \"\\f189\";\n}\n.fa-weibo:before {\n content: \"\\f18a\";\n}\n.fa-renren:before {\n content: \"\\f18b\";\n}\n.fa-pagelines:before {\n content: \"\\f18c\";\n}\n.fa-stack-exchange:before {\n content: \"\\f18d\";\n}\n.fa-arrow-circle-o-right:before {\n content: \"\\f18e\";\n}\n.fa-arrow-circle-o-left:before {\n content: \"\\f190\";\n}\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n content: \"\\f191\";\n}\n.fa-dot-circle-o:before {\n content: \"\\f192\";\n}\n.fa-wheelchair:before {\n content: \"\\f193\";\n}\n.fa-vimeo-square:before {\n content: \"\\f194\";\n}\n.fa-turkish-lira:before,\n.fa-try:before {\n content: \"\\f195\";\n}\n.fa-plus-square-o:before {\n content: \"\\f196\";\n}\n.fa-space-shuttle:before {\n content: \"\\f197\";\n}\n.fa-slack:before {\n content: \"\\f198\";\n}\n.fa-envelope-square:before {\n content: \"\\f199\";\n}\n.fa-wordpress:before {\n content: \"\\f19a\";\n}\n.fa-openid:before {\n content: \"\\f19b\";\n}\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n content: \"\\f19c\";\n}\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n content: \"\\f19d\";\n}\n.fa-yahoo:before {\n content: \"\\f19e\";\n}\n.fa-google:before {\n content: \"\\f1a0\";\n}\n.fa-reddit:before {\n content: \"\\f1a1\";\n}\n.fa-reddit-square:before {\n content: \"\\f1a2\";\n}\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\";\n}\n.fa-stumbleupon:before {\n content: \"\\f1a4\";\n}\n.fa-delicious:before {\n content: \"\\f1a5\";\n}\n.fa-digg:before {\n content: \"\\f1a6\";\n}\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\";\n}\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\";\n}\n.fa-drupal:before {\n content: \"\\f1a9\";\n}\n.fa-joomla:before {\n content: \"\\f1aa\";\n}\n.fa-language:before {\n content: \"\\f1ab\";\n}\n.fa-fax:before {\n content: \"\\f1ac\";\n}\n.fa-building:before {\n content: \"\\f1ad\";\n}\n.fa-child:before {\n content: \"\\f1ae\";\n}\n.fa-paw:before {\n content: \"\\f1b0\";\n}\n.fa-spoon:before {\n content: \"\\f1b1\";\n}\n.fa-cube:before {\n content: \"\\f1b2\";\n}\n.fa-cubes:before {\n content: \"\\f1b3\";\n}\n.fa-behance:before {\n content: \"\\f1b4\";\n}\n.fa-behance-square:before {\n content: \"\\f1b5\";\n}\n.fa-steam:before {\n content: \"\\f1b6\";\n}\n.fa-steam-square:before {\n content: \"\\f1b7\";\n}\n.fa-recycle:before {\n content: \"\\f1b8\";\n}\n.fa-automobile:before,\n.fa-car:before {\n content: \"\\f1b9\";\n}\n.fa-cab:before,\n.fa-taxi:before {\n content: \"\\f1ba\";\n}\n.fa-tree:before {\n content: \"\\f1bb\";\n}\n.fa-spotify:before {\n content: \"\\f1bc\";\n}\n.fa-deviantart:before {\n content: \"\\f1bd\";\n}\n.fa-soundcloud:before {\n content: \"\\f1be\";\n}\n.fa-database:before {\n content: \"\\f1c0\";\n}\n.fa-file-pdf-o:before {\n content: \"\\f1c1\";\n}\n.fa-file-word-o:before {\n content: \"\\f1c2\";\n}\n.fa-file-excel-o:before {\n content: \"\\f1c3\";\n}\n.fa-file-powerpoint-o:before {\n content: \"\\f1c4\";\n}\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n content: \"\\f1c5\";\n}\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n content: \"\\f1c6\";\n}\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n content: \"\\f1c7\";\n}\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n content: \"\\f1c8\";\n}\n.fa-file-code-o:before {\n content: \"\\f1c9\";\n}\n.fa-vine:before {\n content: \"\\f1ca\";\n}\n.fa-codepen:before {\n content: \"\\f1cb\";\n}\n.fa-jsfiddle:before {\n content: \"\\f1cc\";\n}\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n content: \"\\f1cd\";\n}\n.fa-circle-o-notch:before {\n content: \"\\f1ce\";\n}\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n content: \"\\f1d0\";\n}\n.fa-ge:before,\n.fa-empire:before {\n content: \"\\f1d1\";\n}\n.fa-git-square:before {\n content: \"\\f1d2\";\n}\n.fa-git:before {\n content: \"\\f1d3\";\n}\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n content: \"\\f1d4\";\n}\n.fa-tencent-weibo:before {\n content: \"\\f1d5\";\n}\n.fa-qq:before {\n content: \"\\f1d6\";\n}\n.fa-wechat:before,\n.fa-weixin:before {\n content: \"\\f1d7\";\n}\n.fa-send:before,\n.fa-paper-plane:before {\n content: \"\\f1d8\";\n}\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n content: \"\\f1d9\";\n}\n.fa-history:before {\n content: \"\\f1da\";\n}\n.fa-circle-thin:before {\n content: \"\\f1db\";\n}\n.fa-header:before {\n content: \"\\f1dc\";\n}\n.fa-paragraph:before {\n content: \"\\f1dd\";\n}\n.fa-sliders:before {\n content: \"\\f1de\";\n}\n.fa-share-alt:before {\n content: \"\\f1e0\";\n}\n.fa-share-alt-square:before {\n content: \"\\f1e1\";\n}\n.fa-bomb:before {\n content: \"\\f1e2\";\n}\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n content: \"\\f1e3\";\n}\n.fa-tty:before {\n content: \"\\f1e4\";\n}\n.fa-binoculars:before {\n content: \"\\f1e5\";\n}\n.fa-plug:before {\n content: \"\\f1e6\";\n}\n.fa-slideshare:before {\n content: \"\\f1e7\";\n}\n.fa-twitch:before {\n content: \"\\f1e8\";\n}\n.fa-yelp:before {\n content: \"\\f1e9\";\n}\n.fa-newspaper-o:before {\n content: \"\\f1ea\";\n}\n.fa-wifi:before {\n content: \"\\f1eb\";\n}\n.fa-calculator:before {\n content: \"\\f1ec\";\n}\n.fa-paypal:before {\n content: \"\\f1ed\";\n}\n.fa-google-wallet:before {\n content: \"\\f1ee\";\n}\n.fa-cc-visa:before {\n content: \"\\f1f0\";\n}\n.fa-cc-mastercard:before {\n content: \"\\f1f1\";\n}\n.fa-cc-discover:before {\n content: \"\\f1f2\";\n}\n.fa-cc-amex:before {\n content: \"\\f1f3\";\n}\n.fa-cc-paypal:before {\n content: \"\\f1f4\";\n}\n.fa-cc-stripe:before {\n content: \"\\f1f5\";\n}\n.fa-bell-slash:before {\n content: \"\\f1f6\";\n}\n.fa-bell-slash-o:before {\n content: \"\\f1f7\";\n}\n.fa-trash:before {\n content: \"\\f1f8\";\n}\n.fa-copyright:before {\n content: \"\\f1f9\";\n}\n.fa-at:before {\n content: \"\\f1fa\";\n}\n.fa-eyedropper:before {\n content: \"\\f1fb\";\n}\n.fa-paint-brush:before {\n content: \"\\f1fc\";\n}\n.fa-birthday-cake:before {\n content: \"\\f1fd\";\n}\n.fa-area-chart:before {\n content: \"\\f1fe\";\n}\n.fa-pie-chart:before {\n content: \"\\f200\";\n}\n.fa-line-chart:before {\n content: \"\\f201\";\n}\n.fa-lastfm:before {\n content: \"\\f202\";\n}\n.fa-lastfm-square:before {\n content: \"\\f203\";\n}\n.fa-toggle-off:before {\n content: \"\\f204\";\n}\n.fa-toggle-on:before {\n content: \"\\f205\";\n}\n.fa-bicycle:before {\n content: \"\\f206\";\n}\n.fa-bus:before {\n content: \"\\f207\";\n}\n.fa-ioxhost:before {\n content: \"\\f208\";\n}\n.fa-angellist:before {\n content: \"\\f209\";\n}\n.fa-cc:before {\n content: \"\\f20a\";\n}\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n content: \"\\f20b\";\n}\n.fa-meanpath:before {\n content: \"\\f20c\";\n}\n.fa-buysellads:before {\n content: \"\\f20d\";\n}\n.fa-connectdevelop:before {\n content: \"\\f20e\";\n}\n.fa-dashcube:before {\n content: \"\\f210\";\n}\n.fa-forumbee:before {\n content: \"\\f211\";\n}\n.fa-leanpub:before {\n content: \"\\f212\";\n}\n.fa-sellsy:before {\n content: \"\\f213\";\n}\n.fa-shirtsinbulk:before {\n content: \"\\f214\";\n}\n.fa-simplybuilt:before {\n content: \"\\f215\";\n}\n.fa-skyatlas:before {\n content: \"\\f216\";\n}\n.fa-cart-plus:before {\n content: \"\\f217\";\n}\n.fa-cart-arrow-down:before {\n content: \"\\f218\";\n}\n.fa-diamond:before {\n content: \"\\f219\";\n}\n.fa-ship:before {\n content: \"\\f21a\";\n}\n.fa-user-secret:before {\n content: \"\\f21b\";\n}\n.fa-motorcycle:before {\n content: \"\\f21c\";\n}\n.fa-street-view:before {\n content: \"\\f21d\";\n}\n.fa-heartbeat:before {\n content: \"\\f21e\";\n}\n.fa-venus:before {\n content: \"\\f221\";\n}\n.fa-mars:before {\n content: \"\\f222\";\n}\n.fa-mercury:before {\n content: \"\\f223\";\n}\n.fa-intersex:before,\n.fa-transgender:before {\n content: \"\\f224\";\n}\n.fa-transgender-alt:before {\n content: \"\\f225\";\n}\n.fa-venus-double:before {\n content: \"\\f226\";\n}\n.fa-mars-double:before {\n content: \"\\f227\";\n}\n.fa-venus-mars:before {\n content: \"\\f228\";\n}\n.fa-mars-stroke:before {\n content: \"\\f229\";\n}\n.fa-mars-stroke-v:before {\n content: \"\\f22a\";\n}\n.fa-mars-stroke-h:before {\n content: \"\\f22b\";\n}\n.fa-neuter:before {\n content: \"\\f22c\";\n}\n.fa-genderless:before {\n content: \"\\f22d\";\n}\n.fa-facebook-official:before {\n content: \"\\f230\";\n}\n.fa-pinterest-p:before {\n content: \"\\f231\";\n}\n.fa-whatsapp:before {\n content: \"\\f232\";\n}\n.fa-server:before {\n content: \"\\f233\";\n}\n.fa-user-plus:before {\n content: \"\\f234\";\n}\n.fa-user-times:before {\n content: \"\\f235\";\n}\n.fa-hotel:before,\n.fa-bed:before {\n content: \"\\f236\";\n}\n.fa-viacoin:before {\n content: \"\\f237\";\n}\n.fa-train:before {\n content: \"\\f238\";\n}\n.fa-subway:before {\n content: \"\\f239\";\n}\n.fa-medium:before {\n content: \"\\f23a\";\n}\n.fa-yc:before,\n.fa-y-combinator:before {\n content: \"\\f23b\";\n}\n.fa-optin-monster:before {\n content: \"\\f23c\";\n}\n.fa-opencart:before {\n content: \"\\f23d\";\n}\n.fa-expeditedssl:before {\n content: \"\\f23e\";\n}\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n content: \"\\f240\";\n}\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n content: \"\\f241\";\n}\n.fa-battery-2:before,\n.fa-battery-half:before {\n content: \"\\f242\";\n}\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n content: \"\\f243\";\n}\n.fa-battery-0:before,\n.fa-battery-empty:before {\n content: \"\\f244\";\n}\n.fa-mouse-pointer:before {\n content: \"\\f245\";\n}\n.fa-i-cursor:before {\n content: \"\\f246\";\n}\n.fa-object-group:before {\n content: \"\\f247\";\n}\n.fa-object-ungroup:before {\n content: \"\\f248\";\n}\n.fa-sticky-note:before {\n content: \"\\f249\";\n}\n.fa-sticky-note-o:before {\n content: \"\\f24a\";\n}\n.fa-cc-jcb:before {\n content: \"\\f24b\";\n}\n.fa-cc-diners-club:before {\n content: \"\\f24c\";\n}\n.fa-clone:before {\n content: \"\\f24d\";\n}\n.fa-balance-scale:before {\n content: \"\\f24e\";\n}\n.fa-hourglass-o:before {\n content: \"\\f250\";\n}\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n content: \"\\f251\";\n}\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n content: \"\\f252\";\n}\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n content: \"\\f253\";\n}\n.fa-hourglass:before {\n content: \"\\f254\";\n}\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n content: \"\\f255\";\n}\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n content: \"\\f256\";\n}\n.fa-hand-scissors-o:before {\n content: \"\\f257\";\n}\n.fa-hand-lizard-o:before {\n content: \"\\f258\";\n}\n.fa-hand-spock-o:before {\n content: \"\\f259\";\n}\n.fa-hand-pointer-o:before {\n content: \"\\f25a\";\n}\n.fa-hand-peace-o:before {\n content: \"\\f25b\";\n}\n.fa-trademark:before {\n content: \"\\f25c\";\n}\n.fa-registered:before {\n content: \"\\f25d\";\n}\n.fa-creative-commons:before {\n content: \"\\f25e\";\n}\n.fa-gg:before {\n content: \"\\f260\";\n}\n.fa-gg-circle:before {\n content: \"\\f261\";\n}\n.fa-tripadvisor:before {\n content: \"\\f262\";\n}\n.fa-odnoklassniki:before {\n content: \"\\f263\";\n}\n.fa-odnoklassniki-square:before {\n content: \"\\f264\";\n}\n.fa-get-pocket:before {\n content: \"\\f265\";\n}\n.fa-wikipedia-w:before {\n content: \"\\f266\";\n}\n.fa-safari:before {\n content: \"\\f267\";\n}\n.fa-chrome:before {\n content: \"\\f268\";\n}\n.fa-firefox:before {\n content: \"\\f269\";\n}\n.fa-opera:before {\n content: \"\\f26a\";\n}\n.fa-internet-explorer:before {\n content: \"\\f26b\";\n}\n.fa-tv:before,\n.fa-television:before {\n content: \"\\f26c\";\n}\n.fa-contao:before {\n content: \"\\f26d\";\n}\n.fa-500px:before {\n content: \"\\f26e\";\n}\n.fa-amazon:before {\n content: \"\\f270\";\n}\n.fa-calendar-plus-o:before {\n content: \"\\f271\";\n}\n.fa-calendar-minus-o:before {\n content: \"\\f272\";\n}\n.fa-calendar-times-o:before {\n content: \"\\f273\";\n}\n.fa-calendar-check-o:before {\n content: \"\\f274\";\n}\n.fa-industry:before {\n content: \"\\f275\";\n}\n.fa-map-pin:before {\n content: \"\\f276\";\n}\n.fa-map-signs:before {\n content: \"\\f277\";\n}\n.fa-map-o:before {\n content: \"\\f278\";\n}\n.fa-map:before {\n content: \"\\f279\";\n}\n.fa-commenting:before {\n content: \"\\f27a\";\n}\n.fa-commenting-o:before {\n content: \"\\f27b\";\n}\n.fa-houzz:before {\n content: \"\\f27c\";\n}\n.fa-vimeo:before {\n content: \"\\f27d\";\n}\n.fa-black-tie:before {\n content: \"\\f27e\";\n}\n.fa-fonticons:before {\n content: \"\\f280\";\n}\n.fa-reddit-alien:before {\n content: \"\\f281\";\n}\n.fa-edge:before {\n content: \"\\f282\";\n}\n.fa-credit-card-alt:before {\n content: \"\\f283\";\n}\n.fa-codiepie:before {\n content: \"\\f284\";\n}\n.fa-modx:before {\n content: \"\\f285\";\n}\n.fa-fort-awesome:before {\n content: \"\\f286\";\n}\n.fa-usb:before {\n content: \"\\f287\";\n}\n.fa-product-hunt:before {\n content: \"\\f288\";\n}\n.fa-mixcloud:before {\n content: \"\\f289\";\n}\n.fa-scribd:before {\n content: \"\\f28a\";\n}\n.fa-pause-circle:before {\n content: \"\\f28b\";\n}\n.fa-pause-circle-o:before {\n content: \"\\f28c\";\n}\n.fa-stop-circle:before {\n content: \"\\f28d\";\n}\n.fa-stop-circle-o:before {\n content: \"\\f28e\";\n}\n.fa-shopping-bag:before {\n content: \"\\f290\";\n}\n.fa-shopping-basket:before {\n content: \"\\f291\";\n}\n.fa-hashtag:before {\n content: \"\\f292\";\n}\n.fa-bluetooth:before {\n content: \"\\f293\";\n}\n.fa-bluetooth-b:before {\n content: \"\\f294\";\n}\n.fa-percent:before {\n content: \"\\f295\";\n}\n.fa-gitlab:before {\n content: \"\\f296\";\n}\n.fa-wpbeginner:before {\n content: \"\\f297\";\n}\n.fa-wpforms:before {\n content: \"\\f298\";\n}\n.fa-envira:before {\n content: \"\\f299\";\n}\n.fa-universal-access:before {\n content: \"\\f29a\";\n}\n.fa-wheelchair-alt:before {\n content: \"\\f29b\";\n}\n.fa-question-circle-o:before {\n content: \"\\f29c\";\n}\n.fa-blind:before {\n content: \"\\f29d\";\n}\n.fa-audio-description:before {\n content: \"\\f29e\";\n}\n.fa-volume-control-phone:before {\n content: \"\\f2a0\";\n}\n.fa-braille:before {\n content: \"\\f2a1\";\n}\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\";\n}\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\";\n}\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n content: \"\\f2a4\";\n}\n.fa-glide:before {\n content: \"\\f2a5\";\n}\n.fa-glide-g:before {\n content: \"\\f2a6\";\n}\n.fa-signing:before,\n.fa-sign-language:before {\n content: \"\\f2a7\";\n}\n.fa-low-vision:before {\n content: \"\\f2a8\";\n}\n.fa-viadeo:before {\n content: \"\\f2a9\";\n}\n.fa-viadeo-square:before {\n content: \"\\f2aa\";\n}\n.fa-snapchat:before {\n content: \"\\f2ab\";\n}\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\";\n}\n.fa-snapchat-square:before {\n content: \"\\f2ad\";\n}\n.fa-pied-piper:before {\n content: \"\\f2ae\";\n}\n.fa-first-order:before {\n content: \"\\f2b0\";\n}\n.fa-yoast:before {\n content: \"\\f2b1\";\n}\n.fa-themeisle:before {\n content: \"\\f2b2\";\n}\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n content: \"\\f2b3\";\n}\n.fa-fa:before,\n.fa-font-awesome:before {\n content: \"\\f2b4\";\n}\n.fa-handshake-o:before {\n content: \"\\f2b5\";\n}\n.fa-envelope-open:before {\n content: \"\\f2b6\";\n}\n.fa-envelope-open-o:before {\n content: \"\\f2b7\";\n}\n.fa-linode:before {\n content: \"\\f2b8\";\n}\n.fa-address-book:before {\n content: \"\\f2b9\";\n}\n.fa-address-book-o:before {\n content: \"\\f2ba\";\n}\n.fa-vcard:before,\n.fa-address-card:before {\n content: \"\\f2bb\";\n}\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n content: \"\\f2bc\";\n}\n.fa-user-circle:before {\n content: \"\\f2bd\";\n}\n.fa-user-circle-o:before {\n content: \"\\f2be\";\n}\n.fa-user-o:before {\n content: \"\\f2c0\";\n}\n.fa-id-badge:before {\n content: \"\\f2c1\";\n}\n.fa-drivers-license:before,\n.fa-id-card:before {\n content: \"\\f2c2\";\n}\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n content: \"\\f2c3\";\n}\n.fa-quora:before {\n content: \"\\f2c4\";\n}\n.fa-free-code-camp:before {\n content: \"\\f2c5\";\n}\n.fa-telegram:before {\n content: \"\\f2c6\";\n}\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n content: \"\\f2c7\";\n}\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\";\n}\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n content: \"\\f2c9\";\n}\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\";\n}\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n content: \"\\f2cb\";\n}\n.fa-shower:before {\n content: \"\\f2cc\";\n}\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n content: \"\\f2cd\";\n}\n.fa-podcast:before {\n content: \"\\f2ce\";\n}\n.fa-window-maximize:before {\n content: \"\\f2d0\";\n}\n.fa-window-minimize:before {\n content: \"\\f2d1\";\n}\n.fa-window-restore:before {\n content: \"\\f2d2\";\n}\n.fa-times-rectangle:before,\n.fa-window-close:before {\n content: \"\\f2d3\";\n}\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n content: \"\\f2d4\";\n}\n.fa-bandcamp:before {\n content: \"\\f2d5\";\n}\n.fa-grav:before {\n content: \"\\f2d6\";\n}\n.fa-etsy:before {\n content: \"\\f2d7\";\n}\n.fa-imdb:before {\n content: \"\\f2d8\";\n}\n.fa-ravelry:before {\n content: \"\\f2d9\";\n}\n.fa-eercast:before {\n content: \"\\f2da\";\n}\n.fa-microchip:before {\n content: \"\\f2db\";\n}\n.fa-snowflake-o:before {\n content: \"\\f2dc\";\n}\n.fa-superpowers:before {\n content: \"\\f2dd\";\n}\n.fa-wpexplorer:before {\n content: \"\\f2de\";\n}\n.fa-meetup:before {\n content: \"\\f2e0\";\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n","/*!\n * ui-select\n * http://github.com/angular-ui/ui-select\n * Version: 0.14.1 - 2016-01-27T22:27:00.588Z\n * License: MIT\n */\n\n\n/* Style when highlighting a search. */\n.ui-select-highlight {\n font-weight: bold;\n}\n\n.ui-select-offscreen {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n\n.ui-select-choices-row:hover {\n background-color: #f5f5f5;\n}\n\n/* Select2 theme */\n\n/* Mark invalid Select2 */\n.ng-dirty.ng-invalid > a.select2-choice {\n border-color: #D44950;\n}\n\n.select2-result-single {\n padding-left: 0;\n}\n\n.select2-locked > .select2-search-choice-close{\n display:none;\n}\n\n.select-locked > .ui-select-match-close{\n display:none;\n}\n\nbody > .select2-container.open {\n z-index: 9999; /* The z-index Select2 applies to the select2-drop */\n}\n\n/* Handle up direction Select2 */\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-match {\n border-radius: 4px; /* FIXME hardcoded value :-/ */\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-dropdown {\n border-radius: 4px; /* FIXME hardcoded value :-/ */\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n border-top-width: 1px; /* FIXME hardcoded value :-/ */\n border-top-style: solid;\n\n box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\n\n margin-top: -4px; /* FIXME hardcoded value :-/ */\n}\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-dropdown .select2-search {\n margin-top: 4px; /* FIXME hardcoded value :-/ */\n}\n.ui-select-container[theme=\"select2\"].direction-up.select2-dropdown-open .ui-select-match {\n border-bottom-color: #5897fb;\n}\n\n/* Selectize theme */\n\n/* Helper class to show styles when focus */\n.selectize-input.selectize-focus{\n border-color: #007FBB !important;\n}\n\n/* Fix input width for Selectize theme */\n.selectize-control > .selectize-input > input {\n width: 100%;\n}\n\n/* Fix dropdown width for Selectize theme */\n.selectize-control > .selectize-dropdown {\n width: 100%;\n}\n\n/* Mark invalid Selectize */\n.ng-dirty.ng-invalid > div.selectize-input {\n border-color: #D44950;\n}\n\n/* Handle up direction Selectize */\n.ui-select-container[theme=\"selectize\"].direction-up .ui-select-dropdown {\n box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\n\n margin-top: -2px; /* FIXME hardcoded value :-/ */\n}\n\n/* Bootstrap theme */\n\n/* Helper class to show styles when focus */\n.btn-default-focus {\n color: #333;\n background-color: #EBEBEB;\n border-color: #ADADAD;\n text-decoration: none;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.ui-select-bootstrap .ui-select-toggle {\n position: relative;\n}\n\n.ui-select-bootstrap .ui-select-toggle > .caret {\n position: absolute;\n height: 10px;\n top: 50%;\n right: 10px;\n margin-top: -2px;\n}\n\n/* Fix Bootstrap dropdown position when inside a input-group */\n.input-group > .ui-select-bootstrap.dropdown {\n /* Instead of relative */\n position: static;\n}\n\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control {\n border-radius: 4px; /* FIXME hardcoded value :-/ */\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control.direction-up {\n border-radius: 4px !important; /* FIXME hardcoded value :-/ */\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.ui-select-bootstrap > .ui-select-match > .btn{\n /* Instead of center because of .btn */\n text-align: left !important;\n}\n\n.ui-select-bootstrap > .ui-select-match > .caret {\n position: absolute;\n top: 45%;\n right: 15px;\n}\n\n/* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */\n.ui-select-bootstrap > .ui-select-choices {\n width: 100%;\n height: auto;\n max-height: 200px;\n overflow-x: hidden;\n margin-top: -1px;\n}\n\nbody > .ui-select-bootstrap.open {\n z-index: 1000; /* Standard Bootstrap dropdown z-index */\n}\n\n.ui-select-multiple.ui-select-bootstrap {\n height: auto;\n padding: 3px 3px 0 3px;\n}\n\n.ui-select-multiple.ui-select-bootstrap input.ui-select-search {\n background-color: transparent !important; /* To prevent double background when disabled */\n border: none;\n outline: none;\n height: 1.666666em;\n margin-bottom: 3px;\n}\n\n.ui-select-multiple.ui-select-bootstrap .ui-select-match .close {\n font-size: 1.6em;\n line-height: 0.75;\n}\n\n.ui-select-multiple.ui-select-bootstrap .ui-select-match-item {\n outline: 0;\n margin: 0 3px 3px 0;\n}\n\n.ui-select-multiple .ui-select-match-item {\n position: relative;\n}\n\n.ui-select-multiple .ui-select-match-item.dropping-before:before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 100%;\n height: 100%;\n margin-right: 2px;\n border-left: 1px solid #428bca;\n}\n\n.ui-select-multiple .ui-select-match-item.dropping-after:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 100%;\n height: 100%;\n margin-left: 2px;\n border-right: 1px solid #428bca;\n}\n\n.ui-select-bootstrap .ui-select-choices-row>a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n\n.ui-select-bootstrap .ui-select-choices-row>a:hover, .ui-select-bootstrap .ui-select-choices-row>a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n\n.ui-select-bootstrap .ui-select-choices-row.active>a {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #428bca;\n}\n\n.ui-select-bootstrap .ui-select-choices-row.disabled>a,\n.ui-select-bootstrap .ui-select-choices-row.active.disabled>a {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n\n/* fix hide/show angular animation */\n.ui-select-match.ng-hide-add,\n.ui-select-search.ng-hide-add {\n display: none !important;\n}\n\n/* Mark invalid Bootstrap */\n.ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {\n border-color: #D44950;\n}\n\n/* Handle up direction Bootstrap */\n.ui-select-container[theme=\"bootstrap\"].direction-up .ui-select-dropdown {\n box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\n}\n","/* nvd3 version 1.8.1 (https://github.com/novus/nvd3) 2015-06-15 */\n.nvd3 .nv-axis {\r\n pointer-events:none;\r\n opacity: 1;\r\n}\r\n\r\n.nvd3 .nv-axis path {\r\n fill: none;\r\n stroke: #000;\r\n stroke-opacity: .75;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .nv-axis path.domain {\r\n stroke-opacity: .75;\r\n}\r\n\r\n.nvd3 .nv-axis.nv-x path.domain {\r\n stroke-opacity: 0;\r\n}\r\n\r\n.nvd3 .nv-axis line {\r\n fill: none;\r\n stroke: #e5e5e5;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .nv-axis .zero line,\r\n /*this selector may not be necessary*/ .nvd3 .nv-axis line.zero {\r\n stroke-opacity: .75;\r\n}\r\n\r\n.nvd3 .nv-axis .nv-axisMaxMin text {\r\n font-weight: bold;\r\n}\r\n\r\n.nvd3 .x .nv-axis .nv-axisMaxMin text,\r\n.nvd3 .x2 .nv-axis .nv-axisMaxMin text,\r\n.nvd3 .x3 .nv-axis .nv-axisMaxMin text {\r\n text-anchor: middle\r\n}\r\n\r\n.nvd3 .nv-axis.nv-disabled {\r\n opacity: 0;\r\n}\r\n\n.nvd3 .nv-bars rect {\r\n fill-opacity: .75;\r\n\r\n transition: fill-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear;\r\n}\r\n\r\n.nvd3 .nv-bars rect.hover {\r\n fill-opacity: 1;\r\n}\r\n\r\n.nvd3 .nv-bars .hover rect {\r\n fill: lightblue;\r\n}\r\n\r\n.nvd3 .nv-bars text {\r\n fill: rgba(0,0,0,0);\r\n}\r\n\r\n.nvd3 .nv-bars .hover text {\r\n fill: rgba(0,0,0,1);\r\n}\r\n\r\n.nvd3 .nv-multibar .nv-groups rect,\r\n.nvd3 .nv-multibarHorizontal .nv-groups rect,\r\n.nvd3 .nv-discretebar .nv-groups rect {\r\n stroke-opacity: 0;\r\n\r\n transition: fill-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear;\r\n}\r\n\r\n.nvd3 .nv-multibar .nv-groups rect:hover,\r\n.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,\r\n.nvd3 .nv-candlestickBar .nv-ticks rect:hover,\r\n.nvd3 .nv-discretebar .nv-groups rect:hover {\r\n fill-opacity: 1;\r\n}\r\n\r\n.nvd3 .nv-discretebar .nv-groups text,\r\n.nvd3 .nv-multibarHorizontal .nv-groups text {\r\n font-weight: bold;\r\n fill: rgba(0,0,0,1);\r\n stroke: rgba(0,0,0,0);\r\n}\r\n\n/* boxplot CSS */\n.nvd3 .nv-boxplot circle {\n fill-opacity: 0.5;\n}\n\n.nvd3 .nv-boxplot circle:hover {\n fill-opacity: 1;\n}\n\n.nvd3 .nv-boxplot rect:hover {\n fill-opacity: 1;\n}\n\n.nvd3 line.nv-boxplot-median {\n stroke: black;\n}\n\n.nv-boxplot-tick:hover {\n stroke-width: 2.5px;\n}\n/* bullet */\r\n.nvd3.nv-bullet { font: 10px sans-serif; }\r\n.nvd3.nv-bullet .nv-measure { fill-opacity: .8; }\r\n.nvd3.nv-bullet .nv-measure:hover { fill-opacity: 1; }\r\n.nvd3.nv-bullet .nv-marker { stroke: #000; stroke-width: 2px; }\r\n.nvd3.nv-bullet .nv-markerTriangle { stroke: #000; fill: #fff; stroke-width: 1.5px; }\r\n.nvd3.nv-bullet .nv-tick line { stroke: #666; stroke-width: .5px; }\r\n.nvd3.nv-bullet .nv-range.nv-s0 { fill: #eee; }\r\n.nvd3.nv-bullet .nv-range.nv-s1 { fill: #ddd; }\r\n.nvd3.nv-bullet .nv-range.nv-s2 { fill: #ccc; }\r\n.nvd3.nv-bullet .nv-title { font-size: 14px; font-weight: bold; }\r\n.nvd3.nv-bullet .nv-subtitle { fill: #999; }\r\n\r\n\r\n.nvd3.nv-bullet .nv-range {\r\n fill: #bababa;\r\n fill-opacity: .4;\r\n}\r\n.nvd3.nv-bullet .nv-range:hover {\r\n fill-opacity: .7;\r\n}\r\n\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick {\r\n stroke-width: 1px;\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover {\r\n stroke-width: 2px;\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect {\r\n stroke: #2ca02c;\r\n fill: #2ca02c;\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect {\r\n stroke: #d62728;\r\n fill: #d62728;\r\n}\r\n\r\n.with-transitions .nv-candlestickBar .nv-ticks .nv-tick {\r\n transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks line {\r\n stroke: #333;\r\n}\r\n\r\n\n.nvd3 .nv-legend .nv-disabled rect {\n /*fill-opacity: 0;*/\n}\n\n.nvd3 .nv-check-box .nv-box {\n fill-opacity:0;\n stroke-width:2;\n}\n\n.nvd3 .nv-check-box .nv-check {\n fill-opacity:0;\n stroke-width:4;\n}\n\n.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check {\n fill-opacity:0;\n stroke-opacity:0;\n}\n\n.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check {\n opacity: 0;\n}\n\n/* line plus bar */\r\n.nvd3.nv-linePlusBar .nv-bar rect {\r\n fill-opacity: .75;\r\n}\r\n\r\n.nvd3.nv-linePlusBar .nv-bar rect:hover {\r\n fill-opacity: 1;\r\n}\n.nvd3 .nv-groups path.nv-line {\r\n fill: none;\r\n}\r\n\r\n.nvd3 .nv-groups path.nv-area {\r\n stroke: none;\r\n}\r\n\r\n.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point {\r\n fill-opacity: 0;\r\n stroke-opacity: 0;\r\n}\r\n\r\n.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point {\r\n fill-opacity: .5 !important;\r\n stroke-opacity: .5 !important;\r\n}\r\n\r\n\r\n.with-transitions .nvd3 .nv-groups .nv-point {\r\n transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n\r\n}\r\n\r\n.nvd3.nv-scatter .nv-groups .nv-point.hover,\r\n.nvd3 .nv-groups .nv-point.hover {\r\n stroke-width: 7px;\r\n fill-opacity: .95 !important;\r\n stroke-opacity: .95 !important;\r\n}\r\n\r\n\r\n.nvd3 .nv-point-paths path {\r\n stroke: #aaa;\r\n stroke-opacity: 0;\r\n fill: #eee;\r\n fill-opacity: 0;\r\n}\r\n\r\n\r\n\r\n.nvd3 .nv-indexLine {\r\n cursor: ew-resize;\r\n}\r\n\n/********************\r\n * SVG CSS\r\n */\r\n\r\n/********************\r\n Default CSS for an svg element nvd3 used\r\n*/\r\nsvg.nvd3-svg {\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -ms-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n display: block;\r\n width:100%;\r\n height:100%;\r\n}\r\n\r\n/********************\r\n Box shadow and border radius styling\r\n*/\r\n.nvtooltip.with-3d-shadow, .with-3d-shadow .nvtooltip {\r\n -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);\r\n -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);\r\n box-shadow: 0 5px 10px rgba(0,0,0,.2);\r\n\r\n -webkit-border-radius: 5px;\r\n -moz-border-radius: 5px;\r\n border-radius: 5px;\r\n}\r\n\r\n\r\n.nvd3 text {\r\n font: normal 12px Arial;\r\n}\r\n\r\n.nvd3 .title {\r\n font: bold 14px Arial;\r\n}\r\n\r\n.nvd3 .nv-background {\r\n fill: white;\r\n fill-opacity: 0;\r\n}\r\n\r\n.nvd3.nv-noData {\r\n font-size: 18px;\r\n font-weight: bold;\r\n}\r\n\r\n\r\n/**********\r\n* Brush\r\n*/\r\n\r\n.nv-brush .extent {\r\n fill-opacity: .125;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nv-brush .resize path {\r\n fill: #eee;\r\n stroke: #666;\r\n}\r\n\r\n\r\n/**********\r\n* Legend\r\n*/\r\n\r\n.nvd3 .nv-legend .nv-series {\r\n cursor: pointer;\r\n}\r\n\r\n.nvd3 .nv-legend .nv-disabled circle {\r\n fill-opacity: 0;\r\n}\r\n\r\n/* focus */\r\n.nvd3 .nv-brush .extent {\r\n fill-opacity: 0 !important;\r\n}\r\n\r\n.nvd3 .nv-brushBackground rect {\r\n stroke: #000;\r\n stroke-width: .4;\r\n fill: #fff;\r\n fill-opacity: .7;\r\n}\r\n\r\n\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick {\r\n stroke-width: 1px;\r\n}\r\n\r\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover {\r\n stroke-width: 2px;\r\n}\r\n\r\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive {\r\n stroke: #2ca02c;\r\n}\r\n\r\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative {\r\n stroke: #d62728;\r\n}\r\n\r\n\n.nvd3 .background path {\r\n fill: none;\r\n stroke: #EEE;\r\n stroke-opacity: .4;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .foreground path {\r\n fill: none;\r\n stroke-opacity: .7;\r\n}\r\n\r\n.nvd3 .nv-parallelCoordinates-brush .extent \r\n{\r\n fill: #fff;\r\n fill-opacity: .6;\r\n stroke: gray;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .nv-parallelCoordinates .hover {\r\n fill-opacity: 1;\r\n\tstroke-width: 3px;\r\n}\r\n\r\n\r\n.nvd3 .missingValuesline line {\r\n fill: none;\r\n stroke: black;\r\n stroke-width: 1;\r\n stroke-opacity: 1;\r\n stroke-dasharray: 5, 5; \r\n}\n.nvd3.nv-pie path {\r\n stroke-opacity: 0;\r\n transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n\r\n}\r\n\r\n.nvd3.nv-pie .nv-pie-title {\r\n font-size: 24px;\r\n fill: rgba(19, 196, 249, 0.59);\r\n}\r\n\r\n.nvd3.nv-pie .nv-slice text {\r\n stroke: #000;\r\n stroke-width: 0;\r\n}\r\n\r\n.nvd3.nv-pie path {\r\n stroke: #fff;\r\n stroke-width: 1px;\r\n stroke-opacity: 1;\r\n}\r\n\r\n.nvd3.nv-pie .hover path {\r\n fill-opacity: .7;\r\n}\r\n.nvd3.nv-pie .nv-label {\r\n pointer-events: none;\r\n}\r\n.nvd3.nv-pie .nv-label rect {\r\n fill-opacity: 0;\r\n stroke-opacity: 0;\r\n}\r\n\n/* scatter */\r\n.nvd3 .nv-groups .nv-point.hover {\r\n stroke-width: 20px;\r\n stroke-opacity: .5;\r\n}\r\n\r\n.nvd3 .nv-scatter .nv-point.hover {\r\n fill-opacity: 1;\r\n}\r\n.nv-noninteractive {\r\n pointer-events: none;\r\n}\r\n\r\n.nv-distx, .nv-disty {\r\n pointer-events: none;\r\n}\r\n\n/* sparkline */\r\n.nvd3.nv-sparkline path {\r\n fill: none;\r\n}\r\n\r\n.nvd3.nv-sparklineplus g.nv-hoverValue {\r\n pointer-events: none;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-hoverValue line {\r\n stroke: #333;\r\n stroke-width: 1.5px;\r\n}\r\n\r\n.nvd3.nv-sparklineplus,\r\n.nvd3.nv-sparklineplus g {\r\n pointer-events: all;\r\n}\r\n\r\n.nvd3 .nv-hoverArea {\r\n fill-opacity: 0;\r\n stroke-opacity: 0;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-xValue,\r\n.nvd3.nv-sparklineplus .nv-yValue {\r\n stroke-width: 0;\r\n font-size: .9em;\r\n font-weight: normal;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-yValue {\r\n stroke: #f66;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-maxValue {\r\n stroke: #2ca02c;\r\n fill: #2ca02c;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-minValue {\r\n stroke: #d62728;\r\n fill: #d62728;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-currentValue {\r\n font-weight: bold;\r\n font-size: 1.1em;\r\n}\n/* stacked area */\r\n.nvd3.nv-stackedarea path.nv-area {\r\n fill-opacity: .7;\r\n stroke-opacity: 0;\r\n transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;\r\n}\r\n\r\n.nvd3.nv-stackedarea path.nv-area.hover {\r\n fill-opacity: .9;\r\n}\r\n\r\n\r\n.nvd3.nv-stackedarea .nv-groups .nv-point {\r\n stroke-opacity: 0;\r\n fill-opacity: 0;\r\n}\n\r\n\r\n.nvtooltip {\r\n position: absolute;\r\n background-color: rgba(255,255,255,1.0);\r\n color: rgba(0,0,0,1.0);\r\n padding: 1px;\r\n border: 1px solid rgba(0,0,0,.2);\r\n z-index: 10000;\r\n display: block;\r\n\r\n font-family: Arial;\r\n font-size: 13px;\r\n text-align: left;\r\n pointer-events: none;\r\n\r\n white-space: nowrap;\r\n\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.nvtooltip {\r\n background: rgba(255,255,255, 0.8);\r\n border: 1px solid rgba(0,0,0,0.5);\r\n border-radius: 4px;\r\n}\r\n\r\n/*Give tooltips that old fade in transition by\r\n putting a \"with-transitions\" class on the container div.\r\n*/\r\n.nvtooltip.with-transitions, .with-transitions .nvtooltip {\r\n transition: opacity 50ms linear;\r\n -moz-transition: opacity 50ms linear;\r\n -webkit-transition: opacity 50ms linear;\r\n\r\n transition-delay: 200ms;\r\n -moz-transition-delay: 200ms;\r\n -webkit-transition-delay: 200ms;\r\n}\r\n\r\n.nvtooltip.x-nvtooltip,\r\n.nvtooltip.y-nvtooltip {\r\n padding: 8px;\r\n}\r\n\r\n.nvtooltip h3 {\r\n margin: 0;\r\n padding: 4px 14px;\r\n line-height: 18px;\r\n font-weight: normal;\r\n background-color: rgba(247,247,247,0.75);\r\n color: rgba(0,0,0,1.0);\r\n text-align: center;\r\n\r\n border-bottom: 1px solid #ebebeb;\r\n\r\n -webkit-border-radius: 5px 5px 0 0;\r\n -moz-border-radius: 5px 5px 0 0;\r\n border-radius: 5px 5px 0 0;\r\n}\r\n\r\n.nvtooltip p {\r\n margin: 0;\r\n padding: 5px 14px;\r\n text-align: center;\r\n}\r\n\r\n.nvtooltip span {\r\n display: inline-block;\r\n margin: 2px 0;\r\n}\r\n\r\n.nvtooltip table {\r\n margin: 6px;\r\n border-spacing:0;\r\n}\r\n\r\n\r\n.nvtooltip table td {\r\n padding: 2px 9px 2px 0;\r\n vertical-align: middle;\r\n}\r\n\r\n.nvtooltip table td.key {\r\n font-weight:normal;\r\n}\r\n.nvtooltip table td.value {\r\n text-align: right;\r\n font-weight: bold;\r\n}\r\n\r\n.nvtooltip table tr.highlight td {\r\n padding: 1px 9px 1px 0;\r\n border-bottom-style: solid;\r\n border-bottom-width: 1px;\r\n border-top-style: solid;\r\n border-top-width: 1px;\r\n}\r\n\r\n.nvtooltip table td.legend-color-guide div {\r\n width: 8px;\r\n height: 8px;\r\n vertical-align: middle;\r\n}\r\n\r\n.nvtooltip table td.legend-color-guide div {\r\n width: 12px;\r\n height: 12px;\r\n border: 1px solid #999;\r\n}\r\n\r\n.nvtooltip .footer {\r\n padding: 3px;\r\n text-align: center;\r\n}\r\n\r\n.nvtooltip-pending-removal {\r\n pointer-events: none;\r\n display: none;\r\n}\r\n\r\n\r\n/****\r\nInteractive Layer\r\n*/\r\n.nvd3 .nv-interactiveGuideLine {\r\n pointer-events:none;\r\n}\r\n.nvd3 line.nv-guideline {\r\n stroke: #ccc;\r\n}","/* ========================================================================\n * bootstrap-switch - v3.3.2\n * http://www.bootstrap-switch.org\n * ========================================================================\n * Copyright 2012-2013 Mattia Larentis\n *\n * ========================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================================\n */\n\n.bootstrap-switch {\n display: inline-block;\n direction: ltr;\n cursor: pointer;\n border-radius: 4px;\n border: 1px solid;\n border-color: #cccccc;\n position: relative;\n text-align: left;\n overflow: hidden;\n line-height: 8px;\n z-index: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n vertical-align: middle;\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.bootstrap-switch .bootstrap-switch-container {\n display: inline-block;\n top: 0;\n border-radius: 4px;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n}\n.bootstrap-switch .bootstrap-switch-handle-on,\n.bootstrap-switch .bootstrap-switch-handle-off,\n.bootstrap-switch .bootstrap-switch-label {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block !important;\n height: 100%;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 20px;\n}\n.bootstrap-switch .bootstrap-switch-handle-on,\n.bootstrap-switch .bootstrap-switch-handle-off {\n text-align: center;\n z-index: 1;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {\n color: #fff;\n background: #428bca;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {\n color: #fff;\n background: #5bc0de;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {\n color: #fff;\n background: #5cb85c;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {\n background: #f0ad4e;\n color: #fff;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {\n color: #fff;\n background: #d9534f;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {\n color: #000;\n background: #eeeeee;\n}\n.bootstrap-switch .bootstrap-switch-label {\n text-align: center;\n margin-top: -1px;\n margin-bottom: -1px;\n z-index: 100;\n color: #333333;\n background: #ffffff;\n}\n.bootstrap-switch .bootstrap-switch-handle-on {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.bootstrap-switch .bootstrap-switch-handle-off {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.bootstrap-switch input[type='radio'],\n.bootstrap-switch input[type='checkbox'] {\n position: absolute !important;\n top: 0;\n left: 0;\n opacity: 0;\n filter: alpha(opacity=0);\n z-index: -1;\n}\n.bootstrap-switch input[type='radio'].form-control,\n.bootstrap-switch input[type='checkbox'].form-control {\n height: auto;\n}\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n}\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {\n padding: 6px 16px;\n font-size: 18px;\n line-height: 1.33;\n}\n.bootstrap-switch.bootstrap-switch-disabled,\n.bootstrap-switch.bootstrap-switch-readonly,\n.bootstrap-switch.bootstrap-switch-indeterminate {\n cursor: default !important;\n}\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {\n opacity: 0.5;\n filter: alpha(opacity=50);\n cursor: default !important;\n}\n.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {\n -webkit-transition: margin-left 0.5s;\n transition: margin-left 0.5s;\n}\n.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.bootstrap-switch.bootstrap-switch-focused {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n",".cg-busy{\n\tposition:absolute;\n\ttop:0px;\n\tleft:0px;\n\tright:0px;\n\tbottom:0px;\n z-index:1001;\n}\n\n.cg-busy-animation.ng-hide-add,\n.cg-busy-animation.ng-hide-remove {\n -webkit-transition:all .3s ease;\n -moz-transition:all .3s ease;\n -o-transition:all .3s ease;\n transition:all .3s ease;\n display:block !important;\n}\n.cg-busy-animation.ng-hide-remove {\n opacity:0;\n -webkit-transform:translate(0px,-40px);\n -moz-transform:translate(0px,-40px);\n -ms-transform:translate(0px,-40px);\n -o-transform:translate(0px,-40px);\n transform:translate(0px,-40px);\n}\n.cg-busy-animation.ng-hide-remove.ng-hide-remove-active {\n opacity:1;\n -webkit-transform:translate(0px,0px);\n -moz-transform:translate(0px,0px);\n -ms-transform:translate(0px,0px);\n -o-transform:translate(0px,0px);\n transform:translate(0px,0px);\n}\n.cg-busy-animation.ng-hide-add {\n opacity:1;\n -webkit-transform:translate(0px,0px);\n -moz-transform:translate(0px,0px);\n -ms-transform:translate(0px,0px);\n -o-transform:translate(0px,0px);\n transform:translate(0px,0px);\n}\n.cg-busy-animation.ng-hide-add.ng-hide-add-active {\n opacity:0;\n -webkit-transform:translate(0px,-40px);\n -moz-transform:translate(0px,-40px);\n -ms-transform:translate(0px,-40px);\n -o-transform:translate(0px,-40px);\n transform:translate(0px,-40px);\n}\n\n.cg-busy-backdrop {\n\tbackground-color:white;\n\topacity:.7;\n}\n\n.cg-busy-backdrop-animation.ng-hide-add,\n.cg-busy-backdrop-animation.ng-hide-remove {\n -webkit-transition:opacity .3s ease;\n -moz-transition:opacity .3s ease;\n -o-transition:opacity .3s ease;\n transition:opacity .3s ease;\n display:block !important;\n}\n\n.cg-busy-backdrop-animation.ng-hide {\n opacity:0;\n}\n\n/* All styles below are for the default template. */\n\n.cg-busy-default-wrapper {\n\ttext-align:center;\n}\n\n.cg-busy-default-sign{\n\tdisplay: inline-block;\n\tposition:relative;\n z-index:1002;\n\tpadding-bottom: 6px;\n\tcolor:#333333;\n\ttext-shadow:0 1px 1px rgba(255, 255, 255, 0.75);\n\tbackground-color:#e9eeee;\n\tborder:1px solid #dddddd;\n\tborder-top-width:0;\n\t-webkit-border-radius:7px;\n\t-moz-border-radius:7px;\n\tborder-radius:7px;\n\tborder-top-left-radius:0;\n\tborder-top-right-radius:0;\n\t-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\t-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\tbox-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n}\n.cg-busy-default-text{\n\tmargin:13px 12px 6px 49px;\n\tfont-size:16px;\n\tcolor:#555;\n\ttext-align: left;\n\tmax-width: 400px;\n}\n.cg-busy-default-spinner{\n\tposition:absolute;\n\twidth:25px;\n\theight:25px;\n\tdisplay:inline-block;\n\ttop:12px;\n\tleft:14px;\n}\n.cg-busy-default-spinner div{\n\twidth:12%;\n\theight:26%;\n\tbackground:#000;\n\tposition:absolute;\n\tleft:44.5%;\n\ttop:37%;\n\topacity:0;\n\t-webkit-animation:cg-busy-spinner-anim 1s linear infinite;\n\t-moz-animation:cg-busy-spinner-anim 1s linear infinite;\n\t-ms-animation:cg-busy-spinner-anim 1s linear infinite;\n\t-o-animation:cg-busy-spinner-anim 1s linear infinite;\n\tanimation:cg-busy-spinner-anim 1s linear infinite;\n\t-webkit-border-radius:50px;\n\t-moz-border-radius:50px;\n\tborder-radius:50px;\n\t-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);\n\t-moz-box-shadow:0 0 3px rgba(0,0,0,0.2);\n\tbox-shadow:0 0 3px rgba(0,0,0,0.2);\n}\n.cg-busy-default-spinner div.bar1{\n\t-webkit-transform:rotate(0deg) translate(0, -142%);\n\t-moz-transform:rotate(0deg) translate(0, -142%);\n\t-ms-transform:rotate(0deg) translate(0, -142%);\n\t-o-transform:rotate(0deg) translate(0, -142%);\n\ttransform:rotate(0deg) translate(0, -142%);\n\t-webkit-animation-delay:0s;\n\t-moz-animation-delay:0s;\n\t-ms-animation-delay:0s;\n\t-o-animation-delay:0s;\n\tanimation-delay:0s;\n}\n.cg-busy-default-spinner div.bar2{\n\t-webkit-transform:rotate(30deg) translate(0, -142%);\n\t-moz-transform:rotate(30deg) translate(0, -142%);\n\t-ms-transform:rotate(30deg) translate(0, -142%);\n\t-o-transform:rotate(30deg) translate(0, -142%);\n\ttransform:rotate(30deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.9167s;\n\t-moz-animation-delay:-0.9167s;\n\t-ms-animation-delay:-0.9167s;\n\t-o-animation-delay:-0.9167s;\n\tanimation-delay:-0.9167s;\n}\n.cg-busy-default-spinner div.bar3{\n\t-webkit-transform:rotate(60deg) translate(0, -142%);\n\t-moz-transform:rotate(60deg) translate(0, -142%);\n\t-ms-transform:rotate(60deg) translate(0, -142%);\n\t-o-transform:rotate(60deg) translate(0, -142%);\n\ttransform:rotate(60deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.833s;\n\t-moz-animation-delay:-0.833s;\n\t-ms-animation-delay:-0.833s;\n\t-o-animation-delay:-0.833s;\n\tanimation-delay:-0.833s;\n}\n.cg-busy-default-spinner div.bar4{\n\t-webkit-transform:rotate(90deg) translate(0, -142%);\n\t-moz-transform:rotate(90deg) translate(0, -142%);\n\t-ms-transform:rotate(90deg) translate(0, -142%);\n\t-o-transform:rotate(90deg) translate(0, -142%);\n\ttransform:rotate(90deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.75s;\n\t-moz-animation-delay:-0.75s;\n\t-ms-animation-delay:-0.75s;\n\t-o-animation-delay:-0.75s;\n\tanimation-delay:-0.75s;\n}\n.cg-busy-default-spinner div.bar5{\n\t-webkit-transform:rotate(120deg) translate(0, -142%);\n\t-moz-transform:rotate(120deg) translate(0, -142%);\n\t-ms-transform:rotate(120deg) translate(0, -142%);\n\t-o-transform:rotate(120deg) translate(0, -142%);\n\ttransform:rotate(120deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.667s;\n\t-moz-animation-delay:-0.667s;\n\t-ms-animation-delay:-0.667s;\n\t-o-animation-delay:-0.667s;\n\tanimation-delay:-0.667s;\n}\n.cg-busy-default-spinner div.bar6{\n\t-webkit-transform:rotate(150deg) translate(0, -142%);\n\t-moz-transform:rotate(150deg) translate(0, -142%);\n\t-ms-transform:rotate(150deg) translate(0, -142%);\n\t-o-transform:rotate(150deg) translate(0, -142%);\n\ttransform:rotate(150deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.5833s;\n\t-moz-animation-delay:-0.5833s;\n\t-ms-animation-delay:-0.5833s;\n\t-o-animation-delay:-0.5833s;\n\tanimation-delay:-0.5833s;\n}\n.cg-busy-default-spinner div.bar7{\n\t-webkit-transform:rotate(180deg) translate(0, -142%);\n\t-moz-transform:rotate(180deg) translate(0, -142%);\n\t-ms-transform:rotate(180deg) translate(0, -142%);\n\t-o-transform:rotate(180deg) translate(0, -142%);\n\ttransform:rotate(180deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.5s;\n\t-moz-animation-delay:-0.5s;\n\t-ms-animation-delay:-0.5s;\n\t-o-animation-delay:-0.5s;\n\tanimation-delay:-0.5s;\n}\n.cg-busy-default-spinner div.bar8{\n\t-webkit-transform:rotate(210deg) translate(0, -142%);\n\t-moz-transform:rotate(210deg) translate(0, -142%);\n\t-ms-transform:rotate(210deg) translate(0, -142%);\n\t-o-transform:rotate(210deg) translate(0, -142%);\n\ttransform:rotate(210deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.41667s;\n\t-moz-animation-delay:-0.41667s;\n\t-ms-animation-delay:-0.41667s;\n\t-o-animation-delay:-0.41667s;\n\tanimation-delay:-0.41667s;\n}\n.cg-busy-default-spinner div.bar9{\n\t-webkit-transform:rotate(240deg) translate(0, -142%);\n\t-moz-transform:rotate(240deg) translate(0, -142%);\n\t-ms-transform:rotate(240deg) translate(0, -142%);\n\t-o-transform:rotate(240deg) translate(0, -142%);\n\ttransform:rotate(240deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.333s;\n\t-moz-animation-delay:-0.333s;\n\t-ms-animation-delay:-0.333s;\n\t-o-animation-delay:-0.333s;\n\tanimation-delay:-0.333s;\n}\n.cg-busy-default-spinner div.bar10{\n\t-webkit-transform:rotate(270deg) translate(0, -142%);\n\t-moz-transform:rotate(270deg) translate(0, -142%);\n\t-ms-transform:rotate(270deg) translate(0, -142%);\n\t-o-transform:rotate(270deg) translate(0, -142%);\n\ttransform:rotate(270deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.25s;\n\t-moz-animation-delay:-0.25s;\n\t-ms-animation-delay:-0.25s;\n\t-o-animation-delay:-0.25s;\n\tanimation-delay:-0.25s;\n}\n.cg-busy-default-spinner div.bar11{\n\t-webkit-transform:rotate(300deg) translate(0, -142%);\n\t-moz-transform:rotate(300deg) translate(0, -142%);\n\t-ms-transform:rotate(300deg) translate(0, -142%);\n\t-o-transform:rotate(300deg) translate(0, -142%);\n\ttransform:rotate(300deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.1667s;\n\t-moz-animation-delay:-0.1667s;\n\t-ms-animation-delay:-0.1667s;\n\t-o-animation-delay:-0.1667s;\n\tanimation-delay:-0.1667s;\n}\n.cg-busy-default-spinner div.bar12{\n\t-webkit-transform:rotate(330deg) translate(0, -142%);\n\t-moz-transform:rotate(330deg) translate(0, -142%);\n\t-ms-transform:rotate(330deg) translate(0, -142%);\n\t-o-transform:rotate(330deg) translate(0, -142%);\n\ttransform:rotate(330deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.0833s;\n\t-moz-animation-delay:-0.0833s;\n\t-ms-animation-delay:-0.0833s;\n\t-o-animation-delay:-0.0833s;\n\tanimation-delay:-0.0833s;\n}\n\n@-webkit-keyframes cg-busy-spinner-anim{\n\tfrom {opacity: 1;}\n\tto {opacity: 0.25;}\n}\n@-moz-keyframes cg-busy-spinner-anim{\n\tfrom {opacity: 1;}\n\tto {opacity: 0.25;}\n}\n@keyframes cg-busy-spinner-anim{\n\tfrom {opacity: 1;}\n\tto {opacity: 0.25;}\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["angular-block-ui.css","loading-bar.css","bootstrap.css","angular-growl.css","animate.css","bootstrap-slider.css","typicons.css","font-awesome.css","typicons.min.css","select.css","nv.d3.css","bootstrap-switch.css","angular-busy.css"],"names":[],"mappings":"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","file":"alllibs.css","sourcesContent":["/*!\n angular-block-ui v0.2.0\n (c) 2015 (null) McNull https://github.com/McNull/angular-block-ui\n License: MIT\n*/\n\n.block-ui {\n position: relative;\n}\n\nbody.block-ui {\n /* IE8 doesn't support .block-ui:not(body) */\n \n position: static;\n}\n\nbody.block-ui > .block-ui-container,\n.block-ui-main > .block-ui-container {\n position: fixed;\n}\n\n.block-ui-container {\n position: absolute;\n z-index: 10000;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n filter: alpha(opacity=00);\n}\n\n.block-ui-active > .block-ui-container {\n height: 100%;\n cursor: wait;\n}\n\n.block-ui-active .block-ui-active > .block-ui-container {\n height: 0;\n}\n\n.block-ui-visible > .block-ui-container {\n opacity: 1;\n filter: alpha(opacity=100);\n}\n\n.block-ui-overlay {\n width: 100%;\n height: 100%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n background-color: white;\n}\n\n.block-ui-message-container {\n position: absolute;\n top: 35%;\n left: 0;\n right: 0;\n height: 0;\n text-align: center;\n z-index: 10001;\n}\n\n.block-ui-message {\n display: inline-block;\n text-align: left;\n background-color: #333;\n color: #f5f5f5;\n padding: 20px;\n border-radius: 4px;\n font-size: 20px;\n font-weight: bold;\n /* needed for IE */\n \n filter: alpha(opacity=100);\n}\n\n/* - - - - - - 8-< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n.block-ui-anim-fade > .block-ui-container {\n -webkit-transition: height 0s linear 200ms, opacity 200ms ease 0s;\n transition: height 0s linear 200ms, opacity 200ms ease 0s;\n}\n\n.block-ui-anim-fade.block-ui-active > .block-ui-container {\n /*this resets the initial delay of the height */\n /*and sizes the block to full height at once at the start of the block. */\n -webkit-transition-delay: 0s;\n transition-delay: 0s;\n}\n\n/* - - - - - - 8-< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n/*# sourceMappingURL=angular-block-ui.css.map */","/*! \n * angular-loading-bar v0.8.0\n * https://chieffancypants.github.io/angular-loading-bar\n * Copyright (c) 2015 Wes Cruver\n * License: MIT\n */\n\n/* Make clicks pass-through */\n#loading-bar,\n#loading-bar-spinner {\n pointer-events: none;\n -webkit-pointer-events: none;\n -webkit-transition: 350ms linear all;\n -moz-transition: 350ms linear all;\n -o-transition: 350ms linear all;\n transition: 350ms linear all;\n}\n\n#loading-bar.ng-enter,\n#loading-bar.ng-leave.ng-leave-active,\n#loading-bar-spinner.ng-enter,\n#loading-bar-spinner.ng-leave.ng-leave-active {\n opacity: 0;\n}\n\n#loading-bar.ng-enter.ng-enter-active,\n#loading-bar.ng-leave,\n#loading-bar-spinner.ng-enter.ng-enter-active,\n#loading-bar-spinner.ng-leave {\n opacity: 1;\n}\n\n#loading-bar .bar {\n -webkit-transition: width 350ms;\n -moz-transition: width 350ms;\n -o-transition: width 350ms;\n transition: width 350ms;\n\n background: #29d;\n position: fixed;\n z-index: 10002;\n top: 0;\n left: 0;\n width: 100%;\n height: 2px;\n border-bottom-right-radius: 1px;\n border-top-right-radius: 1px;\n}\n\n/* Fancy blur effect */\n#loading-bar .peg {\n position: absolute;\n width: 70px;\n right: 0;\n top: 0;\n height: 2px;\n opacity: .45;\n -moz-box-shadow: #29d 1px 0 6px 1px;\n -ms-box-shadow: #29d 1px 0 6px 1px;\n -webkit-box-shadow: #29d 1px 0 6px 1px;\n box-shadow: #29d 1px 0 6px 1px;\n -moz-border-radius: 100%;\n -webkit-border-radius: 100%;\n border-radius: 100%;\n}\n\n#loading-bar-spinner {\n display: block;\n position: fixed;\n z-index: 10002;\n top: 10px;\n left: 10px;\n}\n\n#loading-bar-spinner .spinner-icon {\n width: 14px;\n height: 14px;\n\n border: solid 2px transparent;\n border-top-color: #29d;\n border-left-color: #29d;\n border-radius: 50%;\n\n -webkit-animation: loading-bar-spinner 400ms linear infinite;\n -moz-animation: loading-bar-spinner 400ms linear infinite;\n -ms-animation: loading-bar-spinner 400ms linear infinite;\n -o-animation: loading-bar-spinner 400ms linear infinite;\n animation: loading-bar-spinner 400ms linear infinite;\n}\n\n@-webkit-keyframes loading-bar-spinner {\n 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@-moz-keyframes loading-bar-spinner {\n 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@-o-keyframes loading-bar-spinner {\n 0% { -o-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -o-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@-ms-keyframes loading-bar-spinner {\n 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }\n}\n@keyframes loading-bar-spinner {\n 0% { transform: rotate(0deg); transform: rotate(0deg); }\n 100% { transform: rotate(360deg); transform: rotate(360deg); }\n}\n","/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.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 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.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 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 3;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n","/**\n * angular-growl-v2 - v0.7.8 - 2015-10-25\n * http://janstevens.github.io/angular-growl-2\n * Copyright (c) 2015 Marco Rinck,Jan Stevens,Silvan van Leeuwen; Licensed MIT\n */\n/*\n * growl-container styles\n */\n.growl-container.growl-fixed {\n position: fixed;\n float: right;\n width: 90%;\n max-width: 400px;\n z-index: 9999;\n}\n.growl-container.growl-fixed.top-right {\n top: 10px;\n right: 15px;\n}\n.growl-container.growl-fixed.bottom-right {\n bottom: 10px;\n right: 15px;\n}\n.growl-container.growl-fixed.middle-right {\n top: 49%;\n right: 15px;\n}\n.growl-container.growl-fixed.top-left {\n top: 10px;\n left: 15px;\n}\n.growl-container.growl-fixed.bottom-left {\n bottom: 10px;\n left: 15px;\n}\n.growl-container.growl-fixed.middle-left {\n top: 49%;\n left: 15px;\n}\n.growl-container.growl-fixed.top-center {\n top: 10px;\n left: 50%;\n margin-left: -200px;\n}\n.growl-container.growl-fixed.bottom-center {\n bottom: 10px;\n left: 50%;\n margin-left: -200px;\n}\n.growl-container.growl-fixed.middle-center {\n top: 49%;\n left: 50%;\n margin-left: -200px;\n}\n\n/*\n * growl-item styles\n */\n.growl-container > .growl-item {\n padding: 10px;\n padding-right: 35px;\n margin-bottom: 10px;\n cursor: pointer;\n}\n\n.growl-container > button {\n border: none;\n outline:none;\n}\n.growl-container > .growl-item.ng-enter,\n.growl-container > .growl-item.ng-leave {\n -webkit-transition:0.5s linear all;\n -moz-transition:0.5s linear all;\n -o-transition:0.5s linear all;\n transition:0.5s linear all;\n}\n\n.growl-container > .growl-item.ng-enter,\n.growl-container > .growl-item.ng-leave.ng-leave-active {\n opacity:0;\n}\n.growl-container > .growl-item.ng-leave,\n.growl-container > .growl-item.ng-enter.ng-enter-active {\n opacity:1;\n}\n\n.growl-container > div.growl-item {\n background-position: 12px center;\n background-repeat: no-repeat;\n}\n\n/*\n * growl-title styles\n */\n.growl-title {\n font-size: 16px;\n}\n.growl-item.icon > .growl-title {\n margin: 0 0 0 40px;\n}\n\n/*\n * growl-message styles\n */\n.growl-item.icon > .growl-message {\n margin: 0 0 0 40px;\n}\n\n/*\n * growl background images\n */\n.growl-container > .alert-info.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n.growl-container > .alert-error.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n.growl-container > .alert-success.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n.growl-container > .alert-warning.icon {\n /* for the white images\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=\");\n */\n background-image: url(\"data:image/png;base64,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\");\n}\n","@charset \"UTF-8\";\n\n/*!\nAnimate.css - http://daneden.me/animate\nLicensed under the MIT license - http://opensource.org/licenses/MIT\n\nCopyright (c) 2015 Daniel Eden\n*/\n\n.animated {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n}\n\n.animated.infinite {\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n}\n\n.animated.hinge {\n -webkit-animation-duration: 2s;\n animation-duration: 2s;\n}\n\n.animated.bounceIn,\n.animated.bounceOut {\n -webkit-animation-duration: .75s;\n animation-duration: .75s;\n}\n\n.animated.flipOutX,\n.animated.flipOutY {\n -webkit-animation-duration: .75s;\n animation-duration: .75s;\n}\n\n@-webkit-keyframes bounce {\n from, 20%, 53%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n 40%, 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0,-4px,0);\n transform: translate3d(0,-4px,0);\n }\n}\n\n@keyframes bounce {\n from, 20%, 53%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n 40%, 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0,-4px,0);\n transform: translate3d(0,-4px,0);\n }\n}\n\n.bounce {\n -webkit-animation-name: bounce;\n animation-name: bounce;\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n from, 50%, 100% {\n opacity: 1;\n }\n\n 25%, 75% {\n opacity: 0;\n }\n}\n\n@keyframes flash {\n from, 50%, 100% {\n opacity: 1;\n }\n\n 25%, 75% {\n opacity: 0;\n }\n}\n\n.flash {\n -webkit-animation-name: flash;\n animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.pulse {\n -webkit-animation-name: pulse;\n animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(.95, 1.05, 1);\n transform: scale3d(.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, .95, 1);\n transform: scale3d(1.05, .95, 1);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(.95, 1.05, 1);\n transform: scale3d(.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, .95, 1);\n transform: scale3d(1.05, .95, 1);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.rubberBand {\n -webkit-animation-name: rubberBand;\n animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n from, 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%, 30%, 50%, 70%, 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%, 40%, 60%, 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n@keyframes shake {\n from, 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%, 30%, 50%, 70%, 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%, 40%, 60%, 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n.shake {\n -webkit-animation-name: shake;\n animation-name: shake;\n}\n\n@-webkit-keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n 100% {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n@keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n 100% {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n.swing {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n -webkit-animation-name: swing;\n animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%, 20% {\n -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%, 50%, 70%, 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%, 60%, 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%, 20% {\n -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%, 50%, 70%, 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%, 60%, 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n 100% {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.tada {\n -webkit-animation-name: tada;\n animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n from {\n -webkit-transform: none;\n transform: none;\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes wobble {\n from {\n -webkit-transform: none;\n transform: none;\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.wobble {\n -webkit-animation-name: wobble;\n animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n from, 11.1%, 100% {\n -webkit-transform: none;\n transform: none;\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n@keyframes jello {\n from, 11.1%, 100% {\n -webkit-transform: none;\n transform: none;\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n.jello {\n -webkit-animation-name: jello;\n animation-name: jello;\n -webkit-transform-origin: center;\n transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n from, 20%, 40%, 60%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(.97, .97, .97);\n transform: scale3d(.97, .97, .97);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes bounceIn {\n from, 20%, 40%, 60%, 80%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(.97, .97, .97);\n transform: scale3d(.97, .97, .97);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.bounceIn {\n -webkit-animation-name: bounceIn;\n animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes bounceInDown {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.bounceInDown {\n -webkit-animation-name: bounceInDown;\n animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes bounceInLeft {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.bounceInLeft {\n -webkit-animation-name: bounceInLeft;\n animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes bounceInRight {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.bounceInRight {\n -webkit-animation-name: bounceInRight;\n animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInUp {\n from, 60%, 75%, 90%, 100% {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInUp {\n -webkit-animation-name: bounceInUp;\n animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 50%, 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n}\n\n@keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(.9, .9, .9);\n transform: scale3d(.9, .9, .9);\n }\n\n 50%, 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n}\n\n.bounceOut {\n -webkit-animation-name: bounceOut;\n animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.bounceOutDown {\n -webkit-animation-name: bounceOutDown;\n animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.bounceOutLeft {\n -webkit-animation-name: bounceOutLeft;\n animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.bounceOutRight {\n -webkit-animation-name: bounceOutRight;\n animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%, 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.bounceOutUp {\n -webkit-animation-name: bounceOutUp;\n animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.fadeIn {\n -webkit-animation-name: fadeIn;\n animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInDown {\n -webkit-animation-name: fadeInDown;\n animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInDownBig {\n -webkit-animation-name: fadeInDownBig;\n animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInLeft {\n -webkit-animation-name: fadeInLeft;\n animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInLeftBig {\n -webkit-animation-name: fadeInLeftBig;\n animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInRight {\n -webkit-animation-name: fadeInRight;\n animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInRightBig {\n -webkit-animation-name: fadeInRightBig;\n animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInUp {\n -webkit-animation-name: fadeInUp;\n animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.fadeInUpBig {\n -webkit-animation-name: fadeInUpBig;\n animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n.fadeOut {\n -webkit-animation-name: fadeOut;\n animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.fadeOutDown {\n -webkit-animation-name: fadeOutDown;\n animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.fadeOutDownBig {\n -webkit-animation-name: fadeOutDownBig;\n animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.fadeOutLeft {\n -webkit-animation-name: fadeOutLeft;\n animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.fadeOutLeftBig {\n -webkit-animation-name: fadeOutLeftBig;\n animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.fadeOutRight {\n -webkit-animation-name: fadeOutRight;\n animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.fadeOutRightBig {\n -webkit-animation-name: fadeOutRightBig;\n animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.fadeOutUp {\n -webkit-animation-name: fadeOutUp;\n animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.fadeOutUpBig {\n -webkit-animation-name: fadeOutUpBig;\n animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n transform: perspective(400px) scale3d(.95, .95, .95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n@keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n transform: perspective(400px) scale3d(.95, .95, .95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n.animated.flip {\n -webkit-backface-visibility: visible;\n backface-visibility: visible;\n -webkit-animation-name: flip;\n animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInX {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInX;\n animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n 100% {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInY {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInY;\n animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutX {\n -webkit-animation-name: flipOutX;\n animation-name: flipOutX;\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutY {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipOutY;\n animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.lightSpeedIn {\n -webkit-animation-name: lightSpeedIn;\n animation-name: lightSpeedIn;\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n@keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n.lightSpeedOut {\n -webkit-animation-name: lightSpeedOut;\n animation-name: lightSpeedOut;\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateIn {\n -webkit-animation-name: rotateIn;\n animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInDownLeft {\n -webkit-animation-name: rotateInDownLeft;\n animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInDownRight {\n -webkit-animation-name: rotateInDownRight;\n animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInUpLeft {\n -webkit-animation-name: rotateInUpLeft;\n animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: none;\n transform: none;\n opacity: 1;\n }\n}\n\n.rotateInUpRight {\n -webkit-animation-name: rotateInUpRight;\n animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n.rotateOut {\n -webkit-animation-name: rotateOut;\n animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownLeft {\n -webkit-animation-name: rotateOutDownLeft;\n animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownRight {\n -webkit-animation-name: rotateOutDownRight;\n animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpLeft {\n -webkit-animation-name: rotateOutUpLeft;\n animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpRight {\n -webkit-animation-name: rotateOutUpRight;\n animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%, 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%, 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n@keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%, 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%, 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n.hinge {\n -webkit-animation-name: hinge;\n animation-name: hinge;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n@keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n 100% {\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n }\n}\n\n.rollIn {\n -webkit-animation-name: rollIn;\n animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n@keyframes rollOut {\n from {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n.rollOut {\n -webkit-animation-name: rollOut;\n animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n.zoomIn {\n -webkit-animation-name: zoomIn;\n animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInDown {\n -webkit-animation-name: zoomInDown;\n animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInLeft {\n -webkit-animation-name: zoomInLeft;\n animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInRight {\n -webkit-animation-name: zoomInRight;\n animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomInUp {\n -webkit-animation-name: zoomInUp;\n animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n@keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(.3, .3, .3);\n transform: scale3d(.3, .3, .3);\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n.zoomOut {\n -webkit-animation-name: zoomOut;\n animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomOutDown {\n -webkit-animation-name: zoomOutDown;\n animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n transform: scale(.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n@keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n transform: scale(.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n.zoomOutLeft {\n -webkit-animation-name: zoomOutLeft;\n animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n transform: scale(.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n@keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n transform: scale(.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n.zoomOutRight {\n -webkit-animation-name: zoomOutRight;\n animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n@keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n }\n\n 100% {\n opacity: 0;\n -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n }\n}\n\n.zoomOutUp {\n -webkit-animation-name: zoomOutUp;\n animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInDown {\n -webkit-animation-name: slideInDown;\n animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInLeft {\n -webkit-animation-name: slideInLeft;\n animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInRight {\n -webkit-animation-name: slideInRight;\n animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n 100% {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInUp {\n -webkit-animation-name: slideInUp;\n animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.slideOutDown {\n -webkit-animation-name: slideOutDown;\n animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.slideOutLeft {\n -webkit-animation-name: slideOutLeft;\n animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.slideOutRight {\n -webkit-animation-name: slideOutRight;\n animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 100% {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.slideOutUp {\n -webkit-animation-name: slideOutUp;\n animation-name: slideOutUp;\n}","/*! =======================================================\n VERSION 5.2.4 \n========================================================= */\n/*! =========================================================\n * bootstrap-slider.js\n *\n * Maintainers:\n *\t\tKyle Kemp\n *\t\t\t- Twitter: @seiyria\n *\t\t\t- Github: seiyria\n *\t\tRohit Kalkur\n *\t\t\t- Twitter: @Rovolutionary\n *\t\t\t- Github: rovolution\n *\n * =========================================================\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n.slider {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n}\n.slider.slider-horizontal {\n width: 210px;\n height: 20px;\n}\n.slider.slider-horizontal .slider-track {\n height: 10px;\n width: 100%;\n margin-top: -5px;\n top: 50%;\n left: 0;\n}\n.slider.slider-horizontal .slider-selection,\n.slider.slider-horizontal .slider-track-low,\n.slider.slider-horizontal .slider-track-high {\n height: 100%;\n top: 0;\n bottom: 0;\n}\n.slider.slider-horizontal .slider-tick,\n.slider.slider-horizontal .slider-handle {\n margin-left: -10px;\n margin-top: -5px;\n}\n.slider.slider-horizontal .slider-tick.triangle,\n.slider.slider-horizontal .slider-handle.triangle {\n border-width: 0 10px 10px 10px;\n width: 0;\n height: 0;\n border-bottom-color: #0480be;\n margin-top: 0;\n}\n.slider.slider-horizontal .slider-tick-label-container {\n white-space: nowrap;\n margin-top: 20px;\n}\n.slider.slider-horizontal .slider-tick-label-container .slider-tick-label {\n padding-top: 4px;\n display: inline-block;\n text-align: center;\n}\n.slider.slider-vertical {\n height: 210px;\n width: 20px;\n}\n.slider.slider-vertical .slider-track {\n width: 10px;\n height: 100%;\n margin-left: -5px;\n left: 50%;\n top: 0;\n}\n.slider.slider-vertical .slider-selection {\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n}\n.slider.slider-vertical .slider-track-low,\n.slider.slider-vertical .slider-track-high {\n width: 100%;\n left: 0;\n right: 0;\n}\n.slider.slider-vertical .slider-tick,\n.slider.slider-vertical .slider-handle {\n margin-left: -5px;\n margin-top: -10px;\n}\n.slider.slider-vertical .slider-tick.triangle,\n.slider.slider-vertical .slider-handle.triangle {\n border-width: 10px 0 10px 10px;\n width: 1px;\n height: 1px;\n border-left-color: #0480be;\n margin-left: 0;\n}\n.slider.slider-disabled .slider-handle {\n background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);\n background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);\n background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0);\n}\n.slider.slider-disabled .slider-track {\n background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);\n background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);\n background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0);\n cursor: not-allowed;\n}\n.slider input {\n display: none;\n}\n.slider .tooltip.top {\n margin-top: -36px;\n}\n.slider .tooltip-inner {\n white-space: nowrap;\n}\n.slider .hide {\n display: none;\n}\n.slider-track {\n position: absolute;\n cursor: pointer;\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n}\n.slider-selection {\n position: absolute;\n background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border-radius: 4px;\n}\n.slider-selection.tick-slider-selection {\n background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0);\n}\n.slider-track-low,\n.slider-track-high {\n position: absolute;\n background: transparent;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border-radius: 4px;\n}\n.slider-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-color: #337ab7;\n background-image: -webkit-linear-gradient(top, #149bdf 0%, #0480be 100%);\n background-image: -o-linear-gradient(top, #149bdf 0%, #0480be 100%);\n background-image: linear-gradient(to bottom, #149bdf 0%, #0480be 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);\n filter: none;\n -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n border: 0px solid transparent;\n}\n.slider-handle.round {\n border-radius: 50%;\n}\n.slider-handle.triangle {\n background: transparent none;\n}\n.slider-handle.custom {\n background: transparent none;\n}\n.slider-handle.custom::before {\n line-height: 20px;\n font-size: 20px;\n content: '\\2605';\n color: #726204;\n}\n.slider-tick {\n position: absolute;\n width: 20px;\n height: 20px;\n background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n filter: none;\n opacity: 0.8;\n border: 0px solid transparent;\n}\n.slider-tick.round {\n border-radius: 50%;\n}\n.slider-tick.triangle {\n background: transparent none;\n}\n.slider-tick.custom {\n background: transparent none;\n}\n.slider-tick.custom::before {\n line-height: 20px;\n font-size: 20px;\n content: '\\2605';\n color: #726204;\n}\n.slider-tick.in-selection {\n background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%);\n background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0);\n opacity: 1;\n}\n","@charset 'UTF-8';\n \n/* @FONT-FACE loads font into browser */\n@font-face {\n font-family: 'typicons';\n font-weight: normal;\n font-style: normal;\n src: url('typicons.eot');\n src: url('typicons.eot?#iefix') format('embedded-opentype'),\n url('typicons.woff') format('woff'),\n url('typicons.ttf') format('truetype'),\n url('typicons.svg#typicons') format('svg');\n}\n \n/* :before psuedo-selector inserts and styles icon */\n.typcn:before {\n font-family: 'typicons';\n font-style: normal;\n font-weight: normal;\n speak: none;\n display: inline-block;\n text-decoration: inherit;\n width: 1em;\n height: 1em;\n font-size: 1em;\n text-align: center;\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\n \n/* Code for individual icons */ \n.typcn-adjust-brightness:before { \n content: '\\e000'; /* '' */\n} \n.typcn-adjust-contrast:before { \n content: '\\e001'; /* '' */\n} \n.typcn-anchor-outline:before { \n content: '\\e002'; /* '' */\n} \n.typcn-anchor:before { \n content: '\\e003'; /* '' */\n} \n.typcn-archive:before { \n content: '\\e004'; /* '' */\n} \n.typcn-arrow-back-outline:before { \n content: '\\e005'; /* '' */\n} \n.typcn-arrow-back:before { \n content: '\\e006'; /* '' */\n} \n.typcn-arrow-down-outline:before { \n content: '\\e007'; /* '' */\n} \n.typcn-arrow-down-thick:before { \n content: '\\e008'; /* '' */\n} \n.typcn-arrow-down:before { \n content: '\\e009'; /* '' */\n} \n.typcn-arrow-forward-outline:before { \n content: '\\e00a'; /* '' */\n} \n.typcn-arrow-forward:before { \n content: '\\e00b'; /* '' */\n} \n.typcn-arrow-left-outline:before { \n content: '\\e00c'; /* '' */\n} \n.typcn-arrow-left-thick:before { \n content: '\\e00d'; /* '' */\n} \n.typcn-arrow-left:before { \n content: '\\e00e'; /* '' */\n} \n.typcn-arrow-loop-outline:before { \n content: '\\e00f'; /* '' */\n} \n.typcn-arrow-loop:before { \n content: '\\e010'; /* '' */\n} \n.typcn-arrow-maximise-outline:before { \n content: '\\e011'; /* '' */\n} \n.typcn-arrow-maximise:before { \n content: '\\e012'; /* '' */\n} \n.typcn-arrow-minimise-outline:before { \n content: '\\e013'; /* '' */\n} \n.typcn-arrow-minimise:before { \n content: '\\e014'; /* '' */\n} \n.typcn-arrow-move-outline:before { \n content: '\\e015'; /* '' */\n} \n.typcn-arrow-move:before { \n content: '\\e016'; /* '' */\n} \n.typcn-arrow-repeat-outline:before { \n content: '\\e017'; /* '' */\n} \n.typcn-arrow-repeat:before { \n content: '\\e018'; /* '' */\n} \n.typcn-arrow-right-outline:before { \n content: '\\e019'; /* '' */\n} \n.typcn-arrow-right-thick:before { \n content: '\\e01a'; /* '' */\n} \n.typcn-arrow-right:before { \n content: '\\e01b'; /* '' */\n} \n.typcn-arrow-shuffle:before { \n content: '\\e01c'; /* '' */\n} \n.typcn-arrow-sorted-down:before { \n content: '\\e01d'; /* '' */\n} \n.typcn-arrow-sorted-up:before { \n content: '\\e01e'; /* '' */\n} \n.typcn-arrow-sync-outline:before { \n content: '\\e01f'; /* '' */\n} \n.typcn-arrow-sync:before { \n content: '\\e020'; /* '' */\n} \n.typcn-arrow-unsorted:before { \n content: '\\e021'; /* '' */\n} \n.typcn-arrow-up-outline:before { \n content: '\\e022'; /* '' */\n} \n.typcn-arrow-up-thick:before { \n content: '\\e023'; /* '' */\n} \n.typcn-arrow-up:before { \n content: '\\e024'; /* '' */\n} \n.typcn-at:before { \n content: '\\e025'; /* '' */\n} \n.typcn-attachment-outline:before { \n content: '\\e026'; /* '' */\n} \n.typcn-attachment:before { \n content: '\\e027'; /* '' */\n} \n.typcn-backspace-outline:before { \n content: '\\e028'; /* '' */\n} \n.typcn-backspace:before { \n content: '\\e029'; /* '' */\n} \n.typcn-battery-charge:before { \n content: '\\e02a'; /* '' */\n} \n.typcn-battery-full:before { \n content: '\\e02b'; /* '' */\n} \n.typcn-battery-high:before { \n content: '\\e02c'; /* '' */\n} \n.typcn-battery-low:before { \n content: '\\e02d'; /* '' */\n} \n.typcn-battery-mid:before { \n content: '\\e02e'; /* '' */\n} \n.typcn-beaker:before { \n content: '\\e02f'; /* '' */\n} \n.typcn-beer:before { \n content: '\\e030'; /* '' */\n} \n.typcn-bell:before { \n content: '\\e031'; /* '' */\n} \n.typcn-book:before { \n content: '\\e032'; /* '' */\n} \n.typcn-bookmark:before { \n content: '\\e033'; /* '' */\n} \n.typcn-briefcase:before { \n content: '\\e034'; /* '' */\n} \n.typcn-brush:before { \n content: '\\e035'; /* '' */\n} \n.typcn-business-card:before { \n content: '\\e036'; /* '' */\n} \n.typcn-calculator:before { \n content: '\\e037'; /* '' */\n} \n.typcn-calendar-outline:before { \n content: '\\e038'; /* '' */\n} \n.typcn-calendar:before { \n content: '\\e039'; /* '' */\n} \n.typcn-camera-outline:before { \n content: '\\e03a'; /* '' */\n} \n.typcn-camera:before { \n content: '\\e03b'; /* '' */\n} \n.typcn-cancel-outline:before { \n content: '\\e03c'; /* '' */\n} \n.typcn-cancel:before { \n content: '\\e03d'; /* '' */\n} \n.typcn-chart-area-outline:before { \n content: '\\e03e'; /* '' */\n} \n.typcn-chart-area:before { \n content: '\\e03f'; /* '' */\n} \n.typcn-chart-bar-outline:before { \n content: '\\e040'; /* '' */\n} \n.typcn-chart-bar:before { \n content: '\\e041'; /* '' */\n} \n.typcn-chart-line-outline:before { \n content: '\\e042'; /* '' */\n} \n.typcn-chart-line:before { \n content: '\\e043'; /* '' */\n} \n.typcn-chart-pie-outline:before { \n content: '\\e044'; /* '' */\n} \n.typcn-chart-pie:before { \n content: '\\e045'; /* '' */\n} \n.typcn-chevron-left-outline:before { \n content: '\\e046'; /* '' */\n} \n.typcn-chevron-left:before { \n content: '\\e047'; /* '' */\n} \n.typcn-chevron-right-outline:before { \n content: '\\e048'; /* '' */\n} \n.typcn-chevron-right:before { \n content: '\\e049'; /* '' */\n} \n.typcn-clipboard:before { \n content: '\\e04a'; /* '' */\n} \n.typcn-cloud-storage:before { \n content: '\\e04b'; /* '' */\n} \n.typcn-cloud-storage-outline:before { \n content: '\\e054'; /* '' */\n} \n.typcn-code-outline:before { \n content: '\\e04c'; /* '' */\n} \n.typcn-code:before { \n content: '\\e04d'; /* '' */\n} \n.typcn-coffee:before { \n content: '\\e04e'; /* '' */\n} \n.typcn-cog-outline:before { \n content: '\\e04f'; /* '' */\n} \n.typcn-cog:before { \n content: '\\e050'; /* '' */\n} \n.typcn-compass:before { \n content: '\\e051'; /* '' */\n} \n.typcn-contacts:before { \n content: '\\e052'; /* '' */\n} \n.typcn-credit-card:before { \n content: '\\e053'; /* '' */\n} \n.typcn-css3:before { \n content: '\\e055'; /* '' */\n} \n.typcn-database:before { \n content: '\\e056'; /* '' */\n} \n.typcn-delete-outline:before { \n content: '\\e057'; /* '' */\n} \n.typcn-delete:before { \n content: '\\e058'; /* '' */\n} \n.typcn-device-desktop:before { \n content: '\\e059'; /* '' */\n} \n.typcn-device-laptop:before { \n content: '\\e05a'; /* '' */\n} \n.typcn-device-phone:before { \n content: '\\e05b'; /* '' */\n} \n.typcn-device-tablet:before { \n content: '\\e05c'; /* '' */\n} \n.typcn-directions:before { \n content: '\\e05d'; /* '' */\n} \n.typcn-divide-outline:before { \n content: '\\e05e'; /* '' */\n} \n.typcn-divide:before { \n content: '\\e05f'; /* '' */\n} \n.typcn-document-add:before { \n content: '\\e060'; /* '' */\n} \n.typcn-document-delete:before { \n content: '\\e061'; /* '' */\n} \n.typcn-document-text:before { \n content: '\\e062'; /* '' */\n} \n.typcn-document:before { \n content: '\\e063'; /* '' */\n} \n.typcn-download-outline:before { \n content: '\\e064'; /* '' */\n} \n.typcn-download:before { \n content: '\\e065'; /* '' */\n} \n.typcn-dropbox:before { \n content: '\\e066'; /* '' */\n} \n.typcn-edit:before { \n content: '\\e067'; /* '' */\n} \n.typcn-eject-outline:before { \n content: '\\e068'; /* '' */\n} \n.typcn-eject:before { \n content: '\\e069'; /* '' */\n} \n.typcn-equals-outline:before { \n content: '\\e06a'; /* '' */\n} \n.typcn-equals:before { \n content: '\\e06b'; /* '' */\n} \n.typcn-export-outline:before { \n content: '\\e06c'; /* '' */\n} \n.typcn-export:before { \n content: '\\e06d'; /* '' */\n} \n.typcn-eye-outline:before { \n content: '\\e06e'; /* '' */\n} \n.typcn-eye:before { \n content: '\\e06f'; /* '' */\n} \n.typcn-feather:before { \n content: '\\e070'; /* '' */\n} \n.typcn-film:before { \n content: '\\e071'; /* '' */\n} \n.typcn-filter:before { \n content: '\\e072'; /* '' */\n} \n.typcn-flag-outline:before { \n content: '\\e073'; /* '' */\n} \n.typcn-flag:before { \n content: '\\e074'; /* '' */\n} \n.typcn-flash-outline:before { \n content: '\\e075'; /* '' */\n} \n.typcn-flash:before { \n content: '\\e076'; /* '' */\n} \n.typcn-flow-children:before { \n content: '\\e077'; /* '' */\n} \n.typcn-flow-merge:before { \n content: '\\e078'; /* '' */\n} \n.typcn-flow-parallel:before { \n content: '\\e079'; /* '' */\n} \n.typcn-flow-switch:before { \n content: '\\e07a'; /* '' */\n} \n.typcn-folder-add:before { \n content: '\\e07b'; /* '' */\n} \n.typcn-folder-delete:before { \n content: '\\e07c'; /* '' */\n} \n.typcn-folder-open:before { \n content: '\\e07d'; /* '' */\n} \n.typcn-folder:before { \n content: '\\e07e'; /* '' */\n} \n.typcn-gift:before { \n content: '\\e07f'; /* '' */\n} \n.typcn-globe-outline:before { \n content: '\\e080'; /* '' */\n} \n.typcn-globe:before { \n content: '\\e081'; /* '' */\n} \n.typcn-group-outline:before { \n content: '\\e082'; /* '' */\n} \n.typcn-group:before { \n content: '\\e083'; /* '' */\n} \n.typcn-headphones:before { \n content: '\\e084'; /* '' */\n} \n.typcn-heart-full-outline:before { \n content: '\\e085'; /* '' */\n} \n.typcn-heart-half-outline:before { \n content: '\\e086'; /* '' */\n} \n.typcn-heart-outline:before { \n content: '\\e087'; /* '' */\n} \n.typcn-heart:before { \n content: '\\e088'; /* '' */\n} \n.typcn-home-outline:before { \n content: '\\e089'; /* '' */\n} \n.typcn-home:before { \n content: '\\e08a'; /* '' */\n} \n.typcn-html5:before { \n content: '\\e08b'; /* '' */\n} \n.typcn-image-outline:before { \n content: '\\e08c'; /* '' */\n} \n.typcn-image:before { \n content: '\\e08d'; /* '' */\n} \n.typcn-infinity-outline:before { \n content: '\\e08e'; /* '' */\n} \n.typcn-infinity:before { \n content: '\\e08f'; /* '' */\n} \n.typcn-info-large-outline:before { \n content: '\\e090'; /* '' */\n} \n.typcn-info-large:before { \n content: '\\e091'; /* '' */\n} \n.typcn-info-outline:before { \n content: '\\e092'; /* '' */\n} \n.typcn-info:before { \n content: '\\e093'; /* '' */\n} \n.typcn-input-checked-outline:before { \n content: '\\e094'; /* '' */\n} \n.typcn-input-checked:before { \n content: '\\e095'; /* '' */\n} \n.typcn-key-outline:before { \n content: '\\e096'; /* '' */\n} \n.typcn-key:before { \n content: '\\e097'; /* '' */\n} \n.typcn-keyboard:before { \n content: '\\e098'; /* '' */\n} \n.typcn-leaf:before { \n content: '\\e099'; /* '' */\n} \n.typcn-lightbulb:before { \n content: '\\e09a'; /* '' */\n} \n.typcn-link-outline:before { \n content: '\\e09b'; /* '' */\n} \n.typcn-link:before { \n content: '\\e09c'; /* '' */\n} \n.typcn-location-arrow-outline:before { \n content: '\\e09d'; /* '' */\n} \n.typcn-location-arrow:before { \n content: '\\e09e'; /* '' */\n} \n.typcn-location-outline:before { \n content: '\\e09f'; /* '' */\n} \n.typcn-location:before { \n content: '\\e0a0'; /* '' */\n} \n.typcn-lock-closed-outline:before { \n content: '\\e0a1'; /* '' */\n} \n.typcn-lock-closed:before { \n content: '\\e0a2'; /* '' */\n} \n.typcn-lock-open-outline:before { \n content: '\\e0a3'; /* '' */\n} \n.typcn-lock-open:before { \n content: '\\e0a4'; /* '' */\n} \n.typcn-mail:before { \n content: '\\e0a5'; /* '' */\n} \n.typcn-map:before { \n content: '\\e0a6'; /* '' */\n} \n.typcn-media-eject-outline:before { \n content: '\\e0a7'; /* '' */\n} \n.typcn-media-eject:before { \n content: '\\e0a8'; /* '' */\n} \n.typcn-media-fast-forward-outline:before { \n content: '\\e0a9'; /* '' */\n} \n.typcn-media-fast-forward:before { \n content: '\\e0aa'; /* '' */\n} \n.typcn-media-pause-outline:before { \n content: '\\e0ab'; /* '' */\n} \n.typcn-media-pause:before { \n content: '\\e0ac'; /* '' */\n} \n.typcn-media-play-outline:before { \n content: '\\e0ad'; /* '' */\n} \n.typcn-media-play-reverse-outline:before { \n content: '\\e0ae'; /* '' */\n} \n.typcn-media-play-reverse:before { \n content: '\\e0af'; /* '' */\n} \n.typcn-media-play:before { \n content: '\\e0b0'; /* '' */\n} \n.typcn-media-record-outline:before { \n content: '\\e0b1'; /* '' */\n} \n.typcn-media-record:before { \n content: '\\e0b2'; /* '' */\n} \n.typcn-media-rewind-outline:before { \n content: '\\e0b3'; /* '' */\n} \n.typcn-media-rewind:before { \n content: '\\e0b4'; /* '' */\n} \n.typcn-media-stop-outline:before { \n content: '\\e0b5'; /* '' */\n} \n.typcn-media-stop:before { \n content: '\\e0b6'; /* '' */\n} \n.typcn-message-typing:before { \n content: '\\e0b7'; /* '' */\n} \n.typcn-message:before { \n content: '\\e0b8'; /* '' */\n} \n.typcn-messages:before { \n content: '\\e0b9'; /* '' */\n} \n.typcn-microphone-outline:before { \n content: '\\e0ba'; /* '' */\n} \n.typcn-microphone:before { \n content: '\\e0bb'; /* '' */\n} \n.typcn-minus-outline:before { \n content: '\\e0bc'; /* '' */\n} \n.typcn-minus:before { \n content: '\\e0bd'; /* '' */\n} \n.typcn-mortar-board:before { \n content: '\\e0be'; /* '' */\n} \n.typcn-news:before { \n content: '\\e0bf'; /* '' */\n} \n.typcn-notes-outline:before { \n content: '\\e0c0'; /* '' */\n} \n.typcn-notes:before { \n content: '\\e0c1'; /* '' */\n} \n.typcn-pen:before { \n content: '\\e0c2'; /* '' */\n} \n.typcn-pencil:before { \n content: '\\e0c3'; /* '' */\n} \n.typcn-phone-outline:before { \n content: '\\e0c4'; /* '' */\n} \n.typcn-phone:before { \n content: '\\e0c5'; /* '' */\n} \n.typcn-pi-outline:before { \n content: '\\e0c6'; /* '' */\n} \n.typcn-pi:before { \n content: '\\e0c7'; /* '' */\n} \n.typcn-pin-outline:before { \n content: '\\e0c8'; /* '' */\n} \n.typcn-pin:before { \n content: '\\e0c9'; /* '' */\n} \n.typcn-pipette:before { \n content: '\\e0ca'; /* '' */\n} \n.typcn-plane-outline:before { \n content: '\\e0cb'; /* '' */\n} \n.typcn-plane:before { \n content: '\\e0cc'; /* '' */\n} \n.typcn-plug:before { \n content: '\\e0cd'; /* '' */\n} \n.typcn-plus-outline:before { \n content: '\\e0ce'; /* '' */\n} \n.typcn-plus:before { \n content: '\\e0cf'; /* '' */\n} \n.typcn-point-of-interest-outline:before { \n content: '\\e0d0'; /* '' */\n} \n.typcn-point-of-interest:before { \n content: '\\e0d1'; /* '' */\n} \n.typcn-power-outline:before { \n content: '\\e0d2'; /* '' */\n} \n.typcn-power:before { \n content: '\\e0d3'; /* '' */\n} \n.typcn-printer:before { \n content: '\\e0d4'; /* '' */\n} \n.typcn-puzzle-outline:before { \n content: '\\e0d5'; /* '' */\n} \n.typcn-puzzle:before { \n content: '\\e0d6'; /* '' */\n} \n.typcn-radar-outline:before { \n content: '\\e0d7'; /* '' */\n} \n.typcn-radar:before { \n content: '\\e0d8'; /* '' */\n} \n.typcn-refresh-outline:before { \n content: '\\e0d9'; /* '' */\n} \n.typcn-refresh:before { \n content: '\\e0da'; /* '' */\n} \n.typcn-rss-outline:before { \n content: '\\e0db'; /* '' */\n} \n.typcn-rss:before { \n content: '\\e0dc'; /* '' */\n} \n.typcn-scissors-outline:before { \n content: '\\e0dd'; /* '' */\n} \n.typcn-scissors:before { \n content: '\\e0de'; /* '' */\n} \n.typcn-shopping-bag:before { \n content: '\\e0df'; /* '' */\n} \n.typcn-shopping-cart:before { \n content: '\\e0e0'; /* '' */\n} \n.typcn-social-at-circular:before { \n content: '\\e0e1'; /* '' */\n} \n.typcn-social-dribbble-circular:before { \n content: '\\e0e2'; /* '' */\n} \n.typcn-social-dribbble:before { \n content: '\\e0e3'; /* '' */\n} \n.typcn-social-facebook-circular:before { \n content: '\\e0e4'; /* '' */\n} \n.typcn-social-facebook:before { \n content: '\\e0e5'; /* '' */\n} \n.typcn-social-flickr-circular:before { \n content: '\\e0e6'; /* '' */\n} \n.typcn-social-flickr:before { \n content: '\\e0e7'; /* '' */\n} \n.typcn-social-github-circular:before { \n content: '\\e0e8'; /* '' */\n} \n.typcn-social-github:before { \n content: '\\e0e9'; /* '' */\n} \n.typcn-social-google-plus-circular:before { \n content: '\\e0ea'; /* '' */\n} \n.typcn-social-google-plus:before { \n content: '\\e0eb'; /* '' */\n} \n.typcn-social-instagram-circular:before { \n content: '\\e0ec'; /* '' */\n} \n.typcn-social-instagram:before { \n content: '\\e0ed'; /* '' */\n} \n.typcn-social-last-fm-circular:before { \n content: '\\e0ee'; /* '' */\n} \n.typcn-social-last-fm:before { \n content: '\\e0ef'; /* '' */\n} \n.typcn-social-linkedin-circular:before { \n content: '\\e0f0'; /* '' */\n} \n.typcn-social-linkedin:before { \n content: '\\e0f1'; /* '' */\n} \n.typcn-social-pinterest-circular:before { \n content: '\\e0f2'; /* '' */\n} \n.typcn-social-pinterest:before { \n content: '\\e0f3'; /* '' */\n} \n.typcn-social-skype-outline:before { \n content: '\\e0f4'; /* '' */\n} \n.typcn-social-skype:before { \n content: '\\e0f5'; /* '' */\n} \n.typcn-social-tumbler-circular:before { \n content: '\\e0f6'; /* '' */\n} \n.typcn-social-tumbler:before { \n content: '\\e0f7'; /* '' */\n} \n.typcn-social-twitter-circular:before { \n content: '\\e0f8'; /* '' */\n} \n.typcn-social-twitter:before { \n content: '\\e0f9'; /* '' */\n} \n.typcn-social-vimeo-circular:before { \n content: '\\e0fa'; /* '' */\n} \n.typcn-social-vimeo:before { \n content: '\\e0fb'; /* '' */\n} \n.typcn-social-youtube-circular:before { \n content: '\\e0fc'; /* '' */\n} \n.typcn-social-youtube:before { \n content: '\\e0fd'; /* '' */\n} \n.typcn-sort-alphabetically-outline:before { \n content: '\\e0fe'; /* '' */\n} \n.typcn-sort-alphabetically:before { \n content: '\\e0ff'; /* '' */\n} \n.typcn-sort-numerically-outline:before { \n content: '\\e100'; /* '' */\n} \n.typcn-sort-numerically:before { \n content: '\\e101'; /* '' */\n} \n.typcn-spanner-outline:before { \n content: '\\e102'; /* '' */\n} \n.typcn-spanner:before { \n content: '\\e103'; /* '' */\n} \n.typcn-spiral:before { \n content: '\\e104'; /* '' */\n} \n.typcn-star-full-outline:before { \n content: '\\e105'; /* '' */\n} \n.typcn-star-half-outline:before { \n content: '\\e106'; /* '' */\n} \n.typcn-star-half:before { \n content: '\\e107'; /* '' */\n} \n.typcn-star-outline:before { \n content: '\\e108'; /* '' */\n} \n.typcn-star:before { \n content: '\\e109'; /* '' */\n} \n.typcn-starburst-outline:before { \n content: '\\e10a'; /* '' */\n} \n.typcn-starburst:before { \n content: '\\e10b'; /* '' */\n} \n.typcn-stopwatch:before { \n content: '\\e10c'; /* '' */\n} \n.typcn-support:before { \n content: '\\e10d'; /* '' */\n} \n.typcn-tabs-outline:before { \n content: '\\e10e'; /* '' */\n} \n.typcn-tag:before { \n content: '\\e10f'; /* '' */\n} \n.typcn-tags:before { \n content: '\\e110'; /* '' */\n} \n.typcn-th-large-outline:before { \n content: '\\e111'; /* '' */\n} \n.typcn-th-large:before { \n content: '\\e112'; /* '' */\n} \n.typcn-th-list-outline:before { \n content: '\\e113'; /* '' */\n} \n.typcn-th-list:before { \n content: '\\e114'; /* '' */\n} \n.typcn-th-menu-outline:before { \n content: '\\e115'; /* '' */\n} \n.typcn-th-menu:before { \n content: '\\e116'; /* '' */\n} \n.typcn-th-small-outline:before { \n content: '\\e117'; /* '' */\n} \n.typcn-th-small:before { \n content: '\\e118'; /* '' */\n} \n.typcn-thermometer:before { \n content: '\\e119'; /* '' */\n} \n.typcn-thumbs-down:before { \n content: '\\e11a'; /* '' */\n} \n.typcn-thumbs-ok:before { \n content: '\\e11b'; /* '' */\n} \n.typcn-thumbs-up:before { \n content: '\\e11c'; /* '' */\n} \n.typcn-tick-outline:before { \n content: '\\e11d'; /* '' */\n} \n.typcn-tick:before { \n content: '\\e11e'; /* '' */\n} \n.typcn-ticket:before { \n content: '\\e11f'; /* '' */\n} \n.typcn-time:before { \n content: '\\e120'; /* '' */\n} \n.typcn-times-outline:before { \n content: '\\e121'; /* '' */\n} \n.typcn-times:before { \n content: '\\e122'; /* '' */\n} \n.typcn-trash:before { \n content: '\\e123'; /* '' */\n} \n.typcn-tree:before { \n content: '\\e124'; /* '' */\n} \n.typcn-upload-outline:before { \n content: '\\e125'; /* '' */\n} \n.typcn-upload:before { \n content: '\\e126'; /* '' */\n} \n.typcn-user-add-outline:before { \n content: '\\e127'; /* '' */\n} \n.typcn-user-add:before { \n content: '\\e128'; /* '' */\n} \n.typcn-user-delete-outline:before { \n content: '\\e129'; /* '' */\n} \n.typcn-user-delete:before { \n content: '\\e12a'; /* '' */\n} \n.typcn-user-outline:before { \n content: '\\e12b'; /* '' */\n} \n.typcn-user:before { \n content: '\\e12c'; /* '' */\n} \n.typcn-vendor-android:before { \n content: '\\e12d'; /* '' */\n} \n.typcn-vendor-apple:before { \n content: '\\e12e'; /* '' */\n} \n.typcn-vendor-microsoft:before { \n content: '\\e12f'; /* '' */\n} \n.typcn-video-outline:before { \n content: '\\e130'; /* '' */\n} \n.typcn-video:before { \n content: '\\e131'; /* '' */\n} \n.typcn-volume-down:before { \n content: '\\e132'; /* '' */\n} \n.typcn-volume-mute:before { \n content: '\\e133'; /* '' */\n} \n.typcn-volume-up:before { \n content: '\\e134'; /* '' */\n} \n.typcn-volume:before { \n content: '\\e135'; /* '' */\n} \n.typcn-warning-outline:before { \n content: '\\e136'; /* '' */\n} \n.typcn-warning:before { \n content: '\\e137'; /* '' */\n} \n.typcn-watch:before { \n content: '\\e138'; /* '' */\n} \n.typcn-waves-outline:before { \n content: '\\e139'; /* '' */\n} \n.typcn-waves:before { \n content: '\\e13a'; /* '' */\n} \n.typcn-weather-cloudy:before { \n content: '\\e13b'; /* '' */\n} \n.typcn-weather-downpour:before { \n content: '\\e13c'; /* '' */\n} \n.typcn-weather-night:before { \n content: '\\e13d'; /* '' */\n} \n.typcn-weather-partly-sunny:before { \n content: '\\e13e'; /* '' */\n} \n.typcn-weather-shower:before { \n content: '\\e13f'; /* '' */\n} \n.typcn-weather-snow:before { \n content: '\\e140'; /* '' */\n} \n.typcn-weather-stormy:before { \n content: '\\e141'; /* '' */\n} \n.typcn-weather-sunny:before { \n content: '\\e142'; /* '' */\n} \n.typcn-weather-windy-cloudy:before { \n content: '\\e143'; /* '' */\n} \n.typcn-weather-windy:before { \n content: '\\e144'; /* '' */\n} \n.typcn-wi-fi-outline:before { \n content: '\\e145'; /* '' */\n} \n.typcn-wi-fi:before { \n content: '\\e146'; /* '' */\n} \n.typcn-wine:before { \n content: '\\e147'; /* '' */\n} \n.typcn-world-outline:before { \n content: '\\e148'; /* '' */\n} \n.typcn-world:before { \n content: '\\e149'; /* '' */\n} \n.typcn-zoom-in-outline:before { \n content: '\\e14a'; /* '' */\n} \n.typcn-zoom-in:before { \n content: '\\e14b'; /* '' */\n} \n.typcn-zoom-out-outline:before { \n content: '\\e14c'; /* '' */\n} \n.typcn-zoom-out:before { \n content: '\\e14d'; /* '' */\n} \n.typcn-zoom-outline:before { \n content: '\\e14e'; /* '' */\n} \n.typcn-zoom:before { \n content: '\\e14f'; /* '' */\n}","/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n font-family: 'FontAwesome';\n src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');\n src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n.fa {\n display: inline-block;\n font: normal normal normal 14px/1 FontAwesome;\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n font-size: 1.33333333em;\n line-height: 0.75em;\n vertical-align: -15%;\n}\n.fa-2x {\n font-size: 2em;\n}\n.fa-3x {\n font-size: 3em;\n}\n.fa-4x {\n font-size: 4em;\n}\n.fa-5x {\n font-size: 5em;\n}\n.fa-fw {\n width: 1.28571429em;\n text-align: center;\n}\n.fa-ul {\n padding-left: 0;\n margin-left: 2.14285714em;\n list-style-type: none;\n}\n.fa-ul > li {\n position: relative;\n}\n.fa-li {\n position: absolute;\n left: -2.14285714em;\n width: 2.14285714em;\n top: 0.14285714em;\n text-align: center;\n}\n.fa-li.fa-lg {\n left: -1.85714286em;\n}\n.fa-border {\n padding: .2em .25em .15em;\n border: solid 0.08em #eee;\n border-radius: .1em;\n}\n.fa-pull-left {\n float: left;\n}\n.fa-pull-right {\n float: right;\n}\n.fa.fa-pull-left {\n margin-right: .3em;\n}\n.fa.fa-pull-right {\n margin-left: .3em;\n}\n/* Deprecated as of 4.4.0 */\n.pull-right {\n float: right;\n}\n.pull-left {\n float: left;\n}\n.fa.pull-left {\n margin-right: .3em;\n}\n.fa.pull-right {\n margin-left: .3em;\n}\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n -ms-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n -ms-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n filter: none;\n}\n.fa-stack {\n position: relative;\n display: inline-block;\n width: 2em;\n height: 2em;\n line-height: 2em;\n vertical-align: middle;\n}\n.fa-stack-1x,\n.fa-stack-2x {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center;\n}\n.fa-stack-1x {\n line-height: inherit;\n}\n.fa-stack-2x {\n font-size: 2em;\n}\n.fa-inverse {\n color: #fff;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n readers do not read off random characters that represent icons */\n.fa-glass:before {\n content: \"\\f000\";\n}\n.fa-music:before {\n content: \"\\f001\";\n}\n.fa-search:before {\n content: \"\\f002\";\n}\n.fa-envelope-o:before {\n content: \"\\f003\";\n}\n.fa-heart:before {\n content: \"\\f004\";\n}\n.fa-star:before {\n content: \"\\f005\";\n}\n.fa-star-o:before {\n content: \"\\f006\";\n}\n.fa-user:before {\n content: \"\\f007\";\n}\n.fa-film:before {\n content: \"\\f008\";\n}\n.fa-th-large:before {\n content: \"\\f009\";\n}\n.fa-th:before {\n content: \"\\f00a\";\n}\n.fa-th-list:before {\n content: \"\\f00b\";\n}\n.fa-check:before {\n content: \"\\f00c\";\n}\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n content: \"\\f00d\";\n}\n.fa-search-plus:before {\n content: \"\\f00e\";\n}\n.fa-search-minus:before {\n content: \"\\f010\";\n}\n.fa-power-off:before {\n content: \"\\f011\";\n}\n.fa-signal:before {\n content: \"\\f012\";\n}\n.fa-gear:before,\n.fa-cog:before {\n content: \"\\f013\";\n}\n.fa-trash-o:before {\n content: \"\\f014\";\n}\n.fa-home:before {\n content: \"\\f015\";\n}\n.fa-file-o:before {\n content: \"\\f016\";\n}\n.fa-clock-o:before {\n content: \"\\f017\";\n}\n.fa-road:before {\n content: \"\\f018\";\n}\n.fa-download:before {\n content: \"\\f019\";\n}\n.fa-arrow-circle-o-down:before {\n content: \"\\f01a\";\n}\n.fa-arrow-circle-o-up:before {\n content: \"\\f01b\";\n}\n.fa-inbox:before {\n content: \"\\f01c\";\n}\n.fa-play-circle-o:before {\n content: \"\\f01d\";\n}\n.fa-rotate-right:before,\n.fa-repeat:before {\n content: \"\\f01e\";\n}\n.fa-refresh:before {\n content: \"\\f021\";\n}\n.fa-list-alt:before {\n content: \"\\f022\";\n}\n.fa-lock:before {\n content: \"\\f023\";\n}\n.fa-flag:before {\n content: \"\\f024\";\n}\n.fa-headphones:before {\n content: \"\\f025\";\n}\n.fa-volume-off:before {\n content: \"\\f026\";\n}\n.fa-volume-down:before {\n content: \"\\f027\";\n}\n.fa-volume-up:before {\n content: \"\\f028\";\n}\n.fa-qrcode:before {\n content: \"\\f029\";\n}\n.fa-barcode:before {\n content: \"\\f02a\";\n}\n.fa-tag:before {\n content: \"\\f02b\";\n}\n.fa-tags:before {\n content: \"\\f02c\";\n}\n.fa-book:before {\n content: \"\\f02d\";\n}\n.fa-bookmark:before {\n content: \"\\f02e\";\n}\n.fa-print:before {\n content: \"\\f02f\";\n}\n.fa-camera:before {\n content: \"\\f030\";\n}\n.fa-font:before {\n content: \"\\f031\";\n}\n.fa-bold:before {\n content: \"\\f032\";\n}\n.fa-italic:before {\n content: \"\\f033\";\n}\n.fa-text-height:before {\n content: \"\\f034\";\n}\n.fa-text-width:before {\n content: \"\\f035\";\n}\n.fa-align-left:before {\n content: \"\\f036\";\n}\n.fa-align-center:before {\n content: \"\\f037\";\n}\n.fa-align-right:before {\n content: \"\\f038\";\n}\n.fa-align-justify:before {\n content: \"\\f039\";\n}\n.fa-list:before {\n content: \"\\f03a\";\n}\n.fa-dedent:before,\n.fa-outdent:before {\n content: \"\\f03b\";\n}\n.fa-indent:before {\n content: \"\\f03c\";\n}\n.fa-video-camera:before {\n content: \"\\f03d\";\n}\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n content: \"\\f03e\";\n}\n.fa-pencil:before {\n content: \"\\f040\";\n}\n.fa-map-marker:before {\n content: \"\\f041\";\n}\n.fa-adjust:before {\n content: \"\\f042\";\n}\n.fa-tint:before {\n content: \"\\f043\";\n}\n.fa-edit:before,\n.fa-pencil-square-o:before {\n content: \"\\f044\";\n}\n.fa-share-square-o:before {\n content: \"\\f045\";\n}\n.fa-check-square-o:before {\n content: \"\\f046\";\n}\n.fa-arrows:before {\n content: \"\\f047\";\n}\n.fa-step-backward:before {\n content: \"\\f048\";\n}\n.fa-fast-backward:before {\n content: \"\\f049\";\n}\n.fa-backward:before {\n content: \"\\f04a\";\n}\n.fa-play:before {\n content: \"\\f04b\";\n}\n.fa-pause:before {\n content: \"\\f04c\";\n}\n.fa-stop:before {\n content: \"\\f04d\";\n}\n.fa-forward:before {\n content: \"\\f04e\";\n}\n.fa-fast-forward:before {\n content: \"\\f050\";\n}\n.fa-step-forward:before {\n content: \"\\f051\";\n}\n.fa-eject:before {\n content: \"\\f052\";\n}\n.fa-chevron-left:before {\n content: \"\\f053\";\n}\n.fa-chevron-right:before {\n content: \"\\f054\";\n}\n.fa-plus-circle:before {\n content: \"\\f055\";\n}\n.fa-minus-circle:before {\n content: \"\\f056\";\n}\n.fa-times-circle:before {\n content: \"\\f057\";\n}\n.fa-check-circle:before {\n content: \"\\f058\";\n}\n.fa-question-circle:before {\n content: \"\\f059\";\n}\n.fa-info-circle:before {\n content: \"\\f05a\";\n}\n.fa-crosshairs:before {\n content: \"\\f05b\";\n}\n.fa-times-circle-o:before {\n content: \"\\f05c\";\n}\n.fa-check-circle-o:before {\n content: \"\\f05d\";\n}\n.fa-ban:before {\n content: \"\\f05e\";\n}\n.fa-arrow-left:before {\n content: \"\\f060\";\n}\n.fa-arrow-right:before {\n content: \"\\f061\";\n}\n.fa-arrow-up:before {\n content: \"\\f062\";\n}\n.fa-arrow-down:before {\n content: \"\\f063\";\n}\n.fa-mail-forward:before,\n.fa-share:before {\n content: \"\\f064\";\n}\n.fa-expand:before {\n content: \"\\f065\";\n}\n.fa-compress:before {\n content: \"\\f066\";\n}\n.fa-plus:before {\n content: \"\\f067\";\n}\n.fa-minus:before {\n content: \"\\f068\";\n}\n.fa-asterisk:before {\n content: \"\\f069\";\n}\n.fa-exclamation-circle:before {\n content: \"\\f06a\";\n}\n.fa-gift:before {\n content: \"\\f06b\";\n}\n.fa-leaf:before {\n content: \"\\f06c\";\n}\n.fa-fire:before {\n content: \"\\f06d\";\n}\n.fa-eye:before {\n content: \"\\f06e\";\n}\n.fa-eye-slash:before {\n content: \"\\f070\";\n}\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n content: \"\\f071\";\n}\n.fa-plane:before {\n content: \"\\f072\";\n}\n.fa-calendar:before {\n content: \"\\f073\";\n}\n.fa-random:before {\n content: \"\\f074\";\n}\n.fa-comment:before {\n content: \"\\f075\";\n}\n.fa-magnet:before {\n content: \"\\f076\";\n}\n.fa-chevron-up:before {\n content: \"\\f077\";\n}\n.fa-chevron-down:before {\n content: \"\\f078\";\n}\n.fa-retweet:before {\n content: \"\\f079\";\n}\n.fa-shopping-cart:before {\n content: \"\\f07a\";\n}\n.fa-folder:before {\n content: \"\\f07b\";\n}\n.fa-folder-open:before {\n content: \"\\f07c\";\n}\n.fa-arrows-v:before {\n content: \"\\f07d\";\n}\n.fa-arrows-h:before {\n content: \"\\f07e\";\n}\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n content: \"\\f080\";\n}\n.fa-twitter-square:before {\n content: \"\\f081\";\n}\n.fa-facebook-square:before {\n content: \"\\f082\";\n}\n.fa-camera-retro:before {\n content: \"\\f083\";\n}\n.fa-key:before {\n content: \"\\f084\";\n}\n.fa-gears:before,\n.fa-cogs:before {\n content: \"\\f085\";\n}\n.fa-comments:before {\n content: \"\\f086\";\n}\n.fa-thumbs-o-up:before {\n content: \"\\f087\";\n}\n.fa-thumbs-o-down:before {\n content: \"\\f088\";\n}\n.fa-star-half:before {\n content: \"\\f089\";\n}\n.fa-heart-o:before {\n content: \"\\f08a\";\n}\n.fa-sign-out:before {\n content: \"\\f08b\";\n}\n.fa-linkedin-square:before {\n content: \"\\f08c\";\n}\n.fa-thumb-tack:before {\n content: \"\\f08d\";\n}\n.fa-external-link:before {\n content: \"\\f08e\";\n}\n.fa-sign-in:before {\n content: \"\\f090\";\n}\n.fa-trophy:before {\n content: \"\\f091\";\n}\n.fa-github-square:before {\n content: \"\\f092\";\n}\n.fa-upload:before {\n content: \"\\f093\";\n}\n.fa-lemon-o:before {\n content: \"\\f094\";\n}\n.fa-phone:before {\n content: \"\\f095\";\n}\n.fa-square-o:before {\n content: \"\\f096\";\n}\n.fa-bookmark-o:before {\n content: \"\\f097\";\n}\n.fa-phone-square:before {\n content: \"\\f098\";\n}\n.fa-twitter:before {\n content: \"\\f099\";\n}\n.fa-facebook-f:before,\n.fa-facebook:before {\n content: \"\\f09a\";\n}\n.fa-github:before {\n content: \"\\f09b\";\n}\n.fa-unlock:before {\n content: \"\\f09c\";\n}\n.fa-credit-card:before {\n content: \"\\f09d\";\n}\n.fa-feed:before,\n.fa-rss:before {\n content: \"\\f09e\";\n}\n.fa-hdd-o:before {\n content: \"\\f0a0\";\n}\n.fa-bullhorn:before {\n content: \"\\f0a1\";\n}\n.fa-bell:before {\n content: \"\\f0f3\";\n}\n.fa-certificate:before {\n content: \"\\f0a3\";\n}\n.fa-hand-o-right:before {\n content: \"\\f0a4\";\n}\n.fa-hand-o-left:before {\n content: \"\\f0a5\";\n}\n.fa-hand-o-up:before {\n content: \"\\f0a6\";\n}\n.fa-hand-o-down:before {\n content: \"\\f0a7\";\n}\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\";\n}\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\";\n}\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\";\n}\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\";\n}\n.fa-globe:before {\n content: \"\\f0ac\";\n}\n.fa-wrench:before {\n content: \"\\f0ad\";\n}\n.fa-tasks:before {\n content: \"\\f0ae\";\n}\n.fa-filter:before {\n content: \"\\f0b0\";\n}\n.fa-briefcase:before {\n content: \"\\f0b1\";\n}\n.fa-arrows-alt:before {\n content: \"\\f0b2\";\n}\n.fa-group:before,\n.fa-users:before {\n content: \"\\f0c0\";\n}\n.fa-chain:before,\n.fa-link:before {\n content: \"\\f0c1\";\n}\n.fa-cloud:before {\n content: \"\\f0c2\";\n}\n.fa-flask:before {\n content: \"\\f0c3\";\n}\n.fa-cut:before,\n.fa-scissors:before {\n content: \"\\f0c4\";\n}\n.fa-copy:before,\n.fa-files-o:before {\n content: \"\\f0c5\";\n}\n.fa-paperclip:before {\n content: \"\\f0c6\";\n}\n.fa-save:before,\n.fa-floppy-o:before {\n content: \"\\f0c7\";\n}\n.fa-square:before {\n content: \"\\f0c8\";\n}\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n content: \"\\f0c9\";\n}\n.fa-list-ul:before {\n content: \"\\f0ca\";\n}\n.fa-list-ol:before {\n content: \"\\f0cb\";\n}\n.fa-strikethrough:before {\n content: \"\\f0cc\";\n}\n.fa-underline:before {\n content: \"\\f0cd\";\n}\n.fa-table:before {\n content: \"\\f0ce\";\n}\n.fa-magic:before {\n content: \"\\f0d0\";\n}\n.fa-truck:before {\n content: \"\\f0d1\";\n}\n.fa-pinterest:before {\n content: \"\\f0d2\";\n}\n.fa-pinterest-square:before {\n content: \"\\f0d3\";\n}\n.fa-google-plus-square:before {\n content: \"\\f0d4\";\n}\n.fa-google-plus:before {\n content: \"\\f0d5\";\n}\n.fa-money:before {\n content: \"\\f0d6\";\n}\n.fa-caret-down:before {\n content: \"\\f0d7\";\n}\n.fa-caret-up:before {\n content: \"\\f0d8\";\n}\n.fa-caret-left:before {\n content: \"\\f0d9\";\n}\n.fa-caret-right:before {\n content: \"\\f0da\";\n}\n.fa-columns:before {\n content: \"\\f0db\";\n}\n.fa-unsorted:before,\n.fa-sort:before {\n content: \"\\f0dc\";\n}\n.fa-sort-down:before,\n.fa-sort-desc:before {\n content: \"\\f0dd\";\n}\n.fa-sort-up:before,\n.fa-sort-asc:before {\n content: \"\\f0de\";\n}\n.fa-envelope:before {\n content: \"\\f0e0\";\n}\n.fa-linkedin:before {\n content: \"\\f0e1\";\n}\n.fa-rotate-left:before,\n.fa-undo:before {\n content: \"\\f0e2\";\n}\n.fa-legal:before,\n.fa-gavel:before {\n content: \"\\f0e3\";\n}\n.fa-dashboard:before,\n.fa-tachometer:before {\n content: \"\\f0e4\";\n}\n.fa-comment-o:before {\n content: \"\\f0e5\";\n}\n.fa-comments-o:before {\n content: \"\\f0e6\";\n}\n.fa-flash:before,\n.fa-bolt:before {\n content: \"\\f0e7\";\n}\n.fa-sitemap:before {\n content: \"\\f0e8\";\n}\n.fa-umbrella:before {\n content: \"\\f0e9\";\n}\n.fa-paste:before,\n.fa-clipboard:before {\n content: \"\\f0ea\";\n}\n.fa-lightbulb-o:before {\n content: \"\\f0eb\";\n}\n.fa-exchange:before {\n content: \"\\f0ec\";\n}\n.fa-cloud-download:before {\n content: \"\\f0ed\";\n}\n.fa-cloud-upload:before {\n content: \"\\f0ee\";\n}\n.fa-user-md:before {\n content: \"\\f0f0\";\n}\n.fa-stethoscope:before {\n content: \"\\f0f1\";\n}\n.fa-suitcase:before {\n content: \"\\f0f2\";\n}\n.fa-bell-o:before {\n content: \"\\f0a2\";\n}\n.fa-coffee:before {\n content: \"\\f0f4\";\n}\n.fa-cutlery:before {\n content: \"\\f0f5\";\n}\n.fa-file-text-o:before {\n content: \"\\f0f6\";\n}\n.fa-building-o:before {\n content: \"\\f0f7\";\n}\n.fa-hospital-o:before {\n content: \"\\f0f8\";\n}\n.fa-ambulance:before {\n content: \"\\f0f9\";\n}\n.fa-medkit:before {\n content: \"\\f0fa\";\n}\n.fa-fighter-jet:before {\n content: \"\\f0fb\";\n}\n.fa-beer:before {\n content: \"\\f0fc\";\n}\n.fa-h-square:before {\n content: \"\\f0fd\";\n}\n.fa-plus-square:before {\n content: \"\\f0fe\";\n}\n.fa-angle-double-left:before {\n content: \"\\f100\";\n}\n.fa-angle-double-right:before {\n content: \"\\f101\";\n}\n.fa-angle-double-up:before {\n content: \"\\f102\";\n}\n.fa-angle-double-down:before {\n content: \"\\f103\";\n}\n.fa-angle-left:before {\n content: \"\\f104\";\n}\n.fa-angle-right:before {\n content: \"\\f105\";\n}\n.fa-angle-up:before {\n content: \"\\f106\";\n}\n.fa-angle-down:before {\n content: \"\\f107\";\n}\n.fa-desktop:before {\n content: \"\\f108\";\n}\n.fa-laptop:before {\n content: \"\\f109\";\n}\n.fa-tablet:before {\n content: \"\\f10a\";\n}\n.fa-mobile-phone:before,\n.fa-mobile:before {\n content: \"\\f10b\";\n}\n.fa-circle-o:before {\n content: \"\\f10c\";\n}\n.fa-quote-left:before {\n content: \"\\f10d\";\n}\n.fa-quote-right:before {\n content: \"\\f10e\";\n}\n.fa-spinner:before {\n content: \"\\f110\";\n}\n.fa-circle:before {\n content: \"\\f111\";\n}\n.fa-mail-reply:before,\n.fa-reply:before {\n content: \"\\f112\";\n}\n.fa-github-alt:before {\n content: \"\\f113\";\n}\n.fa-folder-o:before {\n content: \"\\f114\";\n}\n.fa-folder-open-o:before {\n content: \"\\f115\";\n}\n.fa-smile-o:before {\n content: \"\\f118\";\n}\n.fa-frown-o:before {\n content: \"\\f119\";\n}\n.fa-meh-o:before {\n content: \"\\f11a\";\n}\n.fa-gamepad:before {\n content: \"\\f11b\";\n}\n.fa-keyboard-o:before {\n content: \"\\f11c\";\n}\n.fa-flag-o:before {\n content: \"\\f11d\";\n}\n.fa-flag-checkered:before {\n content: \"\\f11e\";\n}\n.fa-terminal:before {\n content: \"\\f120\";\n}\n.fa-code:before {\n content: \"\\f121\";\n}\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n content: \"\\f122\";\n}\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n content: \"\\f123\";\n}\n.fa-location-arrow:before {\n content: \"\\f124\";\n}\n.fa-crop:before {\n content: \"\\f125\";\n}\n.fa-code-fork:before {\n content: \"\\f126\";\n}\n.fa-unlink:before,\n.fa-chain-broken:before {\n content: \"\\f127\";\n}\n.fa-question:before {\n content: \"\\f128\";\n}\n.fa-info:before {\n content: \"\\f129\";\n}\n.fa-exclamation:before {\n content: \"\\f12a\";\n}\n.fa-superscript:before {\n content: \"\\f12b\";\n}\n.fa-subscript:before {\n content: \"\\f12c\";\n}\n.fa-eraser:before {\n content: \"\\f12d\";\n}\n.fa-puzzle-piece:before {\n content: \"\\f12e\";\n}\n.fa-microphone:before {\n content: \"\\f130\";\n}\n.fa-microphone-slash:before {\n content: \"\\f131\";\n}\n.fa-shield:before {\n content: \"\\f132\";\n}\n.fa-calendar-o:before {\n content: \"\\f133\";\n}\n.fa-fire-extinguisher:before {\n content: \"\\f134\";\n}\n.fa-rocket:before {\n content: \"\\f135\";\n}\n.fa-maxcdn:before {\n content: \"\\f136\";\n}\n.fa-chevron-circle-left:before {\n content: \"\\f137\";\n}\n.fa-chevron-circle-right:before {\n content: \"\\f138\";\n}\n.fa-chevron-circle-up:before {\n content: \"\\f139\";\n}\n.fa-chevron-circle-down:before {\n content: \"\\f13a\";\n}\n.fa-html5:before {\n content: \"\\f13b\";\n}\n.fa-css3:before {\n content: \"\\f13c\";\n}\n.fa-anchor:before {\n content: \"\\f13d\";\n}\n.fa-unlock-alt:before {\n content: \"\\f13e\";\n}\n.fa-bullseye:before {\n content: \"\\f140\";\n}\n.fa-ellipsis-h:before {\n content: \"\\f141\";\n}\n.fa-ellipsis-v:before {\n content: \"\\f142\";\n}\n.fa-rss-square:before {\n content: \"\\f143\";\n}\n.fa-play-circle:before {\n content: \"\\f144\";\n}\n.fa-ticket:before {\n content: \"\\f145\";\n}\n.fa-minus-square:before {\n content: \"\\f146\";\n}\n.fa-minus-square-o:before {\n content: \"\\f147\";\n}\n.fa-level-up:before {\n content: \"\\f148\";\n}\n.fa-level-down:before {\n content: \"\\f149\";\n}\n.fa-check-square:before {\n content: \"\\f14a\";\n}\n.fa-pencil-square:before {\n content: \"\\f14b\";\n}\n.fa-external-link-square:before {\n content: \"\\f14c\";\n}\n.fa-share-square:before {\n content: \"\\f14d\";\n}\n.fa-compass:before {\n content: \"\\f14e\";\n}\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n content: \"\\f150\";\n}\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n content: \"\\f151\";\n}\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n content: \"\\f152\";\n}\n.fa-euro:before,\n.fa-eur:before {\n content: \"\\f153\";\n}\n.fa-gbp:before {\n content: \"\\f154\";\n}\n.fa-dollar:before,\n.fa-usd:before {\n content: \"\\f155\";\n}\n.fa-rupee:before,\n.fa-inr:before {\n content: \"\\f156\";\n}\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n content: \"\\f157\";\n}\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n content: \"\\f158\";\n}\n.fa-won:before,\n.fa-krw:before {\n content: \"\\f159\";\n}\n.fa-bitcoin:before,\n.fa-btc:before {\n content: \"\\f15a\";\n}\n.fa-file:before {\n content: \"\\f15b\";\n}\n.fa-file-text:before {\n content: \"\\f15c\";\n}\n.fa-sort-alpha-asc:before {\n content: \"\\f15d\";\n}\n.fa-sort-alpha-desc:before {\n content: \"\\f15e\";\n}\n.fa-sort-amount-asc:before {\n content: \"\\f160\";\n}\n.fa-sort-amount-desc:before {\n content: \"\\f161\";\n}\n.fa-sort-numeric-asc:before {\n content: \"\\f162\";\n}\n.fa-sort-numeric-desc:before {\n content: \"\\f163\";\n}\n.fa-thumbs-up:before {\n content: \"\\f164\";\n}\n.fa-thumbs-down:before {\n content: \"\\f165\";\n}\n.fa-youtube-square:before {\n content: \"\\f166\";\n}\n.fa-youtube:before {\n content: \"\\f167\";\n}\n.fa-xing:before {\n content: \"\\f168\";\n}\n.fa-xing-square:before {\n content: \"\\f169\";\n}\n.fa-youtube-play:before {\n content: \"\\f16a\";\n}\n.fa-dropbox:before {\n content: \"\\f16b\";\n}\n.fa-stack-overflow:before {\n content: \"\\f16c\";\n}\n.fa-instagram:before {\n content: \"\\f16d\";\n}\n.fa-flickr:before {\n content: \"\\f16e\";\n}\n.fa-adn:before {\n content: \"\\f170\";\n}\n.fa-bitbucket:before {\n content: \"\\f171\";\n}\n.fa-bitbucket-square:before {\n content: \"\\f172\";\n}\n.fa-tumblr:before {\n content: \"\\f173\";\n}\n.fa-tumblr-square:before {\n content: \"\\f174\";\n}\n.fa-long-arrow-down:before {\n content: \"\\f175\";\n}\n.fa-long-arrow-up:before {\n content: \"\\f176\";\n}\n.fa-long-arrow-left:before {\n content: \"\\f177\";\n}\n.fa-long-arrow-right:before {\n content: \"\\f178\";\n}\n.fa-apple:before {\n content: \"\\f179\";\n}\n.fa-windows:before {\n content: \"\\f17a\";\n}\n.fa-android:before {\n content: \"\\f17b\";\n}\n.fa-linux:before {\n content: \"\\f17c\";\n}\n.fa-dribbble:before {\n content: \"\\f17d\";\n}\n.fa-skype:before {\n content: \"\\f17e\";\n}\n.fa-foursquare:before {\n content: \"\\f180\";\n}\n.fa-trello:before {\n content: \"\\f181\";\n}\n.fa-female:before {\n content: \"\\f182\";\n}\n.fa-male:before {\n content: \"\\f183\";\n}\n.fa-gittip:before,\n.fa-gratipay:before {\n content: \"\\f184\";\n}\n.fa-sun-o:before {\n content: \"\\f185\";\n}\n.fa-moon-o:before {\n content: \"\\f186\";\n}\n.fa-archive:before {\n content: \"\\f187\";\n}\n.fa-bug:before {\n content: \"\\f188\";\n}\n.fa-vk:before {\n content: \"\\f189\";\n}\n.fa-weibo:before {\n content: \"\\f18a\";\n}\n.fa-renren:before {\n content: \"\\f18b\";\n}\n.fa-pagelines:before {\n content: \"\\f18c\";\n}\n.fa-stack-exchange:before {\n content: \"\\f18d\";\n}\n.fa-arrow-circle-o-right:before {\n content: \"\\f18e\";\n}\n.fa-arrow-circle-o-left:before {\n content: \"\\f190\";\n}\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n content: \"\\f191\";\n}\n.fa-dot-circle-o:before {\n content: \"\\f192\";\n}\n.fa-wheelchair:before {\n content: \"\\f193\";\n}\n.fa-vimeo-square:before {\n content: \"\\f194\";\n}\n.fa-turkish-lira:before,\n.fa-try:before {\n content: \"\\f195\";\n}\n.fa-plus-square-o:before {\n content: \"\\f196\";\n}\n.fa-space-shuttle:before {\n content: \"\\f197\";\n}\n.fa-slack:before {\n content: \"\\f198\";\n}\n.fa-envelope-square:before {\n content: \"\\f199\";\n}\n.fa-wordpress:before {\n content: \"\\f19a\";\n}\n.fa-openid:before {\n content: \"\\f19b\";\n}\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n content: \"\\f19c\";\n}\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n content: \"\\f19d\";\n}\n.fa-yahoo:before {\n content: \"\\f19e\";\n}\n.fa-google:before {\n content: \"\\f1a0\";\n}\n.fa-reddit:before {\n content: \"\\f1a1\";\n}\n.fa-reddit-square:before {\n content: \"\\f1a2\";\n}\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\";\n}\n.fa-stumbleupon:before {\n content: \"\\f1a4\";\n}\n.fa-delicious:before {\n content: \"\\f1a5\";\n}\n.fa-digg:before {\n content: \"\\f1a6\";\n}\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\";\n}\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\";\n}\n.fa-drupal:before {\n content: \"\\f1a9\";\n}\n.fa-joomla:before {\n content: \"\\f1aa\";\n}\n.fa-language:before {\n content: \"\\f1ab\";\n}\n.fa-fax:before {\n content: \"\\f1ac\";\n}\n.fa-building:before {\n content: \"\\f1ad\";\n}\n.fa-child:before {\n content: \"\\f1ae\";\n}\n.fa-paw:before {\n content: \"\\f1b0\";\n}\n.fa-spoon:before {\n content: \"\\f1b1\";\n}\n.fa-cube:before {\n content: \"\\f1b2\";\n}\n.fa-cubes:before {\n content: \"\\f1b3\";\n}\n.fa-behance:before {\n content: \"\\f1b4\";\n}\n.fa-behance-square:before {\n content: \"\\f1b5\";\n}\n.fa-steam:before {\n content: \"\\f1b6\";\n}\n.fa-steam-square:before {\n content: \"\\f1b7\";\n}\n.fa-recycle:before {\n content: \"\\f1b8\";\n}\n.fa-automobile:before,\n.fa-car:before {\n content: \"\\f1b9\";\n}\n.fa-cab:before,\n.fa-taxi:before {\n content: \"\\f1ba\";\n}\n.fa-tree:before {\n content: \"\\f1bb\";\n}\n.fa-spotify:before {\n content: \"\\f1bc\";\n}\n.fa-deviantart:before {\n content: \"\\f1bd\";\n}\n.fa-soundcloud:before {\n content: \"\\f1be\";\n}\n.fa-database:before {\n content: \"\\f1c0\";\n}\n.fa-file-pdf-o:before {\n content: \"\\f1c1\";\n}\n.fa-file-word-o:before {\n content: \"\\f1c2\";\n}\n.fa-file-excel-o:before {\n content: \"\\f1c3\";\n}\n.fa-file-powerpoint-o:before {\n content: \"\\f1c4\";\n}\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n content: \"\\f1c5\";\n}\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n content: \"\\f1c6\";\n}\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n content: \"\\f1c7\";\n}\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n content: \"\\f1c8\";\n}\n.fa-file-code-o:before {\n content: \"\\f1c9\";\n}\n.fa-vine:before {\n content: \"\\f1ca\";\n}\n.fa-codepen:before {\n content: \"\\f1cb\";\n}\n.fa-jsfiddle:before {\n content: \"\\f1cc\";\n}\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n content: \"\\f1cd\";\n}\n.fa-circle-o-notch:before {\n content: \"\\f1ce\";\n}\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n content: \"\\f1d0\";\n}\n.fa-ge:before,\n.fa-empire:before {\n content: \"\\f1d1\";\n}\n.fa-git-square:before {\n content: \"\\f1d2\";\n}\n.fa-git:before {\n content: \"\\f1d3\";\n}\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n content: \"\\f1d4\";\n}\n.fa-tencent-weibo:before {\n content: \"\\f1d5\";\n}\n.fa-qq:before {\n content: \"\\f1d6\";\n}\n.fa-wechat:before,\n.fa-weixin:before {\n content: \"\\f1d7\";\n}\n.fa-send:before,\n.fa-paper-plane:before {\n content: \"\\f1d8\";\n}\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n content: \"\\f1d9\";\n}\n.fa-history:before {\n content: \"\\f1da\";\n}\n.fa-circle-thin:before {\n content: \"\\f1db\";\n}\n.fa-header:before {\n content: \"\\f1dc\";\n}\n.fa-paragraph:before {\n content: \"\\f1dd\";\n}\n.fa-sliders:before {\n content: \"\\f1de\";\n}\n.fa-share-alt:before {\n content: \"\\f1e0\";\n}\n.fa-share-alt-square:before {\n content: \"\\f1e1\";\n}\n.fa-bomb:before {\n content: \"\\f1e2\";\n}\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n content: \"\\f1e3\";\n}\n.fa-tty:before {\n content: \"\\f1e4\";\n}\n.fa-binoculars:before {\n content: \"\\f1e5\";\n}\n.fa-plug:before {\n content: \"\\f1e6\";\n}\n.fa-slideshare:before {\n content: \"\\f1e7\";\n}\n.fa-twitch:before {\n content: \"\\f1e8\";\n}\n.fa-yelp:before {\n content: \"\\f1e9\";\n}\n.fa-newspaper-o:before {\n content: \"\\f1ea\";\n}\n.fa-wifi:before {\n content: \"\\f1eb\";\n}\n.fa-calculator:before {\n content: \"\\f1ec\";\n}\n.fa-paypal:before {\n content: \"\\f1ed\";\n}\n.fa-google-wallet:before {\n content: \"\\f1ee\";\n}\n.fa-cc-visa:before {\n content: \"\\f1f0\";\n}\n.fa-cc-mastercard:before {\n content: \"\\f1f1\";\n}\n.fa-cc-discover:before {\n content: \"\\f1f2\";\n}\n.fa-cc-amex:before {\n content: \"\\f1f3\";\n}\n.fa-cc-paypal:before {\n content: \"\\f1f4\";\n}\n.fa-cc-stripe:before {\n content: \"\\f1f5\";\n}\n.fa-bell-slash:before {\n content: \"\\f1f6\";\n}\n.fa-bell-slash-o:before {\n content: \"\\f1f7\";\n}\n.fa-trash:before {\n content: \"\\f1f8\";\n}\n.fa-copyright:before {\n content: \"\\f1f9\";\n}\n.fa-at:before {\n content: \"\\f1fa\";\n}\n.fa-eyedropper:before {\n content: \"\\f1fb\";\n}\n.fa-paint-brush:before {\n content: \"\\f1fc\";\n}\n.fa-birthday-cake:before {\n content: \"\\f1fd\";\n}\n.fa-area-chart:before {\n content: \"\\f1fe\";\n}\n.fa-pie-chart:before {\n content: \"\\f200\";\n}\n.fa-line-chart:before {\n content: \"\\f201\";\n}\n.fa-lastfm:before {\n content: \"\\f202\";\n}\n.fa-lastfm-square:before {\n content: \"\\f203\";\n}\n.fa-toggle-off:before {\n content: \"\\f204\";\n}\n.fa-toggle-on:before {\n content: \"\\f205\";\n}\n.fa-bicycle:before {\n content: \"\\f206\";\n}\n.fa-bus:before {\n content: \"\\f207\";\n}\n.fa-ioxhost:before {\n content: \"\\f208\";\n}\n.fa-angellist:before {\n content: \"\\f209\";\n}\n.fa-cc:before {\n content: \"\\f20a\";\n}\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n content: \"\\f20b\";\n}\n.fa-meanpath:before {\n content: \"\\f20c\";\n}\n.fa-buysellads:before {\n content: \"\\f20d\";\n}\n.fa-connectdevelop:before {\n content: \"\\f20e\";\n}\n.fa-dashcube:before {\n content: \"\\f210\";\n}\n.fa-forumbee:before {\n content: \"\\f211\";\n}\n.fa-leanpub:before {\n content: \"\\f212\";\n}\n.fa-sellsy:before {\n content: \"\\f213\";\n}\n.fa-shirtsinbulk:before {\n content: \"\\f214\";\n}\n.fa-simplybuilt:before {\n content: \"\\f215\";\n}\n.fa-skyatlas:before {\n content: \"\\f216\";\n}\n.fa-cart-plus:before {\n content: \"\\f217\";\n}\n.fa-cart-arrow-down:before {\n content: \"\\f218\";\n}\n.fa-diamond:before {\n content: \"\\f219\";\n}\n.fa-ship:before {\n content: \"\\f21a\";\n}\n.fa-user-secret:before {\n content: \"\\f21b\";\n}\n.fa-motorcycle:before {\n content: \"\\f21c\";\n}\n.fa-street-view:before {\n content: \"\\f21d\";\n}\n.fa-heartbeat:before {\n content: \"\\f21e\";\n}\n.fa-venus:before {\n content: \"\\f221\";\n}\n.fa-mars:before {\n content: \"\\f222\";\n}\n.fa-mercury:before {\n content: \"\\f223\";\n}\n.fa-intersex:before,\n.fa-transgender:before {\n content: \"\\f224\";\n}\n.fa-transgender-alt:before {\n content: \"\\f225\";\n}\n.fa-venus-double:before {\n content: \"\\f226\";\n}\n.fa-mars-double:before {\n content: \"\\f227\";\n}\n.fa-venus-mars:before {\n content: \"\\f228\";\n}\n.fa-mars-stroke:before {\n content: \"\\f229\";\n}\n.fa-mars-stroke-v:before {\n content: \"\\f22a\";\n}\n.fa-mars-stroke-h:before {\n content: \"\\f22b\";\n}\n.fa-neuter:before {\n content: \"\\f22c\";\n}\n.fa-genderless:before {\n content: \"\\f22d\";\n}\n.fa-facebook-official:before {\n content: \"\\f230\";\n}\n.fa-pinterest-p:before {\n content: \"\\f231\";\n}\n.fa-whatsapp:before {\n content: \"\\f232\";\n}\n.fa-server:before {\n content: \"\\f233\";\n}\n.fa-user-plus:before {\n content: \"\\f234\";\n}\n.fa-user-times:before {\n content: \"\\f235\";\n}\n.fa-hotel:before,\n.fa-bed:before {\n content: \"\\f236\";\n}\n.fa-viacoin:before {\n content: \"\\f237\";\n}\n.fa-train:before {\n content: \"\\f238\";\n}\n.fa-subway:before {\n content: \"\\f239\";\n}\n.fa-medium:before {\n content: \"\\f23a\";\n}\n.fa-yc:before,\n.fa-y-combinator:before {\n content: \"\\f23b\";\n}\n.fa-optin-monster:before {\n content: \"\\f23c\";\n}\n.fa-opencart:before {\n content: \"\\f23d\";\n}\n.fa-expeditedssl:before {\n content: \"\\f23e\";\n}\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n content: \"\\f240\";\n}\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n content: \"\\f241\";\n}\n.fa-battery-2:before,\n.fa-battery-half:before {\n content: \"\\f242\";\n}\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n content: \"\\f243\";\n}\n.fa-battery-0:before,\n.fa-battery-empty:before {\n content: \"\\f244\";\n}\n.fa-mouse-pointer:before {\n content: \"\\f245\";\n}\n.fa-i-cursor:before {\n content: \"\\f246\";\n}\n.fa-object-group:before {\n content: \"\\f247\";\n}\n.fa-object-ungroup:before {\n content: \"\\f248\";\n}\n.fa-sticky-note:before {\n content: \"\\f249\";\n}\n.fa-sticky-note-o:before {\n content: \"\\f24a\";\n}\n.fa-cc-jcb:before {\n content: \"\\f24b\";\n}\n.fa-cc-diners-club:before {\n content: \"\\f24c\";\n}\n.fa-clone:before {\n content: \"\\f24d\";\n}\n.fa-balance-scale:before {\n content: \"\\f24e\";\n}\n.fa-hourglass-o:before {\n content: \"\\f250\";\n}\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n content: \"\\f251\";\n}\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n content: \"\\f252\";\n}\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n content: \"\\f253\";\n}\n.fa-hourglass:before {\n content: \"\\f254\";\n}\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n content: \"\\f255\";\n}\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n content: \"\\f256\";\n}\n.fa-hand-scissors-o:before {\n content: \"\\f257\";\n}\n.fa-hand-lizard-o:before {\n content: \"\\f258\";\n}\n.fa-hand-spock-o:before {\n content: \"\\f259\";\n}\n.fa-hand-pointer-o:before {\n content: \"\\f25a\";\n}\n.fa-hand-peace-o:before {\n content: \"\\f25b\";\n}\n.fa-trademark:before {\n content: \"\\f25c\";\n}\n.fa-registered:before {\n content: \"\\f25d\";\n}\n.fa-creative-commons:before {\n content: \"\\f25e\";\n}\n.fa-gg:before {\n content: \"\\f260\";\n}\n.fa-gg-circle:before {\n content: \"\\f261\";\n}\n.fa-tripadvisor:before {\n content: \"\\f262\";\n}\n.fa-odnoklassniki:before {\n content: \"\\f263\";\n}\n.fa-odnoklassniki-square:before {\n content: \"\\f264\";\n}\n.fa-get-pocket:before {\n content: \"\\f265\";\n}\n.fa-wikipedia-w:before {\n content: \"\\f266\";\n}\n.fa-safari:before {\n content: \"\\f267\";\n}\n.fa-chrome:before {\n content: \"\\f268\";\n}\n.fa-firefox:before {\n content: \"\\f269\";\n}\n.fa-opera:before {\n content: \"\\f26a\";\n}\n.fa-internet-explorer:before {\n content: \"\\f26b\";\n}\n.fa-tv:before,\n.fa-television:before {\n content: \"\\f26c\";\n}\n.fa-contao:before {\n content: \"\\f26d\";\n}\n.fa-500px:before {\n content: \"\\f26e\";\n}\n.fa-amazon:before {\n content: \"\\f270\";\n}\n.fa-calendar-plus-o:before {\n content: \"\\f271\";\n}\n.fa-calendar-minus-o:before {\n content: \"\\f272\";\n}\n.fa-calendar-times-o:before {\n content: \"\\f273\";\n}\n.fa-calendar-check-o:before {\n content: \"\\f274\";\n}\n.fa-industry:before {\n content: \"\\f275\";\n}\n.fa-map-pin:before {\n content: \"\\f276\";\n}\n.fa-map-signs:before {\n content: \"\\f277\";\n}\n.fa-map-o:before {\n content: \"\\f278\";\n}\n.fa-map:before {\n content: \"\\f279\";\n}\n.fa-commenting:before {\n content: \"\\f27a\";\n}\n.fa-commenting-o:before {\n content: \"\\f27b\";\n}\n.fa-houzz:before {\n content: \"\\f27c\";\n}\n.fa-vimeo:before {\n content: \"\\f27d\";\n}\n.fa-black-tie:before {\n content: \"\\f27e\";\n}\n.fa-fonticons:before {\n content: \"\\f280\";\n}\n.fa-reddit-alien:before {\n content: \"\\f281\";\n}\n.fa-edge:before {\n content: \"\\f282\";\n}\n.fa-credit-card-alt:before {\n content: \"\\f283\";\n}\n.fa-codiepie:before {\n content: \"\\f284\";\n}\n.fa-modx:before {\n content: \"\\f285\";\n}\n.fa-fort-awesome:before {\n content: \"\\f286\";\n}\n.fa-usb:before {\n content: \"\\f287\";\n}\n.fa-product-hunt:before {\n content: \"\\f288\";\n}\n.fa-mixcloud:before {\n content: \"\\f289\";\n}\n.fa-scribd:before {\n content: \"\\f28a\";\n}\n.fa-pause-circle:before {\n content: \"\\f28b\";\n}\n.fa-pause-circle-o:before {\n content: \"\\f28c\";\n}\n.fa-stop-circle:before {\n content: \"\\f28d\";\n}\n.fa-stop-circle-o:before {\n content: \"\\f28e\";\n}\n.fa-shopping-bag:before {\n content: \"\\f290\";\n}\n.fa-shopping-basket:before {\n content: \"\\f291\";\n}\n.fa-hashtag:before {\n content: \"\\f292\";\n}\n.fa-bluetooth:before {\n content: \"\\f293\";\n}\n.fa-bluetooth-b:before {\n content: \"\\f294\";\n}\n.fa-percent:before {\n content: \"\\f295\";\n}\n.fa-gitlab:before {\n content: \"\\f296\";\n}\n.fa-wpbeginner:before {\n content: \"\\f297\";\n}\n.fa-wpforms:before {\n content: \"\\f298\";\n}\n.fa-envira:before {\n content: \"\\f299\";\n}\n.fa-universal-access:before {\n content: \"\\f29a\";\n}\n.fa-wheelchair-alt:before {\n content: \"\\f29b\";\n}\n.fa-question-circle-o:before {\n content: \"\\f29c\";\n}\n.fa-blind:before {\n content: \"\\f29d\";\n}\n.fa-audio-description:before {\n content: \"\\f29e\";\n}\n.fa-volume-control-phone:before {\n content: \"\\f2a0\";\n}\n.fa-braille:before {\n content: \"\\f2a1\";\n}\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\";\n}\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\";\n}\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n content: \"\\f2a4\";\n}\n.fa-glide:before {\n content: \"\\f2a5\";\n}\n.fa-glide-g:before {\n content: \"\\f2a6\";\n}\n.fa-signing:before,\n.fa-sign-language:before {\n content: \"\\f2a7\";\n}\n.fa-low-vision:before {\n content: \"\\f2a8\";\n}\n.fa-viadeo:before {\n content: \"\\f2a9\";\n}\n.fa-viadeo-square:before {\n content: \"\\f2aa\";\n}\n.fa-snapchat:before {\n content: \"\\f2ab\";\n}\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\";\n}\n.fa-snapchat-square:before {\n content: \"\\f2ad\";\n}\n.fa-pied-piper:before {\n content: \"\\f2ae\";\n}\n.fa-first-order:before {\n content: \"\\f2b0\";\n}\n.fa-yoast:before {\n content: \"\\f2b1\";\n}\n.fa-themeisle:before {\n content: \"\\f2b2\";\n}\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n content: \"\\f2b3\";\n}\n.fa-fa:before,\n.fa-font-awesome:before {\n content: \"\\f2b4\";\n}\n.fa-handshake-o:before {\n content: \"\\f2b5\";\n}\n.fa-envelope-open:before {\n content: \"\\f2b6\";\n}\n.fa-envelope-open-o:before {\n content: \"\\f2b7\";\n}\n.fa-linode:before {\n content: \"\\f2b8\";\n}\n.fa-address-book:before {\n content: \"\\f2b9\";\n}\n.fa-address-book-o:before {\n content: \"\\f2ba\";\n}\n.fa-vcard:before,\n.fa-address-card:before {\n content: \"\\f2bb\";\n}\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n content: \"\\f2bc\";\n}\n.fa-user-circle:before {\n content: \"\\f2bd\";\n}\n.fa-user-circle-o:before {\n content: \"\\f2be\";\n}\n.fa-user-o:before {\n content: \"\\f2c0\";\n}\n.fa-id-badge:before {\n content: \"\\f2c1\";\n}\n.fa-drivers-license:before,\n.fa-id-card:before {\n content: \"\\f2c2\";\n}\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n content: \"\\f2c3\";\n}\n.fa-quora:before {\n content: \"\\f2c4\";\n}\n.fa-free-code-camp:before {\n content: \"\\f2c5\";\n}\n.fa-telegram:before {\n content: \"\\f2c6\";\n}\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n content: \"\\f2c7\";\n}\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\";\n}\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n content: \"\\f2c9\";\n}\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\";\n}\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n content: \"\\f2cb\";\n}\n.fa-shower:before {\n content: \"\\f2cc\";\n}\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n content: \"\\f2cd\";\n}\n.fa-podcast:before {\n content: \"\\f2ce\";\n}\n.fa-window-maximize:before {\n content: \"\\f2d0\";\n}\n.fa-window-minimize:before {\n content: \"\\f2d1\";\n}\n.fa-window-restore:before {\n content: \"\\f2d2\";\n}\n.fa-times-rectangle:before,\n.fa-window-close:before {\n content: \"\\f2d3\";\n}\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n content: \"\\f2d4\";\n}\n.fa-bandcamp:before {\n content: \"\\f2d5\";\n}\n.fa-grav:before {\n content: \"\\f2d6\";\n}\n.fa-etsy:before {\n content: \"\\f2d7\";\n}\n.fa-imdb:before {\n content: \"\\f2d8\";\n}\n.fa-ravelry:before {\n content: \"\\f2d9\";\n}\n.fa-eercast:before {\n content: \"\\f2da\";\n}\n.fa-microchip:before {\n content: \"\\f2db\";\n}\n.fa-snowflake-o:before {\n content: \"\\f2dc\";\n}\n.fa-superpowers:before {\n content: \"\\f2dd\";\n}\n.fa-wpexplorer:before {\n content: \"\\f2de\";\n}\n.fa-meetup:before {\n content: \"\\f2e0\";\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n","@charset 'UTF-8';@font-face{font-family:'typicons';font-weight:normal;font-style:normal;src:url('typicons.eot');src:url('typicons.eot?#iefix') format('embedded-opentype'),url('typicons.woff') format('woff'),url('typicons.ttf') format('truetype'),url('typicons.svg#typicons') format('svg')}.typcn:before{font-family:'typicons';font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;height:1em;font-size:1em;text-align:center;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.typcn-adjust-brightness:before{content:'\\e000'}.typcn-adjust-contrast:before{content:'\\e001'}.typcn-anchor-outline:before{content:'\\e002'}.typcn-anchor:before{content:'\\e003'}.typcn-archive:before{content:'\\e004'}.typcn-arrow-back-outline:before{content:'\\e005'}.typcn-arrow-back:before{content:'\\e006'}.typcn-arrow-down-outline:before{content:'\\e007'}.typcn-arrow-down-thick:before{content:'\\e008'}.typcn-arrow-down:before{content:'\\e009'}.typcn-arrow-forward-outline:before{content:'\\e00a'}.typcn-arrow-forward:before{content:'\\e00b'}.typcn-arrow-left-outline:before{content:'\\e00c'}.typcn-arrow-left-thick:before{content:'\\e00d'}.typcn-arrow-left:before{content:'\\e00e'}.typcn-arrow-loop-outline:before{content:'\\e00f'}.typcn-arrow-loop:before{content:'\\e010'}.typcn-arrow-maximise-outline:before{content:'\\e011'}.typcn-arrow-maximise:before{content:'\\e012'}.typcn-arrow-minimise-outline:before{content:'\\e013'}.typcn-arrow-minimise:before{content:'\\e014'}.typcn-arrow-move-outline:before{content:'\\e015'}.typcn-arrow-move:before{content:'\\e016'}.typcn-arrow-repeat-outline:before{content:'\\e017'}.typcn-arrow-repeat:before{content:'\\e018'}.typcn-arrow-right-outline:before{content:'\\e019'}.typcn-arrow-right-thick:before{content:'\\e01a'}.typcn-arrow-right:before{content:'\\e01b'}.typcn-arrow-shuffle:before{content:'\\e01c'}.typcn-arrow-sorted-down:before{content:'\\e01d'}.typcn-arrow-sorted-up:before{content:'\\e01e'}.typcn-arrow-sync-outline:before{content:'\\e01f'}.typcn-arrow-sync:before{content:'\\e020'}.typcn-arrow-unsorted:before{content:'\\e021'}.typcn-arrow-up-outline:before{content:'\\e022'}.typcn-arrow-up-thick:before{content:'\\e023'}.typcn-arrow-up:before{content:'\\e024'}.typcn-at:before{content:'\\e025'}.typcn-attachment-outline:before{content:'\\e026'}.typcn-attachment:before{content:'\\e027'}.typcn-backspace-outline:before{content:'\\e028'}.typcn-backspace:before{content:'\\e029'}.typcn-battery-charge:before{content:'\\e02a'}.typcn-battery-full:before{content:'\\e02b'}.typcn-battery-high:before{content:'\\e02c'}.typcn-battery-low:before{content:'\\e02d'}.typcn-battery-mid:before{content:'\\e02e'}.typcn-beaker:before{content:'\\e02f'}.typcn-beer:before{content:'\\e030'}.typcn-bell:before{content:'\\e031'}.typcn-book:before{content:'\\e032'}.typcn-bookmark:before{content:'\\e033'}.typcn-briefcase:before{content:'\\e034'}.typcn-brush:before{content:'\\e035'}.typcn-business-card:before{content:'\\e036'}.typcn-calculator:before{content:'\\e037'}.typcn-calendar-outline:before{content:'\\e038'}.typcn-calendar:before{content:'\\e039'}.typcn-camera-outline:before{content:'\\e03a'}.typcn-camera:before{content:'\\e03b'}.typcn-cancel-outline:before{content:'\\e03c'}.typcn-cancel:before{content:'\\e03d'}.typcn-chart-area-outline:before{content:'\\e03e'}.typcn-chart-area:before{content:'\\e03f'}.typcn-chart-bar-outline:before{content:'\\e040'}.typcn-chart-bar:before{content:'\\e041'}.typcn-chart-line-outline:before{content:'\\e042'}.typcn-chart-line:before{content:'\\e043'}.typcn-chart-pie-outline:before{content:'\\e044'}.typcn-chart-pie:before{content:'\\e045'}.typcn-chevron-left-outline:before{content:'\\e046'}.typcn-chevron-left:before{content:'\\e047'}.typcn-chevron-right-outline:before{content:'\\e048'}.typcn-chevron-right:before{content:'\\e049'}.typcn-clipboard:before{content:'\\e04a'}.typcn-cloud-storage:before{content:'\\e04b'}.typcn-cloud-storage-outline:before{content:'\\e054'}.typcn-code-outline:before{content:'\\e04c'}.typcn-code:before{content:'\\e04d'}.typcn-coffee:before{content:'\\e04e'}.typcn-cog-outline:before{content:'\\e04f'}.typcn-cog:before{content:'\\e050'}.typcn-compass:before{content:'\\e051'}.typcn-contacts:before{content:'\\e052'}.typcn-credit-card:before{content:'\\e053'}.typcn-css3:before{content:'\\e055'}.typcn-database:before{content:'\\e056'}.typcn-delete-outline:before{content:'\\e057'}.typcn-delete:before{content:'\\e058'}.typcn-device-desktop:before{content:'\\e059'}.typcn-device-laptop:before{content:'\\e05a'}.typcn-device-phone:before{content:'\\e05b'}.typcn-device-tablet:before{content:'\\e05c'}.typcn-directions:before{content:'\\e05d'}.typcn-divide-outline:before{content:'\\e05e'}.typcn-divide:before{content:'\\e05f'}.typcn-document-add:before{content:'\\e060'}.typcn-document-delete:before{content:'\\e061'}.typcn-document-text:before{content:'\\e062'}.typcn-document:before{content:'\\e063'}.typcn-download-outline:before{content:'\\e064'}.typcn-download:before{content:'\\e065'}.typcn-dropbox:before{content:'\\e066'}.typcn-edit:before{content:'\\e067'}.typcn-eject-outline:before{content:'\\e068'}.typcn-eject:before{content:'\\e069'}.typcn-equals-outline:before{content:'\\e06a'}.typcn-equals:before{content:'\\e06b'}.typcn-export-outline:before{content:'\\e06c'}.typcn-export:before{content:'\\e06d'}.typcn-eye-outline:before{content:'\\e06e'}.typcn-eye:before{content:'\\e06f'}.typcn-feather:before{content:'\\e070'}.typcn-film:before{content:'\\e071'}.typcn-filter:before{content:'\\e072'}.typcn-flag-outline:before{content:'\\e073'}.typcn-flag:before{content:'\\e074'}.typcn-flash-outline:before{content:'\\e075'}.typcn-flash:before{content:'\\e076'}.typcn-flow-children:before{content:'\\e077'}.typcn-flow-merge:before{content:'\\e078'}.typcn-flow-parallel:before{content:'\\e079'}.typcn-flow-switch:before{content:'\\e07a'}.typcn-folder-add:before{content:'\\e07b'}.typcn-folder-delete:before{content:'\\e07c'}.typcn-folder-open:before{content:'\\e07d'}.typcn-folder:before{content:'\\e07e'}.typcn-gift:before{content:'\\e07f'}.typcn-globe-outline:before{content:'\\e080'}.typcn-globe:before{content:'\\e081'}.typcn-group-outline:before{content:'\\e082'}.typcn-group:before{content:'\\e083'}.typcn-headphones:before{content:'\\e084'}.typcn-heart-full-outline:before{content:'\\e085'}.typcn-heart-half-outline:before{content:'\\e086'}.typcn-heart-outline:before{content:'\\e087'}.typcn-heart:before{content:'\\e088'}.typcn-home-outline:before{content:'\\e089'}.typcn-home:before{content:'\\e08a'}.typcn-html5:before{content:'\\e08b'}.typcn-image-outline:before{content:'\\e08c'}.typcn-image:before{content:'\\e08d'}.typcn-infinity-outline:before{content:'\\e08e'}.typcn-infinity:before{content:'\\e08f'}.typcn-info-large-outline:before{content:'\\e090'}.typcn-info-large:before{content:'\\e091'}.typcn-info-outline:before{content:'\\e092'}.typcn-info:before{content:'\\e093'}.typcn-input-checked-outline:before{content:'\\e094'}.typcn-input-checked:before{content:'\\e095'}.typcn-key-outline:before{content:'\\e096'}.typcn-key:before{content:'\\e097'}.typcn-keyboard:before{content:'\\e098'}.typcn-leaf:before{content:'\\e099'}.typcn-lightbulb:before{content:'\\e09a'}.typcn-link-outline:before{content:'\\e09b'}.typcn-link:before{content:'\\e09c'}.typcn-location-arrow-outline:before{content:'\\e09d'}.typcn-location-arrow:before{content:'\\e09e'}.typcn-location-outline:before{content:'\\e09f'}.typcn-location:before{content:'\\e0a0'}.typcn-lock-closed-outline:before{content:'\\e0a1'}.typcn-lock-closed:before{content:'\\e0a2'}.typcn-lock-open-outline:before{content:'\\e0a3'}.typcn-lock-open:before{content:'\\e0a4'}.typcn-mail:before{content:'\\e0a5'}.typcn-map:before{content:'\\e0a6'}.typcn-media-eject-outline:before{content:'\\e0a7'}.typcn-media-eject:before{content:'\\e0a8'}.typcn-media-fast-forward-outline:before{content:'\\e0a9'}.typcn-media-fast-forward:before{content:'\\e0aa'}.typcn-media-pause-outline:before{content:'\\e0ab'}.typcn-media-pause:before{content:'\\e0ac'}.typcn-media-play-outline:before{content:'\\e0ad'}.typcn-media-play-reverse-outline:before{content:'\\e0ae'}.typcn-media-play-reverse:before{content:'\\e0af'}.typcn-media-play:before{content:'\\e0b0'}.typcn-media-record-outline:before{content:'\\e0b1'}.typcn-media-record:before{content:'\\e0b2'}.typcn-media-rewind-outline:before{content:'\\e0b3'}.typcn-media-rewind:before{content:'\\e0b4'}.typcn-media-stop-outline:before{content:'\\e0b5'}.typcn-media-stop:before{content:'\\e0b6'}.typcn-message-typing:before{content:'\\e0b7'}.typcn-message:before{content:'\\e0b8'}.typcn-messages:before{content:'\\e0b9'}.typcn-microphone-outline:before{content:'\\e0ba'}.typcn-microphone:before{content:'\\e0bb'}.typcn-minus-outline:before{content:'\\e0bc'}.typcn-minus:before{content:'\\e0bd'}.typcn-mortar-board:before{content:'\\e0be'}.typcn-news:before{content:'\\e0bf'}.typcn-notes-outline:before{content:'\\e0c0'}.typcn-notes:before{content:'\\e0c1'}.typcn-pen:before{content:'\\e0c2'}.typcn-pencil:before{content:'\\e0c3'}.typcn-phone-outline:before{content:'\\e0c4'}.typcn-phone:before{content:'\\e0c5'}.typcn-pi-outline:before{content:'\\e0c6'}.typcn-pi:before{content:'\\e0c7'}.typcn-pin-outline:before{content:'\\e0c8'}.typcn-pin:before{content:'\\e0c9'}.typcn-pipette:before{content:'\\e0ca'}.typcn-plane-outline:before{content:'\\e0cb'}.typcn-plane:before{content:'\\e0cc'}.typcn-plug:before{content:'\\e0cd'}.typcn-plus-outline:before{content:'\\e0ce'}.typcn-plus:before{content:'\\e0cf'}.typcn-point-of-interest-outline:before{content:'\\e0d0'}.typcn-point-of-interest:before{content:'\\e0d1'}.typcn-power-outline:before{content:'\\e0d2'}.typcn-power:before{content:'\\e0d3'}.typcn-printer:before{content:'\\e0d4'}.typcn-puzzle-outline:before{content:'\\e0d5'}.typcn-puzzle:before{content:'\\e0d6'}.typcn-radar-outline:before{content:'\\e0d7'}.typcn-radar:before{content:'\\e0d8'}.typcn-refresh-outline:before{content:'\\e0d9'}.typcn-refresh:before{content:'\\e0da'}.typcn-rss-outline:before{content:'\\e0db'}.typcn-rss:before{content:'\\e0dc'}.typcn-scissors-outline:before{content:'\\e0dd'}.typcn-scissors:before{content:'\\e0de'}.typcn-shopping-bag:before{content:'\\e0df'}.typcn-shopping-cart:before{content:'\\e0e0'}.typcn-social-at-circular:before{content:'\\e0e1'}.typcn-social-dribbble-circular:before{content:'\\e0e2'}.typcn-social-dribbble:before{content:'\\e0e3'}.typcn-social-facebook-circular:before{content:'\\e0e4'}.typcn-social-facebook:before{content:'\\e0e5'}.typcn-social-flickr-circular:before{content:'\\e0e6'}.typcn-social-flickr:before{content:'\\e0e7'}.typcn-social-github-circular:before{content:'\\e0e8'}.typcn-social-github:before{content:'\\e0e9'}.typcn-social-google-plus-circular:before{content:'\\e0ea'}.typcn-social-google-plus:before{content:'\\e0eb'}.typcn-social-instagram-circular:before{content:'\\e0ec'}.typcn-social-instagram:before{content:'\\e0ed'}.typcn-social-last-fm-circular:before{content:'\\e0ee'}.typcn-social-last-fm:before{content:'\\e0ef'}.typcn-social-linkedin-circular:before{content:'\\e0f0'}.typcn-social-linkedin:before{content:'\\e0f1'}.typcn-social-pinterest-circular:before{content:'\\e0f2'}.typcn-social-pinterest:before{content:'\\e0f3'}.typcn-social-skype-outline:before{content:'\\e0f4'}.typcn-social-skype:before{content:'\\e0f5'}.typcn-social-tumbler-circular:before{content:'\\e0f6'}.typcn-social-tumbler:before{content:'\\e0f7'}.typcn-social-twitter-circular:before{content:'\\e0f8'}.typcn-social-twitter:before{content:'\\e0f9'}.typcn-social-vimeo-circular:before{content:'\\e0fa'}.typcn-social-vimeo:before{content:'\\e0fb'}.typcn-social-youtube-circular:before{content:'\\e0fc'}.typcn-social-youtube:before{content:'\\e0fd'}.typcn-sort-alphabetically-outline:before{content:'\\e0fe'}.typcn-sort-alphabetically:before{content:'\\e0ff'}.typcn-sort-numerically-outline:before{content:'\\e100'}.typcn-sort-numerically:before{content:'\\e101'}.typcn-spanner-outline:before{content:'\\e102'}.typcn-spanner:before{content:'\\e103'}.typcn-spiral:before{content:'\\e104'}.typcn-star-full-outline:before{content:'\\e105'}.typcn-star-half-outline:before{content:'\\e106'}.typcn-star-half:before{content:'\\e107'}.typcn-star-outline:before{content:'\\e108'}.typcn-star:before{content:'\\e109'}.typcn-starburst-outline:before{content:'\\e10a'}.typcn-starburst:before{content:'\\e10b'}.typcn-stopwatch:before{content:'\\e10c'}.typcn-support:before{content:'\\e10d'}.typcn-tabs-outline:before{content:'\\e10e'}.typcn-tag:before{content:'\\e10f'}.typcn-tags:before{content:'\\e110'}.typcn-th-large-outline:before{content:'\\e111'}.typcn-th-large:before{content:'\\e112'}.typcn-th-list-outline:before{content:'\\e113'}.typcn-th-list:before{content:'\\e114'}.typcn-th-menu-outline:before{content:'\\e115'}.typcn-th-menu:before{content:'\\e116'}.typcn-th-small-outline:before{content:'\\e117'}.typcn-th-small:before{content:'\\e118'}.typcn-thermometer:before{content:'\\e119'}.typcn-thumbs-down:before{content:'\\e11a'}.typcn-thumbs-ok:before{content:'\\e11b'}.typcn-thumbs-up:before{content:'\\e11c'}.typcn-tick-outline:before{content:'\\e11d'}.typcn-tick:before{content:'\\e11e'}.typcn-ticket:before{content:'\\e11f'}.typcn-time:before{content:'\\e120'}.typcn-times-outline:before{content:'\\e121'}.typcn-times:before{content:'\\e122'}.typcn-trash:before{content:'\\e123'}.typcn-tree:before{content:'\\e124'}.typcn-upload-outline:before{content:'\\e125'}.typcn-upload:before{content:'\\e126'}.typcn-user-add-outline:before{content:'\\e127'}.typcn-user-add:before{content:'\\e128'}.typcn-user-delete-outline:before{content:'\\e129'}.typcn-user-delete:before{content:'\\e12a'}.typcn-user-outline:before{content:'\\e12b'}.typcn-user:before{content:'\\e12c'}.typcn-vendor-android:before{content:'\\e12d'}.typcn-vendor-apple:before{content:'\\e12e'}.typcn-vendor-microsoft:before{content:'\\e12f'}.typcn-video-outline:before{content:'\\e130'}.typcn-video:before{content:'\\e131'}.typcn-volume-down:before{content:'\\e132'}.typcn-volume-mute:before{content:'\\e133'}.typcn-volume-up:before{content:'\\e134'}.typcn-volume:before{content:'\\e135'}.typcn-warning-outline:before{content:'\\e136'}.typcn-warning:before{content:'\\e137'}.typcn-watch:before{content:'\\e138'}.typcn-waves-outline:before{content:'\\e139'}.typcn-waves:before{content:'\\e13a'}.typcn-weather-cloudy:before{content:'\\e13b'}.typcn-weather-downpour:before{content:'\\e13c'}.typcn-weather-night:before{content:'\\e13d'}.typcn-weather-partly-sunny:before{content:'\\e13e'}.typcn-weather-shower:before{content:'\\e13f'}.typcn-weather-snow:before{content:'\\e140'}.typcn-weather-stormy:before{content:'\\e141'}.typcn-weather-sunny:before{content:'\\e142'}.typcn-weather-windy-cloudy:before{content:'\\e143'}.typcn-weather-windy:before{content:'\\e144'}.typcn-wi-fi-outline:before{content:'\\e145'}.typcn-wi-fi:before{content:'\\e146'}.typcn-wine:before{content:'\\e147'}.typcn-world-outline:before{content:'\\e148'}.typcn-world:before{content:'\\e149'}.typcn-zoom-in-outline:before{content:'\\e14a'}.typcn-zoom-in:before{content:'\\e14b'}.typcn-zoom-out-outline:before{content:'\\e14c'}.typcn-zoom-out:before{content:'\\e14d'}.typcn-zoom-outline:before{content:'\\e14e'}.typcn-zoom:before{content:'\\e14f'}","/*!\n * ui-select\n * http://github.com/angular-ui/ui-select\n * Version: 0.14.1 - 2016-01-27T22:27:00.588Z\n * License: MIT\n */\n\n\n/* Style when highlighting a search. */\n.ui-select-highlight {\n font-weight: bold;\n}\n\n.ui-select-offscreen {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n\n.ui-select-choices-row:hover {\n background-color: #f5f5f5;\n}\n\n/* Select2 theme */\n\n/* Mark invalid Select2 */\n.ng-dirty.ng-invalid > a.select2-choice {\n border-color: #D44950;\n}\n\n.select2-result-single {\n padding-left: 0;\n}\n\n.select2-locked > .select2-search-choice-close{\n display:none;\n}\n\n.select-locked > .ui-select-match-close{\n display:none;\n}\n\nbody > .select2-container.open {\n z-index: 9999; /* The z-index Select2 applies to the select2-drop */\n}\n\n/* Handle up direction Select2 */\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-match {\n border-radius: 4px; /* FIXME hardcoded value :-/ */\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-dropdown {\n border-radius: 4px; /* FIXME hardcoded value :-/ */\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n border-top-width: 1px; /* FIXME hardcoded value :-/ */\n border-top-style: solid;\n\n box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\n\n margin-top: -4px; /* FIXME hardcoded value :-/ */\n}\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-dropdown .select2-search {\n margin-top: 4px; /* FIXME hardcoded value :-/ */\n}\n.ui-select-container[theme=\"select2\"].direction-up.select2-dropdown-open .ui-select-match {\n border-bottom-color: #5897fb;\n}\n\n/* Selectize theme */\n\n/* Helper class to show styles when focus */\n.selectize-input.selectize-focus{\n border-color: #007FBB !important;\n}\n\n/* Fix input width for Selectize theme */\n.selectize-control > .selectize-input > input {\n width: 100%;\n}\n\n/* Fix dropdown width for Selectize theme */\n.selectize-control > .selectize-dropdown {\n width: 100%;\n}\n\n/* Mark invalid Selectize */\n.ng-dirty.ng-invalid > div.selectize-input {\n border-color: #D44950;\n}\n\n/* Handle up direction Selectize */\n.ui-select-container[theme=\"selectize\"].direction-up .ui-select-dropdown {\n box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\n\n margin-top: -2px; /* FIXME hardcoded value :-/ */\n}\n\n/* Bootstrap theme */\n\n/* Helper class to show styles when focus */\n.btn-default-focus {\n color: #333;\n background-color: #EBEBEB;\n border-color: #ADADAD;\n text-decoration: none;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.ui-select-bootstrap .ui-select-toggle {\n position: relative;\n}\n\n.ui-select-bootstrap .ui-select-toggle > .caret {\n position: absolute;\n height: 10px;\n top: 50%;\n right: 10px;\n margin-top: -2px;\n}\n\n/* Fix Bootstrap dropdown position when inside a input-group */\n.input-group > .ui-select-bootstrap.dropdown {\n /* Instead of relative */\n position: static;\n}\n\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control {\n border-radius: 4px; /* FIXME hardcoded value :-/ */\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control.direction-up {\n border-radius: 4px !important; /* FIXME hardcoded value :-/ */\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.ui-select-bootstrap > .ui-select-match > .btn{\n /* Instead of center because of .btn */\n text-align: left !important;\n}\n\n.ui-select-bootstrap > .ui-select-match > .caret {\n position: absolute;\n top: 45%;\n right: 15px;\n}\n\n/* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */\n.ui-select-bootstrap > .ui-select-choices {\n width: 100%;\n height: auto;\n max-height: 200px;\n overflow-x: hidden;\n margin-top: -1px;\n}\n\nbody > .ui-select-bootstrap.open {\n z-index: 1000; /* Standard Bootstrap dropdown z-index */\n}\n\n.ui-select-multiple.ui-select-bootstrap {\n height: auto;\n padding: 3px 3px 0 3px;\n}\n\n.ui-select-multiple.ui-select-bootstrap input.ui-select-search {\n background-color: transparent !important; /* To prevent double background when disabled */\n border: none;\n outline: none;\n height: 1.666666em;\n margin-bottom: 3px;\n}\n\n.ui-select-multiple.ui-select-bootstrap .ui-select-match .close {\n font-size: 1.6em;\n line-height: 0.75;\n}\n\n.ui-select-multiple.ui-select-bootstrap .ui-select-match-item {\n outline: 0;\n margin: 0 3px 3px 0;\n}\n\n.ui-select-multiple .ui-select-match-item {\n position: relative;\n}\n\n.ui-select-multiple .ui-select-match-item.dropping-before:before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 100%;\n height: 100%;\n margin-right: 2px;\n border-left: 1px solid #428bca;\n}\n\n.ui-select-multiple .ui-select-match-item.dropping-after:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 100%;\n height: 100%;\n margin-left: 2px;\n border-right: 1px solid #428bca;\n}\n\n.ui-select-bootstrap .ui-select-choices-row>a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n\n.ui-select-bootstrap .ui-select-choices-row>a:hover, .ui-select-bootstrap .ui-select-choices-row>a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n\n.ui-select-bootstrap .ui-select-choices-row.active>a {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #428bca;\n}\n\n.ui-select-bootstrap .ui-select-choices-row.disabled>a,\n.ui-select-bootstrap .ui-select-choices-row.active.disabled>a {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n\n/* fix hide/show angular animation */\n.ui-select-match.ng-hide-add,\n.ui-select-search.ng-hide-add {\n display: none !important;\n}\n\n/* Mark invalid Bootstrap */\n.ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {\n border-color: #D44950;\n}\n\n/* Handle up direction Bootstrap */\n.ui-select-container[theme=\"bootstrap\"].direction-up .ui-select-dropdown {\n box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\n}\n","/* nvd3 version 1.8.1 (https://github.com/novus/nvd3) 2015-06-15 */\n.nvd3 .nv-axis {\r\n pointer-events:none;\r\n opacity: 1;\r\n}\r\n\r\n.nvd3 .nv-axis path {\r\n fill: none;\r\n stroke: #000;\r\n stroke-opacity: .75;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .nv-axis path.domain {\r\n stroke-opacity: .75;\r\n}\r\n\r\n.nvd3 .nv-axis.nv-x path.domain {\r\n stroke-opacity: 0;\r\n}\r\n\r\n.nvd3 .nv-axis line {\r\n fill: none;\r\n stroke: #e5e5e5;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .nv-axis .zero line,\r\n /*this selector may not be necessary*/ .nvd3 .nv-axis line.zero {\r\n stroke-opacity: .75;\r\n}\r\n\r\n.nvd3 .nv-axis .nv-axisMaxMin text {\r\n font-weight: bold;\r\n}\r\n\r\n.nvd3 .x .nv-axis .nv-axisMaxMin text,\r\n.nvd3 .x2 .nv-axis .nv-axisMaxMin text,\r\n.nvd3 .x3 .nv-axis .nv-axisMaxMin text {\r\n text-anchor: middle\r\n}\r\n\r\n.nvd3 .nv-axis.nv-disabled {\r\n opacity: 0;\r\n}\r\n\n.nvd3 .nv-bars rect {\r\n fill-opacity: .75;\r\n\r\n transition: fill-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear;\r\n}\r\n\r\n.nvd3 .nv-bars rect.hover {\r\n fill-opacity: 1;\r\n}\r\n\r\n.nvd3 .nv-bars .hover rect {\r\n fill: lightblue;\r\n}\r\n\r\n.nvd3 .nv-bars text {\r\n fill: rgba(0,0,0,0);\r\n}\r\n\r\n.nvd3 .nv-bars .hover text {\r\n fill: rgba(0,0,0,1);\r\n}\r\n\r\n.nvd3 .nv-multibar .nv-groups rect,\r\n.nvd3 .nv-multibarHorizontal .nv-groups rect,\r\n.nvd3 .nv-discretebar .nv-groups rect {\r\n stroke-opacity: 0;\r\n\r\n transition: fill-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear;\r\n}\r\n\r\n.nvd3 .nv-multibar .nv-groups rect:hover,\r\n.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,\r\n.nvd3 .nv-candlestickBar .nv-ticks rect:hover,\r\n.nvd3 .nv-discretebar .nv-groups rect:hover {\r\n fill-opacity: 1;\r\n}\r\n\r\n.nvd3 .nv-discretebar .nv-groups text,\r\n.nvd3 .nv-multibarHorizontal .nv-groups text {\r\n font-weight: bold;\r\n fill: rgba(0,0,0,1);\r\n stroke: rgba(0,0,0,0);\r\n}\r\n\n/* boxplot CSS */\n.nvd3 .nv-boxplot circle {\n fill-opacity: 0.5;\n}\n\n.nvd3 .nv-boxplot circle:hover {\n fill-opacity: 1;\n}\n\n.nvd3 .nv-boxplot rect:hover {\n fill-opacity: 1;\n}\n\n.nvd3 line.nv-boxplot-median {\n stroke: black;\n}\n\n.nv-boxplot-tick:hover {\n stroke-width: 2.5px;\n}\n/* bullet */\r\n.nvd3.nv-bullet { font: 10px sans-serif; }\r\n.nvd3.nv-bullet .nv-measure { fill-opacity: .8; }\r\n.nvd3.nv-bullet .nv-measure:hover { fill-opacity: 1; }\r\n.nvd3.nv-bullet .nv-marker { stroke: #000; stroke-width: 2px; }\r\n.nvd3.nv-bullet .nv-markerTriangle { stroke: #000; fill: #fff; stroke-width: 1.5px; }\r\n.nvd3.nv-bullet .nv-tick line { stroke: #666; stroke-width: .5px; }\r\n.nvd3.nv-bullet .nv-range.nv-s0 { fill: #eee; }\r\n.nvd3.nv-bullet .nv-range.nv-s1 { fill: #ddd; }\r\n.nvd3.nv-bullet .nv-range.nv-s2 { fill: #ccc; }\r\n.nvd3.nv-bullet .nv-title { font-size: 14px; font-weight: bold; }\r\n.nvd3.nv-bullet .nv-subtitle { fill: #999; }\r\n\r\n\r\n.nvd3.nv-bullet .nv-range {\r\n fill: #bababa;\r\n fill-opacity: .4;\r\n}\r\n.nvd3.nv-bullet .nv-range:hover {\r\n fill-opacity: .7;\r\n}\r\n\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick {\r\n stroke-width: 1px;\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover {\r\n stroke-width: 2px;\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect {\r\n stroke: #2ca02c;\r\n fill: #2ca02c;\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect {\r\n stroke: #d62728;\r\n fill: #d62728;\r\n}\r\n\r\n.with-transitions .nv-candlestickBar .nv-ticks .nv-tick {\r\n transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n\r\n}\r\n\r\n.nvd3.nv-candlestickBar .nv-ticks line {\r\n stroke: #333;\r\n}\r\n\r\n\n.nvd3 .nv-legend .nv-disabled rect {\n /*fill-opacity: 0;*/\n}\n\n.nvd3 .nv-check-box .nv-box {\n fill-opacity:0;\n stroke-width:2;\n}\n\n.nvd3 .nv-check-box .nv-check {\n fill-opacity:0;\n stroke-width:4;\n}\n\n.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check {\n fill-opacity:0;\n stroke-opacity:0;\n}\n\n.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check {\n opacity: 0;\n}\n\n/* line plus bar */\r\n.nvd3.nv-linePlusBar .nv-bar rect {\r\n fill-opacity: .75;\r\n}\r\n\r\n.nvd3.nv-linePlusBar .nv-bar rect:hover {\r\n fill-opacity: 1;\r\n}\n.nvd3 .nv-groups path.nv-line {\r\n fill: none;\r\n}\r\n\r\n.nvd3 .nv-groups path.nv-area {\r\n stroke: none;\r\n}\r\n\r\n.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point {\r\n fill-opacity: 0;\r\n stroke-opacity: 0;\r\n}\r\n\r\n.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point {\r\n fill-opacity: .5 !important;\r\n stroke-opacity: .5 !important;\r\n}\r\n\r\n\r\n.with-transitions .nvd3 .nv-groups .nv-point {\r\n transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n\r\n}\r\n\r\n.nvd3.nv-scatter .nv-groups .nv-point.hover,\r\n.nvd3 .nv-groups .nv-point.hover {\r\n stroke-width: 7px;\r\n fill-opacity: .95 !important;\r\n stroke-opacity: .95 !important;\r\n}\r\n\r\n\r\n.nvd3 .nv-point-paths path {\r\n stroke: #aaa;\r\n stroke-opacity: 0;\r\n fill: #eee;\r\n fill-opacity: 0;\r\n}\r\n\r\n\r\n\r\n.nvd3 .nv-indexLine {\r\n cursor: ew-resize;\r\n}\r\n\n/********************\r\n * SVG CSS\r\n */\r\n\r\n/********************\r\n Default CSS for an svg element nvd3 used\r\n*/\r\nsvg.nvd3-svg {\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -ms-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n display: block;\r\n width:100%;\r\n height:100%;\r\n}\r\n\r\n/********************\r\n Box shadow and border radius styling\r\n*/\r\n.nvtooltip.with-3d-shadow, .with-3d-shadow .nvtooltip {\r\n -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);\r\n -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);\r\n box-shadow: 0 5px 10px rgba(0,0,0,.2);\r\n\r\n -webkit-border-radius: 5px;\r\n -moz-border-radius: 5px;\r\n border-radius: 5px;\r\n}\r\n\r\n\r\n.nvd3 text {\r\n font: normal 12px Arial;\r\n}\r\n\r\n.nvd3 .title {\r\n font: bold 14px Arial;\r\n}\r\n\r\n.nvd3 .nv-background {\r\n fill: white;\r\n fill-opacity: 0;\r\n}\r\n\r\n.nvd3.nv-noData {\r\n font-size: 18px;\r\n font-weight: bold;\r\n}\r\n\r\n\r\n/**********\r\n* Brush\r\n*/\r\n\r\n.nv-brush .extent {\r\n fill-opacity: .125;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nv-brush .resize path {\r\n fill: #eee;\r\n stroke: #666;\r\n}\r\n\r\n\r\n/**********\r\n* Legend\r\n*/\r\n\r\n.nvd3 .nv-legend .nv-series {\r\n cursor: pointer;\r\n}\r\n\r\n.nvd3 .nv-legend .nv-disabled circle {\r\n fill-opacity: 0;\r\n}\r\n\r\n/* focus */\r\n.nvd3 .nv-brush .extent {\r\n fill-opacity: 0 !important;\r\n}\r\n\r\n.nvd3 .nv-brushBackground rect {\r\n stroke: #000;\r\n stroke-width: .4;\r\n fill: #fff;\r\n fill-opacity: .7;\r\n}\r\n\r\n\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick {\r\n stroke-width: 1px;\r\n}\r\n\r\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover {\r\n stroke-width: 2px;\r\n}\r\n\r\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive {\r\n stroke: #2ca02c;\r\n}\r\n\r\n.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative {\r\n stroke: #d62728;\r\n}\r\n\r\n\n.nvd3 .background path {\r\n fill: none;\r\n stroke: #EEE;\r\n stroke-opacity: .4;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .foreground path {\r\n fill: none;\r\n stroke-opacity: .7;\r\n}\r\n\r\n.nvd3 .nv-parallelCoordinates-brush .extent \r\n{\r\n fill: #fff;\r\n fill-opacity: .6;\r\n stroke: gray;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.nvd3 .nv-parallelCoordinates .hover {\r\n fill-opacity: 1;\r\n\tstroke-width: 3px;\r\n}\r\n\r\n\r\n.nvd3 .missingValuesline line {\r\n fill: none;\r\n stroke: black;\r\n stroke-width: 1;\r\n stroke-opacity: 1;\r\n stroke-dasharray: 5, 5; \r\n}\n.nvd3.nv-pie path {\r\n stroke-opacity: 0;\r\n transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;\r\n\r\n}\r\n\r\n.nvd3.nv-pie .nv-pie-title {\r\n font-size: 24px;\r\n fill: rgba(19, 196, 249, 0.59);\r\n}\r\n\r\n.nvd3.nv-pie .nv-slice text {\r\n stroke: #000;\r\n stroke-width: 0;\r\n}\r\n\r\n.nvd3.nv-pie path {\r\n stroke: #fff;\r\n stroke-width: 1px;\r\n stroke-opacity: 1;\r\n}\r\n\r\n.nvd3.nv-pie .hover path {\r\n fill-opacity: .7;\r\n}\r\n.nvd3.nv-pie .nv-label {\r\n pointer-events: none;\r\n}\r\n.nvd3.nv-pie .nv-label rect {\r\n fill-opacity: 0;\r\n stroke-opacity: 0;\r\n}\r\n\n/* scatter */\r\n.nvd3 .nv-groups .nv-point.hover {\r\n stroke-width: 20px;\r\n stroke-opacity: .5;\r\n}\r\n\r\n.nvd3 .nv-scatter .nv-point.hover {\r\n fill-opacity: 1;\r\n}\r\n.nv-noninteractive {\r\n pointer-events: none;\r\n}\r\n\r\n.nv-distx, .nv-disty {\r\n pointer-events: none;\r\n}\r\n\n/* sparkline */\r\n.nvd3.nv-sparkline path {\r\n fill: none;\r\n}\r\n\r\n.nvd3.nv-sparklineplus g.nv-hoverValue {\r\n pointer-events: none;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-hoverValue line {\r\n stroke: #333;\r\n stroke-width: 1.5px;\r\n}\r\n\r\n.nvd3.nv-sparklineplus,\r\n.nvd3.nv-sparklineplus g {\r\n pointer-events: all;\r\n}\r\n\r\n.nvd3 .nv-hoverArea {\r\n fill-opacity: 0;\r\n stroke-opacity: 0;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-xValue,\r\n.nvd3.nv-sparklineplus .nv-yValue {\r\n stroke-width: 0;\r\n font-size: .9em;\r\n font-weight: normal;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-yValue {\r\n stroke: #f66;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-maxValue {\r\n stroke: #2ca02c;\r\n fill: #2ca02c;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-minValue {\r\n stroke: #d62728;\r\n fill: #d62728;\r\n}\r\n\r\n.nvd3.nv-sparklineplus .nv-currentValue {\r\n font-weight: bold;\r\n font-size: 1.1em;\r\n}\n/* stacked area */\r\n.nvd3.nv-stackedarea path.nv-area {\r\n fill-opacity: .7;\r\n stroke-opacity: 0;\r\n transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;\r\n -moz-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;\r\n -webkit-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;\r\n}\r\n\r\n.nvd3.nv-stackedarea path.nv-area.hover {\r\n fill-opacity: .9;\r\n}\r\n\r\n\r\n.nvd3.nv-stackedarea .nv-groups .nv-point {\r\n stroke-opacity: 0;\r\n fill-opacity: 0;\r\n}\n\r\n\r\n.nvtooltip {\r\n position: absolute;\r\n background-color: rgba(255,255,255,1.0);\r\n color: rgba(0,0,0,1.0);\r\n padding: 1px;\r\n border: 1px solid rgba(0,0,0,.2);\r\n z-index: 10000;\r\n display: block;\r\n\r\n font-family: Arial;\r\n font-size: 13px;\r\n text-align: left;\r\n pointer-events: none;\r\n\r\n white-space: nowrap;\r\n\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.nvtooltip {\r\n background: rgba(255,255,255, 0.8);\r\n border: 1px solid rgba(0,0,0,0.5);\r\n border-radius: 4px;\r\n}\r\n\r\n/*Give tooltips that old fade in transition by\r\n putting a \"with-transitions\" class on the container div.\r\n*/\r\n.nvtooltip.with-transitions, .with-transitions .nvtooltip {\r\n transition: opacity 50ms linear;\r\n -moz-transition: opacity 50ms linear;\r\n -webkit-transition: opacity 50ms linear;\r\n\r\n transition-delay: 200ms;\r\n -moz-transition-delay: 200ms;\r\n -webkit-transition-delay: 200ms;\r\n}\r\n\r\n.nvtooltip.x-nvtooltip,\r\n.nvtooltip.y-nvtooltip {\r\n padding: 8px;\r\n}\r\n\r\n.nvtooltip h3 {\r\n margin: 0;\r\n padding: 4px 14px;\r\n line-height: 18px;\r\n font-weight: normal;\r\n background-color: rgba(247,247,247,0.75);\r\n color: rgba(0,0,0,1.0);\r\n text-align: center;\r\n\r\n border-bottom: 1px solid #ebebeb;\r\n\r\n -webkit-border-radius: 5px 5px 0 0;\r\n -moz-border-radius: 5px 5px 0 0;\r\n border-radius: 5px 5px 0 0;\r\n}\r\n\r\n.nvtooltip p {\r\n margin: 0;\r\n padding: 5px 14px;\r\n text-align: center;\r\n}\r\n\r\n.nvtooltip span {\r\n display: inline-block;\r\n margin: 2px 0;\r\n}\r\n\r\n.nvtooltip table {\r\n margin: 6px;\r\n border-spacing:0;\r\n}\r\n\r\n\r\n.nvtooltip table td {\r\n padding: 2px 9px 2px 0;\r\n vertical-align: middle;\r\n}\r\n\r\n.nvtooltip table td.key {\r\n font-weight:normal;\r\n}\r\n.nvtooltip table td.value {\r\n text-align: right;\r\n font-weight: bold;\r\n}\r\n\r\n.nvtooltip table tr.highlight td {\r\n padding: 1px 9px 1px 0;\r\n border-bottom-style: solid;\r\n border-bottom-width: 1px;\r\n border-top-style: solid;\r\n border-top-width: 1px;\r\n}\r\n\r\n.nvtooltip table td.legend-color-guide div {\r\n width: 8px;\r\n height: 8px;\r\n vertical-align: middle;\r\n}\r\n\r\n.nvtooltip table td.legend-color-guide div {\r\n width: 12px;\r\n height: 12px;\r\n border: 1px solid #999;\r\n}\r\n\r\n.nvtooltip .footer {\r\n padding: 3px;\r\n text-align: center;\r\n}\r\n\r\n.nvtooltip-pending-removal {\r\n pointer-events: none;\r\n display: none;\r\n}\r\n\r\n\r\n/****\r\nInteractive Layer\r\n*/\r\n.nvd3 .nv-interactiveGuideLine {\r\n pointer-events:none;\r\n}\r\n.nvd3 line.nv-guideline {\r\n stroke: #ccc;\r\n}","/* ========================================================================\n * bootstrap-switch - v3.3.2\n * http://www.bootstrap-switch.org\n * ========================================================================\n * Copyright 2012-2013 Mattia Larentis\n *\n * ========================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================================\n */\n\n.bootstrap-switch {\n display: inline-block;\n direction: ltr;\n cursor: pointer;\n border-radius: 4px;\n border: 1px solid;\n border-color: #cccccc;\n position: relative;\n text-align: left;\n overflow: hidden;\n line-height: 8px;\n z-index: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n vertical-align: middle;\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.bootstrap-switch .bootstrap-switch-container {\n display: inline-block;\n top: 0;\n border-radius: 4px;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n}\n.bootstrap-switch .bootstrap-switch-handle-on,\n.bootstrap-switch .bootstrap-switch-handle-off,\n.bootstrap-switch .bootstrap-switch-label {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block !important;\n height: 100%;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 20px;\n}\n.bootstrap-switch .bootstrap-switch-handle-on,\n.bootstrap-switch .bootstrap-switch-handle-off {\n text-align: center;\n z-index: 1;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {\n color: #fff;\n background: #428bca;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {\n color: #fff;\n background: #5bc0de;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {\n color: #fff;\n background: #5cb85c;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {\n background: #f0ad4e;\n color: #fff;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {\n color: #fff;\n background: #d9534f;\n}\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {\n color: #000;\n background: #eeeeee;\n}\n.bootstrap-switch .bootstrap-switch-label {\n text-align: center;\n margin-top: -1px;\n margin-bottom: -1px;\n z-index: 100;\n color: #333333;\n background: #ffffff;\n}\n.bootstrap-switch .bootstrap-switch-handle-on {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.bootstrap-switch .bootstrap-switch-handle-off {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.bootstrap-switch input[type='radio'],\n.bootstrap-switch input[type='checkbox'] {\n position: absolute !important;\n top: 0;\n left: 0;\n opacity: 0;\n filter: alpha(opacity=0);\n z-index: -1;\n}\n.bootstrap-switch input[type='radio'].form-control,\n.bootstrap-switch input[type='checkbox'].form-control {\n height: auto;\n}\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n}\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {\n padding: 6px 16px;\n font-size: 18px;\n line-height: 1.33;\n}\n.bootstrap-switch.bootstrap-switch-disabled,\n.bootstrap-switch.bootstrap-switch-readonly,\n.bootstrap-switch.bootstrap-switch-indeterminate {\n cursor: default !important;\n}\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {\n opacity: 0.5;\n filter: alpha(opacity=50);\n cursor: default !important;\n}\n.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {\n -webkit-transition: margin-left 0.5s;\n transition: margin-left 0.5s;\n}\n.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.bootstrap-switch.bootstrap-switch-focused {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n",".cg-busy{\n\tposition:absolute;\n\ttop:0px;\n\tleft:0px;\n\tright:0px;\n\tbottom:0px;\n z-index:1001;\n}\n\n.cg-busy-animation.ng-hide-add,\n.cg-busy-animation.ng-hide-remove {\n -webkit-transition:all .3s ease;\n -moz-transition:all .3s ease;\n -o-transition:all .3s ease;\n transition:all .3s ease;\n display:block !important;\n}\n.cg-busy-animation.ng-hide-remove {\n opacity:0;\n -webkit-transform:translate(0px,-40px);\n -moz-transform:translate(0px,-40px);\n -ms-transform:translate(0px,-40px);\n -o-transform:translate(0px,-40px);\n transform:translate(0px,-40px);\n}\n.cg-busy-animation.ng-hide-remove.ng-hide-remove-active {\n opacity:1;\n -webkit-transform:translate(0px,0px);\n -moz-transform:translate(0px,0px);\n -ms-transform:translate(0px,0px);\n -o-transform:translate(0px,0px);\n transform:translate(0px,0px);\n}\n.cg-busy-animation.ng-hide-add {\n opacity:1;\n -webkit-transform:translate(0px,0px);\n -moz-transform:translate(0px,0px);\n -ms-transform:translate(0px,0px);\n -o-transform:translate(0px,0px);\n transform:translate(0px,0px);\n}\n.cg-busy-animation.ng-hide-add.ng-hide-add-active {\n opacity:0;\n -webkit-transform:translate(0px,-40px);\n -moz-transform:translate(0px,-40px);\n -ms-transform:translate(0px,-40px);\n -o-transform:translate(0px,-40px);\n transform:translate(0px,-40px);\n}\n\n.cg-busy-backdrop {\n\tbackground-color:white;\n\topacity:.7;\n}\n\n.cg-busy-backdrop-animation.ng-hide-add,\n.cg-busy-backdrop-animation.ng-hide-remove {\n -webkit-transition:opacity .3s ease;\n -moz-transition:opacity .3s ease;\n -o-transition:opacity .3s ease;\n transition:opacity .3s ease;\n display:block !important;\n}\n\n.cg-busy-backdrop-animation.ng-hide {\n opacity:0;\n}\n\n/* All styles below are for the default template. */\n\n.cg-busy-default-wrapper {\n\ttext-align:center;\n}\n\n.cg-busy-default-sign{\n\tdisplay: inline-block;\n\tposition:relative;\n z-index:1002;\n\tpadding-bottom: 6px;\n\tcolor:#333333;\n\ttext-shadow:0 1px 1px rgba(255, 255, 255, 0.75);\n\tbackground-color:#e9eeee;\n\tborder:1px solid #dddddd;\n\tborder-top-width:0;\n\t-webkit-border-radius:7px;\n\t-moz-border-radius:7px;\n\tborder-radius:7px;\n\tborder-top-left-radius:0;\n\tborder-top-right-radius:0;\n\t-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\t-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\tbox-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n}\n.cg-busy-default-text{\n\tmargin:13px 12px 6px 49px;\n\tfont-size:16px;\n\tcolor:#555;\n\ttext-align: left;\n\tmax-width: 400px;\n}\n.cg-busy-default-spinner{\n\tposition:absolute;\n\twidth:25px;\n\theight:25px;\n\tdisplay:inline-block;\n\ttop:12px;\n\tleft:14px;\n}\n.cg-busy-default-spinner div{\n\twidth:12%;\n\theight:26%;\n\tbackground:#000;\n\tposition:absolute;\n\tleft:44.5%;\n\ttop:37%;\n\topacity:0;\n\t-webkit-animation:cg-busy-spinner-anim 1s linear infinite;\n\t-moz-animation:cg-busy-spinner-anim 1s linear infinite;\n\t-ms-animation:cg-busy-spinner-anim 1s linear infinite;\n\t-o-animation:cg-busy-spinner-anim 1s linear infinite;\n\tanimation:cg-busy-spinner-anim 1s linear infinite;\n\t-webkit-border-radius:50px;\n\t-moz-border-radius:50px;\n\tborder-radius:50px;\n\t-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);\n\t-moz-box-shadow:0 0 3px rgba(0,0,0,0.2);\n\tbox-shadow:0 0 3px rgba(0,0,0,0.2);\n}\n.cg-busy-default-spinner div.bar1{\n\t-webkit-transform:rotate(0deg) translate(0, -142%);\n\t-moz-transform:rotate(0deg) translate(0, -142%);\n\t-ms-transform:rotate(0deg) translate(0, -142%);\n\t-o-transform:rotate(0deg) translate(0, -142%);\n\ttransform:rotate(0deg) translate(0, -142%);\n\t-webkit-animation-delay:0s;\n\t-moz-animation-delay:0s;\n\t-ms-animation-delay:0s;\n\t-o-animation-delay:0s;\n\tanimation-delay:0s;\n}\n.cg-busy-default-spinner div.bar2{\n\t-webkit-transform:rotate(30deg) translate(0, -142%);\n\t-moz-transform:rotate(30deg) translate(0, -142%);\n\t-ms-transform:rotate(30deg) translate(0, -142%);\n\t-o-transform:rotate(30deg) translate(0, -142%);\n\ttransform:rotate(30deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.9167s;\n\t-moz-animation-delay:-0.9167s;\n\t-ms-animation-delay:-0.9167s;\n\t-o-animation-delay:-0.9167s;\n\tanimation-delay:-0.9167s;\n}\n.cg-busy-default-spinner div.bar3{\n\t-webkit-transform:rotate(60deg) translate(0, -142%);\n\t-moz-transform:rotate(60deg) translate(0, -142%);\n\t-ms-transform:rotate(60deg) translate(0, -142%);\n\t-o-transform:rotate(60deg) translate(0, -142%);\n\ttransform:rotate(60deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.833s;\n\t-moz-animation-delay:-0.833s;\n\t-ms-animation-delay:-0.833s;\n\t-o-animation-delay:-0.833s;\n\tanimation-delay:-0.833s;\n}\n.cg-busy-default-spinner div.bar4{\n\t-webkit-transform:rotate(90deg) translate(0, -142%);\n\t-moz-transform:rotate(90deg) translate(0, -142%);\n\t-ms-transform:rotate(90deg) translate(0, -142%);\n\t-o-transform:rotate(90deg) translate(0, -142%);\n\ttransform:rotate(90deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.75s;\n\t-moz-animation-delay:-0.75s;\n\t-ms-animation-delay:-0.75s;\n\t-o-animation-delay:-0.75s;\n\tanimation-delay:-0.75s;\n}\n.cg-busy-default-spinner div.bar5{\n\t-webkit-transform:rotate(120deg) translate(0, -142%);\n\t-moz-transform:rotate(120deg) translate(0, -142%);\n\t-ms-transform:rotate(120deg) translate(0, -142%);\n\t-o-transform:rotate(120deg) translate(0, -142%);\n\ttransform:rotate(120deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.667s;\n\t-moz-animation-delay:-0.667s;\n\t-ms-animation-delay:-0.667s;\n\t-o-animation-delay:-0.667s;\n\tanimation-delay:-0.667s;\n}\n.cg-busy-default-spinner div.bar6{\n\t-webkit-transform:rotate(150deg) translate(0, -142%);\n\t-moz-transform:rotate(150deg) translate(0, -142%);\n\t-ms-transform:rotate(150deg) translate(0, -142%);\n\t-o-transform:rotate(150deg) translate(0, -142%);\n\ttransform:rotate(150deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.5833s;\n\t-moz-animation-delay:-0.5833s;\n\t-ms-animation-delay:-0.5833s;\n\t-o-animation-delay:-0.5833s;\n\tanimation-delay:-0.5833s;\n}\n.cg-busy-default-spinner div.bar7{\n\t-webkit-transform:rotate(180deg) translate(0, -142%);\n\t-moz-transform:rotate(180deg) translate(0, -142%);\n\t-ms-transform:rotate(180deg) translate(0, -142%);\n\t-o-transform:rotate(180deg) translate(0, -142%);\n\ttransform:rotate(180deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.5s;\n\t-moz-animation-delay:-0.5s;\n\t-ms-animation-delay:-0.5s;\n\t-o-animation-delay:-0.5s;\n\tanimation-delay:-0.5s;\n}\n.cg-busy-default-spinner div.bar8{\n\t-webkit-transform:rotate(210deg) translate(0, -142%);\n\t-moz-transform:rotate(210deg) translate(0, -142%);\n\t-ms-transform:rotate(210deg) translate(0, -142%);\n\t-o-transform:rotate(210deg) translate(0, -142%);\n\ttransform:rotate(210deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.41667s;\n\t-moz-animation-delay:-0.41667s;\n\t-ms-animation-delay:-0.41667s;\n\t-o-animation-delay:-0.41667s;\n\tanimation-delay:-0.41667s;\n}\n.cg-busy-default-spinner div.bar9{\n\t-webkit-transform:rotate(240deg) translate(0, -142%);\n\t-moz-transform:rotate(240deg) translate(0, -142%);\n\t-ms-transform:rotate(240deg) translate(0, -142%);\n\t-o-transform:rotate(240deg) translate(0, -142%);\n\ttransform:rotate(240deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.333s;\n\t-moz-animation-delay:-0.333s;\n\t-ms-animation-delay:-0.333s;\n\t-o-animation-delay:-0.333s;\n\tanimation-delay:-0.333s;\n}\n.cg-busy-default-spinner div.bar10{\n\t-webkit-transform:rotate(270deg) translate(0, -142%);\n\t-moz-transform:rotate(270deg) translate(0, -142%);\n\t-ms-transform:rotate(270deg) translate(0, -142%);\n\t-o-transform:rotate(270deg) translate(0, -142%);\n\ttransform:rotate(270deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.25s;\n\t-moz-animation-delay:-0.25s;\n\t-ms-animation-delay:-0.25s;\n\t-o-animation-delay:-0.25s;\n\tanimation-delay:-0.25s;\n}\n.cg-busy-default-spinner div.bar11{\n\t-webkit-transform:rotate(300deg) translate(0, -142%);\n\t-moz-transform:rotate(300deg) translate(0, -142%);\n\t-ms-transform:rotate(300deg) translate(0, -142%);\n\t-o-transform:rotate(300deg) translate(0, -142%);\n\ttransform:rotate(300deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.1667s;\n\t-moz-animation-delay:-0.1667s;\n\t-ms-animation-delay:-0.1667s;\n\t-o-animation-delay:-0.1667s;\n\tanimation-delay:-0.1667s;\n}\n.cg-busy-default-spinner div.bar12{\n\t-webkit-transform:rotate(330deg) translate(0, -142%);\n\t-moz-transform:rotate(330deg) translate(0, -142%);\n\t-ms-transform:rotate(330deg) translate(0, -142%);\n\t-o-transform:rotate(330deg) translate(0, -142%);\n\ttransform:rotate(330deg) translate(0, -142%);\n\t-webkit-animation-delay:-0.0833s;\n\t-moz-animation-delay:-0.0833s;\n\t-ms-animation-delay:-0.0833s;\n\t-o-animation-delay:-0.0833s;\n\tanimation-delay:-0.0833s;\n}\n\n@-webkit-keyframes cg-busy-spinner-anim{\n\tfrom {opacity: 1;}\n\tto {opacity: 0.25;}\n}\n@-moz-keyframes cg-busy-spinner-anim{\n\tfrom {opacity: 1;}\n\tto {opacity: 0.25;}\n}\n@keyframes cg-busy-spinner-anim{\n\tfrom {opacity: 1;}\n\tto {opacity: 0.25;}\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/static/js/nzbhydra.js b/static/js/nzbhydra.js index c427dca..93dc717 100644 --- a/static/js/nzbhydra.js +++ b/static/js/nzbhydra.js @@ -1,5 +1,7286 @@ -function hydraupdates(){function e(e,t,n){e.loadingPromise=t.getVersions().then(function(t){e.currentVersion=t.data.currentVersion,e.repVersion=t.data.repVersion,e.updateAvailable=t.data.updateAvailable,e.changelog=t.data.changelog}),t.getVersionHistory().then(function(t){e.versionHistory=n.trustAsHtml(t.data.versionHistory)}),e.update=function(){t.update()},e.showChangelog=function(){t.showChanges(e.changelog)}}return e.$inject=["$scope","UpdateService","$sce"],{templateUrl:"static/html/directives/updates.html",controller:e}}function titleRow(){function e(e){function t(){return e.expanded&&e.duplicates.length>1?(console.log("Showing all duplicates in group"),e.duplicates):(console.log("Showing first duplicate in group"),[e.duplicates[0]])}e.expanded=!1,console.log("Building title row"),e.duplicatesToShow=t}return{templateUrl:"static/html/directives/title-row.html",scope:{duplicates:"<",selected:"<",rowIndex:"@"},controller:["$scope","$element","$attrs",e]}}function titleGroup(){function e(e,t,n){function r(){return e.titles.slice(1)}e.expanded=!1,e.titleGroupExpanded=!1,e.$on("toggleTitleExpansion",function(t,n){e.titleGroupExpanded=n,t.stopPropagation()}),e.titlesToShow=r}return{templateUrl:"static/html/directives/title-group.html",scope:{titles:"<",selected:"=",rowIndex:"<",doShowDuplicates:"<",internalRowIndex:"@"},controller:["$scope","$element","$attrs",e],multiElement:!0}}function tabOrChart(){return{templateUrl:"static/html/directives/tab-or-chart.html",transclude:{chartSlot:"chart",tableSlot:"table"},restrict:"E",replace:!0,scope:{display:"@"}}}function searchResult(){function e(e,t,n){function r(){return e.showDuplicates&&e.titleGroup[0].length>1&&e.hashGroupExpanded[e.titleGroup[0][0].hash]?e.titleGroup[0].slice(1):[]}function o(){return e.titleGroup.length>1&&e.titleGroupExpanded?e.titleGroup.slice(1):[]}function a(t){return e.showDuplicates&&e.hashGroupExpanded[t[0].hash]?t.slice(1):[]}e.titleGroupExpanded=!1,e.hashGroupExpanded={},e.toggleTitleGroup=function(){e.titleGroupExpanded=!e.titleGroupExpanded,e.titleGroupExpanded||(e.hashGroupExpanded[e.titleGroup[0][0].hash]=!1)},e.groupingRowDuplicatesToShow=r,e.otherTitleRowsToShow=o,e.hashGroupDuplicatesToShow=a}return{templateUrl:"static/html/directives/search-result.html",require:"^titleGroup",scope:{titleGroup:"<",showDuplicates:"<",selected:"<",rowIndex:"<"},controller:["$scope","$element","$attrs",e],multiElement:!0}}function otherColumns(e,t,n,r){function o(e,t,n,o,a){function i(n){if(0!=n.has_nfo){var r=new URI("internalapi/getnfo");return r.addQuery("searchresultid",n.searchResultId),t.get(r.toString()).then(function(t){t.data.has_nfo?e.openModal("lg",t.data.nfo):angular.isUndefined(n.message)?o.info("No NFO available"):o.error(n.message)})}}function s(e,t){var r=n.open({template:'
',controller:NfoModalInstanceCtrl,size:e,resolve:{nfo:function(){return t}}});r.result.then()}function l(e){r.location.href=e.link}e.showDetailsDl=a.getUserInfos().maySeeDetailsDl,e.showNfo=i,e.openModal=s,e.downloadNzb=l,e.getNfoTooltip=function(){return 1==e.result.has_nfo?"Show NFO":2==e.result.has_nfo?"Try to load NFO (may not be available)":"No NFO available"}}return o.$inject=["$scope","$http","$uibModal","growl","HydraAuthService"],{scope:{result:"<"},multiElement:!0,link:function(r,o,a){e.get("static/html/directives/search-result-non-title-columns.html",{cache:t}).success(function(e){o.replaceWith(n(e)(r))})},controller:o}}function NfoModalInstanceCtrl(e,t,n){e.nfo=n,e.ok=function(){t.close(e.selected.item)},e.cancel=function(){t.dismiss()}}function onFinishRender(e){function t(t,n,r){t.$last===!0&&e(function(){t.$evalAsync(r.onFinishRender)})}return{link:t}}function hydralog(){function e(e,t,n,r,o){function a(){return t.get("internalapi/getlogs").success(function(t){e.log=n.trustAsHtml(t.log)})}function i(){e.tailInterval=r(function(){a(),e.doTailLog&&e.scrollToBottom()},5e3)}e.tailInterval=null,e.doUpdateLog=null!=o.get("doUpdateLog")?o.get("doUpdateLog"):!1,e.doTailLog=null!=o.get("doTailLog")?o.get("doTailLog"):!1,e.logPromise=a(),e.scrollToBottom=function(){document.getElementById("logfile").scrollTop=1e7,document.getElementById("logfile").scrollTop=100001e3},e.update=function(){a(),e.scrollToBottom()},e.toggleUpdate=function(){e.doUpdateLog?i():null!=e.tailInterval&&(console.log("Cancelling"),r.cancel(e.tailInterval),o.set("doTailLog",!1),e.doTailLog=!1),o.set("doUpdateLog",e.doUpdateLog)},e.toggleTailLog=function(){o.set("doTailLog",e.doTailLog)},e.doUpdateLog&&i(),e.$on("$destroy",function(){null!==e.tailInterval&&r.cancel(e.tailInterval)})}return e.$inject=["$scope","$http","$sce","$interval","localStorageService"],{templateUrl:"static/html/directives/log.html",controller:e}}function indexerInput(){function e(e){e.isFocused=!1,e.onFocus=function(){e.isFocused=!0},e.onBlur=function(){e.isFocused=!1}}return e.$inject=["$scope"],{templateUrl:"static/html/directives/indexer-input.html",scope:{indexer:"=",model:"=",onClick:"="},replace:!0,controller:e}}function focusOn(){function e(e,t,n){e.$on("focusOn",function(e,r){r===n.focusOn&&t[0].focus()})}return e}function duplicateGroup(){function e(e,t){function n(){return e.duplicates.slice(1)}function r(e,t,n){return e>=t&&n>=e||t>=e&&e>=n}function o(e,t,n){var r=_.indexOf(e,t);r>-1?e.splice(r,1):n||e.push(t)}e.internalRowIndex=Number(e.internalRowIndex),e.rowIndex=Number(e.rowIndex),e.titlesExpanded=!1,e.duplicatesExpanded=!1,e.foo={duplicatesDisplayed:null!=t.get("duplicatesDisplayed")?t.get("duplicatesDisplayed"):!1},e.duplicatesToShow=n,e.toggleTitleExpansion=function(){e.titlesExpanded=!e.titlesExpanded,e.$emit("toggleTitleExpansion",e.titlesExpanded)},e.toggleDuplicateExpansion=function(){e.duplicatesExpanded=!e.duplicatesExpanded},e.$on("invertSelection",function(){for(var t=0;t0?o(e.selected,e.duplicates[t],!0):o(e.selected,e.duplicates[t])}),e.$on("duplicatesDisplayed",function(t,n){e.foo.duplicatesDisplayed=n}),e.clickCheckbox=function(t){var n=1e3*e.rowIndex+100*e.internalRowIndex+Number(t.currentTarget.dataset.checkboxIndex);console.log(n),e.$emit("checkboxClicked",t,n,t.currentTarget.checked)},e.$on("shiftClick",function(t,n,o,a){var i=1e3*e.rowIndex+100*e.internalRowIndex;if(r(i,n,o))for(var s=0;s-1&&!a&&(e.selected.splice(l,1),console.log("Removing from selection"))}})}return e.$inject=["$scope","localStorageService"],{templateUrl:"static/html/directives/duplicate-group.html",scope:{duplicates:"<",selected:"=",isFirstRow:"<",rowIndex:"<",displayTitleToggle:"<",internalRowIndex:"@"},controller:e}}function downloadNzbzipButton(){function e(e,t,n){e.download=function(){if(angular.isUndefined(e.searchResults)||0==e.searchResults.length)t.info("You should select at least one result...");else{var r,o=_.map(e.searchResults,function(e){return e.searchResultId}),a="getnzbzip?searchresultids="+o.join("|");r=angular.isDefined(e.searchTitle)?" for "+e.searchTitle:"";var i="NZBHydra NZBs"+r+".zip";n.downloadFile(a,i)}}}return e.$inject=["$scope","growl","FileDownloadService"],{templateUrl:"static/html/directives/download-nzbzip-button.html",require:["^searchResults"],scope:{searchResults:"<",searchTitle:"<"},controller:e}}function downloadNzbsButton(){function e(e,t,n){e.downloaders=t.getEnabledDownloaders(),e.download=function(r){if(angular.isUndefined(e.searchResults)||0==e.searchResults.length)n.info("You should select at least one result...");else{var o=_.map(e.searchResults,function(e){return e.searchResultId});t.download(r,o).then(function(e){e.data.success?n.info("Successfully added "+e.data.added+" of "+e.data.of+" NZBs"):n.error("Error while adding NZBs")},function(){n.error("Error while adding NZBs")})}}}return e.$inject=["$scope","NzbDownloadService","growl"],{templateUrl:"static/html/directives/download-nzbs-button.html",require:["^searchResults"],scope:{searchResults:"<"},controller:e}}function columnFilterWrapper(){function e(e){var t=this;t.open=!1,t.isActive=!1,t.toggle=function(){t.open=!t.open,t.open&&e.$broadcast("opened")},e.$on("filter",function(e,n,r,o){t.open=!1,t.isActive=o})}return e.$inject=["$scope"],{restrict:"E",templateUrl:"static/html/dataTable/columnFilterOuter.html",transclude:!0,controllerAs:"columnFilterWrapperCtrl",scope:!0,bindToController:!0,controller:e}}function freetextFilter(){function e(e,t){e.data={},e.$on("opened",function(){t("freetext-filter-input")}),e.onKeypress=function(t){13===t.which&&e.$emit("filter",e.column,{filter:e.data.filter,filtertype:"freetext"},angular.isDefined(e.data.filter)&&e.data.filter.length>0)}}return e.$inject=["$scope","focus"],{template:"",require:"^columnFilterWrapper",controllerAs:"innerController",scope:{column:"@"},controller:e}}function checkboxesFilter(){function e(e){e.selected={entries:[]},e.preselect&&(e.selected.entries=e.entries.slice()),e.invert=function(){e.selected.entries=_.difference(e.entries,e.selected.entries)},e.apply=function(){console.log(e.selected);var t=e.selected.entries.length",controllerAs:"checkboxesFilterController",scope:{column:"@",entries:"<",preselect:"<",showInvert:"<",isBoolean:"<"},controller:e}}function booleanFilter(){function e(e){e.selected={value:e.options[e.preselect].value},e.apply=function(){console.log(e.selected),e.$emit("filter",e.column,{filter:e.selected.value,filtertype:"boolean"},e.selected.value!=e.options[0].value)}}return e.$inject=["$scope"],{template:"",controllerAs:"booleanFilterController",scope:{column:"@",options:"<",preselect:"@"},controller:e}}function timeFilter(){function e(e){e.dateOptions={dateDisabled:!1,formatYear:"yy",startingDay:1},e.formats=["dd-MMMM-yyyy","yyyy/MM/dd","dd.MM.yyyy","shortDate"],e.format=e.formats[0],e.altInputFormats=["M!/d!/yyyy"],e.openAfter=function(){e.after.opened=!0},e.openBefore=function(){e.before.opened=!0},e.after={opened:!1},e.before={opened:!1},e.apply=function(){var t=e.selected.beforeDate||e.selected.afterDate;e.$emit("filter",e.column,{filter:{after:e.selected.afterDate,before:e.selected.beforeDate},filtertype:"time"},t)}}return e.$inject=["$scope"],{template:"",scope:{column:"@",selected:"<"},controller:e}}function columnSortable(){function e(e){angular.isUndefined(e.sortMode)&&(e.sortMode=0),e.$on("newSortColumn",function(t,n){n!=e.column&&(e.sortMode=0)}),e.sort=function(){e.sortMode=(e.sortMode+1)%3,e.$emit("sort",e.column,e.sortMode)}}return e.$inject=["$scope"],{restrict:"E",templateUrl:"static/html/dataTable/columnSortable.html",transclude:!0,scope:{sortMode:"@",column:"@"},controller:e}}function connectionTest(){function e(e){function t(){angular.element(r).removeClass("btn-default"),angular.element(r).removeClass("btn-danger"),angular.element(r).addClass("btn-success")}function n(){angular.element(r).removeClass("btn-default"),angular.element(r).removeClass("btn-success"),angular.element(r).addClass("btn-danger")}e.message="",console.log(e);var r="#button-test-connection",o="#message-test-connection";e.testConnection=function(){angular.element(r).addClass("glyphicon-refresh-animate");var a,i,s=angular.injector(["ng"]),l=s.get("$http");"downloader"==e.type?(a="internalapi/test_downloader",i={name:e.downloader,username:e.data.username,password:e.data.password},"sabnzbd"==e.downloader?(i.apikey=e.data.apikey,i.url=e.data.url):(i.host=e.data.host,i.port=e.data.port,i.ssl=e.data.ssl)):"newznab"==e.data.type&&(a="internalapi/test_newznab",i={host:e.data.host,apikey:e.data.apikey},angular.isDefined(e.data.username)&&(i.username=e.data.username,i.password=e.data.password)),l.get(a,{params:i}).success(function(e){e.result?(angular.element(o).text(""),t()):(angular.element(o).text(e.message),n())}).error(function(){angular.element(o).text(result.message),n()})["finally"](function(){angular.element(r).removeClass("glyphicon-refresh-animate")})}}return e.$inject=["$scope"],{templateUrl:"static/html/directives/connection-test.html",require:["^type","^data"],scope:{type:"=",id:"=",data:"=",downloader:"="},controller:e}}function cfgFormEntry(){return{templateUrl:"static/html/directives/cfg-form-entry.html",require:["^title","^cfg"],scope:{title:"@",cfg:"=",help:"@",type:"@?",options:"=?"},controller:["$scope","$element","$attrs",function(e,t,n){e.type=angular.isDefined(e.type)?e.type:"text",e.options=angular.isDefined(e.type)?e.$eval(n.options):[]}]}}function hydrabackup(){function e(e,t,n,r,o,a,i){e.refreshBackupList=function(){t.getBackupsList().then(function(t){e.backups=t})},e.refreshBackupList(),e.uploadActive=!1,e.createAndDownloadBackupFile=function(){r.downloadFile("internalapi/getbackup","nzbhydra-backup-"+moment().format("YYYY-MM-DD-HH-mm")+".zip")},e.uploadBackupFile=function(t,r){o.specificallyHandled(function(){console.log("Hallo"),e.file=t,e.errFile=r&&r[0],t&&(e.uploadActive=!0,t.upload=n.upload({url:"internalapi/restorebackup",data:{content:t}}),t.upload.then(function(n){e.uploadActive=!1,t.result=n.data,i.restart("Restore successful.")},function(t){e.uploadActive=!1,a.error(t.data)},function(e){t.progress=Math.min(100,parseInt(100*e.loaded/e.total)),t.loaded=Math.floor(e.loaded/1024),t.total=Math.floor(e.total/1024)}))})},e.restoreFromFile=function(e){t.restoreFromFile(e).then(function(){i.restart("Restore successful.")},function(e){a.error(e.data)})}}return e.$inject=["$scope","BackupService","Upload","FileDownloadService","RequestsErrorHandler","growl","RestartService"],{templateUrl:"static/html/directives/backup.html",controller:e}}function addableNzbs(){function e(e,t){e.downloaders=_.filter(t.getEnabledDownloaders(),function(t){return"nzb"!=e.downloadType?t.downloadType==e.downloadType:!0})}return e.$inject=["$scope","NzbDownloadService"],{templateUrl:"static/html/directives/addable-nzbs.html",require:["^searchResultId"],scope:{searchResultId:"<",downloadType:"<"},controller:e}}function addableNzb(){function e(e,t,n){e.downloader.iconCssClass?e.cssClass="fa fa-"+e.downloader.iconCssClass.replace("fa-","").replace("fa ",""):e.cssClass="sabnzbd"==e.downloader.type?"sabnzbd":"nzbget",e.add=function(){e.cssClass="nzb-spinning",t.download(e.downloader,[e.searchResultId]).then(function(t){t.data.success?e.cssClass="sabnzbd"==e.downloader.type?"sabnzbd-success":"nzbget-success":(e.cssClass="sabnzbd"==e.downloader.type?"sabnzbd-error":"nzbget-error",n.error("Unable to add NZB. Make sure the downloader is running and properly configured."))},function(){e.cssClass="sabnzbd"==e.downloader.type?"sabnzbd-error":"nzbget-error",n.error("An unexpected error occurred while trying to contact NZB Hydra or add the NZB.")})}}return e.$inject=["$scope","NzbDownloadService","growl"],{templateUrl:"static/html/directives/addable-nzb.html",scope:{searchResultId:"<",downloader:"<"},controller:e}}function UpdateService(e,t,n,r){function o(){return e.get("internalapi/get_versions").then(function(e){return c=e.data.currentVersion,u=e.data.repVersion,d=e.data.updateAvailable,e})}function a(){return e.get("internalapi/get_changelog",{currentVersion:c,repVersion:u}).then(function(e){return p=e.data.changelog,e})}function i(){return e.get("internalapi/get_version_history").then(function(e){return h=e.data.versionHistory,e})}function s(e){var t=angular.injector(["ng","ui.bootstrap"]),n=t.get("$uibModal"),r={size:"lg",templateUrl:"static/html/changelog.html",resolve:{changelog:function(){return e}},controller:function(e,t,n,r){r=t.trustAsHtml(r),e.changelog=r,console.log(r),e.ok=function(){n.dismiss()}}},o=n.open(r);o.result.then()}function l(){n.start("Updating. Please stand by..."),e.get("internalapi/update").then(function(e){e.data.success?r.restart("Update complete.",15):(n.reset(),t.info("An error occurred while updating. Please check the logs."))},function(){n.reset(),t.info("An error occurred while updating. Please check the logs.")})}var c,u,d,p,h;return{update:l,showChanges:s,getVersions:o,getChangelog:a,getVersionHistory:i}}function UpdateFooterController(e,t,n){function r(){e.checked=!0,t.getVersions().then(function(t){e.currentVersion=t.data.currentVersion,e.repVersion=t.data.repVersion,e.updateAvailable=t.data.updateAvailable,e.changelog=t.data.changelog})}e.updateAvailable=!1,e.checked=!1,e.mayUpdate=n.getUserInfos().maySeeAdmin,e.$on("user:loggedIn",function(){n.getUserInfos().maySeeAdmin&&!e.checked&&r()}),e.mayUpdate&&r(),e.update=function(){t.update()},e.showChangelog=function(){t.showChanges(e.changelog)}}function SystemController(e,t,n,r,o,a,i,s,l){e.activeTab=n,e.shutdown=function(){l.shutdown().then(function(){o.info("Shutdown initiated. Cya!")},function(){o.info("Unable to send shutdown command.")})},e.restart=function(){a.restart()},e.deleteLogAndDatabase=function(){i.open("Delete log and db","Are you absolutely sure you want to delete your database and log files? Hydra will restart to do that.",{yes:{onYes:function(){l.deleteLogAndDb(),a.countdown()},text:"Yes, delete log and database"},no:{onCancel:function(){},text:"Nah"}})},e.forceUpdate=function(){s.update()},e.allTabs=[{active:!1,state:"root.system.control",name:"Control"},{active:!1,state:"root.system.updates",name:"Updates"},{active:!1,state:"root.system.log",name:"Log"},{active:!1,state:"root.system.backup",name:"Backup"},{active:!1,state:"root.system.bugreport",name:"Bugreport"},{active:!1,state:"root.system.about",name:"About"}],e.goToSystemState=function(n){t.go(e.allTabs[n].state,{activeTab:n},{inherit:!1,notify:!0,reload:!0})},e.downloadDebuggingInfos=function(){r({method:"GET",url:"internalapi/getdebugginginfos",responseType:"arraybuffer"}).success(function(e,t,n,r){var o=document.createElement("a"),a=new Blob([e],{type:"application/octet-stream"});o.href=URL.createObjectURL(a);var i="nzbhydra-debuginfo-"+moment().format("YYYY-MM-DD-HH-mm")+".zip";o.download=i,document.body.appendChild(o),o.click(),document.body.removeChild(o)}).error(function(e,t,n,r){console.log("Error:"+t)})}}function StatsService(e){function t(t,n){return e.get("internalapi/getstats",{params:{after:t,before:n}}).success(function(e){return e.data})}function n(t,n,r,o){var a={page:t,limit:n,filterModel:r};return angular.isUndefined(t)&&(a.page=1),angular.isUndefined(n)&&(a.limit=100),angular.isUndefined(r)&&(a.filterModel={}),angular.isUndefined(o)||(a.sortModel=o),e.post("internalapi/getnzbdownloads",a).success(function(e){return{nzbDownloads:e.nzbDownloads,totalDownloads:e.totalDownloads}})}return{get:t,getDownloadHistory:n}}function StatsController(e,t,n,r){function o(){r.start("Updating stats...");var t=null!=e.afterDate?Math.floor(e.afterDate.getTime()/1e3):null,o=null!=e.beforeDate?Math.floor(e.beforeDate.getTime()/1e3):null;n.get(t,o).then(function(t){e.setStats(t)}),r.reset()}function a(e,t,n,r,o,a){return{options:{chart:{type:e,height:350,margin:{top:20,right:20,bottom:100,left:50},x:function(e){return e[n]},y:function(e){return e[r]},showValues:!0,valueFormat:function(e){return e},color:function(){return"red"},showControls:!1,showLegend:!1,duration:100,xAxis:{axisLabel:o,tickFormat:function(e){return e},rotateLabels:30,showMaxMin:!1,color:function(){return"white"}},yAxis:{axisLabel:a,axisLabelDistance:-10,tickFormat:function(e){return e}},tooltip:{enabled:!1},zoom:{enabled:!0,scaleExtent:[1,10],useFixedDomain:!1,useNiceScale:!1,horizontalOff:!1,verticalOff:!0,unzoomEventType:"dblclick.zoom"}}},data:[{key:"doesntmatter",bar:!0,values:t}]}}function i(){return{options:{chart:{type:"multiBarChart",height:350,margin:{top:20,right:20,bottom:100,left:45},clipEdge:!0,duration:500,stacked:!1,reduceXTicks:!1,showValues:!0,tooltip:{enabled:!0,valueFormatter:function(e){return e+"%"}},showControls:!1,xAxis:{axisLabel:"",showMaxMin:!1,rotateLabels:30,axisLabelDistance:30,tickFormat:function(e){return e}},yAxis:{axisLabel:"Share (%)",axisLabelDistance:-20,tickFormat:function(e){return e}}}},data:[{key:"Results",values:_.map(e.avgIndexerSearchResultsShares,function(e){return{series:0,y:e.avgResultsShare,x:e.name}})},{key:"Unique results",values:_.map(e.avgIndexerSearchResultsShares,function(e){return{series:1,y:e.avgUniqueResults,x:e.name}})}]}}e.dateOptions={dateDisabled:!1,formatYear:"yy",startingDay:1};var s=!0,l=!0;e.afterDate=moment().subtract(30,"days").toDate(),e.beforeDate=moment().toDate(),o(),e.openAfter=function(){e.after.opened=!0},e.openBefore=function(){e.before.opened=!0},e.after={opened:!1},e.before={opened:!1},e.$watch("beforeDate",function(){l?l=!1:o()}),e.$watch("afterDate",function(){s?s=!1:o()}),e.onKeypress=function(e){13===e.which&&o()},e.formats=["dd-MMMM-yyyy","yyyy/MM/dd","dd.MM.yyyy","shortDate"],e.format=e.formats[0],e.altInputFormats=["M!/d!/yyyy"],e.setStats=function(n){n=n.data,e.nzbDownloads=null,e.avgResponseTimes=n.avgResponseTimes,e.avgIndexerSearchResultsShares=n.avgIndexerSearchResultsShares,e.avgIndexerAccessSuccesses=n.avgIndexerAccessSuccesses,e.indexerDownloadShares=n.indexerDownloadShares,e.downloadsPerHourOfDay=n.timeBasedDownloadStats.perHourOfDay,e.downloadsPerDayOfWeek=n.timeBasedDownloadStats.perDayOfWeek,e.searchesPerHourOfDay=n.timeBasedSearchStats.perHourOfDay,e.searchesPerDayOfWeek=n.timeBasedSearchStats.perDayOfWeek;var r=e.avgResponseTimes.length;e.avgResponseTimesChart=a("multiBarHorizontalChart",e.avgResponseTimes,"name","avgResponseTime","","Response time"),e.avgResponseTimesChart.options.chart.margin.left=100,e.avgResponseTimesChart.options.chart.yAxis.rotateLabels=-30;var o=Math.max(30*r,350);e.avgResponseTimesChart.options.chart.height=o,e.resultsSharesChart=i();var s=30;r>30&&(s=70),e.resultsSharesChart.options.chart.xAxis.rotateLabels=s,e.resultsSharesChart.options.chart.height=o,e.downloadsPerHourOfDayChart=a("discreteBarChart",e.downloadsPerHourOfDay,"hour","count","Hour of day","Downloads"),e.downloadsPerHourOfDayChart.options.chart.xAxis.rotateLabels=0,e.downloadsPerDayOfWeekChart=a("discreteBarChart",e.downloadsPerDayOfWeek,"day","count","Day of week","Downloads"),e.downloadsPerDayOfWeekChart.options.chart.xAxis.rotateLabels=0,e.searchesPerHourOfDayChart=a("discreteBarChart",e.searchesPerHourOfDay,"hour","count","Hour of day","Searches"),e.searchesPerHourOfDayChart.options.chart.xAxis.rotateLabels=0,e.searchesPerDayOfWeekChart=a("discreteBarChart",e.searchesPerDayOfWeek,"day","count","Day of week","Searches"),e.searchesPerDayOfWeekChart.options.chart.xAxis.rotateLabels=0,e.indexerDownloadSharesChart={options:{chart:{type:"pieChart",height:500,x:function(e){return e.name},y:function(e){return e.share},showLabels:!0,duration:500,labelThreshold:.01,labelSunbeamLayout:!0,tooltip:{valueFormatter:function(e,n){return t("number")(e,2)+"%"}},legend:{margin:{top:5,right:35,bottom:5,left:0}}}},data:e.indexerDownloadShares},e.indexerDownloadSharesChart.options.chart.height=Math.min(Math.max(40*r,350),900)}}function SearchService(e){function t(t,n,o,i,s,l,c,u,d,p,h,f,m,g,y){var b;return t.indexOf("Movies")>-1||0==t.indexOf("20")||"movie"==y?(b=new URI("internalapi/moviesearch"),angular.isDefined(o)?b.addQuery("tmdbid",o):angular.isDefined(i)?b.addQuery("imdbid",i):b.addQuery("query",n)):t.indexOf("TV")>-1||0==t.indexOf("50")||"tvsearch"==y?(b=new URI("internalapi/tvsearch"),angular.isDefined(l)&&b.addQuery("tvdbid",l),angular.isDefined(c)?b.addQuery("rid",c):b.addQuery("query",n),angular.isDefined(u)&&b.addQuery("season",u),angular.isDefined(d)&&b.addQuery("episode",d)):(b=new URI("internalapi/search"),b.addQuery("query",n)),angular.isDefined(s)&&b.addQuery("title",s),_.isNumber(p)&&b.addQuery("minsize",p),_.isNumber(h)&&b.addQuery("maxsize",h),_.isNumber(f)&&b.addQuery("minage",f),_.isNumber(m)&&b.addQuery("maxage",m),angular.isUndefined(g)||b.addQuery("indexers",decodeURIComponent(g)),b.addQuery("category",t),a=b,e.get(b.toString()).then(r)}function n(t,n){return a.removeQuery("offset"),a.addQuery("offset",t),a.addQuery("loadAll",n?!0:!1),e.get(a.toString()).then(r)}function r(e){var t=e.data.results,n=e.data.indexersearches,r=e.data.total,o=e.data.rejected,a=t.length;return _.each(n,function(e){e.did_search&&(e.averageResponseTime=_.reduce(e.apiAccesses,function(e,t){return e+t.response_time},0),e.averageResponseTime=e.averageResponseTime/e.apiAccesses.length)}),i={results:t,indexersearches:n,total:r,resultsCount:a,rejected:o}}function o(){return i}var a,i;return{search:t,getLastResults:o,loadMore:n}}function sumRejected(e){return _.reduce(e,function(e,t){return e+t[1]},0)}function SearchResultsController(e,t,n,r,o,a,i,s,l){function c(e){return e[0][t.sortPredicate]}function u(e){return e[0][0].searchResultId}function d(e){var t=n.defer();return o.start(e),r(function(){t.resolve()},100),t.promise}function p(e,n){e==t.sortPredicate?t.sortReversed=!t.sortReversed:t.sortReversed=n,t.sortPredicate=e,d("Sorting / filtering...").then(function(){t.filteredResults=f(t.results),o.reset(),i.set("sorting",{predicate:e,reversed:t.sortReversed})})}function h(e){var n=!0;return n=n&&t.titleFilter&&e.title.toLowerCase().indexOf(t.titleFilter)>-1,n=n&&t.minSizeFilter&&1024*t.minSizeFilter*1024e.size}function f(e,n,r,o,i,s){function l(e){var a=!0;if(a=a&&(!_.isNumber(i)||e.size/1024/1024>=i)&&(!_.isNumber(s)||e.size/1024/1024<=s)&&(!_.isNumber(r)||e.age_days>=Number(r))&&(!_.isNumber(o)||e.age_days<=Number(o)),a&&n){var l=n.toLowerCase().split(" ");a=_.every(l,function(t){return e.title.toLowerCase().indexOf(t)>-1})}return a||t.countFilteredOut++,a}function c(e){return t.indexerDisplayState[e.indexer.toLowerCase()]}function u(e){return e.title.toLowerCase().replace(/[\s\-\._]/gi,"")}function d(e){function n(e){var n=_.sortBy(e,function(e){var n;return n="grabs"==t.sortPredicate?angular.isDefined(e.grabs)?e.grabs:0:e[t.sortPredicate],t.sortReversed?-n:n});return n=_.sortBy(n,function(e){return-1*e.indexerscore})}function r(e){if("grabs"==t.sortPredicate)n=angular.isDefined(e[0].grabs)?e[0].grabs:0;else var n=e[0][t.sortPredicate];return t.sortReversed?-n:n}return _.chain(e).groupBy("hash").map(n).sortBy(r).value()}function p(e){var n;return n="title"==t.sortPredicate?e[0][0].title.toLowerCase():"grabs"==t.sortPredicate?angular.isDefined(e[0][0].grabs)?e[0][0].grabs:0:e[0][0][t.sortPredicate]}t.countFilteredOut=0;var h=_.chain(e).filter(l).filter(c).groupBy(u).map(d).sortBy(p).value();return t.sortReversed&&(h=h.reverse()),t.countFilteredOut>0&&a.info("Filtered "+t.countFilteredOut+" of the retrieved results"),t.lastClicked=null,h}function m(){o.reset()}function g(e){d(e?"Loading all results...":"Loading more results...").then(function(){s.loadMore(t.resultsCount,e).then(function(e){t.results=t.results.concat(e.results),t.filteredResults=f(t.results),t.total=e.total,t.rejected=e.rejected,t.countRejected=sumRejected(t.rejected),t.resultsCount+=e.resultsCount,m()})})}function y(e){t.indexerDisplayState[e.toLowerCase()]=t.indexerDisplayState[e.toLowerCase()],d("Filtering. Sorry...").then(function(){t.filteredResults=f(t.results)}).then(function(){m()})}function b(){return t.results.length}if(null!=i.get("sorting")){var v=i.get("sorting");t.sortPredicate=v.predicate,t.sortReversed=v.reversed}else t.sortPredicate="epoch",t.sortReversed=!0;t.limitTo=100,t.offset=0,t.indexersearches=_.sortBy(s.getLastResults().indexersearches,function(e){return e.indexer.toLowerCase()}),t.indexerDisplayState=[],t.indexerResultsInfo={},t.groupExpanded={},t.selected=[],e.title?t.searchTitle=e.title:e.query?t.searchTitle=e.query:t.searchTitle=void 0,t.selectedIds=_.map(t.selected,function(e){return e.searchResultId}),t.lastClicked=null,t.lastClickedValue=null,t.foo={indexerStatusesExpanded:null!=i.get("indexerStatusesExpanded")?i.get("indexerStatusesExpanded"):!1,duplicatesDisplayed:null!=i.get("duplicatesDisplayed")?i.get("duplicatesDisplayed"):!1},t.countFilteredOut=0,_.forEach(t.indexersearches,function(e){t.indexerDisplayState[e.indexer.toLowerCase()]=!0}),_.forEach(t.indexersearches,function(e){t.indexerResultsInfo[e.indexer.toLowerCase()]={loadedResults:e.loaded_results}}),t.results=s.getLastResults().results,t.total=s.getLastResults().total,t.resultsCount=s.getLastResults().resultsCount,t.rejected=s.getLastResults().rejected,t.countRejected=sumRejected(t.rejected),t.filteredResults=f(t.results),t.$emit("searchResultsShown"),m(),t.firstResultPredicate=c,t.groupId=u,t.setSorting=p,t.inlineFilter=h,t.$on("searchInputChanged",function(e,n,r,o,a,i){t.filteredResults=f(t.results,n,r,o,a,i)}),t.resort=function(){},t.toggleTitlegroupExpand=function(e){t.groupExpanded[e[0][0].title]=!t.groupExpanded[e[0][0].title],t.groupExpanded[e[0][0].hash]=!t.groupExpanded[e[0][0].hash]},t.stopBlocking=m,t.loadMore=g,t.toggleIndexerDisplay=y,t.countResults=b,t.invertSelection=function(){t.$broadcast("invertSelection")},t.toggleIndexerStatuses=function(){t.foo.indexerStatusesExpanded=!t.foo.indexerStatusesExpanded,i.set("indexerStatusesExpanded",t.foo.indexerStatusesExpanded)},t.toggleDuplicatesDisplayed=function(){i.set("duplicatesDisplayed",t.foo.duplicatesDisplayed),t.$broadcast("duplicatesDisplayed",t.foo.duplicatesDisplayed)},t.$on("checkboxClicked",function(e,n,r,o){n.shiftKey&&null!=t.lastClicked&&t.$broadcast("shiftClick",Number(t.lastClicked),Number(r),Number(t.lastClickedValue)),t.lastClicked=r,t.lastClickedValue=o}),t.filterRejectedZero=function(){return function(e){return e[1]>0}}}function SearchHistoryService(e,t){function n(){return t.post("internalapi/getsearchrequestsforsearching").success(function(e){return{searchRequests:e.searchRequests,totalRequests:e.totalRequests}})}function r(e,n,r,o,a,i){var s={page:e,limit:n,filterModel:r,distinct:a,onlyCurrentUser:i};return angular.isUndefined(e)&&(s.page=1),angular.isUndefined(n)&&(s.limit=100),angular.isUndefined(r)&&(s.filterModel={}),angular.isUndefined(o)||(s.sortModel=o),t.post("internalapi/getsearchrequests",s).success(function(e){return{searchRequests:e.searchRequests,totalRequests:e.totalRequests}})}function o(t,n,r,o,a){var i=[];if(r&&t.query&&i.push("Query: "+t.query),t.title&&a)i.push('Title: '+t.title);else if(t.movietitle&&a)i.push('Title: '+t.movietitle);else if(t.tvtitle&&a)i.push('Title: '+t.tvtitle);else if(t.identifier_key){var s,l;"imdbid"==t.identifier_key?(l="IMDB ID",s="https://www.imdb.com/title/tt"):"tvdbid"==t.identifier_key?(l="TVDB ID",s="https://thetvdb.com/?tab=series&id="):"rid"==t.identifier_key?(l="TVRage ID",s="internalapi/redirect_rid?rid="):"tmdb"==t.identifier_key&&(l="TMDV ID",s="https://www.themoviedb.org/movie/"),s+=t.identifier_value,s=e("dereferer")(s),n?i.push(''+l+': '+t.identifier_value+""):i.push(''+l+": "+t.identifier_value)}return t.season&&i.push('Season: '+t.season),t.episode&&i.push('Episode: '+t.episode),t.author&&i.push('Author: '+t.author),0==i.length&&o&&(i=['Empty search']),i.join(", ")}function a(e){var t={};return t.mode="search","imdbid"==e.identifier_key?(t.mode="movie",t.imdbid=e.identifier_value):("tvdbid"==e.identifier_key||"rid"==e.identifier_key)&&(t.mode="tvsearch","rid"==e.identifier_key?t.rid=e.identifier_value:t.tvdbid=e.identifier_value, -""!=e.season&&(t.season=e.season),""!=e.episode&&(t.episode=e.episode)),""!=e.query&&(t.query=e.query),null!=e.movietitle&&(t.title=e.movietitle),null!=e.tvtitle&&(t.title=e.tvtitle),e.category&&(t.category=e.category),t.category=e.category,t}return{getSearchHistory:r,getSearchHistoryForSearching:n,formatRequest:o,getStateParamsForRepeatedSearch:a}}function SearchHistoryController(e,t,n,r,o,a,i){e.limit=100,e.pagination={current:1},e.sortModel={column:"time",sortMode:2},e.filterModel={},e.categoriesForFiltering=[],_.forEach(r.getSafe().categories,function(t){e.categoriesForFiltering.push({label:t.pretty,id:t.pretty})}),e.preselectedTimeInterval={beforeDate:null,afterDate:null},e.accessOptionsForFiltering=[{label:"All",value:"all"},{label:"API",value:!1},{label:"Internal",value:!0}],e.searchRequests=o.data.searchRequests,e.totalRequests=o.data.totalRequests,e.update=function(){n.getSearchHistory(e.pagination.current,e.limit,e.filterModel,e.sortModel).then(function(t){e.searchRequests=t.data.searchRequests,e.totalRequests=t.data.totalRequests})},e.$on("sort",function(t,n,r){0==r&&(n="time",r=2),e.sortModel={column:n,sortMode:r},e.$broadcast("newSortColumn",n),e.update()}),e.$on("filter",function(t,n,r,o){r.filter?e.filterModel[n]=r:delete e.filterModel[n],e.update()}),e.openSearch=function(e){var n={};"imdbid"==e.identifier_key?n.imdbid=e.identifier_value:("tvdbid"==e.identifier_key||"rid"==e.identifier_key)&&("rid"==e.identifier_key?n.rid=e.identifier_value:n.tvdbid=e.identifier_value,""!=e.season&&(n.season=e.season),""!=e.episode&&(n.episode=e.episode)),""!=e.query&&(n.query=e.query),"tv"==e.type?n.mode="tvsearch":"movie"==e.type?n.mode="movie":n.mode="search",null!=e.movietitle&&(n.title=e.movietitle),null!=e.tvtitle&&(n.title=e.tvtitle),e.category&&(n.category=e.category),n.category=e.category,t.go("root.search",n,{inherit:!1})},e.formatQuery=function(e){return null!=e.movietitle?e.movietitle:null!=e.tvtitle?e.tvtitle:e.query||e.identifier_key||e.season||e.episode?e.query:"Update query"},e.formatAdditional=function(e){var t=[];if(e.identifier_key){var n,r;"imdbid"==e.identifier_key?(r="IMDB ID",n="https://www.imdb.com/title/tt"):"tvdbid"==e.identifier_key?(r="TVDB ID",n="https://thetvdb.com/?tab=series&id="):"rid"==e.identifier_key?(r="TVRage ID",n="internalapi/redirect_rid?rid="):"tmdb"==e.identifier_key&&(r="TMDV ID",n="https://www.themoviedb.org/movie/"),n+=e.identifier_value,n=i("dereferer")(n),t.push(r+': '+e.identifier_value+"")}return e.season&&t.push("Season: "+e.season),e.episode&&t.push("Episode: "+e.episode),e.author&&t.push("Author: "+e.author),e.title&&t.push("Title: "+e.title),a.trustAsHtml(t.join(", "))}}function SearchController(e,t,n,r,o,a,i,s,l,c,u,d,p,h,f,m,g){function y(e){return _.isUndefined(e)||_.isNaN(e)||""==e?void 0:(e=parseInt(e),_.isNumber(e)?e:void 0)}function b(){var t=_.filter(e.availableIndexers).filter(function(e){return e.activated});return _.pluck(t,"name").join("|")}function v(t){return angular.isUndefined(e.indexers)?t.preselect:_.contains(e.indexers,t.name)}function w(){return _.chain(x.indexers).filter(function(t){return t.enabled&&t.showOnSearch&&(angular.isUndefined(t.categories)||0==t.categories.length||"all"==e.category.name||t.categories.indexOf(e.category.name)>-1)}).sortBy(function(e){return e.name.toLowerCase()}).map(function(e){return{name:e.name,activated:v(e),categories:e.categories}}).value()}function S(){g.getSearchHistoryForSearching().success(function(t){e.searchHistory=t.searchRequests})}e.mode=n.mode,e.categories=_.filter(p.getAll(),function(e){return e.mayBeSelected&&"internal"!=e.ignoreResults&&"always"!=e.ignoreResults}),angular.isDefined(n.category)&&n.category?e.category=p.getByName(n.category):e.category=p.getDefault(),e.category=_.isUndefined(n.category)||""==n.category?p.getDefault():p.getByName(n.category),e.tmdbid=n.tmdbid,e.tvdbid=n.tvdbid,e.imdbid=n.imdbid,e.rid=n.rid,e.title=n.title,e.season=n.season,e.episode=n.episode,e.query=n.query,e.minsize=y(n.minsize),e.maxsize=y(n.maxsize),e.minage=y(n.minage),e.maxage=y(n.maxage),!_.isUndefined(e.title)&&_.isUndefined(e.query),angular.isUndefined(n.indexers)||(e.indexers=decodeURIComponent(n.indexers).split("|")),e.showIndexers={},e.searchHistory=[];var x=u.getSafe();e.showIndexerSelection=d.getUserInfos().showIndexerSelection;var C=u.getSafe().firstStart-1?t.get("internalapi/autocomplete?type=movie",{params:{input:n}}).then(function(t){return e.autocompleteLoading=!1,t.data.results}):e.category.name.indexOf("tv")>-1?t.get("internalapi/autocomplete?type=tv",{params:{input:n}}).then(function(t){return e.autocompleteLoading=!1,t.data.results}):{}:{}},e.startSearch=function(){h.start("Searching...");var t=angular.isUndefined(e.indexers)?void 0:e.indexers.join("|");l.search(e.category.name,e.query,e.tmdbid,e.imdbid,e.title,e.tvdbid,e.rid,e.season,e.episode,e.minsize,e.maxsize,e.minage,e.maxage,t,e.mode).then(function(){r.go("root.search.results",{minsize:e.minsize,maxsize:e.maxsize,minage:e.minage,maxage:e.maxage},{inherit:!0}),e.tmdbid=void 0,e.imdbid=void 0,e.tvdbid=void 0})},e.goToSearchUrl=function(){var t={};e.category.name.indexOf("movies")>-1?(t.title=e.title,t.mode="movie"):e.category.name.indexOf("tv")>-1?(t.mode="tvsearch",t.title=e.title):"ebook"==e.category.name?t.mode="ebook":t.mode="search",t.tmdbid=e.tmdbid,t.tvdbid=e.tvdbid,t.title=e.title,t.season=e.season,t.episode=e.episode,t.query=e.query,t.minsize=e.minsize,t.maxsize=e.maxsize,t.minage=e.minage,t.maxage=e.maxage,t.category=e.category.name,t.indexers=encodeURIComponent(b()),r.go("root.search",t,{inherit:!1,notify:!0,reload:!0})},e.repeatSearch=function(e){r.go("root.search",g.getStateParamsForRepeatedSearch(e),{inherit:!1,notify:!0,reload:!0})},e.selectAutocompleteItem=function(t){e.selectedItem=t,e.title=t.title,e.category.name.indexOf("movies")>-1?e.tmdbid=t.value:e.category.name.indexOf("tv")>-1&&(e.tvdbid=t.value),e.query="",e.goToSearchUrl()},e.startQuerySearch=function(){e.query?(e.title=void 0,e.tmdbid=void 0,e.tvdbid=void 0,e.season=void 0,e.episode=void 0,e.goToSearchUrl()):s.error("You didn't enter a query...")},e.autocompleteActive=function(){return e.category.supportsById},e.seriesSelected=function(){return e.category.name.indexOf("tv")>-1},e.toggleIndexer=function(t){e.indexers[t]=!e.indexers[t]},e.toggleAllIndexers=function(){angular.forEach(e.availableIndexers,function(e){e.activated=!e.activated})},e.searchInputChanged=function(){e.$broadcast("searchInputChanged",e.query!=n.query?e.query:null,e.minage,e.maxage,e.minsize,e.maxsize)},e.formatRequest=function(e){return i.trustAsHtml(g.formatRequest(e,!1,!0,!0,!0))},e.availableIndexers=w(),e.mode?e.startSearch():S(),e.$on("searchResultsShown",function(){S()})}function RestartService(e,t,n,r,o){function a(r,o){o>=1?(e.start(r+"Restarting. Will reload page in "+o+" seconds..."),t(function(){a(r,o-1)},1e3)):t(function(){e.start("Reloading page..."),n.location.reload()},1e3)}function i(){a("",15)}function s(e){e=angular.isDefined(e)?e+" ":"",o.restart().then(a(e,15),function(){r.info("Unable to send restart command.")})}return{restart:s,countdown:i}}function NzbHydraControlService(e){function t(){return e.get("internalapi/restart")}function n(){return e.get("internalapi/shutdown")}function r(){return e.get("internalapi/deleteloganddb")}return{restart:t,shutdown:n,deleteLogAndDb:r}}function NzbDownloadService(e,t,n){function r(t,n,r){var o={downloader:t.name,searchresultids:angular.toJson(n)};return"No category"!=r&&(o.category=r),e.put("internalapi/addnzbs",o)}function o(e,t){var o=e.defaultCategory;return!_.isUndefined(o)&&""!=o&&null!=o||"No category"==o?r(e,t,o):n.openCategorySelection(e).then(function(n){return r(e,t,n)},function(e){throw e})}function a(){return _.filter(t.getSafe().downloaders,"enabled")}var i={download:o,getEnabledDownloaders:a};return i}function ModalService(e,t){function n(t,n,r,o){var a=e.open({templateUrl:"static/html/modal.html",controller:"ModalInstanceCtrl",size:angular.isDefined(o)?o:"md",resolve:{headline:function(){return t},message:function(){return n},params:function(){return r}}});a.result.then(function(){},function(){})}return{open:n}}function ModalInstanceCtrl(e,t,n,r,o){e.message=r,e.headline=n,e.params=o,e.showCancel=angular.isDefined(o)&&angular.isDefined(o.cancel),e.showNo=angular.isDefined(o)&&angular.isDefined(o.no),angular.isUndefined(o)||angular.isUndefined(o.yes)?e.params={yes:{text:"Ok"}}:angular.isUndefined(o.yes.text)&&(o.yes.text="Yes"),angular.isDefined(o)&&angular.isDefined(o.no)&&angular.isUndefined(e.params.no.text)&&(e.params.no.text="No"),angular.isDefined(o)&&angular.isDefined(o.cancel)&&angular.isUndefined(e.params.cancel.text)&&(e.params.cancel.text="Cancel"),e.yes=function(){t.close(),angular.isDefined(o)&&angular.isDefined(o.yes)&&angular.isDefined(e.params.yes.onYes)&&e.params.yes.onYes()},e.no=function(){t.close(),angular.isDefined(o)&&angular.isDefined(o.no)&&angular.isDefined(e.params.no.onNo)&&e.params.no.onNo()},e.cancel=function(){t.dismiss(),angular.isDefined(o.cancel)&&angular.isDefined(e.params.cancel.onCancel)&&e.params.cancel.onCancel()},e.$on("modal.closing",function(t,n,r){"backdrop click"==n&&e.cancel()})}function GeneralModalService(){this.open=function(e,t,n,r,o){var a=angular.injector(["ng","ui.bootstrap"]),i=a.get("$uibModal"),s={};angular.isUndefined(r)&&(s.size=r),angular.isUndefined(t)?angular.isUndefined(n)?s.template="
"+e+"
":s.templateUrl=n:s.template=t,s.resolve={data:function(){return o}};var l=i.open(s);l.result.then()}}function LoginController(e,t,n,r,o){e.user={},e.login=function(){t.specificallyHandled(function(){r.login(e.user.username,e.user.password).then(function(){r.setLoggedInByForm(),o.info("Login successful!"),n.go("root.search")},function(){o.error("Login failed!")})})}}function IndexerStatusesController(e,t,n){e.statuses=n.data.indexerStatuses,e.isInPast=function(e){return 1e3*e<(new Date).getTime()},e.enable=function(n){t.get("internalapi/enableindexer",{params:{name:n}}).then(function(t){e.statuses=t.data.indexerStatuses})}}function formatDate(e){return function(t,n){if(t){if(1e3*t<(new Date).getTime()&&n)return"";var r=1e3*t;return r=e(r,"yyyy-MM-dd HH:mm")}return""}}function reformatDate(){return function(e){return moment.utc(e,"ddd, D MMM YYYY HH:mm:ss z").local().format("YYYY-MM-DD HH:mm")}}function IndexController(e,t,n,r){console.log("Index"),r.go("root.search")}function HydraAuthService(e,t,n,r){function o(){return r}function a(){return r.username}function i(){t.$broadcast("user:loggedIn")}function s(e,t,n){}function l(o,a){var i=e.defer();return n.post("auth/login",data={username:o,password:a}).then(function(e){r=e.data,h=!0,t.$broadcast("user:loggedIn"),i.resolve()})}function c(e){return n.get("internalapi/askforpassword",{params:e}).then(function(e){return r=e.data})}function u(){var o=e.defer();return n.post("auth/logout").then(function(e){t.$broadcast("user:loggedOut"),r=e.data,h=!1,o.resolve()})}function d(){var e=o();return{maySeeStats:e.maySeeStats,maySeeAdmin:e.maySeeAdmin,maySeeSearch:e.maySeeSearch}}function p(){return r.username}var h=r.username;return{isLoggedIn:a,login:l,askForPassword:c,logout:u,setLoggedInByForm:i,getUserRights:d,setLoggedInByBasic:s,getUserName:p,getUserInfos:o}}function HeaderController(e,t,n,r,o){function a(){e.userInfos=r.getUserInfos(),e.userInfos.authConfigured?e.userInfos.username?(e.showAdmin=e.userInfos.maySeeAdmin||!e.userInfos.adminRestricted,e.showStats=e.userInfos.maySeeStats||!e.userInfos.statsRestricted,e.showLoginout=!0,e.username=e.userInfos.username,e.loginlogoutText="Logout "+e.username,e.oldUserName=e.username):(e.showAdmin=!e.userInfos.adminRestricted,e.showStats=!e.userInfos.statsRestricted,e.loginlogoutText="Login",e.showLoginout=e.userInfos.adminRestricted||e.userInfos.statsRestricted||e.userInfos.searchRestricted,e.username=""):(e.showAdmin=!0,e.showStats=!0,e.showLoginout=!1)}e.showLoginout=!1,e.oldUserName=null,a(),e.$on("user:loggedIn",function(e,t){a()}),e.$on("user:loggedOut",function(e,t){a()});var i=document.getElementsByTagName("base"),s=null;i.length>0&&(s=i[0].href),e.loginout=function(){if(r.isLoggedIn())r.logout().then(function(){"basic"===e.userInfos.authType?n.info("Logged out. Close your browser to make sure session is closed."):"form"===e.userInfos.authType&&(n.info("Logged out"),window.location.href=s),a()});else if("basic"===e.userInfos.authType){var o={};e.oldUserName&&(o={old_username:e.oldUserName}),r.askForPassword(o).then(function(){n.info("Login successful!"),a(),e.oldUserName=null,t.go("root.search")})}else"form"===e.userInfos.authType?window.location.href=s+"login":n.info("You shouldn't need to login but here you go!")}}function ConfigBoxService(e,t){function n(n,r){var o=t.defer();return e.post(n,r).success(function(e){e.result?o.resolve():o.reject({checked:!0,message:e.message})}).error(function(e){o.reject({checked:!1,message:e.message})}),o.promise}function r(n,r,o){var a=t.defer();return e.post(n,r).success(function(e){e.success?(o.search_ids=e.supportedIds,o.searchTypes=e.supportedTypes,e.supportsAllCategories?o.categories=[]:o.categories=e.supportedCategories,o.animeCategory=e.animeCategory,o.audiobookCategory=e.audiobookCategory,o.comicCategory=e.comicCategory,o.ebookCategory=e.ebookCategory,o.magazineCategory=e.magazineCategory,o.backend=e.backend,a.resolve({supportedIds:e.supportedIds,supportedTypes:e.supportedTypes},o)):a.reject(e.message)}).error(function(){a.reject("Unknown error")}),a.promise}return{checkConnection:n,checkCaps:r}}function FileDownloadService(e,t){function n(n,r){e({method:"GET",url:n,responseType:"arraybuffer"}).success(function(e,t,n,o){var a=document.createElement("a"),i=new Blob([e],{type:"application/octet-stream"});a.href=URL.createObjectURL(i),a.download=r,document.body.appendChild(a),a.click(),document.body.removeChild(a)}).error(function(e,n,r,o){t.error(n)})}var r={downloadFile:n};return r}function DownloaderCategoriesService(e,t,n){function r(n){function r(){if(angular.isDefined(l)&&angular.isDefined(l.downloader)){var r=t.defer();return r.resolve(l.downloader),r.promise}return e.get("internalapi/getcategories",{params:{downloader:n.name}}).then(function(e){console.log("Updating downloader categories cache");({downloader:e.data.categories});return e.data.categories},function(e){throw e})}return r().then(function(e){return e},function(e){throw e})}function o(e){return n.open({templateUrl:"static/html/directives/addable-nzb-modal.html",controller:"DownloaderCategorySelectionController",size:"sm",resolve:{categories:function(){return r(e)}}}),s=t.defer(),s.promise}function a(e){c=e,console.log("Selected category "+e),s.resolve(e)}function i(){console.log("Invalidating categories"),l=void 0}var s,l={},c={},u={get:r,invalidate:i,select:a,openCategorySelection:o};return u}function DownloadHistoryController(e,t,n,r){e.limit=100,e.pagination={current:1},e.sortModel={column:"time",sortMode:2},e.filterModel={},e.indexersForFiltering=[],_.forEach(r.getSafe().indexers,function(t){e.indexersForFiltering.push({label:t.name,id:t.name})}),e.preselectedTimeInterval={beforeDate:null,afterDate:null},e.successfulForFiltering=[{label:"Succesful",id:!0},{label:"Unsuccesful",id:!1},{label:"Unknown",id:null}],e.accessOptionsForFiltering=[{label:"All",value:"all"},{label:"API",value:!1},{label:"Internal",value:!0}],e.nzbDownloads=n.data.nzbDownloads,e.totalDownloads=n.data.totalDownloads,e.update=function(){t.getDownloadHistory(e.pagination.current,e.limit,e.filterModel,e.sortModel).then(function(t){e.nzbDownloads=t.data.nzbDownloads,e.totalDownloads=t.data.totalDownloads})},e.$on("sort",function(t,n,r){0==r&&(n="time",r=2),e.sortModel={column:n,sortMode:r},e.$broadcast("newSortColumn",n),e.update()}),e.$on("filter",function(t,n,r,o){r.filter?e.filterModel[n]=r:delete e.filterModel[n],e.update()})}function reformatDateEpoch(){return function(e){return moment.unix(e).local().format("YYYY-MM-DD HH:mm")}}function ConfigService(e,t,n,r){function o(t){e.put("internalapi/setsettings",t).then(function(e){console.log("Settings saved. Updating cache"),c.put("config",t),s()},function(e){console.log("Error saving settings:"),console.log(e)})}function a(){var t=c.get("config");return angular.isUndefined(t)&&(t=e.get("internalapi/getconfig").then(function(e){return e.data}),c.put("config",t)),t}function i(){return u}function s(){e.get("internalapi/getsafeconfig").then(function(e){u=e.data})}function l(){function n(){var n=c.get("maySeeAdminArea");if(!angular.isUndefined(n)){var r=t.defer();return r.resolve(n),r.promise}return e.get("internalapi/mayseeadminarea").then(function(e){var t=e.data;return c.put("maySeeAdminArea",t),e.data})}return n().then(function(e){return e})}var c=n("nzbhydra"),u=r.safeConfig;return{set:o,get:a,getSafe:i,invalidateSafe:s,maySeeAdminArea:l}}function ConfigFields(e){function t(e){s=e}function n(e,t,n){t!=n&&s()}function r(){return{expression:function(e,t){var n=t||e;return n?/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/.test(n)||/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(n):!0},message:'$viewValue + " is not a valid IP Address"'}}function o(e,t,n){return{expression:function(t,n){var r=n||t;return r?e.test(r):!0},message:(n?'$viewValue + " ':'" ')+t+'"'}}function a(){var t=[],n=e.get("ConfigService"),r=n.getSafe().categories;return t.push({key:"enableCategorySizes",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Category sizes",help:"Preset min and max sizes depending on the selected category"}}),_.each(r,function(e){if("all"!=e.name&&"na"!=e.name){var n=[{key:"categories."+e.name+".requiredWords",type:"horizontalInput",templateOptions:{type:"text",label:"Required words",placeholder:"separate, with, commas, like, this"}},{key:"categories."+e.name+".requiredRegex",type:"horizontalInput",templateOptions:{type:"text",label:"Required regex",help:"Must be present in a title (which is converted to lowercase before)"}},{key:"categories."+e.name+".forbiddenWords",type:"horizontalInput",templateOptions:{type:"text",label:"Forbidden words",placeholder:"separate, with, commas, like, this"}},{key:"categories."+e.name+".forbiddenRegex",type:"horizontalInput",templateOptions:{type:"text",label:"Forbidden regex",help:"Must not be present in a title (which is converted to lowercase before)"}},{key:"categories."+e.name+".applyRestrictions",type:"horizontalSelect",templateOptions:{label:"Apply restrictions",options:[{name:"Internal searches",value:"internal"},{name:"API searches",value:"external"},{name:"All searches",value:"both"}],help:"For which type of search word restrictions will be applied"}}];n.push({wrapper:"settingWrapper",templateOptions:{label:"Size preset"},fieldGroup:[{key:"categories."+e.name+".min",type:"duoSetting",templateOptions:{addonRight:{text:"MB"}}},{type:"duolabel"},{key:"categories."+e.name+".max",type:"duoSetting",templateOptions:{addonRight:{text:"MB"}}}]}),n.push({key:"categories."+e.name+".newznabCategories",type:"horizontalInput",templateOptions:{type:"text",label:"Newznab categories",help:"Map newznab categories to hydra categories",required:!0},parsers:[function(e){if(!e)return e;var t=[];return t.push.apply(t,e.split(",").map(Number)),t}]}),n.push({key:"categories."+e.name+".ignoreResults",type:"horizontalSelect",templateOptions:{label:"Ignore results",options:[{name:"For internal searches",value:"internal"},{name:"For API searches",value:"external"},{name:"Always",value:"always"},{name:"Never",value:"never"}],help:"Ignore results from this category"}}),t.push({wrapper:"fieldset",templateOptions:{label:e.pretty},fieldGroup:n})}}),t}function i(t){return{main:[{wrapper:"fieldset",templateOptions:{label:"Hosting"},fieldGroup:[{key:"host",type:"horizontalInput",templateOptions:{type:"text",label:"Host",required:!0,placeholder:"IPv4/6 address to bind to",help:"I strongly recommend using a reverse proxy instead of exposing this directly. Requires restart."},validators:{ipAddress:r()},watcher:{listener:n}},{key:"port",type:"horizontalInput",templateOptions:{type:"number",label:"Port",required:!0,placeholder:"5050",help:"Requires restart"},validators:{port:o(/^\d{1,5}$/,"is no valid port",!0)},watcher:{listener:n}},{key:"urlBase",type:"horizontalInput",templateOptions:{type:"text",label:"URL base",placeholder:"/nzbhydra",help:"Set when using an external proxy. Call using a trailing slash, e.g. http://www.domain.com/nzbhydra/"},validators:{urlBase:o(/^(\/\w+)*$/,"Base URL needs to start with a slash and must not end with one")}},{key:"externalUrl",type:"horizontalInput",templateOptions:{type:"text",label:"External URL",placeholder:"https://www.somedomain.com/nzbhydra/",help:"Set to the full external URL so machines outside can use the generated NZB links."}},{key:"useLocalUrlForApiAccess",type:"horizontalSwitch",hideExpression:"!model.externalUrl",templateOptions:{type:"switch",label:"Use local address in API results",help:"Disable to make API results use the external URL in NZB links."}},{key:"socksProxy",type:"horizontalInput",templateOptions:{type:"text",label:"SOCKS proxy",placeholder:"socks5://user:pass@127.0.0.1:1080",help:"IPv4 only"},watcher:{listener:n}},{key:"httpProxy",type:"horizontalInput",templateOptions:{type:"text",label:"HTTP proxy",placeholder:"http://user:pass@10.0.0.1:1080",help:"IPv4 only"},watcher:{listener:n}},{key:"httpsProxy",type:"horizontalInput",templateOptions:{type:"text",label:"HTTPS proxy",placeholder:"https://user:pass@10.0.0.1:1090",help:"IPv4 only"},watcher:{listener:n}},{key:"ssl",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Use SSL",help:"I recommend using a reverse proxy instead of this. Requires restart."},watcher:{listener:n}},{key:"sslcert",hideExpression:"!model.ssl",type:"horizontalInput",templateOptions:{type:"text",label:"SSL certificate file",required:!0,help:"Requires restart."},watcher:{listener:n}},{key:"sslkey",hideExpression:"!model.ssl",type:"horizontalInput",templateOptions:{type:"text",label:"SSL key file",required:!0,help:"Requires restart."},watcher:{listener:n}},{key:"sslca",hideExpression:"!model.ssl",type:"horizontalInput",templateOptions:{type:"text",label:"SSL intermediate certificate (CA file)",help:"Requires restart."},watcher:{listener:n}}]},{wrapper:"fieldset",templateOptions:{label:"UI"},fieldGroup:[{key:"theme",type:"horizontalSelect",templateOptions:{type:"select",label:"Theme",help:"Reload page after saving",options:[{name:"Grey",value:"grey"},{name:"Bright",value:"bright"},{name:"Dark",value:"dark"}]}}]},{wrapper:"fieldset",templateOptions:{label:"Security"},fieldGroup:[{key:"apikey",type:"horizontalApiKeyInput",templateOptions:{label:"API key",help:"Remove to disable. Alphanumeric only"},validators:{apikey:o(/^[a-zA-Z0-9]*$/,"API key must only contain numbers and digits",!1)}},{key:"dereferer",type:"horizontalInput",templateOptions:{type:"text",label:"Dereferer",help:"Redirect external links to hide your instance. Insert $s for target URL. Delete to disable."}},{key:"verifySsl",type:"horizontalSwitch",templateOptions:{label:"Verify SSL certificates",help:"If enabled only valid/known SSL certificates will be accepted when accessing indexers"}}]},{wrapper:"fieldset",key:"logging",templateOptions:{label:"Logging"},fieldGroup:[{key:"logfilelevel",type:"horizontalSelect",templateOptions:{type:"select",label:"Logfile level",options:[{name:"Critical",value:"CRITICAL"},{name:"Error",value:"ERROR"},{name:"Warning",value:"WARNING"},{name:"Info",value:"INFO"},{name:"Debug",value:"DEBUG"}]},watcher:{listener:n}},{key:"logfilename",type:"horizontalInput",templateOptions:{type:"text",label:"Log file",required:!0},watcher:{listener:n}},{key:"rolloverAtStart",type:"horizontalSwitch",templateOptions:{label:"Startup rollover",help:"Starts a new log file on start/restart"},watcher:{listener:n}},{key:"logMaxSize",type:"horizontalInput",templateOptions:{type:"number",label:"Max log file size",help:"When log file size is reached a new one is started. Set to 0 to disable.",addonRight:{text:"kB"}},watcher:{listener:n}},{key:"logRotateAfterDays",type:"horizontalInput",templateOptions:{type:"number",label:"Rotate after",help:"A new log file is started after this many days. Supercedes max size. Keep empty to disable.",addonRight:{text:"days"}},watcher:{listener:n}},{key:"keepLogFiles",type:"horizontalInput",templateOptions:{type:"number",label:"Keep log files",help:"Number of log files to keep before oldest is deleted."},watcher:{listener:n}},{key:"logfileUmask",type:"horizontalInput",templateOptions:{type:"text",label:"Log file chmod",help:"chmod for log files (linux only)"},watcher:{listener:n}},{key:"consolelevel",type:"horizontalSelect",templateOptions:{type:"select",label:"Console log level",options:[{name:"Critical",value:"CRITICAL"},{name:"Error",value:"ERROR"},{name:"Warning",value:"WARNING"},{name:"Info",value:"INFO"},{name:"Debug",value:"DEBUG"}]},watcher:{listener:n}},{key:"logIpAddresses",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Log IP addresses"}}]},{wrapper:"fieldset",templateOptions:{label:"Updating"},fieldGroup:[{key:"gitPath",type:"horizontalInput",templateOptions:{label:"Git executable",help:"Set if git is not in your path"}},{key:"branch",type:"horizontalInput",templateOptions:{type:"text",label:"Repository branch",required:!0,help:"Stay on master. Seriously..."}}]},{wrapper:"fieldset",templateOptions:{label:"Other"},fieldGroup:[{key:"keepSearchResultsForDays",type:"horizontalInput",templateOptions:{type:"number",label:"Store results for ...",addonRight:{text:"days"},required:!0,help:"Meta data from searches is stored in the database. When they're deleted links to hydra become invalid."}},{key:"debug",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Enable debugging",help:"Only do this if you know what and why you're doing it"}},{key:"runThreaded",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Run threaded server",help:"Requires restart"},watcher:{listener:n}},{key:"startupBrowser",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Open browser on startup"}},{key:"shutdownForRestart",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Shutdown to restart",help:"When run with a service manager which automatically restarts Hydra enable this to prevent duplicate instances"}}]}],searching:[{wrapper:"fieldset",templateOptions:{label:"Indexer access"},fieldGroup:[{key:"timeout",type:"horizontalInput",templateOptions:{type:"number",label:"Timeout when accessing indexers",addonRight:{text:"seconds"}}},{key:"ignoreTemporarilyDisabled",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Ignore temporarily disabled",help:"If enabled access to indexers will never be paused after an error occurred"}},{key:"ignorePassworded",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Ignore passworded releases",help:"Not all indexers provide this information"}},{key:"forbiddenWords",type:"horizontalInput",templateOptions:{type:"text",label:"Forbidden words",placeholder:"separate, with, commas, like, this",help:"Results with any of these words in the title will be ignored"}},{key:"forbiddenRegex",type:"horizontalInput",templateOptions:{type:"text",label:"Forbidden regex",help:"Must not be present in a title (which is converted to lowercase before)"}},{key:"requiredWords",type:"horizontalInput",templateOptions:{type:"text",label:"Required words",placeholder:"separate, with, commas, like, this",help:"Only results with at least one of these words in the title will be used"}},{key:"requiredRegex",type:"horizontalInput",templateOptions:{type:"text",label:"Required regex",help:"Must be present in a title (which is converted to lowercase before)"}},{key:"applyRestrictions",type:"horizontalSelect",templateOptions:{label:"Apply word restrictions",options:[{name:"Internal searches",value:"internal"},{name:"API searches",value:"external"},{name:"All searches",value:"both"}],help:"For which type of search word restrictions will be applied"}},{key:"forbiddenGroups",type:"horizontalInput",templateOptions:{type:"text",label:"Forbidden groups",placeholder:"separate, with, commas, like, this",help:"Posts from any groups containing any of these words will be ignored"}},{key:"forbiddenPosters",type:"horizontalInput",templateOptions:{type:"text",label:"Forbidden posters",placeholder:"separate, with, commas, like, this",help:"Posts from any posters containing any of these words will be ignored"}},{key:"maxAge",type:"horizontalInput",templateOptions:{type:"number",label:"Maximum results age",help:"Results older than this are ignored. Can be overwritten per search",addonRight:{text:"days"}}},{key:"generate_queries",type:"horizontalMultiselect",templateOptions:{label:"Generate queries",options:[{label:"Internal searches",id:"internal"},{label:"API searches",id:"external"}],help:"Generate queries for indexers which do not support ID based searches"}},{key:"idFallbackToTitle",type:"horizontalMultiselect",templateOptions:{label:"Fallback to title queries",options:[{label:"Internal searches",id:"internal"},{label:"API searches",id:"external"}],help:"When no results were found for a query ID search again using the title"}},{key:"idFallbackToTitlePerIndexer",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Fallback per indexer",help:"If enabled, fallback will occur on a per-indexer basis"}},{key:"userAgent",type:"horizontalInput",templateOptions:{type:"text",label:"User agent",required:!0}}]},{wrapper:"fieldset",templateOptions:{label:"Result processing"},fieldGroup:[{key:"htmlParser",type:"horizontalSelect",templateOptions:{type:"select",label:"HTML parser",options:[{name:"Default BS (slower)", -value:"html.parser"},{name:"LXML (faster, needs to be installed separately)",value:"lxml"}]}},{key:"duplicateSizeThresholdInPercent",type:"horizontalPercentInput",templateOptions:{type:"text",label:"Duplicate size threshold",required:!0,addonRight:{text:"%"}}},{key:"duplicateAgeThreshold",type:"horizontalInput",templateOptions:{type:"number",label:"Duplicate age threshold",required:!0,addonRight:{text:"hours"}}},{key:"alwaysShowDuplicates",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Always show duplicates",help:"Activate to show duplicates in search results by default"}},{key:"removeTrailing",type:"horizontalInput",templateOptions:{type:"text",label:"Remove trailing...",help:"Removed from title if it ends with either of these. Case insensitive and disregards leading/trailing spaces"}},{key:"nzbAccessType",type:"horizontalSelect",templateOptions:{type:"select",label:"NZB access type",options:[{name:"Proxy NZBs from indexer",value:"serve"},{name:"Redirect to the indexer",value:"redirect"}],help:"How access to NZBs is provided when NZBs are downloaded (by the user or external tools). Redirecting is recommended."}}]}],categories:a(),downloaders:[{type:"arrayConfig",data:{defaultModel:{enabled:!0},entryTemplateUrl:"downloaderEntry.html",presets:function(){return getDownloaderPresets()},checkAddingAllowed:function(){return!0},presetsOnly:!0,addNewText:"Add new downloader",fieldsFunction:getDownloaderBoxFields,allowDeleteFunction:function(){return!0},checkBeforeClose:function(t,n){var r=e.get("DownloaderCheckBeforeCloseService");return r.check(t,n)},resetFunction:function(e){e.options.resetModel(),e.options.resetModel()}}}],indexers:[{type:"arrayConfig",data:{defaultModel:{animeCategory:null,comicCategory:null,audiobookCategory:null,magazineCategory:null,ebookCategory:null,enabled:!0,categories:[],downloadLimit:null,loadLimitOnRandom:null,host:null,apikey:null,hitLimit:null,hitLimitResetTime:0,timeout:null,name:null,showOnSearch:!0,score:0,username:null,password:null,preselect:!0,type:"newznab",accessType:"both",search_ids:void 0,searchTypes:void 0,backend:null,userAgent:null},addNewText:"Add new indexer",entryTemplateUrl:"indexerEntry.html",presets:function(e){return getIndexerPresets(e)},checkAddingAllowed:function(e,t){return!t||"anizb"!=t.type&&"binsearch"!=t.type&&"nzbindex"!=t.type&&"nzbclub"!=t.type?!0:!_.any(e,function(e){return e.name==t.name})},fieldsFunction:getIndexerBoxFields,allowDeleteFunction:function(e){return!0},checkBeforeClose:function(t,n){var r=e.get("IndexerCheckBeforeCloseService");return r.check(t,n)},resetFunction:function(e){e.options.resetModel(),e.options.resetModel()}}}],auth:[{key:"authType",type:"horizontalSelect",templateOptions:{label:"Auth type",options:[{name:"None",value:"none"},{name:"HTTP Basic auth",value:"basic"},{name:"Login form",value:"form"}]}},{key:"restrictSearch",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Restrict searching",help:"Restrict access to searching"},hideExpression:function(){return"none"==t.auth.authType}},{key:"restrictStats",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Restrict stats",help:"Restrict access to stats"},hideExpression:function(){return"none"==t.auth.authType}},{key:"restrictAdmin",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Restrict admin",help:"Restrict access to admin functions"},hideExpression:function(){return"none"==t.auth.authType}},{key:"restrictDetailsDl",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Restrict NZB details & DL",help:"Restrict NZB details, comments and download links"},hideExpression:function(){return"none"==t.auth.authType}},{key:"restrictIndexerSelection",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Restrict indexer selection box",help:"Restrict visibility of indexer selection box in search. Affects only GUI"},hideExpression:function(){return"none"==t.auth.authType}},{key:"rememberUsers",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Remember users",help:"Remember users with cookie for 14 days"},hideExpression:function(){return"none"==t.auth.authType}},{key:"rememberUsersExpiry",type:"horizontalInput",templateOptions:{type:"number",label:"Cookie expiry",help:"How long users are remembered",addonRight:{text:"days"}}},{type:"repeatSection",key:"users",model:t.auth,templateOptions:{btnText:"Add new user",altLegendText:"Authless",fields:[{key:"username",type:"horizontalInput",templateOptions:{type:"text",label:"Username",required:!0}},{key:"password",type:"horizontalInput",templateOptions:{type:"password",label:"Password",required:!0}},{key:"maySeeAdmin",type:"horizontalSwitch",templateOptions:{type:"switch",label:"May see admin area"}},{key:"maySeeStats",type:"horizontalSwitch",templateOptions:{type:"switch",label:"May see stats"},hideExpression:"model.maySeeAdmin"},{key:"maySeeDetailsDl",type:"horizontalSwitch",templateOptions:{type:"switch",label:"May see NZB details & DL links"},hideExpression:"model.maySeeAdmin"},{key:"showIndexerSelection",type:"horizontalSwitch",templateOptions:{type:"switch",label:"May see indexer selection box"},hideExpression:"model.maySeeAdmin"}],defaultModel:{username:null,password:null,maySeeStats:!0,maySeeAdmin:!0,maySeeDetailsDl:!0,showIndexerSelection:!0}}}]}}var s;return{getFields:i,setRestartWatcher:t}}function getIndexerPresets(e){var t=[[{name:"6box",host:"https://6box.me"},{name:"6box spotweb",host:"https://6box.me/spotweb"},{name:"altHUB",host:"https://api.althub.co.za"},{name:"DogNZB",host:"https://api.dognzb.cr"},{name:"Drunken Slug",host:"https://api.drunkenslug.com"},{name:"LuluNZB",host:"https://lulunzb.com"},{name:"miatrix",host:"https://www.miatrix.com"},{name:"newz69.keagaming",host:"https://newz69.keagaming.com"},{name:"NewzTown",host:"https://newztown.co.za"},{name:"NZB Finder",host:"https://nzbfinder.ws"},{name:"NZBCat",host:"https://nzb.cat"},{name:"nzb.ag",host:"https://nzb.ag"},{name:"nzb.is",host:"https://nzb.is"},{name:"nzb.su",host:"https://api.nzb.su"},{name:"nzb7",host:"https://www.nzb7.com"},{name:"NZBGeek",host:"https://api.nzbgeek.info"},{name:"NzbNdx",host:"https://www.nzbndx.com"},{name:"NzBNooB",host:"https://www.nzbnoob.com"},{name:"nzbplanet",host:"https://nzbplanet.net"},{name:"NZBs.org",host:"https://nzbs.org"},{name:"NZBs.io",host:"https://www.nzbs.io"},{name:"Nzeeb",host:"https://www.nzeeb.com"},{name:"oznzb",host:"https://api.oznzb.com"},{name:"omgwtfnzbs",host:"https://api.omgwtfnzbs.me"},{name:"PFMonkey",host:"https://www.pfmonkey.com"},{name:"SimplyNZBs",host:"https://simplynzbs.com"},{name:"Tabula-Rasa",host:"https://www.tabula-rasa.pw"},{name:"Usenet-Crawler",host:"https://www.usenet-crawler.com"}],[{name:"Jackett/Cardigann",host:"http://127.0.0.1:9117/torznab/YOURTRACKER",search_ids:[],searchTypes:[],type:"jackett",accessType:"internal"}],[{accessType:"both",categories:["anime"],downloadLimit:null,enabled:!1,hitLimit:null,hitLimitResetTime:null,host:"https://anizb.org",loadLimitOnRandom:null,name:"anizb",password:null,preselect:!0,score:0,search_ids:[],searchTypes:[],showOnSearch:!0,timeout:null,type:"anizb",username:null},{accessType:"internal",categories:[],downloadLimit:null,enabled:!0,hitLimit:null,hitLimitResetTime:null,host:"https://binsearch.info",loadLimitOnRandom:null,name:"Binsearch",password:null,preselect:!0,score:0,search_ids:[],searchTypes:[],showOnSearch:!0,timeout:null,type:"binsearch",username:null},{accessType:"internal",categories:[],downloadLimit:null,enabled:!0,hitLimit:null,hitLimitResetTime:null,host:"https://www.nzbclub.com",loadLimitOnRandom:null,name:"NZBClub",password:null,preselect:!0,score:0,search_ids:[],searchTypes:[],showOnSearch:!0,timeout:null,type:"nzbclub",username:null},{accessType:"internal",categories:[],downloadLimit:null,enabled:!0,generalMinSize:1,hitLimit:null,hitLimitResetTime:null,host:"https://nzbindex.com",loadLimitOnRandom:null,name:"NZBIndex",password:null,preselect:!0,score:0,search_ids:[],searchTypes:[],showOnSearch:!0,timeout:null,type:"nzbindex",username:null}]];return t}function getIndexerBoxFields(e,t,n,r){var o=[];return o.push({key:"enabled",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Enabled"}}),("newznab"==e.type||"jackett"==e.type)&&o.push({key:"name",type:"horizontalInput",templateOptions:{type:"text",label:"Name",required:!0,help:"Used for identification. Changing the name will lose all history and stats!"},validators:{uniqueName:{expression:function(r){return n||r!=e.name?-1==_.pluck(t,"name").indexOf(r):!0},message:'"Indexer \\"" + $viewValue + "\\" already exists"'}}}),("newznab"==e.type||"jackett"==e.type)&&o.push({key:"host",type:"horizontalInput",templateOptions:{type:"text",label:"Host",required:!0,placeholder:"http://www.someindexer.com"},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}}),("newznab"==e.type||"jackett"==e.type)&&o.push({key:"apikey",type:"horizontalInput",templateOptions:{type:"text",label:"API Key"},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}}),o.push({key:"score",type:"horizontalInput",templateOptions:{type:"number",label:"Priority",required:!0,help:"When duplicate search results are found the result from the indexer with the highest number will be selected"}}),o.push({key:"timeout",type:"horizontalInput",templateOptions:{type:"number",label:"Timeout",help:'Supercedes the general timeout in "Searching"'}}),("newznab"==e.type||"jackett"==e.type)&&(o.push({key:"hitLimit",type:"horizontalInput",templateOptions:{type:"number",label:"API hit limit",help:'Maximum number of API hits since "API hit reset time"'}},{key:"downloadLimit",type:"horizontalInput",templateOptions:{type:"number",label:"Download limit",help:'When # of downloads since "Hit reset time" is reached indexer will not be searched.'}}),o.push({key:"loadLimitOnRandom",type:"horizontalInput",templateOptions:{type:"number",label:"Load limiting",help:"If set indexer will only be picked for one out of x API searches (on average)"},validators:{greaterThanZero:{expression:function(e,t){var n=t||e;return angular.isUndefined(n)||null===n||""===n||n>1},message:'"Value must be greater than 1"'}}},{key:"hitLimitResetTime",type:"horizontalInput",hideExpression:"!model.hitLimit && !model.downloadLimit",templateOptions:{type:"number",label:"Hit reset time",help:"UTC hour of day at which the API hit counter is reset (0==24). Leave empty for a rolling reset counter"},validators:{timeOfDay:{expression:function(e,t){var n=t||e;return n>=0&&24>=n},message:'$viewValue + " is not a valid hour of day (0-24)"'}}})),"newznab"==e.type&&o.push({key:"username",type:"horizontalInput",templateOptions:{type:"text",required:!1,label:"Username",help:"Only needed if indexer requires HTTP auth for API access (rare)"},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}}),"newznab"==e.type&&o.push({key:"password",type:"horizontalInput",hideExpression:"!model.username",templateOptions:{type:"text",required:!1,label:"Password",help:"Only needed if indexer requires HTTP auth for API access (rare)"}}),"newznab"==e.type&&o.push({key:"userAgent",type:"horizontalInput",templateOptions:{type:"text",required:!1,label:"User agent",help:"Rarely needed. Will supercede the one in the main searching settings"}}),o.push({key:"preselect",type:"horizontalSwitch",hideExpression:'model.accessType == "external"',templateOptions:{type:"switch",label:"Preselect",help:"Preselect this indexer on the search page"}}),"jackett"!=e.type&&o.push({key:"accessType",type:"horizontalSelect",templateOptions:{label:"Enable for...",options:[{name:"Internal searches only",value:"internal"},{name:"API searches only",value:"external"},{name:"Internal and API searches",value:"both"}]}}),"anizb"!=e.type&&o.push({key:"categories",type:"horizontalMultiselect",templateOptions:{label:"Enable for...",help:"You can decide that this indexer should only be used for certain categories",options:[{id:"movies",label:"Movies"},{id:"movieshd",label:"Movies HD"},{id:"moviessd",label:"Movies SD"},{id:"tv",label:"TV"},{id:"tvhd",label:"TV HD"},{id:"tvsd",label:"TV SD"},{id:"anime",label:"Anime"},{id:"audio",label:"Audio"},{id:"flac",label:"Audio FLAC"},{id:"mp3",label:"Audio MP3"},{id:"audiobook",label:"Audiobook"},{id:"console",label:"Console"},{id:"pc",label:"PC"},{id:"xxx",label:"XXX"},{id:"ebook",label:"Ebook"},{id:"comic",label:"Comic"}],getPlaceholder:function(){return"All categories"}}}),"newznab"==e.type&&o.push({key:"search_ids",type:"horizontalMultiselect",templateOptions:{label:"Search IDs",options:[{label:"TVDB",id:"tvdbid"},{label:"TVRage",id:"rid"},{label:"IMDB",id:"imdbid"},{label:"Trakt",id:"traktid"},{label:"TVMaze",id:"tvmazeid"},{label:"TMDB",id:"tmdbid"}],getPlaceholder:function(e){return angular.isUndefined(e)?"Unknown":"None"}}}),("newznab"==e.type||"jackett"==e.type)&&o.push({key:"searchTypes",type:"horizontalMultiselect",templateOptions:{label:"Search types",options:[{label:"Movies",id:"movie"},{label:"TV",id:"tvsearch"},{label:"Ebooks",id:"book"},{label:"Audio",id:"audio"}],getPlaceholder:function(e){return angular.isUndefined(e)?"Unknown":"None"}}}),("newznab"==e.type||"jackett"==e.type)&&o.push({type:"horizontalCheckCaps",hideExpression:"!model.host || !model.apikey || !model.name",templateOptions:{label:"Check capabilities",help:"Find out what search types the indexer supports. Done automatically for new indexers."}}),"nzbindex"==e.type&&o.push({key:"generalMinSize",type:"horizontalInput",templateOptions:{type:"number",label:"Min size",help:"NZBIndex returns a lot of crap with small file sizes. Set this value and all smaller results will be filtered out no matter the category"}}),o}function getDownloaderBoxFields(e,t,n){var r=[];return r=_.union(r,[{key:"enabled",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Enabled"}},{key:"name",type:"horizontalInput",templateOptions:{type:"text",label:"Name",required:!0},validators:{uniqueName:{expression:function(r){return n||r!=e.name?-1==_.pluck(t,"name").indexOf(r):!0},message:'"Downloader \\"" + $viewValue + "\\" already exists"'}}}]),"nzbget"==e.type?r=_.union(r,[{key:"host",type:"horizontalInput",templateOptions:{type:"text",label:"Host",required:!0},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}},{key:"port",type:"horizontalInput",templateOptions:{type:"number",label:"Port",placeholder:"5050",required:!0},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}},{key:"ssl",type:"horizontalSwitch",templateOptions:{type:"switch",label:"Use SSL"}}]):"sabnzbd"==e.type&&r.push({key:"url",type:"horizontalInput",templateOptions:{type:"text",label:"URL",required:!0},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}}),r=_.union(r,[{key:"username",type:"horizontalInput",templateOptions:{type:"text",label:"Username",help:"nzbget"==e.type?"Only alphanumeric usernames are guaranteed to work":""},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}},{key:"password",type:"horizontalInput",templateOptions:{type:"password",label:"Password",help:"nzbget"==e.type?"See username":""},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}}]),"sabnzbd"==e.type&&r.push({key:"apikey",type:"horizontalInput",templateOptions:{type:"text",label:"API Key"},watcher:{listener:function(e,t,n,r){t!=n&&(r.$parent.needsConnectionTest=!0)}}}),r=_.union(r,[{key:"defaultCategory",type:"horizontalInput",templateOptions:{type:"text",label:"Default category",help:'When adding NZBs this category will be used instead of asking for the category. Write "No category" to let the downloader decide.',placeholder:"Ask when downloading"}},{key:"nzbaccesstype",type:"horizontalSelect",templateOptions:{type:"select",label:"NZB access type",options:[{name:"Proxy NZBs from indexer",value:"serve"},{name:"Redirect to the indexer",value:"redirect"}],help:"How external access to NZBs is provided. Redirecting is recommended."}},{key:"nzbAddingType",type:"horizontalSelect",templateOptions:{type:"select",label:"NZB adding type",options:[{name:"Send link",value:"link"},{name:"Upload NZB",value:"nzb"}],help:"How NZBs are added to the downloader, either by sending a link to the NZB or by uploading the NZB data"}},{key:"iconCssClass",type:"horizontalInput",templateOptions:{type:"text",label:"Icon CSS class",help:'Copy an icon name from http://fontawesome.io/examples/ (e.g. "film")',placeholder:"Default"}}])}function getDownloaderPresets(){return[[{host:"127.0.0.1",name:"NZBGet",password:"tegbzn6789x",port:6789,ssl:!1,type:"nzbget",username:"nzbgetx",nzbAddingType:"link",nzbaccesstype:"redirect",iconCssClass:"",downloadType:"nzb"},{url:"http://localhost:8086",type:"sabnzbd",name:"SABnzbd",nzbAddingType:"link",nzbaccesstype:"redirect",iconCssClass:"",downloadType:"nzb",username:null,password:null}]]}function handleConnectionCheckFail(e,t,n,r,o){var a,i;t.checked?(a="The connection to the "+r+" failed: "+t.message+"
Do you want to add it anyway?",i="I know what I'm doing"):(a="The connection to the "+r+" could not be tested, sorry",i="I'll risk it"),e.open("Connection check failed",a,{yes:{onYes:function(){o.resolve()},text:i},no:{onNo:function(){n.enabled=!1,o.resolve()},text:"Add it, but disabled"},cancel:{onCancel:function(){o.reject()},text:"Aahh, let me try again"}})}function IndexerCheckBeforeCloseService(e,t,n,r,o){function a(a,s){var l=e.defer();if(a.needsConnectionTest){r.start("Testing connection..."),a.spinnerActive=!0;var c="internalapi/test_newznab",u={host:s.host,apikey:s.apikey};angular.isDefined(s.username)&&(u.username=s.username,u.password=s.password),n.checkConnection(c,JSON.stringify(u)).then(function(){i(a,s).then(function(){r.reset(),a.spinnerActive=!1,o.info("Connection to the indexer tested successfully"),l.resolve()},function(){r.reset(),a.spinnerActive=!1,l.reject()})},function(e){r.reset(),handleConnectionCheckFail(t,e,s,"indexer",l)})["finally"](function(){a.spinnerActive=!1,r.reset()})}else i(a,s).then(function(){l.resolve()},function(){l.reject()});return l.promise}function i(a,i){var s=e.defer(),l="internalapi/test_caps",c={indexer:i.name,apikey:i.apikey,host:i.host};return angular.isDefined(i.username)&&(c.username=i.username,c.password=i.password),angular.isUndefined(i.search_ids)||angular.isUndefined(i.searchTypes)?(r.start("New indexer found. Testing its capabilities. This may take a bit..."),n.checkCaps(l,JSON.stringify(c),i).then(function(e,t){r.reset(),a.spinnerActive=!1,o.info("Successfully tested capabilites of indexer"),s.resolve()},function(){r.reset(),a.spinnerActive=!1,i.search_ids=[],i.searchTypes=[],t.open("Error testing capabilities","The capabilities of the indexer could not be checked. The indexer won't be used for ID based searches (IMDB, TVDB, etc.). You may repeat the check manually at any time."),s.resolve()})["finally"](function(){a.spinnerActive=!1})):s.resolve(),s.promise}return{check:a}}function DownloaderCheckBeforeCloseService(e,t,n,r,o){function a(a,i){var s=e.defer();if(a.isInitial||a.needsConnectionTest){a.spinnerActive=!0,o.start("Testing connection...");var l="internalapi/test_downloader";t.checkConnection(l,JSON.stringify(i)).then(function(){o.reset(),a.spinnerActive=!1,n.info("Connection to the downloader tested successfully"),s.resolve()},function(e){o.reset(),a.spinnerActive=!1,handleConnectionCheckFail(r,e,i,"downloader",s)})["finally"](function(){a.spinnerActive=!1,o.reset()})}else s.resolve();return s.promise}return{check:a}}function ConfigController(e,t,n,r,o,a,i,s,l,c,u,d){function p(){if(e.form.$valid)r.set(e.config),e.form.$setPristine(),a.invalidate(),e.restartRequired&&l.open("Restart required","The changes you have made may require a restart to be effective.
Do you want to restart now?",{yes:{onYes:function(){c.restart()}},no:{onNo:function(){e.restartRequired=!1}}});else{d.error("Config invalid. Please check your settings.");try{angular.isDefined(form.$error.required)&&_.each(form.$error.required,function(e){angular.isDefined(e.$error.required)&&_.each(e.$error.required,function(e){e.$setTouched()})}),angular.forEach(e.form.$error.required,function(e){e.$setTouched()})}catch(t){}}}e.config=o,e.submit=p,e.activeTab=n,e.restartRequired=!1,e.ignoreSaveNeeded=!1,i.setRestartWatcher(function(){e.restartRequired=!0}),s=o,e.fields=i.getFields(e.config),e.allTabs=[{active:!1,state:"root.config.main",name:"Main",model:s.main,fields:e.fields.main,options:{}},{active:!1,state:"root.config.auth",name:"Authorization",model:s.auth,fields:e.fields.auth,options:{}},{active:!1,state:"root.config.searching",name:"Searching",model:s.searching,fields:e.fields.searching,options:{}},{active:!1,state:"root.config.categories",name:"Categories",model:s.categories,fields:e.fields.categories,options:{}},{active:!1,state:"root.config.downloader",name:"Downloaders",model:s.downloaders,fields:e.fields.downloaders,options:{}},{active:!1,state:"root.config.indexers",name:"Indexers",model:s.indexers,fields:e.fields.indexers,options:{}}],e.isSavingNeeded=function(){return e.form.$dirty&&e.form.$valid&&!e.ignoreSaveNeeded},e.goToConfigState=function(t){u.go(e.allTabs[t].state,{activeTab:t},{inherit:!1,notify:!0,reload:!0})},e.help=function(){var n=e.allTabs[e.activeTab].name;t.get("internalapi/gethelp",{params:{id:n}}).then(function(e){var t=''+e.data+"";l.open(n+" - Help",t,{},"lg")},function(){d.error("Error while loading help")})},e.$on("$stateChangeStart",function(t,n,r,o,a){e.isSavingNeeded()&&(t.preventDefault(),l.open("Unsaved changed","Do you want to save before leaving?",{yes:{onYes:function(){e.submit(),u.go(n)},text:"Yes"},no:{onNo:function(){e.ignoreSaveNeeded=!0,e.allTabs[e.activeTab].options.resetModel(),u.go(n)},text:"No"},cancel:{onCancel:function(){t.preventDefault()},text:"Cancel"}}))})}function CategoriesService(e){function t(t){for(var n in e.getSafe().categories)if(n=e.getSafe().categories[n],n.name==t||n.pretty==t)return n}function n(){return e.getSafe().categories}function r(){return n()[1]}return{getByName:t,getAll:n,getDefault:r}}function BackupService(e){function t(){return e.get("internalapi/getbackups").then(function(e){return e.data.backups})}function n(t){return e.get("internalapi/restorefrombackupfile",{params:{filename:t}}).then(function(e){return e})}return{getBackupsList:t,restoreFromFile:n}}var nzbhydraapp=angular.module("nzbhydraApp",["angular-loading-bar","cgBusy","ui.bootstrap","ipCookie","angular-growl","angular.filter","filters","ui.router","blockUI","mgcrea.ngStrap","angularUtils.directives.dirPagination","nvd3","formly","formlyBootstrap","frapontillo.bootstrap-switch","ui.select","ngSanitize","checklist-model","ngAria","ngMessages","ui.router.title","LocalStorageModule","angular.filter","ngFileUpload","ngCookies"]);angular.module("nzbhydraApp").config(["$stateProvider","$urlRouterProvider","$locationProvider","blockUIConfig","$urlMatcherFactoryProvider","localStorageServiceProvider","bootstrapped",function(e,t,n,r,o,a,i){function s(e,t,n,r,o){var a=e.defer(),i=r.getUserInfos(),s=!1;return s="search"==o?!i.searchRestricted||i.maySeeSearch:"stats"==o?!i.statsRestricted||i.maySeeStats:"admin"==o?!i.adminRestricted||i.maySeeAdmin:!0,s||"form"!=i.authType?a.resolve():t(function(){n.go("root.login")}),a.promise}r.autoBlock=!1,o.strictMode(!1),t.otherwise("/"),e.state("root",{url:"","abstract":!0,resolve:{},views:{header:{templateUrl:"static/html/states/header.html",controller:"HeaderController"},footer:{templateUrl:"footer.html"}}}).state("root.config",{url:"/config",views:{},"abstract":!0}).state("root.config.main",{url:"/main",views:{"container@":{templateUrl:"static/html/states/config.html",controller:"ConfigController",controllerAs:"ctrl",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],config:["loginRequired","ConfigService",function(e,t){return t.get()}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 0}],$title:["$stateParams",function(e){return"Config (Main)"}]}}}}).state("root.config.auth",{url:"/auth",views:{"container@":{templateUrl:"static/html/states/config.html",controller:"ConfigController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],config:["loginRequired","ConfigService",function(e,t){return t.get()}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 1}],$title:["$stateParams",function(e){return"Config (Auth)"}]}}}}).state("root.config.searching",{url:"/searching",views:{"container@":{templateUrl:"static/html/states/config.html",controller:"ConfigController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],config:["loginRequired","ConfigService",function(e,t){return t.get()}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 2}],$title:["$stateParams",function(e){return"Config (Searching)"}]}}}}).state("root.config.categories",{url:"/categories",views:{"container@":{templateUrl:"static/html/states/config.html",controller:"ConfigController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],config:["loginRequired","ConfigService",function(e,t){return t.get()}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 3}],$title:["$stateParams",function(e){return"Config (Categories)"}]}}}}).state("root.config.downloader",{url:"/downloader",views:{"container@":{templateUrl:"static/html/states/config.html",controller:"ConfigController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],config:["loginRequired","ConfigService",function(e,t){return t.get()}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 4}],$title:["$stateParams",function(e){return"Config (Downloader)"}]}}}}).state("root.config.indexers",{url:"/indexers",views:{"container@":{templateUrl:"static/html/states/config.html",controller:"ConfigController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],config:["loginRequired","ConfigService",function(e,t){return t.get()}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 5}],$title:["$stateParams",function(e){return"Config (Indexers)"}]}}}}).state("root.stats",{url:"/stats","abstract":!0,views:{"container@":{templateUrl:"static/html/states/stats.html",controller:["$scope","$state",function(e,t){e.$state=t}],resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"stats")}],$title:["$stateParams",function(e){return"Stats"}]}}}}).state("root.stats.main",{url:"/stats",views:{"stats@root.stats":{templateUrl:"static/html/states/main-stats.html",controller:"StatsController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"stats")}],$title:["$stateParams",function(e){return"Stats"}]}}}}).state("root.stats.indexers",{url:"/indexers",views:{"stats@root.stats":{templateUrl:"static/html/states/indexer-statuses.html",controller:IndexerStatusesController,resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"stats")}],statuses:["$http",function(e){return e.get("internalapi/getindexerstatuses").success(function(e){return e.indexerStatuses})}],$title:["$stateParams",function(e){return"Stats (Indexers)"}]}}}}).state("root.stats.searches",{url:"/searches",views:{"stats@root.stats":{templateUrl:"static/html/states/search-history.html",controller:SearchHistoryController,resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"stats")}],history:["loginRequired","SearchHistoryService",function(e,t){return t.getSearchHistory()}],$title:["$stateParams",function(e){return"Stats (Searches)"}]}}}}).state("root.stats.downloads",{url:"/downloads",views:{"stats@root.stats":{templateUrl:"static/html/states/download-history.html",controller:DownloadHistoryController,resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"stats")}],downloads:["StatsService",function(e){return e.getDownloadHistory()}],$title:["$stateParams",function(e){return"Stats (Downloads)"}]}}}}).state("root.system",{url:"/system",views:{},"abstract":!0}).state("root.system.control",{url:"/control",views:{"container@":{templateUrl:"static/html/states/system.html",controller:"SystemController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],askAdmin:["loginRequired","$http",function(e,t){return t.get("internalapi/askadmin")}],activeTab:[function(){return 0}],$title:["$stateParams",function(e){return"System"}]}}}}).state("root.system.updates",{url:"/updates",views:{"container@":{templateUrl:"static/html/states/system.html",controller:"SystemController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 1}],$title:["$stateParams",function(e){return"System (Updates)"}]}}}}).state("root.system.log",{url:"/log",views:{"container@":{templateUrl:"static/html/states/system.html",controller:"SystemController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 2}],$title:["$stateParams",function(e){return"System (Log)"}]}}}}).state("root.system.backup",{url:"/backup",views:{"container@":{templateUrl:"static/html/states/system.html",controller:"SystemController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 3}],$title:["$stateParams",function(e){return"System (Backup)"}]}}}}).state("root.system.bugreport",{url:"/bugreport",views:{"container@":{templateUrl:"static/html/states/system.html",controller:"SystemController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 4}],$title:["$stateParams",function(e){return"System (Bug report)"}]}}}}).state("root.system.about",{url:"/about",views:{"container@":{templateUrl:"static/html/states/system.html",controller:"SystemController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"admin")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],activeTab:[function(){return 5}],$title:["$stateParams",function(e){return"System (About)"}]}}}}).state("root.search",{url:"/?category&query&imdbid&tvdbid&title&season&episode&minsize&maxsize&minage&maxage&offsets&rid&mode&tmdbid&indexers",views:{"container@":{templateUrl:"static/html/states/search.html",controller:"SearchController",resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"search")}],safeConfig:["loginRequired","ConfigService",function(e,t){return t.getSafe()}],$title:["$stateParams",function(e){return"Search"}]}}}}).state("root.search.results",{views:{"results@root.search":{templateUrl:"static/html/states/search-results.html", -controller:"SearchResultsController",controllerAs:"srController",options:{inherit:!0},resolve:{loginRequired:["$q","$timeout","$state","HydraAuthService",function(e,t,n,r){return s(e,t,n,r,"search")}],$title:["$stateParams",function(e){var t,n="Search results";return e.title?t=e.title:e.query&&(t=e.query),t&&(n+=" ("+t+")"),n}]}}}}),n.html5Mode(!0),a.setPrefix("nzbhydra"),a.setNotify(!0,!1)}]),nzbhydraapp.config(["paginationTemplateProvider",function(e){e.setPath("static/html/dirPagination.tpl.html")}]),nzbhydraapp.config(["cfpLoadingBarProvider",function(e){e.latencyThreshold=100}]),nzbhydraapp.config(["growlProvider",function(e){e.globalTimeToLive(5e3),e.globalPosition("bottom-right")}]),nzbhydraapp.directive("ngEnter",function(){return function(e,t,n){t.bind("keydown keypress",function(t){13===t.which&&(e.$apply(function(){e.$evalAsync(n.ngEnter)}),t.preventDefault())})}}),nzbhydraapp.filter("nzblink",function(){return function(e){var t=new URI("internalapi/getnzb");return t.addQuery("searchResultId",e.searchResultId),t.toString()}}),nzbhydraapp.factory("focus",["$rootScope","$timeout",function(e,t){return function(n){t(function(){e.$broadcast("focusOn",n)})}}]),nzbhydraapp.run(["$rootScope",function(e){e.$on("$stateChangeSuccess",function(t,n,r,o,a){try{e.title=n.views[Object.keys(n.views)[0]].resolve.$title[1](r)}catch(i){}})}]),nzbhydraapp.filter("unsafe",["$sce",function(e){return e.trustAsHtml}]),nzbhydraapp.filter("dereferer",["ConfigService",function(e){return function(t){return e.getSafe().dereferer?e.getSafe().dereferer.replace("$s",escape(t)):t}}]),nzbhydraapp.config(["$provide",function(e){e.decorator("$exceptionHandler",["$delegate","$injector",function(e,t){return function(t,n){e(t,n);try{console.log(t);var r=t.stack.split("\n").map(function(e){return e.trim()});r=r.join("\n")}catch(o){console.error("Unable to log JS exception to server",o)}}}])}]),_.mixin({isNullOrEmpty:function(e){return _.isUndefined(e)||_.isNull(e)||_.isString(e)&&0===e.length}}),nzbhydraapp.factory("sessionInjector",["$injector",function(e){var t={response:function(t){return null!=t.headers("Hydra-MaySeeAdmin")&&e.get("HydraAuthService").setLoggedInByBasic("True"==t.headers("Hydra-MaySeeStats"),"True"==t.headers("Hydra-MaySeeAdmin"),t.headers("Hydra-Username")),t}};return t}]),nzbhydraapp.config(["$httpProvider",function(e){e.interceptors.push("sessionInjector")}]),nzbhydraapp.directive("autoFocus",["$timeout",function(e){return{restrict:"AC",link:function(t,n){e(function(){n[0].focus()},0)}}}]),nzbhydraapp.factory("focus",["$timeout","$window",function(e,t){return function(n){e(function(){var e=t.document.getElementById(n);e&&e.focus()})}}]),nzbhydraapp.directive("eventFocus",["focus",function(e){return function(t,n,r){n.on(r.eventFocus,function(){e(r.eventFocusId)}),t.$on("$destroy",function(){n.off(r.eventFocus)})}}]),angular.module("nzbhydraApp").directive("hydraupdates",hydraupdates),angular.module("nzbhydraApp").directive("titleRow",titleRow),angular.module("nzbhydraApp").directive("titleGroup",titleGroup),angular.module("nzbhydraApp").directive("tabOrChart",tabOrChart),angular.module("nzbhydraApp").directive("searchResult",searchResult),angular.module("nzbhydraApp").directive("otherColumns",otherColumns),otherColumns.$inject=["$http","$templateCache","$compile","$window"],angular.module("nzbhydraApp").controller("NfoModalInstanceCtrl",NfoModalInstanceCtrl),NfoModalInstanceCtrl.$inject=["$scope","$uibModalInstance","nfo"],angular.module("nzbhydraApp").directive("onFinishRender",onFinishRender),onFinishRender.$inject=["$timeout"],angular.module("nzbhydraApp").directive("hydralog",hydralog),angular.module("nzbhydraApp").directive("keepFocus",["$timeout",function(e){return{restrict:"A",require:"ngModel",link:function(t,n,r,o){o.$parsers.unshift(function(t){return e(function(){n[0].focus()}),t})}}}]),angular.module("nzbhydraApp").directive("indexerInput",indexerInput),angular.module("nzbhydraApp").directive("focusOn",focusOn),angular.module("nzbhydraApp").directive("duplicateGroup",duplicateGroup),angular.module("nzbhydraApp").directive("downloadNzbzipButton",downloadNzbzipButton),angular.module("nzbhydraApp").directive("downloadNzbsButton",downloadNzbsButton),angular.module("nzbhydraApp").directive("columnFilterWrapper",columnFilterWrapper),angular.module("nzbhydraApp").directive("freetextFilter",freetextFilter),angular.module("nzbhydraApp").directive("checkboxesFilter",checkboxesFilter),angular.module("nzbhydraApp").directive("booleanFilter",booleanFilter),angular.module("nzbhydraApp").directive("timeFilter",timeFilter),angular.module("nzbhydraApp").directive("columnSortable",columnSortable),angular.module("nzbhydraApp").directive("connectionTest",connectionTest),angular.module("nzbhydraApp").directive("cfgFormEntry",cfgFormEntry),angular.module("nzbhydraApp").directive("hydrabackup",hydrabackup),angular.module("nzbhydraApp").directive("addableNzbs",addableNzbs),angular.module("nzbhydraApp").directive("addableNzb",addableNzb),angular.module("nzbhydraApp").factory("UpdateService",UpdateService),UpdateService.$inject=["$http","growl","blockUI","RestartService"],angular.module("nzbhydraApp").controller("UpdateFooterController",UpdateFooterController),UpdateFooterController.$inject=["$scope","UpdateService","HydraAuthService"],angular.module("nzbhydraApp").controller("SystemController",SystemController),SystemController.$inject=["$scope","$state","activeTab","$http","growl","RestartService","ModalService","UpdateService","NzbHydraControlService"],angular.module("nzbhydraApp").factory("StatsService",StatsService),StatsService.$inject=["$http"],angular.module("nzbhydraApp").controller("StatsController",StatsController),StatsController.$inject=["$scope","$filter","StatsService","blockUI"],angular.module("nzbhydraApp").factory("SearchService",SearchService),SearchService.$inject=["$http"],angular.module("nzbhydraApp").controller("SearchResultsController",SearchResultsController),SearchResultsController.$inject=["$stateParams","$scope","$q","$timeout","blockUI","growl","localStorageService","SearchService","ConfigService"],angular.module("nzbhydraApp").factory("SearchHistoryService",SearchHistoryService),SearchHistoryService.$inject=["$filter","$http"],angular.module("nzbhydraApp").controller("SearchHistoryController",SearchHistoryController),SearchHistoryController.$inject=["$scope","$state","SearchHistoryService","ConfigService","history","$sce","$filter"],angular.module("nzbhydraApp").controller("SearchController",SearchController),SearchController.$inject=["$scope","$http","$stateParams","$state","$window","$filter","$sce","growl","SearchService","focus","ConfigService","HydraAuthService","CategoriesService","blockUI","$element","ModalService","SearchHistoryService"],angular.module("nzbhydraApp").factory("RestartService",RestartService),RestartService.$inject=["blockUI","$timeout","$window","growl","NzbHydraControlService"],angular.module("nzbhydraApp").factory("NzbHydraControlService",NzbHydraControlService),NzbHydraControlService.$inject=["$http"],angular.module("nzbhydraApp").factory("NzbDownloadService",NzbDownloadService),NzbDownloadService.$inject=["$http","ConfigService","DownloaderCategoriesService"],angular.module("nzbhydraApp").factory("ModalService",ModalService),ModalService.$inject=["$uibModal","$q"],angular.module("nzbhydraApp").controller("ModalInstanceCtrl",ModalInstanceCtrl),ModalInstanceCtrl.$inject=["$scope","$uibModalInstance","headline","message","params"],angular.module("nzbhydraApp").service("GeneralModalService",GeneralModalService),angular.module("nzbhydraApp").controller("LoginController",LoginController),LoginController.$inject=["$scope","RequestsErrorHandler","$state","HydraAuthService","growl"],angular.module("nzbhydraApp").controller("IndexerStatusesController",IndexerStatusesController),IndexerStatusesController.$inject=["$scope","$http","statuses"],angular.module("nzbhydraApp").filter("formatDate",formatDate),formatDate.$inject=["dateFilter"],angular.module("nzbhydraApp").filter("reformatDate",reformatDate),angular.module("nzbhydraApp").controller("IndexController",IndexController),IndexController.$inject=["$scope","$http","$stateParams","$state"],angular.module("nzbhydraApp").factory("HydraAuthService",HydraAuthService),HydraAuthService.$inject=["$q","$rootScope","$http","bootstrapped"],angular.module("nzbhydraApp").controller("HeaderController",HeaderController),HeaderController.$inject=["$scope","$state","growl","HydraAuthService","$location"];var HEADER_NAME="MyApp-Handle-Errors-Generically",specificallyHandleInProgress=!1;nzbhydraapp.factory("RequestsErrorHandler",["$q","growl","blockUI","GeneralModalService",function(e,t,n,r){return{specificallyHandled:function(e){specificallyHandleInProgress=!0;try{return e()}finally{specificallyHandleInProgress=!1}},responseError:function(t){n.reset();var o=t&&t.config&&t.config.headers&&t.config.headers[HEADER_NAME]&&!t.config.url.contains("logerror");if(o){var a="An error occured :
"+t.status+": "+t.statusText;t.data&&(a+="

"+t.data),r.open(a)}else t&&t.config&&t.config.headers&&t.config.headers[HEADER_NAME]&&t.config.url.contains("logerror")&&console.log("Not handling connection error while sending exception to server");return e.reject(t)}}}]),nzbhydraapp.config(["$provide","$httpProvider",function(e,t){function n(e){return e=e||{},e.headers=e.headers||{},specificallyHandleInProgress||(e.headers[HEADER_NAME]=!0),e}t.interceptors.push("RequestsErrorHandler"),e.decorator("$http",["$delegate",function(e){function t(t){return function(r,o){return e[t](r,n(o))}}function r(t){return function(r,o,a){return e[t](r,o,n(a))}}function o(t){for(var n in e)t.hasOwnProperty(n)||("function"==typeof e[n]?t[n]=function(){return e.apply(e,arguments)}:t[n]=e[n])}var a=function(t){return e(n(t))};return a.get=t("get"),a["delete"]=t("delete"),a.head=t("head"),a.jsonp=t("jsonp"),a.post=r("post"),a.put=r("put"),o(a),a}])}]),hashCode=function(e){return e.split("").reduce(function(e,t){return e=(e<<5)-e+t.charCodeAt(0),e&e},0)},angular.module("nzbhydraApp").run(["formlyConfig","formlyValidationMessages",function(e,t){t.addStringMessage("required","This field is required"),e.extras.errorExistsAndShouldBeVisibleExpression="fc.$touched || form.$submitted"}]),angular.module("nzbhydraApp").config(["formlyConfigProvider",function(e){e.extras.removeChromeAutoComplete=!0,e.extras.explicitAsync=!0,e.disableWarnings=window.onProd,e.setWrapper({name:"settingWrapper",templateUrl:"setting-wrapper.html"}),e.setWrapper({name:"fieldset",template:["
","{{options.templateOptions.label}}","","
"].join(" ")}),e.setType({name:"help",template:['
','
','
{{ line }}
',"
","
"].join(" ")}),e.setWrapper({name:"logicalGroup",template:[""].join(" ")}),e.setType({name:"horizontalInput","extends":"input",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"timeOfDay","extends":"horizontalInput",controller:["$scope",function(e){e.model[e.options.key]=moment.utc(e.model[e.options.key]).toDate()}]}),e.setType({name:"percentInput",template:[''].join(" ")}),e.setType({name:"apiKeyInput",template:['
','','','',"
"].join(" "),controller:function(e){e.generate=function(){for(var t="",n=24,r="0123456789abcdefghijklmnopqrstuvwxyz",o=n;o>0;--o)t+=r[Math.floor(Math.random()*r.length)];e.model[e.options.key]=t}}}),e.setType({name:"testConnection",templateUrl:"button-test-connection.html"}),e.setType({name:"horizontalTestConnection","extends":"testConnection",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"checkCaps",templateUrl:"button-check-caps.html",controller:function(e,t,n){function r(){angular.element(a).removeClass("btn-default"),angular.element(a).removeClass("btn-danger"),angular.element(a).addClass("btn-success")}function o(){angular.element(a).removeClass("btn-default"),angular.element(a).removeClass("btn-success"),angular.element(a).addClass("btn-danger")}e.message="",e.uniqueId=hashCode(e.model.name)+hashCode(e.model.host);var a="#button-check-caps-"+e.uniqueId,i="#message-check-caps-"+e.uniqueId;e.checkCaps=function(){angular.element(a).addClass("glyphicon-refresh-animate");var s="internalapi/test_caps",l={indexer:e.model.name,apikey:e.model.apikey,host:e.model.host};angular.isDefined(e.model.username)&&(l.username=e.model.username,l.password=e.model.password),t.checkCaps(s,l,e.model).then(function(e,t){angular.element(i).text(e.supportedIds&&e.supportedTypes),r()},function(e){angular.element(i).text(e),o(),n.open("Error testing capabilities",'The capabilities of the indexer could not be checked. You can set the IDs manually. Refer to the Wiki for the IDs supported by some indexers.

You may repeat the check at any time to try again.')})["finally"](function(){angular.element(a).removeClass("glyphicon-refresh-animate")})}}}),e.setType({name:"horizontalCheckCaps","extends":"checkCaps",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"horizontalApiKeyInput","extends":"apiKeyInput",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"horizontalPercentInput","extends":"percentInput",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"switch",template:'
'}),e.setType({name:"duoSetting","extends":"input",defaultOptions:{className:"col-md-9",templateOptions:{type:"number",noRow:!0,label:""}}}),e.setType({name:"horizontalSwitch","extends":"switch",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"horizontalSelect","extends":"select",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"horizontalMultiselect",defaultOptions:{templateOptions:{optionsAttr:"bs-options",ngOptions:"option[to.valueProp] as option in to.options | filter: $select.search",valueProp:"id",labelProp:"label",getPlaceholder:function(){return""}}},templateUrl:"ui-select-multiple.html",wrapper:["settingWrapper","bootstrapHasError"]}),e.setType({name:"label",template:''}),e.setType({name:"duolabel","extends":"label",defaultOptions:{className:"col-md-2",templateOptions:{label:"-"}}}),e.setType({name:"repeatSection",templateUrl:"repeatSection.html",controller:function(e){function t(t){return t=angular.copy(t),e.repeatfields=t,t}function n(){e.model[e.options.key]=e.model[e.options.key]||[];var t=e.model[e.options.key],n=angular.copy(e.options.templateOptions.defaultModel);t.push(n)}function r(t){e.model[e.options.key].splice(t,1)}e.formOptions={formState:e.formState},e.addNew=n,e.remove=r,e.copyFields=t,e.clear=function(t){return _.mapObject(t,function(t,n){return"object"==typeof n?e.clear(n):void 0})}}}),e.setType({name:"arrayConfig",templateUrl:"arrayConfig.html",controller:function(e,t,n){function r(n,r,o,a){var i=t.open({templateUrl:"configBox.html",controller:"ConfigBoxInstanceController",size:"lg",resolve:{model:function(){return n},fields:function(){return e.options.data.fieldsFunction(n,r,o,angular.injector())},isInitial:function(){return o},parentModel:function(){return r},data:function(){return e.options.data}}});i.result.then(function(){e.form.$setDirty(!0),angular.isDefined(a)&&a(!0)},function(){angular.isDefined(a)&&a(!1)})}function o(t,n){e._showBox(t,n,!1)}e.formOptions={formState:e.formState},e._showBox=r,e.showBox=o,e.isInitial=!1,e.presets=e.options.data.presets(e.model),e.addEntry=function(t,r){if(e.options.data.checkAddingAllowed(t,r)){var o=angular.copy(e.options.data.defaultModel);angular.isDefined(r)&&_.extend(o,r),e.isInitial=!0,e._showBox(o,t,!0,function(e){e&&t.push(o)})}else n.error("That predefined indexer is already configured.")}}})}]),angular.module("nzbhydraApp").controller("ConfigBoxInstanceController",["$scope","$q","$uibModalInstance","$http","model","fields","isInitial","parentModel","data","growl",function(e,t,n,r,o,a,i,s,l,c){e.model=o,e.fields=a,e.isInitial=i,e.allowDelete=l.allowDeleteFunction(o),e.spinnerActive=!1,e.needsConnectionTest=!1,e.obSubmit=function(){if(console.log(e),e.form.$valid){l.checkBeforeClose(e,o).then(function(){n.close(e)})}else c.error("Config invalid. Please check your settings."),angular.forEach(e.form.$error,function(e){angular.forEach(e,function(e){e.$setTouched()})})},e.reset=function(){e.reset()},e.deleteEntry=function(){s.splice(s.indexOf(o),1),n.close(e)},e.reset=function(){angular.isDefined(l.resetFunction)&&l.resetFunction(e)},e.$on("modal.closing",function(t,n){"backdrop click"==n&&e.reset(e)})}]),angular.module("nzbhydraApp").factory("ConfigBoxService",ConfigBoxService),ConfigBoxService.$inject=["$http","$q"];var filters=angular.module("filters",[]);filters.filter("bytes",function(){return function(e){return filesize(e)}}),filters.filter("unsafe",["$sce",function(e){return function(t,n){return e.trustAs(n||"html",text)}}]),angular.module("nzbhydraApp").factory("FileDownloadService",FileDownloadService),FileDownloadService.$inject=["$http","growl"],angular.module("nzbhydraApp").factory("DownloaderCategoriesService",DownloaderCategoriesService),DownloaderCategoriesService.$inject=["$http","$q","$uibModal"],angular.module("nzbhydraApp").controller("DownloaderCategorySelectionController",["$scope","$uibModalInstance","DownloaderCategoriesService","categories",function(e,t,n,r){console.log(r),e.categories=r,e.select=function(r){n.select(r),t.close(e)}}]),angular.module("nzbhydraApp").controller("DownloadHistoryController",DownloadHistoryController),DownloadHistoryController.$inject=["$scope","StatsService","downloads","ConfigService"],angular.module("nzbhydraApp").filter("reformatDateEpoch",reformatDateEpoch),angular.module("nzbhydraApp").factory("ConfigService",ConfigService),ConfigService.$inject=["$http","$q","$cacheFactory","bootstrapped"],angular.module("nzbhydraApp").factory("ConfigFields",ConfigFields),ConfigFields.$inject=["$injector"],angular.module("nzbhydraApp").factory("IndexerCheckBeforeCloseService",IndexerCheckBeforeCloseService),IndexerCheckBeforeCloseService.$inject=["$q","ModalService","ConfigBoxService","blockUI","growl"],angular.module("nzbhydraApp").factory("DownloaderCheckBeforeCloseService",DownloaderCheckBeforeCloseService),DownloaderCheckBeforeCloseService.$inject=["$q","ConfigBoxService","growl","ModalService","blockUI"],angular.module("nzbhydraApp").factory("ConfigModel",function(){return{}}),angular.module("nzbhydraApp").factory("ConfigWatcher",function(){function e(e){t=e,t.$watchGroup(["config.main.host"],function(){},!0)}var t;return{watch:e}}),angular.module("nzbhydraApp").controller("ConfigController",ConfigController),ConfigController.$inject=["$scope","$http","activeTab","ConfigService","config","DownloaderCategoriesService","ConfigFields","ConfigModel","ModalService","RestartService","$state","growl"],angular.module("nzbhydraApp").factory("CategoriesService",CategoriesService),CategoriesService.$inject=["ConfigService"],angular.module("nzbhydraApp").factory("BackupService",BackupService),BackupService.$inject=["$http"]; +var nzbhydraapp = angular.module('nzbhydraApp', ['angular-loading-bar', 'cgBusy', 'ui.bootstrap', 'ipCookie', 'angular-growl', 'angular.filter', 'filters', 'ui.router', 'blockUI', 'mgcrea.ngStrap', 'angularUtils.directives.dirPagination', 'nvd3', 'formly', 'formlyBootstrap', 'frapontillo.bootstrap-switch', 'ui.select', 'ngSanitize', 'checklist-model', 'ngAria', 'ngMessages', 'ui.router.title', 'LocalStorageModule', 'angular.filter', 'ngFileUpload', 'ngCookies']); + +angular.module('nzbhydraApp').config(["$stateProvider", "$urlRouterProvider", "$locationProvider", "blockUIConfig", "$urlMatcherFactoryProvider", "localStorageServiceProvider", "bootstrapped", function ($stateProvider, $urlRouterProvider, $locationProvider, blockUIConfig, $urlMatcherFactoryProvider, localStorageServiceProvider, bootstrapped) { + + blockUIConfig.autoBlock = false; + $urlMatcherFactoryProvider.strictMode(false); + + $urlRouterProvider.otherwise("/"); + + + $stateProvider + .state('root', { + url: '', + abstract: true, + resolve: { + //loginRequired: loginRequired + }, + views: { + 'header': { + templateUrl: 'static/html/states/header.html', + controller: 'HeaderController' + }, + 'footer': { + templateUrl: 'footer.html' + } + } + }) + .state("root.config", { + url: "/config", + views: {}, + abstract: true + }) + .state("root.config.main", { + url: "/main", + views: { + 'container@': { + templateUrl: "static/html/states/config.html", + controller: "ConfigController", + controllerAs: 'ctrl', + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.get(); + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 0; + }], + $title: ["$stateParams", function ($stateParams) { + return "Config (Main)" + }] + } + } + } + }) + .state("root.config.auth", { + url: "/auth", + views: { + 'container@': { + templateUrl: "static/html/states/config.html", + controller: "ConfigController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.get(); + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 1; + }], + $title: ["$stateParams", function ($stateParams) { + return "Config (Auth)" + }] + } + } + } + }) + .state("root.config.searching", { + url: "/searching", + views: { + 'container@': { + templateUrl: "static/html/states/config.html", + controller: "ConfigController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.get(); + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 2; + }], + $title: ["$stateParams", function ($stateParams) { + return "Config (Searching)" + }] + } + } + } + }) + .state("root.config.categories", { + url: "/categories", + views: { + 'container@': { + templateUrl: "static/html/states/config.html", + controller: "ConfigController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.get(); + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 3; + }], + $title: ["$stateParams", function ($stateParams) { + return "Config (Categories)" + }] + } + } + } + }) + .state("root.config.downloader", { + url: "/downloader", + views: { + 'container@': { + templateUrl: "static/html/states/config.html", + controller: "ConfigController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.get(); + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 4; + }], + $title: ["$stateParams", function ($stateParams) { + return "Config (Downloader)" + }] + } + } + } + }) + .state("root.config.indexers", { + url: "/indexers", + views: { + 'container@': { + templateUrl: "static/html/states/config.html", + controller: "ConfigController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.get(); + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 5; + }], + $title: ["$stateParams", function ($stateParams) { + return "Config (Indexers)" + }] + } + } + } + }) + .state("root.stats", { + url: "/stats", + abstract: true, + views: { + 'container@': { + templateUrl: "static/html/states/stats.html", + controller: ["$scope", "$state", function ($scope, $state) { + $scope.$state = $state; + }], + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "stats") + }], + $title: ["$stateParams", function ($stateParams) { + return "Stats" + }] + } + + } + } + }) + .state("root.stats.main", { + url: "/stats", + views: { + 'stats@root.stats': { + templateUrl: "static/html/states/main-stats.html", + controller: "StatsController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "stats") + }], + $title: ["$stateParams", function ($stateParams) { + return "Stats" + }] + } + } + } + }) + .state("root.stats.indexers", { + url: "/indexers", + views: { + 'stats@root.stats': { + templateUrl: "static/html/states/indexer-statuses.html", + controller: IndexerStatusesController, + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "stats") + }], + statuses: ["$http", function ($http) { + return $http.get("internalapi/getindexerstatuses").success(function (response) { + return response.indexerStatuses; + }); + }], + $title: ["$stateParams", function ($stateParams) { + return "Stats (Indexers)" + }] + } + } + } + }) + .state("root.stats.searches", { + url: "/searches", + views: { + 'stats@root.stats': { + templateUrl: "static/html/states/search-history.html", + controller: SearchHistoryController, + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "stats") + }], + history: ['loginRequired', 'SearchHistoryService', function (loginRequired, SearchHistoryService) { + return SearchHistoryService.getSearchHistory(); + }], + $title: ["$stateParams", function ($stateParams) { + return "Stats (Searches)" + }] + } + } + } + }) + .state("root.stats.downloads", { + url: "/downloads", + views: { + 'stats@root.stats': { + templateUrl: 'static/html/states/download-history.html', + controller: DownloadHistoryController, + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "stats") + }], + downloads: ["StatsService", function (StatsService) { + return StatsService.getDownloadHistory(); + }], + $title: ["$stateParams", function ($stateParams) { + return "Stats (Downloads)" + }] + } + } + } + }) + .state("root.system", { + url: "/system", + views: {}, + abstract: true + }) + .state("root.system.control", { + url: "/control", + views: { + 'container@': { + templateUrl: "static/html/states/system.html", + controller: "SystemController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + askAdmin: ['loginRequired', '$http', function (loginRequired, $http) { + return $http.get("internalapi/askadmin"); + }], + activeTab: [function () { + return 0; + }], + $title: ["$stateParams", function ($stateParams) { + return "System" + }] + } + } + } + }) + .state("root.system.updates", { + url: "/updates", + views: { + 'container@': { + templateUrl: "static/html/states/system.html", + controller: "SystemController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 1; + }], + $title: ["$stateParams", function ($stateParams) { + return "System (Updates)" + }] + } + } + } + }) + .state("root.system.log", { + url: "/log", + views: { + 'container@': { + templateUrl: "static/html/states/system.html", + controller: "SystemController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 2; + }], + $title: ["$stateParams", function ($stateParams) { + return "System (Log)" + }] + } + } + } + }) + .state("root.system.backup", { + url: "/backup", + views: { + 'container@': { + templateUrl: "static/html/states/system.html", + controller: "SystemController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 3; + }], + $title: ["$stateParams", function ($stateParams) { + return "System (Backup)" + }] + } + } + } + }) + .state("root.system.bugreport", { + url: "/bugreport", + views: { + 'container@': { + templateUrl: "static/html/states/system.html", + controller: "SystemController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 4; + }], + $title: ["$stateParams", function ($stateParams) { + return "System (Bug report)" + }] + } + } + } + }) + .state("root.system.about", { + url: "/about", + views: { + 'container@': { + templateUrl: "static/html/states/system.html", + controller: "SystemController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "admin") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + activeTab: [function () { + return 5; + }], + $title: ["$stateParams", function ($stateParams) { + return "System (About)" + }] + } + } + } + }) + + .state("root.search", { + url: "/?category&query&imdbid&tvdbid&title&season&episode&minsize&maxsize&minage&maxage&offsets&rid&mode&tmdbid&indexers", + views: { + 'container@': { + templateUrl: "static/html/states/search.html", + controller: "SearchController", + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "search") + }], + safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) { + return ConfigService.getSafe(); + }], + $title: ["$stateParams", function ($stateParams) { + return "Search"; + }] + } + } + } + }) + .state("root.search.results", { + views: { + 'results@root.search': { + templateUrl: "static/html/states/search-results.html", + controller: "SearchResultsController", + controllerAs: "srController", + options: { + inherit: true + }, + resolve: { + loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) { + return loginRequired($q, $timeout, $state, HydraAuthService, "search") + }], + $title: ["$stateParams", function ($stateParams) { + var title = "Search results"; + var details; + if ($stateParams.title) { + details = $stateParams.title; + } else if ($stateParams.query) { + details = $stateParams.query; + } + if (details) { + title += " (" + details + ")"; + } + return title; + }] + } + } + } + }) + // .state("root.login", { + // url: "/login", + // views: { + // 'container@': { + // templateUrl: "static/html/states/login.html", + // controller: "LoginController", + // resolve: { + // loginRequired: function () { + // return null; + // }, + // $title: function ($stateParams) { + // return "Login" + // } + // } + // } + // } + // }) + ; + + + $locationProvider.html5Mode(true); + + + function loginRequired($q, $timeout, $state, HydraAuthService, type) { + var deferred = $q.defer(); + var userInfos = HydraAuthService.getUserInfos(); + var allowed = false; + if (type == "search") { + allowed = !userInfos.searchRestricted || userInfos.maySeeSearch; + } else if (type == "stats") { + allowed = !userInfos.statsRestricted || userInfos.maySeeStats; + } else if (type == "admin") { + allowed = !userInfos.adminRestricted || userInfos.maySeeAdmin; + } else { + allowed = true; + } + if (allowed || userInfos.authType != "form") { + deferred.resolve(); + } else { + $timeout(function () { + // This code runs after the authentication promise has been rejected. + // Go to the log-in page + $state.go("root.login"); + }) + } + return deferred.promise; + } + + + //Because I don't know for what state the login is required / asked I have a function for each + + function loginRequiredSearch($q, $timeout, $state, HydraAuthService) { + var deferred = $q.defer(); + var userInfos = HydraAuthService.getUserInfos(); + if (!userInfos.searchRestricted || userInfos.maySeeSearch || userInfos.authType != "form") { + deferred.resolve(); + } else { + $timeout(function () { + // This code runs after the authentication promise has been rejected. + // Go to the log-in page + $state.go("root.login"); + }) + } + return deferred.promise; + } + + function loginRequiredStats($q, $timeout, $state, HydraAuthService) { + var deferred = $q.defer(); + + var userInfos = HydraAuthService.getUserInfos(); + if (!userInfos.statsRestricted || userInfos.maySeeStats || userInfos.authType != "form") { + deferred.resolve(); + } else { + $timeout(function () { + // This code runs after the authentication promise has been rejected. + // Go to the log-in page + $state.go("root.login"); + }) + } + return deferred.promise; + } + + function loginRequiredAdmin($q, $timeout, $state, HydraAuthService) { + var deferred = $q.defer(); + + var userInfos = HydraAuthService.getUserInfos(); + if (!userInfos.statsRestricted || userInfos.maySeeAdmin || userInfos.authType != "form") { + deferred.resolve(); + } else { + $timeout(function () { + // This code runs after the authentication promise has been rejected. + // Go to the log-in page + $state.go("root.login"); + }) + } + return deferred.promise; + } + + localStorageServiceProvider + .setPrefix('nzbhydra'); + localStorageServiceProvider + .setNotify(true, false); +}]); + + +nzbhydraapp.config(["paginationTemplateProvider", function (paginationTemplateProvider) { + paginationTemplateProvider.setPath('static/html/dirPagination.tpl.html'); +}]); + +nzbhydraapp.config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) { + cfpLoadingBarProvider.latencyThreshold = 100; +}]); + +nzbhydraapp.config(['growlProvider', function (growlProvider) { + growlProvider.globalTimeToLive(5000); + growlProvider.globalPosition('bottom-right'); +}]); + +nzbhydraapp.directive('ngEnter', function () { + return function (scope, element, attr) { + element.bind("keydown keypress", function (event) { + if (event.which === 13) { + scope.$apply(function () { + scope.$evalAsync(attr.ngEnter); + }); + + event.preventDefault(); + } + }); + }; +}); + +nzbhydraapp.filter('nzblink', function () { + return function (resultItem) { + var uri = new URI("internalapi/getnzb"); + uri.addQuery("searchResultId", resultItem.searchResultId); + return uri.toString(); + } +}); + +nzbhydraapp.factory('focus', ["$rootScope", "$timeout", function ($rootScope, $timeout) { + return function (name) { + $timeout(function () { + $rootScope.$broadcast('focusOn', name); + }); + } +}]); + +nzbhydraapp.run(["$rootScope", function ($rootScope) { + $rootScope.$on('$stateChangeSuccess', + function (event, toState, toParams, fromState, fromParams) { + try { + $rootScope.title = toState.views[Object.keys(toState.views)[0]].resolve.$title[1](toParams); + } catch (e) { + + } + + }); +}]); + + +nzbhydraapp.filter('unsafe', ["$sce", function ($sce) { + return $sce.trustAsHtml; +}]); + +nzbhydraapp.filter('dereferer', ["ConfigService", function (ConfigService) { + return function (url) { + if (ConfigService.getSafe().dereferer) { + return ConfigService.getSafe().dereferer.replace("$s", escape(url)); + } + return url; + } +}]); + +nzbhydraapp.config(["$provide", function ($provide) { + $provide.decorator("$exceptionHandler", ['$delegate', '$injector', function ($delegate, $injector) { + return function (exception, cause) { + $delegate(exception, cause); + try { + console.log(exception); + var stack = exception.stack.split('\n').map(function (line) { + return line.trim(); + }); + stack = stack.join("\n"); + //$injector.get("$http").put("internalapi/logerror", {error: stack, cause: angular.isDefined(cause) ? cause.toString() : "No known cause"}); + + + } catch (e) { + console.error("Unable to log JS exception to server", e); + } + }; + }]); +}]); + +_.mixin({ + isNullOrEmpty: function (string) { + return (_.isUndefined(string) || _.isNull(string) || (_.isString(string) && string.length === 0)) + } +}); + +nzbhydraapp.factory('sessionInjector', ["$injector", function ($injector) { + var sessionInjector = { + response: function (response) { + if (response.headers("Hydra-MaySeeAdmin") != null) { + $injector.get("HydraAuthService").setLoggedInByBasic(response.headers("Hydra-MaySeeStats") == "True", response.headers("Hydra-MaySeeAdmin") == "True", response.headers("Hydra-Username")) + } + + return response; + } + }; + return sessionInjector; +}]); + +nzbhydraapp.config(['$httpProvider', function ($httpProvider) { + $httpProvider.interceptors.push('sessionInjector'); +}]); + +nzbhydraapp.directive('autoFocus', ["$timeout", function ($timeout) { + return { + restrict: 'AC', + link: function (_scope, _element) { + $timeout(function () { + _element[0].focus(); + }, 0); + } + }; +}]); + + +nzbhydraapp.factory('focus', ["$timeout", "$window", function ($timeout, $window) { + return function (id) { + // timeout makes sure that it is invoked after any other event has been triggered. + // e.g. click events that need to run before the focus or + // inputs elements that are in a disabled state but are enabled when those events + // are triggered. + $timeout(function () { + var element = $window.document.getElementById(id); + if (element) + element.focus(); + }); + }; +}]); + +nzbhydraapp.directive('eventFocus', ["focus", function (focus) { + return function (scope, elem, attr) { + elem.on(attr.eventFocus, function () { + focus(attr.eventFocusId); + }); + + // Removes bound events in the element itself + // when the scope is destroyed + scope.$on('$destroy', function () { + elem.off(attr.eventFocus); + }); + }; +}]); +angular + .module('nzbhydraApp') + .directive('hydraupdates', hydraupdates); + +function hydraupdates() { + controller.$inject = ["$scope", "UpdateService", "$sce"]; + return { + templateUrl: 'static/html/directives/updates.html', + controller: controller + }; + + function controller($scope, UpdateService, $sce) { + + $scope.loadingPromise = UpdateService.getVersions().then(function (data) { + $scope.currentVersion = data.data.currentVersion; + $scope.repVersion = data.data.repVersion; + $scope.updateAvailable = data.data.updateAvailable; + $scope.changelog = data.data.changelog; + }); + + UpdateService.getVersionHistory().then(function(data) { + $scope.versionHistory = $sce.trustAsHtml(data.data.versionHistory); + }); + + $scope.update = function () { + UpdateService.update(); + }; + + $scope.showChangelog = function () { + UpdateService.showChanges($scope.changelog); + }; + + + + } +} + + +angular + .module('nzbhydraApp') + .directive('titleRow', titleRow); + +function titleRow() { + return { + templateUrl: 'static/html/directives/title-row.html', + scope: { + duplicates: "<", + selected: "<", + rowIndex: "@" + }, + controller: ['$scope', '$element', '$attrs', titleRowController] + }; + + function titleRowController($scope) { + $scope.expanded = false; + console.log("Building title row"); + $scope.duplicatesToShow = duplicatesToShow; + function duplicatesToShow() { + if ($scope.expanded && $scope.duplicates.length > 1) { + console.log("Showing all duplicates in group"); + return $scope.duplicates; + } else { + console.log("Showing first duplicate in group"); + return [$scope.duplicates[0]]; + } + } + + } +} +angular + .module('nzbhydraApp') + .directive('titleGroup', titleGroup); + +function titleGroup() { + return { + templateUrl: 'static/html/directives/title-group.html', + scope: { + titles: "<", + selected: "=", + rowIndex: "<", + doShowDuplicates: "<", + internalRowIndex: "@" + }, + controller: ['$scope', '$element', '$attrs', controller], + multiElement: true + }; + + function controller($scope, $element, $attrs) { + $scope.expanded = false; + $scope.titleGroupExpanded = false; + + $scope.$on("toggleTitleExpansion", function (event, args) { + $scope.titleGroupExpanded = args; + event.stopPropagation(); + }); + + + $scope.titlesToShow = titlesToShow; + function titlesToShow() { + return $scope.titles.slice(1); + } + + } +} +angular + .module('nzbhydraApp') + .directive('tabOrChart', tabOrChart); + +function tabOrChart() { + return { + templateUrl: 'static/html/directives/tab-or-chart.html', + transclude: { + "chartSlot": "chart", + "tableSlot": "table" + }, + restrict: 'E', + replace: true, + scope: { + display: "@" + } + + }; + +} + +angular + .module('nzbhydraApp') + .directive('searchResult', searchResult); + +function searchResult() { + return { + templateUrl: 'static/html/directives/search-result.html', + require: '^titleGroup', + scope: { + titleGroup: "<", + showDuplicates: "<", + selected: "<", + rowIndex: "<" + }, + controller: ['$scope', '$element', '$attrs', controller], + multiElement: true + }; + + function controller($scope, $element, $attrs) { + $scope.titleGroupExpanded = false; + $scope.hashGroupExpanded = {}; + + $scope.toggleTitleGroup = function () { + $scope.titleGroupExpanded = !$scope.titleGroupExpanded; + if (!$scope.titleGroupExpanded) { + $scope.hashGroupExpanded[$scope.titleGroup[0][0].hash] = false; //Also collapse the first title's duplicates + } + }; + + $scope.groupingRowDuplicatesToShow = groupingRowDuplicatesToShow; + function groupingRowDuplicatesToShow() { + if ($scope.showDuplicates && $scope.titleGroup[0].length > 1 && $scope.hashGroupExpanded[$scope.titleGroup[0][0].hash]) { + return $scope.titleGroup[0].slice(1); + } else { + return []; + } + } + + //
+ $scope.otherTitleRowsToShow = otherTitleRowsToShow; + function otherTitleRowsToShow() { + if ($scope.titleGroup.length > 1 && $scope.titleGroupExpanded) { + return $scope.titleGroup.slice(1); + } else { + return []; + } + } + + $scope.hashGroupDuplicatesToShow = hashGroupDuplicatesToShow; + function hashGroupDuplicatesToShow(hashGroup) { + if ($scope.showDuplicates && $scope.hashGroupExpanded[hashGroup[0].hash]) { + return hashGroup.slice(1); + } else { + return []; + } + } + } +} +angular + .module('nzbhydraApp') + .directive('otherColumns', otherColumns); + +function otherColumns($http, $templateCache, $compile, $window) { + controller.$inject = ["$scope", "$http", "$uibModal", "growl", "HydraAuthService"]; + return { + scope: { + result: "<" + }, + multiElement: true, + + link: function (scope, element, attrs) { + $http.get('static/html/directives/search-result-non-title-columns.html', {cache: $templateCache}).success(function (templateContent) { + element.replaceWith($compile(templateContent)(scope)); + }); + + }, + controller: controller + }; + + function controller($scope, $http, $uibModal, growl, HydraAuthService) { + + $scope.showDetailsDl = HydraAuthService.getUserInfos().maySeeDetailsDl; + + $scope.showNfo = showNfo; + function showNfo(resultItem) { + if (resultItem.has_nfo == 0) { + return; + } + var uri = new URI("internalapi/getnfo"); + uri.addQuery("searchresultid", resultItem.searchResultId); + return $http.get(uri.toString()).then(function (response) { + if (response.data.has_nfo) { + $scope.openModal("lg", response.data.nfo) + } else { + if (!angular.isUndefined(resultItem.message)) { + growl.error(resultItem.message); + } else { + growl.info("No NFO available"); + } + } + }); + } + + $scope.openModal = openModal; + + function openModal(size, nfo) { + var modalInstance = $uibModal.open({ + template: '
', + controller: NfoModalInstanceCtrl, + size: size, + resolve: { + nfo: function () { + return nfo; + } + } + }); + + modalInstance.result.then(); + } + + $scope.downloadNzb = downloadNzb; + + function downloadNzb(resultItem) { + //href = "{{ result.link }}" + $window.location.href = resultItem.link; + } + + $scope.getNfoTooltip = function() { + if ($scope.result.has_nfo == 1) { + return "Show NFO" + } else if ($scope.result.has_nfo == 2) { + return "Try to load NFO (may not be available)"; + } else { + return "No NFO available"; + } + } + } +} +otherColumns.$inject = ["$http", "$templateCache", "$compile", "$window"]; + +angular + .module('nzbhydraApp') + .controller('NfoModalInstanceCtrl', NfoModalInstanceCtrl); + +function NfoModalInstanceCtrl($scope, $uibModalInstance, nfo) { + + $scope.nfo = nfo; + + $scope.ok = function () { + $uibModalInstance.close($scope.selected.item); + }; + + $scope.cancel = function () { + $uibModalInstance.dismiss(); + }; +} +NfoModalInstanceCtrl.$inject = ["$scope", "$uibModalInstance", "nfo"]; +//Can be used in an ng-repeat directive to call a function when the last element was rendered +//We use it to mark the end of sorting / filtering so we can stop blocking the UI + +angular + .module('nzbhydraApp') + .directive('onFinishRender', onFinishRender); + +function onFinishRender($timeout) { + function linkFunction(scope, element, attr) { + + if (scope.$last === true) { + $timeout(function () { + scope.$evalAsync(attr.onFinishRender); + }); + } + } + + return { + link: linkFunction + } +} +onFinishRender.$inject = ["$timeout"]; +angular + .module('nzbhydraApp') + .directive('hydralog', hydralog); + +function hydralog() { + controller.$inject = ["$scope", "$http", "$sce", "$interval", "localStorageService"]; + return { + templateUrl: "static/html/directives/log.html", + controller: controller + }; + + function controller($scope, $http, $sce, $interval, localStorageService) { + $scope.tailInterval = null; + $scope.doUpdateLog = localStorageService.get("doUpdateLog") != null ? localStorageService.get("doUpdateLog") : false; + $scope.doTailLog = localStorageService.get("doTailLog") != null ? localStorageService.get("doTailLog") : false; + + + function getAndShowLog() { + return $http.get("internalapi/getlogs").success(function (data) { + $scope.log = $sce.trustAsHtml(data.log); + }); + } + + $scope.logPromise = getAndShowLog(); + + $scope.scrollToBottom = function () { + document.getElementById("logfile").scrollTop = 10000000; + document.getElementById("logfile").scrollTop = 100001000; + }; + + $scope.update = function () { + getAndShowLog(); + $scope.scrollToBottom(); + }; + + function startUpdateLogInterval() { + $scope.tailInterval = $interval(function () { + getAndShowLog(); + if ($scope.doTailLog) { + $scope.scrollToBottom(); + } + }, 5000); + } + + $scope.toggleUpdate = function() { + if ($scope.doUpdateLog) { + startUpdateLogInterval(); + } else if ($scope.tailInterval != null) { + console.log("Cancelling"); + $interval.cancel($scope.tailInterval); + localStorageService.set("doTailLog", false); + $scope.doTailLog = false; + } + localStorageService.set("doUpdateLog", $scope.doUpdateLog); + }; + + $scope.toggleTailLog = function () { + localStorageService.set("doTailLog", $scope.doTailLog); + }; + + if ($scope.doUpdateLog) { + startUpdateLogInterval(); + } + + $scope.$on( + "$destroy", + function () { + if ($scope.tailInterval !== null) { + $interval.cancel($scope.tailInterval); + } + } + ); + + } +} + + +angular + .module('nzbhydraApp').directive("keepFocus", ['$timeout', function ($timeout) { + /* + Intended use: + + */ + return { + restrict: 'A', + require: 'ngModel', + link: function ($scope, $element, attrs, ngModel) { + + ngModel.$parsers.unshift(function (value) { + $timeout(function () { + $element[0].focus(); + }); + return value; + }); + + } + }; +}]) +angular + .module('nzbhydraApp') + .directive('indexerInput', indexerInput); + +function indexerInput() { + controller.$inject = ["$scope"]; + return { + templateUrl: 'static/html/directives/indexer-input.html', + scope: { + indexer: "=", + model: "=", + onClick: "=" + }, + replace: true, + controller: controller + }; + + function controller($scope) { + $scope.isFocused = false; + + $scope.onFocus = function() { + $scope.isFocused = true; + }; + + $scope.onBlur = function () { + $scope.isFocused = false; + }; + + } +} + + +angular + .module('nzbhydraApp').directive('focusOn', focusOn); + +function focusOn() { + return directive; + function directive(scope, elem, attr) { + scope.$on('focusOn', function (e, name) { + if (name === attr.focusOn) { + elem[0].focus(); + } + }); + } +} + +angular + .module('nzbhydraApp') + .directive('duplicateGroup', duplicateGroup); + +function duplicateGroup() { + titleRowController.$inject = ["$scope", "localStorageService"]; + return { + templateUrl: 'static/html/directives/duplicate-group.html', + scope: { + duplicates: "<", + selected: "=", + isFirstRow: "<", + rowIndex: "<", + displayTitleToggle: "<", + internalRowIndex: "@" + }, + controller: titleRowController + }; + + function titleRowController($scope, localStorageService) { + $scope.internalRowIndex = Number($scope.internalRowIndex); + $scope.rowIndex = Number($scope.rowIndex); + $scope.titlesExpanded = false; + $scope.duplicatesExpanded = false; + $scope.foo = { + duplicatesDisplayed: localStorageService.get("duplicatesDisplayed") != null ? localStorageService.get("duplicatesDisplayed") : false + }; + $scope.duplicatesToShow = duplicatesToShow; + function duplicatesToShow() { + return $scope.duplicates.slice(1); + } + + $scope.toggleTitleExpansion = function () { + $scope.titlesExpanded = !$scope.titlesExpanded; + $scope.$emit("toggleTitleExpansion", $scope.titlesExpanded); + }; + + $scope.toggleDuplicateExpansion = function () { + $scope.duplicatesExpanded = !$scope.duplicatesExpanded; + }; + + $scope.$on("invertSelection", function () { + for (var i = 0; i < $scope.duplicates.length; i++) { + if ($scope.duplicatesExpanded) { + invertSelection($scope.selected, $scope.duplicates[i]); + } else { + if (i > 0) { + //Always remove duplicates that aren't displayed + invertSelection($scope.selected, $scope.duplicates[i], true); + } else { + invertSelection($scope.selected, $scope.duplicates[i]); + } + } + } + }); + + $scope.$on("duplicatesDisplayed", function (event, args) { + $scope.foo.duplicatesDisplayed = args; + }); + + $scope.clickCheckbox = function (event) { + var globalCheckboxIndex = $scope.rowIndex * 1000 + $scope.internalRowIndex * 100 + Number(event.currentTarget.dataset.checkboxIndex); + console.log(globalCheckboxIndex); + $scope.$emit("checkboxClicked", event, globalCheckboxIndex, event.currentTarget.checked); + }; + + function isBetween(num, betweena, betweenb) { + return (betweena <= num && num <= betweenb) || (betweena >= num && num >= betweenb); + } + + $scope.$on("shiftClick", function (event, startIndex, endIndex, newValue) { + var globalDuplicateGroupIndex = $scope.rowIndex * 1000 + $scope.internalRowIndex * 100; + if (isBetween(globalDuplicateGroupIndex, startIndex, endIndex)) { + + for (var i = 0; i < $scope.duplicates.length; i++) { + if (isBetween(globalDuplicateGroupIndex + i, startIndex, endIndex)) { + if (i == 0 || $scope.duplicatesExpanded) { + console.log("Indirectly clicked row with global index " + (globalDuplicateGroupIndex + i) + " setting new checkbox value to " + newValue); + var index = _.indexOf($scope.selected, $scope.duplicates[i]); + if (index == -1 && newValue) { + console.log("Adding to selection"); + $scope.selected.push($scope.duplicates[i]); + } else if (index > -1 && !newValue) { + $scope.selected.splice(index, 1); + console.log("Removing from selection"); + } + } + } + } + } + }); + + function invertSelection(a, b, dontPush) { + var index = _.indexOf(a, b); + if (index > -1) { + a.splice(index, 1); + } else { + if (!dontPush) + a.push(b); + } + } + } + + +} +angular + .module('nzbhydraApp') + .directive('downloadNzbzipButton', downloadNzbzipButton); + +function downloadNzbzipButton() { + controller.$inject = ["$scope", "growl", "FileDownloadService"]; + return { + templateUrl: 'static/html/directives/download-nzbzip-button.html', + require: ['^searchResults'], + scope: { + searchResults: "<", + searchTitle: "<" + }, + controller: controller + }; + + function controller($scope, growl, FileDownloadService) { + + $scope.download = function () { + if (angular.isUndefined($scope.searchResults) || $scope.searchResults.length == 0) { + growl.info("You should select at least one result..."); + } else { + + var values = _.map($scope.searchResults, function (value) { + return value.searchResultId; + }); + var link = "getnzbzip?searchresultids=" + values.join("|"); + var searchTitle; + if (angular.isDefined($scope.searchTitle)) { + searchTitle = " for " + $scope.searchTitle; + } else { + searchTitle = ""; + } + var filename = "NZBHydra NZBs" + searchTitle + ".zip"; + FileDownloadService.downloadFile(link, filename); + } + } + } +} + + +angular + .module('nzbhydraApp') + .directive('downloadNzbsButton', downloadNzbsButton); + +function downloadNzbsButton() { + controller.$inject = ["$scope", "NzbDownloadService", "growl"]; + return { + templateUrl: 'static/html/directives/download-nzbs-button.html', + require: ['^searchResults'], + scope: { + searchResults: "<" + }, + controller: controller + }; + + function controller($scope, NzbDownloadService, growl) { + + $scope.downloaders = NzbDownloadService.getEnabledDownloaders(); + + $scope.download = function (downloader) { + if (angular.isUndefined($scope.searchResults) || $scope.searchResults.length == 0) { + growl.info("You should select at least one result..."); + } else { + + var values = _.map($scope.searchResults, function (value) { + return value.searchResultId; + }); + + NzbDownloadService.download(downloader, values).then(function (response) { + if (response.data.success) { + growl.info("Successfully added " + response.data.added + " of " + response.data.of + " NZBs"); + } else { + growl.error("Error while adding NZBs"); + } + }, function () { + growl.error("Error while adding NZBs"); + }); + } + } + + + } +} + + +angular + .module('nzbhydraApp').directive("columnFilterWrapper", columnFilterWrapper); + +function columnFilterWrapper() { + controller.$inject = ["$scope"]; + return { + restrict: "E", + templateUrl: 'static/html/dataTable/columnFilterOuter.html', + transclude: true, + controllerAs: 'columnFilterWrapperCtrl', + scope: true, + bindToController: true, + controller: controller + }; + + function controller($scope) { + var vm = this; + + vm.open = false; + vm.isActive = false; + + vm.toggle = function () { + vm.open = !vm.open; + if (vm.open) { + $scope.$broadcast("opened"); + } + }; + + $scope.$on("filter", function (event, column, filterModel, isActive) { + vm.open = false; + vm.isActive = isActive; + }) + } +} + + +angular + .module('nzbhydraApp').directive("freetextFilter", freetextFilter); + +function freetextFilter() { + controller.$inject = ["$scope", "focus"]; + return { + template: '', + require: "^columnFilterWrapper", + controllerAs: 'innerController', + scope: { + column: "@" + }, + controller: controller + }; + + function controller($scope, focus) { + $scope.data = {}; + + $scope.$on("opened", function () { + focus("freetext-filter-input"); + }); + + $scope.onKeypress = function (keyEvent) { + if (keyEvent.which === 13) { + $scope.$emit("filter", $scope.column, {filter: $scope.data.filter, filtertype: "freetext"}, angular.isDefined($scope.data.filter) && $scope.data.filter.length > 0); + } + } + } +} + +angular + .module('nzbhydraApp').directive("checkboxesFilter", checkboxesFilter); + +function checkboxesFilter() { + controller.$inject = ["$scope"]; + return { + template: '', + controllerAs: 'checkboxesFilterController', + scope: { + column: "@", + entries: "<", + preselect: "<", + showInvert: "<", + isBoolean: "<" + }, + controller: controller + }; + + function controller($scope) { + $scope.selected = { + entries: [] + }; + + if ($scope.preselect) { + $scope.selected.entries = $scope.entries.slice(); + } + + $scope.invert = function () { + $scope.selected.entries = _.difference($scope.entries, $scope.selected.entries); + }; + + $scope.apply = function () { + console.log($scope.selected); + var isActive = $scope.selected.entries.length < $scope.entries.length; + $scope.$emit("filter", $scope.column, {filter: _.pluck($scope.selected.entries, "id"), filtertype: "checkboxes", isBoolean: $scope.isBoolean}, isActive) + } + } +} + +angular + .module('nzbhydraApp').directive("booleanFilter", booleanFilter); + +function booleanFilter() { + controller.$inject = ["$scope"]; + return { + template: '', + controllerAs: 'booleanFilterController', + scope: { + column: "@", + options: "<", + preselect: "@" + }, + controller: controller + }; + + + function controller($scope) { + $scope.selected = {value: $scope.options[$scope.preselect].value}; + + $scope.apply = function () { + console.log($scope.selected); + $scope.$emit("filter", $scope.column, {filter: $scope.selected.value, filtertype: "boolean"}, $scope.selected.value != $scope.options[0].value) + } + } +} + +angular + .module('nzbhydraApp').directive("timeFilter", timeFilter); + +function timeFilter() { + controller.$inject = ["$scope"]; + return { + template: '', + scope: { + column: "@", + selected: "<" + }, + controller: controller + }; + + function controller($scope) { + + $scope.dateOptions = { + dateDisabled: false, + formatYear: 'yy', + startingDay: 1 + }; + + + $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate']; + $scope.format = $scope.formats[0]; + $scope.altInputFormats = ['M!/d!/yyyy']; + + $scope.openAfter = function () { + $scope.after.opened = true; + }; + + $scope.openBefore = function () { + $scope.before.opened = true; + }; + + $scope.after = { + opened: false + }; + + $scope.before = { + opened: false + }; + + $scope.apply = function () { + var isActive = $scope.selected.beforeDate || $scope.selected.afterDate; + $scope.$emit("filter", $scope.column, {filter: {after: $scope.selected.afterDate, before: $scope.selected.beforeDate}, filtertype: "time"}, isActive) + } + } +} + + +angular + .module('nzbhydraApp').directive("columnSortable", columnSortable); + +function columnSortable() { + controller.$inject = ["$scope"]; + return { + restrict: "E", + templateUrl: "static/html/dataTable/columnSortable.html", + transclude: true, + scope: { + sortMode: "@", //0: no sorting, 1: asc, 2: desc + column: "@" + }, + controller: controller + }; + + function controller($scope) { + + if (angular.isUndefined($scope.sortMode)) { + $scope.sortMode = 0; + } + + $scope.$on("newSortColumn", function(event, column) { + if (column != $scope.column) { + $scope.sortMode = 0; + } + }); + + $scope.sort = function () { + $scope.sortMode = ($scope.sortMode + 1) % 3; + $scope.$emit("sort", $scope.column, $scope.sortMode) + }; + + } +} +angular + .module('nzbhydraApp') + .directive('connectionTest', connectionTest); + +function connectionTest() { + controller.$inject = ["$scope"]; + return { + templateUrl: 'static/html/directives/connection-test.html', + require: ['^type', '^data'], + scope: { + type: "=", + id: "=", + data: "=", + downloader: "=" + }, + controller: controller + }; + + function controller($scope) { + $scope.message = ""; + console.log($scope); + + var testButton = "#button-test-connection"; + var testMessage = "#message-test-connection"; + + function showSuccess() { + angular.element(testButton).removeClass("btn-default"); + angular.element(testButton).removeClass("btn-danger"); + angular.element(testButton).addClass("btn-success"); + } + + function showError() { + angular.element(testButton).removeClass("btn-default"); + angular.element(testButton).removeClass("btn-success"); + angular.element(testButton).addClass("btn-danger"); + } + + $scope.testConnection = function () { + angular.element(testButton).addClass("glyphicon-refresh-animate"); + var myInjector = angular.injector(["ng"]); + var $http = myInjector.get("$http"); + var url; + var params; + if ($scope.type == "downloader") { + url = "internalapi/test_downloader"; + params = {name: $scope.downloader, username: $scope.data.username, password: $scope.data.password}; + if ($scope.downloader == "sabnzbd") { + params.apikey = $scope.data.apikey; + params.url = $scope.data.url; + } else { + params.host = $scope.data.host; + params.port = $scope.data.port; + params.ssl = $scope.data.ssl; + } + } else if ($scope.data.type == "newznab") { + url = "internalapi/test_newznab"; + params = {host: $scope.data.host, apikey: $scope.data.apikey}; + if (angular.isDefined($scope.data.username)) { + params["username"] = $scope.data.username; + params["password"] = $scope.data.password; + } + } + $http.get(url, {params: params}).success(function (result) { + //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click + if (result.result) { + angular.element(testMessage).text(""); + showSuccess(); + } else { + angular.element(testMessage).text(result.message); + showError(); + } + + }).error(function () { + angular.element(testMessage).text(result.message); + showError(); + }).finally(function () { + angular.element(testButton).removeClass("glyphicon-refresh-animate"); + }) + } + + } +} + + +angular + .module('nzbhydraApp') + .directive('cfgFormEntry', cfgFormEntry); + +function cfgFormEntry() { + return { + templateUrl: 'static/html/directives/cfg-form-entry.html', + require: ["^title", "^cfg"], + scope: { + title: "@", + cfg: "=", + help: "@", + type: "@?", + options: "=?" + }, + controller: ["$scope", "$element", "$attrs", function ($scope, $element, $attrs) { + $scope.type = angular.isDefined($scope.type) ? $scope.type : 'text'; + $scope.options = angular.isDefined($scope.type) ? $scope.$eval($attrs.options) : []; + }] + }; +} +angular + .module('nzbhydraApp') + .directive('hydrabackup', hydrabackup); + +function hydrabackup() { + controller.$inject = ["$scope", "BackupService", "Upload", "FileDownloadService", "RequestsErrorHandler", "growl", "RestartService"]; + return { + templateUrl: 'static/html/directives/backup.html', + controller: controller + }; + + function controller($scope, BackupService, Upload, FileDownloadService, RequestsErrorHandler, growl, RestartService) { + $scope.refreshBackupList = function () { + BackupService.getBackupsList().then(function (backups) { + $scope.backups = backups; + }); + }; + + $scope.refreshBackupList(); + + $scope.uploadActive = false; + + + $scope.createAndDownloadBackupFile = function() { + FileDownloadService.downloadFile("internalapi/getbackup", "nzbhydra-backup-" + moment().format("YYYY-MM-DD-HH-mm") + ".zip"); + }; + + $scope.uploadBackupFile = function (file, errFiles) { + RequestsErrorHandler.specificallyHandled(function () { + console.log("Hallo"); + $scope.file = file; + $scope.errFile = errFiles && errFiles[0]; + if (file) { + $scope.uploadActive = true; + file.upload = Upload.upload({ + url: 'internalapi/restorebackup', + data: {content: file} + }); + + file.upload.then(function (response) { + $scope.uploadActive = false; + file.result = response.data; + RestartService.restart("Restore successful."); + + }, function (response) { + $scope.uploadActive = false; + growl.error(response.data) + }, function (evt) { + file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total)); + file.loaded = Math.floor(evt.loaded / 1024); + file.total = Math.floor(evt.total / 1024); + }); + } + }); + }; + + $scope.restoreFromFile = function(filename) { + BackupService.restoreFromFile(filename).then(function() { + RestartService.restart("Restore successful."); + }, + function(response) { + growl.error(response.data); + }) + } + + } +} + + +angular + .module('nzbhydraApp') + .directive('addableNzbs', addableNzbs); + +function addableNzbs() { + controller.$inject = ["$scope", "NzbDownloadService"]; + return { + templateUrl: 'static/html/directives/addable-nzbs.html', + require: ['^searchResultId'], + scope: { + searchResultId: "<", + downloadType: "<" + }, + controller: controller + }; + + function controller($scope, NzbDownloadService) { + $scope.downloaders = _.filter(NzbDownloadService.getEnabledDownloaders(), function(downloader) { + if ($scope.downloadType != "nzb") { + return downloader.downloadType == $scope.downloadType + } + return true; + }); + } +} + +angular + .module('nzbhydraApp') + .directive('addableNzb', addableNzb); + +function addableNzb() { + controller.$inject = ["$scope", "NzbDownloadService", "growl"]; + return { + templateUrl: 'static/html/directives/addable-nzb.html', + scope: { + searchResultId: "<", + downloader: "<" + }, + controller: controller + }; + + function controller($scope, NzbDownloadService, growl) { + if ($scope.downloader.iconCssClass) { + $scope.cssClass = "fa fa-" + $scope.downloader.iconCssClass.replace("fa-","").replace("fa ", ""); + } else { + $scope.cssClass = $scope.downloader.type == "sabnzbd" ? "sabnzbd" : "nzbget"; + } + + $scope.add = function () { + $scope.cssClass = "nzb-spinning"; + NzbDownloadService.download($scope.downloader, [$scope.searchResultId]).then(function (response) { + if (response.data.success) { + $scope.cssClass = $scope.downloader.type == "sabnzbd" ? "sabnzbd-success" : "nzbget-success"; + } else { + $scope.cssClass = $scope.downloader.type == "sabnzbd" ? "sabnzbd-error" : "nzbget-error"; + growl.error("Unable to add NZB. Make sure the downloader is running and properly configured."); + } + }, function () { + $scope.cssClass = $scope.downloader.type == "sabnzbd" ? "sabnzbd-error" : "nzbget-error"; + growl.error("An unexpected error occurred while trying to contact NZB Hydra or add the NZB."); + }) + }; + + + + } +} + +angular + .module('nzbhydraApp') + .factory('UpdateService', UpdateService); + +function UpdateService($http, growl, blockUI, RestartService) { + + var currentVersion; + var repVersion; + var updateAvailable; + var changelog; + var versionHistory; + + return { + update: update, + showChanges: showChanges, + getVersions: getVersions, + getChangelog: getChangelog, + getVersionHistory: getVersionHistory + }; + + + + function getVersions() { + return $http.get("internalapi/get_versions").then(function (data) { + currentVersion = data.data.currentVersion; + repVersion = data.data.repVersion; + updateAvailable = data.data.updateAvailable; + return data; + }); + } + + function getChangelog() { + return $http.get("internalapi/get_changelog", {currentVersion: currentVersion, repVersion: repVersion}).then(function (data) { + changelog = data.data.changelog; + return data; + }); + } + + function getVersionHistory() { + return $http.get("internalapi/get_version_history").then(function (data) { + versionHistory = data.data.versionHistory; + return data; + }); + } + + function showChanges(changelog) { + + var myInjector = angular.injector(["ng", "ui.bootstrap"]); + var $uibModal = myInjector.get("$uibModal"); + var params = { + size: "lg", + templateUrl: "static/html/changelog.html", + resolve: { + changelog: function () { + return changelog; + } + }, + controller: function ($scope, $sce, $uibModalInstance, changelog) { + //I fucking hate that untrusted HTML shit + changelog = $sce.trustAsHtml(changelog); + $scope.changelog = changelog; + console.log(changelog); + $scope.ok = function () { + $uibModalInstance.dismiss(); + }; + } + }; + + var modalInstance = $uibModal.open(params); + + modalInstance.result.then(); + } + + + function update() { + blockUI.start("Updating. Please stand by..."); + $http.get("internalapi/update").then(function (data) { + if (data.data.success) { + RestartService.restart("Update complete.", 15); + } else { + blockUI.reset(); + growl.info("An error occurred while updating. Please check the logs."); + } + }, + function () { + blockUI.reset(); + growl.info("An error occurred while updating. Please check the logs."); + }); + } +} +UpdateService.$inject = ["$http", "growl", "blockUI", "RestartService"]; + + +angular + .module('nzbhydraApp') + .controller('UpdateFooterController', UpdateFooterController); + +function UpdateFooterController($scope, UpdateService, HydraAuthService) { + + $scope.updateAvailable = false; + $scope.checked = false; + + $scope.mayUpdate = HydraAuthService.getUserInfos().maySeeAdmin; + + $scope.$on("user:loggedIn", function () { + if (HydraAuthService.getUserInfos().maySeeAdmin && !$scope.checked) { + retrieveUpdateInfos(); + } + }); + + + if ($scope.mayUpdate) { + retrieveUpdateInfos(); + } + + function retrieveUpdateInfos() { + $scope.checked = true; + UpdateService.getVersions().then(function (data) { + $scope.currentVersion = data.data.currentVersion; + $scope.repVersion = data.data.repVersion; + $scope.updateAvailable = data.data.updateAvailable; + $scope.changelog = data.data.changelog; + }); + } + + + $scope.update = function () { + UpdateService.update(); + }; + + $scope.showChangelog = function () { + UpdateService.showChanges($scope.changelog); + } + +} +UpdateFooterController.$inject = ["$scope", "UpdateService", "HydraAuthService"]; + +angular + .module('nzbhydraApp') + .controller('SystemController', SystemController); + +function SystemController($scope, $state, activeTab, $http, growl, RestartService, ModalService, UpdateService, NzbHydraControlService) { + + $scope.activeTab = activeTab; + + $scope.shutdown = function () { + NzbHydraControlService.shutdown().then(function () { + growl.info("Shutdown initiated. Cya!"); + }, + function () { + growl.info("Unable to send shutdown command."); + }) + }; + + $scope.restart = function () { + RestartService.restart(); + }; + + $scope.deleteLogAndDatabase = function () { + ModalService.open("Delete log and db", "Are you absolutely sure you want to delete your database and log files? Hydra will restart to do that.", { + yes: { + onYes: function () { + NzbHydraControlService.deleteLogAndDb(); + RestartService.countdown(); + }, + text: "Yes, delete log and database" + }, + no: { + onCancel: function () { + + }, + text: "Nah" + } + }); + }; + + $scope.forceUpdate = function() { + UpdateService.update() + }; + + + $scope.allTabs = [ + { + active: false, + state: 'root.system.control', + name: "Control" + }, + { + active: false, + state: 'root.system.updates', + name: "Updates" + }, + { + active: false, + state: 'root.system.log', + name: "Log" + }, + { + active: false, + state: 'root.system.backup', + name: "Backup" + }, + { + active: false, + state: 'root.system.bugreport', + name: "Bugreport" + }, + { + active: false, + state: 'root.system.about', + name: "About" + } + ]; + + + $scope.goToSystemState = function (index) { + $state.go($scope.allTabs[index].state, {activeTab: index}, {inherit: false, notify: true, reload: true}); + }; + + $scope.downloadDebuggingInfos = function() { + $http({method: 'GET', url: 'internalapi/getdebugginginfos', responseType: 'arraybuffer'}).success(function (data, status, headers, config) { + var a = document.createElement('a'); + var blob = new Blob([data], {'type': "application/octet-stream"}); + a.href = URL.createObjectURL(blob); + var filename = "nzbhydra-debuginfo-" + moment().format("YYYY-MM-DD-HH-mm") + ".zip"; + a.download = filename; + + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }).error(function (data, status, headers, config) { + console.log("Error:" + status); + }); + } + +} +SystemController.$inject = ["$scope", "$state", "activeTab", "$http", "growl", "RestartService", "ModalService", "UpdateService", "NzbHydraControlService"]; + +angular + .module('nzbhydraApp') + .factory('StatsService', StatsService); + +function StatsService($http) { + + return { + get: getStats, + getDownloadHistory: getDownloadHistory + }; + + function getStats(after, before) { + return $http.get("internalapi/getstats", {params: {after:after, before:before}}).success(function (response) { + return response.data; + }); + } + + function getDownloadHistory(pageNumber, limit, filterModel, sortModel) { + var params = {page: pageNumber, limit: limit, filterModel: filterModel}; + if (angular.isUndefined(pageNumber)) { + params.page = 1; + } + if (angular.isUndefined(limit)) { + params.limit = 100; + } + if (angular.isUndefined(filterModel)) { + params.filterModel = {} + } + if (!angular.isUndefined(sortModel)) { + params.sortModel = sortModel; + } + return $http.post("internalapi/getnzbdownloads", params).success(function (response) { + return { + nzbDownloads: response.nzbDownloads, + totalDownloads: response.totalDownloads + }; + + }); + } + +} +StatsService.$inject = ["$http"]; +angular + .module('nzbhydraApp') + .controller('StatsController', StatsController); + +function StatsController($scope, $filter, StatsService, blockUI) { + + $scope.dateOptions = { + dateDisabled: false, + formatYear: 'yy', + startingDay: 1 + }; + var initializingAfter = true; + var initializingBefore = true; + $scope.afterDate = moment().subtract(30, "days").toDate(); + $scope.beforeDate = moment().toDate(); + updateStats(); + + + $scope.openAfter = function () { + $scope.after.opened = true; + }; + + $scope.openBefore = function () { + $scope.before.opened = true; + }; + + $scope.after = { + opened: false + }; + + $scope.before = { + opened: false + }; + + function updateStats() { + blockUI.start("Updating stats..."); + var after = $scope.afterDate != null ? Math.floor($scope.afterDate.getTime() / 1000) : null; + var before = $scope.beforeDate != null ? Math.floor($scope.beforeDate.getTime() / 1000) : null; + StatsService.get(after, before).then(function(stats) { + $scope.setStats(stats); + }); + + blockUI.reset(); + } + + $scope.$watch('beforeDate', function () { + if (initializingBefore) { + initializingBefore = false; + } else { + updateStats(); + } + }); + + + $scope.$watch('afterDate', function () { + if (initializingAfter) { + initializingAfter = false; + } else { + updateStats(); + } + }); + + $scope.onKeypress = function (keyEvent) { + if (keyEvent.which === 13) { + updateStats(); + } + }; + + $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate']; + $scope.format = $scope.formats[0]; + $scope.altInputFormats = ['M!/d!/yyyy']; + + $scope.setStats = function (stats) { + stats = stats.data; + + $scope.nzbDownloads = null; + $scope.avgResponseTimes = stats.avgResponseTimes; + $scope.avgIndexerSearchResultsShares = stats.avgIndexerSearchResultsShares; + $scope.avgIndexerAccessSuccesses = stats.avgIndexerAccessSuccesses; + $scope.indexerDownloadShares = stats.indexerDownloadShares; + $scope.downloadsPerHourOfDay = stats.timeBasedDownloadStats.perHourOfDay; + $scope.downloadsPerDayOfWeek = stats.timeBasedDownloadStats.perDayOfWeek; + $scope.searchesPerHourOfDay = stats.timeBasedSearchStats.perHourOfDay; + $scope.searchesPerDayOfWeek = stats.timeBasedSearchStats.perDayOfWeek; + + + var numIndexers = $scope.avgResponseTimes.length; + + $scope.avgResponseTimesChart = getChart("multiBarHorizontalChart", $scope.avgResponseTimes, "name", "avgResponseTime", "", "Response time"); + $scope.avgResponseTimesChart.options.chart.margin.left = 100; + $scope.avgResponseTimesChart.options.chart.yAxis.rotateLabels = -30; + var avgResponseTimesChartHeight = Math.max(numIndexers * 30, 350); + $scope.avgResponseTimesChart.options.chart.height = avgResponseTimesChartHeight; + + $scope.resultsSharesChart = getResultsSharesChart(); + + var rotation = 30; + if (numIndexers > 30) { + rotation = 70; + } + $scope.resultsSharesChart.options.chart.xAxis.rotateLabels = rotation; + $scope.resultsSharesChart.options.chart.height = avgResponseTimesChartHeight; + + $scope.downloadsPerHourOfDayChart = getChart("discreteBarChart", $scope.downloadsPerHourOfDay, "hour", "count", "Hour of day", 'Downloads'); + $scope.downloadsPerHourOfDayChart.options.chart.xAxis.rotateLabels = 0; + + $scope.downloadsPerDayOfWeekChart = getChart("discreteBarChart", $scope.downloadsPerDayOfWeek, "day", "count", "Day of week", 'Downloads'); + $scope.downloadsPerDayOfWeekChart.options.chart.xAxis.rotateLabels = 0; + + $scope.searchesPerHourOfDayChart = getChart("discreteBarChart", $scope.searchesPerHourOfDay, "hour", "count", "Hour of day", 'Searches'); + $scope.searchesPerHourOfDayChart.options.chart.xAxis.rotateLabels = 0; + + $scope.searchesPerDayOfWeekChart = getChart("discreteBarChart", $scope.searchesPerDayOfWeek, "day", "count", "Day of week", 'Searches'); + $scope.searchesPerDayOfWeekChart.options.chart.xAxis.rotateLabels = 0; + + $scope.indexerDownloadSharesChart = { + options: { + chart: { + type: 'pieChart', + height: 500, + x: function (d) { + return d.name; + }, + y: function (d) { + return d.share; + }, + showLabels: true, + duration: 500, + labelThreshold: 0.01, + labelSunbeamLayout: true, + tooltip: { + valueFormatter: function (d, i) { + return $filter('number')(d, 2) + "%"; + } + }, + legend: { + margin: { + top: 5, + right: 35, + bottom: 5, + left: 0 + } + } + } + }, + data: $scope.indexerDownloadShares + }; + + $scope.indexerDownloadSharesChart.options.chart.height = Math.min(Math.max(numIndexers * 40, 350), 900); + }; + + + function getChart(chartType, values, xKey, yKey, xAxisLabel, yAxisLabel) { + return { + options: { + chart: { + type: chartType, + height: 350, + margin: { + top: 20, + right: 20, + bottom: 100, + left: 50 + }, + x: function (d) { + return d[xKey]; + }, + y: function (d) { + return d[yKey]; + }, + showValues: true, + valueFormat: function (d) { + return d; + }, + color: function () { + return "red" + }, + showControls: false, + showLegend: false, + duration: 100, + xAxis: { + axisLabel: xAxisLabel, + tickFormat: function (d) { + return d; + }, + rotateLabels: 30, + showMaxMin: false, + color: function () { + return "white" + } + }, + yAxis: { + axisLabel: yAxisLabel, + axisLabelDistance: -10, + tickFormat: function (d) { + return d; + } + }, + tooltip: { + enabled: false + }, + zoom: { + enabled: true, + scaleExtent: [1, 10], + useFixedDomain: false, + useNiceScale: false, + horizontalOff: false, + verticalOff: true, + unzoomEventType: 'dblclick.zoom' + } + } + }, data: [{ + "key": "doesntmatter", + "bar": true, + "values": values + }] + }; + } + + //Was unable to use the function above for this and gave up + function getResultsSharesChart() { + return { + options: { + chart: { + type: 'multiBarChart', + height: 350, + margin: { + top: 20, + right: 20, + bottom: 100, + left: 45 + }, + + clipEdge: true, + duration: 500, + stacked: false, + reduceXTicks: false, + showValues: true, + tooltip: { + enabled: true, + valueFormatter: function (d) { + return d + "%"; + } + }, + showControls: false, + xAxis: { + axisLabel: '', + showMaxMin: false, + rotateLabels: 30, + axisLabelDistance: 30, + tickFormat: function (d) { + return d; + } + }, + yAxis: { + axisLabel: 'Share (%)', + axisLabelDistance: -20, + tickFormat: function (d) { + return d; + } + } + } + }, + + data: [ + { + key: "Results", + values: _.map($scope.avgIndexerSearchResultsShares, function (stats) { + return {series: 0, y: stats.avgResultsShare, x: stats.name} + }) + }, + { + key: "Unique results", + values: _.map($scope.avgIndexerSearchResultsShares, function (stats) { + return {series: 1, y: stats.avgUniqueResults, x: stats.name} + }) + } + ] + }; + } + + +} +StatsController.$inject = ["$scope", "$filter", "StatsService", "blockUI"]; + +// +angular + .module('nzbhydraApp') + .factory('SearchService', SearchService); + +function SearchService($http) { + + + var lastExecutedQuery; + var lastResults; + + return { + search: search, + getLastResults: getLastResults, + loadMore: loadMore + }; + + + function search(category, query, tmdbid, imdbid, title, tvdbid, rid, season, episode, minsize, maxsize, minage, maxage, indexers, mode) { + var uri; + if (category.indexOf("Movies") > -1 || (category.indexOf("20") == 0) || mode == "movie") { + uri = new URI("internalapi/moviesearch"); + if (angular.isDefined(tmdbid)) { + uri.addQuery("tmdbid", tmdbid); + } else if (angular.isDefined(imdbid)) { + uri.addQuery("imdbid", imdbid); + } else { + uri.addQuery("query", query); + } + + } else if (category.indexOf("TV") > -1 || (category.indexOf("50") == 0) || mode == "tvsearch") { + uri = new URI("internalapi/tvsearch"); + if (angular.isDefined(tvdbid)) { + uri.addQuery("tvdbid", tvdbid); + } + if (angular.isDefined(rid)) { + uri.addQuery("rid", rid); + } else { + uri.addQuery("query", query); + } + + if (angular.isDefined(season)) { + uri.addQuery("season", season); + } + if (angular.isDefined(episode)) { + uri.addQuery("episode", episode); + } + } else { + uri = new URI("internalapi/search"); + uri.addQuery("query", query); + } + if (angular.isDefined(title)) { + uri.addQuery("title", title); + } + if (_.isNumber(minsize)) { + uri.addQuery("minsize", minsize); + } + if (_.isNumber(maxsize)) { + uri.addQuery("maxsize", maxsize); + } + if (_.isNumber(minage)) { + uri.addQuery("minage", minage); + } + if (_.isNumber(maxage)) { + uri.addQuery("maxage", maxage); + } + if (!angular.isUndefined(indexers)) { + uri.addQuery("indexers", decodeURIComponent(indexers)); + } + + + uri.addQuery("category", category); + lastExecutedQuery = uri; + return $http.get(uri.toString()).then(processData); + + } + + function loadMore(offset, loadAll) { + lastExecutedQuery.removeQuery("offset"); + lastExecutedQuery.addQuery("offset", offset); + lastExecutedQuery.addQuery("loadAll", loadAll ? true : false); + + return $http.get(lastExecutedQuery.toString()).then(processData); + } + + function processData(response) { + var results = response.data.results; + var indexersearches = response.data.indexersearches; + var total = response.data.total; + var rejected = response.data.rejected; + var resultsCount = results.length; + + + //Sum up response times of indexers from individual api accesses + //TODO: Move this to search result controller because we need to update it every time we loaded more results + _.each(indexersearches, function (ps) { + if (ps.did_search) { + ps.averageResponseTime = _.reduce(ps.apiAccesses, function (memo, rp) { + return memo + rp.response_time; + }, 0); + ps.averageResponseTime = ps.averageResponseTime / ps.apiAccesses.length; + } + }); + + lastResults = {"results": results, "indexersearches": indexersearches, "total": total, "resultsCount": resultsCount, "rejected": rejected}; + return lastResults; + } + + function getLastResults() { + return lastResults; + } +} +SearchService.$inject = ["$http"]; +angular + .module('nzbhydraApp') + .controller('SearchResultsController', SearchResultsController); + +function sumRejected(rejected) { + return _.reduce(rejected, function (memo, entry) { + return memo + entry[1]; + }, 0); +} + +//SearchResultsController.$inject = ['blockUi']; +function SearchResultsController($stateParams, $scope, $q, $timeout, blockUI, growl, localStorageService, SearchService, ConfigService) { + + if (localStorageService.get("sorting") != null) { + var sorting = localStorageService.get("sorting"); + $scope.sortPredicate = sorting.predicate; + $scope.sortReversed = sorting.reversed; + } else { + $scope.sortPredicate = "epoch"; + $scope.sortReversed = true; + } + $scope.limitTo = 100; + $scope.offset = 0; + //Handle incoming data + + $scope.indexersearches = _.sortBy(SearchService.getLastResults().indexersearches, function (i) { + return i.indexer.toLowerCase() + }); + $scope.indexerDisplayState = []; //Stores if a indexer's results should be displayed or not + $scope.indexerResultsInfo = {}; //Stores information about the indexer's results like how many we already retrieved + $scope.groupExpanded = {}; + $scope.selected = []; + if ($stateParams.title) { + $scope.searchTitle = $stateParams.title; + } else if ($stateParams.query) { + $scope.searchTitle = $stateParams.query; + } else { + $scope.searchTitle = undefined; + } + + $scope.selectedIds = _.map($scope.selected, function (value) { + return value.searchResultId; + }); + + $scope.lastClicked = null; + $scope.lastClickedValue = null; + + $scope.foo = { + indexerStatusesExpanded: localStorageService.get("indexerStatusesExpanded") != null ? localStorageService.get("indexerStatusesExpanded") : false, + duplicatesDisplayed: localStorageService.get("duplicatesDisplayed") != null ? localStorageService.get("duplicatesDisplayed") : false + }; + + $scope.countFilteredOut = 0; + + //Initially set visibility of all found indexers to true, they're needed for initial filtering / sorting + _.forEach($scope.indexersearches, function (ps) { + $scope.indexerDisplayState[ps.indexer.toLowerCase()] = true; + }); + + _.forEach($scope.indexersearches, function (ps) { + $scope.indexerResultsInfo[ps.indexer.toLowerCase()] = {loadedResults: ps.loaded_results}; + }); + + //Process results + $scope.results = SearchService.getLastResults().results; + $scope.total = SearchService.getLastResults().total; + $scope.resultsCount = SearchService.getLastResults().resultsCount; + $scope.rejected = SearchService.getLastResults().rejected; + $scope.countRejected = sumRejected($scope.rejected); + $scope.filteredResults = sortAndFilter($scope.results); + + $scope.$emit("searchResultsShown"); + stopBlocking(); + + //Returns the content of the property (defined by the current sortPredicate) of the first group element + $scope.firstResultPredicate = firstResultPredicate; + function firstResultPredicate(item) { + return item[0][$scope.sortPredicate]; + } + + //Returns the unique group identifier which allows angular to keep track of the grouped search results even after filtering, making filtering by indexers a lot faster (albeit still somewhat slow...) + $scope.groupId = groupId; + function groupId(item) { + return item[0][0].searchResultId; + } + + //Block the UI and return after timeout. This way we make sure that the blocking is done before angular starts updating the model/view. There's probably a better way to achieve that? + function startBlocking(message) { + var deferred = $q.defer(); + blockUI.start(message); + $timeout(function () { + deferred.resolve(); + }, 100); + return deferred.promise; + } + + //Set sorting according to the predicate. If it's the same as the old one, reverse, if not sort by the given default (so that age is descending, name ascending, etc.) + //Sorting (and filtering) are really slow (about 2 seconds for 1000 results from 5 indexers) but I haven't found any way of making it faster, apart from the tracking + $scope.setSorting = setSorting; + function setSorting(predicate, reversedDefault) { + if (predicate == $scope.sortPredicate) { + $scope.sortReversed = !$scope.sortReversed; + } else { + $scope.sortReversed = reversedDefault; + } + $scope.sortPredicate = predicate; + startBlocking("Sorting / filtering...").then(function () { + $scope.filteredResults = sortAndFilter($scope.results); + blockUI.reset(); + localStorageService.set("sorting", {predicate: predicate, reversed: $scope.sortReversed}); + }); + } + + $scope.inlineFilter = inlineFilter; + function inlineFilter(result) { + var ok = true; + ok = ok && $scope.titleFilter && result.title.toLowerCase().indexOf($scope.titleFilter) > -1; + ok = ok && $scope.minSizeFilter && $scope.minSizeFilter * 1024 * 1024 < result.size; + ok = ok && $scope.maxSizeFilter && $scope.maxSizeFilter * 1024 * 1024 > result.size; + return ok; + } + + + $scope.$on("searchInputChanged", function (event, query, minage, maxage, minsize, maxsize) { + $scope.filteredResults = sortAndFilter($scope.results, query, minage, maxage, minsize, maxsize); + }); + + $scope.resort = function () { + }; + + function sortAndFilter(results, query, minage, maxage, minsize, maxsize) { + $scope.countFilteredOut = 0; + + function filterByAgeAndSize(item) { + var ok = true; + ok = ok && (!_.isNumber(minsize) || item.size / 1024 / 1024 >= minsize) + && (!_.isNumber(maxsize) || item.size / 1024 / 1024 <= maxsize) + && (!_.isNumber(minage) || item.age_days >= Number(minage)) + && (!_.isNumber(maxage) || item.age_days <= Number(maxage)); + + if (ok && query) { + var words = query.toLowerCase().split(" "); + ok = _.every(words, function (word) { + return item.title.toLowerCase().indexOf(word) > -1; + }); + } + if (!ok) { + $scope.countFilteredOut++; + } + return ok; + } + + + function getItemIndexerDisplayState(item) { + return $scope.indexerDisplayState[item.indexer.toLowerCase()]; + } + + function getCleanedTitle(element) { + return element.title.toLowerCase().replace(/[\s\-\._]/ig, ""); + } + + function createSortedHashgroups(titleGroup) { + + function createHashGroup(hashGroup) { + //Sorting hash group's contents should not matter for size and age and title but might for category (we might remove this, it's probably mostly unnecessary) + var sortedHashGroup = _.sortBy(hashGroup, function (item) { + var sortPredicateValue; + if ($scope.sortPredicate == "grabs") { + sortPredicateValue = angular.isDefined(item.grabs) ? item.grabs : 0; + } else { + sortPredicateValue = item[$scope.sortPredicate]; + } + //var sortPredicateValue = item[$scope.sortPredicate]; + return $scope.sortReversed ? -sortPredicateValue : sortPredicateValue; + }); + //Now sort the hash group by indexer score (inverted) so that the result with the highest indexer score is shown on top (or as the only one of a hash group if it's collapsed) + sortedHashGroup = _.sortBy(sortedHashGroup, function (item) { + return item.indexerscore * -1; + }); + return sortedHashGroup; + } + + function getHashGroupFirstElementSortPredicate(hashGroup) { + if ($scope.sortPredicate == "grabs") { + sortPredicateValue = angular.isDefined(hashGroup[0].grabs) ? hashGroup[0].grabs : 0; + } else { + var sortPredicateValue = hashGroup[0][$scope.sortPredicate]; + } + return $scope.sortReversed ? -sortPredicateValue : sortPredicateValue; + } + + return _.chain(titleGroup).groupBy("hash").map(createHashGroup).sortBy(getHashGroupFirstElementSortPredicate).value(); + } + + function getTitleGroupFirstElementsSortPredicate(titleGroup) { + var sortPredicateValue; + if ($scope.sortPredicate == "title") { + sortPredicateValue = titleGroup[0][0].title.toLowerCase(); + } else if ($scope.sortPredicate == "grabs") { + sortPredicateValue = angular.isDefined(titleGroup[0][0].grabs) ? titleGroup[0][0].grabs : 0; + } else { + sortPredicateValue = titleGroup[0][0][$scope.sortPredicate]; + } + + return sortPredicateValue; + } + + var filtered = _.chain(results) + //Filter by age, size and title + .filter(filterByAgeAndSize) + //Remove elements of which the indexer is currently hidden + .filter(getItemIndexerDisplayState) + //Make groups of results with the same title + .groupBy(getCleanedTitle) + //For every title group make subgroups of duplicates and sort the group + .map(createSortedHashgroups) + //And then sort the title group using its first hashgroup's first item (the group itself is already sorted and so are the hash groups) + .sortBy(getTitleGroupFirstElementsSortPredicate) + .value(); + if ($scope.sortReversed) { + filtered = filtered.reverse(); + } + if ($scope.countFilteredOut > 0) { + growl.info("Filtered " + $scope.countFilteredOut + " of the retrieved results"); + } + + $scope.lastClicked = null; + return filtered; + } + + $scope.toggleTitlegroupExpand = function toggleTitlegroupExpand(titleGroup) { + $scope.groupExpanded[titleGroup[0][0].title] = !$scope.groupExpanded[titleGroup[0][0].title]; + $scope.groupExpanded[titleGroup[0][0].hash] = !$scope.groupExpanded[titleGroup[0][0].hash]; + }; + + + $scope.stopBlocking = stopBlocking; + function stopBlocking() { + blockUI.reset(); + } + + $scope.loadMore = loadMore; + function loadMore(loadAll) { + startBlocking(loadAll ? "Loading all results..." : "Loading more results...").then(function () { + SearchService.loadMore($scope.resultsCount, loadAll).then(function (data) { + $scope.results = $scope.results.concat(data.results); + $scope.filteredResults = sortAndFilter($scope.results); + $scope.total = data.total; + $scope.rejected = data.rejected; + $scope.countRejected = sumRejected($scope.rejected); + $scope.resultsCount += data.resultsCount; + stopBlocking(); + }); + }); + } + + +//Filters the results according to new visibility settings. + $scope.toggleIndexerDisplay = toggleIndexerDisplay; + function toggleIndexerDisplay(indexer) { + $scope.indexerDisplayState[indexer.toLowerCase()] = $scope.indexerDisplayState[indexer.toLowerCase()]; + startBlocking("Filtering. Sorry...").then(function () { + $scope.filteredResults = sortAndFilter($scope.results); + }).then(function () { + stopBlocking(); + }); + } + + $scope.countResults = countResults; + function countResults() { + return $scope.results.length; + } + + $scope.invertSelection = function invertSelection() { + $scope.$broadcast("invertSelection"); + }; + + $scope.toggleIndexerStatuses = function () { + $scope.foo.indexerStatusesExpanded = !$scope.foo.indexerStatusesExpanded; + localStorageService.set("indexerStatusesExpanded", $scope.foo.indexerStatusesExpanded); + }; + + $scope.toggleDuplicatesDisplayed = function () { + //$scope.foo.duplicatesDisplayed = !$scope.foo.duplicatesDisplayed; + localStorageService.set("duplicatesDisplayed", $scope.foo.duplicatesDisplayed); + $scope.$broadcast("duplicatesDisplayed", $scope.foo.duplicatesDisplayed); + }; + + $scope.$on("checkboxClicked", function (event, originalEvent, rowIndex, newCheckedValue) { + if (originalEvent.shiftKey && $scope.lastClicked != null) { + $scope.$broadcast("shiftClick", Number($scope.lastClicked), Number(rowIndex), Number($scope.lastClickedValue)); + } + $scope.lastClicked = rowIndex; + $scope.lastClickedValue = newCheckedValue; + }); + + $scope.filterRejectedZero = function() { + return function (entry) { + return entry[1] > 0; + } + } +} +SearchResultsController.$inject = ["$stateParams", "$scope", "$q", "$timeout", "blockUI", "growl", "localStorageService", "SearchService", "ConfigService"]; + + +angular + .module('nzbhydraApp') + .factory('SearchHistoryService', SearchHistoryService); + +function SearchHistoryService($filter, $http) { + + return { + getSearchHistory: getSearchHistory, + getSearchHistoryForSearching: getSearchHistoryForSearching, + formatRequest: formatRequest, + getStateParamsForRepeatedSearch: getStateParamsForRepeatedSearch + }; + + function getSearchHistoryForSearching() { + return $http.post("internalapi/getsearchrequestsforsearching").success(function (response) { + return { + searchRequests: response.searchRequests, + totalRequests: response.totalRequests + } + }); + } + + function getSearchHistory(pageNumber, limit, filterModel, sortModel, distinct, onlyCurrentUser) { + var params = { + page: pageNumber, + limit: limit, + filterModel: filterModel, + distinct: distinct, + onlyCurrentUser: onlyCurrentUser + }; + if (angular.isUndefined(pageNumber)) { + params.page = 1; + } + if (angular.isUndefined(limit)) { + params.limit = 100; + } + if (angular.isUndefined(filterModel)) { + params.filterModel = {} + } + if (!angular.isUndefined(sortModel)) { + params.sortModel = sortModel; + } + return $http.post("internalapi/getsearchrequests", params).success(function (response) { + return { + searchRequests: response.searchRequests, + totalRequests: response.totalRequests + } + }); + } + + function formatRequest(request, includeIdLink, includequery, describeEmptySearch, includeTitle) { + var result = []; + //ID key: ID value + //season + //episode + //author + //title + if (includequery && request.query) { + result.push("Query: " + request.query); + } + if (request.title && includeTitle) { + result.push('Title: ' + request.title); + } else if (request.movietitle && includeTitle) { + result.push('Title: ' + request.movietitle); + } else if (request.tvtitle && includeTitle) { + result.push('Title: ' + request.tvtitle); + } else if (request.identifier_key) { + var href; + var key; + if (request.identifier_key == "imdbid") { + key = "IMDB ID"; + href = "https://www.imdb.com/title/tt" + } else if (request.identifier_key == "tvdbid") { + key = "TVDB ID"; + href = "https://thetvdb.com/?tab=series&id=" + } else if (request.identifier_key == "rid") { + key = "TVRage ID"; + href = "internalapi/redirect_rid?rid=" + } else if (request.identifier_key == "tmdb") { + key = "TMDV ID"; + href = "https://www.themoviedb.org/movie/" + } + href = href + request.identifier_value; + href = $filter("dereferer")(href); + if (includeIdLink) { + result.push('' + key + ': ' + request.identifier_value + ""); + } else { + result.push('' + key + ": " + request.identifier_value); + } + } + if (request.season) { + result.push('Season: ' + request.season); + } + if (request.episode) { + result.push('Episode: ' + request.episode); + } + if (request.author) { + result.push('Author: ' + request.author); + } + if (result.length == 0 && describeEmptySearch) { + result = ['Empty search']; + } + + return result.join(", "); + + } + + function getStateParamsForRepeatedSearch(request) { + var stateParams = {}; + stateParams.mode = "search" + if (request.identifier_key == "imdbid") { + stateParams.mode = "movie" + stateParams.imdbid = request.identifier_value; + } else if (request.identifier_key == "tvdbid" || request.identifier_key == "rid") { + stateParams.mode = "tvsearch"; + if (request.identifier_key == "rid") { + stateParams.rid = request.identifier_value; + } else { + stateParams.tvdbid = request.identifier_value; + } + + if (request.season != "") { + stateParams.season = request.season; + } + if (request.episode != "") { + stateParams.episode = request.episode; + } + } + if (request.query != "") { + stateParams.query = request.query; + } + + + if (request.movietitle != null) { + stateParams.title = request.movietitle; + } + if (request.tvtitle != null) { + stateParams.title = request.tvtitle; + } + + if (request.category) { + stateParams.category = request.category; + } + + stateParams.category = request.category; + + return stateParams; + } + + +} +SearchHistoryService.$inject = ["$filter", "$http"]; +angular + .module('nzbhydraApp') + .controller('SearchHistoryController', SearchHistoryController); + + +function SearchHistoryController($scope, $state, SearchHistoryService, ConfigService, history, $sce, $filter) { + $scope.limit = 100; + $scope.pagination = { + current: 1 + }; + $scope.sortModel = { + column: "time", + sortMode: 2 + }; + $scope.filterModel = {}; + + //Filter options + $scope.categoriesForFiltering = []; + _.forEach(ConfigService.getSafe().categories, function (category) { + $scope.categoriesForFiltering.push({label: category.pretty, id: category.pretty}) + }); + $scope.preselectedTimeInterval = {beforeDate: null, afterDate: null}; + $scope.accessOptionsForFiltering = [{label: "All", value: "all"}, {label: "API", value: false}, {label: "Internal", value: true}]; + + //Preloaded data + $scope.searchRequests = history.data.searchRequests; + $scope.totalRequests = history.data.totalRequests; + + $scope.update = function () { + SearchHistoryService.getSearchHistory($scope.pagination.current, $scope.limit, $scope.filterModel, $scope.sortModel).then(function (history) { + $scope.searchRequests = history.data.searchRequests; + $scope.totalRequests = history.data.totalRequests; + }); + }; + + $scope.$on("sort", function (event, column, sortMode) { + if (sortMode == 0) { + column = "time"; + sortMode = 2; + } + $scope.sortModel = { + column: column, + sortMode: sortMode + }; + $scope.$broadcast("newSortColumn", column); + $scope.update(); + }); + + $scope.$on("filter", function (event, column, filterModel, isActive) { + if (filterModel.filter) { + $scope.filterModel[column] = filterModel; + } else { + delete $scope.filterModel[column]; + } + $scope.update(); + }); + + + $scope.openSearch = function (request) { + var stateParams = {}; + if (request.identifier_key == "imdbid") { + stateParams.imdbid = request.identifier_value; + } else if (request.identifier_key == "tvdbid" || request.identifier_key == "rid") { + if (request.identifier_key == "rid") { + stateParams.rid = request.identifier_value; + } else { + stateParams.tvdbid = request.identifier_value; + } + + if (request.season != "") { + stateParams.season = request.season; + } + if (request.episode != "") { + stateParams.episode = request.episode; + } + } + if (request.query != "") { + stateParams.query = request.query; + } + if (request.type == "tv") { + stateParams.mode = "tvsearch" + } else if (request.type == "movie") { + stateParams.mode = "movie" + } else { + stateParams.mode = "search" + } + + if (request.movietitle != null) { + stateParams.title = request.movietitle; + } + if (request.tvtitle != null) { + stateParams.title = request.tvtitle; + } + + if (request.category) { + stateParams.category = request.category; + } + + stateParams.category = request.category; + + $state.go("root.search", stateParams, {inherit: false}); + }; + + $scope.formatQuery = function (request) { + if (request.movietitle != null) { + return request.movietitle; + } + if (request.tvtitle != null) { + return request.tvtitle; + } + + if (!request.query && !request.identifier_key && !request.season && !request.episode) { + return "Update query"; + } + return request.query; + }; + + $scope.formatAdditional = function (request) { + var result = []; + //ID key: ID value + //season + //episode + //author + //title + if (request.identifier_key) { + var href; + var key; + if (request.identifier_key == "imdbid") { + key = "IMDB ID"; + href = "https://www.imdb.com/title/tt" + } else if (request.identifier_key == "tvdbid") { + key = "TVDB ID"; + href = "https://thetvdb.com/?tab=series&id=" + } else if (request.identifier_key == "rid") { + key = "TVRage ID"; + href = "internalapi/redirect_rid?rid=" + } else if (request.identifier_key == "tmdb") { + key = "TMDV ID"; + href = "https://www.themoviedb.org/movie/" + } + href = href + request.identifier_value; + href = $filter("dereferer")(href); + result.push(key + ": " + '' + request.identifier_value + ""); + } + if (request.season) { + result.push("Season: " + request.season); + } + if (request.episode) { + result.push("Episode: " + request.episode); + } + if (request.author) { + result.push("Author: " + request.author); + } + if (request.title) { + result.push("Title: " + request.title); + } + return $sce.trustAsHtml(result.join(", ")); + }; + + + + +} +SearchHistoryController.$inject = ["$scope", "$state", "SearchHistoryService", "ConfigService", "history", "$sce", "$filter"]; + +angular + .module('nzbhydraApp') + .controller('SearchController', SearchController); + +function SearchController($scope, $http, $stateParams, $state, $window, $filter, $sce, growl, SearchService, focus, ConfigService, HydraAuthService, CategoriesService, blockUI, $element, ModalService, SearchHistoryService) { + + function getNumberOrUndefined(number) { + if (_.isUndefined(number) || _.isNaN(number) || number == "") { + return undefined; + } + number = parseInt(number); + if (_.isNumber(number)) { + return number; + } else { + return undefined; + } + } + + //Fill the form with the search values we got from the state params (so that their values are the same as in the current url) + $scope.mode = $stateParams.mode; + $scope.categories = _.filter(CategoriesService.getAll(), function (c) { + return c.mayBeSelected && c.ignoreResults != "internal" && c.ignoreResults != "always"; + }); + if (angular.isDefined($stateParams.category) && $stateParams.category) { + $scope.category = CategoriesService.getByName($stateParams.category); + } else { + $scope.category = CategoriesService.getDefault(); + } + $scope.category = (_.isUndefined($stateParams.category) || $stateParams.category == "") ? CategoriesService.getDefault() : CategoriesService.getByName($stateParams.category); + $scope.tmdbid = $stateParams.tmdbid; + $scope.tvdbid = $stateParams.tvdbid; + $scope.imdbid = $stateParams.imdbid; + $scope.rid = $stateParams.rid; + $scope.title = $stateParams.title; + $scope.season = $stateParams.season; + $scope.episode = $stateParams.episode; + $scope.query = $stateParams.query; + $scope.minsize = getNumberOrUndefined($stateParams.minsize); + $scope.maxsize = getNumberOrUndefined($stateParams.maxsize); + $scope.minage = getNumberOrUndefined($stateParams.minage); + $scope.maxage = getNumberOrUndefined($stateParams.maxage); + if (!_.isUndefined($scope.title) && _.isUndefined($scope.query)) { + //$scope.query = $scope.title; + } + if (!angular.isUndefined($stateParams.indexers)) { + $scope.indexers = decodeURIComponent($stateParams.indexers).split("|"); + } + + $scope.showIndexers = {}; + + $scope.searchHistory = []; + + var safeConfig = ConfigService.getSafe(); + $scope.showIndexerSelection = HydraAuthService.getUserInfos().showIndexerSelection; + + //Doesn't belong here but whatever + var firstStartThreeDaysAgo = ConfigService.getSafe().firstStart < moment().subtract(3, "days").unix(); + var doShowSurvey = (ConfigService.getSafe().pollShown == 0 && firstStartThreeDaysAgo) || ConfigService.getSafe().pollShown == 1; + if (doShowSurvey) { + var message; + if (ConfigService.getSafe().pollShown == 0) { + message = "Dear user, I would like to ask you to answer a short query about NZB Hydra. It is absolutely anonymous and will not take more than a couple of minutes. You would help me a lot!"; + } else { + message = "Dear user, thank you for answering my last survey. Unfortunately I'm an idiot and didn't know that SurveyMonkey would only show me the first 100 results. Please be so kind and answer the new survey :-)"; + } + ModalService.open("User query", + message, { + yes: { + onYes: function () { + $window.open($filter("dereferer")("https://goo.gl/forms/F3PwtEor2krBxLcR2"), "_blank"); + $http.get("internalapi/pollshown", {params: {selection: 1}}); + ConfigService.getSafe().pollShown = 2; + }, + text: "Yes, I want to help. Take me there." + }, + cancel: { + onCancel: function () { + $http.get("internalapi/pollshown", {params: {selection: 0}}); + ConfigService.getSafe().pollShown = 0; + }, + text: "Not now. Remind me." + }, + no: { + onNo: function () { + $http.get("internalapi/pollshown", {params: {selection: -1}}); + ConfigService.getSafe().pollShown = -1; + }, + text: "Nah, feck off!" + } + }); + } + + + $scope.typeAheadWait = 300; + $scope.selectedItem = ""; + $scope.autocompleteLoading = false; + $scope.isAskById = $scope.category.supportsById; + $scope.isById = {value: true}; //If true the user wants to search by id so we enable autosearch. Was unable to achieve this using a simple boolean + $scope.availableIndexers = []; + $scope.autocompleteClass = "autocompletePosterMovies"; + + $scope.toggle = function (searchCategory) { + $scope.category = searchCategory; + + //Show checkbox to ask if the user wants to search by ID (using autocomplete) + $scope.isAskById = $scope.category.supportsById; + + focus('searchfield'); + + //Hacky way of triggering the autocomplete loading + var searchModel = $element.find("#searchfield").controller("ngModel"); + if (angular.isDefined(searchModel.$viewValue)) { + searchModel.$setViewValue(searchModel.$viewValue + " "); + } + + if (safeConfig.searching.enableCategorySizes) { + var min = searchCategory.min; + var max = searchCategory.max; + if (_.isNumber(min)) { + $scope.minsize = min; + } else { + $scope.minsize = ""; + } + if (_.isNumber(max)) { + $scope.maxsize = max; + } else { + $scope.maxsize = ""; + } + } + + $scope.availableIndexers = getAvailableIndexers(); + + + }; + + + // Any function returning a promise object can be used to load values asynchronously + $scope.getAutocomplete = function (val) { + $scope.autocompleteLoading = true; + //Expected model returned from API: + //label: What to show in the results + //title: Will be used for file search + //value: Will be used as extraInfo (ttid oder tvdb id) + //poster: url of poster to show + + //Don't use autocomplete if checkbox is disabled + if (!$scope.isById.value) { + return {}; + } + + if ($scope.category.name.indexOf("movies") > -1) { + return $http.get('internalapi/autocomplete?type=movie', { + params: { + input: val + } + }).then(function (response) { + $scope.autocompleteLoading = false; + return response.data.results; + }); + } else if ($scope.category.name.indexOf("tv") > -1) { + + return $http.get('internalapi/autocomplete?type=tv', { + params: { + input: val + } + }).then(function (response) { + $scope.autocompleteLoading = false; + return response.data.results; + }); + } else { + return {}; + } + }; + + + $scope.startSearch = function () { + blockUI.start("Searching..."); + var indexers = angular.isUndefined($scope.indexers) ? undefined : $scope.indexers.join("|"); + SearchService.search($scope.category.name, $scope.query, $scope.tmdbid, $scope.imdbid, $scope.title, $scope.tvdbid, $scope.rid, $scope.season, $scope.episode, $scope.minsize, $scope.maxsize, $scope.minage, $scope.maxage, indexers, $scope.mode).then(function () { + $state.go("root.search.results", { + minsize: $scope.minsize, + maxsize: $scope.maxsize, + minage: $scope.minage, + maxage: $scope.maxage + }, { + inherit: true + }); + $scope.tmdbid = undefined; + $scope.imdbid = undefined; + $scope.tvdbid = undefined; + }); + }; + + function getSelectedIndexers() { + var activatedIndexers = _.filter($scope.availableIndexers).filter(function (indexer) { + return indexer.activated; + }); + return _.pluck(activatedIndexers, "name").join("|"); + } + + + $scope.goToSearchUrl = function () { + var stateParams = {}; + if ($scope.category.name.indexOf("movies") > -1) { + stateParams.title = $scope.title; + stateParams.mode = "movie"; + } else if ($scope.category.name.indexOf("tv") > -1) { + stateParams.mode = "tvsearch"; + stateParams.title = $scope.title; + } else if ($scope.category.name == "ebook") { + stateParams.mode = "ebook"; + } else { + stateParams.mode = "search"; + } + + stateParams.tmdbid = $scope.tmdbid; + stateParams.tvdbid = $scope.tvdbid; + stateParams.title = $scope.title; + stateParams.season = $scope.season; + stateParams.episode = $scope.episode; + stateParams.query = $scope.query; + stateParams.minsize = $scope.minsize; + stateParams.maxsize = $scope.maxsize; + stateParams.minage = $scope.minage; + stateParams.maxage = $scope.maxage; + stateParams.category = $scope.category.name; + stateParams.indexers = encodeURIComponent(getSelectedIndexers()); + $state.go("root.search", stateParams, {inherit: false, notify: true, reload: true}); + }; + + $scope.repeatSearch = function (request) { + $state.go("root.search", SearchHistoryService.getStateParamsForRepeatedSearch(request), {inherit: false, notify: true, reload: true}); + }; + + + $scope.selectAutocompleteItem = function ($item) { + $scope.selectedItem = $item; + $scope.title = $item.title; + if ($scope.category.name.indexOf("movies") > -1) { + $scope.tmdbid = $item.value; + } else if ($scope.category.name.indexOf("tv") > -1) { + $scope.tvdbid = $item.value; + } + $scope.query = ""; + $scope.goToSearchUrl(); + }; + + $scope.startQuerySearch = function () { + if (!$scope.query) { + growl.error("You didn't enter a query..."); + } else { + //Reset values because they might've been set from the last search + $scope.title = undefined; + $scope.tmdbid = undefined; + $scope.tvdbid = undefined; + $scope.season = undefined; + $scope.episode = undefined; + $scope.goToSearchUrl(); + } + }; + + + $scope.autocompleteActive = function () { + return $scope.category.supportsById; + }; + + $scope.seriesSelected = function () { + return $scope.category.name.indexOf("tv") > -1; + }; + + $scope.toggleIndexer = function (indexer) { + $scope.indexers[indexer] = !$scope.indexers[indexer] + }; + + + function isIndexerPreselected(indexer) { + if (angular.isUndefined($scope.indexers)) { + return indexer.preselect; + } else { + return _.contains($scope.indexers, indexer.name); + } + + } + + + function getAvailableIndexers() { + return _.chain(safeConfig.indexers).filter(function (indexer) { + return indexer.enabled && indexer.showOnSearch && (angular.isUndefined(indexer.categories) || indexer.categories.length == 0 || $scope.category.name == "all" || indexer.categories.indexOf($scope.category.name) > -1); + }).sortBy(function (indexer) { + return indexer.name.toLowerCase(); + }) + .map(function (indexer) { + return {name: indexer.name, activated: isIndexerPreselected(indexer), categories: indexer.categories}; + }).value(); + } + + + $scope.toggleAllIndexers = function () { + angular.forEach($scope.availableIndexers, function (indexer) { + indexer.activated = !indexer.activated; + }) + }; + + $scope.searchInputChanged = function () { + $scope.$broadcast("searchInputChanged", $scope.query != $stateParams.query ? $scope.query : null, $scope.minage, $scope.maxage, $scope.minsize, $scope.maxsize); + }; + + + $scope.formatRequest = function (request) { + return $sce.trustAsHtml(SearchHistoryService.formatRequest(request, false, true, true, true)); + }; + + $scope.availableIndexers = getAvailableIndexers(); + + + function getAndSetSearchRequests() { + SearchHistoryService.getSearchHistoryForSearching().success(function (data) { + $scope.searchHistory = data.searchRequests; + }); + } + + if ($scope.mode) { + $scope.startSearch(); + } else { + //Getting the search history only makes sense when we're not currently searching + getAndSetSearchRequests(); + } + + $scope.$on("searchResultsShown", function() { + getAndSetSearchRequests(); + }); + + + + +} +SearchController.$inject = ["$scope", "$http", "$stateParams", "$state", "$window", "$filter", "$sce", "growl", "SearchService", "focus", "ConfigService", "HydraAuthService", "CategoriesService", "blockUI", "$element", "ModalService", "SearchHistoryService"]; + +angular + .module('nzbhydraApp') + .factory('RestartService', RestartService); + +function RestartService(blockUI, $timeout, $window, growl, NzbHydraControlService) { + + return { + restart: restart, + countdown: countdown + }; + + + function internalCaR(message, timer) { + + if (timer >= 1) { + blockUI.start(message + "Restarting. Will reload page in " + timer + " seconds..."); + $timeout(function () { + internalCaR(message, timer - 1) + }, 1000); + } else { + $timeout(function () { + blockUI.start("Reloading page..."); + $window.location.reload(); + }, 1000); + } + } + + function countdown() { + internalCaR("", 15); + } + + function restart(message) { + message = angular.isDefined(message) ? message + " " : ""; + NzbHydraControlService.restart().then(internalCaR(message, 15), + function () { + growl.info("Unable to send restart command."); + } + ) + } +} +RestartService.$inject = ["blockUI", "$timeout", "$window", "growl", "NzbHydraControlService"]; + +angular + .module('nzbhydraApp') + .factory('NzbHydraControlService', NzbHydraControlService); + +function NzbHydraControlService($http) { + + return { + restart: restart, + shutdown: shutdown, + deleteLogAndDb: deleteLogAndDb + }; + + function restart() { + return $http.get("internalapi/restart"); + } + + function shutdown() { + return $http.get("internalapi/shutdown"); + } + + function deleteLogAndDb() { + return $http.get("internalapi/deleteloganddb"); + } +} +NzbHydraControlService.$inject = ["$http"]; + +angular + .module('nzbhydraApp') + .factory('NzbDownloadService', NzbDownloadService); + +function NzbDownloadService($http, ConfigService, DownloaderCategoriesService) { + + var service = { + download: download, + getEnabledDownloaders: getEnabledDownloaders + }; + + return service; + + function sendNzbAddCommand(downloader, searchresultids, category) { + var params = {downloader: downloader.name, searchresultids: angular.toJson(searchresultids)}; + if (category != "No category") { + params["category"] = category; + } + return $http.put("internalapi/addnzbs", params); + } + + function download(downloader, searchresultids) { + + var category = downloader.defaultCategory; + + if ((_.isUndefined(category) || category == "" || category == null) && category != "No category") { + return DownloaderCategoriesService.openCategorySelection(downloader).then(function (category) { + return sendNzbAddCommand(downloader, searchresultids, category) + }, function (error) { + throw error; + }); + } else { + return sendNzbAddCommand(downloader, searchresultids, category) + } + } + + function getEnabledDownloaders() { + return _.filter(ConfigService.getSafe().downloaders, "enabled"); + } +} +NzbDownloadService.$inject = ["$http", "ConfigService", "DownloaderCategoriesService"]; + + +angular + .module('nzbhydraApp') + .factory('ModalService', ModalService); + +function ModalService($uibModal, $q) { + + return { + open: open + }; + + function open(headline, message, params, size) { + //params example: + /* + var p = + { + yes: { + text: "Yes", //default: Ok + onYes: function() {} + }, + no: { //default: Empty + text: "No", + onNo: function () { + } + }, + cancel: { + text: "Cancel", //default: Cancel + onCancel: function () { + } + } + }; + */ + var modalInstance = $uibModal.open({ + templateUrl: 'static/html/modal.html', + controller: 'ModalInstanceCtrl', + size: angular.isDefined(size) ? size : "md", + resolve: { + headline: function () { + return headline; + }, + message: function(){ + return message; + }, + params: function() { + return params; + } + } + }); + + modalInstance.result.then(function() { + + }, function() { + + }); + } + +} +ModalService.$inject = ["$uibModal", "$q"]; + +angular + .module('nzbhydraApp') + .controller('ModalInstanceCtrl', ModalInstanceCtrl); + +function ModalInstanceCtrl($scope, $uibModalInstance, headline, message, params) { + + $scope.message = message; + $scope.headline = headline; + $scope.params = params; + $scope.showCancel = angular.isDefined(params) && angular.isDefined(params.cancel); + $scope.showNo = angular.isDefined(params) && angular.isDefined(params.no); + + if (angular.isUndefined(params) || angular.isUndefined(params.yes)) { + $scope.params = { + yes: { + text: "Ok" + } + } + } else if (angular.isUndefined(params.yes.text)) { + params.yes.text = "Yes"; + } + + if (angular.isDefined(params) && angular.isDefined(params.no) && angular.isUndefined($scope.params.no.text)) { + $scope.params.no.text = "No"; + } + + if (angular.isDefined(params) && angular.isDefined(params.cancel) && angular.isUndefined($scope.params.cancel.text)) { + $scope.params.cancel.text = "Cancel"; + } + + $scope.yes = function () { + $uibModalInstance.close(); + if(angular.isDefined(params) && angular.isDefined(params.yes) && angular.isDefined($scope.params.yes.onYes)) { + $scope.params.yes.onYes(); + } + }; + + $scope.no = function () { + $uibModalInstance.close(); + if (angular.isDefined(params) && angular.isDefined(params.no) && angular.isDefined($scope.params.no.onNo)) { + $scope.params.no.onNo(); + } + }; + + $scope.cancel = function () { + $uibModalInstance.dismiss(); + if (angular.isDefined(params.cancel) && angular.isDefined($scope.params.cancel.onCancel)) { + $scope.params.cancel.onCancel(); + } + }; + + $scope.$on("modal.closing", function (targetScope, reason, c) { + if (reason == "backdrop click") { + $scope.cancel(); + } + }); +} +ModalInstanceCtrl.$inject = ["$scope", "$uibModalInstance", "headline", "message", "params"]; + +angular + .module('nzbhydraApp') + .service('GeneralModalService', GeneralModalService); + +function GeneralModalService() { + + + this.open = function (msg, template, templateUrl, size, data) { + + //Prevent circular dependency + var myInjector = angular.injector(["ng", "ui.bootstrap"]); + var $uibModal = myInjector.get("$uibModal"); + var params = {}; + + if(angular.isUndefined(size)) { + params["size"] = size; + } + if (angular.isUndefined(template)) { + if (angular.isUndefined(templateUrl)) { + params["template"] = '
' + msg + '
'; + } else { + params["templateUrl"] = templateUrl; + } + } else { + params["template"] = template; + } + params["resolve"] = + { + data: function () { + return data; + } + }; + + var modalInstance = $uibModal.open(params); + + modalInstance.result.then(); + + }; + + +} +angular + .module('nzbhydraApp') + .controller('LoginController', LoginController); + +function LoginController($scope, RequestsErrorHandler, $state, HydraAuthService, growl) { + $scope.user = {}; + $scope.login = function () { + RequestsErrorHandler.specificallyHandled(function () { + HydraAuthService.login($scope.user.username, $scope.user.password).then(function () { + HydraAuthService.setLoggedInByForm(); + growl.info("Login successful!"); + $state.go("root.search"); + }, function () { + growl.error("Login failed!") + }); + }); + } +} +LoginController.$inject = ["$scope", "RequestsErrorHandler", "$state", "HydraAuthService", "growl"]; + +angular + .module('nzbhydraApp') + .controller('IndexerStatusesController', IndexerStatusesController); + + function IndexerStatusesController($scope, $http, statuses) { + $scope.statuses = statuses.data.indexerStatuses; + + $scope.isInPast = function (timestamp) { + return timestamp * 1000 < (new Date).getTime(); + }; + + $scope.enable = function(indexerName) { + $http.get("internalapi/enableindexer", {params: {name: indexerName}}).then(function(response){ + $scope.statuses = response.data.indexerStatuses; + }); + } + + } + IndexerStatusesController.$inject = ["$scope", "$http", "statuses"]; + + +angular + .module('nzbhydraApp') + .filter('formatDate', formatDate); + +function formatDate(dateFilter) { + return function(timestamp, hidePast) { + if (timestamp) { + if (timestamp * 1000 < (new Date).getTime() && hidePast) { + return ""; // + } + + var t = timestamp * 1000; + t = dateFilter(t, 'yyyy-MM-dd HH:mm'); + return t; + } else { + return ""; + } + } +} +formatDate.$inject = ["dateFilter"]; + +angular + .module('nzbhydraApp') + .filter('reformatDate', reformatDate); + +function reformatDate() { + return function (date) { + //Date in database is saved as UTC without timezone information + return moment.utc(date, "ddd, D MMM YYYY HH:mm:ss z").local().format("YYYY-MM-DD HH:mm"); + + } +} +angular + .module('nzbhydraApp') + .controller('IndexController', IndexController); + +function IndexController($scope, $http, $stateParams, $state) { + console.log("Index"); + $state.go("root.search"); +} +IndexController.$inject = ["$scope", "$http", "$stateParams", "$state"]; + +angular + .module('nzbhydraApp') + .factory('HydraAuthService', HydraAuthService); + +function HydraAuthService($q, $rootScope, $http, bootstrapped) { + + var loggedIn = bootstrapped.username; + + + return { + isLoggedIn: isLoggedIn, + login: login, + askForPassword: askForPassword, + logout: logout, + setLoggedInByForm: setLoggedInByForm, + getUserRights: getUserRights, + setLoggedInByBasic: setLoggedInByBasic, + getUserName: getUserName, + getUserInfos: getUserInfos + }; + + + + function getUserInfos() { + return bootstrapped; + } + + + function isLoggedIn() { + return bootstrapped.username; + } + + function setLoggedInByForm() { + $rootScope.$broadcast("user:loggedIn"); + } + + function setLoggedInByBasic(_maySeeStats, _maySeeAdmin, _username) { + } + + function login(username, password) { + var deferred = $q.defer(); + return $http.post("auth/login", data = {username: username, password: password}).then(function (data) { + bootstrapped = data.data; + loggedIn = true; + $rootScope.$broadcast("user:loggedIn"); + deferred.resolve(); + }); + return deferred; + } + + function askForPassword(params) { + return $http.get("internalapi/askforpassword", {params: params}).then(function (data) { + bootstrapped = data.data; + return bootstrapped; + }); + + } + + function logout() { + var deferred = $q.defer(); + return $http.post("auth/logout").then(function(data) { + $rootScope.$broadcast("user:loggedOut"); + bootstrapped = data.data; + loggedIn = false; + deferred.resolve(); + }); + return deferred; + } + + function getUserRights() { + var userInfos = getUserInfos(); + return {maySeeStats: userInfos.maySeeStats, maySeeAdmin: userInfos.maySeeAdmin, maySeeSearch: userInfos.maySeeSearch}; + } + + function getUserName() { + return bootstrapped.username; + } + + + + + + +} +HydraAuthService.$inject = ["$q", "$rootScope", "$http", "bootstrapped"]; +angular + .module('nzbhydraApp') + .controller('HeaderController', HeaderController); + +function HeaderController($scope, $state, growl, HydraAuthService, $location) { + + + $scope.showLoginout = false; + $scope.oldUserName = null; + + function update() { + + $scope.userInfos = HydraAuthService.getUserInfos(); + if (!$scope.userInfos.authConfigured) { + $scope.showAdmin = true; + $scope.showStats = true; + $scope.showLoginout = false; + } else { + if ($scope.userInfos.username) { + $scope.showAdmin = $scope.userInfos.maySeeAdmin || !$scope.userInfos.adminRestricted; + $scope.showStats = $scope.userInfos.maySeeStats || !$scope.userInfos.statsRestricted; + $scope.showLoginout = true; + $scope.username = $scope.userInfos.username; + $scope.loginlogoutText = "Logout " + $scope.username; + $scope.oldUserName = $scope.username; + } else { + $scope.showAdmin = !$scope.userInfos.adminRestricted; + $scope.showStats = !$scope.userInfos.statsRestricted; + $scope.loginlogoutText = "Login"; + $scope.showLoginout = $scope.userInfos.adminRestricted || $scope.userInfos.statsRestricted || $scope.userInfos.searchRestricted; + $scope.username = ""; + } + } + } + + update(); + + + $scope.$on("user:loggedIn", function (event, data) { + update(); + }); + + $scope.$on("user:loggedOut", function (event, data) { + update(); + }); + + var bases = document.getElementsByTagName('base'); + var baseHref = null; + + if (bases.length > 0) { + baseHref = bases[0].href; + } + + $scope.loginout = function () { + if (HydraAuthService.isLoggedIn()) { + HydraAuthService.logout().then(function () { + if ($scope.userInfos.authType === "basic") { + growl.info("Logged out. Close your browser to make sure session is closed."); + } + else if ($scope.userInfos.authType === "form") { + growl.info("Logged out"); + window.location.href = baseHref; + } + update(); + //$state.go("root.search", null, {reload: true}); + }); + + } else { + if ($scope.userInfos.authType === "basic") { + var params = {}; + if ($scope.oldUserName) { + params = { + old_username: $scope.oldUserName + } + } + HydraAuthService.askForPassword(params).then(function () { + growl.info("Login successful!"); + update(); + $scope.oldUserName = null; + $state.go("root.search"); + }) + } else if ($scope.userInfos.authType === "form") { + window.location.href = baseHref + "login"; + } else { + growl.info("You shouldn't need to login but here you go!"); + } + } + } +} +HeaderController.$inject = ["$scope", "$state", "growl", "HydraAuthService", "$location"]; + +var HEADER_NAME = 'MyApp-Handle-Errors-Generically'; +var specificallyHandleInProgress = false; + +nzbhydraapp.factory('RequestsErrorHandler', ["$q", "growl", "blockUI", "GeneralModalService", function ($q, growl, blockUI, GeneralModalService) { + return { + // --- The user's API for claiming responsiblity for requests --- + specificallyHandled: function (specificallyHandledBlock) { + specificallyHandleInProgress = true; + try { + return specificallyHandledBlock(); + } finally { + specificallyHandleInProgress = false; + } + }, + + // --- Response interceptor for handling errors generically --- + responseError: function (rejection) { + blockUI.reset(); + var shouldHandle = (rejection && rejection.config && rejection.config.headers && rejection.config.headers[HEADER_NAME] && !rejection.config.url.contains("logerror")); + if (shouldHandle) { + var message = "An error occured :
" + rejection.status + ": " + rejection.statusText; + + if (rejection.data) { + message += "

" + rejection.data; + } + GeneralModalService.open(message); + + } else if (rejection && rejection.config && rejection.config.headers && rejection.config.headers[HEADER_NAME] && rejection.config.url.contains("logerror")) { + console.log("Not handling connection error while sending exception to server"); + } + + return $q.reject(rejection); + } + }; +}]); + + +nzbhydraapp.config(['$provide', '$httpProvider', function ($provide, $httpProvider) { + $httpProvider.interceptors.push('RequestsErrorHandler'); + + // --- Decorate $http to add a special header by default --- + + function addHeaderToConfig(config) { + config = config || {}; + config.headers = config.headers || {}; + + // Add the header unless user asked to handle errors himself + if (!specificallyHandleInProgress) { + config.headers[HEADER_NAME] = true; + } + + return config; + } + + // The rest here is mostly boilerplate needed to decorate $http safely + $provide.decorator('$http', ['$delegate', function ($delegate) { + function decorateRegularCall(method) { + return function (url, config) { + return $delegate[method](url, addHeaderToConfig(config)); + }; + } + + function decorateDataCall(method) { + return function (url, data, config) { + return $delegate[method](url, data, addHeaderToConfig(config)); + }; + } + + function copyNotOverriddenAttributes(newHttp) { + for (var attr in $delegate) { + if (!newHttp.hasOwnProperty(attr)) { + if (typeof($delegate[attr]) === 'function') { + newHttp[attr] = function () { + return $delegate.apply($delegate, arguments); + }; + } else { + newHttp[attr] = $delegate[attr]; + } + } + } + } + + var newHttp = function (config) { + return $delegate(addHeaderToConfig(config)); + }; + + newHttp.get = decorateRegularCall('get'); + newHttp.delete = decorateRegularCall('delete'); + newHttp.head = decorateRegularCall('head'); + newHttp.jsonp = decorateRegularCall('jsonp'); + newHttp.post = decorateDataCall('post'); + newHttp.put = decorateDataCall('put'); + + copyNotOverriddenAttributes(newHttp); + + return newHttp; + }]); +}]); +hashCode = function (s) { + return s.split("").reduce(function (a, b) { + a = ((a << 5) - a) + b.charCodeAt(0); + return a & a + }, 0); +}; + +angular + .module('nzbhydraApp').run(["formlyConfig", "formlyValidationMessages", function (formlyConfig, formlyValidationMessages) { + formlyValidationMessages.addStringMessage('required', 'This field is required'); + formlyConfig.extras.errorExistsAndShouldBeVisibleExpression = 'fc.$touched || form.$submitted'; + +}]); + +angular + .module('nzbhydraApp') + .config(["formlyConfigProvider", function config(formlyConfigProvider) { + formlyConfigProvider.extras.removeChromeAutoComplete = true; + formlyConfigProvider.extras.explicitAsync = true; + formlyConfigProvider.disableWarnings = window.onProd; + + + formlyConfigProvider.setWrapper({ + name: 'settingWrapper', + templateUrl: 'setting-wrapper.html' + }); + + + formlyConfigProvider.setWrapper({ + name: 'fieldset', + template: [ + '
', + '{{options.templateOptions.label}}', + '', + '
' + ].join(' ') + }); + + formlyConfigProvider.setType({ + name: 'help', + template: [ + '
', + '
', + '
{{ line }}
', + '
', + '
' + ].join(' ') + }); + + + formlyConfigProvider.setWrapper({ + name: 'logicalGroup', + template: [ + '' + ].join(' ') + }); + + formlyConfigProvider.setType({ + name: 'horizontalInput', + extends: 'input', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + formlyConfigProvider.setType({ + name: 'timeOfDay', + extends: 'horizontalInput', + controller: ['$scope', function ($scope) { + $scope.model[$scope.options.key] = moment.utc($scope.model[$scope.options.key]).toDate(); + }] + }); + + formlyConfigProvider.setType({ + name: 'percentInput', + template: [ + '' + ].join(' ') + }); + + formlyConfigProvider.setType({ + name: 'apiKeyInput', + template: [ + '
', + '', + '', + '', + '
' + ].join(' '), + controller: function ($scope) { + $scope.generate = function () { + var result = ""; + var length = 24; + var chars = "0123456789abcdefghijklmnopqrstuvwxyz"; + for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)]; + $scope.model[$scope.options.key] = result; + } + } + }); + + formlyConfigProvider.setType({ + name: 'testConnection', + templateUrl: 'button-test-connection.html' + }); + + + formlyConfigProvider.setType({ + name: 'horizontalTestConnection', + extends: 'testConnection', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + formlyConfigProvider.setType({ + name: 'checkCaps', + templateUrl: 'button-check-caps.html', + controller: function ($scope, ConfigBoxService, ModalService) { + $scope.message = ""; + $scope.uniqueId = hashCode($scope.model.name) + hashCode($scope.model.host); + + var testButton = "#button-check-caps-" + $scope.uniqueId; + var testMessage = "#message-check-caps-" + $scope.uniqueId; + + function showSuccess() { + angular.element(testButton).removeClass("btn-default"); + angular.element(testButton).removeClass("btn-danger"); + angular.element(testButton).addClass("btn-success"); + } + + function showError() { + angular.element(testButton).removeClass("btn-default"); + angular.element(testButton).removeClass("btn-success"); + angular.element(testButton).addClass("btn-danger"); + } + + $scope.checkCaps = function () { + angular.element(testButton).addClass("glyphicon-refresh-animate"); + + var url = "internalapi/test_caps"; + var params = {indexer: $scope.model.name, apikey: $scope.model.apikey, host: $scope.model.host}; + if (angular.isDefined($scope.model.username)) { + params["username"] = $scope.model.username; + params["password"] = $scope.model.password; + } + ConfigBoxService.checkCaps(url, params, $scope.model).then(function (data, model) { + angular.element(testMessage).text("Supports: " + data.supportedIds + "," ? data.supportedIds && data.supportedTypes : "" + data.supportedTypes); + showSuccess(); + }, function (message) { + angular.element(testMessage).text(message); + showError(); + ModalService.open("Error testing capabilities", 'The capabilities of the indexer could not be checked. You can set the IDs manually. Refer to the Wiki for the IDs supported by some indexers.

You may repeat the check at any time to try again.'); + }).finally(function () { + angular.element(testButton).removeClass("glyphicon-refresh-animate"); + }); + } + } + }); + + formlyConfigProvider.setType({ + name: 'horizontalCheckCaps', + extends: 'checkCaps', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + + formlyConfigProvider.setType({ + name: 'horizontalApiKeyInput', + extends: 'apiKeyInput', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + formlyConfigProvider.setType({ + name: 'horizontalPercentInput', + extends: 'percentInput', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + + formlyConfigProvider.setType({ + name: 'switch', + template: + '
' + }); + + + formlyConfigProvider.setType({ + name: 'duoSetting', + extends: 'input', + defaultOptions: { + className: 'col-md-9', + templateOptions: { + type: 'number', + noRow: true, + label: '' + } + } + }); + + formlyConfigProvider.setType({ + name: 'horizontalSwitch', + extends: 'switch', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + formlyConfigProvider.setType({ + name: 'horizontalSelect', + extends: 'select', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + formlyConfigProvider.setType({ + name: 'horizontalMultiselect', + defaultOptions: { + templateOptions: { + optionsAttr: 'bs-options', + ngOptions: 'option[to.valueProp] as option in to.options | filter: $select.search', + valueProp: 'id', + labelProp: 'label', + getPlaceholder: function() {return "";} + } + }, + templateUrl: 'ui-select-multiple.html', + wrapper: ['settingWrapper', 'bootstrapHasError'] + }); + + + formlyConfigProvider.setType({ + name: 'label', + template: '' + }); + + formlyConfigProvider.setType({ + name: 'duolabel', + extends: 'label', + defaultOptions: { + className: 'col-md-2', + templateOptions: { + label: '-' + } + } + }); + + formlyConfigProvider.setType({ + name: 'repeatSection', + templateUrl: 'repeatSection.html', + controller: function ($scope) { + $scope.formOptions = {formState: $scope.formState}; + $scope.addNew = addNew; + $scope.remove = remove; + $scope.copyFields = copyFields; + + function copyFields(fields) { + fields = angular.copy(fields); + $scope.repeatfields = fields; + return fields; + } + + $scope.clear = function (field) { + return _.mapObject(field, function (key, val) { + if (typeof val === 'object') { + return $scope.clear(val); + } + return undefined; + + }); + }; + + + function addNew() { + $scope.model[$scope.options.key] = $scope.model[$scope.options.key] || []; + var repeatsection = $scope.model[$scope.options.key]; + var newsection = angular.copy($scope.options.templateOptions.defaultModel); + repeatsection.push(newsection); + } + + function remove($index) { + $scope.model[$scope.options.key].splice($index, 1); + } + } + }); + + formlyConfigProvider.setType({ + name: 'arrayConfig', + templateUrl: 'arrayConfig.html', + controller: function ($scope, $uibModal, growl) { + $scope.formOptions = {formState: $scope.formState}; + $scope._showBox = _showBox; + $scope.showBox = showBox; + $scope.isInitial = false; + + $scope.presets = $scope.options.data.presets($scope.model); + + + function _showBox(model, parentModel, isInitial, callback) { + var modalInstance = $uibModal.open({ + templateUrl: 'configBox.html', + controller: 'ConfigBoxInstanceController', + size: 'lg', + resolve: { + model: function () { + return model; + }, + fields: function () { + return $scope.options.data.fieldsFunction(model, parentModel, isInitial, angular.injector()); + }, + isInitial: function () { + return isInitial + }, + parentModel: function () { + return parentModel; + }, + data: function () { + return $scope.options.data; + } + } + }); + + + modalInstance.result.then(function () { + $scope.form.$setDirty(true); + if (angular.isDefined(callback)) { + callback(true); + } + }, function () { + if (angular.isDefined(callback)) { + callback(false); + } + }); + } + + function showBox(model, parentModel) { + $scope._showBox(model, parentModel, false) + } + + $scope.addEntry = function (entriesCollection, preset) { + if ($scope.options.data.checkAddingAllowed(entriesCollection, preset)) { + var model = angular.copy($scope.options.data.defaultModel); + if (angular.isDefined(preset)) { + _.extend(model, preset); + } + + $scope.isInitial = true; + + $scope._showBox(model, entriesCollection, true, function (isSubmitted) { + if (isSubmitted) { + entriesCollection.push(model); + } + }); + } else { + growl.error("That predefined indexer is already configured."); //For now this is the only case where adding is forbidden so we use this hardcoded message "for now"... (;-)) + } + + }; + + } + + }); + + }]); + + +angular.module('nzbhydraApp').controller('ConfigBoxInstanceController', ["$scope", "$q", "$uibModalInstance", "$http", "model", "fields", "isInitial", "parentModel", "data", "growl", function ($scope, $q, $uibModalInstance, $http, model, fields, isInitial, parentModel, data, growl) { + + $scope.model = model; + $scope.fields = fields; + $scope.isInitial = isInitial; + $scope.allowDelete = data.allowDeleteFunction(model); + $scope.spinnerActive = false; + $scope.needsConnectionTest = false; + + $scope.obSubmit = function () { + console.log($scope); + if ($scope.form.$valid) { + + var a = data.checkBeforeClose($scope, model).then(function() { + $uibModalInstance.close($scope); + }); + } else { + growl.error("Config invalid. Please check your settings."); + angular.forEach($scope.form.$error, function (error) { + angular.forEach(error, function (field) { + field.$setTouched(); + }); + }); + } + }; + + $scope.reset = function () { + $scope.reset(); + }; + + $scope.deleteEntry = function () { + parentModel.splice(parentModel.indexOf(model), 1); + $uibModalInstance.close($scope); + }; + + $scope.reset = function () { + if (angular.isDefined(data.resetFunction)) { + data.resetFunction($scope); + } + }; + + $scope.$on("modal.closing", function (targetScope, reason) { + if (reason == "backdrop click") { + $scope.reset($scope); + } + }); +}]); + +angular + .module('nzbhydraApp') + .factory('ConfigBoxService', ConfigBoxService); + +function ConfigBoxService($http, $q) { + + return { + checkConnection: checkConnection, + checkCaps: checkCaps + }; + + function checkConnection(url, settings) { + var deferred = $q.defer(); + + $http.post(url, settings).success(function (result) { + //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click + if (result.result) { + deferred.resolve(); + } else { + deferred.reject({checked: true, message: result.message}); + } + }).error(function (result) { + deferred.reject({checked: false, message: result.message}); + }); + + return deferred.promise; + } + + function checkCaps(url, params, model) { + var deferred = $q.defer(); + + $http.post(url, params).success(function (data) { + //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click + if (data.success) { + model.search_ids = data.supportedIds; + model.searchTypes = data.supportedTypes; + if (data.supportsAllCategories) { //Don't display all the categories, will be replaced with placeholder "All categories" + model.categories = []; + } else { + model.categories = data.supportedCategories; + } + model.animeCategory = data.animeCategory; + model.audiobookCategory = data.audiobookCategory; + model.comicCategory = data.comicCategory; + model.ebookCategory = data.ebookCategory; + model.magazineCategory = data.magazineCategory; + model.backend = data.backend; + deferred.resolve({supportedIds: data.supportedIds, supportedTypes: data.supportedTypes}, model); + } else { + deferred.reject(data.message); + } + }).error(function () { + deferred.reject("Unknown error"); + }); + + return deferred.promise; + } + +} +ConfigBoxService.$inject = ["$http", "$q"]; + + + + + +var filters = angular.module('filters', []); + +filters.filter('bytes', function() { + return function(bytes) { + return filesize(bytes); + } +}); + +filters.filter('unsafe', + ["$sce", function ($sce) { + return function (value, type) { + return $sce.trustAs(type || 'html', text); + }; + }] +); + + +angular + .module('nzbhydraApp') + .factory('FileDownloadService', FileDownloadService); + +function FileDownloadService($http, growl ) { + + var service = { + downloadFile: downloadFile + }; + + return service; + + function downloadFile(link, filename) { + $http({method: 'GET', url: link, responseType: 'arraybuffer'}).success(function (data, status, headers, config) { + var a = document.createElement('a'); + var blob = new Blob([data], {'type': "application/octet-stream"}); + a.href = URL.createObjectURL(blob); + a.download = filename; + + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }).error(function (data, status, headers, config) { + growl.error(status); + }); + + } + + +} +FileDownloadService.$inject = ["$http", "growl"]; + + +angular + .module('nzbhydraApp') + .factory('DownloaderCategoriesService', DownloaderCategoriesService); + +function DownloaderCategoriesService($http, $q, $uibModal) { + + var categories = {}; + var selectedCategory = {}; + + var service = { + get: getCategories, + invalidate: invalidate, + select: select, + openCategorySelection: openCategorySelection + }; + + var deferred; + + return service; + + + function getCategories(downloader) { + + function loadAll() { + if (angular.isDefined(categories) && angular.isDefined(categories.downloader)) { + var deferred = $q.defer(); + deferred.resolve(categories.downloader); + return deferred.promise; + } + + return $http.get('internalapi/getcategories', {params: {downloader: downloader.name}}) + .then(function (categoriesResponse) { + + console.log("Updating downloader categories cache"); + var categories = {downloader: categoriesResponse.data.categories}; + return categoriesResponse.data.categories; + + }, function (error) { + throw error; + }); + } + + return loadAll().then(function (categories) { + return categories; + }, function (error) { + throw error; + }); + } + + + function openCategorySelection(downloader) { + $uibModal.open({ + templateUrl: 'static/html/directives/addable-nzb-modal.html', + controller: 'DownloaderCategorySelectionController', + size: "sm", + resolve: { + categories: function () { + return getCategories(downloader) + } + } + }); + deferred = $q.defer(); + return deferred.promise; + } + + function select(category) { + selectedCategory = category; + console.log("Selected category " + category); + deferred.resolve(category); + } + + function invalidate() { + console.log("Invalidating categories"); + categories = undefined; + } +} +DownloaderCategoriesService.$inject = ["$http", "$q", "$uibModal"]; + +angular + .module('nzbhydraApp').controller('DownloaderCategorySelectionController', ["$scope", "$uibModalInstance", "DownloaderCategoriesService", "categories", function ($scope, $uibModalInstance, DownloaderCategoriesService, categories) { + console.log(categories); + $scope.categories = categories; + $scope.select = function (category) { + DownloaderCategoriesService.select(category); + $uibModalInstance.close($scope); + } +}]); +angular + .module('nzbhydraApp') + .controller('DownloadHistoryController', DownloadHistoryController); + + +function DownloadHistoryController($scope, StatsService, downloads, ConfigService) { + $scope.limit = 100; + $scope.pagination = { + current: 1 + }; + $scope.sortModel = { + column: "time", + sortMode: 2 + }; + $scope.filterModel = {}; + + //Filter options + $scope.indexersForFiltering = []; + _.forEach(ConfigService.getSafe().indexers, function (indexer) { + $scope.indexersForFiltering.push({label: indexer.name, id: indexer.name}) + }); + $scope.preselectedTimeInterval = {beforeDate: null, afterDate: null}; + $scope.successfulForFiltering = [{label: "Succesful", id: true}, {label: "Unsuccesful", id: false}, {label: "Unknown", id: null}]; + $scope.accessOptionsForFiltering = [{label: "All", value: "all"}, {label: "API", value: false}, {label: "Internal", value: true}]; + + + //Preloaded data + $scope.nzbDownloads = downloads.data.nzbDownloads; + $scope.totalDownloads = downloads.data.totalDownloads; + + + $scope.update = function () { + StatsService.getDownloadHistory($scope.pagination.current, $scope.limit, $scope.filterModel, $scope.sortModel).then(function (downloads) { + $scope.nzbDownloads = downloads.data.nzbDownloads; + $scope.totalDownloads = downloads.data.totalDownloads; + }); + }; + + + $scope.$on("sort", function (event, column, sortMode) { + if (sortMode == 0) { + column = "time"; + sortMode = 2; + } + $scope.sortModel = { + column: column, + sortMode: sortMode + }; + $scope.$broadcast("newSortColumn", column); + $scope.update(); + }); + + + $scope.$on("filter", function (event, column, filterModel, isActive) { + if (filterModel.filter) { + $scope.filterModel[column] = filterModel; + } else { + delete $scope.filterModel[column]; + } + $scope.update(); + }) + +} +DownloadHistoryController.$inject = ["$scope", "StatsService", "downloads", "ConfigService"]; + +angular + .module('nzbhydraApp') + .filter('reformatDateEpoch', reformatDateEpoch); + +function reformatDateEpoch() { + return function (date) { + return moment.unix(date).local().format("YYYY-MM-DD HH:mm"); + + } +} +angular + .module('nzbhydraApp') + .factory('ConfigService', ConfigService); + +function ConfigService($http, $q, $cacheFactory, bootstrapped) { + + var cache = $cacheFactory("nzbhydra"); + var safeConfig = bootstrapped.safeConfig; + + return { + set: set, + get: get, + getSafe: getSafe, + invalidateSafe: invalidateSafe, + maySeeAdminArea: maySeeAdminArea + }; + + + function set(newConfig) { + $http.put('internalapi/setsettings', newConfig) + .then(function (successresponse) { + console.log("Settings saved. Updating cache"); + cache.put("config", newConfig); + invalidateSafe(); + }, function (errorresponse) { + console.log("Error saving settings:"); + console.log(errorresponse); + }); + } + + + function get() { + var config = cache.get("config"); + if (angular.isUndefined(config)) { + config = $http.get('internalapi/getconfig').then(function (data) { + return data.data; + }); + cache.put("config", config); + } + + return config; + } + + function getSafe() { + return safeConfig; + } + + function invalidateSafe() { + $http.get('internalapi/getsafeconfig').then(function (data) { + safeConfig = data.data; + }); + } + + function maySeeAdminArea() { + function loadAll() { + var maySeeAdminArea = cache.get("maySeeAdminArea"); + if (!angular.isUndefined(maySeeAdminArea)) { + var deferred = $q.defer(); + deferred.resolve(maySeeAdminArea); + return deferred.promise; + } + + return $http.get('internalapi/mayseeadminarea') + .then(function (configResponse) { + var config = configResponse.data; + cache.put("maySeeAdminArea", config); + return configResponse.data; + }); + } + + return loadAll().then(function (maySeeAdminArea) { + return maySeeAdminArea; + }); + } +} +ConfigService.$inject = ["$http", "$q", "$cacheFactory", "bootstrapped"]; +angular + .module('nzbhydraApp') + .factory('ConfigFields', ConfigFields); + +function ConfigFields($injector) { + + var restartWatcher; + + return { + getFields: getFields, + setRestartWatcher: setRestartWatcher + }; + + function setRestartWatcher(restartWatcherFunction) { + restartWatcher = restartWatcherFunction; + } + + + function restartListener(field, newValue, oldValue) { + if (newValue != oldValue) { + restartWatcher(); + } + } + + + function ipValidator() { + return { + expression: function ($viewValue, $modelValue) { + var value = $modelValue || $viewValue; + if (value) { + return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/.test(value) + || /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(value); + } + return true; + }, + message: '$viewValue + " is not a valid IP Address"' + }; + } + + function regexValidator(regex, message, prefixViewValue) { + return { + expression: function ($viewValue, $modelValue) { + var value = $modelValue || $viewValue; + if (value) { + return regex.test(value); + } + return true; + }, + message: (prefixViewValue ? '$viewValue + " ' : '" ') + message + '"' + }; + } + + + function getCategoryFields() { + var fields = []; + var ConfigService = $injector.get("ConfigService"); + var categories = ConfigService.getSafe().categories; + fields.push({ + key: 'enableCategorySizes', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Category sizes', + help: "Preset min and max sizes depending on the selected category" + } + }); + _.each(categories, function (category) { + if (category.name != "all" && category.name != "na") { + var categoryFields = [ + { + key: "categories." + category.name + '.requiredWords', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Required words', + placeholder: 'separate, with, commas, like, this' + } + }, + { + key: "categories." + category.name + '.requiredRegex', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Required regex', + help: 'Must be present in a title (which is converted to lowercase before)' + } + }, + { + key: "categories." + category.name + '.forbiddenWords', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Forbidden words', + placeholder: 'separate, with, commas, like, this' + } + }, + { + key: "categories." + category.name + '.forbiddenRegex', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Forbidden regex', + help: 'Must not be present in a title (which is converted to lowercase before)' + } + }, + { + key: "categories." + category.name + '.applyRestrictions', + type: 'horizontalSelect', + templateOptions: { + label: 'Apply restrictions', + options: [ + {name: 'Internal searches', value: 'internal'}, + {name: 'API searches', value: 'external'}, + {name: 'All searches', value: 'both'} + ], + help: "For which type of search word restrictions will be applied" + } + } + ]; + categoryFields.push({ + wrapper: 'settingWrapper', + templateOptions: { + label: 'Size preset' + }, + fieldGroup: [ + { + key: "categories." + category.name + '.min', + type: 'duoSetting', + templateOptions: { + addonRight: { + text: 'MB' + } + } + }, + { + type: 'duolabel' + }, + { + key: "categories." + category.name + '.max', + type: 'duoSetting', templateOptions: {addonRight: {text: 'MB'}} + } + ] + }); + categoryFields.push({ + key: "categories." + category.name + '.newznabCategories', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Newznab categories', + help: 'Map newznab categories to hydra categories', + required: true + }, + parsers: [function (value) { + if (!value) { + return value; + } + var arr = []; + arr.push.apply(arr, value.split(",").map(Number)); + return arr; + + }] + }); + categoryFields.push({ + key: "categories." + category.name + '.ignoreResults', + type: 'horizontalSelect', + templateOptions: { + label: 'Ignore results', + options: [ + {name: 'For internal searches', value: 'internal'}, + {name: 'For API searches', value: 'external'}, + {name: 'Always', value: 'always'}, + {name: 'Never', value: 'never'} + ], + help: "Ignore results from this category" + } + }); + + fields.push({ + wrapper: 'fieldset', + templateOptions: { + label: category.pretty + }, + fieldGroup: categoryFields + + }) + } + } + ); + return fields; + } + + function getFields(rootModel) { + return { + main: [ + { + wrapper: 'fieldset', + templateOptions: {label: 'Hosting'}, + fieldGroup: [ + { + key: 'host', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Host', + required: true, + placeholder: 'IPv4/6 address to bind to', + help: 'I strongly recommend using a reverse proxy instead of exposing this directly. Requires restart.' + }, + validators: { + ipAddress: ipValidator() + }, + watcher: { + listener: restartListener + } + }, + { + key: 'port', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Port', + required: true, + placeholder: '5050', + help: 'Requires restart' + }, + validators: { + port: regexValidator(/^\d{1,5}$/, "is no valid port", true) + }, + watcher: { + listener: restartListener + } + }, + { + key: 'urlBase', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'URL base', + placeholder: '/nzbhydra', + help: 'Set when using an external proxy. Call using a trailing slash, e.g. http://www.domain.com/nzbhydra/' + }, + validators: { + urlBase: regexValidator(/^(\/\w+)*$/, "Base URL needs to start with a slash and must not end with one") + } + }, + { + key: 'externalUrl', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'External URL', + placeholder: 'https://www.somedomain.com/nzbhydra/', + help: 'Set to the full external URL so machines outside can use the generated NZB links.' + } + }, + { + key: 'useLocalUrlForApiAccess', + type: 'horizontalSwitch', + hideExpression: '!model.externalUrl', + templateOptions: { + type: 'switch', + label: 'Use local address in API results', + help: 'Disable to make API results use the external URL in NZB links.' + } + }, + { + key: 'socksProxy', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'SOCKS proxy', + placeholder: 'socks5://user:pass@127.0.0.1:1080', + help: "IPv4 only" + }, + watcher: { + listener: restartListener + } + }, + { + key: 'httpProxy', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'HTTP proxy', + placeholder: 'http://user:pass@10.0.0.1:1080', + help: "IPv4 only" + }, + watcher: { + listener: restartListener + } + }, + { + key: 'httpsProxy', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'HTTPS proxy', + placeholder: 'https://user:pass@10.0.0.1:1090', + help: "IPv4 only" + }, + watcher: { + listener: restartListener + } + }, + { + key: 'ssl', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Use SSL', + help: 'I recommend using a reverse proxy instead of this. Requires restart.' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'sslcert', + hideExpression: '!model.ssl', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'SSL certificate file', + required: true, + help: 'Requires restart.' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'sslkey', + hideExpression: '!model.ssl', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'SSL key file', + required: true, + help: 'Requires restart.' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'sslca', + hideExpression: '!model.ssl', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'SSL intermediate certificate (CA file)', + help: 'Requires restart.' + }, + watcher: { + listener: restartListener + } + } + + + ] + }, + { + wrapper: 'fieldset', + templateOptions: {label: 'UI'}, + fieldGroup: [ + + { + key: 'theme', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'Theme', + help: 'Reload page after saving', + options: [ + {name: 'Grey', value: 'grey'}, + {name: 'Bright', value: 'bright'}, + {name: 'Dark', value: 'dark'} + ] + } + } + ] + }, + { + wrapper: 'fieldset', + templateOptions: {label: 'Security'}, + fieldGroup: [ + + { + key: 'apikey', + type: 'horizontalApiKeyInput', + templateOptions: { + label: 'API key', + help: 'Remove to disable. Alphanumeric only' + }, + validators: { + apikey: regexValidator(/^[a-zA-Z0-9]*$/, "API key must only contain numbers and digits", false) + } + }, + { + key: 'dereferer', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Dereferer', + help: 'Redirect external links to hide your instance. Insert $s for target URL. Delete to disable.' + } + }, + { + key: 'verifySsl', + type: 'horizontalSwitch', + templateOptions: { + label: 'Verify SSL certificates', + help: 'If enabled only valid/known SSL certificates will be accepted when accessing indexers' + } + } + ] + }, + + { + wrapper: 'fieldset', + key: 'logging', + templateOptions: {label: 'Logging'}, + fieldGroup: [ + { + key: 'logfilelevel', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'Logfile level', + options: [ + {name: 'Critical', value: 'CRITICAL'}, + {name: 'Error', value: 'ERROR'}, + {name: 'Warning', value: 'WARNING'}, + {name: 'Info', value: 'INFO'}, + {name: 'Debug', value: 'DEBUG'} + ] + }, + watcher: { + listener: restartListener + } + }, + { + key: 'logfilename', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Log file', + required: true + }, + watcher: { + listener: restartListener + } + }, + { + key: 'rolloverAtStart', + type: 'horizontalSwitch', + templateOptions: { + label: 'Startup rollover', + help: 'Starts a new log file on start/restart' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'logMaxSize', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Max log file size', + help: 'When log file size is reached a new one is started. Set to 0 to disable.', + addonRight: { + text: 'kB' + } + }, + watcher: { + listener: restartListener + } + }, + { + key: 'logRotateAfterDays', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Rotate after', + help: 'A new log file is started after this many days. Supercedes max size. Keep empty to disable.', + addonRight: { + text: 'days' + } + }, + watcher: { + listener: restartListener + } + }, + { + key: 'keepLogFiles', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Keep log files', + help: 'Number of log files to keep before oldest is deleted.' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'logfileUmask', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Log file chmod', + help: 'chmod for log files (linux only)' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'consolelevel', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'Console log level', + options: [ + {name: 'Critical', value: 'CRITICAL'}, + {name: 'Error', value: 'ERROR'}, + {name: 'Warning', value: 'WARNING'}, + {name: 'Info', value: 'INFO'}, + {name: 'Debug', value: 'DEBUG'} + ] + }, + watcher: { + listener: restartListener + } + }, + { + key: 'logIpAddresses', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Log IP addresses' + } + } + + + ] + }, + { + wrapper: 'fieldset', + templateOptions: {label: 'Updating'}, + fieldGroup: [ + + { + key: 'gitPath', + type: 'horizontalInput', + templateOptions: { + label: 'Git executable', + help: 'Set if git is not in your path' + } + }, + { + key: 'branch', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Repository branch', + required: true, + help: 'Stay on master. Seriously...' + } + } + ] + }, + + { + wrapper: 'fieldset', + templateOptions: {label: 'Other'}, + fieldGroup: [ + { + key: 'keepSearchResultsForDays', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Store results for ...', + addonRight: { + text: 'days' + }, + required: true, + help: 'Meta data from searches is stored in the database. When they\'re deleted links to hydra become invalid.' + } + }, + { + key: 'debug', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Enable debugging', + help: "Only do this if you know what and why you're doing it" + } + }, + { + key: 'runThreaded', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Run threaded server', + help: 'Requires restart' + }, + watcher: { + listener: restartListener + } + }, + { + key: 'startupBrowser', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Open browser on startup' + } + }, + { + key: 'shutdownForRestart', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Shutdown to restart', + help: 'When run with a service manager which automatically restarts Hydra enable this to prevent duplicate instances' + } + } + ] + } + ], + + searching: [ + { + wrapper: 'fieldset', + templateOptions: { + label: 'Indexer access' + }, + fieldGroup: [ + { + key: 'timeout', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Timeout when accessing indexers', + addonRight: { + text: 'seconds' + } + } + }, + { + key: 'ignoreTemporarilyDisabled', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Ignore temporarily disabled', + help: "If enabled access to indexers will never be paused after an error occurred" + } + }, + { + key: 'ignorePassworded', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Ignore passworded releases', + help: "Not all indexers provide this information" + } + }, + { + key: 'forbiddenWords', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Forbidden words', + placeholder: 'separate, with, commas, like, this', + help: "Results with any of these words in the title will be ignored" + } + }, + { + key: 'forbiddenRegex', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Forbidden regex', + help: 'Must not be present in a title (which is converted to lowercase before)' + } + }, + { + key: 'requiredWords', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Required words', + placeholder: 'separate, with, commas, like, this', + help: "Only results with at least one of these words in the title will be used" + } + }, + { + key: 'requiredRegex', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Required regex', + help: 'Must be present in a title (which is converted to lowercase before)' + } + }, + { + key: 'applyRestrictions', + type: 'horizontalSelect', + templateOptions: { + label: 'Apply word restrictions', + options: [ + {name: 'Internal searches', value: 'internal'}, + {name: 'API searches', value: 'external'}, + {name: 'All searches', value: 'both'} + ], + help: "For which type of search word restrictions will be applied" + } + }, + { + key: 'forbiddenGroups', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Forbidden groups', + placeholder: 'separate, with, commas, like, this', + help: 'Posts from any groups containing any of these words will be ignored' + } + }, + { + key: 'forbiddenPosters', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Forbidden posters', + placeholder: 'separate, with, commas, like, this', + help: 'Posts from any posters containing any of these words will be ignored' + } + }, + { + key: 'maxAge', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Maximum results age', + help: 'Results older than this are ignored. Can be overwritten per search', + addonRight: { + text: 'days' + } + } + }, + { + key: 'generate_queries', + type: 'horizontalMultiselect', + templateOptions: { + label: 'Generate queries', + options: [ + {label: 'Internal searches', id: 'internal'}, + {label: 'API searches', id: 'external'} + ], + help: "Generate queries for indexers which do not support ID based searches" + } + }, + { + key: 'idFallbackToTitle', + type: 'horizontalMultiselect', + templateOptions: { + label: 'Fallback to title queries', + options: [ + {label: 'Internal searches', id: 'internal'}, + {label: 'API searches', id: 'external'} + ], + help: "When no results were found for a query ID search again using the title" + } + }, + { + key: 'idFallbackToTitlePerIndexer', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Fallback per indexer', + help: "If enabled, fallback will occur on a per-indexer basis" + } + }, + { + key: 'userAgent', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'User agent', + required: true + } + } + + ] + }, + { + wrapper: 'fieldset', + templateOptions: { + label: 'Result processing' + }, + fieldGroup: [ + { + key: 'htmlParser', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'HTML parser', + options: [ + {name: 'Default BS (slower)', value: 'html.parser'}, + {name: 'LXML (faster, needs to be installed separately)', value: 'lxml'} + ] + } + }, + { + key: 'duplicateSizeThresholdInPercent', + type: 'horizontalPercentInput', + templateOptions: { + type: 'text', + label: 'Duplicate size threshold', + required: true, + addonRight: { + text: '%' + } + + } + }, + { + key: 'duplicateAgeThreshold', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Duplicate age threshold', + required: true, + addonRight: { + text: 'hours' + } + } + }, + { + key: 'alwaysShowDuplicates', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Always show duplicates', + help: 'Activate to show duplicates in search results by default' + } + }, + { + key: 'removeTrailing', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Remove trailing...', + help: 'Removed from title if it ends with either of these. Case insensitive and disregards leading/trailing spaces' + } + }, + { + key: 'nzbAccessType', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'NZB access type', + options: [ + {name: 'Proxy NZBs from indexer', value: 'serve'}, + {name: 'Redirect to the indexer', value: 'redirect'} + ], + help: "How access to NZBs is provided when NZBs are downloaded (by the user or external tools). Redirecting is recommended." + } + } + ] + } + ], + + categories: getCategoryFields(), + + downloaders: [ + { + type: "arrayConfig", + data: { + defaultModel: { + enabled: true + }, + entryTemplateUrl: 'downloaderEntry.html', + presets: function () { + return getDownloaderPresets(); + }, + checkAddingAllowed: function () { + return true; + }, + presetsOnly: true, + addNewText: 'Add new downloader', + fieldsFunction: getDownloaderBoxFields, + allowDeleteFunction: function () { + return true; + }, + checkBeforeClose: function (scope, model) { + var DownloaderCheckBeforeCloseService = $injector.get("DownloaderCheckBeforeCloseService"); + return DownloaderCheckBeforeCloseService.check(scope, model); + }, + resetFunction: function (scope) { + scope.options.resetModel(); + scope.options.resetModel(); + } + + } + } + ], + + + indexers: [ + { + type: "arrayConfig", + data: { + defaultModel: { + animeCategory: null, + comicCategory: null, + audiobookCategory: null, + magazineCategory: null, + ebookCategory: null, + enabled: true, + categories: [], + downloadLimit: null, + loadLimitOnRandom: null, + host: null, + apikey: null, + hitLimit: null, + hitLimitResetTime: 0, + timeout: null, + name: null, + showOnSearch: true, + score: 0, + username: null, + password: null, + preselect: true, + type: 'newznab', + accessType: "both", + search_ids: undefined, //["imdbid", "rid", "tvdbid"], + searchTypes: undefined, //["tvsearch", "movie"] + backend: null, + userAgent: null + }, + addNewText: 'Add new indexer', + entryTemplateUrl: 'indexerEntry.html', + presets: function (model) { + return getIndexerPresets(model); + }, + + checkAddingAllowed: function (existingIndexers, preset) { + if (!preset || !(preset.type == "anizb" || preset.type == "binsearch" || preset.type == "nzbindex" || preset.type == "nzbclub")) { + return true; + } + return !_.any(existingIndexers, function (existingEntry) { + return existingEntry.name == preset.name; + }); + + }, + fieldsFunction: getIndexerBoxFields, + allowDeleteFunction: function (model) { + return true; + }, + checkBeforeClose: function (scope, model) { + var IndexerCheckBeforeCloseService = $injector.get("IndexerCheckBeforeCloseService"); + return IndexerCheckBeforeCloseService.check(scope, model); + }, + resetFunction: function (scope) { + //Then reset the model twice (for some reason when we do it once the search types / ids fields are empty, resetting again fixes that... (wtf)) + scope.options.resetModel(); + scope.options.resetModel(); + } + + } + } + ], + + auth: [ + { + key: 'authType', + type: 'horizontalSelect', + templateOptions: { + label: 'Auth type', + options: [ + {name: 'None', value: 'none'}, + {name: 'HTTP Basic auth', value: 'basic'}, + {name: 'Login form', value: 'form'} + ] + + } + }, + { + key: 'restrictSearch', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Restrict searching', + help: 'Restrict access to searching' + }, + hideExpression: function () { + return rootModel.auth.authType == "none"; + } + }, + { + key: 'restrictStats', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Restrict stats', + help: 'Restrict access to stats' + }, + hideExpression: function () { + return rootModel.auth.authType == "none"; + } + }, + { + key: 'restrictAdmin', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Restrict admin', + help: 'Restrict access to admin functions' + }, + hideExpression: function () { + return rootModel.auth.authType == "none"; + } + }, + { + key: 'restrictDetailsDl', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Restrict NZB details & DL', + help: 'Restrict NZB details, comments and download links' + }, + hideExpression: function () { + return rootModel.auth.authType == "none"; + } + }, + { + key: 'restrictIndexerSelection', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Restrict indexer selection box', + help: 'Restrict visibility of indexer selection box in search. Affects only GUI' + }, + hideExpression: function () { + return rootModel.auth.authType == "none"; + } + }, + { + key: 'rememberUsers', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Remember users', + help: 'Remember users with cookie for 14 days' + }, + hideExpression: function () { + return rootModel.auth.authType == "none"; + } + }, + { + key: 'rememberUsersExpiry', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Cookie expiry', + help: 'How long users are remembered', + addonRight: { + text: 'days' + } + } + }, + { + type: 'repeatSection', + key: 'users', + model: rootModel.auth, + templateOptions: { + btnText: 'Add new user', + altLegendText: 'Authless', + fields: [ + { + key: 'username', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Username', + required: true + } + + }, + { + key: 'password', + type: 'horizontalInput', + templateOptions: { + type: 'password', + label: 'Password', + required: true + } + }, + { + key: 'maySeeAdmin', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'May see admin area' + } + }, + { + key: 'maySeeStats', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'May see stats' + }, + hideExpression: 'model.maySeeAdmin' + }, + { + key: 'maySeeDetailsDl', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'May see NZB details & DL links' + }, + hideExpression: 'model.maySeeAdmin' + }, + { + key: 'showIndexerSelection', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'May see indexer selection box' + }, + hideExpression: 'model.maySeeAdmin' + } + + ], + defaultModel: { + username: null, + password: null, + maySeeStats: true, + maySeeAdmin: true, + maySeeDetailsDl: true, + showIndexerSelection: true + } + } + } + ] + } + } +} +ConfigFields.$inject = ["$injector"]; + + +function getIndexerPresets(configuredIndexers) { + var presets = [ + [ + { + name: "6box", + host: "https://6box.me" + }, + { + name: "6box spotweb", + host: "https://6box.me/spotweb" + }, + { + name: "altHUB", + host: "https://api.althub.co.za" + }, + { + name: "DogNZB", + host: "https://api.dognzb.cr" + }, + { + name: "Drunken Slug", + host: "https://api.drunkenslug.com" + }, + { + name: "LuluNZB", + host: "https://lulunzb.com" + }, + { + name: "miatrix", + host: "https://www.miatrix.com" + }, + { + name: "newz69.keagaming", + host: "https://newz69.keagaming.com" + }, + { + name: "NewzTown", + host: "https://newztown.co.za" + }, + { + name: "NZB Finder", + host: "https://nzbfinder.ws" + }, + { + name: "NZBCat", + host: "https://nzb.cat" + }, + { + name: "nzb.ag", + host: "https://nzb.ag" + }, + { + name: "nzb.is", + host: "https://nzb.is" + }, + { + name: "nzb.su", + host: "https://api.nzb.su" + }, + { + name: "nzb7", + host: "https://www.nzb7.com" + }, + { + name: "NZBGeek", + host: "https://api.nzbgeek.info" + }, + { + name: "NzbNdx", + host: "https://www.nzbndx.com" + }, + { + name: "NzBNooB", + host: "https://www.nzbnoob.com" + }, + { + name: "nzbplanet", + host: "https://nzbplanet.net" + }, + { + name: "NZBs.org", + host: "https://nzbs.org" + }, + { + name: "NZBs.io", + host: "https://www.nzbs.io" + }, + { + name: "Nzeeb", + host: "https://www.nzeeb.com" + }, + { + name: "oznzb", + host: "https://api.oznzb.com" + }, + { + name: "omgwtfnzbs", + host: "https://api.omgwtfnzbs.me" + }, + { + name: "PFMonkey", + host: "https://www.pfmonkey.com" + }, + { + name: "SimplyNZBs", + host: "https://simplynzbs.com" + }, + { + name: "Tabula-Rasa", + host: "https://www.tabula-rasa.pw" + }, + { + name: "Usenet-Crawler", + host: "https://www.usenet-crawler.com" + } + ], + [ + { + name: "Jackett/Cardigann", + host: "http://127.0.0.1:9117/torznab/YOURTRACKER", + search_ids: [], + searchTypes: [], + type: "jackett", + accessType: "internal" + } + ], + [ + { + accessType: "both", + categories: ["anime"], + downloadLimit: null, + enabled: false, + hitLimit: null, + hitLimitResetTime: null, + host: "https://anizb.org", + loadLimitOnRandom: null, + name: "anizb", + password: null, + preselect: true, + score: 0, + search_ids: [], + searchTypes: [], + showOnSearch: true, + timeout: null, + type: "anizb", + username: null + }, + { + accessType: "internal", + categories: [], + downloadLimit: null, + enabled: true, + hitLimit: null, + hitLimitResetTime: null, + host: "https://binsearch.info", + loadLimitOnRandom: null, + name: "Binsearch", + password: null, + preselect: true, + score: 0, + search_ids: [], + searchTypes: [], + showOnSearch: true, + timeout: null, + type: "binsearch", + username: null + }, + { + accessType: "internal", + categories: [], + downloadLimit: null, + enabled: true, + hitLimit: null, + hitLimitResetTime: null, + host: "https://www.nzbclub.com", + loadLimitOnRandom: null, + name: "NZBClub", + password: null, + preselect: true, + score: 0, + search_ids: [], + searchTypes: [], + showOnSearch: true, + timeout: null, + type: "nzbclub", + username: null + + }, + { + accessType: "internal", + categories: [], + downloadLimit: null, + enabled: true, + generalMinSize: 1, + hitLimit: null, + hitLimitResetTime: null, + host: "https://nzbindex.com", + loadLimitOnRandom: null, + name: "NZBIndex", + password: null, + preselect: true, + score: 0, + search_ids: [], + searchTypes: [], + showOnSearch: true, + timeout: null, + type: "nzbindex", + username: null + + } + ] + ]; + + + return presets; +} + +function getIndexerBoxFields(model, parentModel, isInitial, injector) { + var fieldset = []; + + fieldset.push({ + key: 'enabled', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Enabled' + } + }); + + if (model.type == 'newznab' || model.type == 'jackett') { + fieldset.push( + { + key: 'name', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Name', + required: true, + help: 'Used for identification. Changing the name will lose all history and stats!' + }, + validators: { + uniqueName: { + expression: function (viewValue) { + if (isInitial || viewValue != model.name) { + return _.pluck(parentModel, "name").indexOf(viewValue) == -1; + } + return true; + }, + message: '"Indexer \\"" + $viewValue + "\\" already exists"' + } + } + }) + } + if (model.type == 'newznab' || model.type == 'jackett') { + fieldset.push( + { + key: 'host', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Host', + required: true, + placeholder: 'http://www.someindexer.com' + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + } + ) + } + + if (model.type == 'newznab' || model.type == 'jackett') { + fieldset.push( + { + key: 'apikey', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'API Key' + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + } + ) + } + + fieldset.push( + { + key: 'score', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Priority', + required: true, + help: 'When duplicate search results are found the result from the indexer with the highest number will be selected' + } + }); + + fieldset.push( + { + key: 'timeout', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Timeout', + help: 'Supercedes the general timeout in "Searching"' + } + }); + + if (model.type == 'newznab' || model.type == 'jackett') { + fieldset.push( + { + key: 'hitLimit', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'API hit limit', + help: 'Maximum number of API hits since "API hit reset time"' + } + }, + { + key: 'downloadLimit', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Download limit', + help: 'When # of downloads since "Hit reset time" is reached indexer will not be searched.' + } + } + ); + fieldset.push( + { + key: 'loadLimitOnRandom', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Load limiting', + help: 'If set indexer will only be picked for one out of x API searches (on average)' + }, + validators: { + greaterThanZero: { + expression: function ($viewValue, $modelValue) { + var value = $modelValue || $viewValue; + return angular.isUndefined(value) || value === null || value === "" || value > 1; + }, + message: '"Value must be greater than 1"' + } + + } + }, + { + key: 'hitLimitResetTime', + type: 'horizontalInput', + hideExpression: '!model.hitLimit && !model.downloadLimit', + templateOptions: { + type: 'number', + label: 'Hit reset time', + help: 'UTC hour of day at which the API hit counter is reset (0==24). Leave empty for a rolling reset counter' + }, + validators: { + timeOfDay: { + expression: function ($viewValue, $modelValue) { + var value = $modelValue || $viewValue; + return value >= 0 && value <= 24; + }, + message: '$viewValue + " is not a valid hour of day (0-24)"' + } + + } + }); + } + if (model.type == 'newznab') { + fieldset.push( + { + key: 'username', + type: 'horizontalInput', + templateOptions: { + type: 'text', + required: false, + label: 'Username', + help: 'Only needed if indexer requires HTTP auth for API access (rare)' + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + } + ); + } + if (model.type == 'newznab') { + fieldset.push( + { + key: 'password', + type: 'horizontalInput', + hideExpression: '!model.username', + templateOptions: { + type: 'text', + required: false, + label: 'Password', + help: 'Only needed if indexer requires HTTP auth for API access (rare)' + } + } + ) + } + + if (model.type == 'newznab') { + fieldset.push( + { + key: 'userAgent', + type: 'horizontalInput', + templateOptions: { + type: 'text', + required: false, + label: 'User agent', + help: 'Rarely needed. Will supercede the one in the main searching settings' + } + } + ) + } + + + fieldset.push( + { + key: 'preselect', + type: 'horizontalSwitch', + hideExpression: 'model.accessType == "external"', + templateOptions: { + type: 'switch', + label: 'Preselect', + help: 'Preselect this indexer on the search page' + } + } + ); + if (model.type != "jackett") { + fieldset.push( + { + key: 'accessType', + type: 'horizontalSelect', + templateOptions: { + label: 'Enable for...', + options: [ + {name: 'Internal searches only', value: 'internal'}, + {name: 'API searches only', value: 'external'}, + {name: 'Internal and API searches', value: 'both'} + ] + } + } + ); + } + if (model.type != "anizb") { + fieldset.push( + { + key: 'categories', + type: 'horizontalMultiselect', + templateOptions: { + label: 'Enable for...', + help: 'You can decide that this indexer should only be used for certain categories', + options: [ + { + id: "movies", + label: "Movies" + }, + { + id: "movieshd", + label: "Movies HD" + }, + { + id: "moviessd", + label: "Movies SD" + }, + { + id: "tv", + label: "TV" + }, + { + id: "tvhd", + label: "TV HD" + }, + { + id: "tvsd", + label: "TV SD" + }, + { + id: "anime", + label: "Anime" + }, + { + id: "audio", + label: "Audio" + }, + { + id: "flac", + label: "Audio FLAC" + }, + { + id: "mp3", + label: "Audio MP3" + }, + { + id: "audiobook", + label: "Audiobook" + }, + { + id: "console", + label: "Console" + }, + { + id: "pc", + label: "PC" + }, + { + id: "xxx", + label: "XXX" + }, + { + id: "ebook", + label: "Ebook" + }, + { + id: "comic", + label: "Comic" + }], + getPlaceholder: function () { + return "All categories"; + } + } + } + ) + } + + if (model.type == 'newznab') { + fieldset.push( + { + key: 'search_ids', + type: 'horizontalMultiselect', + templateOptions: { + label: 'Search IDs', + options: [ + {label: 'TVDB', id: 'tvdbid'}, + {label: 'TVRage', id: 'rid'}, + {label: 'IMDB', id: 'imdbid'}, + {label: 'Trakt', id: 'traktid'}, + {label: 'TVMaze', id: 'tvmazeid'}, + {label: 'TMDB', id: 'tmdbid'} + ], + getPlaceholder: function (model) { + if (angular.isUndefined(model)) { + return "Unknown"; + } + return "None"; + } + } + } + ); + } + if (model.type == 'newznab' || model.type == 'jackett') { + fieldset.push( + { + key: 'searchTypes', + type: 'horizontalMultiselect', + templateOptions: { + label: 'Search types', + options: [ + {label: 'Movies', id: 'movie'}, + {label: 'TV', id: 'tvsearch'}, + {label: 'Ebooks', id: 'book'}, + {label: 'Audio', id: 'audio'} + ], + getPlaceholder: function (model) { + if (angular.isUndefined(model)) { + return "Unknown"; + } + return "None"; + } + } + } + ) + } + + if (model.type == 'newznab' || model.type == 'jackett') { + fieldset.push( + { + type: 'horizontalCheckCaps', + hideExpression: '!model.host || !model.apikey || !model.name', + templateOptions: { + label: 'Check capabilities', + help: 'Find out what search types the indexer supports. Done automatically for new indexers.' + } + } + ) + } + + if (model.type == 'nzbindex') { + fieldset.push( + { + key: 'generalMinSize', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Min size', + help: 'NZBIndex returns a lot of crap with small file sizes. Set this value and all smaller results will be filtered out no matter the category' + } + } + ); + } + + return fieldset; +} + + +function getDownloaderBoxFields(model, parentModel, isInitial) { + var fieldset = []; + + fieldset = _.union(fieldset, [ + { + key: 'enabled', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Enabled' + } + }, + { + key: 'name', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Name', + required: true + }, + validators: { + uniqueName: { + expression: function (viewValue) { + if (isInitial || viewValue != model.name) { + return _.pluck(parentModel, "name").indexOf(viewValue) == -1; + } + return true; + }, + message: '"Downloader \\"" + $viewValue + "\\" already exists"' + } + } + + }]); + + if (model.type == "nzbget") { + fieldset = _.union(fieldset, [{ + key: 'host', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Host', + required: true + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + + }, + { + key: 'port', + type: 'horizontalInput', + templateOptions: { + type: 'number', + label: 'Port', + placeholder: '5050', + required: true + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + }, { + key: 'ssl', + type: 'horizontalSwitch', + templateOptions: { + type: 'switch', + label: 'Use SSL' + } + }]); + } else if (model.type == "sabnzbd") { + fieldset.push({ + key: 'url', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'URL', + required: true + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + }); + } + fieldset = _.union(fieldset, [ + { + key: 'username', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Username', + help: model.type == "nzbget" ? 'Only alphanumeric usernames are guaranteed to work' : "" + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + }, + { + key: 'password', + type: 'horizontalInput', + templateOptions: { + type: 'password', + label: 'Password', + help: model.type == "nzbget" ? 'See username' : "" + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + } + ]); + + + if (model.type == "sabnzbd") { + fieldset.push({ + key: 'apikey', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'API Key' + }, + watcher: { + listener: function (field, newValue, oldValue, scope) { + if (newValue != oldValue) { + scope.$parent.needsConnectionTest = true; + } + } + } + }) + } + + fieldset = _.union(fieldset, [ + { + key: 'defaultCategory', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Default category', + help: 'When adding NZBs this category will be used instead of asking for the category. Write "No category" to let the downloader decide.', + placeholder: 'Ask when downloading' + } + }, + { + key: 'nzbaccesstype', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'NZB access type', + options: [ + {name: 'Proxy NZBs from indexer', value: 'serve'}, + {name: 'Redirect to the indexer', value: 'redirect'} + ], + help: "How external access to NZBs is provided. Redirecting is recommended." + } + }, + { + key: 'nzbAddingType', + type: 'horizontalSelect', + templateOptions: { + type: 'select', + label: 'NZB adding type', + options: [ + {name: 'Send link', value: 'link'}, + {name: 'Upload NZB', value: 'nzb'} + ], + help: "How NZBs are added to the downloader, either by sending a link to the NZB or by uploading the NZB data" + } + }, + { + key: 'iconCssClass', + type: 'horizontalInput', + templateOptions: { + type: 'text', + label: 'Icon CSS class', + help: 'Copy an icon name from http://fontawesome.io/examples/ (e.g. "film")', + placeholder: 'Default' + } + } + ]); + + return fieldset; +} + +function getDownloaderPresets() { + return [[ + { + host: "127.0.0.1", + name: "NZBGet", + password: "tegbzn6789x", + port: 6789, + ssl: false, + type: "nzbget", + username: "nzbgetx", + nzbAddingType: "link", + nzbaccesstype: "redirect", + iconCssClass: "", + downloadType: "nzb" + }, + { + url: "http://localhost:8086", + type: "sabnzbd", + name: "SABnzbd", + nzbAddingType: "link", + nzbaccesstype: "redirect", + iconCssClass: "", + downloadType: "nzb", + username: null, + password: null + } + ]]; +} + + +function handleConnectionCheckFail(ModalService, data, model, whatFailed, deferred) { + var message; + var yesText; + if (data.checked) { + message = "The connection to the " + whatFailed + " failed: " + data.message + "
Do you want to add it anyway?"; + yesText = "I know what I'm doing"; + } else { + message = "The connection to the " + whatFailed + " could not be tested, sorry"; + yesText = "I'll risk it"; + } + ModalService.open("Connection check failed", message, { + yes: { + onYes: function () { + deferred.resolve(); + }, + text: yesText + }, + no: { + onNo: function () { + model.enabled = false; + deferred.resolve(); + }, + text: "Add it, but disabled" + }, + cancel: { + onCancel: function () { + deferred.reject(); + }, + text: "Aahh, let me try again" + } + }); + +} + + +angular + .module('nzbhydraApp') + .factory('IndexerCheckBeforeCloseService', IndexerCheckBeforeCloseService); + +function IndexerCheckBeforeCloseService($q, ModalService, ConfigBoxService, blockUI, growl) { + + return { + check: checkBeforeClose + }; + + function checkBeforeClose(scope, model) { + var deferred = $q.defer(); + if (!scope.needsConnectionTest) { + checkCaps(scope, model).then(function () { + deferred.resolve(); + }, function () { + deferred.reject(); + }); + } else { + blockUI.start("Testing connection..."); + scope.spinnerActive = true; + var url = "internalapi/test_newznab"; + var settings = {host: model.host, apikey: model.apikey}; + if (angular.isDefined(model.username)) { + settings["username"] = model.username; + settings["password"] = model.password; + } + ConfigBoxService.checkConnection(url, JSON.stringify(settings)).then(function () { + checkCaps(scope, model).then(function () { + blockUI.reset(); + scope.spinnerActive = false; + growl.info("Connection to the indexer tested successfully"); + deferred.resolve(); + }, function () { + blockUI.reset(); + scope.spinnerActive = false; + deferred.reject(); + }); + }, + function (data) { + blockUI.reset(); + handleConnectionCheckFail(ModalService, data, model, "indexer", deferred); + }).finally(function () { + scope.spinnerActive = false; + blockUI.reset(); + }); + } + return deferred.promise; + + } + + function checkCaps(scope, model) { + var deferred = $q.defer(); + var url = "internalapi/test_caps"; + var settings = {indexer: model.name, apikey: model.apikey, host: model.host}; + if (angular.isDefined(model.username)) { + settings["username"] = model.username; + settings["password"] = model.password; + } + if (angular.isUndefined(model.search_ids) || angular.isUndefined(model.searchTypes)) { + + blockUI.start("New indexer found. Testing its capabilities. This may take a bit..."); + ConfigBoxService.checkCaps(url, JSON.stringify(settings), model).then( + function (data, model) { + blockUI.reset(); + scope.spinnerActive = false; + growl.info("Successfully tested capabilites of indexer"); + deferred.resolve(); + }, + function () { + blockUI.reset(); + scope.spinnerActive = false; + model.search_ids = []; + model.searchTypes = []; + ModalService.open("Error testing capabilities", "The capabilities of the indexer could not be checked. The indexer won't be used for ID based searches (IMDB, TVDB, etc.). You may repeat the check manually at any time."); + deferred.resolve(); + }).finally( + function () { + scope.spinnerActive = false; + }) + } else { + deferred.resolve(); + } + return deferred.promise; + + } +} +IndexerCheckBeforeCloseService.$inject = ["$q", "ModalService", "ConfigBoxService", "blockUI", "growl"]; + + +angular + .module('nzbhydraApp') + .factory('DownloaderCheckBeforeCloseService', DownloaderCheckBeforeCloseService); + +function DownloaderCheckBeforeCloseService($q, ConfigBoxService, growl, ModalService, blockUI) { + + return { + check: checkBeforeClose + }; + + function checkBeforeClose(scope, model) { + var deferred = $q.defer(); + if (!scope.isInitial && !scope.needsConnectionTest) { + deferred.resolve(); + } else { + scope.spinnerActive = true; + blockUI.start("Testing connection..."); + var url = "internalapi/test_downloader"; + ConfigBoxService.checkConnection(url, JSON.stringify(model)).then(function () { + blockUI.reset(); + scope.spinnerActive = false; + growl.info("Connection to the downloader tested successfully"); + deferred.resolve(); + }, + function (data) { + blockUI.reset(); + scope.spinnerActive = false; + handleConnectionCheckFail(ModalService, data, model, "downloader", deferred); + }).finally(function () { + scope.spinnerActive = false; + blockUI.reset(); + }); + } + return deferred.promise; + } + +} +DownloaderCheckBeforeCloseService.$inject = ["$q", "ConfigBoxService", "growl", "ModalService", "blockUI"]; + +angular + .module('nzbhydraApp') + .factory('ConfigModel', function () { + return {}; + }); + +angular + .module('nzbhydraApp') + .factory('ConfigWatcher', function () { + var $scope; + + return { + watch: watch + }; + + function watch(scope) { + $scope = scope; + $scope.$watchGroup(["config.main.host"], function () { + }, true); + } + }); + + +angular + .module('nzbhydraApp') + .controller('ConfigController', ConfigController); + +function ConfigController($scope, $http, activeTab, ConfigService, config, DownloaderCategoriesService, ConfigFields, ConfigModel, ModalService, RestartService, $state, growl) { + $scope.config = config; + $scope.submit = submit; + $scope.activeTab = activeTab; + + $scope.restartRequired = false; + $scope.ignoreSaveNeeded = false; + + ConfigFields.setRestartWatcher(function () { + $scope.restartRequired = true; + }); + + + function submit() { + if ($scope.form.$valid) { + + ConfigService.set($scope.config); + $scope.form.$setPristine(); + DownloaderCategoriesService.invalidate(); + if ($scope.restartRequired) { + ModalService.open("Restart required", "The changes you have made may require a restart to be effective.
Do you want to restart now?", { + yes: { + onYes: function () { + RestartService.restart(); + } + }, + no: { + onNo: function () { + $scope.restartRequired = false; + } + } + }); + } + } else { + growl.error("Config invalid. Please check your settings."); + + //Ridiculously hacky way to make the error messages appear + try { + if (angular.isDefined(form.$error.required)) { + _.each(form.$error.required, function (item) { + if (angular.isDefined(item.$error.required)) { + _.each(item.$error.required, function (item2) { + item2.$setTouched(); + }); + } + }); + } + angular.forEach($scope.form.$error.required, function (field) { + field.$setTouched(); + }); + } catch (err) { + // + } + + } + } + + ConfigModel = config; + + $scope.fields = ConfigFields.getFields($scope.config); + + $scope.allTabs = [ + { + active: false, + state: 'root.config.main', + name: 'Main', + model: ConfigModel.main, + fields: $scope.fields.main, + options: {} + }, + { + active: false, + state: 'root.config.auth', + name: 'Authorization', + model: ConfigModel.auth, + fields: $scope.fields.auth, + options: {} + }, + { + active: false, + state: 'root.config.searching', + name: 'Searching', + model: ConfigModel.searching, + fields: $scope.fields.searching, + options: {} + }, + { + active: false, + state: 'root.config.categories', + name: 'Categories', + model: ConfigModel.categories, + fields: $scope.fields.categories, + options: {} + }, + { + active: false, + state: 'root.config.downloader', + name: 'Downloaders', + model: ConfigModel.downloaders, + fields: $scope.fields.downloaders, + options: {} + }, + { + active: false, + state: 'root.config.indexers', + name: 'Indexers', + model: ConfigModel.indexers, + fields: $scope.fields.indexers, + options: {} + } + ]; + + $scope.isSavingNeeded = function () { + return $scope.form.$dirty && $scope.form.$valid && !$scope.ignoreSaveNeeded; + }; + + $scope.goToConfigState = function (index) { + $state.go($scope.allTabs[index].state, {activeTab: index}, {inherit: false, notify: true, reload: true}); + }; + + $scope.help = function () { + var tabName = $scope.allTabs[$scope.activeTab].name; + $http.get("internalapi/gethelp", {params: {id: tabName}}).then(function (result) { + var html = '' + result.data + ""; + ModalService.open(tabName + " - Help", html, {}, "lg"); + }, + function () { + growl.error("Error while loading help") + }) + }; + + $scope.$on('$stateChangeStart', + function (event, toState, toParams, fromState, fromParams) { + if ($scope.isSavingNeeded()) { + event.preventDefault(); + ModalService.open("Unsaved changed", "Do you want to save before leaving?", { + yes: { + onYes: function () { + $scope.submit(); + $state.go(toState); + }, + text: "Yes" + }, + no: { + onNo: function () { + $scope.ignoreSaveNeeded = true; + $scope.allTabs[$scope.activeTab].options.resetModel(); + $state.go(toState); + }, + text: "No" + }, + cancel: { + onCancel: function () { + event.preventDefault(); + }, + text: "Cancel" + } + }); + } + }) +} +ConfigController.$inject = ["$scope", "$http", "activeTab", "ConfigService", "config", "DownloaderCategoriesService", "ConfigFields", "ConfigModel", "ModalService", "RestartService", "$state", "growl"]; + + + +angular + .module('nzbhydraApp') + .factory('CategoriesService', CategoriesService); + +function CategoriesService(ConfigService) { + + return { + getByName: getByName, + getAll: getAll, + getDefault: getDefault + }; + + + function getByName(name) { + for (var category in ConfigService.getSafe().categories) { + category = ConfigService.getSafe().categories[category]; + if (category.name == name || category.pretty == name) { + return category; + } + } + } + + function getAll() { + return ConfigService.getSafe().categories; + } + + function getDefault() { + return getAll()[1]; + } + +} +CategoriesService.$inject = ["ConfigService"]; +angular + .module('nzbhydraApp') + .factory('BackupService', BackupService); + +function BackupService($http) { + + return { + getBackupsList: getBackupsList, + restoreFromFile: restoreFromFile + }; + + + function getBackupsList() { + return $http.get('internalapi/getbackups').then(function (data) { + return data.data.backups; + }); + } + + function restoreFromFile(filename) { + return $http.get('internalapi/restorefrombackupfile', {params:{filename: filename}}).then(function (response) { + return response; + }); + } + +} +BackupService.$inject = ["$http"]; //# sourceMappingURL=nzbhydra.js.map diff --git a/static/js/nzbhydra.js.map b/static/js/nzbhydra.js.map index e346ad7..3756d65 100644 --- a/static/js/nzbhydra.js.map +++ b/static/js/nzbhydra.js.map @@ -1 +1 @@ -{"version":3,"sources":["directives/updates.js","directives/title-row.js","directives/title-group.js","directives/tab-or-chart.js","directives/search-result.js","directives/search-result-non-title-columns.js","directives/on-finish-render.js","directives/log.js","directives/indexer-input.js","directives/focus-on.js","directives/duplicate-group.js","directives/download-nzbzip-button.js","directives/download-nzbs-button.js","directives/dataTableDirectives.js","directives/connection-test.js","directives/cfg-form-entry.js","directives/backup.js","directives/addable-nzbs.js","directives/addable-nzb.js","update-service.js","update-footer-controller.js","system-controller.js","stats-service.js","stats-controller.js","search-service.js","search-results-controller.js","search-history-service.js","search-history-controller.js","search-controller.js","restart-service.js","nzbhydra-control-service.js","nzb-download-service.js","modal.js","modal-service.js","login-controller.js","indexer-statuses-controller.js","index-controller.js","hydra-auth-service.js","header-controller.js","formly-config.js","file-download-service.js","downloader-categories-service.js","download-history-controller.js","config-service.js","config-fields-service.js","config-controller.js","categories-service.js","backup-service.js","nzbhydra.js","directives/keep-focus.js","generic-error-handler.js","filters.js"],"names":["hydraupdates","controller","$scope","UpdateService","$sce","loadingPromise","getVersions","then","data","currentVersion","repVersion","updateAvailable","changelog","getVersionHistory","versionHistory","trustAsHtml","update","showChangelog","showChanges","$inject","templateUrl","titleRow","titleRowController","duplicatesToShow","expanded","duplicates","length","console","log","scope","selected","rowIndex","titleGroup","$element","$attrs","titlesToShow","titles","slice","titleGroupExpanded","$on","event","args","stopPropagation","doShowDuplicates","internalRowIndex","multiElement","tabOrChart","transclude","chartSlot","tableSlot","restrict","replace","display","searchResult","groupingRowDuplicatesToShow","showDuplicates","hashGroupExpanded","hash","otherTitleRowsToShow","hashGroupDuplicatesToShow","hashGroup","toggleTitleGroup","require","otherColumns","$http","$templateCache","$compile","$window","$uibModal","growl","HydraAuthService","showNfo","resultItem","has_nfo","uri","URI","addQuery","searchResultId","get","toString","response","openModal","nfo","angular","isUndefined","message","info","error","size","modalInstance","open","template","NfoModalInstanceCtrl","resolve","result","downloadNzb","location","href","link","showDetailsDl","getUserInfos","maySeeDetailsDl","getNfoTooltip","element","attrs","cache","success","templateContent","replaceWith","$uibModalInstance","ok","close","item","cancel","dismiss","onFinishRender","$timeout","linkFunction","attr","$last","$evalAsync","hydralog","$interval","localStorageService","getAndShowLog","startUpdateLogInterval","tailInterval","doTailLog","scrollToBottom","doUpdateLog","logPromise","document","getElementById","scrollTop","toggleUpdate","set","toggleTailLog","indexerInput","isFocused","onFocus","onBlur","indexer","model","onClick","focusOn","directive","elem","e","name","focus","duplicateGroup","isBetween","num","betweena","betweenb","invertSelection","a","b","dontPush","index","_","indexOf","splice","push","Number","titlesExpanded","duplicatesExpanded","foo","duplicatesDisplayed","toggleTitleExpansion","$emit","toggleDuplicateExpansion","i","clickCheckbox","globalCheckboxIndex","currentTarget","dataset","checkboxIndex","checked","startIndex","endIndex","newValue","globalDuplicateGroupIndex","isFirstRow","displayTitleToggle","downloadNzbzipButton","FileDownloadService","download","searchResults","searchTitle","values","map","value","join","isDefined","filename","downloadFile","downloadNzbsButton","NzbDownloadService","downloaders","getEnabledDownloaders","downloader","added","of","columnFilterWrapper","vm","this","isActive","toggle","$broadcast","column","filterModel","controllerAs","bindToController","freetextFilter","onKeypress","keyEvent","which","filter","filtertype","checkboxesFilter","entries","preselect","invert","difference","apply","pluck","isBoolean","showInvert","booleanFilter","options","timeFilter","dateOptions","dateDisabled","formatYear","startingDay","formats","format","altInputFormats","openAfter","after","opened","openBefore","before","beforeDate","afterDate","columnSortable","sortMode","sort","connectionTest","showSuccess","testButton","removeClass","addClass","showError","testMessage","testConnection","url","params","myInjector","injector","type","username","password","apikey","host","port","ssl","text","id","cfgFormEntry","title","cfg","help","$eval","hydrabackup","BackupService","Upload","RequestsErrorHandler","RestartService","refreshBackupList","getBackupsList","backups","uploadActive","createAndDownloadBackupFile","moment","uploadBackupFile","file","errFiles","specificallyHandled","errFile","upload","content","restart","evt","progress","Math","min","parseInt","loaded","total","floor","restoreFromFile","addableNzbs","downloadType","addableNzb","iconCssClass","cssClass","add","blockUI","getChangelog","start","reset","UpdateFooterController","retrieveUpdateInfos","mayUpdate","maySeeAdmin","SystemController","$state","activeTab","ModalService","NzbHydraControlService","shutdown","deleteLogAndDatabase","yes","onYes","deleteLogAndDb","countdown","no","onCancel","forceUpdate","allTabs","active","state","goToSystemState","go","inherit","notify","reload","downloadDebuggingInfos","method","responseType","status","headers","config","createElement","blob","Blob","URL","createObjectURL","body","appendChild","click","removeChild","StatsService","getStats","getDownloadHistory","pageNumber","limit","sortModel","page","post","nzbDownloads","totalDownloads","StatsController","$filter","updateStats","getTime","stats","setStats","getChart","chartType","xKey","yKey","xAxisLabel","yAxisLabel","chart","height","margin","top","right","bottom","left","x","d","y","showValues","valueFormat","color","showControls","showLegend","duration","xAxis","axisLabel","tickFormat","rotateLabels","showMaxMin","yAxis","axisLabelDistance","tooltip","enabled","zoom","scaleExtent","useFixedDomain","useNiceScale","horizontalOff","verticalOff","unzoomEventType","key","bar","getResultsSharesChart","clipEdge","stacked","reduceXTicks","valueFormatter","avgIndexerSearchResultsShares","series","avgResultsShare","avgUniqueResults","initializingAfter","initializingBefore","subtract","toDate","$watch","avgResponseTimes","avgIndexerAccessSuccesses","indexerDownloadShares","downloadsPerHourOfDay","timeBasedDownloadStats","perHourOfDay","downloadsPerDayOfWeek","perDayOfWeek","searchesPerHourOfDay","timeBasedSearchStats","searchesPerDayOfWeek","numIndexers","avgResponseTimesChart","avgResponseTimesChartHeight","max","resultsSharesChart","rotation","downloadsPerHourOfDayChart","downloadsPerDayOfWeekChart","searchesPerHourOfDayChart","searchesPerDayOfWeekChart","indexerDownloadSharesChart","share","showLabels","labelThreshold","labelSunbeamLayout","legend","SearchService","search","category","query","tmdbid","imdbid","tvdbid","rid","season","episode","minsize","maxsize","minage","maxage","indexers","mode","isNumber","decodeURIComponent","lastExecutedQuery","processData","loadMore","offset","loadAll","removeQuery","results","indexersearches","rejected","resultsCount","each","ps","did_search","averageResponseTime","reduce","apiAccesses","memo","rp","response_time","lastResults","getLastResults","sumRejected","entry","SearchResultsController","$stateParams","$q","ConfigService","firstResultPredicate","sortPredicate","groupId","startBlocking","deferred","defer","promise","setSorting","predicate","reversedDefault","sortReversed","filteredResults","sortAndFilter","reversed","inlineFilter","titleFilter","toLowerCase","minSizeFilter","maxSizeFilter","filterByAgeAndSize","age_days","words","split","every","word","countFilteredOut","getItemIndexerDisplayState","indexerDisplayState","getCleanedTitle","createSortedHashgroups","createHashGroup","sortedHashGroup","sortBy","sortPredicateValue","grabs","indexerscore","getHashGroupFirstElementSortPredicate","chain","groupBy","getTitleGroupFirstElementsSortPredicate","filtered","reverse","lastClicked","stopBlocking","concat","countRejected","toggleIndexerDisplay","countResults","sorting","limitTo","indexerResultsInfo","groupExpanded","undefined","selectedIds","lastClickedValue","indexerStatusesExpanded","forEach","loadedResults","loaded_results","resort","toggleTitlegroupExpand","toggleIndexerStatuses","toggleDuplicatesDisplayed","originalEvent","newCheckedValue","shiftKey","filterRejectedZero","SearchHistoryService","getSearchHistoryForSearching","searchRequests","totalRequests","getSearchHistory","distinct","onlyCurrentUser","formatRequest","request","includeIdLink","includequery","describeEmptySearch","includeTitle","movietitle","tvtitle","identifier_key","identifier_value","author","getStateParamsForRepeatedSearch","stateParams","SearchHistoryController","history","pagination","current","categoriesForFiltering","getSafe","categories","label","pretty","preselectedTimeInterval","accessOptionsForFiltering","openSearch","formatQuery","formatAdditional","SearchController","CategoriesService","getNumberOrUndefined","number","isNaN","getSelectedIndexers","activatedIndexers","availableIndexers","activated","isIndexerPreselected","contains","getAvailableIndexers","safeConfig","showOnSearch","getAndSetSearchRequests","searchHistory","getAll","c","mayBeSelected","ignoreResults","getByName","getDefault","showIndexers","showIndexerSelection","firstStartThreeDaysAgo","firstStart","unix","doShowSurvey","pollShown","selection","onNo","typeAheadWait","selectedItem","autocompleteLoading","isAskById","supportsById","isById","autocompleteClass","searchCategory","searchModel","find","$viewValue","$setViewValue","searching","enableCategorySizes","getAutocomplete","val","input","startSearch","goToSearchUrl","encodeURIComponent","repeatSearch","selectAutocompleteItem","$item","startQuerySearch","autocompleteActive","seriesSelected","toggleIndexer","toggleAllIndexers","searchInputChanged","internalCaR","timer","DownloaderCategoriesService","sendNzbAddCommand","searchresultids","toJson","put","defaultCategory","openCategorySelection","service","headline","ModalInstanceCtrl","showCancel","showNo","targetScope","reason","GeneralModalService","msg","LoginController","user","login","setLoggedInByForm","IndexerStatusesController","statuses","indexerStatuses","isInPast","timestamp","Date","enable","indexerName","formatDate","dateFilter","hidePast","t","reformatDate","date","utc","local","IndexController","$rootScope","bootstrapped","isLoggedIn","setLoggedInByBasic","_maySeeStats","_maySeeAdmin","_username","loggedIn","askForPassword","logout","getUserRights","userInfos","maySeeStats","maySeeSearch","getUserName","HeaderController","$location","authConfigured","showAdmin","adminRestricted","showStats","statsRestricted","showLoginout","loginlogoutText","oldUserName","searchRestricted","bases","getElementsByTagName","baseHref","loginout","authType","window","old_username","ConfigBoxService","checkConnection","settings","reject","checkCaps","search_ids","supportedIds","searchTypes","supportedTypes","supportsAllCategories","supportedCategories","animeCategory","audiobookCategory","comicCategory","ebookCategory","magazineCategory","backend","getCategories","categoriesResponse","select","selectedCategory","invalidate","DownloadHistoryController","downloads","indexersForFiltering","successfulForFiltering","reformatDateEpoch","$cacheFactory","newConfig","successresponse","invalidateSafe","errorresponse","maySeeAdminArea","configResponse","ConfigFields","$injector","setRestartWatcher","restartWatcherFunction","restartWatcher","restartListener","field","oldValue","ipValidator","expression","$modelValue","test","regexValidator","regex","prefixViewValue","getCategoryFields","fields","templateOptions","categoryFields","placeholder","wrapper","fieldGroup","addonRight","required","parsers","arr","getFields","rootModel","main","validators","ipAddress","watcher","listener","urlBase","hideExpression","defaultModel","entryTemplateUrl","presets","getDownloaderPresets","checkAddingAllowed","presetsOnly","addNewText","fieldsFunction","getDownloaderBoxFields","allowDeleteFunction","checkBeforeClose","DownloaderCheckBeforeCloseService","check","resetFunction","resetModel","downloadLimit","loadLimitOnRandom","hitLimit","hitLimitResetTime","timeout","score","accessType","userAgent","getIndexerPresets","existingIndexers","preset","any","existingEntry","getIndexerBoxFields","IndexerCheckBeforeCloseService","auth","btnText","altLegendText","configuredIndexers","generalMinSize","parentModel","isInitial","fieldset","uniqueName","viewValue","$parent","needsConnectionTest","greaterThanZero","timeOfDay","getPlaceholder","union","nzbAddingType","nzbaccesstype","handleConnectionCheckFail","whatFailed","yesText","spinnerActive","JSON","stringify","ConfigController","ConfigModel","submit","form","$valid","$setPristine","restartRequired","$error","item2","$setTouched","err","ignoreSaveNeeded","isSavingNeeded","$dirty","goToConfigState","tabName","html","toState","toParams","fromState","fromParams","preventDefault","nzbhydraapp","module","$stateProvider","$urlRouterProvider","$locationProvider","blockUIConfig","$urlMatcherFactoryProvider","localStorageServiceProvider","loginRequired","allowed","autoBlock","strictMode","otherwise","abstract","views","header","footer","container@","$title","stats@root.stats","askAdmin","results@root.search","details","html5Mode","setPrefix","setNotify","paginationTemplateProvider","setPath","cfpLoadingBarProvider","latencyThreshold","growlProvider","globalTimeToLive","globalPosition","bind","$apply","ngEnter","factory","run","Object","keys","dereferer","escape","$provide","decorator","$delegate","exception","cause","stack","line","trim","mixin","isNullOrEmpty","string","isNull","isString","sessionInjector","$httpProvider","interceptors","_scope","_element","on","eventFocus","eventFocusId","off","ngModel","$parsers","unshift","HEADER_NAME","specificallyHandleInProgress","specificallyHandledBlock","responseError","rejection","shouldHandle","statusText","addHeaderToConfig","decorateRegularCall","decorateDataCall","copyNotOverriddenAttributes","newHttp","hasOwnProperty","arguments","head","jsonp","hashCode","s","charCodeAt","formlyConfig","formlyValidationMessages","addStringMessage","extras","errorExistsAndShouldBeVisibleExpression","formlyConfigProvider","removeChromeAutoComplete","explicitAsync","disableWarnings","onProd","setWrapper","setType","extends","generate","chars","random","uniqueId","defaultOptions","className","noRow","optionsAttr","ngOptions","valueProp","labelProp","copyFields","copy","repeatfields","addNew","repeatsection","newsection","remove","$index","formOptions","formState","clear","mapObject","_showBox","callback","$setDirty","showBox","addEntry","entriesCollection","extend","isSubmitted","allowDelete","obSubmit","deleteEntry","filters","bytes","filesize","trustAs","watch","$watchGroup"],"mappings":"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","file":"nzbhydra.js","sourcesContent":["angular\r\n .module('nzbhydraApp')\r\n .directive('hydraupdates', hydraupdates);\r\n\r\nfunction hydraupdates() {\r\n controller.$inject = [\"$scope\", \"UpdateService\", \"$sce\"];\r\n return {\r\n templateUrl: 'static/html/directives/updates.html',\r\n controller: controller\r\n };\r\n\r\n function controller($scope, UpdateService, $sce) {\r\n\r\n $scope.loadingPromise = UpdateService.getVersions().then(function (data) {\r\n $scope.currentVersion = data.data.currentVersion;\r\n $scope.repVersion = data.data.repVersion;\r\n $scope.updateAvailable = data.data.updateAvailable;\r\n $scope.changelog = data.data.changelog;\r\n });\r\n \r\n UpdateService.getVersionHistory().then(function(data) {\r\n $scope.versionHistory = $sce.trustAsHtml(data.data.versionHistory);\r\n });\r\n\r\n $scope.update = function () {\r\n UpdateService.update();\r\n };\r\n\r\n $scope.showChangelog = function () {\r\n UpdateService.showChanges($scope.changelog);\r\n };\r\n \r\n \r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('titleRow', titleRow);\r\n\r\nfunction titleRow() {\r\n return {\r\n templateUrl: 'static/html/directives/title-row.html',\r\n scope: {\r\n duplicates: \"<\",\r\n selected: \"<\",\r\n rowIndex: \"@\"\r\n },\r\n controller: ['$scope', '$element', '$attrs', titleRowController]\r\n };\r\n\r\n function titleRowController($scope) {\r\n $scope.expanded = false;\r\n console.log(\"Building title row\");\r\n $scope.duplicatesToShow = duplicatesToShow;\r\n function duplicatesToShow() {\r\n if ($scope.expanded && $scope.duplicates.length > 1) {\r\n console.log(\"Showing all duplicates in group\");\r\n return $scope.duplicates;\r\n } else {\r\n console.log(\"Showing first duplicate in group\");\r\n return [$scope.duplicates[0]];\r\n }\r\n }\r\n\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('titleGroup', titleGroup);\r\n\r\nfunction titleGroup() {\r\n return {\r\n templateUrl: 'static/html/directives/title-group.html',\r\n scope: {\r\n titles: \"<\",\r\n selected: \"=\",\r\n rowIndex: \"<\",\r\n doShowDuplicates: \"<\",\r\n internalRowIndex: \"@\"\r\n },\r\n controller: ['$scope', '$element', '$attrs', controller],\r\n multiElement: true\r\n };\r\n\r\n function controller($scope, $element, $attrs) {\r\n $scope.expanded = false;\r\n $scope.titleGroupExpanded = false;\r\n\r\n $scope.$on(\"toggleTitleExpansion\", function (event, args) {\r\n $scope.titleGroupExpanded = args;\r\n event.stopPropagation();\r\n });\r\n\r\n\r\n $scope.titlesToShow = titlesToShow;\r\n function titlesToShow() {\r\n return $scope.titles.slice(1);\r\n }\r\n \r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('tabOrChart', tabOrChart);\r\n\r\nfunction tabOrChart() {\r\n return {\r\n templateUrl: 'static/html/directives/tab-or-chart.html',\r\n transclude: {\r\n \"chartSlot\": \"chart\",\r\n \"tableSlot\": \"table\"\r\n },\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n display: \"@\"\r\n }\r\n\r\n };\r\n\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('searchResult', searchResult);\r\n\r\nfunction searchResult() {\r\n return {\r\n templateUrl: 'static/html/directives/search-result.html',\r\n require: '^titleGroup',\r\n scope: {\r\n titleGroup: \"<\",\r\n showDuplicates: \"<\",\r\n selected: \"<\",\r\n rowIndex: \"<\"\r\n },\r\n controller: ['$scope', '$element', '$attrs', controller],\r\n multiElement: true\r\n };\r\n\r\n function controller($scope, $element, $attrs) {\r\n $scope.titleGroupExpanded = false;\r\n $scope.hashGroupExpanded = {};\r\n\r\n $scope.toggleTitleGroup = function () {\r\n $scope.titleGroupExpanded = !$scope.titleGroupExpanded;\r\n if (!$scope.titleGroupExpanded) {\r\n $scope.hashGroupExpanded[$scope.titleGroup[0][0].hash] = false; //Also collapse the first title's duplicates\r\n }\r\n };\r\n\r\n $scope.groupingRowDuplicatesToShow = groupingRowDuplicatesToShow;\r\n function groupingRowDuplicatesToShow() {\r\n if ($scope.showDuplicates && $scope.titleGroup[0].length > 1 && $scope.hashGroupExpanded[$scope.titleGroup[0][0].hash]) {\r\n return $scope.titleGroup[0].slice(1);\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n //
0 && titleGroupExpanded\" class=\"search-results-row\">\r\n $scope.otherTitleRowsToShow = otherTitleRowsToShow;\r\n function otherTitleRowsToShow() {\r\n if ($scope.titleGroup.length > 1 && $scope.titleGroupExpanded) {\r\n return $scope.titleGroup.slice(1);\r\n } else {\r\n return [];\r\n }\r\n }\r\n \r\n $scope.hashGroupDuplicatesToShow = hashGroupDuplicatesToShow;\r\n function hashGroupDuplicatesToShow(hashGroup) {\r\n if ($scope.showDuplicates && $scope.hashGroupExpanded[hashGroup[0].hash]) {\r\n return hashGroup.slice(1);\r\n } else {\r\n return [];\r\n }\r\n }\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('otherColumns', otherColumns);\r\n\r\nfunction otherColumns($http, $templateCache, $compile, $window) {\r\n controller.$inject = [\"$scope\", \"$http\", \"$uibModal\", \"growl\", \"HydraAuthService\"];\r\n return {\r\n scope: {\r\n result: \"<\"\r\n },\r\n multiElement: true,\r\n\r\n link: function (scope, element, attrs) {\r\n $http.get('static/html/directives/search-result-non-title-columns.html', {cache: $templateCache}).success(function (templateContent) {\r\n element.replaceWith($compile(templateContent)(scope));\r\n });\r\n\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, $http, $uibModal, growl, HydraAuthService) {\r\n\r\n $scope.showDetailsDl = HydraAuthService.getUserInfos().maySeeDetailsDl;\r\n\r\n $scope.showNfo = showNfo;\r\n function showNfo(resultItem) {\r\n if (resultItem.has_nfo == 0) {\r\n return;\r\n }\r\n var uri = new URI(\"internalapi/getnfo\");\r\n uri.addQuery(\"searchresultid\", resultItem.searchResultId);\r\n return $http.get(uri.toString()).then(function (response) {\r\n if (response.data.has_nfo) {\r\n $scope.openModal(\"lg\", response.data.nfo)\r\n } else {\r\n if (!angular.isUndefined(resultItem.message)) {\r\n growl.error(resultItem.message);\r\n } else {\r\n growl.info(\"No NFO available\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n $scope.openModal = openModal;\r\n\r\n function openModal(size, nfo) {\r\n var modalInstance = $uibModal.open({\r\n template: '
',\r\n controller: NfoModalInstanceCtrl,\r\n size: size,\r\n resolve: {\r\n nfo: function () {\r\n return nfo;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then();\r\n }\r\n \r\n $scope.downloadNzb = downloadNzb;\r\n \r\n function downloadNzb(resultItem) {\r\n //href = \"{{ result.link }}\"\r\n $window.location.href = resultItem.link;\r\n }\r\n\r\n $scope.getNfoTooltip = function() {\r\n if ($scope.result.has_nfo == 1) {\r\n return \"Show NFO\"\r\n } else if ($scope.result.has_nfo == 2) {\r\n return \"Try to load NFO (may not be available)\";\r\n } else {\r\n return \"No NFO available\";\r\n }\r\n }\r\n }\r\n}\r\notherColumns.$inject = [\"$http\", \"$templateCache\", \"$compile\", \"$window\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .controller('NfoModalInstanceCtrl', NfoModalInstanceCtrl);\r\n\r\nfunction NfoModalInstanceCtrl($scope, $uibModalInstance, nfo) {\r\n\r\n $scope.nfo = nfo;\r\n\r\n $scope.ok = function () {\r\n $uibModalInstance.close($scope.selected.item);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n}\r\nNfoModalInstanceCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"nfo\"];","//Can be used in an ng-repeat directive to call a function when the last element was rendered\r\n//We use it to mark the end of sorting / filtering so we can stop blocking the UI\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .directive('onFinishRender', onFinishRender);\r\n\r\nfunction onFinishRender($timeout) {\r\n function linkFunction(scope, element, attr) {\r\n \r\n if (scope.$last === true) {\r\n $timeout(function () {\r\n scope.$evalAsync(attr.onFinishRender);\r\n });\r\n }\r\n }\r\n\r\n return {\r\n link: linkFunction\r\n }\r\n}\r\nonFinishRender.$inject = [\"$timeout\"];","angular\r\n .module('nzbhydraApp')\r\n .directive('hydralog', hydralog);\r\n\r\nfunction hydralog() {\r\n controller.$inject = [\"$scope\", \"$http\", \"$sce\", \"$interval\", \"localStorageService\"];\r\n return {\r\n templateUrl: \"static/html/directives/log.html\",\r\n controller: controller\r\n };\r\n\r\n function controller($scope, $http, $sce, $interval, localStorageService) {\r\n $scope.tailInterval = null;\r\n $scope.doUpdateLog = localStorageService.get(\"doUpdateLog\") != null ? localStorageService.get(\"doUpdateLog\") : false;\r\n $scope.doTailLog = localStorageService.get(\"doTailLog\") != null ? localStorageService.get(\"doTailLog\") : false;\r\n\r\n\r\n function getAndShowLog() {\r\n return $http.get(\"internalapi/getlogs\").success(function (data) {\r\n $scope.log = $sce.trustAsHtml(data.log);\r\n });\r\n }\r\n\r\n $scope.logPromise = getAndShowLog();\r\n\r\n $scope.scrollToBottom = function () {\r\n document.getElementById(\"logfile\").scrollTop = 10000000;\r\n document.getElementById(\"logfile\").scrollTop = 100001000;\r\n };\r\n\r\n $scope.update = function () {\r\n getAndShowLog();\r\n $scope.scrollToBottom();\r\n };\r\n\r\n function startUpdateLogInterval() {\r\n $scope.tailInterval = $interval(function () {\r\n getAndShowLog();\r\n if ($scope.doTailLog) {\r\n $scope.scrollToBottom();\r\n }\r\n }, 5000);\r\n }\r\n\r\n $scope.toggleUpdate = function() {\r\n if ($scope.doUpdateLog) {\r\n startUpdateLogInterval();\r\n } else if ($scope.tailInterval != null) {\r\n console.log(\"Cancelling\");\r\n $interval.cancel($scope.tailInterval);\r\n localStorageService.set(\"doTailLog\", false);\r\n $scope.doTailLog = false;\r\n }\r\n localStorageService.set(\"doUpdateLog\", $scope.doUpdateLog);\r\n };\r\n\r\n $scope.toggleTailLog = function () {\r\n localStorageService.set(\"doTailLog\", $scope.doTailLog);\r\n };\r\n\r\n if ($scope.doUpdateLog) {\r\n startUpdateLogInterval();\r\n }\r\n\r\n $scope.$on(\r\n \"$destroy\",\r\n function () {\r\n if ($scope.tailInterval !== null) {\r\n $interval.cancel($scope.tailInterval);\r\n }\r\n }\r\n );\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('indexerInput', indexerInput);\r\n\r\nfunction indexerInput() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n templateUrl: 'static/html/directives/indexer-input.html',\r\n scope: {\r\n indexer: \"=\",\r\n model: \"=\",\r\n onClick: \"=\"\r\n },\r\n replace: true,\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n $scope.isFocused = false;\r\n \r\n $scope.onFocus = function() {\r\n $scope.isFocused = true;\r\n };\r\n\r\n $scope.onBlur = function () {\r\n $scope.isFocused = false; \r\n };\r\n \r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp').directive('focusOn', focusOn);\r\n\r\nfunction focusOn() {\r\n return directive;\r\n function directive(scope, elem, attr) {\r\n scope.$on('focusOn', function (e, name) {\r\n if (name === attr.focusOn) {\r\n elem[0].focus();\r\n }\r\n });\r\n }\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('duplicateGroup', duplicateGroup);\r\n\r\nfunction duplicateGroup() {\r\n titleRowController.$inject = [\"$scope\", \"localStorageService\"];\r\n return {\r\n templateUrl: 'static/html/directives/duplicate-group.html',\r\n scope: {\r\n duplicates: \"<\",\r\n selected: \"=\",\r\n isFirstRow: \"<\",\r\n rowIndex: \"<\",\r\n displayTitleToggle: \"<\",\r\n internalRowIndex: \"@\"\r\n },\r\n controller: titleRowController\r\n };\r\n\r\n function titleRowController($scope, localStorageService) {\r\n $scope.internalRowIndex = Number($scope.internalRowIndex);\r\n $scope.rowIndex = Number($scope.rowIndex);\r\n $scope.titlesExpanded = false;\r\n $scope.duplicatesExpanded = false;\r\n $scope.foo = {\r\n duplicatesDisplayed: localStorageService.get(\"duplicatesDisplayed\") != null ? localStorageService.get(\"duplicatesDisplayed\") : false\r\n };\r\n $scope.duplicatesToShow = duplicatesToShow;\r\n function duplicatesToShow() {\r\n return $scope.duplicates.slice(1);\r\n }\r\n\r\n $scope.toggleTitleExpansion = function () {\r\n $scope.titlesExpanded = !$scope.titlesExpanded;\r\n $scope.$emit(\"toggleTitleExpansion\", $scope.titlesExpanded);\r\n };\r\n\r\n $scope.toggleDuplicateExpansion = function () {\r\n $scope.duplicatesExpanded = !$scope.duplicatesExpanded;\r\n };\r\n\r\n $scope.$on(\"invertSelection\", function () {\r\n for (var i = 0; i < $scope.duplicates.length; i++) {\r\n if ($scope.duplicatesExpanded) {\r\n invertSelection($scope.selected, $scope.duplicates[i]);\r\n } else {\r\n if (i > 0) {\r\n //Always remove duplicates that aren't displayed\r\n invertSelection($scope.selected, $scope.duplicates[i], true);\r\n } else {\r\n invertSelection($scope.selected, $scope.duplicates[i]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n $scope.$on(\"duplicatesDisplayed\", function (event, args) {\r\n $scope.foo.duplicatesDisplayed = args;\r\n });\r\n\r\n $scope.clickCheckbox = function (event) {\r\n var globalCheckboxIndex = $scope.rowIndex * 1000 + $scope.internalRowIndex * 100 + Number(event.currentTarget.dataset.checkboxIndex);\r\n console.log(globalCheckboxIndex);\r\n $scope.$emit(\"checkboxClicked\", event, globalCheckboxIndex, event.currentTarget.checked);\r\n };\r\n\r\n function isBetween(num, betweena, betweenb) {\r\n return (betweena <= num && num <= betweenb) || (betweena >= num && num >= betweenb);\r\n }\r\n\r\n $scope.$on(\"shiftClick\", function (event, startIndex, endIndex, newValue) {\r\n var globalDuplicateGroupIndex = $scope.rowIndex * 1000 + $scope.internalRowIndex * 100;\r\n if (isBetween(globalDuplicateGroupIndex, startIndex, endIndex)) {\r\n\r\n for (var i = 0; i < $scope.duplicates.length; i++) {\r\n if (isBetween(globalDuplicateGroupIndex + i, startIndex, endIndex)) {\r\n if (i == 0 || $scope.duplicatesExpanded) {\r\n console.log(\"Indirectly clicked row with global index \" + (globalDuplicateGroupIndex + i) + \" setting new checkbox value to \" + newValue);\r\n var index = _.indexOf($scope.selected, $scope.duplicates[i]);\r\n if (index == -1 && newValue) {\r\n console.log(\"Adding to selection\");\r\n $scope.selected.push($scope.duplicates[i]);\r\n } else if (index > -1 && !newValue) {\r\n $scope.selected.splice(index, 1);\r\n console.log(\"Removing from selection\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n function invertSelection(a, b, dontPush) {\r\n var index = _.indexOf(a, b);\r\n if (index > -1) {\r\n a.splice(index, 1);\r\n } else {\r\n if (!dontPush)\r\n a.push(b);\r\n }\r\n }\r\n }\r\n\r\n\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('downloadNzbzipButton', downloadNzbzipButton);\r\n\r\nfunction downloadNzbzipButton() {\r\n controller.$inject = [\"$scope\", \"growl\", \"FileDownloadService\"];\r\n return {\r\n templateUrl: 'static/html/directives/download-nzbzip-button.html',\r\n require: ['^searchResults'],\r\n scope: {\r\n searchResults: \"<\",\r\n searchTitle: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, growl, FileDownloadService) {\r\n\r\n $scope.download = function () {\r\n if (angular.isUndefined($scope.searchResults) || $scope.searchResults.length == 0) {\r\n growl.info(\"You should select at least one result...\");\r\n } else {\r\n\r\n var values = _.map($scope.searchResults, function (value) {\r\n return value.searchResultId;\r\n });\r\n var link = \"getnzbzip?searchresultids=\" + values.join(\"|\");\r\n var searchTitle;\r\n if (angular.isDefined($scope.searchTitle)) {\r\n searchTitle = \" for \" + $scope.searchTitle;\r\n } else {\r\n searchTitle = \"\";\r\n }\r\n var filename = \"NZBHydra NZBs\" + searchTitle + \".zip\";\r\n FileDownloadService.downloadFile(link, filename);\r\n }\r\n }\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('downloadNzbsButton', downloadNzbsButton);\r\n\r\nfunction downloadNzbsButton() {\r\n controller.$inject = [\"$scope\", \"NzbDownloadService\", \"growl\"];\r\n return {\r\n templateUrl: 'static/html/directives/download-nzbs-button.html',\r\n require: ['^searchResults'],\r\n scope: {\r\n searchResults: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, NzbDownloadService, growl) {\r\n\r\n $scope.downloaders = NzbDownloadService.getEnabledDownloaders();\r\n\r\n $scope.download = function (downloader) {\r\n if (angular.isUndefined($scope.searchResults) || $scope.searchResults.length == 0) {\r\n growl.info(\"You should select at least one result...\");\r\n } else {\r\n\r\n var values = _.map($scope.searchResults, function (value) {\r\n return value.searchResultId;\r\n });\r\n\r\n NzbDownloadService.download(downloader, values).then(function (response) {\r\n if (response.data.success) {\r\n growl.info(\"Successfully added \" + response.data.added + \" of \" + response.data.of + \" NZBs\");\r\n } else {\r\n growl.error(\"Error while adding NZBs\");\r\n }\r\n }, function () {\r\n growl.error(\"Error while adding NZBs\");\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp').directive(\"columnFilterWrapper\", columnFilterWrapper);\r\n\r\nfunction columnFilterWrapper() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n restrict: \"E\",\r\n templateUrl: 'static/html/dataTable/columnFilterOuter.html',\r\n transclude: true,\r\n controllerAs: 'columnFilterWrapperCtrl',\r\n scope: true,\r\n bindToController: true,\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n var vm = this;\r\n\r\n vm.open = false;\r\n vm.isActive = false;\r\n\r\n vm.toggle = function () {\r\n vm.open = !vm.open;\r\n if (vm.open) {\r\n $scope.$broadcast(\"opened\");\r\n }\r\n };\r\n\r\n $scope.$on(\"filter\", function (event, column, filterModel, isActive) {\r\n vm.open = false;\r\n vm.isActive = isActive;\r\n })\r\n }\r\n}\r\n\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"freetextFilter\", freetextFilter);\r\n\r\nfunction freetextFilter() {\r\n controller.$inject = [\"$scope\", \"focus\"];\r\n return {\r\n template: '',\r\n require: \"^columnFilterWrapper\",\r\n controllerAs: 'innerController',\r\n scope: {\r\n column: \"@\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, focus) {\r\n $scope.data = {};\r\n\r\n $scope.$on(\"opened\", function () {\r\n focus(\"freetext-filter-input\");\r\n });\r\n\r\n $scope.onKeypress = function (keyEvent) {\r\n if (keyEvent.which === 13) {\r\n $scope.$emit(\"filter\", $scope.column, {filter: $scope.data.filter, filtertype: \"freetext\"}, angular.isDefined($scope.data.filter) && $scope.data.filter.length > 0);\r\n }\r\n }\r\n }\r\n}\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"checkboxesFilter\", checkboxesFilter);\r\n\r\nfunction checkboxesFilter() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n template: '',\r\n controllerAs: 'checkboxesFilterController',\r\n scope: {\r\n column: \"@\",\r\n entries: \"<\",\r\n preselect: \"<\",\r\n showInvert: \"<\",\r\n isBoolean: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n $scope.selected = {\r\n entries: []\r\n };\r\n\r\n if ($scope.preselect) {\r\n $scope.selected.entries = $scope.entries.slice();\r\n }\r\n\r\n $scope.invert = function () {\r\n $scope.selected.entries = _.difference($scope.entries, $scope.selected.entries);\r\n };\r\n\r\n $scope.apply = function () {\r\n console.log($scope.selected);\r\n var isActive = $scope.selected.entries.length < $scope.entries.length;\r\n $scope.$emit(\"filter\", $scope.column, {filter: _.pluck($scope.selected.entries, \"id\"), filtertype: \"checkboxes\", isBoolean: $scope.isBoolean}, isActive)\r\n }\r\n }\r\n}\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"booleanFilter\", booleanFilter);\r\n\r\nfunction booleanFilter() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n template: '',\r\n controllerAs: 'booleanFilterController',\r\n scope: {\r\n column: \"@\",\r\n options: \"<\",\r\n preselect: \"@\"\r\n },\r\n controller: controller\r\n };\r\n\r\n\r\n function controller($scope) {\r\n $scope.selected = {value: $scope.options[$scope.preselect].value};\r\n\r\n $scope.apply = function () {\r\n console.log($scope.selected);\r\n $scope.$emit(\"filter\", $scope.column, {filter: $scope.selected.value, filtertype: \"boolean\"}, $scope.selected.value != $scope.options[0].value)\r\n }\r\n }\r\n}\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"timeFilter\", timeFilter);\r\n\r\nfunction timeFilter() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n template: '',\r\n scope: {\r\n column: \"@\",\r\n selected: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n\r\n $scope.dateOptions = {\r\n dateDisabled: false,\r\n formatYear: 'yy',\r\n startingDay: 1\r\n };\r\n\r\n\r\n $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r\n $scope.format = $scope.formats[0];\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.openAfter = function () {\r\n $scope.after.opened = true;\r\n };\r\n\r\n $scope.openBefore = function () {\r\n $scope.before.opened = true;\r\n };\r\n\r\n $scope.after = {\r\n opened: false\r\n };\r\n\r\n $scope.before = {\r\n opened: false\r\n };\r\n\r\n $scope.apply = function () {\r\n var isActive = $scope.selected.beforeDate || $scope.selected.afterDate;\r\n $scope.$emit(\"filter\", $scope.column, {filter: {after: $scope.selected.afterDate, before: $scope.selected.beforeDate}, filtertype: \"time\"}, isActive)\r\n }\r\n }\r\n}\r\n\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"columnSortable\", columnSortable);\r\n\r\nfunction columnSortable() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n restrict: \"E\",\r\n templateUrl: \"static/html/dataTable/columnSortable.html\",\r\n transclude: true,\r\n scope: {\r\n sortMode: \"@\", //0: no sorting, 1: asc, 2: desc\r\n column: \"@\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n\r\n if (angular.isUndefined($scope.sortMode)) {\r\n $scope.sortMode = 0;\r\n }\r\n\r\n $scope.$on(\"newSortColumn\", function(event, column) {\r\n if (column != $scope.column) {\r\n $scope.sortMode = 0;\r\n }\r\n });\r\n\r\n $scope.sort = function () {\r\n $scope.sortMode = ($scope.sortMode + 1) % 3;\r\n $scope.$emit(\"sort\", $scope.column, $scope.sortMode)\r\n };\r\n\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('connectionTest', connectionTest);\r\n\r\nfunction connectionTest() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n templateUrl: 'static/html/directives/connection-test.html',\r\n require: ['^type', '^data'],\r\n scope: {\r\n type: \"=\",\r\n id: \"=\",\r\n data: \"=\",\r\n downloader: \"=\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n $scope.message = \"\";\r\n console.log($scope);\r\n\r\n var testButton = \"#button-test-connection\";\r\n var testMessage = \"#message-test-connection\";\r\n\r\n function showSuccess() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-danger\");\r\n angular.element(testButton).addClass(\"btn-success\");\r\n }\r\n\r\n function showError() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-success\");\r\n angular.element(testButton).addClass(\"btn-danger\");\r\n }\r\n\r\n $scope.testConnection = function () {\r\n angular.element(testButton).addClass(\"glyphicon-refresh-animate\");\r\n var myInjector = angular.injector([\"ng\"]);\r\n var $http = myInjector.get(\"$http\");\r\n var url;\r\n var params;\r\n if ($scope.type == \"downloader\") {\r\n url = \"internalapi/test_downloader\";\r\n params = {name: $scope.downloader, username: $scope.data.username, password: $scope.data.password};\r\n if ($scope.downloader == \"sabnzbd\") {\r\n params.apikey = $scope.data.apikey;\r\n params.url = $scope.data.url;\r\n } else {\r\n params.host = $scope.data.host;\r\n params.port = $scope.data.port;\r\n params.ssl = $scope.data.ssl;\r\n }\r\n } else if ($scope.data.type == \"newznab\") {\r\n url = \"internalapi/test_newznab\";\r\n params = {host: $scope.data.host, apikey: $scope.data.apikey};\r\n if (angular.isDefined($scope.data.username)) {\r\n params[\"username\"] = $scope.data.username;\r\n params[\"password\"] = $scope.data.password;\r\n }\r\n }\r\n $http.get(url, {params: params}).success(function (result) {\r\n //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click \r\n if (result.result) {\r\n angular.element(testMessage).text(\"\");\r\n showSuccess();\r\n } else {\r\n angular.element(testMessage).text(result.message);\r\n showError();\r\n }\r\n\r\n }).error(function () {\r\n angular.element(testMessage).text(result.message);\r\n showError();\r\n }).finally(function () {\r\n angular.element(testButton).removeClass(\"glyphicon-refresh-animate\");\r\n })\r\n }\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('cfgFormEntry', cfgFormEntry);\r\n\r\nfunction cfgFormEntry() {\r\n return {\r\n templateUrl: 'static/html/directives/cfg-form-entry.html',\r\n require: [\"^title\", \"^cfg\"],\r\n scope: {\r\n title: \"@\",\r\n cfg: \"=\",\r\n help: \"@\",\r\n type: \"@?\",\r\n options: \"=?\"\r\n },\r\n controller: [\"$scope\", \"$element\", \"$attrs\", function ($scope, $element, $attrs) {\r\n $scope.type = angular.isDefined($scope.type) ? $scope.type : 'text';\r\n $scope.options = angular.isDefined($scope.type) ? $scope.$eval($attrs.options) : [];\r\n }]\r\n };\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('hydrabackup', hydrabackup);\r\n\r\nfunction hydrabackup() {\r\n controller.$inject = [\"$scope\", \"BackupService\", \"Upload\", \"FileDownloadService\", \"RequestsErrorHandler\", \"growl\", \"RestartService\"];\r\n return {\r\n templateUrl: 'static/html/directives/backup.html',\r\n controller: controller\r\n };\r\n\r\n function controller($scope, BackupService, Upload, FileDownloadService, RequestsErrorHandler, growl, RestartService) {\r\n $scope.refreshBackupList = function () {\r\n BackupService.getBackupsList().then(function (backups) {\r\n $scope.backups = backups;\r\n });\r\n };\r\n\r\n $scope.refreshBackupList();\r\n\r\n $scope.uploadActive = false;\r\n\r\n\r\n $scope.createAndDownloadBackupFile = function() {\r\n FileDownloadService.downloadFile(\"internalapi/getbackup\", \"nzbhydra-backup-\" + moment().format(\"YYYY-MM-DD-HH-mm\") + \".zip\");\r\n };\r\n\r\n $scope.uploadBackupFile = function (file, errFiles) {\r\n RequestsErrorHandler.specificallyHandled(function () {\r\n console.log(\"Hallo\");\r\n $scope.file = file;\r\n $scope.errFile = errFiles && errFiles[0];\r\n if (file) {\r\n $scope.uploadActive = true;\r\n file.upload = Upload.upload({\r\n url: 'internalapi/restorebackup',\r\n data: {content: file}\r\n });\r\n\r\n file.upload.then(function (response) {\r\n $scope.uploadActive = false;\r\n file.result = response.data;\r\n RestartService.restart(\"Restore successful.\");\r\n\r\n }, function (response) {\r\n $scope.uploadActive = false;\r\n growl.error(response.data)\r\n }, function (evt) {\r\n file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));\r\n file.loaded = Math.floor(evt.loaded / 1024);\r\n file.total = Math.floor(evt.total / 1024);\r\n });\r\n }\r\n });\r\n };\r\n\r\n $scope.restoreFromFile = function(filename) {\r\n BackupService.restoreFromFile(filename).then(function() {\r\n RestartService.restart(\"Restore successful.\");\r\n },\r\n function(response) {\r\n growl.error(response.data);\r\n })\r\n }\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('addableNzbs', addableNzbs);\r\n\r\nfunction addableNzbs() {\r\n controller.$inject = [\"$scope\", \"NzbDownloadService\"];\r\n return {\r\n templateUrl: 'static/html/directives/addable-nzbs.html',\r\n require: ['^searchResultId'],\r\n scope: {\r\n searchResultId: \"<\",\r\n downloadType: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, NzbDownloadService) {\r\n $scope.downloaders = _.filter(NzbDownloadService.getEnabledDownloaders(), function(downloader) {\r\n if ($scope.downloadType != \"nzb\") {\r\n return downloader.downloadType == $scope.downloadType\r\n }\r\n return true;\r\n });\r\n }\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('addableNzb', addableNzb);\r\n\r\nfunction addableNzb() {\r\n controller.$inject = [\"$scope\", \"NzbDownloadService\", \"growl\"];\r\n return {\r\n templateUrl: 'static/html/directives/addable-nzb.html',\r\n scope: {\r\n searchResultId: \"<\",\r\n downloader: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, NzbDownloadService, growl) {\r\n if ($scope.downloader.iconCssClass) {\r\n $scope.cssClass = \"fa fa-\" + $scope.downloader.iconCssClass.replace(\"fa-\",\"\").replace(\"fa \", \"\"); \r\n } else {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd\" : \"nzbget\";\r\n }\r\n \r\n $scope.add = function () {\r\n $scope.cssClass = \"nzb-spinning\";\r\n NzbDownloadService.download($scope.downloader, [$scope.searchResultId]).then(function (response) {\r\n if (response.data.success) {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd-success\" : \"nzbget-success\";\r\n } else {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd-error\" : \"nzbget-error\";\r\n growl.error(\"Unable to add NZB. Make sure the downloader is running and properly configured.\");\r\n }\r\n }, function () {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd-error\" : \"nzbget-error\";\r\n growl.error(\"An unexpected error occurred while trying to contact NZB Hydra or add the NZB.\");\r\n })\r\n };\r\n \r\n \r\n\r\n }\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('UpdateService', UpdateService);\r\n\r\nfunction UpdateService($http, growl, blockUI, RestartService) {\r\n\r\n var currentVersion;\r\n var repVersion;\r\n var updateAvailable;\r\n var changelog;\r\n var versionHistory;\r\n \r\n return {\r\n update: update,\r\n showChanges: showChanges,\r\n getVersions: getVersions,\r\n getChangelog: getChangelog,\r\n getVersionHistory: getVersionHistory\r\n };\r\n \r\n \r\n \r\n function getVersions() {\r\n return $http.get(\"internalapi/get_versions\").then(function (data) {\r\n currentVersion = data.data.currentVersion;\r\n repVersion = data.data.repVersion;\r\n updateAvailable = data.data.updateAvailable;\r\n return data;\r\n });\r\n }\r\n\r\n function getChangelog() {\r\n return $http.get(\"internalapi/get_changelog\", {currentVersion: currentVersion, repVersion: repVersion}).then(function (data) {\r\n changelog = data.data.changelog;\r\n return data;\r\n });\r\n }\r\n \r\n function getVersionHistory() {\r\n return $http.get(\"internalapi/get_version_history\").then(function (data) {\r\n versionHistory = data.data.versionHistory;\r\n return data;\r\n });\r\n }\r\n\r\n function showChanges(changelog) {\r\n\r\n var myInjector = angular.injector([\"ng\", \"ui.bootstrap\"]);\r\n var $uibModal = myInjector.get(\"$uibModal\");\r\n var params = {\r\n size: \"lg\",\r\n templateUrl: \"static/html/changelog.html\",\r\n resolve: {\r\n changelog: function () {\r\n return changelog;\r\n }\r\n },\r\n controller: function ($scope, $sce, $uibModalInstance, changelog) {\r\n //I fucking hate that untrusted HTML shit\r\n changelog = $sce.trustAsHtml(changelog);\r\n $scope.changelog = changelog;\r\n console.log(changelog);\r\n $scope.ok = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n };\r\n\r\n var modalInstance = $uibModal.open(params);\r\n\r\n modalInstance.result.then();\r\n }\r\n \r\n\r\n function update() {\r\n blockUI.start(\"Updating. Please stand by...\");\r\n $http.get(\"internalapi/update\").then(function (data) {\r\n if (data.data.success) {\r\n RestartService.restart(\"Update complete.\", 15);\r\n } else {\r\n blockUI.reset();\r\n growl.info(\"An error occurred while updating. Please check the logs.\");\r\n }\r\n },\r\n function () {\r\n blockUI.reset();\r\n growl.info(\"An error occurred while updating. Please check the logs.\");\r\n });\r\n }\r\n}\r\nUpdateService.$inject = [\"$http\", \"growl\", \"blockUI\", \"RestartService\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('UpdateFooterController', UpdateFooterController);\r\n\r\nfunction UpdateFooterController($scope, UpdateService, HydraAuthService) {\r\n\r\n $scope.updateAvailable = false;\r\n $scope.checked = false;\r\n\r\n $scope.mayUpdate = HydraAuthService.getUserInfos().maySeeAdmin;\r\n\r\n $scope.$on(\"user:loggedIn\", function () {\r\n if (HydraAuthService.getUserInfos().maySeeAdmin && !$scope.checked) {\r\n retrieveUpdateInfos();\r\n }\r\n });\r\n\r\n\r\n if ($scope.mayUpdate) {\r\n retrieveUpdateInfos();\r\n }\r\n\r\n function retrieveUpdateInfos() {\r\n $scope.checked = true;\r\n UpdateService.getVersions().then(function (data) {\r\n $scope.currentVersion = data.data.currentVersion;\r\n $scope.repVersion = data.data.repVersion;\r\n $scope.updateAvailable = data.data.updateAvailable;\r\n $scope.changelog = data.data.changelog;\r\n });\r\n }\r\n\r\n\r\n $scope.update = function () {\r\n UpdateService.update();\r\n };\r\n\r\n $scope.showChangelog = function () {\r\n UpdateService.showChanges($scope.changelog);\r\n }\r\n\r\n}\r\nUpdateFooterController.$inject = [\"$scope\", \"UpdateService\", \"HydraAuthService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('SystemController', SystemController);\r\n\r\nfunction SystemController($scope, $state, activeTab, $http, growl, RestartService, ModalService, UpdateService, NzbHydraControlService) {\r\n\r\n $scope.activeTab = activeTab;\r\n\r\n $scope.shutdown = function () {\r\n NzbHydraControlService.shutdown().then(function () {\r\n growl.info(\"Shutdown initiated. Cya!\");\r\n },\r\n function () {\r\n growl.info(\"Unable to send shutdown command.\");\r\n })\r\n };\r\n\r\n $scope.restart = function () {\r\n RestartService.restart();\r\n };\r\n\r\n $scope.deleteLogAndDatabase = function () {\r\n ModalService.open(\"Delete log and db\", \"Are you absolutely sure you want to delete your database and log files? Hydra will restart to do that.\", {\r\n yes: {\r\n onYes: function () {\r\n NzbHydraControlService.deleteLogAndDb();\r\n RestartService.countdown();\r\n },\r\n text: \"Yes, delete log and database\"\r\n },\r\n no: {\r\n onCancel: function () {\r\n\r\n },\r\n text: \"Nah\"\r\n }\r\n });\r\n };\r\n\r\n $scope.forceUpdate = function() {\r\n UpdateService.update()\r\n };\r\n \r\n\r\n $scope.allTabs = [\r\n {\r\n active: false,\r\n state: 'root.system.control',\r\n name: \"Control\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.updates',\r\n name: \"Updates\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.log',\r\n name: \"Log\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.backup',\r\n name: \"Backup\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.bugreport',\r\n name: \"Bugreport\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.about',\r\n name: \"About\"\r\n }\r\n ];\r\n\r\n\r\n $scope.goToSystemState = function (index) {\r\n $state.go($scope.allTabs[index].state, {activeTab: index}, {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n $scope.downloadDebuggingInfos = function() {\r\n $http({method: 'GET', url: 'internalapi/getdebugginginfos', responseType: 'arraybuffer'}).success(function (data, status, headers, config) {\r\n var a = document.createElement('a');\r\n var blob = new Blob([data], {'type': \"application/octet-stream\"});\r\n a.href = URL.createObjectURL(blob);\r\n var filename = \"nzbhydra-debuginfo-\" + moment().format(\"YYYY-MM-DD-HH-mm\") + \".zip\";\r\n a.download = filename;\r\n \r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }).error(function (data, status, headers, config) {\r\n console.log(\"Error:\" + status);\r\n });\r\n }\r\n \r\n}\r\nSystemController.$inject = [\"$scope\", \"$state\", \"activeTab\", \"$http\", \"growl\", \"RestartService\", \"ModalService\", \"UpdateService\", \"NzbHydraControlService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('StatsService', StatsService);\r\n\r\nfunction StatsService($http) {\r\n\r\n return {\r\n get: getStats,\r\n getDownloadHistory: getDownloadHistory\r\n };\r\n\r\n function getStats(after, before) {\r\n return $http.get(\"internalapi/getstats\", {params: {after:after, before:before}}).success(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function getDownloadHistory(pageNumber, limit, filterModel, sortModel) {\r\n var params = {page: pageNumber, limit: limit, filterModel: filterModel};\r\n if (angular.isUndefined(pageNumber)) {\r\n params.page = 1;\r\n }\r\n if (angular.isUndefined(limit)) {\r\n params.limit = 100;\r\n }\r\n if (angular.isUndefined(filterModel)) {\r\n params.filterModel = {}\r\n }\r\n if (!angular.isUndefined(sortModel)) {\r\n params.sortModel = sortModel;\r\n }\r\n return $http.post(\"internalapi/getnzbdownloads\", params).success(function (response) {\r\n return {\r\n nzbDownloads: response.nzbDownloads,\r\n totalDownloads: response.totalDownloads\r\n };\r\n \r\n });\r\n }\r\n\r\n}\r\nStatsService.$inject = [\"$http\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('StatsController', StatsController);\r\n\r\nfunction StatsController($scope, $filter, StatsService, blockUI) {\r\n\r\n $scope.dateOptions = {\r\n dateDisabled: false,\r\n formatYear: 'yy',\r\n startingDay: 1\r\n };\r\n var initializingAfter = true;\r\n var initializingBefore = true;\r\n $scope.afterDate = moment().subtract(30, \"days\").toDate();\r\n $scope.beforeDate = moment().toDate();\r\n updateStats();\r\n\r\n\r\n $scope.openAfter = function () {\r\n $scope.after.opened = true;\r\n };\r\n\r\n $scope.openBefore = function () {\r\n $scope.before.opened = true;\r\n };\r\n\r\n $scope.after = {\r\n opened: false\r\n };\r\n\r\n $scope.before = {\r\n opened: false\r\n };\r\n\r\n function updateStats() {\r\n blockUI.start(\"Updating stats...\");\r\n var after = $scope.afterDate != null ? Math.floor($scope.afterDate.getTime() / 1000) : null;\r\n var before = $scope.beforeDate != null ? Math.floor($scope.beforeDate.getTime() / 1000) : null;\r\n StatsService.get(after, before).then(function(stats) {\r\n $scope.setStats(stats);\r\n });\r\n\r\n blockUI.reset();\r\n }\r\n\r\n $scope.$watch('beforeDate', function () {\r\n if (initializingBefore) {\r\n initializingBefore = false;\r\n } else {\r\n updateStats();\r\n }\r\n });\r\n\r\n\r\n $scope.$watch('afterDate', function () {\r\n if (initializingAfter) {\r\n initializingAfter = false;\r\n } else {\r\n updateStats();\r\n }\r\n });\r\n\r\n $scope.onKeypress = function (keyEvent) {\r\n if (keyEvent.which === 13) {\r\n updateStats();\r\n }\r\n };\r\n\r\n $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r\n $scope.format = $scope.formats[0];\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.setStats = function (stats) {\r\n stats = stats.data;\r\n\r\n $scope.nzbDownloads = null;\r\n $scope.avgResponseTimes = stats.avgResponseTimes;\r\n $scope.avgIndexerSearchResultsShares = stats.avgIndexerSearchResultsShares;\r\n $scope.avgIndexerAccessSuccesses = stats.avgIndexerAccessSuccesses;\r\n $scope.indexerDownloadShares = stats.indexerDownloadShares;\r\n $scope.downloadsPerHourOfDay = stats.timeBasedDownloadStats.perHourOfDay;\r\n $scope.downloadsPerDayOfWeek = stats.timeBasedDownloadStats.perDayOfWeek;\r\n $scope.searchesPerHourOfDay = stats.timeBasedSearchStats.perHourOfDay;\r\n $scope.searchesPerDayOfWeek = stats.timeBasedSearchStats.perDayOfWeek;\r\n\r\n\r\n var numIndexers = $scope.avgResponseTimes.length;\r\n\r\n $scope.avgResponseTimesChart = getChart(\"multiBarHorizontalChart\", $scope.avgResponseTimes, \"name\", \"avgResponseTime\", \"\", \"Response time\");\r\n $scope.avgResponseTimesChart.options.chart.margin.left = 100;\r\n $scope.avgResponseTimesChart.options.chart.yAxis.rotateLabels = -30;\r\n var avgResponseTimesChartHeight = Math.max(numIndexers * 30, 350);\r\n $scope.avgResponseTimesChart.options.chart.height = avgResponseTimesChartHeight;\r\n\r\n $scope.resultsSharesChart = getResultsSharesChart();\r\n\r\n var rotation = 30;\r\n if (numIndexers > 30) {\r\n rotation = 70;\r\n }\r\n $scope.resultsSharesChart.options.chart.xAxis.rotateLabels = rotation;\r\n $scope.resultsSharesChart.options.chart.height = avgResponseTimesChartHeight;\r\n\r\n $scope.downloadsPerHourOfDayChart = getChart(\"discreteBarChart\", $scope.downloadsPerHourOfDay, \"hour\", \"count\", \"Hour of day\", 'Downloads');\r\n $scope.downloadsPerHourOfDayChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.downloadsPerDayOfWeekChart = getChart(\"discreteBarChart\", $scope.downloadsPerDayOfWeek, \"day\", \"count\", \"Day of week\", 'Downloads');\r\n $scope.downloadsPerDayOfWeekChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.searchesPerHourOfDayChart = getChart(\"discreteBarChart\", $scope.searchesPerHourOfDay, \"hour\", \"count\", \"Hour of day\", 'Searches');\r\n $scope.searchesPerHourOfDayChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.searchesPerDayOfWeekChart = getChart(\"discreteBarChart\", $scope.searchesPerDayOfWeek, \"day\", \"count\", \"Day of week\", 'Searches');\r\n $scope.searchesPerDayOfWeekChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.indexerDownloadSharesChart = {\r\n options: {\r\n chart: {\r\n type: 'pieChart',\r\n height: 500,\r\n x: function (d) {\r\n return d.name;\r\n },\r\n y: function (d) {\r\n return d.share;\r\n },\r\n showLabels: true,\r\n duration: 500,\r\n labelThreshold: 0.01,\r\n labelSunbeamLayout: true,\r\n tooltip: {\r\n valueFormatter: function (d, i) {\r\n return $filter('number')(d, 2) + \"%\";\r\n }\r\n },\r\n legend: {\r\n margin: {\r\n top: 5,\r\n right: 35,\r\n bottom: 5,\r\n left: 0\r\n }\r\n }\r\n }\r\n },\r\n data: $scope.indexerDownloadShares\r\n };\r\n\r\n $scope.indexerDownloadSharesChart.options.chart.height = Math.min(Math.max(numIndexers * 40, 350), 900);\r\n };\r\n\r\n\r\n function getChart(chartType, values, xKey, yKey, xAxisLabel, yAxisLabel) {\r\n return {\r\n options: {\r\n chart: {\r\n type: chartType,\r\n height: 350,\r\n margin: {\r\n top: 20,\r\n right: 20,\r\n bottom: 100,\r\n left: 50\r\n },\r\n x: function (d) {\r\n return d[xKey];\r\n },\r\n y: function (d) {\r\n return d[yKey];\r\n },\r\n showValues: true,\r\n valueFormat: function (d) {\r\n return d;\r\n },\r\n color: function () {\r\n return \"red\"\r\n },\r\n showControls: false,\r\n showLegend: false,\r\n duration: 100,\r\n xAxis: {\r\n axisLabel: xAxisLabel,\r\n tickFormat: function (d) {\r\n return d;\r\n },\r\n rotateLabels: 30,\r\n showMaxMin: false,\r\n color: function () {\r\n return \"white\"\r\n }\r\n },\r\n yAxis: {\r\n axisLabel: yAxisLabel,\r\n axisLabelDistance: -10,\r\n tickFormat: function (d) {\r\n return d;\r\n }\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n zoom: {\r\n enabled: true,\r\n scaleExtent: [1, 10],\r\n useFixedDomain: false,\r\n useNiceScale: false,\r\n horizontalOff: false,\r\n verticalOff: true,\r\n unzoomEventType: 'dblclick.zoom'\r\n }\r\n }\r\n }, data: [{\r\n \"key\": \"doesntmatter\",\r\n \"bar\": true,\r\n \"values\": values\r\n }]\r\n };\r\n }\r\n\r\n //Was unable to use the function above for this and gave up\r\n function getResultsSharesChart() {\r\n return {\r\n options: {\r\n chart: {\r\n type: 'multiBarChart',\r\n height: 350,\r\n margin: {\r\n top: 20,\r\n right: 20,\r\n bottom: 100,\r\n left: 45\r\n },\r\n\r\n clipEdge: true,\r\n duration: 500,\r\n stacked: false,\r\n reduceXTicks: false,\r\n showValues: true,\r\n tooltip: {\r\n enabled: true,\r\n valueFormatter: function (d) {\r\n return d + \"%\";\r\n }\r\n },\r\n showControls: false,\r\n xAxis: {\r\n axisLabel: '',\r\n showMaxMin: false,\r\n rotateLabels: 30,\r\n axisLabelDistance: 30,\r\n tickFormat: function (d) {\r\n return d;\r\n }\r\n },\r\n yAxis: {\r\n axisLabel: 'Share (%)',\r\n axisLabelDistance: -20,\r\n tickFormat: function (d) {\r\n return d;\r\n }\r\n }\r\n }\r\n },\r\n\r\n data: [\r\n {\r\n key: \"Results\",\r\n values: _.map($scope.avgIndexerSearchResultsShares, function (stats) {\r\n return {series: 0, y: stats.avgResultsShare, x: stats.name}\r\n })\r\n },\r\n {\r\n key: \"Unique results\",\r\n values: _.map($scope.avgIndexerSearchResultsShares, function (stats) {\r\n return {series: 1, y: stats.avgUniqueResults, x: stats.name}\r\n })\r\n }\r\n ]\r\n };\r\n }\r\n\r\n\r\n}\r\nStatsController.$inject = [\"$scope\", \"$filter\", \"StatsService\", \"blockUI\"];\r\n","//\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('SearchService', SearchService);\r\n\r\nfunction SearchService($http) {\r\n\r\n\r\n var lastExecutedQuery;\r\n var lastResults;\r\n\r\n return {\r\n search: search,\r\n getLastResults: getLastResults,\r\n loadMore: loadMore\r\n };\r\n \r\n\r\n function search(category, query, tmdbid, imdbid, title, tvdbid, rid, season, episode, minsize, maxsize, minage, maxage, indexers, mode) {\r\n var uri;\r\n if (category.indexOf(\"Movies\") > -1 || (category.indexOf(\"20\") == 0) || mode == \"movie\") {\r\n uri = new URI(\"internalapi/moviesearch\");\r\n if (angular.isDefined(tmdbid)) {\r\n uri.addQuery(\"tmdbid\", tmdbid);\r\n } else if (angular.isDefined(imdbid)) {\r\n uri.addQuery(\"imdbid\", imdbid);\r\n } else {\r\n uri.addQuery(\"query\", query);\r\n }\r\n\r\n } else if (category.indexOf(\"TV\") > -1 || (category.indexOf(\"50\") == 0) || mode == \"tvsearch\") {\r\n uri = new URI(\"internalapi/tvsearch\");\r\n if (angular.isDefined(tvdbid)) {\r\n uri.addQuery(\"tvdbid\", tvdbid);\r\n }\r\n if (angular.isDefined(rid)) {\r\n uri.addQuery(\"rid\", rid);\r\n } else {\r\n uri.addQuery(\"query\", query);\r\n }\r\n\r\n if (angular.isDefined(season)) {\r\n uri.addQuery(\"season\", season);\r\n }\r\n if (angular.isDefined(episode)) {\r\n uri.addQuery(\"episode\", episode);\r\n }\r\n } else {\r\n uri = new URI(\"internalapi/search\");\r\n uri.addQuery(\"query\", query);\r\n }\r\n if (angular.isDefined(title)) {\r\n uri.addQuery(\"title\", title);\r\n }\r\n if (_.isNumber(minsize)) {\r\n uri.addQuery(\"minsize\", minsize);\r\n }\r\n if (_.isNumber(maxsize)) {\r\n uri.addQuery(\"maxsize\", maxsize);\r\n }\r\n if (_.isNumber(minage)) {\r\n uri.addQuery(\"minage\", minage);\r\n }\r\n if (_.isNumber(maxage)) {\r\n uri.addQuery(\"maxage\", maxage);\r\n }\r\n if (!angular.isUndefined(indexers)) {\r\n uri.addQuery(\"indexers\", decodeURIComponent(indexers));\r\n }\r\n \r\n\r\n uri.addQuery(\"category\", category);\r\n lastExecutedQuery = uri;\r\n return $http.get(uri.toString()).then(processData);\r\n\r\n }\r\n\r\n function loadMore(offset, loadAll) {\r\n lastExecutedQuery.removeQuery(\"offset\");\r\n lastExecutedQuery.addQuery(\"offset\", offset);\r\n lastExecutedQuery.addQuery(\"loadAll\", loadAll ? true : false);\r\n\r\n return $http.get(lastExecutedQuery.toString()).then(processData);\r\n }\r\n\r\n function processData(response) {\r\n var results = response.data.results;\r\n var indexersearches = response.data.indexersearches;\r\n var total = response.data.total;\r\n var rejected = response.data.rejected;\r\n var resultsCount = results.length;\r\n\r\n\r\n //Sum up response times of indexers from individual api accesses\r\n //TODO: Move this to search result controller because we need to update it every time we loaded more results\r\n _.each(indexersearches, function (ps) {\r\n if (ps.did_search) {\r\n ps.averageResponseTime = _.reduce(ps.apiAccesses, function (memo, rp) {\r\n return memo + rp.response_time;\r\n }, 0);\r\n ps.averageResponseTime = ps.averageResponseTime / ps.apiAccesses.length;\r\n }\r\n });\r\n \r\n lastResults = {\"results\": results, \"indexersearches\": indexersearches, \"total\": total, \"resultsCount\": resultsCount, \"rejected\": rejected};\r\n return lastResults;\r\n }\r\n \r\n function getLastResults() {\r\n return lastResults;\r\n }\r\n}\r\nSearchService.$inject = [\"$http\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('SearchResultsController', SearchResultsController);\r\n\r\nfunction sumRejected(rejected) {\r\n return _.reduce(rejected, function (memo, entry) {\r\n return memo + entry[1];\r\n }, 0);\r\n}\r\n\r\n//SearchResultsController.$inject = ['blockUi'];\r\nfunction SearchResultsController($stateParams, $scope, $q, $timeout, blockUI, growl, localStorageService, SearchService, ConfigService) {\r\n\r\n if (localStorageService.get(\"sorting\") != null) {\r\n var sorting = localStorageService.get(\"sorting\");\r\n $scope.sortPredicate = sorting.predicate;\r\n $scope.sortReversed = sorting.reversed;\r\n } else {\r\n $scope.sortPredicate = \"epoch\";\r\n $scope.sortReversed = true;\r\n }\r\n $scope.limitTo = 100;\r\n $scope.offset = 0;\r\n //Handle incoming data\r\n\r\n $scope.indexersearches = _.sortBy(SearchService.getLastResults().indexersearches, function (i) {\r\n return i.indexer.toLowerCase()\r\n });\r\n $scope.indexerDisplayState = []; //Stores if a indexer's results should be displayed or not\r\n $scope.indexerResultsInfo = {}; //Stores information about the indexer's results like how many we already retrieved\r\n $scope.groupExpanded = {};\r\n $scope.selected = [];\r\n if ($stateParams.title) {\r\n $scope.searchTitle = $stateParams.title;\r\n } else if ($stateParams.query) {\r\n $scope.searchTitle = $stateParams.query;\r\n } else {\r\n $scope.searchTitle = undefined;\r\n }\r\n\r\n $scope.selectedIds = _.map($scope.selected, function (value) {\r\n return value.searchResultId;\r\n });\r\n\r\n $scope.lastClicked = null;\r\n $scope.lastClickedValue = null;\r\n\r\n $scope.foo = {\r\n indexerStatusesExpanded: localStorageService.get(\"indexerStatusesExpanded\") != null ? localStorageService.get(\"indexerStatusesExpanded\") : false,\r\n duplicatesDisplayed: localStorageService.get(\"duplicatesDisplayed\") != null ? localStorageService.get(\"duplicatesDisplayed\") : false\r\n };\r\n\r\n $scope.countFilteredOut = 0;\r\n\r\n //Initially set visibility of all found indexers to true, they're needed for initial filtering / sorting\r\n _.forEach($scope.indexersearches, function (ps) {\r\n $scope.indexerDisplayState[ps.indexer.toLowerCase()] = true;\r\n });\r\n\r\n _.forEach($scope.indexersearches, function (ps) {\r\n $scope.indexerResultsInfo[ps.indexer.toLowerCase()] = {loadedResults: ps.loaded_results};\r\n });\r\n\r\n //Process results\r\n $scope.results = SearchService.getLastResults().results;\r\n $scope.total = SearchService.getLastResults().total;\r\n $scope.resultsCount = SearchService.getLastResults().resultsCount;\r\n $scope.rejected = SearchService.getLastResults().rejected;\r\n $scope.countRejected = sumRejected($scope.rejected);\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n\r\n $scope.$emit(\"searchResultsShown\");\r\n stopBlocking();\r\n\r\n //Returns the content of the property (defined by the current sortPredicate) of the first group element \r\n $scope.firstResultPredicate = firstResultPredicate;\r\n function firstResultPredicate(item) {\r\n return item[0][$scope.sortPredicate];\r\n }\r\n\r\n //Returns the unique group identifier which allows angular to keep track of the grouped search results even after filtering, making filtering by indexers a lot faster (albeit still somewhat slow...) \r\n $scope.groupId = groupId;\r\n function groupId(item) {\r\n return item[0][0].searchResultId;\r\n }\r\n\r\n //Block the UI and return after timeout. This way we make sure that the blocking is done before angular starts updating the model/view. There's probably a better way to achieve that?\r\n function startBlocking(message) {\r\n var deferred = $q.defer();\r\n blockUI.start(message);\r\n $timeout(function () {\r\n deferred.resolve();\r\n }, 100);\r\n return deferred.promise;\r\n }\r\n\r\n //Set sorting according to the predicate. If it's the same as the old one, reverse, if not sort by the given default (so that age is descending, name ascending, etc.)\r\n //Sorting (and filtering) are really slow (about 2 seconds for 1000 results from 5 indexers) but I haven't found any way of making it faster, apart from the tracking \r\n $scope.setSorting = setSorting;\r\n function setSorting(predicate, reversedDefault) {\r\n if (predicate == $scope.sortPredicate) {\r\n $scope.sortReversed = !$scope.sortReversed;\r\n } else {\r\n $scope.sortReversed = reversedDefault;\r\n }\r\n $scope.sortPredicate = predicate;\r\n startBlocking(\"Sorting / filtering...\").then(function () {\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n blockUI.reset();\r\n localStorageService.set(\"sorting\", {predicate: predicate, reversed: $scope.sortReversed});\r\n });\r\n }\r\n\r\n $scope.inlineFilter = inlineFilter;\r\n function inlineFilter(result) {\r\n var ok = true;\r\n ok = ok && $scope.titleFilter && result.title.toLowerCase().indexOf($scope.titleFilter) > -1;\r\n ok = ok && $scope.minSizeFilter && $scope.minSizeFilter * 1024 * 1024 < result.size;\r\n ok = ok && $scope.maxSizeFilter && $scope.maxSizeFilter * 1024 * 1024 > result.size;\r\n return ok;\r\n }\r\n\r\n\r\n $scope.$on(\"searchInputChanged\", function (event, query, minage, maxage, minsize, maxsize) {\r\n $scope.filteredResults = sortAndFilter($scope.results, query, minage, maxage, minsize, maxsize);\r\n });\r\n\r\n $scope.resort = function () {\r\n };\r\n\r\n function sortAndFilter(results, query, minage, maxage, minsize, maxsize) {\r\n $scope.countFilteredOut = 0;\r\n\r\n function filterByAgeAndSize(item) {\r\n var ok = true;\r\n ok = ok && (!_.isNumber(minsize) || item.size / 1024 / 1024 >= minsize)\r\n && (!_.isNumber(maxsize) || item.size / 1024 / 1024 <= maxsize)\r\n && (!_.isNumber(minage) || item.age_days >= Number(minage))\r\n && (!_.isNumber(maxage) || item.age_days <= Number(maxage));\r\n\r\n if (ok && query) {\r\n var words = query.toLowerCase().split(\" \");\r\n ok = _.every(words, function (word) {\r\n return item.title.toLowerCase().indexOf(word) > -1;\r\n });\r\n }\r\n if (!ok) {\r\n $scope.countFilteredOut++;\r\n }\r\n return ok;\r\n }\r\n\r\n\r\n function getItemIndexerDisplayState(item) {\r\n return $scope.indexerDisplayState[item.indexer.toLowerCase()];\r\n }\r\n\r\n function getCleanedTitle(element) {\r\n return element.title.toLowerCase().replace(/[\\s\\-\\._]/ig, \"\");\r\n }\r\n\r\n function createSortedHashgroups(titleGroup) {\r\n\r\n function createHashGroup(hashGroup) {\r\n //Sorting hash group's contents should not matter for size and age and title but might for category (we might remove this, it's probably mostly unnecessary)\r\n var sortedHashGroup = _.sortBy(hashGroup, function (item) {\r\n var sortPredicateValue;\r\n if ($scope.sortPredicate == \"grabs\") {\r\n sortPredicateValue = angular.isDefined(item.grabs) ? item.grabs : 0;\r\n } else {\r\n sortPredicateValue = item[$scope.sortPredicate];\r\n }\r\n //var sortPredicateValue = item[$scope.sortPredicate];\r\n return $scope.sortReversed ? -sortPredicateValue : sortPredicateValue;\r\n });\r\n //Now sort the hash group by indexer score (inverted) so that the result with the highest indexer score is shown on top (or as the only one of a hash group if it's collapsed)\r\n sortedHashGroup = _.sortBy(sortedHashGroup, function (item) {\r\n return item.indexerscore * -1;\r\n });\r\n return sortedHashGroup;\r\n }\r\n\r\n function getHashGroupFirstElementSortPredicate(hashGroup) {\r\n if ($scope.sortPredicate == \"grabs\") {\r\n sortPredicateValue = angular.isDefined(hashGroup[0].grabs) ? hashGroup[0].grabs : 0;\r\n } else {\r\n var sortPredicateValue = hashGroup[0][$scope.sortPredicate];\r\n }\r\n return $scope.sortReversed ? -sortPredicateValue : sortPredicateValue;\r\n }\r\n\r\n return _.chain(titleGroup).groupBy(\"hash\").map(createHashGroup).sortBy(getHashGroupFirstElementSortPredicate).value();\r\n }\r\n\r\n function getTitleGroupFirstElementsSortPredicate(titleGroup) {\r\n var sortPredicateValue;\r\n if ($scope.sortPredicate == \"title\") {\r\n sortPredicateValue = titleGroup[0][0].title.toLowerCase();\r\n } else if ($scope.sortPredicate == \"grabs\") {\r\n sortPredicateValue = angular.isDefined(titleGroup[0][0].grabs) ? titleGroup[0][0].grabs : 0;\r\n } else {\r\n sortPredicateValue = titleGroup[0][0][$scope.sortPredicate];\r\n }\r\n\r\n return sortPredicateValue;\r\n }\r\n\r\n var filtered = _.chain(results)\r\n //Filter by age, size and title\r\n .filter(filterByAgeAndSize)\r\n //Remove elements of which the indexer is currently hidden \r\n .filter(getItemIndexerDisplayState)\r\n //Make groups of results with the same title \r\n .groupBy(getCleanedTitle)\r\n //For every title group make subgroups of duplicates and sort the group \r\n .map(createSortedHashgroups)\r\n //And then sort the title group using its first hashgroup's first item (the group itself is already sorted and so are the hash groups) \r\n .sortBy(getTitleGroupFirstElementsSortPredicate)\r\n .value();\r\n if ($scope.sortReversed) {\r\n filtered = filtered.reverse();\r\n }\r\n if ($scope.countFilteredOut > 0) {\r\n growl.info(\"Filtered \" + $scope.countFilteredOut + \" of the retrieved results\");\r\n }\r\n\r\n $scope.lastClicked = null;\r\n return filtered;\r\n }\r\n\r\n $scope.toggleTitlegroupExpand = function toggleTitlegroupExpand(titleGroup) {\r\n $scope.groupExpanded[titleGroup[0][0].title] = !$scope.groupExpanded[titleGroup[0][0].title];\r\n $scope.groupExpanded[titleGroup[0][0].hash] = !$scope.groupExpanded[titleGroup[0][0].hash];\r\n };\r\n\r\n\r\n $scope.stopBlocking = stopBlocking;\r\n function stopBlocking() {\r\n blockUI.reset();\r\n }\r\n\r\n $scope.loadMore = loadMore;\r\n function loadMore(loadAll) {\r\n startBlocking(loadAll ? \"Loading all results...\" : \"Loading more results...\").then(function () {\r\n SearchService.loadMore($scope.resultsCount, loadAll).then(function (data) {\r\n $scope.results = $scope.results.concat(data.results);\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n $scope.total = data.total;\r\n $scope.rejected = data.rejected;\r\n $scope.countRejected = sumRejected($scope.rejected);\r\n $scope.resultsCount += data.resultsCount;\r\n stopBlocking();\r\n });\r\n });\r\n }\r\n\r\n\r\n//Filters the results according to new visibility settings.\r\n $scope.toggleIndexerDisplay = toggleIndexerDisplay;\r\n function toggleIndexerDisplay(indexer) {\r\n $scope.indexerDisplayState[indexer.toLowerCase()] = $scope.indexerDisplayState[indexer.toLowerCase()];\r\n startBlocking(\"Filtering. Sorry...\").then(function () {\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n }).then(function () {\r\n stopBlocking();\r\n });\r\n }\r\n\r\n $scope.countResults = countResults;\r\n function countResults() {\r\n return $scope.results.length;\r\n }\r\n\r\n $scope.invertSelection = function invertSelection() {\r\n $scope.$broadcast(\"invertSelection\");\r\n };\r\n\r\n $scope.toggleIndexerStatuses = function () {\r\n $scope.foo.indexerStatusesExpanded = !$scope.foo.indexerStatusesExpanded;\r\n localStorageService.set(\"indexerStatusesExpanded\", $scope.foo.indexerStatusesExpanded);\r\n };\r\n\r\n $scope.toggleDuplicatesDisplayed = function () {\r\n //$scope.foo.duplicatesDisplayed = !$scope.foo.duplicatesDisplayed;\r\n localStorageService.set(\"duplicatesDisplayed\", $scope.foo.duplicatesDisplayed);\r\n $scope.$broadcast(\"duplicatesDisplayed\", $scope.foo.duplicatesDisplayed);\r\n };\r\n\r\n $scope.$on(\"checkboxClicked\", function (event, originalEvent, rowIndex, newCheckedValue) {\r\n if (originalEvent.shiftKey && $scope.lastClicked != null) {\r\n $scope.$broadcast(\"shiftClick\", Number($scope.lastClicked), Number(rowIndex), Number($scope.lastClickedValue));\r\n }\r\n $scope.lastClicked = rowIndex;\r\n $scope.lastClickedValue = newCheckedValue;\r\n });\r\n\r\n $scope.filterRejectedZero = function() {\r\n return function (entry) {\r\n return entry[1] > 0;\r\n }\r\n }\r\n}\r\nSearchResultsController.$inject = [\"$stateParams\", \"$scope\", \"$q\", \"$timeout\", \"blockUI\", \"growl\", \"localStorageService\", \"SearchService\", \"ConfigService\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('SearchHistoryService', SearchHistoryService);\r\n\r\nfunction SearchHistoryService($filter, $http) {\r\n\r\n return {\r\n getSearchHistory: getSearchHistory,\r\n getSearchHistoryForSearching: getSearchHistoryForSearching,\r\n formatRequest: formatRequest,\r\n getStateParamsForRepeatedSearch: getStateParamsForRepeatedSearch\r\n };\r\n\r\n function getSearchHistoryForSearching() {\r\n return $http.post(\"internalapi/getsearchrequestsforsearching\").success(function (response) {\r\n return {\r\n searchRequests: response.searchRequests,\r\n totalRequests: response.totalRequests\r\n }\r\n });\r\n }\r\n\r\n function getSearchHistory(pageNumber, limit, filterModel, sortModel, distinct, onlyCurrentUser) {\r\n var params = {\r\n page: pageNumber,\r\n limit: limit,\r\n filterModel: filterModel,\r\n distinct: distinct,\r\n onlyCurrentUser: onlyCurrentUser\r\n };\r\n if (angular.isUndefined(pageNumber)) {\r\n params.page = 1;\r\n }\r\n if (angular.isUndefined(limit)) {\r\n params.limit = 100;\r\n }\r\n if (angular.isUndefined(filterModel)) {\r\n params.filterModel = {}\r\n }\r\n if (!angular.isUndefined(sortModel)) {\r\n params.sortModel = sortModel;\r\n }\r\n return $http.post(\"internalapi/getsearchrequests\", params).success(function (response) {\r\n return {\r\n searchRequests: response.searchRequests,\r\n totalRequests: response.totalRequests\r\n }\r\n });\r\n }\r\n\r\n function formatRequest(request, includeIdLink, includequery, describeEmptySearch, includeTitle) {\r\n var result = [];\r\n //ID key: ID value\r\n //season\r\n //episode\r\n //author\r\n //title\r\n if (includequery && request.query) {\r\n result.push(\"Query: \" + request.query);\r\n }\r\n if (request.title && includeTitle) {\r\n result.push('Title: ' + request.title);\r\n } else if (request.movietitle && includeTitle) {\r\n result.push('Title: ' + request.movietitle);\r\n } else if (request.tvtitle && includeTitle) {\r\n result.push('Title: ' + request.tvtitle);\r\n } else if (request.identifier_key) {\r\n var href;\r\n var key;\r\n if (request.identifier_key == \"imdbid\") {\r\n key = \"IMDB ID\";\r\n href = \"https://www.imdb.com/title/tt\"\r\n } else if (request.identifier_key == \"tvdbid\") {\r\n key = \"TVDB ID\";\r\n href = \"https://thetvdb.com/?tab=series&id=\"\r\n } else if (request.identifier_key == \"rid\") {\r\n key = \"TVRage ID\";\r\n href = \"internalapi/redirect_rid?rid=\"\r\n } else if (request.identifier_key == \"tmdb\") {\r\n key = \"TMDV ID\";\r\n href = \"https://www.themoviedb.org/movie/\"\r\n }\r\n href = href + request.identifier_value;\r\n href = $filter(\"dereferer\")(href);\r\n if (includeIdLink) {\r\n result.push('' + key + ': ' + request.identifier_value + \"\");\r\n } else {\r\n result.push('' + key + \": \" + request.identifier_value);\r\n }\r\n }\r\n if (request.season) {\r\n result.push('Season: ' + request.season);\r\n }\r\n if (request.episode) {\r\n result.push('Episode: ' + request.episode);\r\n }\r\n if (request.author) {\r\n result.push('Author: ' + request.author);\r\n }\r\n if (result.length == 0 && describeEmptySearch) {\r\n result = ['Empty search'];\r\n }\r\n\r\n return result.join(\", \");\r\n\r\n }\r\n\r\n function getStateParamsForRepeatedSearch(request) {\r\n var stateParams = {};\r\n stateParams.mode = \"search\"\r\n if (request.identifier_key == \"imdbid\") {\r\n stateParams.mode = \"movie\"\r\n stateParams.imdbid = request.identifier_value;\r\n } else if (request.identifier_key == \"tvdbid\" || request.identifier_key == \"rid\") {\r\n stateParams.mode = \"tvsearch\";\r\n if (request.identifier_key == \"rid\") {\r\n stateParams.rid = request.identifier_value;\r\n } else {\r\n stateParams.tvdbid = request.identifier_value;\r\n }\r\n\r\n if (request.season != \"\") {\r\n stateParams.season = request.season;\r\n }\r\n if (request.episode != \"\") {\r\n stateParams.episode = request.episode;\r\n }\r\n }\r\n if (request.query != \"\") {\r\n stateParams.query = request.query;\r\n }\r\n\r\n\r\n if (request.movietitle != null) {\r\n stateParams.title = request.movietitle;\r\n }\r\n if (request.tvtitle != null) {\r\n stateParams.title = request.tvtitle;\r\n }\r\n\r\n if (request.category) {\r\n stateParams.category = request.category;\r\n }\r\n\r\n stateParams.category = request.category;\r\n\r\n return stateParams;\r\n }\r\n\r\n\r\n}\r\nSearchHistoryService.$inject = [\"$filter\", \"$http\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('SearchHistoryController', SearchHistoryController);\r\n\r\n\r\nfunction SearchHistoryController($scope, $state, SearchHistoryService, ConfigService, history, $sce, $filter) {\r\n $scope.limit = 100;\r\n $scope.pagination = {\r\n current: 1\r\n };\r\n $scope.sortModel = {\r\n column: \"time\",\r\n sortMode: 2\r\n };\r\n $scope.filterModel = {};\r\n\r\n //Filter options\r\n $scope.categoriesForFiltering = [];\r\n _.forEach(ConfigService.getSafe().categories, function (category) {\r\n $scope.categoriesForFiltering.push({label: category.pretty, id: category.pretty})\r\n });\r\n $scope.preselectedTimeInterval = {beforeDate: null, afterDate: null};\r\n $scope.accessOptionsForFiltering = [{label: \"All\", value: \"all\"}, {label: \"API\", value: false}, {label: \"Internal\", value: true}];\r\n\r\n //Preloaded data\r\n $scope.searchRequests = history.data.searchRequests;\r\n $scope.totalRequests = history.data.totalRequests;\r\n\r\n $scope.update = function () {\r\n SearchHistoryService.getSearchHistory($scope.pagination.current, $scope.limit, $scope.filterModel, $scope.sortModel).then(function (history) {\r\n $scope.searchRequests = history.data.searchRequests;\r\n $scope.totalRequests = history.data.totalRequests;\r\n });\r\n };\r\n\r\n $scope.$on(\"sort\", function (event, column, sortMode) {\r\n if (sortMode == 0) {\r\n column = \"time\";\r\n sortMode = 2;\r\n }\r\n $scope.sortModel = {\r\n column: column,\r\n sortMode: sortMode\r\n };\r\n $scope.$broadcast(\"newSortColumn\", column);\r\n $scope.update();\r\n });\r\n\r\n $scope.$on(\"filter\", function (event, column, filterModel, isActive) {\r\n if (filterModel.filter) {\r\n $scope.filterModel[column] = filterModel;\r\n } else {\r\n delete $scope.filterModel[column];\r\n }\r\n $scope.update();\r\n });\r\n\r\n\r\n $scope.openSearch = function (request) {\r\n var stateParams = {};\r\n if (request.identifier_key == \"imdbid\") {\r\n stateParams.imdbid = request.identifier_value;\r\n } else if (request.identifier_key == \"tvdbid\" || request.identifier_key == \"rid\") {\r\n if (request.identifier_key == \"rid\") {\r\n stateParams.rid = request.identifier_value;\r\n } else {\r\n stateParams.tvdbid = request.identifier_value;\r\n }\r\n\r\n if (request.season != \"\") {\r\n stateParams.season = request.season;\r\n }\r\n if (request.episode != \"\") {\r\n stateParams.episode = request.episode;\r\n }\r\n }\r\n if (request.query != \"\") {\r\n stateParams.query = request.query;\r\n }\r\n if (request.type == \"tv\") {\r\n stateParams.mode = \"tvsearch\"\r\n } else if (request.type == \"movie\") {\r\n stateParams.mode = \"movie\"\r\n } else {\r\n stateParams.mode = \"search\"\r\n }\r\n\r\n if (request.movietitle != null) {\r\n stateParams.title = request.movietitle;\r\n }\r\n if (request.tvtitle != null) {\r\n stateParams.title = request.tvtitle;\r\n }\r\n\r\n if (request.category) {\r\n stateParams.category = request.category;\r\n }\r\n\r\n stateParams.category = request.category;\r\n\r\n $state.go(\"root.search\", stateParams, {inherit: false});\r\n };\r\n\r\n $scope.formatQuery = function (request) {\r\n if (request.movietitle != null) {\r\n return request.movietitle;\r\n }\r\n if (request.tvtitle != null) {\r\n return request.tvtitle;\r\n }\r\n\r\n if (!request.query && !request.identifier_key && !request.season && !request.episode) {\r\n return \"Update query\";\r\n }\r\n return request.query;\r\n };\r\n\r\n $scope.formatAdditional = function (request) {\r\n var result = [];\r\n //ID key: ID value\r\n //season\r\n //episode\r\n //author\r\n //title\r\n if (request.identifier_key) {\r\n var href;\r\n var key;\r\n if (request.identifier_key == \"imdbid\") {\r\n key = \"IMDB ID\";\r\n href = \"https://www.imdb.com/title/tt\"\r\n } else if (request.identifier_key == \"tvdbid\") {\r\n key = \"TVDB ID\";\r\n href = \"https://thetvdb.com/?tab=series&id=\"\r\n } else if (request.identifier_key == \"rid\") {\r\n key = \"TVRage ID\";\r\n href = \"internalapi/redirect_rid?rid=\"\r\n } else if (request.identifier_key == \"tmdb\") {\r\n key = \"TMDV ID\";\r\n href = \"https://www.themoviedb.org/movie/\"\r\n }\r\n href = href + request.identifier_value;\r\n href = $filter(\"dereferer\")(href);\r\n result.push(key + \": \" + '' + request.identifier_value + \"\");\r\n }\r\n if (request.season) {\r\n result.push(\"Season: \" + request.season);\r\n }\r\n if (request.episode) {\r\n result.push(\"Episode: \" + request.episode);\r\n }\r\n if (request.author) {\r\n result.push(\"Author: \" + request.author);\r\n }\r\n if (request.title) {\r\n result.push(\"Title: \" + request.title);\r\n }\r\n return $sce.trustAsHtml(result.join(\", \"));\r\n };\r\n\r\n\r\n\r\n\r\n}\r\nSearchHistoryController.$inject = [\"$scope\", \"$state\", \"SearchHistoryService\", \"ConfigService\", \"history\", \"$sce\", \"$filter\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('SearchController', SearchController);\r\n\r\nfunction SearchController($scope, $http, $stateParams, $state, $window, $filter, $sce, growl, SearchService, focus, ConfigService, HydraAuthService, CategoriesService, blockUI, $element, ModalService, SearchHistoryService) {\r\n\r\n function getNumberOrUndefined(number) {\r\n if (_.isUndefined(number) || _.isNaN(number) || number == \"\") {\r\n return undefined;\r\n }\r\n number = parseInt(number);\r\n if (_.isNumber(number)) {\r\n return number;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n //Fill the form with the search values we got from the state params (so that their values are the same as in the current url)\r\n $scope.mode = $stateParams.mode;\r\n $scope.categories = _.filter(CategoriesService.getAll(), function (c) {\r\n return c.mayBeSelected && c.ignoreResults != \"internal\" && c.ignoreResults != \"always\";\r\n });\r\n if (angular.isDefined($stateParams.category) && $stateParams.category) {\r\n $scope.category = CategoriesService.getByName($stateParams.category);\r\n } else {\r\n $scope.category = CategoriesService.getDefault();\r\n }\r\n $scope.category = (_.isUndefined($stateParams.category) || $stateParams.category == \"\") ? CategoriesService.getDefault() : CategoriesService.getByName($stateParams.category);\r\n $scope.tmdbid = $stateParams.tmdbid;\r\n $scope.tvdbid = $stateParams.tvdbid;\r\n $scope.imdbid = $stateParams.imdbid;\r\n $scope.rid = $stateParams.rid;\r\n $scope.title = $stateParams.title;\r\n $scope.season = $stateParams.season;\r\n $scope.episode = $stateParams.episode;\r\n $scope.query = $stateParams.query;\r\n $scope.minsize = getNumberOrUndefined($stateParams.minsize);\r\n $scope.maxsize = getNumberOrUndefined($stateParams.maxsize);\r\n $scope.minage = getNumberOrUndefined($stateParams.minage);\r\n $scope.maxage = getNumberOrUndefined($stateParams.maxage);\r\n if (!_.isUndefined($scope.title) && _.isUndefined($scope.query)) {\r\n //$scope.query = $scope.title;\r\n }\r\n if (!angular.isUndefined($stateParams.indexers)) {\r\n $scope.indexers = decodeURIComponent($stateParams.indexers).split(\"|\");\r\n }\r\n\r\n $scope.showIndexers = {};\r\n\r\n $scope.searchHistory = [];\r\n\r\n var safeConfig = ConfigService.getSafe();\r\n $scope.showIndexerSelection = HydraAuthService.getUserInfos().showIndexerSelection;\r\n\r\n //Doesn't belong here but whatever\r\n var firstStartThreeDaysAgo = ConfigService.getSafe().firstStart < moment().subtract(3, \"days\").unix();\r\n var doShowSurvey = (ConfigService.getSafe().pollShown == 0 && firstStartThreeDaysAgo) || ConfigService.getSafe().pollShown == 1;\r\n if (doShowSurvey) {\r\n var message;\r\n if (ConfigService.getSafe().pollShown == 0) {\r\n message = \"Dear user, I would like to ask you to answer a short query about NZB Hydra. It is absolutely anonymous and will not take more than a couple of minutes. You would help me a lot!\";\r\n } else {\r\n message = \"Dear user, thank you for answering my last survey. Unfortunately I'm an idiot and didn't know that SurveyMonkey would only show me the first 100 results. Please be so kind and answer the new survey :-)\";\r\n }\r\n ModalService.open(\"User query\",\r\n message, {\r\n yes: {\r\n onYes: function () {\r\n $window.open($filter(\"dereferer\")(\"https://goo.gl/forms/F3PwtEor2krBxLcR2\"), \"_blank\");\r\n $http.get(\"internalapi/pollshown\", {params: {selection: 1}});\r\n ConfigService.getSafe().pollShown = 2;\r\n },\r\n text: \"Yes, I want to help. Take me there.\"\r\n },\r\n cancel: {\r\n onCancel: function () {\r\n $http.get(\"internalapi/pollshown\", {params: {selection: 0}});\r\n ConfigService.getSafe().pollShown = 0;\r\n },\r\n text: \"Not now. Remind me.\"\r\n },\r\n no: {\r\n onNo: function () {\r\n $http.get(\"internalapi/pollshown\", {params: {selection: -1}});\r\n ConfigService.getSafe().pollShown = -1;\r\n },\r\n text: \"Nah, feck off!\"\r\n }\r\n });\r\n }\r\n\r\n\r\n $scope.typeAheadWait = 300;\r\n $scope.selectedItem = \"\";\r\n $scope.autocompleteLoading = false;\r\n $scope.isAskById = $scope.category.supportsById;\r\n $scope.isById = {value: true}; //If true the user wants to search by id so we enable autosearch. Was unable to achieve this using a simple boolean\r\n $scope.availableIndexers = [];\r\n $scope.autocompleteClass = \"autocompletePosterMovies\";\r\n\r\n $scope.toggle = function (searchCategory) {\r\n $scope.category = searchCategory;\r\n\r\n //Show checkbox to ask if the user wants to search by ID (using autocomplete)\r\n $scope.isAskById = $scope.category.supportsById;\r\n\r\n focus('searchfield');\r\n\r\n //Hacky way of triggering the autocomplete loading\r\n var searchModel = $element.find(\"#searchfield\").controller(\"ngModel\");\r\n if (angular.isDefined(searchModel.$viewValue)) {\r\n searchModel.$setViewValue(searchModel.$viewValue + \" \");\r\n }\r\n\r\n if (safeConfig.searching.enableCategorySizes) {\r\n var min = searchCategory.min;\r\n var max = searchCategory.max;\r\n if (_.isNumber(min)) {\r\n $scope.minsize = min;\r\n } else {\r\n $scope.minsize = \"\";\r\n }\r\n if (_.isNumber(max)) {\r\n $scope.maxsize = max;\r\n } else {\r\n $scope.maxsize = \"\";\r\n }\r\n }\r\n\r\n $scope.availableIndexers = getAvailableIndexers();\r\n\r\n\r\n };\r\n\r\n\r\n // Any function returning a promise object can be used to load values asynchronously\r\n $scope.getAutocomplete = function (val) {\r\n $scope.autocompleteLoading = true;\r\n //Expected model returned from API:\r\n //label: What to show in the results\r\n //title: Will be used for file search\r\n //value: Will be used as extraInfo (ttid oder tvdb id)\r\n //poster: url of poster to show\r\n\r\n //Don't use autocomplete if checkbox is disabled\r\n if (!$scope.isById.value) {\r\n return {};\r\n }\r\n\r\n if ($scope.category.name.indexOf(\"movies\") > -1) {\r\n return $http.get('internalapi/autocomplete?type=movie', {\r\n params: {\r\n input: val\r\n }\r\n }).then(function (response) {\r\n $scope.autocompleteLoading = false;\r\n return response.data.results;\r\n });\r\n } else if ($scope.category.name.indexOf(\"tv\") > -1) {\r\n\r\n return $http.get('internalapi/autocomplete?type=tv', {\r\n params: {\r\n input: val\r\n }\r\n }).then(function (response) {\r\n $scope.autocompleteLoading = false;\r\n return response.data.results;\r\n });\r\n } else {\r\n return {};\r\n }\r\n };\r\n\r\n\r\n $scope.startSearch = function () {\r\n blockUI.start(\"Searching...\");\r\n var indexers = angular.isUndefined($scope.indexers) ? undefined : $scope.indexers.join(\"|\");\r\n SearchService.search($scope.category.name, $scope.query, $scope.tmdbid, $scope.imdbid, $scope.title, $scope.tvdbid, $scope.rid, $scope.season, $scope.episode, $scope.minsize, $scope.maxsize, $scope.minage, $scope.maxage, indexers, $scope.mode).then(function () {\r\n $state.go(\"root.search.results\", {\r\n minsize: $scope.minsize,\r\n maxsize: $scope.maxsize,\r\n minage: $scope.minage,\r\n maxage: $scope.maxage\r\n }, {\r\n inherit: true\r\n });\r\n $scope.tmdbid = undefined;\r\n $scope.imdbid = undefined;\r\n $scope.tvdbid = undefined;\r\n });\r\n };\r\n\r\n function getSelectedIndexers() {\r\n var activatedIndexers = _.filter($scope.availableIndexers).filter(function (indexer) {\r\n return indexer.activated;\r\n });\r\n return _.pluck(activatedIndexers, \"name\").join(\"|\");\r\n }\r\n\r\n\r\n $scope.goToSearchUrl = function () {\r\n var stateParams = {};\r\n if ($scope.category.name.indexOf(\"movies\") > -1) {\r\n stateParams.title = $scope.title;\r\n stateParams.mode = \"movie\";\r\n } else if ($scope.category.name.indexOf(\"tv\") > -1) {\r\n stateParams.mode = \"tvsearch\";\r\n stateParams.title = $scope.title;\r\n } else if ($scope.category.name == \"ebook\") {\r\n stateParams.mode = \"ebook\";\r\n } else {\r\n stateParams.mode = \"search\";\r\n }\r\n\r\n stateParams.tmdbid = $scope.tmdbid;\r\n stateParams.tvdbid = $scope.tvdbid;\r\n stateParams.title = $scope.title;\r\n stateParams.season = $scope.season;\r\n stateParams.episode = $scope.episode;\r\n stateParams.query = $scope.query;\r\n stateParams.minsize = $scope.minsize;\r\n stateParams.maxsize = $scope.maxsize;\r\n stateParams.minage = $scope.minage;\r\n stateParams.maxage = $scope.maxage;\r\n stateParams.category = $scope.category.name;\r\n stateParams.indexers = encodeURIComponent(getSelectedIndexers());\r\n $state.go(\"root.search\", stateParams, {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n $scope.repeatSearch = function (request) {\r\n $state.go(\"root.search\", SearchHistoryService.getStateParamsForRepeatedSearch(request), {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n\r\n $scope.selectAutocompleteItem = function ($item) {\r\n $scope.selectedItem = $item;\r\n $scope.title = $item.title;\r\n if ($scope.category.name.indexOf(\"movies\") > -1) {\r\n $scope.tmdbid = $item.value;\r\n } else if ($scope.category.name.indexOf(\"tv\") > -1) {\r\n $scope.tvdbid = $item.value;\r\n }\r\n $scope.query = \"\";\r\n $scope.goToSearchUrl();\r\n };\r\n\r\n $scope.startQuerySearch = function () {\r\n if (!$scope.query) {\r\n growl.error(\"You didn't enter a query...\");\r\n } else {\r\n //Reset values because they might've been set from the last search\r\n $scope.title = undefined;\r\n $scope.tmdbid = undefined;\r\n $scope.tvdbid = undefined;\r\n $scope.season = undefined;\r\n $scope.episode = undefined;\r\n $scope.goToSearchUrl();\r\n }\r\n };\r\n\r\n\r\n $scope.autocompleteActive = function () {\r\n return $scope.category.supportsById;\r\n };\r\n\r\n $scope.seriesSelected = function () {\r\n return $scope.category.name.indexOf(\"tv\") > -1;\r\n };\r\n\r\n $scope.toggleIndexer = function (indexer) {\r\n $scope.indexers[indexer] = !$scope.indexers[indexer]\r\n };\r\n\r\n\r\n function isIndexerPreselected(indexer) {\r\n if (angular.isUndefined($scope.indexers)) {\r\n return indexer.preselect;\r\n } else {\r\n return _.contains($scope.indexers, indexer.name);\r\n }\r\n\r\n }\r\n\r\n\r\n function getAvailableIndexers() {\r\n return _.chain(safeConfig.indexers).filter(function (indexer) {\r\n return indexer.enabled && indexer.showOnSearch && (angular.isUndefined(indexer.categories) || indexer.categories.length == 0 || $scope.category.name == \"all\" || indexer.categories.indexOf($scope.category.name) > -1);\r\n }).sortBy(function (indexer) {\r\n return indexer.name.toLowerCase();\r\n })\r\n .map(function (indexer) {\r\n return {name: indexer.name, activated: isIndexerPreselected(indexer), categories: indexer.categories};\r\n }).value();\r\n }\r\n\r\n\r\n $scope.toggleAllIndexers = function () {\r\n angular.forEach($scope.availableIndexers, function (indexer) {\r\n indexer.activated = !indexer.activated;\r\n })\r\n };\r\n\r\n $scope.searchInputChanged = function () {\r\n $scope.$broadcast(\"searchInputChanged\", $scope.query != $stateParams.query ? $scope.query : null, $scope.minage, $scope.maxage, $scope.minsize, $scope.maxsize);\r\n };\r\n\r\n\r\n $scope.formatRequest = function (request) {\r\n return $sce.trustAsHtml(SearchHistoryService.formatRequest(request, false, true, true, true));\r\n };\r\n\r\n $scope.availableIndexers = getAvailableIndexers();\r\n\r\n\r\n function getAndSetSearchRequests() {\r\n SearchHistoryService.getSearchHistoryForSearching().success(function (data) {\r\n $scope.searchHistory = data.searchRequests;\r\n });\r\n }\r\n\r\n if ($scope.mode) {\r\n $scope.startSearch();\r\n } else {\r\n //Getting the search history only makes sense when we're not currently searching\r\n getAndSetSearchRequests();\r\n }\r\n\r\n $scope.$on(\"searchResultsShown\", function() {\r\n getAndSetSearchRequests();\r\n });\r\n\r\n\r\n\r\n\r\n}\r\nSearchController.$inject = [\"$scope\", \"$http\", \"$stateParams\", \"$state\", \"$window\", \"$filter\", \"$sce\", \"growl\", \"SearchService\", \"focus\", \"ConfigService\", \"HydraAuthService\", \"CategoriesService\", \"blockUI\", \"$element\", \"ModalService\", \"SearchHistoryService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('RestartService', RestartService);\r\n\r\nfunction RestartService(blockUI, $timeout, $window, growl, NzbHydraControlService) {\r\n\r\n return {\r\n restart: restart,\r\n countdown: countdown\r\n };\r\n\r\n\r\n function internalCaR(message, timer) {\r\n\r\n if (timer >= 1) {\r\n blockUI.start(message + \"Restarting. Will reload page in \" + timer + \" seconds...\");\r\n $timeout(function () {\r\n internalCaR(message, timer - 1)\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n blockUI.start(\"Reloading page...\");\r\n $window.location.reload();\r\n }, 1000);\r\n }\r\n }\r\n \r\n function countdown() {\r\n internalCaR(\"\", 15);\r\n }\r\n\r\n function restart(message) {\r\n message = angular.isDefined(message) ? message + \" \" : \"\";\r\n NzbHydraControlService.restart().then(internalCaR(message, 15),\r\n function () {\r\n growl.info(\"Unable to send restart command.\");\r\n }\r\n )\r\n }\r\n}\r\nRestartService.$inject = [\"blockUI\", \"$timeout\", \"$window\", \"growl\", \"NzbHydraControlService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('NzbHydraControlService', NzbHydraControlService);\r\n\r\nfunction NzbHydraControlService($http) {\r\n\r\n return {\r\n restart: restart,\r\n shutdown: shutdown,\r\n deleteLogAndDb: deleteLogAndDb\r\n };\r\n\r\n function restart() {\r\n return $http.get(\"internalapi/restart\");\r\n }\r\n\r\n function shutdown() {\r\n return $http.get(\"internalapi/shutdown\");\r\n }\r\n\r\n function deleteLogAndDb() {\r\n return $http.get(\"internalapi/deleteloganddb\");\r\n }\r\n}\r\nNzbHydraControlService.$inject = [\"$http\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('NzbDownloadService', NzbDownloadService);\r\n\r\nfunction NzbDownloadService($http, ConfigService, DownloaderCategoriesService) {\r\n\r\n var service = {\r\n download: download,\r\n getEnabledDownloaders: getEnabledDownloaders\r\n };\r\n\r\n return service;\r\n\r\n function sendNzbAddCommand(downloader, searchresultids, category) {\r\n var params = {downloader: downloader.name, searchresultids: angular.toJson(searchresultids)};\r\n if (category != \"No category\") {\r\n params[\"category\"] = category;\r\n }\r\n return $http.put(\"internalapi/addnzbs\", params);\r\n }\r\n \r\n function download(downloader, searchresultids) {\r\n \r\n var category = downloader.defaultCategory;\r\n \r\n if ((_.isUndefined(category) || category == \"\" || category == null) && category != \"No category\") {\r\n return DownloaderCategoriesService.openCategorySelection(downloader).then(function (category) {\r\n return sendNzbAddCommand(downloader, searchresultids, category)\r\n }, function (error) {\r\n throw error;\r\n });\r\n } else {\r\n return sendNzbAddCommand(downloader, searchresultids, category)\r\n }\r\n }\r\n \r\n function getEnabledDownloaders() {\r\n return _.filter(ConfigService.getSafe().downloaders, \"enabled\");\r\n }\r\n}\r\nNzbDownloadService.$inject = [\"$http\", \"ConfigService\", \"DownloaderCategoriesService\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('ModalService', ModalService);\r\n\r\nfunction ModalService($uibModal, $q) {\r\n \r\n return {\r\n open: open\r\n };\r\n \r\n function open(headline, message, params, size) {\r\n //params example:\r\n /*\r\n var p =\r\n {\r\n yes: {\r\n text: \"Yes\", //default: Ok\r\n onYes: function() {}\r\n },\r\n no: { //default: Empty\r\n text: \"No\",\r\n onNo: function () {\r\n }\r\n },\r\n cancel: { \r\n text: \"Cancel\", //default: Cancel\r\n onCancel: function () {\r\n }\r\n }\r\n };\r\n */\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'static/html/modal.html',\r\n controller: 'ModalInstanceCtrl',\r\n size: angular.isDefined(size) ? size : \"md\",\r\n resolve: {\r\n headline: function () {\r\n return headline;\r\n },\r\n message: function(){ \r\n return message;\r\n },\r\n params: function() {\r\n return params;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(function() {\r\n \r\n }, function() {\r\n \r\n });\r\n }\r\n \r\n}\r\nModalService.$inject = [\"$uibModal\", \"$q\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .controller('ModalInstanceCtrl', ModalInstanceCtrl);\r\n\r\nfunction ModalInstanceCtrl($scope, $uibModalInstance, headline, message, params) {\r\n\r\n $scope.message = message;\r\n $scope.headline = headline;\r\n $scope.params = params;\r\n $scope.showCancel = angular.isDefined(params) && angular.isDefined(params.cancel);\r\n $scope.showNo = angular.isDefined(params) && angular.isDefined(params.no);\r\n\r\n if (angular.isUndefined(params) || angular.isUndefined(params.yes)) {\r\n $scope.params = {\r\n yes: {\r\n text: \"Ok\"\r\n }\r\n }\r\n } else if (angular.isUndefined(params.yes.text)) {\r\n params.yes.text = \"Yes\";\r\n }\r\n \r\n if (angular.isDefined(params) && angular.isDefined(params.no) && angular.isUndefined($scope.params.no.text)) {\r\n $scope.params.no.text = \"No\";\r\n }\r\n \r\n if (angular.isDefined(params) && angular.isDefined(params.cancel) && angular.isUndefined($scope.params.cancel.text)) {\r\n $scope.params.cancel.text = \"Cancel\";\r\n }\r\n\r\n $scope.yes = function () {\r\n $uibModalInstance.close();\r\n if(angular.isDefined(params) && angular.isDefined(params.yes) && angular.isDefined($scope.params.yes.onYes)) {\r\n $scope.params.yes.onYes();\r\n }\r\n };\r\n\r\n $scope.no = function () {\r\n $uibModalInstance.close();\r\n if (angular.isDefined(params) && angular.isDefined(params.no) && angular.isDefined($scope.params.no.onNo)) {\r\n $scope.params.no.onNo();\r\n }\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n if (angular.isDefined(params.cancel) && angular.isDefined($scope.params.cancel.onCancel)) {\r\n $scope.params.cancel.onCancel();\r\n }\r\n };\r\n\r\n $scope.$on(\"modal.closing\", function (targetScope, reason, c) {\r\n if (reason == \"backdrop click\") {\r\n $scope.cancel();\r\n }\r\n });\r\n}\r\nModalInstanceCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"headline\", \"message\", \"params\"];\r\n","angular\n .module('nzbhydraApp')\n .service('GeneralModalService', GeneralModalService);\n\nfunction GeneralModalService() {\n \n \n this.open = function (msg, template, templateUrl, size, data) {\n \n //Prevent circular dependency\n var myInjector = angular.injector([\"ng\", \"ui.bootstrap\"]);\n var $uibModal = myInjector.get(\"$uibModal\");\n var params = {};\n \n if(angular.isUndefined(size)) {\n params[\"size\"] = size;\n }\n if (angular.isUndefined(template)) {\n if (angular.isUndefined(templateUrl)) {\n params[\"template\"] = '
' + msg + '
';\n } else {\n params[\"templateUrl\"] = templateUrl;\n }\n } else {\n params[\"template\"] = template;\n }\n params[\"resolve\"] = \n {\n data: function () {\n return data;\n }\n };\n \n var modalInstance = $uibModal.open(params);\n\n modalInstance.result.then();\n\n };\n \n \n}","angular\r\n .module('nzbhydraApp')\r\n .controller('LoginController', LoginController);\r\n\r\nfunction LoginController($scope, RequestsErrorHandler, $state, HydraAuthService, growl) {\r\n $scope.user = {};\r\n $scope.login = function () {\r\n RequestsErrorHandler.specificallyHandled(function () {\r\n HydraAuthService.login($scope.user.username, $scope.user.password).then(function () {\r\n HydraAuthService.setLoggedInByForm();\r\n growl.info(\"Login successful!\");\r\n $state.go(\"root.search\");\r\n }, function () {\r\n growl.error(\"Login failed!\")\r\n });\r\n });\r\n }\r\n}\r\nLoginController.$inject = [\"$scope\", \"RequestsErrorHandler\", \"$state\", \"HydraAuthService\", \"growl\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('IndexerStatusesController', IndexerStatusesController);\r\n\r\n function IndexerStatusesController($scope, $http, statuses) {\r\n $scope.statuses = statuses.data.indexerStatuses;\r\n \r\n $scope.isInPast = function (timestamp) {\r\n return timestamp * 1000 < (new Date).getTime();\r\n };\r\n \r\n $scope.enable = function(indexerName) {\r\n $http.get(\"internalapi/enableindexer\", {params: {name: indexerName}}).then(function(response){\r\n $scope.statuses = response.data.indexerStatuses;\r\n });\r\n }\r\n\r\n }\r\n IndexerStatusesController.$inject = [\"$scope\", \"$http\", \"statuses\"];\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .filter('formatDate', formatDate);\r\n\r\nfunction formatDate(dateFilter) {\r\n return function(timestamp, hidePast) {\r\n if (timestamp) {\r\n if (timestamp * 1000 < (new Date).getTime() && hidePast) {\r\n return \"\"; //\r\n }\r\n \r\n var t = timestamp * 1000;\r\n t = dateFilter(t, 'yyyy-MM-dd HH:mm');\r\n return t;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n}\r\nformatDate.$inject = [\"dateFilter\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .filter('reformatDate', reformatDate);\r\n\r\nfunction reformatDate() {\r\n return function (date) {\r\n //Date in database is saved as UTC without timezone information\r\n return moment.utc(date, \"ddd, D MMM YYYY HH:mm:ss z\").local().format(\"YYYY-MM-DD HH:mm\");\r\n \r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .controller('IndexController', IndexController);\r\n\r\nfunction IndexController($scope, $http, $stateParams, $state) {\r\n console.log(\"Index\");\r\n $state.go(\"root.search\");\r\n}\r\nIndexController.$inject = [\"$scope\", \"$http\", \"$stateParams\", \"$state\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('HydraAuthService', HydraAuthService);\r\n\r\nfunction HydraAuthService($q, $rootScope, $http, bootstrapped) {\r\n\r\n var loggedIn = bootstrapped.username;\r\n\r\n \r\n return {\r\n isLoggedIn: isLoggedIn,\r\n login: login,\r\n askForPassword: askForPassword,\r\n logout: logout,\r\n setLoggedInByForm: setLoggedInByForm,\r\n getUserRights: getUserRights,\r\n setLoggedInByBasic: setLoggedInByBasic,\r\n getUserName: getUserName,\r\n getUserInfos: getUserInfos\r\n };\r\n\r\n\r\n\r\n function getUserInfos() {\r\n return bootstrapped;\r\n }\r\n\r\n \r\n function isLoggedIn() {\r\n return bootstrapped.username;\r\n }\r\n \r\n function setLoggedInByForm() {\r\n $rootScope.$broadcast(\"user:loggedIn\");\r\n }\r\n\r\n function setLoggedInByBasic(_maySeeStats, _maySeeAdmin, _username) {\r\n }\r\n \r\n function login(username, password) {\r\n var deferred = $q.defer();\r\n return $http.post(\"auth/login\", data = {username: username, password: password}).then(function (data) {\r\n bootstrapped = data.data;\r\n loggedIn = true;\r\n $rootScope.$broadcast(\"user:loggedIn\");\r\n deferred.resolve();\r\n });\r\n return deferred;\r\n }\r\n\r\n function askForPassword(params) {\r\n return $http.get(\"internalapi/askforpassword\", {params: params}).then(function (data) {\r\n bootstrapped = data.data;\r\n return bootstrapped;\r\n });\r\n\r\n }\r\n \r\n function logout() {\r\n var deferred = $q.defer();\r\n return $http.post(\"auth/logout\").then(function(data) {\r\n $rootScope.$broadcast(\"user:loggedOut\");\r\n bootstrapped = data.data;\r\n loggedIn = false;\r\n deferred.resolve();\r\n });\r\n return deferred;\r\n }\r\n \r\n function getUserRights() {\r\n var userInfos = getUserInfos();\r\n return {maySeeStats: userInfos.maySeeStats, maySeeAdmin: userInfos.maySeeAdmin, maySeeSearch: userInfos.maySeeSearch};\r\n }\r\n \r\n function getUserName() {\r\n return bootstrapped.username;\r\n }\r\n\r\n\r\n \r\n \r\n \r\n \r\n}\r\nHydraAuthService.$inject = [\"$q\", \"$rootScope\", \"$http\", \"bootstrapped\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('HeaderController', HeaderController);\r\n\r\nfunction HeaderController($scope, $state, growl, HydraAuthService, $location) {\r\n\r\n\r\n $scope.showLoginout = false;\r\n $scope.oldUserName = null;\r\n\r\n function update() {\r\n\r\n $scope.userInfos = HydraAuthService.getUserInfos();\r\n if (!$scope.userInfos.authConfigured) {\r\n $scope.showAdmin = true;\r\n $scope.showStats = true;\r\n $scope.showLoginout = false;\r\n } else {\r\n if ($scope.userInfos.username) {\r\n $scope.showAdmin = $scope.userInfos.maySeeAdmin || !$scope.userInfos.adminRestricted;\r\n $scope.showStats = $scope.userInfos.maySeeStats || !$scope.userInfos.statsRestricted;\r\n $scope.showLoginout = true;\r\n $scope.username = $scope.userInfos.username;\r\n $scope.loginlogoutText = \"Logout \" + $scope.username;\r\n $scope.oldUserName = $scope.username;\r\n } else {\r\n $scope.showAdmin = !$scope.userInfos.adminRestricted;\r\n $scope.showStats = !$scope.userInfos.statsRestricted;\r\n $scope.loginlogoutText = \"Login\";\r\n $scope.showLoginout = $scope.userInfos.adminRestricted || $scope.userInfos.statsRestricted || $scope.userInfos.searchRestricted;\r\n $scope.username = \"\";\r\n }\r\n }\r\n }\r\n\r\n update();\r\n\r\n\r\n $scope.$on(\"user:loggedIn\", function (event, data) {\r\n update();\r\n });\r\n\r\n $scope.$on(\"user:loggedOut\", function (event, data) {\r\n update();\r\n });\r\n\r\n var bases = document.getElementsByTagName('base');\r\n var baseHref = null;\r\n\r\n if (bases.length > 0) {\r\n baseHref = bases[0].href;\r\n }\r\n\r\n $scope.loginout = function () {\r\n if (HydraAuthService.isLoggedIn()) {\r\n HydraAuthService.logout().then(function () {\r\n if ($scope.userInfos.authType === \"basic\") {\r\n growl.info(\"Logged out. Close your browser to make sure session is closed.\");\r\n }\r\n else if ($scope.userInfos.authType === \"form\") {\r\n growl.info(\"Logged out\");\r\n window.location.href = baseHref;\r\n }\r\n update();\r\n //$state.go(\"root.search\", null, {reload: true});\r\n });\r\n\r\n } else {\r\n if ($scope.userInfos.authType === \"basic\") {\r\n var params = {};\r\n if ($scope.oldUserName) {\r\n params = {\r\n old_username: $scope.oldUserName\r\n }\r\n }\r\n HydraAuthService.askForPassword(params).then(function () {\r\n growl.info(\"Login successful!\");\r\n update();\r\n $scope.oldUserName = null;\r\n $state.go(\"root.search\");\r\n })\r\n } else if ($scope.userInfos.authType === \"form\") {\r\n window.location.href = baseHref + \"login\";\r\n } else {\r\n growl.info(\"You shouldn't need to login but here you go!\");\r\n }\r\n }\r\n }\r\n}\r\nHeaderController.$inject = [\"$scope\", \"$state\", \"growl\", \"HydraAuthService\", \"$location\"];\r\n","hashCode = function (s) {\r\n return s.split(\"\").reduce(function (a, b) {\r\n a = ((a << 5) - a) + b.charCodeAt(0);\r\n return a & a\r\n }, 0);\r\n};\r\n\r\nangular\r\n .module('nzbhydraApp').run([\"formlyConfig\", \"formlyValidationMessages\", function (formlyConfig, formlyValidationMessages) {\r\n formlyValidationMessages.addStringMessage('required', 'This field is required');\r\n formlyConfig.extras.errorExistsAndShouldBeVisibleExpression = 'fc.$touched || form.$submitted';\r\n\r\n}]);\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .config([\"formlyConfigProvider\", function config(formlyConfigProvider) {\r\n formlyConfigProvider.extras.removeChromeAutoComplete = true;\r\n formlyConfigProvider.extras.explicitAsync = true;\r\n formlyConfigProvider.disableWarnings = window.onProd;\r\n\r\n\r\n formlyConfigProvider.setWrapper({\r\n name: 'settingWrapper',\r\n templateUrl: 'setting-wrapper.html'\r\n });\r\n\r\n\r\n formlyConfigProvider.setWrapper({\r\n name: 'fieldset',\r\n template: [\r\n '
',\r\n '{{options.templateOptions.label}}',\r\n '',\r\n '
'\r\n ].join(' ')\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'help',\r\n template: [\r\n '
',\r\n '
',\r\n '
{{ line }}
',\r\n '
',\r\n '
'\r\n ].join(' ')\r\n });\r\n\r\n\r\n formlyConfigProvider.setWrapper({\r\n name: 'logicalGroup',\r\n template: [\r\n ''\r\n ].join(' ')\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalInput',\r\n extends: 'input',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'timeOfDay',\r\n extends: 'horizontalInput',\r\n controller: ['$scope', function ($scope) {\r\n $scope.model[$scope.options.key] = moment.utc($scope.model[$scope.options.key]).toDate();\r\n }]\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'percentInput',\r\n template: [\r\n ''\r\n ].join(' ')\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'apiKeyInput',\r\n template: [\r\n '
',\r\n '',\r\n '',\r\n '',\r\n '
'\r\n ].join(' '),\r\n controller: function ($scope) {\r\n $scope.generate = function () {\r\n var result = \"\";\r\n var length = 24;\r\n var chars = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];\r\n $scope.model[$scope.options.key] = result;\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'testConnection',\r\n templateUrl: 'button-test-connection.html'\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalTestConnection',\r\n extends: 'testConnection',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'checkCaps',\r\n templateUrl: 'button-check-caps.html',\r\n controller: function ($scope, ConfigBoxService, ModalService) {\r\n $scope.message = \"\";\r\n $scope.uniqueId = hashCode($scope.model.name) + hashCode($scope.model.host);\r\n\r\n var testButton = \"#button-check-caps-\" + $scope.uniqueId;\r\n var testMessage = \"#message-check-caps-\" + $scope.uniqueId;\r\n\r\n function showSuccess() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-danger\");\r\n angular.element(testButton).addClass(\"btn-success\");\r\n }\r\n\r\n function showError() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-success\");\r\n angular.element(testButton).addClass(\"btn-danger\");\r\n }\r\n\r\n $scope.checkCaps = function () {\r\n angular.element(testButton).addClass(\"glyphicon-refresh-animate\");\r\n\r\n var url = \"internalapi/test_caps\";\r\n var params = {indexer: $scope.model.name, apikey: $scope.model.apikey, host: $scope.model.host};\r\n if (angular.isDefined($scope.model.username)) {\r\n params[\"username\"] = $scope.model.username;\r\n params[\"password\"] = $scope.model.password;\r\n }\r\n ConfigBoxService.checkCaps(url, params, $scope.model).then(function (data, model) {\r\n angular.element(testMessage).text(\"Supports: \" + data.supportedIds + \",\" ? data.supportedIds && data.supportedTypes : \"\" + data.supportedTypes);\r\n showSuccess();\r\n }, function (message) {\r\n angular.element(testMessage).text(message);\r\n showError();\r\n ModalService.open(\"Error testing capabilities\", 'The capabilities of the indexer could not be checked. You can set the IDs manually. Refer to the Wiki for the IDs supported by some indexers.

You may repeat the check at any time to try again.');\r\n }).finally(function () {\r\n angular.element(testButton).removeClass(\"glyphicon-refresh-animate\");\r\n });\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalCheckCaps',\r\n extends: 'checkCaps',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalApiKeyInput',\r\n extends: 'apiKeyInput',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalPercentInput',\r\n extends: 'percentInput',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'switch',\r\n template: \r\n '
'\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'duoSetting',\r\n extends: 'input',\r\n defaultOptions: {\r\n className: 'col-md-9',\r\n templateOptions: {\r\n type: 'number',\r\n noRow: true,\r\n label: ''\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalSwitch',\r\n extends: 'switch',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalSelect',\r\n extends: 'select',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalMultiselect',\r\n defaultOptions: {\r\n templateOptions: {\r\n optionsAttr: 'bs-options',\r\n ngOptions: 'option[to.valueProp] as option in to.options | filter: $select.search',\r\n valueProp: 'id',\r\n labelProp: 'label',\r\n getPlaceholder: function() {return \"\";}\r\n }\r\n },\r\n templateUrl: 'ui-select-multiple.html',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'label',\r\n template: ''\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'duolabel',\r\n extends: 'label',\r\n defaultOptions: {\r\n className: 'col-md-2',\r\n templateOptions: {\r\n label: '-'\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'repeatSection',\r\n templateUrl: 'repeatSection.html',\r\n controller: function ($scope) {\r\n $scope.formOptions = {formState: $scope.formState};\r\n $scope.addNew = addNew;\r\n $scope.remove = remove;\r\n $scope.copyFields = copyFields;\r\n\r\n function copyFields(fields) {\r\n fields = angular.copy(fields);\r\n $scope.repeatfields = fields;\r\n return fields;\r\n }\r\n\r\n $scope.clear = function (field) {\r\n return _.mapObject(field, function (key, val) {\r\n if (typeof val === 'object') {\r\n return $scope.clear(val);\r\n }\r\n return undefined;\r\n\r\n });\r\n };\r\n\r\n\r\n function addNew() {\r\n $scope.model[$scope.options.key] = $scope.model[$scope.options.key] || [];\r\n var repeatsection = $scope.model[$scope.options.key];\r\n var newsection = angular.copy($scope.options.templateOptions.defaultModel);\r\n repeatsection.push(newsection);\r\n }\r\n\r\n function remove($index) {\r\n $scope.model[$scope.options.key].splice($index, 1);\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'arrayConfig',\r\n templateUrl: 'arrayConfig.html',\r\n controller: function ($scope, $uibModal, growl) {\r\n $scope.formOptions = {formState: $scope.formState};\r\n $scope._showBox = _showBox;\r\n $scope.showBox = showBox;\r\n $scope.isInitial = false;\r\n\r\n $scope.presets = $scope.options.data.presets($scope.model);\r\n\r\n\r\n function _showBox(model, parentModel, isInitial, callback) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'configBox.html',\r\n controller: 'ConfigBoxInstanceController',\r\n size: 'lg',\r\n resolve: {\r\n model: function () {\r\n return model;\r\n },\r\n fields: function () {\r\n return $scope.options.data.fieldsFunction(model, parentModel, isInitial, angular.injector());\r\n },\r\n isInitial: function () {\r\n return isInitial\r\n },\r\n parentModel: function () {\r\n return parentModel;\r\n },\r\n data: function () {\r\n return $scope.options.data;\r\n }\r\n }\r\n });\r\n\r\n\r\n modalInstance.result.then(function () {\r\n $scope.form.$setDirty(true);\r\n if (angular.isDefined(callback)) {\r\n callback(true);\r\n }\r\n }, function () {\r\n if (angular.isDefined(callback)) {\r\n callback(false);\r\n }\r\n });\r\n }\r\n\r\n function showBox(model, parentModel) {\r\n $scope._showBox(model, parentModel, false)\r\n }\r\n\r\n $scope.addEntry = function (entriesCollection, preset) {\r\n if ($scope.options.data.checkAddingAllowed(entriesCollection, preset)) {\r\n var model = angular.copy($scope.options.data.defaultModel);\r\n if (angular.isDefined(preset)) {\r\n _.extend(model, preset);\r\n }\r\n\r\n $scope.isInitial = true;\r\n\r\n $scope._showBox(model, entriesCollection, true, function (isSubmitted) {\r\n if (isSubmitted) {\r\n entriesCollection.push(model);\r\n }\r\n });\r\n } else {\r\n growl.error(\"That predefined indexer is already configured.\"); //For now this is the only case where adding is forbidden so we use this hardcoded message \"for now\"... (;-))\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n });\r\n\r\n }]);\r\n\r\n\r\nangular.module('nzbhydraApp').controller('ConfigBoxInstanceController', [\"$scope\", \"$q\", \"$uibModalInstance\", \"$http\", \"model\", \"fields\", \"isInitial\", \"parentModel\", \"data\", \"growl\", function ($scope, $q, $uibModalInstance, $http, model, fields, isInitial, parentModel, data, growl) {\r\n\r\n $scope.model = model;\r\n $scope.fields = fields;\r\n $scope.isInitial = isInitial;\r\n $scope.allowDelete = data.allowDeleteFunction(model);\r\n $scope.spinnerActive = false;\r\n $scope.needsConnectionTest = false;\r\n \r\n $scope.obSubmit = function () {\r\n console.log($scope);\r\n if ($scope.form.$valid) {\r\n \r\n var a = data.checkBeforeClose($scope, model).then(function() {\r\n $uibModalInstance.close($scope);\r\n });\r\n } else {\r\n growl.error(\"Config invalid. Please check your settings.\");\r\n angular.forEach($scope.form.$error, function (error) {\r\n angular.forEach(error, function (field) {\r\n field.$setTouched();\r\n });\r\n });\r\n }\r\n };\r\n\r\n $scope.reset = function () {\r\n $scope.reset();\r\n };\r\n\r\n $scope.deleteEntry = function () {\r\n parentModel.splice(parentModel.indexOf(model), 1);\r\n $uibModalInstance.close($scope);\r\n };\r\n\r\n $scope.reset = function () {\r\n if (angular.isDefined(data.resetFunction)) {\r\n data.resetFunction($scope);\r\n }\r\n };\r\n\r\n $scope.$on(\"modal.closing\", function (targetScope, reason) {\r\n if (reason == \"backdrop click\") {\r\n $scope.reset($scope);\r\n }\r\n });\r\n}]);\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('ConfigBoxService', ConfigBoxService);\r\n\r\nfunction ConfigBoxService($http, $q) {\r\n\r\n return {\r\n checkConnection: checkConnection,\r\n checkCaps: checkCaps\r\n };\r\n\r\n function checkConnection(url, settings) {\r\n var deferred = $q.defer();\r\n\r\n $http.post(url, settings).success(function (result) {\r\n //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click \r\n if (result.result) {\r\n deferred.resolve();\r\n } else {\r\n deferred.reject({checked: true, message: result.message});\r\n }\r\n }).error(function (result) {\r\n deferred.reject({checked: false, message: result.message});\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function checkCaps(url, params, model) {\r\n var deferred = $q.defer();\r\n\r\n $http.post(url, params).success(function (data) {\r\n //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click \r\n if (data.success) {\r\n model.search_ids = data.supportedIds;\r\n model.searchTypes = data.supportedTypes;\r\n if (data.supportsAllCategories) { //Don't display all the categories, will be replaced with placeholder \"All categories\"\r\n model.categories = [];\r\n } else {\r\n model.categories = data.supportedCategories;\r\n }\r\n model.animeCategory = data.animeCategory;\r\n model.audiobookCategory = data.audiobookCategory;\r\n model.comicCategory = data.comicCategory;\r\n model.ebookCategory = data.ebookCategory;\r\n model.magazineCategory = data.magazineCategory;\r\n model.backend = data.backend;\r\n deferred.resolve({supportedIds: data.supportedIds, supportedTypes: data.supportedTypes}, model);\r\n } else {\r\n deferred.reject(data.message);\r\n }\r\n }).error(function () {\r\n deferred.reject(\"Unknown error\");\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n}\r\nConfigBoxService.$inject = [\"$http\", \"$q\"];\r\n\r\n\r\n\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('FileDownloadService', FileDownloadService);\r\n\r\nfunction FileDownloadService($http, growl ) {\r\n\r\n var service = {\r\n downloadFile: downloadFile\r\n };\r\n\r\n return service;\r\n \r\n function downloadFile(link, filename) {\r\n $http({method: 'GET', url: link, responseType: 'arraybuffer'}).success(function (data, status, headers, config) {\r\n var a = document.createElement('a');\r\n var blob = new Blob([data], {'type': \"application/octet-stream\"});\r\n a.href = URL.createObjectURL(blob);\r\n a.download = filename;\r\n\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }).error(function (data, status, headers, config) {\r\n growl.error(status);\r\n });\r\n\r\n }\r\n \r\n\r\n}\r\nFileDownloadService.$inject = [\"$http\", \"growl\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('DownloaderCategoriesService', DownloaderCategoriesService);\r\n\r\nfunction DownloaderCategoriesService($http, $q, $uibModal) {\r\n\r\n var categories = {};\r\n var selectedCategory = {};\r\n\r\n var service = {\r\n get: getCategories,\r\n invalidate: invalidate,\r\n select: select,\r\n openCategorySelection: openCategorySelection\r\n };\r\n\r\n var deferred;\r\n\r\n return service;\r\n\r\n\r\n function getCategories(downloader) {\r\n\r\n function loadAll() {\r\n if (angular.isDefined(categories) && angular.isDefined(categories.downloader)) {\r\n var deferred = $q.defer();\r\n deferred.resolve(categories.downloader);\r\n return deferred.promise;\r\n }\r\n \r\n return $http.get('internalapi/getcategories', {params: {downloader: downloader.name}})\r\n .then(function (categoriesResponse) {\r\n \r\n console.log(\"Updating downloader categories cache\");\r\n var categories = {downloader: categoriesResponse.data.categories};\r\n return categoriesResponse.data.categories;\r\n\r\n }, function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n return loadAll().then(function (categories) {\r\n return categories;\r\n }, function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n\r\n function openCategorySelection(downloader) {\r\n $uibModal.open({\r\n templateUrl: 'static/html/directives/addable-nzb-modal.html',\r\n controller: 'DownloaderCategorySelectionController',\r\n size: \"sm\",\r\n resolve: {\r\n categories: function () {\r\n return getCategories(downloader)\r\n }\r\n }\r\n });\r\n deferred = $q.defer();\r\n return deferred.promise;\r\n }\r\n\r\n function select(category) {\r\n selectedCategory = category;\r\n console.log(\"Selected category \" + category);\r\n deferred.resolve(category);\r\n }\r\n\r\n function invalidate() {\r\n console.log(\"Invalidating categories\");\r\n categories = undefined;\r\n }\r\n}\r\nDownloaderCategoriesService.$inject = [\"$http\", \"$q\", \"$uibModal\"];\r\n\r\nangular\r\n .module('nzbhydraApp').controller('DownloaderCategorySelectionController', [\"$scope\", \"$uibModalInstance\", \"DownloaderCategoriesService\", \"categories\", function ($scope, $uibModalInstance, DownloaderCategoriesService, categories) {\r\n console.log(categories);\r\n $scope.categories = categories;\r\n $scope.select = function (category) {\r\n DownloaderCategoriesService.select(category);\r\n $uibModalInstance.close($scope);\r\n }\r\n}]);","angular\r\n .module('nzbhydraApp')\r\n .controller('DownloadHistoryController', DownloadHistoryController);\r\n\r\n\r\nfunction DownloadHistoryController($scope, StatsService, downloads, ConfigService) {\r\n $scope.limit = 100;\r\n $scope.pagination = {\r\n current: 1\r\n };\r\n $scope.sortModel = {\r\n column: \"time\",\r\n sortMode: 2\r\n };\r\n $scope.filterModel = {};\r\n\r\n //Filter options\r\n $scope.indexersForFiltering = [];\r\n _.forEach(ConfigService.getSafe().indexers, function (indexer) {\r\n $scope.indexersForFiltering.push({label: indexer.name, id: indexer.name})\r\n });\r\n $scope.preselectedTimeInterval = {beforeDate: null, afterDate: null};\r\n $scope.successfulForFiltering = [{label: \"Succesful\", id: true}, {label: \"Unsuccesful\", id: false}, {label: \"Unknown\", id: null}];\r\n $scope.accessOptionsForFiltering = [{label: \"All\", value: \"all\"}, {label: \"API\", value: false}, {label: \"Internal\", value: true}];\r\n\r\n\r\n //Preloaded data\r\n $scope.nzbDownloads = downloads.data.nzbDownloads;\r\n $scope.totalDownloads = downloads.data.totalDownloads;\r\n\r\n\r\n $scope.update = function () {\r\n StatsService.getDownloadHistory($scope.pagination.current, $scope.limit, $scope.filterModel, $scope.sortModel).then(function (downloads) {\r\n $scope.nzbDownloads = downloads.data.nzbDownloads;\r\n $scope.totalDownloads = downloads.data.totalDownloads;\r\n });\r\n };\r\n\r\n\r\n $scope.$on(\"sort\", function (event, column, sortMode) {\r\n if (sortMode == 0) {\r\n column = \"time\";\r\n sortMode = 2;\r\n }\r\n $scope.sortModel = {\r\n column: column,\r\n sortMode: sortMode\r\n };\r\n $scope.$broadcast(\"newSortColumn\", column);\r\n $scope.update();\r\n });\r\n\r\n\r\n $scope.$on(\"filter\", function (event, column, filterModel, isActive) {\r\n if (filterModel.filter) {\r\n $scope.filterModel[column] = filterModel;\r\n } else {\r\n delete $scope.filterModel[column];\r\n }\r\n $scope.update();\r\n })\r\n\r\n}\r\nDownloadHistoryController.$inject = [\"$scope\", \"StatsService\", \"downloads\", \"ConfigService\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .filter('reformatDateEpoch', reformatDateEpoch);\r\n\r\nfunction reformatDateEpoch() {\r\n return function (date) {\r\n return moment.unix(date).local().format(\"YYYY-MM-DD HH:mm\");\r\n\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .factory('ConfigService', ConfigService);\r\n\r\nfunction ConfigService($http, $q, $cacheFactory, bootstrapped) {\r\n\r\n var cache = $cacheFactory(\"nzbhydra\");\r\n var safeConfig = bootstrapped.safeConfig;\r\n\r\n return {\r\n set: set,\r\n get: get,\r\n getSafe: getSafe,\r\n invalidateSafe: invalidateSafe,\r\n maySeeAdminArea: maySeeAdminArea\r\n };\r\n\r\n\r\n function set(newConfig) {\r\n $http.put('internalapi/setsettings', newConfig)\r\n .then(function (successresponse) {\r\n console.log(\"Settings saved. Updating cache\");\r\n cache.put(\"config\", newConfig);\r\n invalidateSafe();\r\n }, function (errorresponse) {\r\n console.log(\"Error saving settings:\");\r\n console.log(errorresponse);\r\n });\r\n }\r\n\r\n\r\n function get() {\r\n var config = cache.get(\"config\");\r\n if (angular.isUndefined(config)) {\r\n config = $http.get('internalapi/getconfig').then(function (data) {\r\n return data.data;\r\n });\r\n cache.put(\"config\", config);\r\n }\r\n\r\n return config;\r\n }\r\n\r\n function getSafe() {\r\n return safeConfig;\r\n }\r\n\r\n function invalidateSafe() {\r\n $http.get('internalapi/getsafeconfig').then(function (data) {\r\n safeConfig = data.data;\r\n });\r\n }\r\n\r\n function maySeeAdminArea() {\r\n function loadAll() {\r\n var maySeeAdminArea = cache.get(\"maySeeAdminArea\");\r\n if (!angular.isUndefined(maySeeAdminArea)) {\r\n var deferred = $q.defer();\r\n deferred.resolve(maySeeAdminArea);\r\n return deferred.promise;\r\n }\r\n\r\n return $http.get('internalapi/mayseeadminarea')\r\n .then(function (configResponse) {\r\n var config = configResponse.data;\r\n cache.put(\"maySeeAdminArea\", config);\r\n return configResponse.data;\r\n });\r\n }\r\n\r\n return loadAll().then(function (maySeeAdminArea) {\r\n return maySeeAdminArea;\r\n });\r\n }\r\n}\r\nConfigService.$inject = [\"$http\", \"$q\", \"$cacheFactory\", \"bootstrapped\"];","angular\r\n .module('nzbhydraApp')\r\n .factory('ConfigFields', ConfigFields);\r\n\r\nfunction ConfigFields($injector) {\r\n\r\n var restartWatcher;\r\n\r\n return {\r\n getFields: getFields,\r\n setRestartWatcher: setRestartWatcher\r\n };\r\n\r\n function setRestartWatcher(restartWatcherFunction) {\r\n restartWatcher = restartWatcherFunction;\r\n }\r\n\r\n\r\n function restartListener(field, newValue, oldValue) {\r\n if (newValue != oldValue) {\r\n restartWatcher();\r\n }\r\n }\r\n\r\n\r\n function ipValidator() {\r\n return {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n if (value) {\r\n return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/.test(value)\r\n || /^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$/.test(value);\r\n }\r\n return true;\r\n },\r\n message: '$viewValue + \" is not a valid IP Address\"'\r\n };\r\n }\r\n\r\n function regexValidator(regex, message, prefixViewValue) {\r\n return {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n if (value) {\r\n return regex.test(value);\r\n }\r\n return true;\r\n },\r\n message: (prefixViewValue ? '$viewValue + \" ' : '\" ') + message + '\"'\r\n };\r\n }\r\n\r\n\r\n function getCategoryFields() {\r\n var fields = [];\r\n var ConfigService = $injector.get(\"ConfigService\");\r\n var categories = ConfigService.getSafe().categories;\r\n fields.push({\r\n key: 'enableCategorySizes',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Category sizes',\r\n help: \"Preset min and max sizes depending on the selected category\"\r\n }\r\n });\r\n _.each(categories, function (category) {\r\n if (category.name != \"all\" && category.name != \"na\") {\r\n var categoryFields = [\r\n {\r\n key: \"categories.\" + category.name + '.requiredWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required words',\r\n placeholder: 'separate, with, commas, like, this'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.requiredRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required regex',\r\n help: 'Must be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.forbiddenWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden words',\r\n placeholder: 'separate, with, commas, like, this'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.forbiddenRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden regex',\r\n help: 'Must not be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.applyRestrictions',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Apply restrictions',\r\n options: [\r\n {name: 'Internal searches', value: 'internal'},\r\n {name: 'API searches', value: 'external'},\r\n {name: 'All searches', value: 'both'}\r\n ],\r\n help: \"For which type of search word restrictions will be applied\"\r\n }\r\n }\r\n ];\r\n categoryFields.push({\r\n wrapper: 'settingWrapper',\r\n templateOptions: {\r\n label: 'Size preset'\r\n },\r\n fieldGroup: [\r\n {\r\n key: \"categories.\" + category.name + '.min',\r\n type: 'duoSetting',\r\n templateOptions: {\r\n addonRight: {\r\n text: 'MB'\r\n }\r\n }\r\n },\r\n {\r\n type: 'duolabel'\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.max',\r\n type: 'duoSetting', templateOptions: {addonRight: {text: 'MB'}}\r\n }\r\n ]\r\n });\r\n categoryFields.push({\r\n key: \"categories.\" + category.name + '.newznabCategories',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Newznab categories',\r\n help: 'Map newznab categories to hydra categories',\r\n required: true\r\n },\r\n parsers: [function (value) {\r\n if (!value) {\r\n return value;\r\n }\r\n var arr = [];\r\n arr.push.apply(arr, value.split(\",\").map(Number));\r\n return arr;\r\n\r\n }]\r\n });\r\n categoryFields.push({\r\n key: \"categories.\" + category.name + '.ignoreResults',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Ignore results',\r\n options: [\r\n {name: 'For internal searches', value: 'internal'},\r\n {name: 'For API searches', value: 'external'},\r\n {name: 'Always', value: 'always'},\r\n {name: 'Never', value: 'never'}\r\n ],\r\n help: \"Ignore results from this category\"\r\n }\r\n });\r\n\r\n fields.push({\r\n wrapper: 'fieldset',\r\n templateOptions: {\r\n label: category.pretty\r\n },\r\n fieldGroup: categoryFields\r\n\r\n })\r\n }\r\n }\r\n );\r\n return fields;\r\n }\r\n\r\n function getFields(rootModel) {\r\n return {\r\n main: [\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Hosting'},\r\n fieldGroup: [\r\n {\r\n key: 'host',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Host',\r\n required: true,\r\n placeholder: 'IPv4/6 address to bind to',\r\n help: 'I strongly recommend using a reverse proxy instead of exposing this directly. Requires restart.'\r\n },\r\n validators: {\r\n ipAddress: ipValidator()\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'port',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Port',\r\n required: true,\r\n placeholder: '5050',\r\n help: 'Requires restart'\r\n },\r\n validators: {\r\n port: regexValidator(/^\\d{1,5}$/, \"is no valid port\", true)\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'urlBase',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'URL base',\r\n placeholder: '/nzbhydra',\r\n help: 'Set when using an external proxy. Call using a trailing slash, e.g. http://www.domain.com/nzbhydra/'\r\n },\r\n validators: {\r\n urlBase: regexValidator(/^(\\/\\w+)*$/, \"Base URL needs to start with a slash and must not end with one\")\r\n }\r\n },\r\n {\r\n key: 'externalUrl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'External URL',\r\n placeholder: 'https://www.somedomain.com/nzbhydra/',\r\n help: 'Set to the full external URL so machines outside can use the generated NZB links.'\r\n }\r\n },\r\n {\r\n key: 'useLocalUrlForApiAccess',\r\n type: 'horizontalSwitch',\r\n hideExpression: '!model.externalUrl',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Use local address in API results',\r\n help: 'Disable to make API results use the external URL in NZB links.'\r\n }\r\n },\r\n {\r\n key: 'socksProxy',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SOCKS proxy',\r\n placeholder: 'socks5://user:pass@127.0.0.1:1080',\r\n help: \"IPv4 only\"\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'httpProxy',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'HTTP proxy',\r\n placeholder: 'http://user:pass@10.0.0.1:1080',\r\n help: \"IPv4 only\"\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'httpsProxy',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'HTTPS proxy',\r\n placeholder: 'https://user:pass@10.0.0.1:1090',\r\n help: \"IPv4 only\"\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'ssl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Use SSL',\r\n help: 'I recommend using a reverse proxy instead of this. Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'sslcert',\r\n hideExpression: '!model.ssl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SSL certificate file',\r\n required: true,\r\n help: 'Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'sslkey',\r\n hideExpression: '!model.ssl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SSL key file',\r\n required: true,\r\n help: 'Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'sslca',\r\n hideExpression: '!model.ssl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SSL intermediate certificate (CA file)',\r\n help: 'Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n }\r\n\r\n\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'UI'},\r\n fieldGroup: [\r\n\r\n {\r\n key: 'theme',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'Theme',\r\n help: 'Reload page after saving',\r\n options: [\r\n {name: 'Grey', value: 'grey'},\r\n {name: 'Bright', value: 'bright'},\r\n {name: 'Dark', value: 'dark'}\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Security'},\r\n fieldGroup: [\r\n\r\n {\r\n key: 'apikey',\r\n type: 'horizontalApiKeyInput',\r\n templateOptions: {\r\n label: 'API key',\r\n help: 'Remove to disable. Alphanumeric only'\r\n },\r\n validators: {\r\n apikey: regexValidator(/^[a-zA-Z0-9]*$/, \"API key must only contain numbers and digits\", false)\r\n }\r\n },\r\n {\r\n key: 'dereferer',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Dereferer',\r\n help: 'Redirect external links to hide your instance. Insert $s for target URL. Delete to disable.'\r\n }\r\n },\r\n {\r\n key: 'verifySsl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n label: 'Verify SSL certificates',\r\n help: 'If enabled only valid/known SSL certificates will be accepted when accessing indexers'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n wrapper: 'fieldset',\r\n key: 'logging',\r\n templateOptions: {label: 'Logging'},\r\n fieldGroup: [\r\n {\r\n key: 'logfilelevel',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'Logfile level',\r\n options: [\r\n {name: 'Critical', value: 'CRITICAL'},\r\n {name: 'Error', value: 'ERROR'},\r\n {name: 'Warning', value: 'WARNING'},\r\n {name: 'Info', value: 'INFO'},\r\n {name: 'Debug', value: 'DEBUG'}\r\n ]\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logfilename',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Log file',\r\n required: true\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'rolloverAtStart',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n label: 'Startup rollover',\r\n help: 'Starts a new log file on start/restart'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logMaxSize',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Max log file size',\r\n help: 'When log file size is reached a new one is started. Set to 0 to disable.',\r\n addonRight: {\r\n text: 'kB'\r\n }\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logRotateAfterDays',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Rotate after',\r\n help: 'A new log file is started after this many days. Supercedes max size. Keep empty to disable.',\r\n addonRight: {\r\n text: 'days'\r\n }\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'keepLogFiles',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Keep log files',\r\n help: 'Number of log files to keep before oldest is deleted.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logfileUmask',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Log file chmod',\r\n help: 'chmod for log files (linux only)'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'consolelevel',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'Console log level',\r\n options: [\r\n {name: 'Critical', value: 'CRITICAL'},\r\n {name: 'Error', value: 'ERROR'},\r\n {name: 'Warning', value: 'WARNING'},\r\n {name: 'Info', value: 'INFO'},\r\n {name: 'Debug', value: 'DEBUG'}\r\n ]\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logIpAddresses',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Log IP addresses'\r\n }\r\n }\r\n\r\n\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Updating'},\r\n fieldGroup: [\r\n\r\n {\r\n key: 'gitPath',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n label: 'Git executable',\r\n help: 'Set if git is not in your path'\r\n }\r\n },\r\n {\r\n key: 'branch',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Repository branch',\r\n required: true,\r\n help: 'Stay on master. Seriously...'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Other'},\r\n fieldGroup: [\r\n {\r\n key: 'keepSearchResultsForDays',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Store results for ...',\r\n addonRight: {\r\n text: 'days'\r\n },\r\n required: true,\r\n help: 'Meta data from searches is stored in the database. When they\\'re deleted links to hydra become invalid.'\r\n }\r\n },\r\n {\r\n key: 'debug',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Enable debugging',\r\n help: \"Only do this if you know what and why you're doing it\"\r\n }\r\n },\r\n {\r\n key: 'runThreaded',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Run threaded server',\r\n help: 'Requires restart'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'startupBrowser',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Open browser on startup'\r\n }\r\n },\r\n {\r\n key: 'shutdownForRestart',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Shutdown to restart',\r\n help: 'When run with a service manager which automatically restarts Hydra enable this to prevent duplicate instances'\r\n }\r\n }\r\n ]\r\n }\r\n ],\r\n\r\n searching: [\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {\r\n label: 'Indexer access'\r\n },\r\n fieldGroup: [\r\n {\r\n key: 'timeout',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Timeout when accessing indexers',\r\n addonRight: {\r\n text: 'seconds'\r\n }\r\n }\r\n },\r\n {\r\n key: 'ignoreTemporarilyDisabled',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Ignore temporarily disabled',\r\n help: \"If enabled access to indexers will never be paused after an error occurred\"\r\n }\r\n },\r\n {\r\n key: 'ignorePassworded',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Ignore passworded releases',\r\n help: \"Not all indexers provide this information\"\r\n }\r\n },\r\n {\r\n key: 'forbiddenWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden words',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: \"Results with any of these words in the title will be ignored\"\r\n }\r\n },\r\n {\r\n key: 'forbiddenRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden regex',\r\n help: 'Must not be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: 'requiredWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required words',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: \"Only results with at least one of these words in the title will be used\"\r\n }\r\n },\r\n {\r\n key: 'requiredRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required regex',\r\n help: 'Must be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: 'applyRestrictions',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Apply word restrictions',\r\n options: [\r\n {name: 'Internal searches', value: 'internal'},\r\n {name: 'API searches', value: 'external'},\r\n {name: 'All searches', value: 'both'}\r\n ],\r\n help: \"For which type of search word restrictions will be applied\"\r\n }\r\n },\r\n {\r\n key: 'forbiddenGroups',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden groups',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: 'Posts from any groups containing any of these words will be ignored'\r\n }\r\n },\r\n {\r\n key: 'forbiddenPosters',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden posters',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: 'Posts from any posters containing any of these words will be ignored'\r\n }\r\n },\r\n {\r\n key: 'maxAge',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Maximum results age',\r\n help: 'Results older than this are ignored. Can be overwritten per search',\r\n addonRight: {\r\n text: 'days'\r\n }\r\n }\r\n },\r\n {\r\n key: 'generate_queries',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Generate queries',\r\n options: [\r\n {label: 'Internal searches', id: 'internal'},\r\n {label: 'API searches', id: 'external'}\r\n ],\r\n help: \"Generate queries for indexers which do not support ID based searches\"\r\n }\r\n },\r\n {\r\n key: 'idFallbackToTitle',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Fallback to title queries',\r\n options: [\r\n {label: 'Internal searches', id: 'internal'},\r\n {label: 'API searches', id: 'external'}\r\n ],\r\n help: \"When no results were found for a query ID search again using the title\"\r\n }\r\n },\r\n {\r\n key: 'idFallbackToTitlePerIndexer',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Fallback per indexer',\r\n help: \"If enabled, fallback will occur on a per-indexer basis\"\r\n }\r\n },\r\n {\r\n key: 'userAgent',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'User agent',\r\n required: true\r\n }\r\n }\r\n\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {\r\n label: 'Result processing'\r\n },\r\n fieldGroup: [\r\n {\r\n key: 'htmlParser',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'HTML parser',\r\n options: [\r\n {name: 'Default BS (slower)', value: 'html.parser'},\r\n {name: 'LXML (faster, needs to be installed separately)', value: 'lxml'}\r\n ]\r\n }\r\n },\r\n {\r\n key: 'duplicateSizeThresholdInPercent',\r\n type: 'horizontalPercentInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Duplicate size threshold',\r\n required: true,\r\n addonRight: {\r\n text: '%'\r\n }\r\n\r\n }\r\n },\r\n {\r\n key: 'duplicateAgeThreshold',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Duplicate age threshold',\r\n required: true,\r\n addonRight: {\r\n text: 'hours'\r\n }\r\n }\r\n },\r\n {\r\n key: 'alwaysShowDuplicates',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Always show duplicates',\r\n help: 'Activate to show duplicates in search results by default'\r\n }\r\n },\r\n {\r\n key: 'removeTrailing',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Remove trailing...',\r\n help: 'Removed from title if it ends with either of these. Case insensitive and disregards leading/trailing spaces'\r\n }\r\n },\r\n {\r\n key: 'nzbAccessType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'NZB access type',\r\n options: [\r\n {name: 'Proxy NZBs from indexer', value: 'serve'},\r\n {name: 'Redirect to the indexer', value: 'redirect'}\r\n ],\r\n help: \"How access to NZBs is provided when NZBs are downloaded (by the user or external tools). Redirecting is recommended.\"\r\n }\r\n }\r\n ]\r\n }\r\n ],\r\n\r\n categories: getCategoryFields(),\r\n\r\n downloaders: [\r\n {\r\n type: \"arrayConfig\",\r\n data: {\r\n defaultModel: {\r\n enabled: true\r\n },\r\n entryTemplateUrl: 'downloaderEntry.html',\r\n presets: function () {\r\n return getDownloaderPresets();\r\n },\r\n checkAddingAllowed: function () {\r\n return true;\r\n },\r\n presetsOnly: true,\r\n addNewText: 'Add new downloader',\r\n fieldsFunction: getDownloaderBoxFields,\r\n allowDeleteFunction: function () {\r\n return true;\r\n },\r\n checkBeforeClose: function (scope, model) {\r\n var DownloaderCheckBeforeCloseService = $injector.get(\"DownloaderCheckBeforeCloseService\");\r\n return DownloaderCheckBeforeCloseService.check(scope, model);\r\n },\r\n resetFunction: function (scope) {\r\n scope.options.resetModel();\r\n scope.options.resetModel();\r\n }\r\n\r\n }\r\n }\r\n ],\r\n\r\n\r\n indexers: [\r\n {\r\n type: \"arrayConfig\",\r\n data: {\r\n defaultModel: {\r\n animeCategory: null,\r\n comicCategory: null,\r\n audiobookCategory: null,\r\n magazineCategory: null,\r\n ebookCategory: null,\r\n enabled: true,\r\n categories: [],\r\n downloadLimit: null,\r\n loadLimitOnRandom: null,\r\n host: null,\r\n apikey: null,\r\n hitLimit: null,\r\n hitLimitResetTime: 0,\r\n timeout: null,\r\n name: null,\r\n showOnSearch: true,\r\n score: 0,\r\n username: null,\r\n password: null,\r\n preselect: true,\r\n type: 'newznab',\r\n accessType: \"both\",\r\n search_ids: undefined, //[\"imdbid\", \"rid\", \"tvdbid\"],\r\n searchTypes: undefined, //[\"tvsearch\", \"movie\"]\r\n backend: null,\r\n userAgent: null\r\n },\r\n addNewText: 'Add new indexer',\r\n entryTemplateUrl: 'indexerEntry.html',\r\n presets: function (model) {\r\n return getIndexerPresets(model);\r\n },\r\n\r\n checkAddingAllowed: function (existingIndexers, preset) {\r\n if (!preset || !(preset.type == \"anizb\" || preset.type == \"binsearch\" || preset.type == \"nzbindex\" || preset.type == \"nzbclub\")) {\r\n return true;\r\n }\r\n return !_.any(existingIndexers, function (existingEntry) {\r\n return existingEntry.name == preset.name;\r\n });\r\n\r\n },\r\n fieldsFunction: getIndexerBoxFields,\r\n allowDeleteFunction: function (model) {\r\n return true;\r\n },\r\n checkBeforeClose: function (scope, model) {\r\n var IndexerCheckBeforeCloseService = $injector.get(\"IndexerCheckBeforeCloseService\");\r\n return IndexerCheckBeforeCloseService.check(scope, model);\r\n },\r\n resetFunction: function (scope) {\r\n //Then reset the model twice (for some reason when we do it once the search types / ids fields are empty, resetting again fixes that... (wtf))\r\n scope.options.resetModel();\r\n scope.options.resetModel();\r\n }\r\n\r\n }\r\n }\r\n ],\r\n\r\n auth: [\r\n {\r\n key: 'authType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Auth type',\r\n options: [\r\n {name: 'None', value: 'none'},\r\n {name: 'HTTP Basic auth', value: 'basic'},\r\n {name: 'Login form', value: 'form'}\r\n ]\r\n\r\n }\r\n },\r\n {\r\n key: 'restrictSearch',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict searching',\r\n help: 'Restrict access to searching'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictStats',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict stats',\r\n help: 'Restrict access to stats'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictAdmin',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict admin',\r\n help: 'Restrict access to admin functions'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictDetailsDl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict NZB details & DL',\r\n help: 'Restrict NZB details, comments and download links'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictIndexerSelection',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict indexer selection box',\r\n help: 'Restrict visibility of indexer selection box in search. Affects only GUI'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'rememberUsers',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Remember users',\r\n help: 'Remember users with cookie for 14 days'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'rememberUsersExpiry',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Cookie expiry',\r\n help: 'How long users are remembered',\r\n addonRight: {\r\n text: 'days'\r\n }\r\n }\r\n },\r\n {\r\n type: 'repeatSection',\r\n key: 'users',\r\n model: rootModel.auth,\r\n templateOptions: {\r\n btnText: 'Add new user',\r\n altLegendText: 'Authless',\r\n fields: [\r\n {\r\n key: 'username',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Username',\r\n required: true\r\n }\r\n\r\n },\r\n {\r\n key: 'password',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'password',\r\n label: 'Password',\r\n required: true\r\n }\r\n },\r\n {\r\n key: 'maySeeAdmin',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see admin area'\r\n }\r\n },\r\n {\r\n key: 'maySeeStats',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see stats'\r\n },\r\n hideExpression: 'model.maySeeAdmin'\r\n },\r\n {\r\n key: 'maySeeDetailsDl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see NZB details & DL links'\r\n },\r\n hideExpression: 'model.maySeeAdmin'\r\n },\r\n {\r\n key: 'showIndexerSelection',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see indexer selection box'\r\n },\r\n hideExpression: 'model.maySeeAdmin'\r\n }\r\n\r\n ],\r\n defaultModel: {\r\n username: null,\r\n password: null,\r\n maySeeStats: true,\r\n maySeeAdmin: true,\r\n maySeeDetailsDl: true,\r\n showIndexerSelection: true\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}\r\nConfigFields.$inject = [\"$injector\"];\r\n\r\n\r\nfunction getIndexerPresets(configuredIndexers) {\r\n var presets = [\r\n [\r\n {\r\n name: \"6box\",\r\n host: \"https://6box.me\"\r\n },\r\n {\r\n name: \"6box spotweb\",\r\n host: \"https://6box.me/spotweb\"\r\n },\r\n {\r\n name: \"altHUB\",\r\n host: \"https://api.althub.co.za\"\r\n },\r\n {\r\n name: \"DogNZB\",\r\n host: \"https://api.dognzb.cr\"\r\n },\r\n {\r\n name: \"Drunken Slug\",\r\n host: \"https://api.drunkenslug.com\"\r\n },\r\n {\r\n name: \"LuluNZB\",\r\n host: \"https://lulunzb.com\"\r\n },\r\n {\r\n name: \"miatrix\",\r\n host: \"https://www.miatrix.com\"\r\n },\r\n {\r\n name: \"newz69.keagaming\",\r\n host: \"https://newz69.keagaming.com\"\r\n },\r\n {\r\n name: \"NewzTown\",\r\n host: \"https://newztown.co.za\"\r\n },\r\n {\r\n name: \"NZB Finder\",\r\n host: \"https://nzbfinder.ws\"\r\n },\r\n {\r\n name: \"NZBCat\",\r\n host: \"https://nzb.cat\"\r\n },\r\n {\r\n name: \"nzb.ag\",\r\n host: \"https://nzb.ag\"\r\n },\r\n {\r\n name: \"nzb.is\",\r\n host: \"https://nzb.is\"\r\n },\r\n {\r\n name: \"nzb.su\",\r\n host: \"https://api.nzb.su\"\r\n },\r\n {\r\n name: \"nzb7\",\r\n host: \"https://www.nzb7.com\"\r\n },\r\n {\r\n name: \"NZBGeek\",\r\n host: \"https://api.nzbgeek.info\"\r\n },\r\n {\r\n name: \"NzbNdx\",\r\n host: \"https://www.nzbndx.com\"\r\n },\r\n {\r\n name: \"NzBNooB\",\r\n host: \"https://www.nzbnoob.com\"\r\n },\r\n {\r\n name: \"nzbplanet\",\r\n host: \"https://nzbplanet.net\"\r\n },\r\n {\r\n name: \"NZBs.org\",\r\n host: \"https://nzbs.org\"\r\n },\r\n {\r\n name: \"NZBs.io\",\r\n host: \"https://www.nzbs.io\"\r\n },\r\n {\r\n name: \"Nzeeb\",\r\n host: \"https://www.nzeeb.com\"\r\n },\r\n {\r\n name: \"oznzb\",\r\n host: \"https://api.oznzb.com\"\r\n },\r\n {\r\n name: \"omgwtfnzbs\",\r\n host: \"https://api.omgwtfnzbs.me\"\r\n },\r\n {\r\n name: \"PFMonkey\",\r\n host: \"https://www.pfmonkey.com\"\r\n },\r\n {\r\n name: \"SimplyNZBs\",\r\n host: \"https://simplynzbs.com\"\r\n },\r\n {\r\n name: \"Tabula-Rasa\",\r\n host: \"https://www.tabula-rasa.pw\"\r\n },\r\n {\r\n name: \"Usenet-Crawler\",\r\n host: \"https://www.usenet-crawler.com\"\r\n }\r\n ],\r\n [\r\n {\r\n name: \"Jackett/Cardigann\",\r\n host: \"http://127.0.0.1:9117/torznab/YOURTRACKER\",\r\n search_ids: [],\r\n searchTypes: [],\r\n type: \"jackett\",\r\n accessType: \"internal\"\r\n }\r\n ],\r\n [\r\n {\r\n accessType: \"both\",\r\n categories: [\"anime\"],\r\n downloadLimit: null,\r\n enabled: false,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://anizb.org\",\r\n loadLimitOnRandom: null,\r\n name: \"anizb\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"anizb\",\r\n username: null\r\n },\r\n {\r\n accessType: \"internal\",\r\n categories: [],\r\n downloadLimit: null,\r\n enabled: true,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://binsearch.info\",\r\n loadLimitOnRandom: null,\r\n name: \"Binsearch\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"binsearch\",\r\n username: null\r\n },\r\n {\r\n accessType: \"internal\",\r\n categories: [],\r\n downloadLimit: null,\r\n enabled: true,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://www.nzbclub.com\",\r\n loadLimitOnRandom: null,\r\n name: \"NZBClub\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"nzbclub\",\r\n username: null\r\n\r\n },\r\n {\r\n accessType: \"internal\",\r\n categories: [],\r\n downloadLimit: null,\r\n enabled: true,\r\n generalMinSize: 1,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://nzbindex.com\",\r\n loadLimitOnRandom: null,\r\n name: \"NZBIndex\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"nzbindex\",\r\n username: null\r\n\r\n }\r\n ]\r\n ];\r\n\r\n\r\n return presets;\r\n}\r\n\r\nfunction getIndexerBoxFields(model, parentModel, isInitial, injector) {\r\n var fieldset = [];\r\n\r\n fieldset.push({\r\n key: 'enabled',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Enabled'\r\n }\r\n });\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'name',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Name',\r\n required: true,\r\n help: 'Used for identification. Changing the name will lose all history and stats!'\r\n },\r\n validators: {\r\n uniqueName: {\r\n expression: function (viewValue) {\r\n if (isInitial || viewValue != model.name) {\r\n return _.pluck(parentModel, \"name\").indexOf(viewValue) == -1;\r\n }\r\n return true;\r\n },\r\n message: '\"Indexer \\\\\"\" + $viewValue + \"\\\\\" already exists\"'\r\n }\r\n }\r\n })\r\n }\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'host',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Host',\r\n required: true,\r\n placeholder: 'http://www.someindexer.com'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'apikey',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'API Key'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n fieldset.push(\r\n {\r\n key: 'score',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Priority',\r\n required: true,\r\n help: 'When duplicate search results are found the result from the indexer with the highest number will be selected'\r\n }\r\n });\r\n\r\n fieldset.push(\r\n {\r\n key: 'timeout',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Timeout',\r\n help: 'Supercedes the general timeout in \"Searching\"'\r\n }\r\n });\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'hitLimit',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'API hit limit',\r\n help: 'Maximum number of API hits since \"API hit reset time\"'\r\n }\r\n },\r\n {\r\n key: 'downloadLimit',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Download limit',\r\n help: 'When # of downloads since \"Hit reset time\" is reached indexer will not be searched.'\r\n }\r\n }\r\n );\r\n fieldset.push(\r\n {\r\n key: 'loadLimitOnRandom',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Load limiting',\r\n help: 'If set indexer will only be picked for one out of x API searches (on average)'\r\n },\r\n validators: {\r\n greaterThanZero: {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n return angular.isUndefined(value) || value === null || value === \"\" || value > 1;\r\n },\r\n message: '\"Value must be greater than 1\"'\r\n }\r\n\r\n }\r\n },\r\n {\r\n key: 'hitLimitResetTime',\r\n type: 'horizontalInput',\r\n hideExpression: '!model.hitLimit && !model.downloadLimit',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Hit reset time',\r\n help: 'UTC hour of day at which the API hit counter is reset (0==24). Leave empty for a rolling reset counter'\r\n },\r\n validators: {\r\n timeOfDay: {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n return value >= 0 && value <= 24;\r\n },\r\n message: '$viewValue + \" is not a valid hour of day (0-24)\"'\r\n }\r\n\r\n }\r\n });\r\n }\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'username',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n required: false,\r\n label: 'Username',\r\n help: 'Only needed if indexer requires HTTP auth for API access (rare)'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n );\r\n }\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'password',\r\n type: 'horizontalInput',\r\n hideExpression: '!model.username',\r\n templateOptions: {\r\n type: 'text',\r\n required: false,\r\n label: 'Password',\r\n help: 'Only needed if indexer requires HTTP auth for API access (rare)'\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'userAgent',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n required: false,\r\n label: 'User agent',\r\n help: 'Rarely needed. Will supercede the one in the main searching settings'\r\n }\r\n }\r\n )\r\n }\r\n\r\n\r\n fieldset.push(\r\n {\r\n key: 'preselect',\r\n type: 'horizontalSwitch',\r\n hideExpression: 'model.accessType == \"external\"',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Preselect',\r\n help: 'Preselect this indexer on the search page'\r\n }\r\n }\r\n );\r\n if (model.type != \"jackett\") {\r\n fieldset.push(\r\n {\r\n key: 'accessType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Enable for...',\r\n options: [\r\n {name: 'Internal searches only', value: 'internal'},\r\n {name: 'API searches only', value: 'external'},\r\n {name: 'Internal and API searches', value: 'both'}\r\n ]\r\n }\r\n }\r\n );\r\n }\r\n if (model.type != \"anizb\") {\r\n fieldset.push(\r\n {\r\n key: 'categories',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Enable for...',\r\n help: 'You can decide that this indexer should only be used for certain categories',\r\n options: [\r\n {\r\n id: \"movies\",\r\n label: \"Movies\"\r\n },\r\n {\r\n id: \"movieshd\",\r\n label: \"Movies HD\"\r\n },\r\n {\r\n id: \"moviessd\",\r\n label: \"Movies SD\"\r\n },\r\n {\r\n id: \"tv\",\r\n label: \"TV\"\r\n },\r\n {\r\n id: \"tvhd\",\r\n label: \"TV HD\"\r\n },\r\n {\r\n id: \"tvsd\",\r\n label: \"TV SD\"\r\n },\r\n {\r\n id: \"anime\",\r\n label: \"Anime\"\r\n },\r\n {\r\n id: \"audio\",\r\n label: \"Audio\"\r\n },\r\n {\r\n id: \"flac\",\r\n label: \"Audio FLAC\"\r\n },\r\n {\r\n id: \"mp3\",\r\n label: \"Audio MP3\"\r\n },\r\n {\r\n id: \"audiobook\",\r\n label: \"Audiobook\"\r\n },\r\n {\r\n id: \"console\",\r\n label: \"Console\"\r\n },\r\n {\r\n id: \"pc\",\r\n label: \"PC\"\r\n },\r\n {\r\n id: \"xxx\",\r\n label: \"XXX\"\r\n },\r\n {\r\n id: \"ebook\",\r\n label: \"Ebook\"\r\n },\r\n {\r\n id: \"comic\",\r\n label: \"Comic\"\r\n }],\r\n getPlaceholder: function () {\r\n return \"All categories\";\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'search_ids',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Search IDs',\r\n options: [\r\n {label: 'TVDB', id: 'tvdbid'},\r\n {label: 'TVRage', id: 'rid'},\r\n {label: 'IMDB', id: 'imdbid'},\r\n {label: 'Trakt', id: 'traktid'},\r\n {label: 'TVMaze', id: 'tvmazeid'},\r\n {label: 'TMDB', id: 'tmdbid'}\r\n ],\r\n getPlaceholder: function (model) {\r\n if (angular.isUndefined(model)) {\r\n return \"Unknown\";\r\n }\r\n return \"None\";\r\n }\r\n }\r\n }\r\n );\r\n }\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'searchTypes',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Search types',\r\n options: [\r\n {label: 'Movies', id: 'movie'},\r\n {label: 'TV', id: 'tvsearch'},\r\n {label: 'Ebooks', id: 'book'},\r\n {label: 'Audio', id: 'audio'}\r\n ],\r\n getPlaceholder: function (model) {\r\n if (angular.isUndefined(model)) {\r\n return \"Unknown\";\r\n }\r\n return \"None\";\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n type: 'horizontalCheckCaps',\r\n hideExpression: '!model.host || !model.apikey || !model.name',\r\n templateOptions: {\r\n label: 'Check capabilities',\r\n help: 'Find out what search types the indexer supports. Done automatically for new indexers.'\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'nzbindex') {\r\n fieldset.push(\r\n {\r\n key: 'generalMinSize',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Min size',\r\n help: 'NZBIndex returns a lot of crap with small file sizes. Set this value and all smaller results will be filtered out no matter the category'\r\n }\r\n }\r\n );\r\n }\r\n\r\n return fieldset;\r\n}\r\n\r\n\r\nfunction getDownloaderBoxFields(model, parentModel, isInitial) {\r\n var fieldset = [];\r\n\r\n fieldset = _.union(fieldset, [\r\n {\r\n key: 'enabled',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Enabled'\r\n }\r\n },\r\n {\r\n key: 'name',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Name',\r\n required: true\r\n },\r\n validators: {\r\n uniqueName: {\r\n expression: function (viewValue) {\r\n if (isInitial || viewValue != model.name) {\r\n return _.pluck(parentModel, \"name\").indexOf(viewValue) == -1;\r\n }\r\n return true;\r\n },\r\n message: '\"Downloader \\\\\"\" + $viewValue + \"\\\\\" already exists\"'\r\n }\r\n }\r\n\r\n }]);\r\n\r\n if (model.type == \"nzbget\") {\r\n fieldset = _.union(fieldset, [{\r\n key: 'host',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Host',\r\n required: true\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n\r\n },\r\n {\r\n key: 'port',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Port',\r\n placeholder: '5050',\r\n required: true\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'ssl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Use SSL'\r\n }\r\n }]);\r\n } else if (model.type == \"sabnzbd\") {\r\n fieldset.push({\r\n key: 'url',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'URL',\r\n required: true\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n fieldset = _.union(fieldset, [\r\n {\r\n key: 'username',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Username',\r\n help: model.type == \"nzbget\" ? 'Only alphanumeric usernames are guaranteed to work' : \"\"\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n },\r\n {\r\n key: 'password',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'password',\r\n label: 'Password',\r\n help: model.type == \"nzbget\" ? 'See username' : \"\"\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n ]);\r\n\r\n\r\n if (model.type == \"sabnzbd\") {\r\n fieldset.push({\r\n key: 'apikey',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'API Key'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n fieldset = _.union(fieldset, [\r\n {\r\n key: 'defaultCategory',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Default category',\r\n help: 'When adding NZBs this category will be used instead of asking for the category. Write \"No category\" to let the downloader decide.',\r\n placeholder: 'Ask when downloading'\r\n }\r\n },\r\n {\r\n key: 'nzbaccesstype',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'NZB access type',\r\n options: [\r\n {name: 'Proxy NZBs from indexer', value: 'serve'},\r\n {name: 'Redirect to the indexer', value: 'redirect'}\r\n ],\r\n help: \"How external access to NZBs is provided. Redirecting is recommended.\"\r\n }\r\n },\r\n {\r\n key: 'nzbAddingType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'NZB adding type',\r\n options: [\r\n {name: 'Send link', value: 'link'},\r\n {name: 'Upload NZB', value: 'nzb'}\r\n ],\r\n help: \"How NZBs are added to the downloader, either by sending a link to the NZB or by uploading the NZB data\"\r\n }\r\n },\r\n {\r\n key: 'iconCssClass',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Icon CSS class',\r\n help: 'Copy an icon name from http://fontawesome.io/examples/ (e.g. \"film\")',\r\n placeholder: 'Default'\r\n }\r\n }\r\n ]);\r\n\r\n return fieldset;\r\n}\r\n\r\nfunction getDownloaderPresets() {\r\n return [[\r\n {\r\n host: \"127.0.0.1\",\r\n name: \"NZBGet\",\r\n password: \"tegbzn6789x\",\r\n port: 6789,\r\n ssl: false,\r\n type: \"nzbget\",\r\n username: \"nzbgetx\",\r\n nzbAddingType: \"link\",\r\n nzbaccesstype: \"redirect\",\r\n iconCssClass: \"\",\r\n downloadType: \"nzb\"\r\n },\r\n {\r\n url: \"http://localhost:8086\",\r\n type: \"sabnzbd\",\r\n name: \"SABnzbd\",\r\n nzbAddingType: \"link\",\r\n nzbaccesstype: \"redirect\",\r\n iconCssClass: \"\",\r\n downloadType: \"nzb\",\r\n username: null,\r\n password: null\r\n }\r\n ]];\r\n}\r\n\r\n\r\nfunction handleConnectionCheckFail(ModalService, data, model, whatFailed, deferred) {\r\n var message;\r\n var yesText;\r\n if (data.checked) {\r\n message = \"The connection to the \" + whatFailed + \" failed: \" + data.message + \"
Do you want to add it anyway?\";\r\n yesText = \"I know what I'm doing\";\r\n } else {\r\n message = \"The connection to the \" + whatFailed + \" could not be tested, sorry\";\r\n yesText = \"I'll risk it\";\r\n }\r\n ModalService.open(\"Connection check failed\", message, {\r\n yes: {\r\n onYes: function () {\r\n deferred.resolve();\r\n },\r\n text: yesText\r\n },\r\n no: {\r\n onNo: function () {\r\n model.enabled = false;\r\n deferred.resolve();\r\n },\r\n text: \"Add it, but disabled\"\r\n },\r\n cancel: {\r\n onCancel: function () {\r\n deferred.reject();\r\n },\r\n text: \"Aahh, let me try again\"\r\n }\r\n });\r\n\r\n}\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('IndexerCheckBeforeCloseService', IndexerCheckBeforeCloseService);\r\n\r\nfunction IndexerCheckBeforeCloseService($q, ModalService, ConfigBoxService, blockUI, growl) {\r\n\r\n return {\r\n check: checkBeforeClose\r\n };\r\n\r\n function checkBeforeClose(scope, model) {\r\n var deferred = $q.defer();\r\n if (!scope.needsConnectionTest) {\r\n checkCaps(scope, model).then(function () {\r\n deferred.resolve();\r\n }, function () {\r\n deferred.reject();\r\n });\r\n } else {\r\n blockUI.start(\"Testing connection...\");\r\n scope.spinnerActive = true;\r\n var url = \"internalapi/test_newznab\";\r\n var settings = {host: model.host, apikey: model.apikey};\r\n if (angular.isDefined(model.username)) {\r\n settings[\"username\"] = model.username;\r\n settings[\"password\"] = model.password;\r\n }\r\n ConfigBoxService.checkConnection(url, JSON.stringify(settings)).then(function () {\r\n checkCaps(scope, model).then(function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n growl.info(\"Connection to the indexer tested successfully\");\r\n deferred.resolve();\r\n }, function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n deferred.reject();\r\n });\r\n },\r\n function (data) {\r\n blockUI.reset();\r\n handleConnectionCheckFail(ModalService, data, model, \"indexer\", deferred);\r\n }).finally(function () {\r\n scope.spinnerActive = false;\r\n blockUI.reset();\r\n });\r\n }\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function checkCaps(scope, model) {\r\n var deferred = $q.defer();\r\n var url = \"internalapi/test_caps\";\r\n var settings = {indexer: model.name, apikey: model.apikey, host: model.host};\r\n if (angular.isDefined(model.username)) {\r\n settings[\"username\"] = model.username;\r\n settings[\"password\"] = model.password;\r\n }\r\n if (angular.isUndefined(model.search_ids) || angular.isUndefined(model.searchTypes)) {\r\n\r\n blockUI.start(\"New indexer found. Testing its capabilities. This may take a bit...\");\r\n ConfigBoxService.checkCaps(url, JSON.stringify(settings), model).then(\r\n function (data, model) {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n growl.info(\"Successfully tested capabilites of indexer\");\r\n deferred.resolve();\r\n },\r\n function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n model.search_ids = [];\r\n model.searchTypes = [];\r\n ModalService.open(\"Error testing capabilities\", \"The capabilities of the indexer could not be checked. The indexer won't be used for ID based searches (IMDB, TVDB, etc.). You may repeat the check manually at any time.\");\r\n deferred.resolve();\r\n }).finally(\r\n function () {\r\n scope.spinnerActive = false;\r\n })\r\n } else {\r\n deferred.resolve();\r\n }\r\n return deferred.promise;\r\n\r\n }\r\n}\r\nIndexerCheckBeforeCloseService.$inject = [\"$q\", \"ModalService\", \"ConfigBoxService\", \"blockUI\", \"growl\"];\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('DownloaderCheckBeforeCloseService', DownloaderCheckBeforeCloseService);\r\n\r\nfunction DownloaderCheckBeforeCloseService($q, ConfigBoxService, growl, ModalService, blockUI) {\r\n\r\n return {\r\n check: checkBeforeClose\r\n };\r\n\r\n function checkBeforeClose(scope, model) {\r\n var deferred = $q.defer();\r\n if (!scope.isInitial && !scope.needsConnectionTest) {\r\n deferred.resolve();\r\n } else {\r\n scope.spinnerActive = true;\r\n blockUI.start(\"Testing connection...\");\r\n var url = \"internalapi/test_downloader\";\r\n ConfigBoxService.checkConnection(url, JSON.stringify(model)).then(function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n growl.info(\"Connection to the downloader tested successfully\");\r\n deferred.resolve();\r\n },\r\n function (data) {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n handleConnectionCheckFail(ModalService, data, model, \"downloader\", deferred);\r\n }).finally(function () {\r\n scope.spinnerActive = false;\r\n blockUI.reset();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n}\r\nDownloaderCheckBeforeCloseService.$inject = [\"$q\", \"ConfigBoxService\", \"growl\", \"ModalService\", \"blockUI\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('ConfigModel', function () {\r\n return {};\r\n });\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('ConfigWatcher', function () {\r\n var $scope;\r\n\r\n return {\r\n watch: watch\r\n };\r\n\r\n function watch(scope) {\r\n $scope = scope;\r\n $scope.$watchGroup([\"config.main.host\"], function () {\r\n }, true);\r\n }\r\n });\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .controller('ConfigController', ConfigController);\r\n\r\nfunction ConfigController($scope, $http, activeTab, ConfigService, config, DownloaderCategoriesService, ConfigFields, ConfigModel, ModalService, RestartService, $state, growl) {\r\n $scope.config = config;\r\n $scope.submit = submit;\r\n $scope.activeTab = activeTab;\r\n\r\n $scope.restartRequired = false;\r\n $scope.ignoreSaveNeeded = false;\r\n\r\n ConfigFields.setRestartWatcher(function () {\r\n $scope.restartRequired = true;\r\n });\r\n\r\n\r\n function submit() {\r\n if ($scope.form.$valid) {\r\n\r\n ConfigService.set($scope.config);\r\n $scope.form.$setPristine();\r\n DownloaderCategoriesService.invalidate();\r\n if ($scope.restartRequired) {\r\n ModalService.open(\"Restart required\", \"The changes you have made may require a restart to be effective.
Do you want to restart now?\", {\r\n yes: {\r\n onYes: function () {\r\n RestartService.restart();\r\n }\r\n },\r\n no: {\r\n onNo: function () {\r\n $scope.restartRequired = false;\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n growl.error(\"Config invalid. Please check your settings.\");\r\n\r\n //Ridiculously hacky way to make the error messages appear\r\n try {\r\n if (angular.isDefined(form.$error.required)) {\r\n _.each(form.$error.required, function (item) {\r\n if (angular.isDefined(item.$error.required)) {\r\n _.each(item.$error.required, function (item2) {\r\n item2.$setTouched();\r\n });\r\n }\r\n });\r\n }\r\n angular.forEach($scope.form.$error.required, function (field) {\r\n field.$setTouched();\r\n });\r\n } catch (err) {\r\n //\r\n }\r\n\r\n }\r\n }\r\n\r\n ConfigModel = config;\r\n\r\n $scope.fields = ConfigFields.getFields($scope.config);\r\n\r\n $scope.allTabs = [\r\n {\r\n active: false,\r\n state: 'root.config.main',\r\n name: 'Main',\r\n model: ConfigModel.main,\r\n fields: $scope.fields.main,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.auth',\r\n name: 'Authorization',\r\n model: ConfigModel.auth,\r\n fields: $scope.fields.auth,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.searching',\r\n name: 'Searching',\r\n model: ConfigModel.searching,\r\n fields: $scope.fields.searching,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.categories',\r\n name: 'Categories',\r\n model: ConfigModel.categories,\r\n fields: $scope.fields.categories,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.downloader',\r\n name: 'Downloaders',\r\n model: ConfigModel.downloaders,\r\n fields: $scope.fields.downloaders,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.indexers',\r\n name: 'Indexers',\r\n model: ConfigModel.indexers,\r\n fields: $scope.fields.indexers,\r\n options: {}\r\n }\r\n ];\r\n\r\n $scope.isSavingNeeded = function () {\r\n return $scope.form.$dirty && $scope.form.$valid && !$scope.ignoreSaveNeeded;\r\n };\r\n\r\n $scope.goToConfigState = function (index) {\r\n $state.go($scope.allTabs[index].state, {activeTab: index}, {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n $scope.help = function () {\r\n var tabName = $scope.allTabs[$scope.activeTab].name;\r\n $http.get(\"internalapi/gethelp\", {params: {id: tabName}}).then(function (result) {\r\n var html = '' + result.data + \"\";\r\n ModalService.open(tabName + \" - Help\", html, {}, \"lg\");\r\n },\r\n function () {\r\n growl.error(\"Error while loading help\")\r\n })\r\n };\r\n\r\n $scope.$on('$stateChangeStart',\r\n function (event, toState, toParams, fromState, fromParams) {\r\n if ($scope.isSavingNeeded()) {\r\n event.preventDefault();\r\n ModalService.open(\"Unsaved changed\", \"Do you want to save before leaving?\", {\r\n yes: {\r\n onYes: function () {\r\n $scope.submit();\r\n $state.go(toState);\r\n },\r\n text: \"Yes\"\r\n },\r\n no: {\r\n onNo: function () {\r\n $scope.ignoreSaveNeeded = true;\r\n $scope.allTabs[$scope.activeTab].options.resetModel();\r\n $state.go(toState);\r\n },\r\n text: \"No\"\r\n },\r\n cancel: {\r\n onCancel: function () {\r\n event.preventDefault();\r\n },\r\n text: \"Cancel\"\r\n }\r\n });\r\n }\r\n })\r\n}\r\nConfigController.$inject = [\"$scope\", \"$http\", \"activeTab\", \"ConfigService\", \"config\", \"DownloaderCategoriesService\", \"ConfigFields\", \"ConfigModel\", \"ModalService\", \"RestartService\", \"$state\", \"growl\"];\r\n\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('CategoriesService', CategoriesService);\r\n\r\nfunction CategoriesService(ConfigService) {\r\n\r\n return {\r\n getByName: getByName,\r\n getAll: getAll,\r\n getDefault: getDefault\r\n };\r\n\r\n\r\n function getByName(name) {\r\n for (var category in ConfigService.getSafe().categories) {\r\n category = ConfigService.getSafe().categories[category];\r\n if (category.name == name || category.pretty == name) {\r\n return category;\r\n }\r\n }\r\n }\r\n \r\n function getAll() {\r\n return ConfigService.getSafe().categories;\r\n }\r\n \r\n function getDefault() {\r\n return getAll()[1];\r\n }\r\n\r\n}\r\nCategoriesService.$inject = [\"ConfigService\"];","angular\r\n .module('nzbhydraApp')\r\n .factory('BackupService', BackupService);\r\n\r\nfunction BackupService($http) {\r\n\r\n return {\r\n getBackupsList: getBackupsList,\r\n restoreFromFile: restoreFromFile\r\n };\r\n \r\n\r\n function getBackupsList() {\r\n return $http.get('internalapi/getbackups').then(function (data) {\r\n return data.data.backups;\r\n });\r\n }\r\n\r\n function restoreFromFile(filename) {\r\n return $http.get('internalapi/restorefrombackupfile', {params:{filename: filename}}).then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n}\r\nBackupService.$inject = [\"$http\"];","var nzbhydraapp = angular.module('nzbhydraApp', ['angular-loading-bar', 'cgBusy', 'ui.bootstrap', 'ipCookie', 'angular-growl', 'angular.filter', 'filters', 'ui.router', 'blockUI', 'mgcrea.ngStrap', 'angularUtils.directives.dirPagination', 'nvd3', 'formly', 'formlyBootstrap', 'frapontillo.bootstrap-switch', 'ui.select', 'ngSanitize', 'checklist-model', 'ngAria', 'ngMessages', 'ui.router.title', 'LocalStorageModule', 'angular.filter', 'ngFileUpload', 'ngCookies']);\r\n\r\nangular.module('nzbhydraApp').config([\"$stateProvider\", \"$urlRouterProvider\", \"$locationProvider\", \"blockUIConfig\", \"$urlMatcherFactoryProvider\", \"localStorageServiceProvider\", \"bootstrapped\", function ($stateProvider, $urlRouterProvider, $locationProvider, blockUIConfig, $urlMatcherFactoryProvider, localStorageServiceProvider, bootstrapped) {\r\n\r\n blockUIConfig.autoBlock = false;\r\n $urlMatcherFactoryProvider.strictMode(false);\r\n\r\n $urlRouterProvider.otherwise(\"/\");\r\n\r\n\r\n $stateProvider\r\n .state('root', {\r\n url: '',\r\n abstract: true,\r\n resolve: {\r\n //loginRequired: loginRequired\r\n },\r\n views: {\r\n 'header': {\r\n templateUrl: 'static/html/states/header.html',\r\n controller: 'HeaderController'\r\n },\r\n 'footer': {\r\n templateUrl: 'footer.html'\r\n }\r\n }\r\n })\r\n .state(\"root.config\", {\r\n url: \"/config\",\r\n views: {},\r\n abstract: true\r\n })\r\n .state(\"root.config.main\", {\r\n url: \"/main\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n controllerAs: 'ctrl',\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 0;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Main)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.auth\", {\r\n url: \"/auth\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 1;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Auth)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.searching\", {\r\n url: \"/searching\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 2;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Searching)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.categories\", {\r\n url: \"/categories\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 3;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Categories)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.downloader\", {\r\n url: \"/downloader\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 4;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Downloader)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.indexers\", {\r\n url: \"/indexers\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 5;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Indexers)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats\", {\r\n url: \"/stats\",\r\n abstract: true,\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/stats.html\",\r\n controller: [\"$scope\", \"$state\", function ($scope, $state) {\r\n $scope.$state = $state;\r\n }],\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats\"\r\n }]\r\n }\r\n\r\n }\r\n }\r\n })\r\n .state(\"root.stats.main\", {\r\n url: \"/stats\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: \"static/html/states/main-stats.html\",\r\n controller: \"StatsController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats.indexers\", {\r\n url: \"/indexers\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: \"static/html/states/indexer-statuses.html\",\r\n controller: IndexerStatusesController,\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n statuses: [\"$http\", function ($http) {\r\n return $http.get(\"internalapi/getindexerstatuses\").success(function (response) {\r\n return response.indexerStatuses;\r\n });\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats (Indexers)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats.searches\", {\r\n url: \"/searches\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: \"static/html/states/search-history.html\",\r\n controller: SearchHistoryController,\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n history: ['loginRequired', 'SearchHistoryService', function (loginRequired, SearchHistoryService) {\r\n return SearchHistoryService.getSearchHistory();\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats (Searches)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats.downloads\", {\r\n url: \"/downloads\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: 'static/html/states/download-history.html',\r\n controller: DownloadHistoryController,\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n downloads: [\"StatsService\", function (StatsService) {\r\n return StatsService.getDownloadHistory();\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats (Downloads)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system\", {\r\n url: \"/system\",\r\n views: {},\r\n abstract: true\r\n })\r\n .state(\"root.system.control\", {\r\n url: \"/control\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n askAdmin: ['loginRequired', '$http', function (loginRequired, $http) {\r\n return $http.get(\"internalapi/askadmin\");\r\n }],\r\n activeTab: [function () {\r\n return 0;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.updates\", {\r\n url: \"/updates\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 1;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Updates)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.log\", {\r\n url: \"/log\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 2;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Log)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.backup\", {\r\n url: \"/backup\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 3;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Backup)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.bugreport\", {\r\n url: \"/bugreport\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 4;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Bug report)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.about\", {\r\n url: \"/about\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 5;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (About)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n\r\n .state(\"root.search\", {\r\n url: \"/?category&query&imdbid&tvdbid&title&season&episode&minsize&maxsize&minage&maxage&offsets&rid&mode&tmdbid&indexers\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/search.html\",\r\n controller: \"SearchController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"search\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Search\";\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.search.results\", {\r\n views: {\r\n 'results@root.search': {\r\n templateUrl: \"static/html/states/search-results.html\",\r\n controller: \"SearchResultsController\",\r\n controllerAs: \"srController\",\r\n options: {\r\n inherit: true\r\n },\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"search\")\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n var title = \"Search results\";\r\n var details;\r\n if ($stateParams.title) {\r\n details = $stateParams.title;\r\n } else if ($stateParams.query) {\r\n details = $stateParams.query;\r\n }\r\n if (details) {\r\n title += \" (\" + details + \")\";\r\n }\r\n return title;\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n // .state(\"root.login\", {\r\n // url: \"/login\",\r\n // views: {\r\n // 'container@': {\r\n // templateUrl: \"static/html/states/login.html\",\r\n // controller: \"LoginController\",\r\n // resolve: {\r\n // loginRequired: function () {\r\n // return null;\r\n // },\r\n // $title: function ($stateParams) {\r\n // return \"Login\"\r\n // }\r\n // }\r\n // }\r\n // }\r\n // })\r\n ;\r\n\r\n\r\n $locationProvider.html5Mode(true);\r\n\r\n\r\n function loginRequired($q, $timeout, $state, HydraAuthService, type) {\r\n var deferred = $q.defer();\r\n var userInfos = HydraAuthService.getUserInfos();\r\n var allowed = false;\r\n if (type == \"search\") {\r\n allowed = !userInfos.searchRestricted || userInfos.maySeeSearch;\r\n } else if (type == \"stats\") {\r\n allowed = !userInfos.statsRestricted || userInfos.maySeeStats;\r\n } else if (type == \"admin\") {\r\n allowed = !userInfos.adminRestricted || userInfos.maySeeAdmin;\r\n } else {\r\n allowed = true;\r\n }\r\n if (allowed || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n\r\n //Because I don't know for what state the login is required / asked I have a function for each\r\n\r\n function loginRequiredSearch($q, $timeout, $state, HydraAuthService) {\r\n var deferred = $q.defer();\r\n var userInfos = HydraAuthService.getUserInfos();\r\n if (!userInfos.searchRestricted || userInfos.maySeeSearch || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n function loginRequiredStats($q, $timeout, $state, HydraAuthService) {\r\n var deferred = $q.defer();\r\n\r\n var userInfos = HydraAuthService.getUserInfos();\r\n if (!userInfos.statsRestricted || userInfos.maySeeStats || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n function loginRequiredAdmin($q, $timeout, $state, HydraAuthService) {\r\n var deferred = $q.defer();\r\n\r\n var userInfos = HydraAuthService.getUserInfos();\r\n if (!userInfos.statsRestricted || userInfos.maySeeAdmin || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n localStorageServiceProvider\r\n .setPrefix('nzbhydra');\r\n localStorageServiceProvider\r\n .setNotify(true, false);\r\n}]);\r\n\r\n\r\nnzbhydraapp.config([\"paginationTemplateProvider\", function (paginationTemplateProvider) {\r\n paginationTemplateProvider.setPath('static/html/dirPagination.tpl.html');\r\n}]);\r\n\r\nnzbhydraapp.config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) {\r\n cfpLoadingBarProvider.latencyThreshold = 100;\r\n}]);\r\n\r\nnzbhydraapp.config(['growlProvider', function (growlProvider) {\r\n growlProvider.globalTimeToLive(5000);\r\n growlProvider.globalPosition('bottom-right');\r\n}]);\r\n\r\nnzbhydraapp.directive('ngEnter', function () {\r\n return function (scope, element, attr) {\r\n element.bind(\"keydown keypress\", function (event) {\r\n if (event.which === 13) {\r\n scope.$apply(function () {\r\n scope.$evalAsync(attr.ngEnter);\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n };\r\n});\r\n\r\nnzbhydraapp.filter('nzblink', function () {\r\n return function (resultItem) {\r\n var uri = new URI(\"internalapi/getnzb\");\r\n uri.addQuery(\"searchResultId\", resultItem.searchResultId);\r\n return uri.toString();\r\n }\r\n});\r\n\r\nnzbhydraapp.factory('focus', [\"$rootScope\", \"$timeout\", function ($rootScope, $timeout) {\r\n return function (name) {\r\n $timeout(function () {\r\n $rootScope.$broadcast('focusOn', name);\r\n });\r\n }\r\n}]);\r\n\r\nnzbhydraapp.run([\"$rootScope\", function ($rootScope) {\r\n $rootScope.$on('$stateChangeSuccess',\r\n function (event, toState, toParams, fromState, fromParams) {\r\n try {\r\n $rootScope.title = toState.views[Object.keys(toState.views)[0]].resolve.$title[1](toParams);\r\n } catch (e) {\r\n\r\n }\r\n\r\n });\r\n}]);\r\n\r\n\r\nnzbhydraapp.filter('unsafe', [\"$sce\", function ($sce) {\r\n return $sce.trustAsHtml;\r\n}]);\r\n\r\nnzbhydraapp.filter('dereferer', [\"ConfigService\", function (ConfigService) {\r\n return function (url) {\r\n if (ConfigService.getSafe().dereferer) {\r\n return ConfigService.getSafe().dereferer.replace(\"$s\", escape(url));\r\n }\r\n return url;\r\n }\r\n}]);\r\n\r\nnzbhydraapp.config([\"$provide\", function ($provide) {\r\n $provide.decorator(\"$exceptionHandler\", ['$delegate', '$injector', function ($delegate, $injector) {\r\n return function (exception, cause) {\r\n $delegate(exception, cause);\r\n try {\r\n console.log(exception);\r\n var stack = exception.stack.split('\\n').map(function (line) {\r\n return line.trim();\r\n });\r\n stack = stack.join(\"\\n\");\r\n //$injector.get(\"$http\").put(\"internalapi/logerror\", {error: stack, cause: angular.isDefined(cause) ? cause.toString() : \"No known cause\"});\r\n\r\n\r\n } catch (e) {\r\n console.error(\"Unable to log JS exception to server\", e);\r\n }\r\n };\r\n }]);\r\n}]);\r\n\r\n_.mixin({\r\n isNullOrEmpty: function (string) {\r\n return (_.isUndefined(string) || _.isNull(string) || (_.isString(string) && string.length === 0))\r\n }\r\n});\r\n\r\nnzbhydraapp.factory('sessionInjector', [\"$injector\", function ($injector) {\r\n var sessionInjector = {\r\n response: function (response) {\r\n if (response.headers(\"Hydra-MaySeeAdmin\") != null) {\r\n $injector.get(\"HydraAuthService\").setLoggedInByBasic(response.headers(\"Hydra-MaySeeStats\") == \"True\", response.headers(\"Hydra-MaySeeAdmin\") == \"True\", response.headers(\"Hydra-Username\"))\r\n }\r\n\r\n return response;\r\n }\r\n };\r\n return sessionInjector;\r\n}]);\r\n\r\nnzbhydraapp.config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('sessionInjector');\r\n}]);\r\n\r\nnzbhydraapp.directive('autoFocus', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'AC',\r\n link: function (_scope, _element) {\r\n $timeout(function () {\r\n _element[0].focus();\r\n }, 0);\r\n }\r\n };\r\n}]);\r\n\r\n\r\nnzbhydraapp.factory('focus', [\"$timeout\", \"$window\", function ($timeout, $window) {\r\n return function (id) {\r\n // timeout makes sure that it is invoked after any other event has been triggered.\r\n // e.g. click events that need to run before the focus or\r\n // inputs elements that are in a disabled state but are enabled when those events\r\n // are triggered.\r\n $timeout(function () {\r\n var element = $window.document.getElementById(id);\r\n if (element)\r\n element.focus();\r\n });\r\n };\r\n}]);\r\n\r\nnzbhydraapp.directive('eventFocus', [\"focus\", function (focus) {\r\n return function (scope, elem, attr) {\r\n elem.on(attr.eventFocus, function () {\r\n focus(attr.eventFocusId);\r\n });\r\n\r\n // Removes bound events in the element itself\r\n // when the scope is destroyed\r\n scope.$on('$destroy', function () {\r\n elem.off(attr.eventFocus);\r\n });\r\n };\r\n}]);","angular\r\n .module('nzbhydraApp').directive(\"keepFocus\", ['$timeout', function ($timeout) {\r\n /*\r\n Intended use:\r\n \r\n */\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function ($scope, $element, attrs, ngModel) {\r\n\r\n ngModel.$parsers.unshift(function (value) {\r\n $timeout(function () {\r\n $element[0].focus();\r\n });\r\n return value;\r\n });\r\n\r\n }\r\n };\r\n}])","var HEADER_NAME = 'MyApp-Handle-Errors-Generically';\nvar specificallyHandleInProgress = false;\n\nnzbhydraapp.factory('RequestsErrorHandler', [\"$q\", \"growl\", \"blockUI\", \"GeneralModalService\", function ($q, growl, blockUI, GeneralModalService) {\n return {\n // --- The user's API for claiming responsiblity for requests ---\n specificallyHandled: function (specificallyHandledBlock) {\n specificallyHandleInProgress = true;\n try {\n return specificallyHandledBlock();\n } finally {\n specificallyHandleInProgress = false;\n }\n },\n\n // --- Response interceptor for handling errors generically ---\n responseError: function (rejection) {\n blockUI.reset();\n var shouldHandle = (rejection && rejection.config && rejection.config.headers && rejection.config.headers[HEADER_NAME] && !rejection.config.url.contains(\"logerror\"));\n if (shouldHandle) {\n var message = \"An error occured :
\" + rejection.status + \": \" + rejection.statusText;\n\n if (rejection.data) {\n message += \"

\" + rejection.data;\n }\n GeneralModalService.open(message);\n\n } else if (rejection && rejection.config && rejection.config.headers && rejection.config.headers[HEADER_NAME] && rejection.config.url.contains(\"logerror\")) {\n console.log(\"Not handling connection error while sending exception to server\");\n }\n\n return $q.reject(rejection);\n }\n };\n}]);\n\n\nnzbhydraapp.config(['$provide', '$httpProvider', function ($provide, $httpProvider) {\n $httpProvider.interceptors.push('RequestsErrorHandler');\n\n // --- Decorate $http to add a special header by default ---\n\n function addHeaderToConfig(config) {\n config = config || {};\n config.headers = config.headers || {};\n\n // Add the header unless user asked to handle errors himself\n if (!specificallyHandleInProgress) {\n config.headers[HEADER_NAME] = true;\n }\n\n return config;\n }\n\n // The rest here is mostly boilerplate needed to decorate $http safely\n $provide.decorator('$http', ['$delegate', function ($delegate) {\n function decorateRegularCall(method) {\n return function (url, config) {\n return $delegate[method](url, addHeaderToConfig(config));\n };\n }\n\n function decorateDataCall(method) {\n return function (url, data, config) {\n return $delegate[method](url, data, addHeaderToConfig(config));\n };\n }\n\n function copyNotOverriddenAttributes(newHttp) {\n for (var attr in $delegate) {\n if (!newHttp.hasOwnProperty(attr)) {\n if (typeof($delegate[attr]) === 'function') {\n newHttp[attr] = function () {\n return $delegate.apply($delegate, arguments);\n };\n } else {\n newHttp[attr] = $delegate[attr];\n }\n }\n }\n }\n\n var newHttp = function (config) {\n return $delegate(addHeaderToConfig(config));\n };\n\n newHttp.get = decorateRegularCall('get');\n newHttp.delete = decorateRegularCall('delete');\n newHttp.head = decorateRegularCall('head');\n newHttp.jsonp = decorateRegularCall('jsonp');\n newHttp.post = decorateDataCall('post');\n newHttp.put = decorateDataCall('put');\n\n copyNotOverriddenAttributes(newHttp);\n\n return newHttp;\n }]);\n}]);","var filters = angular.module('filters', []);\r\n\r\nfilters.filter('bytes', function() {\r\n\treturn function(bytes) {\r\n\t\treturn filesize(bytes);\r\n\t}\r\n});\r\n\r\nfilters.filter('unsafe', \r\n\t[\"$sce\", function ($sce) {\r\n\t\treturn function (value, type) {\r\n\t\t\treturn $sce.trustAs(type || 'html', text);\r\n\t\t};\r\n\t}]\r\n);\r\n\r\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["nzbhydra.js","directives/updates.js","directives/title-row.js","directives/title-group.js","directives/tab-or-chart.js","directives/search-result.js","directives/search-result-non-title-columns.js","directives/on-finish-render.js","directives/log.js","directives/keep-focus.js","directives/indexer-input.js","directives/focus-on.js","directives/duplicate-group.js","directives/download-nzbzip-button.js","directives/download-nzbs-button.js","directives/dataTableDirectives.js","directives/connection-test.js","directives/cfg-form-entry.js","directives/backup.js","directives/addable-nzbs.js","directives/addable-nzb.js","update-service.js","update-footer-controller.js","system-controller.js","stats-service.js","stats-controller.js","search-service.js","search-results-controller.js","search-history-service.js","search-history-controller.js","search-controller.js","restart-service.js","nzbhydra-control-service.js","nzb-download-service.js","modal.js","modal-service.js","login-controller.js","indexer-statuses-controller.js","index-controller.js","hydra-auth-service.js","header-controller.js","generic-error-handler.js","formly-config.js","filters.js","file-download-service.js","downloader-categories-service.js","download-history-controller.js","config-service.js","config-fields-service.js","config-controller.js","categories-service.js","backup-service.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACruBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1nEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"nzbhydra.js","sourcesContent":["var nzbhydraapp = angular.module('nzbhydraApp', ['angular-loading-bar', 'cgBusy', 'ui.bootstrap', 'ipCookie', 'angular-growl', 'angular.filter', 'filters', 'ui.router', 'blockUI', 'mgcrea.ngStrap', 'angularUtils.directives.dirPagination', 'nvd3', 'formly', 'formlyBootstrap', 'frapontillo.bootstrap-switch', 'ui.select', 'ngSanitize', 'checklist-model', 'ngAria', 'ngMessages', 'ui.router.title', 'LocalStorageModule', 'angular.filter', 'ngFileUpload', 'ngCookies']);\r\n\r\nangular.module('nzbhydraApp').config([\"$stateProvider\", \"$urlRouterProvider\", \"$locationProvider\", \"blockUIConfig\", \"$urlMatcherFactoryProvider\", \"localStorageServiceProvider\", \"bootstrapped\", function ($stateProvider, $urlRouterProvider, $locationProvider, blockUIConfig, $urlMatcherFactoryProvider, localStorageServiceProvider, bootstrapped) {\r\n\r\n blockUIConfig.autoBlock = false;\r\n $urlMatcherFactoryProvider.strictMode(false);\r\n\r\n $urlRouterProvider.otherwise(\"/\");\r\n\r\n\r\n $stateProvider\r\n .state('root', {\r\n url: '',\r\n abstract: true,\r\n resolve: {\r\n //loginRequired: loginRequired\r\n },\r\n views: {\r\n 'header': {\r\n templateUrl: 'static/html/states/header.html',\r\n controller: 'HeaderController'\r\n },\r\n 'footer': {\r\n templateUrl: 'footer.html'\r\n }\r\n }\r\n })\r\n .state(\"root.config\", {\r\n url: \"/config\",\r\n views: {},\r\n abstract: true\r\n })\r\n .state(\"root.config.main\", {\r\n url: \"/main\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n controllerAs: 'ctrl',\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 0;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Main)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.auth\", {\r\n url: \"/auth\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 1;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Auth)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.searching\", {\r\n url: \"/searching\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 2;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Searching)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.categories\", {\r\n url: \"/categories\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 3;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Categories)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.downloader\", {\r\n url: \"/downloader\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 4;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Downloader)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.config.indexers\", {\r\n url: \"/indexers\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/config.html\",\r\n controller: \"ConfigController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n config: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.get();\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 5;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Config (Indexers)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats\", {\r\n url: \"/stats\",\r\n abstract: true,\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/stats.html\",\r\n controller: [\"$scope\", \"$state\", function ($scope, $state) {\r\n $scope.$state = $state;\r\n }],\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats\"\r\n }]\r\n }\r\n\r\n }\r\n }\r\n })\r\n .state(\"root.stats.main\", {\r\n url: \"/stats\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: \"static/html/states/main-stats.html\",\r\n controller: \"StatsController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats.indexers\", {\r\n url: \"/indexers\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: \"static/html/states/indexer-statuses.html\",\r\n controller: IndexerStatusesController,\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n statuses: [\"$http\", function ($http) {\r\n return $http.get(\"internalapi/getindexerstatuses\").success(function (response) {\r\n return response.indexerStatuses;\r\n });\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats (Indexers)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats.searches\", {\r\n url: \"/searches\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: \"static/html/states/search-history.html\",\r\n controller: SearchHistoryController,\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n history: ['loginRequired', 'SearchHistoryService', function (loginRequired, SearchHistoryService) {\r\n return SearchHistoryService.getSearchHistory();\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats (Searches)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.stats.downloads\", {\r\n url: \"/downloads\",\r\n views: {\r\n 'stats@root.stats': {\r\n templateUrl: 'static/html/states/download-history.html',\r\n controller: DownloadHistoryController,\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"stats\")\r\n }],\r\n downloads: [\"StatsService\", function (StatsService) {\r\n return StatsService.getDownloadHistory();\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Stats (Downloads)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system\", {\r\n url: \"/system\",\r\n views: {},\r\n abstract: true\r\n })\r\n .state(\"root.system.control\", {\r\n url: \"/control\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n askAdmin: ['loginRequired', '$http', function (loginRequired, $http) {\r\n return $http.get(\"internalapi/askadmin\");\r\n }],\r\n activeTab: [function () {\r\n return 0;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.updates\", {\r\n url: \"/updates\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 1;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Updates)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.log\", {\r\n url: \"/log\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 2;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Log)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.backup\", {\r\n url: \"/backup\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 3;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Backup)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.bugreport\", {\r\n url: \"/bugreport\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 4;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (Bug report)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.system.about\", {\r\n url: \"/about\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/system.html\",\r\n controller: \"SystemController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"admin\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n activeTab: [function () {\r\n return 5;\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"System (About)\"\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n\r\n .state(\"root.search\", {\r\n url: \"/?category&query&imdbid&tvdbid&title&season&episode&minsize&maxsize&minage&maxage&offsets&rid&mode&tmdbid&indexers\",\r\n views: {\r\n 'container@': {\r\n templateUrl: \"static/html/states/search.html\",\r\n controller: \"SearchController\",\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"search\")\r\n }],\r\n safeConfig: ['loginRequired', 'ConfigService', function (loginRequired, ConfigService) {\r\n return ConfigService.getSafe();\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n return \"Search\";\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state(\"root.search.results\", {\r\n views: {\r\n 'results@root.search': {\r\n templateUrl: \"static/html/states/search-results.html\",\r\n controller: \"SearchResultsController\",\r\n controllerAs: \"srController\",\r\n options: {\r\n inherit: true\r\n },\r\n resolve: {\r\n loginRequired: ['$q', '$timeout', '$state', 'HydraAuthService', function ($q, $timeout, $state, HydraAuthService) {\r\n return loginRequired($q, $timeout, $state, HydraAuthService, \"search\")\r\n }],\r\n $title: [\"$stateParams\", function ($stateParams) {\r\n var title = \"Search results\";\r\n var details;\r\n if ($stateParams.title) {\r\n details = $stateParams.title;\r\n } else if ($stateParams.query) {\r\n details = $stateParams.query;\r\n }\r\n if (details) {\r\n title += \" (\" + details + \")\";\r\n }\r\n return title;\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n // .state(\"root.login\", {\r\n // url: \"/login\",\r\n // views: {\r\n // 'container@': {\r\n // templateUrl: \"static/html/states/login.html\",\r\n // controller: \"LoginController\",\r\n // resolve: {\r\n // loginRequired: function () {\r\n // return null;\r\n // },\r\n // $title: function ($stateParams) {\r\n // return \"Login\"\r\n // }\r\n // }\r\n // }\r\n // }\r\n // })\r\n ;\r\n\r\n\r\n $locationProvider.html5Mode(true);\r\n\r\n\r\n function loginRequired($q, $timeout, $state, HydraAuthService, type) {\r\n var deferred = $q.defer();\r\n var userInfos = HydraAuthService.getUserInfos();\r\n var allowed = false;\r\n if (type == \"search\") {\r\n allowed = !userInfos.searchRestricted || userInfos.maySeeSearch;\r\n } else if (type == \"stats\") {\r\n allowed = !userInfos.statsRestricted || userInfos.maySeeStats;\r\n } else if (type == \"admin\") {\r\n allowed = !userInfos.adminRestricted || userInfos.maySeeAdmin;\r\n } else {\r\n allowed = true;\r\n }\r\n if (allowed || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n\r\n //Because I don't know for what state the login is required / asked I have a function for each\r\n\r\n function loginRequiredSearch($q, $timeout, $state, HydraAuthService) {\r\n var deferred = $q.defer();\r\n var userInfos = HydraAuthService.getUserInfos();\r\n if (!userInfos.searchRestricted || userInfos.maySeeSearch || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n function loginRequiredStats($q, $timeout, $state, HydraAuthService) {\r\n var deferred = $q.defer();\r\n\r\n var userInfos = HydraAuthService.getUserInfos();\r\n if (!userInfos.statsRestricted || userInfos.maySeeStats || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n function loginRequiredAdmin($q, $timeout, $state, HydraAuthService) {\r\n var deferred = $q.defer();\r\n\r\n var userInfos = HydraAuthService.getUserInfos();\r\n if (!userInfos.statsRestricted || userInfos.maySeeAdmin || userInfos.authType != \"form\") {\r\n deferred.resolve();\r\n } else {\r\n $timeout(function () {\r\n // This code runs after the authentication promise has been rejected.\r\n // Go to the log-in page\r\n $state.go(\"root.login\");\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n localStorageServiceProvider\r\n .setPrefix('nzbhydra');\r\n localStorageServiceProvider\r\n .setNotify(true, false);\r\n}]);\r\n\r\n\r\nnzbhydraapp.config([\"paginationTemplateProvider\", function (paginationTemplateProvider) {\r\n paginationTemplateProvider.setPath('static/html/dirPagination.tpl.html');\r\n}]);\r\n\r\nnzbhydraapp.config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) {\r\n cfpLoadingBarProvider.latencyThreshold = 100;\r\n}]);\r\n\r\nnzbhydraapp.config(['growlProvider', function (growlProvider) {\r\n growlProvider.globalTimeToLive(5000);\r\n growlProvider.globalPosition('bottom-right');\r\n}]);\r\n\r\nnzbhydraapp.directive('ngEnter', function () {\r\n return function (scope, element, attr) {\r\n element.bind(\"keydown keypress\", function (event) {\r\n if (event.which === 13) {\r\n scope.$apply(function () {\r\n scope.$evalAsync(attr.ngEnter);\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n };\r\n});\r\n\r\nnzbhydraapp.filter('nzblink', function () {\r\n return function (resultItem) {\r\n var uri = new URI(\"internalapi/getnzb\");\r\n uri.addQuery(\"searchResultId\", resultItem.searchResultId);\r\n return uri.toString();\r\n }\r\n});\r\n\r\nnzbhydraapp.factory('focus', [\"$rootScope\", \"$timeout\", function ($rootScope, $timeout) {\r\n return function (name) {\r\n $timeout(function () {\r\n $rootScope.$broadcast('focusOn', name);\r\n });\r\n }\r\n}]);\r\n\r\nnzbhydraapp.run([\"$rootScope\", function ($rootScope) {\r\n $rootScope.$on('$stateChangeSuccess',\r\n function (event, toState, toParams, fromState, fromParams) {\r\n try {\r\n $rootScope.title = toState.views[Object.keys(toState.views)[0]].resolve.$title[1](toParams);\r\n } catch (e) {\r\n\r\n }\r\n\r\n });\r\n}]);\r\n\r\n\r\nnzbhydraapp.filter('unsafe', [\"$sce\", function ($sce) {\r\n return $sce.trustAsHtml;\r\n}]);\r\n\r\nnzbhydraapp.filter('dereferer', [\"ConfigService\", function (ConfigService) {\r\n return function (url) {\r\n if (ConfigService.getSafe().dereferer) {\r\n return ConfigService.getSafe().dereferer.replace(\"$s\", escape(url));\r\n }\r\n return url;\r\n }\r\n}]);\r\n\r\nnzbhydraapp.config([\"$provide\", function ($provide) {\r\n $provide.decorator(\"$exceptionHandler\", ['$delegate', '$injector', function ($delegate, $injector) {\r\n return function (exception, cause) {\r\n $delegate(exception, cause);\r\n try {\r\n console.log(exception);\r\n var stack = exception.stack.split('\\n').map(function (line) {\r\n return line.trim();\r\n });\r\n stack = stack.join(\"\\n\");\r\n //$injector.get(\"$http\").put(\"internalapi/logerror\", {error: stack, cause: angular.isDefined(cause) ? cause.toString() : \"No known cause\"});\r\n\r\n\r\n } catch (e) {\r\n console.error(\"Unable to log JS exception to server\", e);\r\n }\r\n };\r\n }]);\r\n}]);\r\n\r\n_.mixin({\r\n isNullOrEmpty: function (string) {\r\n return (_.isUndefined(string) || _.isNull(string) || (_.isString(string) && string.length === 0))\r\n }\r\n});\r\n\r\nnzbhydraapp.factory('sessionInjector', [\"$injector\", function ($injector) {\r\n var sessionInjector = {\r\n response: function (response) {\r\n if (response.headers(\"Hydra-MaySeeAdmin\") != null) {\r\n $injector.get(\"HydraAuthService\").setLoggedInByBasic(response.headers(\"Hydra-MaySeeStats\") == \"True\", response.headers(\"Hydra-MaySeeAdmin\") == \"True\", response.headers(\"Hydra-Username\"))\r\n }\r\n\r\n return response;\r\n }\r\n };\r\n return sessionInjector;\r\n}]);\r\n\r\nnzbhydraapp.config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('sessionInjector');\r\n}]);\r\n\r\nnzbhydraapp.directive('autoFocus', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'AC',\r\n link: function (_scope, _element) {\r\n $timeout(function () {\r\n _element[0].focus();\r\n }, 0);\r\n }\r\n };\r\n}]);\r\n\r\n\r\nnzbhydraapp.factory('focus', [\"$timeout\", \"$window\", function ($timeout, $window) {\r\n return function (id) {\r\n // timeout makes sure that it is invoked after any other event has been triggered.\r\n // e.g. click events that need to run before the focus or\r\n // inputs elements that are in a disabled state but are enabled when those events\r\n // are triggered.\r\n $timeout(function () {\r\n var element = $window.document.getElementById(id);\r\n if (element)\r\n element.focus();\r\n });\r\n };\r\n}]);\r\n\r\nnzbhydraapp.directive('eventFocus', [\"focus\", function (focus) {\r\n return function (scope, elem, attr) {\r\n elem.on(attr.eventFocus, function () {\r\n focus(attr.eventFocusId);\r\n });\r\n\r\n // Removes bound events in the element itself\r\n // when the scope is destroyed\r\n scope.$on('$destroy', function () {\r\n elem.off(attr.eventFocus);\r\n });\r\n };\r\n}]);","angular\r\n .module('nzbhydraApp')\r\n .directive('hydraupdates', hydraupdates);\r\n\r\nfunction hydraupdates() {\r\n controller.$inject = [\"$scope\", \"UpdateService\", \"$sce\"];\r\n return {\r\n templateUrl: 'static/html/directives/updates.html',\r\n controller: controller\r\n };\r\n\r\n function controller($scope, UpdateService, $sce) {\r\n\r\n $scope.loadingPromise = UpdateService.getVersions().then(function (data) {\r\n $scope.currentVersion = data.data.currentVersion;\r\n $scope.repVersion = data.data.repVersion;\r\n $scope.updateAvailable = data.data.updateAvailable;\r\n $scope.changelog = data.data.changelog;\r\n });\r\n \r\n UpdateService.getVersionHistory().then(function(data) {\r\n $scope.versionHistory = $sce.trustAsHtml(data.data.versionHistory);\r\n });\r\n\r\n $scope.update = function () {\r\n UpdateService.update();\r\n };\r\n\r\n $scope.showChangelog = function () {\r\n UpdateService.showChanges($scope.changelog);\r\n };\r\n \r\n \r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('titleRow', titleRow);\r\n\r\nfunction titleRow() {\r\n return {\r\n templateUrl: 'static/html/directives/title-row.html',\r\n scope: {\r\n duplicates: \"<\",\r\n selected: \"<\",\r\n rowIndex: \"@\"\r\n },\r\n controller: ['$scope', '$element', '$attrs', titleRowController]\r\n };\r\n\r\n function titleRowController($scope) {\r\n $scope.expanded = false;\r\n console.log(\"Building title row\");\r\n $scope.duplicatesToShow = duplicatesToShow;\r\n function duplicatesToShow() {\r\n if ($scope.expanded && $scope.duplicates.length > 1) {\r\n console.log(\"Showing all duplicates in group\");\r\n return $scope.duplicates;\r\n } else {\r\n console.log(\"Showing first duplicate in group\");\r\n return [$scope.duplicates[0]];\r\n }\r\n }\r\n\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('titleGroup', titleGroup);\r\n\r\nfunction titleGroup() {\r\n return {\r\n templateUrl: 'static/html/directives/title-group.html',\r\n scope: {\r\n titles: \"<\",\r\n selected: \"=\",\r\n rowIndex: \"<\",\r\n doShowDuplicates: \"<\",\r\n internalRowIndex: \"@\"\r\n },\r\n controller: ['$scope', '$element', '$attrs', controller],\r\n multiElement: true\r\n };\r\n\r\n function controller($scope, $element, $attrs) {\r\n $scope.expanded = false;\r\n $scope.titleGroupExpanded = false;\r\n\r\n $scope.$on(\"toggleTitleExpansion\", function (event, args) {\r\n $scope.titleGroupExpanded = args;\r\n event.stopPropagation();\r\n });\r\n\r\n\r\n $scope.titlesToShow = titlesToShow;\r\n function titlesToShow() {\r\n return $scope.titles.slice(1);\r\n }\r\n \r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('tabOrChart', tabOrChart);\r\n\r\nfunction tabOrChart() {\r\n return {\r\n templateUrl: 'static/html/directives/tab-or-chart.html',\r\n transclude: {\r\n \"chartSlot\": \"chart\",\r\n \"tableSlot\": \"table\"\r\n },\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n display: \"@\"\r\n }\r\n\r\n };\r\n\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('searchResult', searchResult);\r\n\r\nfunction searchResult() {\r\n return {\r\n templateUrl: 'static/html/directives/search-result.html',\r\n require: '^titleGroup',\r\n scope: {\r\n titleGroup: \"<\",\r\n showDuplicates: \"<\",\r\n selected: \"<\",\r\n rowIndex: \"<\"\r\n },\r\n controller: ['$scope', '$element', '$attrs', controller],\r\n multiElement: true\r\n };\r\n\r\n function controller($scope, $element, $attrs) {\r\n $scope.titleGroupExpanded = false;\r\n $scope.hashGroupExpanded = {};\r\n\r\n $scope.toggleTitleGroup = function () {\r\n $scope.titleGroupExpanded = !$scope.titleGroupExpanded;\r\n if (!$scope.titleGroupExpanded) {\r\n $scope.hashGroupExpanded[$scope.titleGroup[0][0].hash] = false; //Also collapse the first title's duplicates\r\n }\r\n };\r\n\r\n $scope.groupingRowDuplicatesToShow = groupingRowDuplicatesToShow;\r\n function groupingRowDuplicatesToShow() {\r\n if ($scope.showDuplicates && $scope.titleGroup[0].length > 1 && $scope.hashGroupExpanded[$scope.titleGroup[0][0].hash]) {\r\n return $scope.titleGroup[0].slice(1);\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n //
0 && titleGroupExpanded\" class=\"search-results-row\">\r\n $scope.otherTitleRowsToShow = otherTitleRowsToShow;\r\n function otherTitleRowsToShow() {\r\n if ($scope.titleGroup.length > 1 && $scope.titleGroupExpanded) {\r\n return $scope.titleGroup.slice(1);\r\n } else {\r\n return [];\r\n }\r\n }\r\n \r\n $scope.hashGroupDuplicatesToShow = hashGroupDuplicatesToShow;\r\n function hashGroupDuplicatesToShow(hashGroup) {\r\n if ($scope.showDuplicates && $scope.hashGroupExpanded[hashGroup[0].hash]) {\r\n return hashGroup.slice(1);\r\n } else {\r\n return [];\r\n }\r\n }\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('otherColumns', otherColumns);\r\n\r\nfunction otherColumns($http, $templateCache, $compile, $window) {\r\n controller.$inject = [\"$scope\", \"$http\", \"$uibModal\", \"growl\", \"HydraAuthService\"];\r\n return {\r\n scope: {\r\n result: \"<\"\r\n },\r\n multiElement: true,\r\n\r\n link: function (scope, element, attrs) {\r\n $http.get('static/html/directives/search-result-non-title-columns.html', {cache: $templateCache}).success(function (templateContent) {\r\n element.replaceWith($compile(templateContent)(scope));\r\n });\r\n\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, $http, $uibModal, growl, HydraAuthService) {\r\n\r\n $scope.showDetailsDl = HydraAuthService.getUserInfos().maySeeDetailsDl;\r\n\r\n $scope.showNfo = showNfo;\r\n function showNfo(resultItem) {\r\n if (resultItem.has_nfo == 0) {\r\n return;\r\n }\r\n var uri = new URI(\"internalapi/getnfo\");\r\n uri.addQuery(\"searchresultid\", resultItem.searchResultId);\r\n return $http.get(uri.toString()).then(function (response) {\r\n if (response.data.has_nfo) {\r\n $scope.openModal(\"lg\", response.data.nfo)\r\n } else {\r\n if (!angular.isUndefined(resultItem.message)) {\r\n growl.error(resultItem.message);\r\n } else {\r\n growl.info(\"No NFO available\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n $scope.openModal = openModal;\r\n\r\n function openModal(size, nfo) {\r\n var modalInstance = $uibModal.open({\r\n template: '
',\r\n controller: NfoModalInstanceCtrl,\r\n size: size,\r\n resolve: {\r\n nfo: function () {\r\n return nfo;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then();\r\n }\r\n \r\n $scope.downloadNzb = downloadNzb;\r\n \r\n function downloadNzb(resultItem) {\r\n //href = \"{{ result.link }}\"\r\n $window.location.href = resultItem.link;\r\n }\r\n\r\n $scope.getNfoTooltip = function() {\r\n if ($scope.result.has_nfo == 1) {\r\n return \"Show NFO\"\r\n } else if ($scope.result.has_nfo == 2) {\r\n return \"Try to load NFO (may not be available)\";\r\n } else {\r\n return \"No NFO available\";\r\n }\r\n }\r\n }\r\n}\r\notherColumns.$inject = [\"$http\", \"$templateCache\", \"$compile\", \"$window\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .controller('NfoModalInstanceCtrl', NfoModalInstanceCtrl);\r\n\r\nfunction NfoModalInstanceCtrl($scope, $uibModalInstance, nfo) {\r\n\r\n $scope.nfo = nfo;\r\n\r\n $scope.ok = function () {\r\n $uibModalInstance.close($scope.selected.item);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n}\r\nNfoModalInstanceCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"nfo\"];","//Can be used in an ng-repeat directive to call a function when the last element was rendered\r\n//We use it to mark the end of sorting / filtering so we can stop blocking the UI\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .directive('onFinishRender', onFinishRender);\r\n\r\nfunction onFinishRender($timeout) {\r\n function linkFunction(scope, element, attr) {\r\n \r\n if (scope.$last === true) {\r\n $timeout(function () {\r\n scope.$evalAsync(attr.onFinishRender);\r\n });\r\n }\r\n }\r\n\r\n return {\r\n link: linkFunction\r\n }\r\n}\r\nonFinishRender.$inject = [\"$timeout\"];","angular\r\n .module('nzbhydraApp')\r\n .directive('hydralog', hydralog);\r\n\r\nfunction hydralog() {\r\n controller.$inject = [\"$scope\", \"$http\", \"$sce\", \"$interval\", \"localStorageService\"];\r\n return {\r\n templateUrl: \"static/html/directives/log.html\",\r\n controller: controller\r\n };\r\n\r\n function controller($scope, $http, $sce, $interval, localStorageService) {\r\n $scope.tailInterval = null;\r\n $scope.doUpdateLog = localStorageService.get(\"doUpdateLog\") != null ? localStorageService.get(\"doUpdateLog\") : false;\r\n $scope.doTailLog = localStorageService.get(\"doTailLog\") != null ? localStorageService.get(\"doTailLog\") : false;\r\n\r\n\r\n function getAndShowLog() {\r\n return $http.get(\"internalapi/getlogs\").success(function (data) {\r\n $scope.log = $sce.trustAsHtml(data.log);\r\n });\r\n }\r\n\r\n $scope.logPromise = getAndShowLog();\r\n\r\n $scope.scrollToBottom = function () {\r\n document.getElementById(\"logfile\").scrollTop = 10000000;\r\n document.getElementById(\"logfile\").scrollTop = 100001000;\r\n };\r\n\r\n $scope.update = function () {\r\n getAndShowLog();\r\n $scope.scrollToBottom();\r\n };\r\n\r\n function startUpdateLogInterval() {\r\n $scope.tailInterval = $interval(function () {\r\n getAndShowLog();\r\n if ($scope.doTailLog) {\r\n $scope.scrollToBottom();\r\n }\r\n }, 5000);\r\n }\r\n\r\n $scope.toggleUpdate = function() {\r\n if ($scope.doUpdateLog) {\r\n startUpdateLogInterval();\r\n } else if ($scope.tailInterval != null) {\r\n console.log(\"Cancelling\");\r\n $interval.cancel($scope.tailInterval);\r\n localStorageService.set(\"doTailLog\", false);\r\n $scope.doTailLog = false;\r\n }\r\n localStorageService.set(\"doUpdateLog\", $scope.doUpdateLog);\r\n };\r\n\r\n $scope.toggleTailLog = function () {\r\n localStorageService.set(\"doTailLog\", $scope.doTailLog);\r\n };\r\n\r\n if ($scope.doUpdateLog) {\r\n startUpdateLogInterval();\r\n }\r\n\r\n $scope.$on(\r\n \"$destroy\",\r\n function () {\r\n if ($scope.tailInterval !== null) {\r\n $interval.cancel($scope.tailInterval);\r\n }\r\n }\r\n );\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp').directive(\"keepFocus\", ['$timeout', function ($timeout) {\r\n /*\r\n Intended use:\r\n \r\n */\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function ($scope, $element, attrs, ngModel) {\r\n\r\n ngModel.$parsers.unshift(function (value) {\r\n $timeout(function () {\r\n $element[0].focus();\r\n });\r\n return value;\r\n });\r\n\r\n }\r\n };\r\n}])","angular\r\n .module('nzbhydraApp')\r\n .directive('indexerInput', indexerInput);\r\n\r\nfunction indexerInput() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n templateUrl: 'static/html/directives/indexer-input.html',\r\n scope: {\r\n indexer: \"=\",\r\n model: \"=\",\r\n onClick: \"=\"\r\n },\r\n replace: true,\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n $scope.isFocused = false;\r\n \r\n $scope.onFocus = function() {\r\n $scope.isFocused = true;\r\n };\r\n\r\n $scope.onBlur = function () {\r\n $scope.isFocused = false; \r\n };\r\n \r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp').directive('focusOn', focusOn);\r\n\r\nfunction focusOn() {\r\n return directive;\r\n function directive(scope, elem, attr) {\r\n scope.$on('focusOn', function (e, name) {\r\n if (name === attr.focusOn) {\r\n elem[0].focus();\r\n }\r\n });\r\n }\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('duplicateGroup', duplicateGroup);\r\n\r\nfunction duplicateGroup() {\r\n titleRowController.$inject = [\"$scope\", \"localStorageService\"];\r\n return {\r\n templateUrl: 'static/html/directives/duplicate-group.html',\r\n scope: {\r\n duplicates: \"<\",\r\n selected: \"=\",\r\n isFirstRow: \"<\",\r\n rowIndex: \"<\",\r\n displayTitleToggle: \"<\",\r\n internalRowIndex: \"@\"\r\n },\r\n controller: titleRowController\r\n };\r\n\r\n function titleRowController($scope, localStorageService) {\r\n $scope.internalRowIndex = Number($scope.internalRowIndex);\r\n $scope.rowIndex = Number($scope.rowIndex);\r\n $scope.titlesExpanded = false;\r\n $scope.duplicatesExpanded = false;\r\n $scope.foo = {\r\n duplicatesDisplayed: localStorageService.get(\"duplicatesDisplayed\") != null ? localStorageService.get(\"duplicatesDisplayed\") : false\r\n };\r\n $scope.duplicatesToShow = duplicatesToShow;\r\n function duplicatesToShow() {\r\n return $scope.duplicates.slice(1);\r\n }\r\n\r\n $scope.toggleTitleExpansion = function () {\r\n $scope.titlesExpanded = !$scope.titlesExpanded;\r\n $scope.$emit(\"toggleTitleExpansion\", $scope.titlesExpanded);\r\n };\r\n\r\n $scope.toggleDuplicateExpansion = function () {\r\n $scope.duplicatesExpanded = !$scope.duplicatesExpanded;\r\n };\r\n\r\n $scope.$on(\"invertSelection\", function () {\r\n for (var i = 0; i < $scope.duplicates.length; i++) {\r\n if ($scope.duplicatesExpanded) {\r\n invertSelection($scope.selected, $scope.duplicates[i]);\r\n } else {\r\n if (i > 0) {\r\n //Always remove duplicates that aren't displayed\r\n invertSelection($scope.selected, $scope.duplicates[i], true);\r\n } else {\r\n invertSelection($scope.selected, $scope.duplicates[i]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n $scope.$on(\"duplicatesDisplayed\", function (event, args) {\r\n $scope.foo.duplicatesDisplayed = args;\r\n });\r\n\r\n $scope.clickCheckbox = function (event) {\r\n var globalCheckboxIndex = $scope.rowIndex * 1000 + $scope.internalRowIndex * 100 + Number(event.currentTarget.dataset.checkboxIndex);\r\n console.log(globalCheckboxIndex);\r\n $scope.$emit(\"checkboxClicked\", event, globalCheckboxIndex, event.currentTarget.checked);\r\n };\r\n\r\n function isBetween(num, betweena, betweenb) {\r\n return (betweena <= num && num <= betweenb) || (betweena >= num && num >= betweenb);\r\n }\r\n\r\n $scope.$on(\"shiftClick\", function (event, startIndex, endIndex, newValue) {\r\n var globalDuplicateGroupIndex = $scope.rowIndex * 1000 + $scope.internalRowIndex * 100;\r\n if (isBetween(globalDuplicateGroupIndex, startIndex, endIndex)) {\r\n\r\n for (var i = 0; i < $scope.duplicates.length; i++) {\r\n if (isBetween(globalDuplicateGroupIndex + i, startIndex, endIndex)) {\r\n if (i == 0 || $scope.duplicatesExpanded) {\r\n console.log(\"Indirectly clicked row with global index \" + (globalDuplicateGroupIndex + i) + \" setting new checkbox value to \" + newValue);\r\n var index = _.indexOf($scope.selected, $scope.duplicates[i]);\r\n if (index == -1 && newValue) {\r\n console.log(\"Adding to selection\");\r\n $scope.selected.push($scope.duplicates[i]);\r\n } else if (index > -1 && !newValue) {\r\n $scope.selected.splice(index, 1);\r\n console.log(\"Removing from selection\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n function invertSelection(a, b, dontPush) {\r\n var index = _.indexOf(a, b);\r\n if (index > -1) {\r\n a.splice(index, 1);\r\n } else {\r\n if (!dontPush)\r\n a.push(b);\r\n }\r\n }\r\n }\r\n\r\n\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('downloadNzbzipButton', downloadNzbzipButton);\r\n\r\nfunction downloadNzbzipButton() {\r\n controller.$inject = [\"$scope\", \"growl\", \"FileDownloadService\"];\r\n return {\r\n templateUrl: 'static/html/directives/download-nzbzip-button.html',\r\n require: ['^searchResults'],\r\n scope: {\r\n searchResults: \"<\",\r\n searchTitle: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, growl, FileDownloadService) {\r\n\r\n $scope.download = function () {\r\n if (angular.isUndefined($scope.searchResults) || $scope.searchResults.length == 0) {\r\n growl.info(\"You should select at least one result...\");\r\n } else {\r\n\r\n var values = _.map($scope.searchResults, function (value) {\r\n return value.searchResultId;\r\n });\r\n var link = \"getnzbzip?searchresultids=\" + values.join(\"|\");\r\n var searchTitle;\r\n if (angular.isDefined($scope.searchTitle)) {\r\n searchTitle = \" for \" + $scope.searchTitle;\r\n } else {\r\n searchTitle = \"\";\r\n }\r\n var filename = \"NZBHydra NZBs\" + searchTitle + \".zip\";\r\n FileDownloadService.downloadFile(link, filename);\r\n }\r\n }\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('downloadNzbsButton', downloadNzbsButton);\r\n\r\nfunction downloadNzbsButton() {\r\n controller.$inject = [\"$scope\", \"NzbDownloadService\", \"growl\"];\r\n return {\r\n templateUrl: 'static/html/directives/download-nzbs-button.html',\r\n require: ['^searchResults'],\r\n scope: {\r\n searchResults: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, NzbDownloadService, growl) {\r\n\r\n $scope.downloaders = NzbDownloadService.getEnabledDownloaders();\r\n\r\n $scope.download = function (downloader) {\r\n if (angular.isUndefined($scope.searchResults) || $scope.searchResults.length == 0) {\r\n growl.info(\"You should select at least one result...\");\r\n } else {\r\n\r\n var values = _.map($scope.searchResults, function (value) {\r\n return value.searchResultId;\r\n });\r\n\r\n NzbDownloadService.download(downloader, values).then(function (response) {\r\n if (response.data.success) {\r\n growl.info(\"Successfully added \" + response.data.added + \" of \" + response.data.of + \" NZBs\");\r\n } else {\r\n growl.error(\"Error while adding NZBs\");\r\n }\r\n }, function () {\r\n growl.error(\"Error while adding NZBs\");\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp').directive(\"columnFilterWrapper\", columnFilterWrapper);\r\n\r\nfunction columnFilterWrapper() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n restrict: \"E\",\r\n templateUrl: 'static/html/dataTable/columnFilterOuter.html',\r\n transclude: true,\r\n controllerAs: 'columnFilterWrapperCtrl',\r\n scope: true,\r\n bindToController: true,\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n var vm = this;\r\n\r\n vm.open = false;\r\n vm.isActive = false;\r\n\r\n vm.toggle = function () {\r\n vm.open = !vm.open;\r\n if (vm.open) {\r\n $scope.$broadcast(\"opened\");\r\n }\r\n };\r\n\r\n $scope.$on(\"filter\", function (event, column, filterModel, isActive) {\r\n vm.open = false;\r\n vm.isActive = isActive;\r\n })\r\n }\r\n}\r\n\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"freetextFilter\", freetextFilter);\r\n\r\nfunction freetextFilter() {\r\n controller.$inject = [\"$scope\", \"focus\"];\r\n return {\r\n template: '',\r\n require: \"^columnFilterWrapper\",\r\n controllerAs: 'innerController',\r\n scope: {\r\n column: \"@\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, focus) {\r\n $scope.data = {};\r\n\r\n $scope.$on(\"opened\", function () {\r\n focus(\"freetext-filter-input\");\r\n });\r\n\r\n $scope.onKeypress = function (keyEvent) {\r\n if (keyEvent.which === 13) {\r\n $scope.$emit(\"filter\", $scope.column, {filter: $scope.data.filter, filtertype: \"freetext\"}, angular.isDefined($scope.data.filter) && $scope.data.filter.length > 0);\r\n }\r\n }\r\n }\r\n}\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"checkboxesFilter\", checkboxesFilter);\r\n\r\nfunction checkboxesFilter() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n template: '',\r\n controllerAs: 'checkboxesFilterController',\r\n scope: {\r\n column: \"@\",\r\n entries: \"<\",\r\n preselect: \"<\",\r\n showInvert: \"<\",\r\n isBoolean: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n $scope.selected = {\r\n entries: []\r\n };\r\n\r\n if ($scope.preselect) {\r\n $scope.selected.entries = $scope.entries.slice();\r\n }\r\n\r\n $scope.invert = function () {\r\n $scope.selected.entries = _.difference($scope.entries, $scope.selected.entries);\r\n };\r\n\r\n $scope.apply = function () {\r\n console.log($scope.selected);\r\n var isActive = $scope.selected.entries.length < $scope.entries.length;\r\n $scope.$emit(\"filter\", $scope.column, {filter: _.pluck($scope.selected.entries, \"id\"), filtertype: \"checkboxes\", isBoolean: $scope.isBoolean}, isActive)\r\n }\r\n }\r\n}\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"booleanFilter\", booleanFilter);\r\n\r\nfunction booleanFilter() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n template: '',\r\n controllerAs: 'booleanFilterController',\r\n scope: {\r\n column: \"@\",\r\n options: \"<\",\r\n preselect: \"@\"\r\n },\r\n controller: controller\r\n };\r\n\r\n\r\n function controller($scope) {\r\n $scope.selected = {value: $scope.options[$scope.preselect].value};\r\n\r\n $scope.apply = function () {\r\n console.log($scope.selected);\r\n $scope.$emit(\"filter\", $scope.column, {filter: $scope.selected.value, filtertype: \"boolean\"}, $scope.selected.value != $scope.options[0].value)\r\n }\r\n }\r\n}\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"timeFilter\", timeFilter);\r\n\r\nfunction timeFilter() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n template: '',\r\n scope: {\r\n column: \"@\",\r\n selected: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n\r\n $scope.dateOptions = {\r\n dateDisabled: false,\r\n formatYear: 'yy',\r\n startingDay: 1\r\n };\r\n\r\n\r\n $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r\n $scope.format = $scope.formats[0];\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.openAfter = function () {\r\n $scope.after.opened = true;\r\n };\r\n\r\n $scope.openBefore = function () {\r\n $scope.before.opened = true;\r\n };\r\n\r\n $scope.after = {\r\n opened: false\r\n };\r\n\r\n $scope.before = {\r\n opened: false\r\n };\r\n\r\n $scope.apply = function () {\r\n var isActive = $scope.selected.beforeDate || $scope.selected.afterDate;\r\n $scope.$emit(\"filter\", $scope.column, {filter: {after: $scope.selected.afterDate, before: $scope.selected.beforeDate}, filtertype: \"time\"}, isActive)\r\n }\r\n }\r\n}\r\n\r\n\r\nangular\r\n .module('nzbhydraApp').directive(\"columnSortable\", columnSortable);\r\n\r\nfunction columnSortable() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n restrict: \"E\",\r\n templateUrl: \"static/html/dataTable/columnSortable.html\",\r\n transclude: true,\r\n scope: {\r\n sortMode: \"@\", //0: no sorting, 1: asc, 2: desc\r\n column: \"@\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n\r\n if (angular.isUndefined($scope.sortMode)) {\r\n $scope.sortMode = 0;\r\n }\r\n\r\n $scope.$on(\"newSortColumn\", function(event, column) {\r\n if (column != $scope.column) {\r\n $scope.sortMode = 0;\r\n }\r\n });\r\n\r\n $scope.sort = function () {\r\n $scope.sortMode = ($scope.sortMode + 1) % 3;\r\n $scope.$emit(\"sort\", $scope.column, $scope.sortMode)\r\n };\r\n\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('connectionTest', connectionTest);\r\n\r\nfunction connectionTest() {\r\n controller.$inject = [\"$scope\"];\r\n return {\r\n templateUrl: 'static/html/directives/connection-test.html',\r\n require: ['^type', '^data'],\r\n scope: {\r\n type: \"=\",\r\n id: \"=\",\r\n data: \"=\",\r\n downloader: \"=\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope) {\r\n $scope.message = \"\";\r\n console.log($scope);\r\n\r\n var testButton = \"#button-test-connection\";\r\n var testMessage = \"#message-test-connection\";\r\n\r\n function showSuccess() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-danger\");\r\n angular.element(testButton).addClass(\"btn-success\");\r\n }\r\n\r\n function showError() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-success\");\r\n angular.element(testButton).addClass(\"btn-danger\");\r\n }\r\n\r\n $scope.testConnection = function () {\r\n angular.element(testButton).addClass(\"glyphicon-refresh-animate\");\r\n var myInjector = angular.injector([\"ng\"]);\r\n var $http = myInjector.get(\"$http\");\r\n var url;\r\n var params;\r\n if ($scope.type == \"downloader\") {\r\n url = \"internalapi/test_downloader\";\r\n params = {name: $scope.downloader, username: $scope.data.username, password: $scope.data.password};\r\n if ($scope.downloader == \"sabnzbd\") {\r\n params.apikey = $scope.data.apikey;\r\n params.url = $scope.data.url;\r\n } else {\r\n params.host = $scope.data.host;\r\n params.port = $scope.data.port;\r\n params.ssl = $scope.data.ssl;\r\n }\r\n } else if ($scope.data.type == \"newznab\") {\r\n url = \"internalapi/test_newznab\";\r\n params = {host: $scope.data.host, apikey: $scope.data.apikey};\r\n if (angular.isDefined($scope.data.username)) {\r\n params[\"username\"] = $scope.data.username;\r\n params[\"password\"] = $scope.data.password;\r\n }\r\n }\r\n $http.get(url, {params: params}).success(function (result) {\r\n //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click \r\n if (result.result) {\r\n angular.element(testMessage).text(\"\");\r\n showSuccess();\r\n } else {\r\n angular.element(testMessage).text(result.message);\r\n showError();\r\n }\r\n\r\n }).error(function () {\r\n angular.element(testMessage).text(result.message);\r\n showError();\r\n }).finally(function () {\r\n angular.element(testButton).removeClass(\"glyphicon-refresh-animate\");\r\n })\r\n }\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('cfgFormEntry', cfgFormEntry);\r\n\r\nfunction cfgFormEntry() {\r\n return {\r\n templateUrl: 'static/html/directives/cfg-form-entry.html',\r\n require: [\"^title\", \"^cfg\"],\r\n scope: {\r\n title: \"@\",\r\n cfg: \"=\",\r\n help: \"@\",\r\n type: \"@?\",\r\n options: \"=?\"\r\n },\r\n controller: [\"$scope\", \"$element\", \"$attrs\", function ($scope, $element, $attrs) {\r\n $scope.type = angular.isDefined($scope.type) ? $scope.type : 'text';\r\n $scope.options = angular.isDefined($scope.type) ? $scope.$eval($attrs.options) : [];\r\n }]\r\n };\r\n}","angular\r\n .module('nzbhydraApp')\r\n .directive('hydrabackup', hydrabackup);\r\n\r\nfunction hydrabackup() {\r\n controller.$inject = [\"$scope\", \"BackupService\", \"Upload\", \"FileDownloadService\", \"RequestsErrorHandler\", \"growl\", \"RestartService\"];\r\n return {\r\n templateUrl: 'static/html/directives/backup.html',\r\n controller: controller\r\n };\r\n\r\n function controller($scope, BackupService, Upload, FileDownloadService, RequestsErrorHandler, growl, RestartService) {\r\n $scope.refreshBackupList = function () {\r\n BackupService.getBackupsList().then(function (backups) {\r\n $scope.backups = backups;\r\n });\r\n };\r\n\r\n $scope.refreshBackupList();\r\n\r\n $scope.uploadActive = false;\r\n\r\n\r\n $scope.createAndDownloadBackupFile = function() {\r\n FileDownloadService.downloadFile(\"internalapi/getbackup\", \"nzbhydra-backup-\" + moment().format(\"YYYY-MM-DD-HH-mm\") + \".zip\");\r\n };\r\n\r\n $scope.uploadBackupFile = function (file, errFiles) {\r\n RequestsErrorHandler.specificallyHandled(function () {\r\n console.log(\"Hallo\");\r\n $scope.file = file;\r\n $scope.errFile = errFiles && errFiles[0];\r\n if (file) {\r\n $scope.uploadActive = true;\r\n file.upload = Upload.upload({\r\n url: 'internalapi/restorebackup',\r\n data: {content: file}\r\n });\r\n\r\n file.upload.then(function (response) {\r\n $scope.uploadActive = false;\r\n file.result = response.data;\r\n RestartService.restart(\"Restore successful.\");\r\n\r\n }, function (response) {\r\n $scope.uploadActive = false;\r\n growl.error(response.data)\r\n }, function (evt) {\r\n file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));\r\n file.loaded = Math.floor(evt.loaded / 1024);\r\n file.total = Math.floor(evt.total / 1024);\r\n });\r\n }\r\n });\r\n };\r\n\r\n $scope.restoreFromFile = function(filename) {\r\n BackupService.restoreFromFile(filename).then(function() {\r\n RestartService.restart(\"Restore successful.\");\r\n },\r\n function(response) {\r\n growl.error(response.data);\r\n })\r\n }\r\n\r\n }\r\n}\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('addableNzbs', addableNzbs);\r\n\r\nfunction addableNzbs() {\r\n controller.$inject = [\"$scope\", \"NzbDownloadService\"];\r\n return {\r\n templateUrl: 'static/html/directives/addable-nzbs.html',\r\n require: ['^searchResultId'],\r\n scope: {\r\n searchResultId: \"<\",\r\n downloadType: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, NzbDownloadService) {\r\n $scope.downloaders = _.filter(NzbDownloadService.getEnabledDownloaders(), function(downloader) {\r\n if ($scope.downloadType != \"nzb\") {\r\n return downloader.downloadType == $scope.downloadType\r\n }\r\n return true;\r\n });\r\n }\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .directive('addableNzb', addableNzb);\r\n\r\nfunction addableNzb() {\r\n controller.$inject = [\"$scope\", \"NzbDownloadService\", \"growl\"];\r\n return {\r\n templateUrl: 'static/html/directives/addable-nzb.html',\r\n scope: {\r\n searchResultId: \"<\",\r\n downloader: \"<\"\r\n },\r\n controller: controller\r\n };\r\n\r\n function controller($scope, NzbDownloadService, growl) {\r\n if ($scope.downloader.iconCssClass) {\r\n $scope.cssClass = \"fa fa-\" + $scope.downloader.iconCssClass.replace(\"fa-\",\"\").replace(\"fa \", \"\"); \r\n } else {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd\" : \"nzbget\";\r\n }\r\n \r\n $scope.add = function () {\r\n $scope.cssClass = \"nzb-spinning\";\r\n NzbDownloadService.download($scope.downloader, [$scope.searchResultId]).then(function (response) {\r\n if (response.data.success) {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd-success\" : \"nzbget-success\";\r\n } else {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd-error\" : \"nzbget-error\";\r\n growl.error(\"Unable to add NZB. Make sure the downloader is running and properly configured.\");\r\n }\r\n }, function () {\r\n $scope.cssClass = $scope.downloader.type == \"sabnzbd\" ? \"sabnzbd-error\" : \"nzbget-error\";\r\n growl.error(\"An unexpected error occurred while trying to contact NZB Hydra or add the NZB.\");\r\n })\r\n };\r\n \r\n \r\n\r\n }\r\n}\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('UpdateService', UpdateService);\r\n\r\nfunction UpdateService($http, growl, blockUI, RestartService) {\r\n\r\n var currentVersion;\r\n var repVersion;\r\n var updateAvailable;\r\n var changelog;\r\n var versionHistory;\r\n \r\n return {\r\n update: update,\r\n showChanges: showChanges,\r\n getVersions: getVersions,\r\n getChangelog: getChangelog,\r\n getVersionHistory: getVersionHistory\r\n };\r\n \r\n \r\n \r\n function getVersions() {\r\n return $http.get(\"internalapi/get_versions\").then(function (data) {\r\n currentVersion = data.data.currentVersion;\r\n repVersion = data.data.repVersion;\r\n updateAvailable = data.data.updateAvailable;\r\n return data;\r\n });\r\n }\r\n\r\n function getChangelog() {\r\n return $http.get(\"internalapi/get_changelog\", {currentVersion: currentVersion, repVersion: repVersion}).then(function (data) {\r\n changelog = data.data.changelog;\r\n return data;\r\n });\r\n }\r\n \r\n function getVersionHistory() {\r\n return $http.get(\"internalapi/get_version_history\").then(function (data) {\r\n versionHistory = data.data.versionHistory;\r\n return data;\r\n });\r\n }\r\n\r\n function showChanges(changelog) {\r\n\r\n var myInjector = angular.injector([\"ng\", \"ui.bootstrap\"]);\r\n var $uibModal = myInjector.get(\"$uibModal\");\r\n var params = {\r\n size: \"lg\",\r\n templateUrl: \"static/html/changelog.html\",\r\n resolve: {\r\n changelog: function () {\r\n return changelog;\r\n }\r\n },\r\n controller: function ($scope, $sce, $uibModalInstance, changelog) {\r\n //I fucking hate that untrusted HTML shit\r\n changelog = $sce.trustAsHtml(changelog);\r\n $scope.changelog = changelog;\r\n console.log(changelog);\r\n $scope.ok = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n };\r\n\r\n var modalInstance = $uibModal.open(params);\r\n\r\n modalInstance.result.then();\r\n }\r\n \r\n\r\n function update() {\r\n blockUI.start(\"Updating. Please stand by...\");\r\n $http.get(\"internalapi/update\").then(function (data) {\r\n if (data.data.success) {\r\n RestartService.restart(\"Update complete.\", 15);\r\n } else {\r\n blockUI.reset();\r\n growl.info(\"An error occurred while updating. Please check the logs.\");\r\n }\r\n },\r\n function () {\r\n blockUI.reset();\r\n growl.info(\"An error occurred while updating. Please check the logs.\");\r\n });\r\n }\r\n}\r\nUpdateService.$inject = [\"$http\", \"growl\", \"blockUI\", \"RestartService\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('UpdateFooterController', UpdateFooterController);\r\n\r\nfunction UpdateFooterController($scope, UpdateService, HydraAuthService) {\r\n\r\n $scope.updateAvailable = false;\r\n $scope.checked = false;\r\n\r\n $scope.mayUpdate = HydraAuthService.getUserInfos().maySeeAdmin;\r\n\r\n $scope.$on(\"user:loggedIn\", function () {\r\n if (HydraAuthService.getUserInfos().maySeeAdmin && !$scope.checked) {\r\n retrieveUpdateInfos();\r\n }\r\n });\r\n\r\n\r\n if ($scope.mayUpdate) {\r\n retrieveUpdateInfos();\r\n }\r\n\r\n function retrieveUpdateInfos() {\r\n $scope.checked = true;\r\n UpdateService.getVersions().then(function (data) {\r\n $scope.currentVersion = data.data.currentVersion;\r\n $scope.repVersion = data.data.repVersion;\r\n $scope.updateAvailable = data.data.updateAvailable;\r\n $scope.changelog = data.data.changelog;\r\n });\r\n }\r\n\r\n\r\n $scope.update = function () {\r\n UpdateService.update();\r\n };\r\n\r\n $scope.showChangelog = function () {\r\n UpdateService.showChanges($scope.changelog);\r\n }\r\n\r\n}\r\nUpdateFooterController.$inject = [\"$scope\", \"UpdateService\", \"HydraAuthService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('SystemController', SystemController);\r\n\r\nfunction SystemController($scope, $state, activeTab, $http, growl, RestartService, ModalService, UpdateService, NzbHydraControlService) {\r\n\r\n $scope.activeTab = activeTab;\r\n\r\n $scope.shutdown = function () {\r\n NzbHydraControlService.shutdown().then(function () {\r\n growl.info(\"Shutdown initiated. Cya!\");\r\n },\r\n function () {\r\n growl.info(\"Unable to send shutdown command.\");\r\n })\r\n };\r\n\r\n $scope.restart = function () {\r\n RestartService.restart();\r\n };\r\n\r\n $scope.deleteLogAndDatabase = function () {\r\n ModalService.open(\"Delete log and db\", \"Are you absolutely sure you want to delete your database and log files? Hydra will restart to do that.\", {\r\n yes: {\r\n onYes: function () {\r\n NzbHydraControlService.deleteLogAndDb();\r\n RestartService.countdown();\r\n },\r\n text: \"Yes, delete log and database\"\r\n },\r\n no: {\r\n onCancel: function () {\r\n\r\n },\r\n text: \"Nah\"\r\n }\r\n });\r\n };\r\n\r\n $scope.forceUpdate = function() {\r\n UpdateService.update()\r\n };\r\n \r\n\r\n $scope.allTabs = [\r\n {\r\n active: false,\r\n state: 'root.system.control',\r\n name: \"Control\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.updates',\r\n name: \"Updates\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.log',\r\n name: \"Log\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.backup',\r\n name: \"Backup\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.bugreport',\r\n name: \"Bugreport\"\r\n },\r\n {\r\n active: false,\r\n state: 'root.system.about',\r\n name: \"About\"\r\n }\r\n ];\r\n\r\n\r\n $scope.goToSystemState = function (index) {\r\n $state.go($scope.allTabs[index].state, {activeTab: index}, {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n $scope.downloadDebuggingInfos = function() {\r\n $http({method: 'GET', url: 'internalapi/getdebugginginfos', responseType: 'arraybuffer'}).success(function (data, status, headers, config) {\r\n var a = document.createElement('a');\r\n var blob = new Blob([data], {'type': \"application/octet-stream\"});\r\n a.href = URL.createObjectURL(blob);\r\n var filename = \"nzbhydra-debuginfo-\" + moment().format(\"YYYY-MM-DD-HH-mm\") + \".zip\";\r\n a.download = filename;\r\n \r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }).error(function (data, status, headers, config) {\r\n console.log(\"Error:\" + status);\r\n });\r\n }\r\n \r\n}\r\nSystemController.$inject = [\"$scope\", \"$state\", \"activeTab\", \"$http\", \"growl\", \"RestartService\", \"ModalService\", \"UpdateService\", \"NzbHydraControlService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('StatsService', StatsService);\r\n\r\nfunction StatsService($http) {\r\n\r\n return {\r\n get: getStats,\r\n getDownloadHistory: getDownloadHistory\r\n };\r\n\r\n function getStats(after, before) {\r\n return $http.get(\"internalapi/getstats\", {params: {after:after, before:before}}).success(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function getDownloadHistory(pageNumber, limit, filterModel, sortModel) {\r\n var params = {page: pageNumber, limit: limit, filterModel: filterModel};\r\n if (angular.isUndefined(pageNumber)) {\r\n params.page = 1;\r\n }\r\n if (angular.isUndefined(limit)) {\r\n params.limit = 100;\r\n }\r\n if (angular.isUndefined(filterModel)) {\r\n params.filterModel = {}\r\n }\r\n if (!angular.isUndefined(sortModel)) {\r\n params.sortModel = sortModel;\r\n }\r\n return $http.post(\"internalapi/getnzbdownloads\", params).success(function (response) {\r\n return {\r\n nzbDownloads: response.nzbDownloads,\r\n totalDownloads: response.totalDownloads\r\n };\r\n \r\n });\r\n }\r\n\r\n}\r\nStatsService.$inject = [\"$http\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('StatsController', StatsController);\r\n\r\nfunction StatsController($scope, $filter, StatsService, blockUI) {\r\n\r\n $scope.dateOptions = {\r\n dateDisabled: false,\r\n formatYear: 'yy',\r\n startingDay: 1\r\n };\r\n var initializingAfter = true;\r\n var initializingBefore = true;\r\n $scope.afterDate = moment().subtract(30, \"days\").toDate();\r\n $scope.beforeDate = moment().toDate();\r\n updateStats();\r\n\r\n\r\n $scope.openAfter = function () {\r\n $scope.after.opened = true;\r\n };\r\n\r\n $scope.openBefore = function () {\r\n $scope.before.opened = true;\r\n };\r\n\r\n $scope.after = {\r\n opened: false\r\n };\r\n\r\n $scope.before = {\r\n opened: false\r\n };\r\n\r\n function updateStats() {\r\n blockUI.start(\"Updating stats...\");\r\n var after = $scope.afterDate != null ? Math.floor($scope.afterDate.getTime() / 1000) : null;\r\n var before = $scope.beforeDate != null ? Math.floor($scope.beforeDate.getTime() / 1000) : null;\r\n StatsService.get(after, before).then(function(stats) {\r\n $scope.setStats(stats);\r\n });\r\n\r\n blockUI.reset();\r\n }\r\n\r\n $scope.$watch('beforeDate', function () {\r\n if (initializingBefore) {\r\n initializingBefore = false;\r\n } else {\r\n updateStats();\r\n }\r\n });\r\n\r\n\r\n $scope.$watch('afterDate', function () {\r\n if (initializingAfter) {\r\n initializingAfter = false;\r\n } else {\r\n updateStats();\r\n }\r\n });\r\n\r\n $scope.onKeypress = function (keyEvent) {\r\n if (keyEvent.which === 13) {\r\n updateStats();\r\n }\r\n };\r\n\r\n $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r\n $scope.format = $scope.formats[0];\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.setStats = function (stats) {\r\n stats = stats.data;\r\n\r\n $scope.nzbDownloads = null;\r\n $scope.avgResponseTimes = stats.avgResponseTimes;\r\n $scope.avgIndexerSearchResultsShares = stats.avgIndexerSearchResultsShares;\r\n $scope.avgIndexerAccessSuccesses = stats.avgIndexerAccessSuccesses;\r\n $scope.indexerDownloadShares = stats.indexerDownloadShares;\r\n $scope.downloadsPerHourOfDay = stats.timeBasedDownloadStats.perHourOfDay;\r\n $scope.downloadsPerDayOfWeek = stats.timeBasedDownloadStats.perDayOfWeek;\r\n $scope.searchesPerHourOfDay = stats.timeBasedSearchStats.perHourOfDay;\r\n $scope.searchesPerDayOfWeek = stats.timeBasedSearchStats.perDayOfWeek;\r\n\r\n\r\n var numIndexers = $scope.avgResponseTimes.length;\r\n\r\n $scope.avgResponseTimesChart = getChart(\"multiBarHorizontalChart\", $scope.avgResponseTimes, \"name\", \"avgResponseTime\", \"\", \"Response time\");\r\n $scope.avgResponseTimesChart.options.chart.margin.left = 100;\r\n $scope.avgResponseTimesChart.options.chart.yAxis.rotateLabels = -30;\r\n var avgResponseTimesChartHeight = Math.max(numIndexers * 30, 350);\r\n $scope.avgResponseTimesChart.options.chart.height = avgResponseTimesChartHeight;\r\n\r\n $scope.resultsSharesChart = getResultsSharesChart();\r\n\r\n var rotation = 30;\r\n if (numIndexers > 30) {\r\n rotation = 70;\r\n }\r\n $scope.resultsSharesChart.options.chart.xAxis.rotateLabels = rotation;\r\n $scope.resultsSharesChart.options.chart.height = avgResponseTimesChartHeight;\r\n\r\n $scope.downloadsPerHourOfDayChart = getChart(\"discreteBarChart\", $scope.downloadsPerHourOfDay, \"hour\", \"count\", \"Hour of day\", 'Downloads');\r\n $scope.downloadsPerHourOfDayChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.downloadsPerDayOfWeekChart = getChart(\"discreteBarChart\", $scope.downloadsPerDayOfWeek, \"day\", \"count\", \"Day of week\", 'Downloads');\r\n $scope.downloadsPerDayOfWeekChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.searchesPerHourOfDayChart = getChart(\"discreteBarChart\", $scope.searchesPerHourOfDay, \"hour\", \"count\", \"Hour of day\", 'Searches');\r\n $scope.searchesPerHourOfDayChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.searchesPerDayOfWeekChart = getChart(\"discreteBarChart\", $scope.searchesPerDayOfWeek, \"day\", \"count\", \"Day of week\", 'Searches');\r\n $scope.searchesPerDayOfWeekChart.options.chart.xAxis.rotateLabels = 0;\r\n\r\n $scope.indexerDownloadSharesChart = {\r\n options: {\r\n chart: {\r\n type: 'pieChart',\r\n height: 500,\r\n x: function (d) {\r\n return d.name;\r\n },\r\n y: function (d) {\r\n return d.share;\r\n },\r\n showLabels: true,\r\n duration: 500,\r\n labelThreshold: 0.01,\r\n labelSunbeamLayout: true,\r\n tooltip: {\r\n valueFormatter: function (d, i) {\r\n return $filter('number')(d, 2) + \"%\";\r\n }\r\n },\r\n legend: {\r\n margin: {\r\n top: 5,\r\n right: 35,\r\n bottom: 5,\r\n left: 0\r\n }\r\n }\r\n }\r\n },\r\n data: $scope.indexerDownloadShares\r\n };\r\n\r\n $scope.indexerDownloadSharesChart.options.chart.height = Math.min(Math.max(numIndexers * 40, 350), 900);\r\n };\r\n\r\n\r\n function getChart(chartType, values, xKey, yKey, xAxisLabel, yAxisLabel) {\r\n return {\r\n options: {\r\n chart: {\r\n type: chartType,\r\n height: 350,\r\n margin: {\r\n top: 20,\r\n right: 20,\r\n bottom: 100,\r\n left: 50\r\n },\r\n x: function (d) {\r\n return d[xKey];\r\n },\r\n y: function (d) {\r\n return d[yKey];\r\n },\r\n showValues: true,\r\n valueFormat: function (d) {\r\n return d;\r\n },\r\n color: function () {\r\n return \"red\"\r\n },\r\n showControls: false,\r\n showLegend: false,\r\n duration: 100,\r\n xAxis: {\r\n axisLabel: xAxisLabel,\r\n tickFormat: function (d) {\r\n return d;\r\n },\r\n rotateLabels: 30,\r\n showMaxMin: false,\r\n color: function () {\r\n return \"white\"\r\n }\r\n },\r\n yAxis: {\r\n axisLabel: yAxisLabel,\r\n axisLabelDistance: -10,\r\n tickFormat: function (d) {\r\n return d;\r\n }\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n zoom: {\r\n enabled: true,\r\n scaleExtent: [1, 10],\r\n useFixedDomain: false,\r\n useNiceScale: false,\r\n horizontalOff: false,\r\n verticalOff: true,\r\n unzoomEventType: 'dblclick.zoom'\r\n }\r\n }\r\n }, data: [{\r\n \"key\": \"doesntmatter\",\r\n \"bar\": true,\r\n \"values\": values\r\n }]\r\n };\r\n }\r\n\r\n //Was unable to use the function above for this and gave up\r\n function getResultsSharesChart() {\r\n return {\r\n options: {\r\n chart: {\r\n type: 'multiBarChart',\r\n height: 350,\r\n margin: {\r\n top: 20,\r\n right: 20,\r\n bottom: 100,\r\n left: 45\r\n },\r\n\r\n clipEdge: true,\r\n duration: 500,\r\n stacked: false,\r\n reduceXTicks: false,\r\n showValues: true,\r\n tooltip: {\r\n enabled: true,\r\n valueFormatter: function (d) {\r\n return d + \"%\";\r\n }\r\n },\r\n showControls: false,\r\n xAxis: {\r\n axisLabel: '',\r\n showMaxMin: false,\r\n rotateLabels: 30,\r\n axisLabelDistance: 30,\r\n tickFormat: function (d) {\r\n return d;\r\n }\r\n },\r\n yAxis: {\r\n axisLabel: 'Share (%)',\r\n axisLabelDistance: -20,\r\n tickFormat: function (d) {\r\n return d;\r\n }\r\n }\r\n }\r\n },\r\n\r\n data: [\r\n {\r\n key: \"Results\",\r\n values: _.map($scope.avgIndexerSearchResultsShares, function (stats) {\r\n return {series: 0, y: stats.avgResultsShare, x: stats.name}\r\n })\r\n },\r\n {\r\n key: \"Unique results\",\r\n values: _.map($scope.avgIndexerSearchResultsShares, function (stats) {\r\n return {series: 1, y: stats.avgUniqueResults, x: stats.name}\r\n })\r\n }\r\n ]\r\n };\r\n }\r\n\r\n\r\n}\r\nStatsController.$inject = [\"$scope\", \"$filter\", \"StatsService\", \"blockUI\"];\r\n","//\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('SearchService', SearchService);\r\n\r\nfunction SearchService($http) {\r\n\r\n\r\n var lastExecutedQuery;\r\n var lastResults;\r\n\r\n return {\r\n search: search,\r\n getLastResults: getLastResults,\r\n loadMore: loadMore\r\n };\r\n \r\n\r\n function search(category, query, tmdbid, imdbid, title, tvdbid, rid, season, episode, minsize, maxsize, minage, maxage, indexers, mode) {\r\n var uri;\r\n if (category.indexOf(\"Movies\") > -1 || (category.indexOf(\"20\") == 0) || mode == \"movie\") {\r\n uri = new URI(\"internalapi/moviesearch\");\r\n if (angular.isDefined(tmdbid)) {\r\n uri.addQuery(\"tmdbid\", tmdbid);\r\n } else if (angular.isDefined(imdbid)) {\r\n uri.addQuery(\"imdbid\", imdbid);\r\n } else {\r\n uri.addQuery(\"query\", query);\r\n }\r\n\r\n } else if (category.indexOf(\"TV\") > -1 || (category.indexOf(\"50\") == 0) || mode == \"tvsearch\") {\r\n uri = new URI(\"internalapi/tvsearch\");\r\n if (angular.isDefined(tvdbid)) {\r\n uri.addQuery(\"tvdbid\", tvdbid);\r\n }\r\n if (angular.isDefined(rid)) {\r\n uri.addQuery(\"rid\", rid);\r\n } else {\r\n uri.addQuery(\"query\", query);\r\n }\r\n\r\n if (angular.isDefined(season)) {\r\n uri.addQuery(\"season\", season);\r\n }\r\n if (angular.isDefined(episode)) {\r\n uri.addQuery(\"episode\", episode);\r\n }\r\n } else {\r\n uri = new URI(\"internalapi/search\");\r\n uri.addQuery(\"query\", query);\r\n }\r\n if (angular.isDefined(title)) {\r\n uri.addQuery(\"title\", title);\r\n }\r\n if (_.isNumber(minsize)) {\r\n uri.addQuery(\"minsize\", minsize);\r\n }\r\n if (_.isNumber(maxsize)) {\r\n uri.addQuery(\"maxsize\", maxsize);\r\n }\r\n if (_.isNumber(minage)) {\r\n uri.addQuery(\"minage\", minage);\r\n }\r\n if (_.isNumber(maxage)) {\r\n uri.addQuery(\"maxage\", maxage);\r\n }\r\n if (!angular.isUndefined(indexers)) {\r\n uri.addQuery(\"indexers\", decodeURIComponent(indexers));\r\n }\r\n \r\n\r\n uri.addQuery(\"category\", category);\r\n lastExecutedQuery = uri;\r\n return $http.get(uri.toString()).then(processData);\r\n\r\n }\r\n\r\n function loadMore(offset, loadAll) {\r\n lastExecutedQuery.removeQuery(\"offset\");\r\n lastExecutedQuery.addQuery(\"offset\", offset);\r\n lastExecutedQuery.addQuery(\"loadAll\", loadAll ? true : false);\r\n\r\n return $http.get(lastExecutedQuery.toString()).then(processData);\r\n }\r\n\r\n function processData(response) {\r\n var results = response.data.results;\r\n var indexersearches = response.data.indexersearches;\r\n var total = response.data.total;\r\n var rejected = response.data.rejected;\r\n var resultsCount = results.length;\r\n\r\n\r\n //Sum up response times of indexers from individual api accesses\r\n //TODO: Move this to search result controller because we need to update it every time we loaded more results\r\n _.each(indexersearches, function (ps) {\r\n if (ps.did_search) {\r\n ps.averageResponseTime = _.reduce(ps.apiAccesses, function (memo, rp) {\r\n return memo + rp.response_time;\r\n }, 0);\r\n ps.averageResponseTime = ps.averageResponseTime / ps.apiAccesses.length;\r\n }\r\n });\r\n \r\n lastResults = {\"results\": results, \"indexersearches\": indexersearches, \"total\": total, \"resultsCount\": resultsCount, \"rejected\": rejected};\r\n return lastResults;\r\n }\r\n \r\n function getLastResults() {\r\n return lastResults;\r\n }\r\n}\r\nSearchService.$inject = [\"$http\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('SearchResultsController', SearchResultsController);\r\n\r\nfunction sumRejected(rejected) {\r\n return _.reduce(rejected, function (memo, entry) {\r\n return memo + entry[1];\r\n }, 0);\r\n}\r\n\r\n//SearchResultsController.$inject = ['blockUi'];\r\nfunction SearchResultsController($stateParams, $scope, $q, $timeout, blockUI, growl, localStorageService, SearchService, ConfigService) {\r\n\r\n if (localStorageService.get(\"sorting\") != null) {\r\n var sorting = localStorageService.get(\"sorting\");\r\n $scope.sortPredicate = sorting.predicate;\r\n $scope.sortReversed = sorting.reversed;\r\n } else {\r\n $scope.sortPredicate = \"epoch\";\r\n $scope.sortReversed = true;\r\n }\r\n $scope.limitTo = 100;\r\n $scope.offset = 0;\r\n //Handle incoming data\r\n\r\n $scope.indexersearches = _.sortBy(SearchService.getLastResults().indexersearches, function (i) {\r\n return i.indexer.toLowerCase()\r\n });\r\n $scope.indexerDisplayState = []; //Stores if a indexer's results should be displayed or not\r\n $scope.indexerResultsInfo = {}; //Stores information about the indexer's results like how many we already retrieved\r\n $scope.groupExpanded = {};\r\n $scope.selected = [];\r\n if ($stateParams.title) {\r\n $scope.searchTitle = $stateParams.title;\r\n } else if ($stateParams.query) {\r\n $scope.searchTitle = $stateParams.query;\r\n } else {\r\n $scope.searchTitle = undefined;\r\n }\r\n\r\n $scope.selectedIds = _.map($scope.selected, function (value) {\r\n return value.searchResultId;\r\n });\r\n\r\n $scope.lastClicked = null;\r\n $scope.lastClickedValue = null;\r\n\r\n $scope.foo = {\r\n indexerStatusesExpanded: localStorageService.get(\"indexerStatusesExpanded\") != null ? localStorageService.get(\"indexerStatusesExpanded\") : false,\r\n duplicatesDisplayed: localStorageService.get(\"duplicatesDisplayed\") != null ? localStorageService.get(\"duplicatesDisplayed\") : false\r\n };\r\n\r\n $scope.countFilteredOut = 0;\r\n\r\n //Initially set visibility of all found indexers to true, they're needed for initial filtering / sorting\r\n _.forEach($scope.indexersearches, function (ps) {\r\n $scope.indexerDisplayState[ps.indexer.toLowerCase()] = true;\r\n });\r\n\r\n _.forEach($scope.indexersearches, function (ps) {\r\n $scope.indexerResultsInfo[ps.indexer.toLowerCase()] = {loadedResults: ps.loaded_results};\r\n });\r\n\r\n //Process results\r\n $scope.results = SearchService.getLastResults().results;\r\n $scope.total = SearchService.getLastResults().total;\r\n $scope.resultsCount = SearchService.getLastResults().resultsCount;\r\n $scope.rejected = SearchService.getLastResults().rejected;\r\n $scope.countRejected = sumRejected($scope.rejected);\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n\r\n $scope.$emit(\"searchResultsShown\");\r\n stopBlocking();\r\n\r\n //Returns the content of the property (defined by the current sortPredicate) of the first group element \r\n $scope.firstResultPredicate = firstResultPredicate;\r\n function firstResultPredicate(item) {\r\n return item[0][$scope.sortPredicate];\r\n }\r\n\r\n //Returns the unique group identifier which allows angular to keep track of the grouped search results even after filtering, making filtering by indexers a lot faster (albeit still somewhat slow...) \r\n $scope.groupId = groupId;\r\n function groupId(item) {\r\n return item[0][0].searchResultId;\r\n }\r\n\r\n //Block the UI and return after timeout. This way we make sure that the blocking is done before angular starts updating the model/view. There's probably a better way to achieve that?\r\n function startBlocking(message) {\r\n var deferred = $q.defer();\r\n blockUI.start(message);\r\n $timeout(function () {\r\n deferred.resolve();\r\n }, 100);\r\n return deferred.promise;\r\n }\r\n\r\n //Set sorting according to the predicate. If it's the same as the old one, reverse, if not sort by the given default (so that age is descending, name ascending, etc.)\r\n //Sorting (and filtering) are really slow (about 2 seconds for 1000 results from 5 indexers) but I haven't found any way of making it faster, apart from the tracking \r\n $scope.setSorting = setSorting;\r\n function setSorting(predicate, reversedDefault) {\r\n if (predicate == $scope.sortPredicate) {\r\n $scope.sortReversed = !$scope.sortReversed;\r\n } else {\r\n $scope.sortReversed = reversedDefault;\r\n }\r\n $scope.sortPredicate = predicate;\r\n startBlocking(\"Sorting / filtering...\").then(function () {\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n blockUI.reset();\r\n localStorageService.set(\"sorting\", {predicate: predicate, reversed: $scope.sortReversed});\r\n });\r\n }\r\n\r\n $scope.inlineFilter = inlineFilter;\r\n function inlineFilter(result) {\r\n var ok = true;\r\n ok = ok && $scope.titleFilter && result.title.toLowerCase().indexOf($scope.titleFilter) > -1;\r\n ok = ok && $scope.minSizeFilter && $scope.minSizeFilter * 1024 * 1024 < result.size;\r\n ok = ok && $scope.maxSizeFilter && $scope.maxSizeFilter * 1024 * 1024 > result.size;\r\n return ok;\r\n }\r\n\r\n\r\n $scope.$on(\"searchInputChanged\", function (event, query, minage, maxage, minsize, maxsize) {\r\n $scope.filteredResults = sortAndFilter($scope.results, query, minage, maxage, minsize, maxsize);\r\n });\r\n\r\n $scope.resort = function () {\r\n };\r\n\r\n function sortAndFilter(results, query, minage, maxage, minsize, maxsize) {\r\n $scope.countFilteredOut = 0;\r\n\r\n function filterByAgeAndSize(item) {\r\n var ok = true;\r\n ok = ok && (!_.isNumber(minsize) || item.size / 1024 / 1024 >= minsize)\r\n && (!_.isNumber(maxsize) || item.size / 1024 / 1024 <= maxsize)\r\n && (!_.isNumber(minage) || item.age_days >= Number(minage))\r\n && (!_.isNumber(maxage) || item.age_days <= Number(maxage));\r\n\r\n if (ok && query) {\r\n var words = query.toLowerCase().split(\" \");\r\n ok = _.every(words, function (word) {\r\n return item.title.toLowerCase().indexOf(word) > -1;\r\n });\r\n }\r\n if (!ok) {\r\n $scope.countFilteredOut++;\r\n }\r\n return ok;\r\n }\r\n\r\n\r\n function getItemIndexerDisplayState(item) {\r\n return $scope.indexerDisplayState[item.indexer.toLowerCase()];\r\n }\r\n\r\n function getCleanedTitle(element) {\r\n return element.title.toLowerCase().replace(/[\\s\\-\\._]/ig, \"\");\r\n }\r\n\r\n function createSortedHashgroups(titleGroup) {\r\n\r\n function createHashGroup(hashGroup) {\r\n //Sorting hash group's contents should not matter for size and age and title but might for category (we might remove this, it's probably mostly unnecessary)\r\n var sortedHashGroup = _.sortBy(hashGroup, function (item) {\r\n var sortPredicateValue;\r\n if ($scope.sortPredicate == \"grabs\") {\r\n sortPredicateValue = angular.isDefined(item.grabs) ? item.grabs : 0;\r\n } else {\r\n sortPredicateValue = item[$scope.sortPredicate];\r\n }\r\n //var sortPredicateValue = item[$scope.sortPredicate];\r\n return $scope.sortReversed ? -sortPredicateValue : sortPredicateValue;\r\n });\r\n //Now sort the hash group by indexer score (inverted) so that the result with the highest indexer score is shown on top (or as the only one of a hash group if it's collapsed)\r\n sortedHashGroup = _.sortBy(sortedHashGroup, function (item) {\r\n return item.indexerscore * -1;\r\n });\r\n return sortedHashGroup;\r\n }\r\n\r\n function getHashGroupFirstElementSortPredicate(hashGroup) {\r\n if ($scope.sortPredicate == \"grabs\") {\r\n sortPredicateValue = angular.isDefined(hashGroup[0].grabs) ? hashGroup[0].grabs : 0;\r\n } else {\r\n var sortPredicateValue = hashGroup[0][$scope.sortPredicate];\r\n }\r\n return $scope.sortReversed ? -sortPredicateValue : sortPredicateValue;\r\n }\r\n\r\n return _.chain(titleGroup).groupBy(\"hash\").map(createHashGroup).sortBy(getHashGroupFirstElementSortPredicate).value();\r\n }\r\n\r\n function getTitleGroupFirstElementsSortPredicate(titleGroup) {\r\n var sortPredicateValue;\r\n if ($scope.sortPredicate == \"title\") {\r\n sortPredicateValue = titleGroup[0][0].title.toLowerCase();\r\n } else if ($scope.sortPredicate == \"grabs\") {\r\n sortPredicateValue = angular.isDefined(titleGroup[0][0].grabs) ? titleGroup[0][0].grabs : 0;\r\n } else {\r\n sortPredicateValue = titleGroup[0][0][$scope.sortPredicate];\r\n }\r\n\r\n return sortPredicateValue;\r\n }\r\n\r\n var filtered = _.chain(results)\r\n //Filter by age, size and title\r\n .filter(filterByAgeAndSize)\r\n //Remove elements of which the indexer is currently hidden \r\n .filter(getItemIndexerDisplayState)\r\n //Make groups of results with the same title \r\n .groupBy(getCleanedTitle)\r\n //For every title group make subgroups of duplicates and sort the group \r\n .map(createSortedHashgroups)\r\n //And then sort the title group using its first hashgroup's first item (the group itself is already sorted and so are the hash groups) \r\n .sortBy(getTitleGroupFirstElementsSortPredicate)\r\n .value();\r\n if ($scope.sortReversed) {\r\n filtered = filtered.reverse();\r\n }\r\n if ($scope.countFilteredOut > 0) {\r\n growl.info(\"Filtered \" + $scope.countFilteredOut + \" of the retrieved results\");\r\n }\r\n\r\n $scope.lastClicked = null;\r\n return filtered;\r\n }\r\n\r\n $scope.toggleTitlegroupExpand = function toggleTitlegroupExpand(titleGroup) {\r\n $scope.groupExpanded[titleGroup[0][0].title] = !$scope.groupExpanded[titleGroup[0][0].title];\r\n $scope.groupExpanded[titleGroup[0][0].hash] = !$scope.groupExpanded[titleGroup[0][0].hash];\r\n };\r\n\r\n\r\n $scope.stopBlocking = stopBlocking;\r\n function stopBlocking() {\r\n blockUI.reset();\r\n }\r\n\r\n $scope.loadMore = loadMore;\r\n function loadMore(loadAll) {\r\n startBlocking(loadAll ? \"Loading all results...\" : \"Loading more results...\").then(function () {\r\n SearchService.loadMore($scope.resultsCount, loadAll).then(function (data) {\r\n $scope.results = $scope.results.concat(data.results);\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n $scope.total = data.total;\r\n $scope.rejected = data.rejected;\r\n $scope.countRejected = sumRejected($scope.rejected);\r\n $scope.resultsCount += data.resultsCount;\r\n stopBlocking();\r\n });\r\n });\r\n }\r\n\r\n\r\n//Filters the results according to new visibility settings.\r\n $scope.toggleIndexerDisplay = toggleIndexerDisplay;\r\n function toggleIndexerDisplay(indexer) {\r\n $scope.indexerDisplayState[indexer.toLowerCase()] = $scope.indexerDisplayState[indexer.toLowerCase()];\r\n startBlocking(\"Filtering. Sorry...\").then(function () {\r\n $scope.filteredResults = sortAndFilter($scope.results);\r\n }).then(function () {\r\n stopBlocking();\r\n });\r\n }\r\n\r\n $scope.countResults = countResults;\r\n function countResults() {\r\n return $scope.results.length;\r\n }\r\n\r\n $scope.invertSelection = function invertSelection() {\r\n $scope.$broadcast(\"invertSelection\");\r\n };\r\n\r\n $scope.toggleIndexerStatuses = function () {\r\n $scope.foo.indexerStatusesExpanded = !$scope.foo.indexerStatusesExpanded;\r\n localStorageService.set(\"indexerStatusesExpanded\", $scope.foo.indexerStatusesExpanded);\r\n };\r\n\r\n $scope.toggleDuplicatesDisplayed = function () {\r\n //$scope.foo.duplicatesDisplayed = !$scope.foo.duplicatesDisplayed;\r\n localStorageService.set(\"duplicatesDisplayed\", $scope.foo.duplicatesDisplayed);\r\n $scope.$broadcast(\"duplicatesDisplayed\", $scope.foo.duplicatesDisplayed);\r\n };\r\n\r\n $scope.$on(\"checkboxClicked\", function (event, originalEvent, rowIndex, newCheckedValue) {\r\n if (originalEvent.shiftKey && $scope.lastClicked != null) {\r\n $scope.$broadcast(\"shiftClick\", Number($scope.lastClicked), Number(rowIndex), Number($scope.lastClickedValue));\r\n }\r\n $scope.lastClicked = rowIndex;\r\n $scope.lastClickedValue = newCheckedValue;\r\n });\r\n\r\n $scope.filterRejectedZero = function() {\r\n return function (entry) {\r\n return entry[1] > 0;\r\n }\r\n }\r\n}\r\nSearchResultsController.$inject = [\"$stateParams\", \"$scope\", \"$q\", \"$timeout\", \"blockUI\", \"growl\", \"localStorageService\", \"SearchService\", \"ConfigService\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('SearchHistoryService', SearchHistoryService);\r\n\r\nfunction SearchHistoryService($filter, $http) {\r\n\r\n return {\r\n getSearchHistory: getSearchHistory,\r\n getSearchHistoryForSearching: getSearchHistoryForSearching,\r\n formatRequest: formatRequest,\r\n getStateParamsForRepeatedSearch: getStateParamsForRepeatedSearch\r\n };\r\n\r\n function getSearchHistoryForSearching() {\r\n return $http.post(\"internalapi/getsearchrequestsforsearching\").success(function (response) {\r\n return {\r\n searchRequests: response.searchRequests,\r\n totalRequests: response.totalRequests\r\n }\r\n });\r\n }\r\n\r\n function getSearchHistory(pageNumber, limit, filterModel, sortModel, distinct, onlyCurrentUser) {\r\n var params = {\r\n page: pageNumber,\r\n limit: limit,\r\n filterModel: filterModel,\r\n distinct: distinct,\r\n onlyCurrentUser: onlyCurrentUser\r\n };\r\n if (angular.isUndefined(pageNumber)) {\r\n params.page = 1;\r\n }\r\n if (angular.isUndefined(limit)) {\r\n params.limit = 100;\r\n }\r\n if (angular.isUndefined(filterModel)) {\r\n params.filterModel = {}\r\n }\r\n if (!angular.isUndefined(sortModel)) {\r\n params.sortModel = sortModel;\r\n }\r\n return $http.post(\"internalapi/getsearchrequests\", params).success(function (response) {\r\n return {\r\n searchRequests: response.searchRequests,\r\n totalRequests: response.totalRequests\r\n }\r\n });\r\n }\r\n\r\n function formatRequest(request, includeIdLink, includequery, describeEmptySearch, includeTitle) {\r\n var result = [];\r\n //ID key: ID value\r\n //season\r\n //episode\r\n //author\r\n //title\r\n if (includequery && request.query) {\r\n result.push(\"Query: \" + request.query);\r\n }\r\n if (request.title && includeTitle) {\r\n result.push('Title: ' + request.title);\r\n } else if (request.movietitle && includeTitle) {\r\n result.push('Title: ' + request.movietitle);\r\n } else if (request.tvtitle && includeTitle) {\r\n result.push('Title: ' + request.tvtitle);\r\n } else if (request.identifier_key) {\r\n var href;\r\n var key;\r\n if (request.identifier_key == \"imdbid\") {\r\n key = \"IMDB ID\";\r\n href = \"https://www.imdb.com/title/tt\"\r\n } else if (request.identifier_key == \"tvdbid\") {\r\n key = \"TVDB ID\";\r\n href = \"https://thetvdb.com/?tab=series&id=\"\r\n } else if (request.identifier_key == \"rid\") {\r\n key = \"TVRage ID\";\r\n href = \"internalapi/redirect_rid?rid=\"\r\n } else if (request.identifier_key == \"tmdb\") {\r\n key = \"TMDV ID\";\r\n href = \"https://www.themoviedb.org/movie/\"\r\n }\r\n href = href + request.identifier_value;\r\n href = $filter(\"dereferer\")(href);\r\n if (includeIdLink) {\r\n result.push('' + key + ': ' + request.identifier_value + \"\");\r\n } else {\r\n result.push('' + key + \": \" + request.identifier_value);\r\n }\r\n }\r\n if (request.season) {\r\n result.push('Season: ' + request.season);\r\n }\r\n if (request.episode) {\r\n result.push('Episode: ' + request.episode);\r\n }\r\n if (request.author) {\r\n result.push('Author: ' + request.author);\r\n }\r\n if (result.length == 0 && describeEmptySearch) {\r\n result = ['Empty search'];\r\n }\r\n\r\n return result.join(\", \");\r\n\r\n }\r\n\r\n function getStateParamsForRepeatedSearch(request) {\r\n var stateParams = {};\r\n stateParams.mode = \"search\"\r\n if (request.identifier_key == \"imdbid\") {\r\n stateParams.mode = \"movie\"\r\n stateParams.imdbid = request.identifier_value;\r\n } else if (request.identifier_key == \"tvdbid\" || request.identifier_key == \"rid\") {\r\n stateParams.mode = \"tvsearch\";\r\n if (request.identifier_key == \"rid\") {\r\n stateParams.rid = request.identifier_value;\r\n } else {\r\n stateParams.tvdbid = request.identifier_value;\r\n }\r\n\r\n if (request.season != \"\") {\r\n stateParams.season = request.season;\r\n }\r\n if (request.episode != \"\") {\r\n stateParams.episode = request.episode;\r\n }\r\n }\r\n if (request.query != \"\") {\r\n stateParams.query = request.query;\r\n }\r\n\r\n\r\n if (request.movietitle != null) {\r\n stateParams.title = request.movietitle;\r\n }\r\n if (request.tvtitle != null) {\r\n stateParams.title = request.tvtitle;\r\n }\r\n\r\n if (request.category) {\r\n stateParams.category = request.category;\r\n }\r\n\r\n stateParams.category = request.category;\r\n\r\n return stateParams;\r\n }\r\n\r\n\r\n}\r\nSearchHistoryService.$inject = [\"$filter\", \"$http\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('SearchHistoryController', SearchHistoryController);\r\n\r\n\r\nfunction SearchHistoryController($scope, $state, SearchHistoryService, ConfigService, history, $sce, $filter) {\r\n $scope.limit = 100;\r\n $scope.pagination = {\r\n current: 1\r\n };\r\n $scope.sortModel = {\r\n column: \"time\",\r\n sortMode: 2\r\n };\r\n $scope.filterModel = {};\r\n\r\n //Filter options\r\n $scope.categoriesForFiltering = [];\r\n _.forEach(ConfigService.getSafe().categories, function (category) {\r\n $scope.categoriesForFiltering.push({label: category.pretty, id: category.pretty})\r\n });\r\n $scope.preselectedTimeInterval = {beforeDate: null, afterDate: null};\r\n $scope.accessOptionsForFiltering = [{label: \"All\", value: \"all\"}, {label: \"API\", value: false}, {label: \"Internal\", value: true}];\r\n\r\n //Preloaded data\r\n $scope.searchRequests = history.data.searchRequests;\r\n $scope.totalRequests = history.data.totalRequests;\r\n\r\n $scope.update = function () {\r\n SearchHistoryService.getSearchHistory($scope.pagination.current, $scope.limit, $scope.filterModel, $scope.sortModel).then(function (history) {\r\n $scope.searchRequests = history.data.searchRequests;\r\n $scope.totalRequests = history.data.totalRequests;\r\n });\r\n };\r\n\r\n $scope.$on(\"sort\", function (event, column, sortMode) {\r\n if (sortMode == 0) {\r\n column = \"time\";\r\n sortMode = 2;\r\n }\r\n $scope.sortModel = {\r\n column: column,\r\n sortMode: sortMode\r\n };\r\n $scope.$broadcast(\"newSortColumn\", column);\r\n $scope.update();\r\n });\r\n\r\n $scope.$on(\"filter\", function (event, column, filterModel, isActive) {\r\n if (filterModel.filter) {\r\n $scope.filterModel[column] = filterModel;\r\n } else {\r\n delete $scope.filterModel[column];\r\n }\r\n $scope.update();\r\n });\r\n\r\n\r\n $scope.openSearch = function (request) {\r\n var stateParams = {};\r\n if (request.identifier_key == \"imdbid\") {\r\n stateParams.imdbid = request.identifier_value;\r\n } else if (request.identifier_key == \"tvdbid\" || request.identifier_key == \"rid\") {\r\n if (request.identifier_key == \"rid\") {\r\n stateParams.rid = request.identifier_value;\r\n } else {\r\n stateParams.tvdbid = request.identifier_value;\r\n }\r\n\r\n if (request.season != \"\") {\r\n stateParams.season = request.season;\r\n }\r\n if (request.episode != \"\") {\r\n stateParams.episode = request.episode;\r\n }\r\n }\r\n if (request.query != \"\") {\r\n stateParams.query = request.query;\r\n }\r\n if (request.type == \"tv\") {\r\n stateParams.mode = \"tvsearch\"\r\n } else if (request.type == \"movie\") {\r\n stateParams.mode = \"movie\"\r\n } else {\r\n stateParams.mode = \"search\"\r\n }\r\n\r\n if (request.movietitle != null) {\r\n stateParams.title = request.movietitle;\r\n }\r\n if (request.tvtitle != null) {\r\n stateParams.title = request.tvtitle;\r\n }\r\n\r\n if (request.category) {\r\n stateParams.category = request.category;\r\n }\r\n\r\n stateParams.category = request.category;\r\n\r\n $state.go(\"root.search\", stateParams, {inherit: false});\r\n };\r\n\r\n $scope.formatQuery = function (request) {\r\n if (request.movietitle != null) {\r\n return request.movietitle;\r\n }\r\n if (request.tvtitle != null) {\r\n return request.tvtitle;\r\n }\r\n\r\n if (!request.query && !request.identifier_key && !request.season && !request.episode) {\r\n return \"Update query\";\r\n }\r\n return request.query;\r\n };\r\n\r\n $scope.formatAdditional = function (request) {\r\n var result = [];\r\n //ID key: ID value\r\n //season\r\n //episode\r\n //author\r\n //title\r\n if (request.identifier_key) {\r\n var href;\r\n var key;\r\n if (request.identifier_key == \"imdbid\") {\r\n key = \"IMDB ID\";\r\n href = \"https://www.imdb.com/title/tt\"\r\n } else if (request.identifier_key == \"tvdbid\") {\r\n key = \"TVDB ID\";\r\n href = \"https://thetvdb.com/?tab=series&id=\"\r\n } else if (request.identifier_key == \"rid\") {\r\n key = \"TVRage ID\";\r\n href = \"internalapi/redirect_rid?rid=\"\r\n } else if (request.identifier_key == \"tmdb\") {\r\n key = \"TMDV ID\";\r\n href = \"https://www.themoviedb.org/movie/\"\r\n }\r\n href = href + request.identifier_value;\r\n href = $filter(\"dereferer\")(href);\r\n result.push(key + \": \" + '' + request.identifier_value + \"\");\r\n }\r\n if (request.season) {\r\n result.push(\"Season: \" + request.season);\r\n }\r\n if (request.episode) {\r\n result.push(\"Episode: \" + request.episode);\r\n }\r\n if (request.author) {\r\n result.push(\"Author: \" + request.author);\r\n }\r\n if (request.title) {\r\n result.push(\"Title: \" + request.title);\r\n }\r\n return $sce.trustAsHtml(result.join(\", \"));\r\n };\r\n\r\n\r\n\r\n\r\n}\r\nSearchHistoryController.$inject = [\"$scope\", \"$state\", \"SearchHistoryService\", \"ConfigService\", \"history\", \"$sce\", \"$filter\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('SearchController', SearchController);\r\n\r\nfunction SearchController($scope, $http, $stateParams, $state, $window, $filter, $sce, growl, SearchService, focus, ConfigService, HydraAuthService, CategoriesService, blockUI, $element, ModalService, SearchHistoryService) {\r\n\r\n function getNumberOrUndefined(number) {\r\n if (_.isUndefined(number) || _.isNaN(number) || number == \"\") {\r\n return undefined;\r\n }\r\n number = parseInt(number);\r\n if (_.isNumber(number)) {\r\n return number;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n //Fill the form with the search values we got from the state params (so that their values are the same as in the current url)\r\n $scope.mode = $stateParams.mode;\r\n $scope.categories = _.filter(CategoriesService.getAll(), function (c) {\r\n return c.mayBeSelected && c.ignoreResults != \"internal\" && c.ignoreResults != \"always\";\r\n });\r\n if (angular.isDefined($stateParams.category) && $stateParams.category) {\r\n $scope.category = CategoriesService.getByName($stateParams.category);\r\n } else {\r\n $scope.category = CategoriesService.getDefault();\r\n }\r\n $scope.category = (_.isUndefined($stateParams.category) || $stateParams.category == \"\") ? CategoriesService.getDefault() : CategoriesService.getByName($stateParams.category);\r\n $scope.tmdbid = $stateParams.tmdbid;\r\n $scope.tvdbid = $stateParams.tvdbid;\r\n $scope.imdbid = $stateParams.imdbid;\r\n $scope.rid = $stateParams.rid;\r\n $scope.title = $stateParams.title;\r\n $scope.season = $stateParams.season;\r\n $scope.episode = $stateParams.episode;\r\n $scope.query = $stateParams.query;\r\n $scope.minsize = getNumberOrUndefined($stateParams.minsize);\r\n $scope.maxsize = getNumberOrUndefined($stateParams.maxsize);\r\n $scope.minage = getNumberOrUndefined($stateParams.minage);\r\n $scope.maxage = getNumberOrUndefined($stateParams.maxage);\r\n if (!_.isUndefined($scope.title) && _.isUndefined($scope.query)) {\r\n //$scope.query = $scope.title;\r\n }\r\n if (!angular.isUndefined($stateParams.indexers)) {\r\n $scope.indexers = decodeURIComponent($stateParams.indexers).split(\"|\");\r\n }\r\n\r\n $scope.showIndexers = {};\r\n\r\n $scope.searchHistory = [];\r\n\r\n var safeConfig = ConfigService.getSafe();\r\n $scope.showIndexerSelection = HydraAuthService.getUserInfos().showIndexerSelection;\r\n\r\n //Doesn't belong here but whatever\r\n var firstStartThreeDaysAgo = ConfigService.getSafe().firstStart < moment().subtract(3, \"days\").unix();\r\n var doShowSurvey = (ConfigService.getSafe().pollShown == 0 && firstStartThreeDaysAgo) || ConfigService.getSafe().pollShown == 1;\r\n if (doShowSurvey) {\r\n var message;\r\n if (ConfigService.getSafe().pollShown == 0) {\r\n message = \"Dear user, I would like to ask you to answer a short query about NZB Hydra. It is absolutely anonymous and will not take more than a couple of minutes. You would help me a lot!\";\r\n } else {\r\n message = \"Dear user, thank you for answering my last survey. Unfortunately I'm an idiot and didn't know that SurveyMonkey would only show me the first 100 results. Please be so kind and answer the new survey :-)\";\r\n }\r\n ModalService.open(\"User query\",\r\n message, {\r\n yes: {\r\n onYes: function () {\r\n $window.open($filter(\"dereferer\")(\"https://goo.gl/forms/F3PwtEor2krBxLcR2\"), \"_blank\");\r\n $http.get(\"internalapi/pollshown\", {params: {selection: 1}});\r\n ConfigService.getSafe().pollShown = 2;\r\n },\r\n text: \"Yes, I want to help. Take me there.\"\r\n },\r\n cancel: {\r\n onCancel: function () {\r\n $http.get(\"internalapi/pollshown\", {params: {selection: 0}});\r\n ConfigService.getSafe().pollShown = 0;\r\n },\r\n text: \"Not now. Remind me.\"\r\n },\r\n no: {\r\n onNo: function () {\r\n $http.get(\"internalapi/pollshown\", {params: {selection: -1}});\r\n ConfigService.getSafe().pollShown = -1;\r\n },\r\n text: \"Nah, feck off!\"\r\n }\r\n });\r\n }\r\n\r\n\r\n $scope.typeAheadWait = 300;\r\n $scope.selectedItem = \"\";\r\n $scope.autocompleteLoading = false;\r\n $scope.isAskById = $scope.category.supportsById;\r\n $scope.isById = {value: true}; //If true the user wants to search by id so we enable autosearch. Was unable to achieve this using a simple boolean\r\n $scope.availableIndexers = [];\r\n $scope.autocompleteClass = \"autocompletePosterMovies\";\r\n\r\n $scope.toggle = function (searchCategory) {\r\n $scope.category = searchCategory;\r\n\r\n //Show checkbox to ask if the user wants to search by ID (using autocomplete)\r\n $scope.isAskById = $scope.category.supportsById;\r\n\r\n focus('searchfield');\r\n\r\n //Hacky way of triggering the autocomplete loading\r\n var searchModel = $element.find(\"#searchfield\").controller(\"ngModel\");\r\n if (angular.isDefined(searchModel.$viewValue)) {\r\n searchModel.$setViewValue(searchModel.$viewValue + \" \");\r\n }\r\n\r\n if (safeConfig.searching.enableCategorySizes) {\r\n var min = searchCategory.min;\r\n var max = searchCategory.max;\r\n if (_.isNumber(min)) {\r\n $scope.minsize = min;\r\n } else {\r\n $scope.minsize = \"\";\r\n }\r\n if (_.isNumber(max)) {\r\n $scope.maxsize = max;\r\n } else {\r\n $scope.maxsize = \"\";\r\n }\r\n }\r\n\r\n $scope.availableIndexers = getAvailableIndexers();\r\n\r\n\r\n };\r\n\r\n\r\n // Any function returning a promise object can be used to load values asynchronously\r\n $scope.getAutocomplete = function (val) {\r\n $scope.autocompleteLoading = true;\r\n //Expected model returned from API:\r\n //label: What to show in the results\r\n //title: Will be used for file search\r\n //value: Will be used as extraInfo (ttid oder tvdb id)\r\n //poster: url of poster to show\r\n\r\n //Don't use autocomplete if checkbox is disabled\r\n if (!$scope.isById.value) {\r\n return {};\r\n }\r\n\r\n if ($scope.category.name.indexOf(\"movies\") > -1) {\r\n return $http.get('internalapi/autocomplete?type=movie', {\r\n params: {\r\n input: val\r\n }\r\n }).then(function (response) {\r\n $scope.autocompleteLoading = false;\r\n return response.data.results;\r\n });\r\n } else if ($scope.category.name.indexOf(\"tv\") > -1) {\r\n\r\n return $http.get('internalapi/autocomplete?type=tv', {\r\n params: {\r\n input: val\r\n }\r\n }).then(function (response) {\r\n $scope.autocompleteLoading = false;\r\n return response.data.results;\r\n });\r\n } else {\r\n return {};\r\n }\r\n };\r\n\r\n\r\n $scope.startSearch = function () {\r\n blockUI.start(\"Searching...\");\r\n var indexers = angular.isUndefined($scope.indexers) ? undefined : $scope.indexers.join(\"|\");\r\n SearchService.search($scope.category.name, $scope.query, $scope.tmdbid, $scope.imdbid, $scope.title, $scope.tvdbid, $scope.rid, $scope.season, $scope.episode, $scope.minsize, $scope.maxsize, $scope.minage, $scope.maxage, indexers, $scope.mode).then(function () {\r\n $state.go(\"root.search.results\", {\r\n minsize: $scope.minsize,\r\n maxsize: $scope.maxsize,\r\n minage: $scope.minage,\r\n maxage: $scope.maxage\r\n }, {\r\n inherit: true\r\n });\r\n $scope.tmdbid = undefined;\r\n $scope.imdbid = undefined;\r\n $scope.tvdbid = undefined;\r\n });\r\n };\r\n\r\n function getSelectedIndexers() {\r\n var activatedIndexers = _.filter($scope.availableIndexers).filter(function (indexer) {\r\n return indexer.activated;\r\n });\r\n return _.pluck(activatedIndexers, \"name\").join(\"|\");\r\n }\r\n\r\n\r\n $scope.goToSearchUrl = function () {\r\n var stateParams = {};\r\n if ($scope.category.name.indexOf(\"movies\") > -1) {\r\n stateParams.title = $scope.title;\r\n stateParams.mode = \"movie\";\r\n } else if ($scope.category.name.indexOf(\"tv\") > -1) {\r\n stateParams.mode = \"tvsearch\";\r\n stateParams.title = $scope.title;\r\n } else if ($scope.category.name == \"ebook\") {\r\n stateParams.mode = \"ebook\";\r\n } else {\r\n stateParams.mode = \"search\";\r\n }\r\n\r\n stateParams.tmdbid = $scope.tmdbid;\r\n stateParams.tvdbid = $scope.tvdbid;\r\n stateParams.title = $scope.title;\r\n stateParams.season = $scope.season;\r\n stateParams.episode = $scope.episode;\r\n stateParams.query = $scope.query;\r\n stateParams.minsize = $scope.minsize;\r\n stateParams.maxsize = $scope.maxsize;\r\n stateParams.minage = $scope.minage;\r\n stateParams.maxage = $scope.maxage;\r\n stateParams.category = $scope.category.name;\r\n stateParams.indexers = encodeURIComponent(getSelectedIndexers());\r\n $state.go(\"root.search\", stateParams, {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n $scope.repeatSearch = function (request) {\r\n $state.go(\"root.search\", SearchHistoryService.getStateParamsForRepeatedSearch(request), {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n\r\n $scope.selectAutocompleteItem = function ($item) {\r\n $scope.selectedItem = $item;\r\n $scope.title = $item.title;\r\n if ($scope.category.name.indexOf(\"movies\") > -1) {\r\n $scope.tmdbid = $item.value;\r\n } else if ($scope.category.name.indexOf(\"tv\") > -1) {\r\n $scope.tvdbid = $item.value;\r\n }\r\n $scope.query = \"\";\r\n $scope.goToSearchUrl();\r\n };\r\n\r\n $scope.startQuerySearch = function () {\r\n if (!$scope.query) {\r\n growl.error(\"You didn't enter a query...\");\r\n } else {\r\n //Reset values because they might've been set from the last search\r\n $scope.title = undefined;\r\n $scope.tmdbid = undefined;\r\n $scope.tvdbid = undefined;\r\n $scope.season = undefined;\r\n $scope.episode = undefined;\r\n $scope.goToSearchUrl();\r\n }\r\n };\r\n\r\n\r\n $scope.autocompleteActive = function () {\r\n return $scope.category.supportsById;\r\n };\r\n\r\n $scope.seriesSelected = function () {\r\n return $scope.category.name.indexOf(\"tv\") > -1;\r\n };\r\n\r\n $scope.toggleIndexer = function (indexer) {\r\n $scope.indexers[indexer] = !$scope.indexers[indexer]\r\n };\r\n\r\n\r\n function isIndexerPreselected(indexer) {\r\n if (angular.isUndefined($scope.indexers)) {\r\n return indexer.preselect;\r\n } else {\r\n return _.contains($scope.indexers, indexer.name);\r\n }\r\n\r\n }\r\n\r\n\r\n function getAvailableIndexers() {\r\n return _.chain(safeConfig.indexers).filter(function (indexer) {\r\n return indexer.enabled && indexer.showOnSearch && (angular.isUndefined(indexer.categories) || indexer.categories.length == 0 || $scope.category.name == \"all\" || indexer.categories.indexOf($scope.category.name) > -1);\r\n }).sortBy(function (indexer) {\r\n return indexer.name.toLowerCase();\r\n })\r\n .map(function (indexer) {\r\n return {name: indexer.name, activated: isIndexerPreselected(indexer), categories: indexer.categories};\r\n }).value();\r\n }\r\n\r\n\r\n $scope.toggleAllIndexers = function () {\r\n angular.forEach($scope.availableIndexers, function (indexer) {\r\n indexer.activated = !indexer.activated;\r\n })\r\n };\r\n\r\n $scope.searchInputChanged = function () {\r\n $scope.$broadcast(\"searchInputChanged\", $scope.query != $stateParams.query ? $scope.query : null, $scope.minage, $scope.maxage, $scope.minsize, $scope.maxsize);\r\n };\r\n\r\n\r\n $scope.formatRequest = function (request) {\r\n return $sce.trustAsHtml(SearchHistoryService.formatRequest(request, false, true, true, true));\r\n };\r\n\r\n $scope.availableIndexers = getAvailableIndexers();\r\n\r\n\r\n function getAndSetSearchRequests() {\r\n SearchHistoryService.getSearchHistoryForSearching().success(function (data) {\r\n $scope.searchHistory = data.searchRequests;\r\n });\r\n }\r\n\r\n if ($scope.mode) {\r\n $scope.startSearch();\r\n } else {\r\n //Getting the search history only makes sense when we're not currently searching\r\n getAndSetSearchRequests();\r\n }\r\n\r\n $scope.$on(\"searchResultsShown\", function() {\r\n getAndSetSearchRequests();\r\n });\r\n\r\n\r\n\r\n\r\n}\r\nSearchController.$inject = [\"$scope\", \"$http\", \"$stateParams\", \"$state\", \"$window\", \"$filter\", \"$sce\", \"growl\", \"SearchService\", \"focus\", \"ConfigService\", \"HydraAuthService\", \"CategoriesService\", \"blockUI\", \"$element\", \"ModalService\", \"SearchHistoryService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('RestartService', RestartService);\r\n\r\nfunction RestartService(blockUI, $timeout, $window, growl, NzbHydraControlService) {\r\n\r\n return {\r\n restart: restart,\r\n countdown: countdown\r\n };\r\n\r\n\r\n function internalCaR(message, timer) {\r\n\r\n if (timer >= 1) {\r\n blockUI.start(message + \"Restarting. Will reload page in \" + timer + \" seconds...\");\r\n $timeout(function () {\r\n internalCaR(message, timer - 1)\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n blockUI.start(\"Reloading page...\");\r\n $window.location.reload();\r\n }, 1000);\r\n }\r\n }\r\n \r\n function countdown() {\r\n internalCaR(\"\", 15);\r\n }\r\n\r\n function restart(message) {\r\n message = angular.isDefined(message) ? message + \" \" : \"\";\r\n NzbHydraControlService.restart().then(internalCaR(message, 15),\r\n function () {\r\n growl.info(\"Unable to send restart command.\");\r\n }\r\n )\r\n }\r\n}\r\nRestartService.$inject = [\"blockUI\", \"$timeout\", \"$window\", \"growl\", \"NzbHydraControlService\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('NzbHydraControlService', NzbHydraControlService);\r\n\r\nfunction NzbHydraControlService($http) {\r\n\r\n return {\r\n restart: restart,\r\n shutdown: shutdown,\r\n deleteLogAndDb: deleteLogAndDb\r\n };\r\n\r\n function restart() {\r\n return $http.get(\"internalapi/restart\");\r\n }\r\n\r\n function shutdown() {\r\n return $http.get(\"internalapi/shutdown\");\r\n }\r\n\r\n function deleteLogAndDb() {\r\n return $http.get(\"internalapi/deleteloganddb\");\r\n }\r\n}\r\nNzbHydraControlService.$inject = [\"$http\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('NzbDownloadService', NzbDownloadService);\r\n\r\nfunction NzbDownloadService($http, ConfigService, DownloaderCategoriesService) {\r\n\r\n var service = {\r\n download: download,\r\n getEnabledDownloaders: getEnabledDownloaders\r\n };\r\n\r\n return service;\r\n\r\n function sendNzbAddCommand(downloader, searchresultids, category) {\r\n var params = {downloader: downloader.name, searchresultids: angular.toJson(searchresultids)};\r\n if (category != \"No category\") {\r\n params[\"category\"] = category;\r\n }\r\n return $http.put(\"internalapi/addnzbs\", params);\r\n }\r\n \r\n function download(downloader, searchresultids) {\r\n \r\n var category = downloader.defaultCategory;\r\n \r\n if ((_.isUndefined(category) || category == \"\" || category == null) && category != \"No category\") {\r\n return DownloaderCategoriesService.openCategorySelection(downloader).then(function (category) {\r\n return sendNzbAddCommand(downloader, searchresultids, category)\r\n }, function (error) {\r\n throw error;\r\n });\r\n } else {\r\n return sendNzbAddCommand(downloader, searchresultids, category)\r\n }\r\n }\r\n \r\n function getEnabledDownloaders() {\r\n return _.filter(ConfigService.getSafe().downloaders, \"enabled\");\r\n }\r\n}\r\nNzbDownloadService.$inject = [\"$http\", \"ConfigService\", \"DownloaderCategoriesService\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('ModalService', ModalService);\r\n\r\nfunction ModalService($uibModal, $q) {\r\n \r\n return {\r\n open: open\r\n };\r\n \r\n function open(headline, message, params, size) {\r\n //params example:\r\n /*\r\n var p =\r\n {\r\n yes: {\r\n text: \"Yes\", //default: Ok\r\n onYes: function() {}\r\n },\r\n no: { //default: Empty\r\n text: \"No\",\r\n onNo: function () {\r\n }\r\n },\r\n cancel: { \r\n text: \"Cancel\", //default: Cancel\r\n onCancel: function () {\r\n }\r\n }\r\n };\r\n */\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'static/html/modal.html',\r\n controller: 'ModalInstanceCtrl',\r\n size: angular.isDefined(size) ? size : \"md\",\r\n resolve: {\r\n headline: function () {\r\n return headline;\r\n },\r\n message: function(){ \r\n return message;\r\n },\r\n params: function() {\r\n return params;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(function() {\r\n \r\n }, function() {\r\n \r\n });\r\n }\r\n \r\n}\r\nModalService.$inject = [\"$uibModal\", \"$q\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .controller('ModalInstanceCtrl', ModalInstanceCtrl);\r\n\r\nfunction ModalInstanceCtrl($scope, $uibModalInstance, headline, message, params) {\r\n\r\n $scope.message = message;\r\n $scope.headline = headline;\r\n $scope.params = params;\r\n $scope.showCancel = angular.isDefined(params) && angular.isDefined(params.cancel);\r\n $scope.showNo = angular.isDefined(params) && angular.isDefined(params.no);\r\n\r\n if (angular.isUndefined(params) || angular.isUndefined(params.yes)) {\r\n $scope.params = {\r\n yes: {\r\n text: \"Ok\"\r\n }\r\n }\r\n } else if (angular.isUndefined(params.yes.text)) {\r\n params.yes.text = \"Yes\";\r\n }\r\n \r\n if (angular.isDefined(params) && angular.isDefined(params.no) && angular.isUndefined($scope.params.no.text)) {\r\n $scope.params.no.text = \"No\";\r\n }\r\n \r\n if (angular.isDefined(params) && angular.isDefined(params.cancel) && angular.isUndefined($scope.params.cancel.text)) {\r\n $scope.params.cancel.text = \"Cancel\";\r\n }\r\n\r\n $scope.yes = function () {\r\n $uibModalInstance.close();\r\n if(angular.isDefined(params) && angular.isDefined(params.yes) && angular.isDefined($scope.params.yes.onYes)) {\r\n $scope.params.yes.onYes();\r\n }\r\n };\r\n\r\n $scope.no = function () {\r\n $uibModalInstance.close();\r\n if (angular.isDefined(params) && angular.isDefined(params.no) && angular.isDefined($scope.params.no.onNo)) {\r\n $scope.params.no.onNo();\r\n }\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n if (angular.isDefined(params.cancel) && angular.isDefined($scope.params.cancel.onCancel)) {\r\n $scope.params.cancel.onCancel();\r\n }\r\n };\r\n\r\n $scope.$on(\"modal.closing\", function (targetScope, reason, c) {\r\n if (reason == \"backdrop click\") {\r\n $scope.cancel();\r\n }\r\n });\r\n}\r\nModalInstanceCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"headline\", \"message\", \"params\"];\r\n","angular\n .module('nzbhydraApp')\n .service('GeneralModalService', GeneralModalService);\n\nfunction GeneralModalService() {\n \n \n this.open = function (msg, template, templateUrl, size, data) {\n \n //Prevent circular dependency\n var myInjector = angular.injector([\"ng\", \"ui.bootstrap\"]);\n var $uibModal = myInjector.get(\"$uibModal\");\n var params = {};\n \n if(angular.isUndefined(size)) {\n params[\"size\"] = size;\n }\n if (angular.isUndefined(template)) {\n if (angular.isUndefined(templateUrl)) {\n params[\"template\"] = '
' + msg + '
';\n } else {\n params[\"templateUrl\"] = templateUrl;\n }\n } else {\n params[\"template\"] = template;\n }\n params[\"resolve\"] = \n {\n data: function () {\n return data;\n }\n };\n \n var modalInstance = $uibModal.open(params);\n\n modalInstance.result.then();\n\n };\n \n \n}","angular\r\n .module('nzbhydraApp')\r\n .controller('LoginController', LoginController);\r\n\r\nfunction LoginController($scope, RequestsErrorHandler, $state, HydraAuthService, growl) {\r\n $scope.user = {};\r\n $scope.login = function () {\r\n RequestsErrorHandler.specificallyHandled(function () {\r\n HydraAuthService.login($scope.user.username, $scope.user.password).then(function () {\r\n HydraAuthService.setLoggedInByForm();\r\n growl.info(\"Login successful!\");\r\n $state.go(\"root.search\");\r\n }, function () {\r\n growl.error(\"Login failed!\")\r\n });\r\n });\r\n }\r\n}\r\nLoginController.$inject = [\"$scope\", \"RequestsErrorHandler\", \"$state\", \"HydraAuthService\", \"growl\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .controller('IndexerStatusesController', IndexerStatusesController);\r\n\r\n function IndexerStatusesController($scope, $http, statuses) {\r\n $scope.statuses = statuses.data.indexerStatuses;\r\n \r\n $scope.isInPast = function (timestamp) {\r\n return timestamp * 1000 < (new Date).getTime();\r\n };\r\n \r\n $scope.enable = function(indexerName) {\r\n $http.get(\"internalapi/enableindexer\", {params: {name: indexerName}}).then(function(response){\r\n $scope.statuses = response.data.indexerStatuses;\r\n });\r\n }\r\n\r\n }\r\n IndexerStatusesController.$inject = [\"$scope\", \"$http\", \"statuses\"];\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .filter('formatDate', formatDate);\r\n\r\nfunction formatDate(dateFilter) {\r\n return function(timestamp, hidePast) {\r\n if (timestamp) {\r\n if (timestamp * 1000 < (new Date).getTime() && hidePast) {\r\n return \"\"; //\r\n }\r\n \r\n var t = timestamp * 1000;\r\n t = dateFilter(t, 'yyyy-MM-dd HH:mm');\r\n return t;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n}\r\nformatDate.$inject = [\"dateFilter\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .filter('reformatDate', reformatDate);\r\n\r\nfunction reformatDate() {\r\n return function (date) {\r\n //Date in database is saved as UTC without timezone information\r\n return moment.utc(date, \"ddd, D MMM YYYY HH:mm:ss z\").local().format(\"YYYY-MM-DD HH:mm\");\r\n \r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .controller('IndexController', IndexController);\r\n\r\nfunction IndexController($scope, $http, $stateParams, $state) {\r\n console.log(\"Index\");\r\n $state.go(\"root.search\");\r\n}\r\nIndexController.$inject = [\"$scope\", \"$http\", \"$stateParams\", \"$state\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('HydraAuthService', HydraAuthService);\r\n\r\nfunction HydraAuthService($q, $rootScope, $http, bootstrapped) {\r\n\r\n var loggedIn = bootstrapped.username;\r\n\r\n \r\n return {\r\n isLoggedIn: isLoggedIn,\r\n login: login,\r\n askForPassword: askForPassword,\r\n logout: logout,\r\n setLoggedInByForm: setLoggedInByForm,\r\n getUserRights: getUserRights,\r\n setLoggedInByBasic: setLoggedInByBasic,\r\n getUserName: getUserName,\r\n getUserInfos: getUserInfos\r\n };\r\n\r\n\r\n\r\n function getUserInfos() {\r\n return bootstrapped;\r\n }\r\n\r\n \r\n function isLoggedIn() {\r\n return bootstrapped.username;\r\n }\r\n \r\n function setLoggedInByForm() {\r\n $rootScope.$broadcast(\"user:loggedIn\");\r\n }\r\n\r\n function setLoggedInByBasic(_maySeeStats, _maySeeAdmin, _username) {\r\n }\r\n \r\n function login(username, password) {\r\n var deferred = $q.defer();\r\n return $http.post(\"auth/login\", data = {username: username, password: password}).then(function (data) {\r\n bootstrapped = data.data;\r\n loggedIn = true;\r\n $rootScope.$broadcast(\"user:loggedIn\");\r\n deferred.resolve();\r\n });\r\n return deferred;\r\n }\r\n\r\n function askForPassword(params) {\r\n return $http.get(\"internalapi/askforpassword\", {params: params}).then(function (data) {\r\n bootstrapped = data.data;\r\n return bootstrapped;\r\n });\r\n\r\n }\r\n \r\n function logout() {\r\n var deferred = $q.defer();\r\n return $http.post(\"auth/logout\").then(function(data) {\r\n $rootScope.$broadcast(\"user:loggedOut\");\r\n bootstrapped = data.data;\r\n loggedIn = false;\r\n deferred.resolve();\r\n });\r\n return deferred;\r\n }\r\n \r\n function getUserRights() {\r\n var userInfos = getUserInfos();\r\n return {maySeeStats: userInfos.maySeeStats, maySeeAdmin: userInfos.maySeeAdmin, maySeeSearch: userInfos.maySeeSearch};\r\n }\r\n \r\n function getUserName() {\r\n return bootstrapped.username;\r\n }\r\n\r\n\r\n \r\n \r\n \r\n \r\n}\r\nHydraAuthService.$inject = [\"$q\", \"$rootScope\", \"$http\", \"bootstrapped\"];","angular\r\n .module('nzbhydraApp')\r\n .controller('HeaderController', HeaderController);\r\n\r\nfunction HeaderController($scope, $state, growl, HydraAuthService, $location) {\r\n\r\n\r\n $scope.showLoginout = false;\r\n $scope.oldUserName = null;\r\n\r\n function update() {\r\n\r\n $scope.userInfos = HydraAuthService.getUserInfos();\r\n if (!$scope.userInfos.authConfigured) {\r\n $scope.showAdmin = true;\r\n $scope.showStats = true;\r\n $scope.showLoginout = false;\r\n } else {\r\n if ($scope.userInfos.username) {\r\n $scope.showAdmin = $scope.userInfos.maySeeAdmin || !$scope.userInfos.adminRestricted;\r\n $scope.showStats = $scope.userInfos.maySeeStats || !$scope.userInfos.statsRestricted;\r\n $scope.showLoginout = true;\r\n $scope.username = $scope.userInfos.username;\r\n $scope.loginlogoutText = \"Logout \" + $scope.username;\r\n $scope.oldUserName = $scope.username;\r\n } else {\r\n $scope.showAdmin = !$scope.userInfos.adminRestricted;\r\n $scope.showStats = !$scope.userInfos.statsRestricted;\r\n $scope.loginlogoutText = \"Login\";\r\n $scope.showLoginout = $scope.userInfos.adminRestricted || $scope.userInfos.statsRestricted || $scope.userInfos.searchRestricted;\r\n $scope.username = \"\";\r\n }\r\n }\r\n }\r\n\r\n update();\r\n\r\n\r\n $scope.$on(\"user:loggedIn\", function (event, data) {\r\n update();\r\n });\r\n\r\n $scope.$on(\"user:loggedOut\", function (event, data) {\r\n update();\r\n });\r\n\r\n var bases = document.getElementsByTagName('base');\r\n var baseHref = null;\r\n\r\n if (bases.length > 0) {\r\n baseHref = bases[0].href;\r\n }\r\n\r\n $scope.loginout = function () {\r\n if (HydraAuthService.isLoggedIn()) {\r\n HydraAuthService.logout().then(function () {\r\n if ($scope.userInfos.authType === \"basic\") {\r\n growl.info(\"Logged out. Close your browser to make sure session is closed.\");\r\n }\r\n else if ($scope.userInfos.authType === \"form\") {\r\n growl.info(\"Logged out\");\r\n window.location.href = baseHref;\r\n }\r\n update();\r\n //$state.go(\"root.search\", null, {reload: true});\r\n });\r\n\r\n } else {\r\n if ($scope.userInfos.authType === \"basic\") {\r\n var params = {};\r\n if ($scope.oldUserName) {\r\n params = {\r\n old_username: $scope.oldUserName\r\n }\r\n }\r\n HydraAuthService.askForPassword(params).then(function () {\r\n growl.info(\"Login successful!\");\r\n update();\r\n $scope.oldUserName = null;\r\n $state.go(\"root.search\");\r\n })\r\n } else if ($scope.userInfos.authType === \"form\") {\r\n window.location.href = baseHref + \"login\";\r\n } else {\r\n growl.info(\"You shouldn't need to login but here you go!\");\r\n }\r\n }\r\n }\r\n}\r\nHeaderController.$inject = [\"$scope\", \"$state\", \"growl\", \"HydraAuthService\", \"$location\"];\r\n","var HEADER_NAME = 'MyApp-Handle-Errors-Generically';\nvar specificallyHandleInProgress = false;\n\nnzbhydraapp.factory('RequestsErrorHandler', [\"$q\", \"growl\", \"blockUI\", \"GeneralModalService\", function ($q, growl, blockUI, GeneralModalService) {\n return {\n // --- The user's API for claiming responsiblity for requests ---\n specificallyHandled: function (specificallyHandledBlock) {\n specificallyHandleInProgress = true;\n try {\n return specificallyHandledBlock();\n } finally {\n specificallyHandleInProgress = false;\n }\n },\n\n // --- Response interceptor for handling errors generically ---\n responseError: function (rejection) {\n blockUI.reset();\n var shouldHandle = (rejection && rejection.config && rejection.config.headers && rejection.config.headers[HEADER_NAME] && !rejection.config.url.contains(\"logerror\"));\n if (shouldHandle) {\n var message = \"An error occured :
\" + rejection.status + \": \" + rejection.statusText;\n\n if (rejection.data) {\n message += \"

\" + rejection.data;\n }\n GeneralModalService.open(message);\n\n } else if (rejection && rejection.config && rejection.config.headers && rejection.config.headers[HEADER_NAME] && rejection.config.url.contains(\"logerror\")) {\n console.log(\"Not handling connection error while sending exception to server\");\n }\n\n return $q.reject(rejection);\n }\n };\n}]);\n\n\nnzbhydraapp.config(['$provide', '$httpProvider', function ($provide, $httpProvider) {\n $httpProvider.interceptors.push('RequestsErrorHandler');\n\n // --- Decorate $http to add a special header by default ---\n\n function addHeaderToConfig(config) {\n config = config || {};\n config.headers = config.headers || {};\n\n // Add the header unless user asked to handle errors himself\n if (!specificallyHandleInProgress) {\n config.headers[HEADER_NAME] = true;\n }\n\n return config;\n }\n\n // The rest here is mostly boilerplate needed to decorate $http safely\n $provide.decorator('$http', ['$delegate', function ($delegate) {\n function decorateRegularCall(method) {\n return function (url, config) {\n return $delegate[method](url, addHeaderToConfig(config));\n };\n }\n\n function decorateDataCall(method) {\n return function (url, data, config) {\n return $delegate[method](url, data, addHeaderToConfig(config));\n };\n }\n\n function copyNotOverriddenAttributes(newHttp) {\n for (var attr in $delegate) {\n if (!newHttp.hasOwnProperty(attr)) {\n if (typeof($delegate[attr]) === 'function') {\n newHttp[attr] = function () {\n return $delegate.apply($delegate, arguments);\n };\n } else {\n newHttp[attr] = $delegate[attr];\n }\n }\n }\n }\n\n var newHttp = function (config) {\n return $delegate(addHeaderToConfig(config));\n };\n\n newHttp.get = decorateRegularCall('get');\n newHttp.delete = decorateRegularCall('delete');\n newHttp.head = decorateRegularCall('head');\n newHttp.jsonp = decorateRegularCall('jsonp');\n newHttp.post = decorateDataCall('post');\n newHttp.put = decorateDataCall('put');\n\n copyNotOverriddenAttributes(newHttp);\n\n return newHttp;\n }]);\n}]);","hashCode = function (s) {\r\n return s.split(\"\").reduce(function (a, b) {\r\n a = ((a << 5) - a) + b.charCodeAt(0);\r\n return a & a\r\n }, 0);\r\n};\r\n\r\nangular\r\n .module('nzbhydraApp').run([\"formlyConfig\", \"formlyValidationMessages\", function (formlyConfig, formlyValidationMessages) {\r\n formlyValidationMessages.addStringMessage('required', 'This field is required');\r\n formlyConfig.extras.errorExistsAndShouldBeVisibleExpression = 'fc.$touched || form.$submitted';\r\n\r\n}]);\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .config([\"formlyConfigProvider\", function config(formlyConfigProvider) {\r\n formlyConfigProvider.extras.removeChromeAutoComplete = true;\r\n formlyConfigProvider.extras.explicitAsync = true;\r\n formlyConfigProvider.disableWarnings = window.onProd;\r\n\r\n\r\n formlyConfigProvider.setWrapper({\r\n name: 'settingWrapper',\r\n templateUrl: 'setting-wrapper.html'\r\n });\r\n\r\n\r\n formlyConfigProvider.setWrapper({\r\n name: 'fieldset',\r\n template: [\r\n '
',\r\n '{{options.templateOptions.label}}',\r\n '',\r\n '
'\r\n ].join(' ')\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'help',\r\n template: [\r\n '
',\r\n '
',\r\n '
{{ line }}
',\r\n '
',\r\n '
'\r\n ].join(' ')\r\n });\r\n\r\n\r\n formlyConfigProvider.setWrapper({\r\n name: 'logicalGroup',\r\n template: [\r\n ''\r\n ].join(' ')\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalInput',\r\n extends: 'input',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'timeOfDay',\r\n extends: 'horizontalInput',\r\n controller: ['$scope', function ($scope) {\r\n $scope.model[$scope.options.key] = moment.utc($scope.model[$scope.options.key]).toDate();\r\n }]\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'percentInput',\r\n template: [\r\n ''\r\n ].join(' ')\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'apiKeyInput',\r\n template: [\r\n '
',\r\n '',\r\n '',\r\n '',\r\n '
'\r\n ].join(' '),\r\n controller: function ($scope) {\r\n $scope.generate = function () {\r\n var result = \"\";\r\n var length = 24;\r\n var chars = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];\r\n $scope.model[$scope.options.key] = result;\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'testConnection',\r\n templateUrl: 'button-test-connection.html'\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalTestConnection',\r\n extends: 'testConnection',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'checkCaps',\r\n templateUrl: 'button-check-caps.html',\r\n controller: function ($scope, ConfigBoxService, ModalService) {\r\n $scope.message = \"\";\r\n $scope.uniqueId = hashCode($scope.model.name) + hashCode($scope.model.host);\r\n\r\n var testButton = \"#button-check-caps-\" + $scope.uniqueId;\r\n var testMessage = \"#message-check-caps-\" + $scope.uniqueId;\r\n\r\n function showSuccess() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-danger\");\r\n angular.element(testButton).addClass(\"btn-success\");\r\n }\r\n\r\n function showError() {\r\n angular.element(testButton).removeClass(\"btn-default\");\r\n angular.element(testButton).removeClass(\"btn-success\");\r\n angular.element(testButton).addClass(\"btn-danger\");\r\n }\r\n\r\n $scope.checkCaps = function () {\r\n angular.element(testButton).addClass(\"glyphicon-refresh-animate\");\r\n\r\n var url = \"internalapi/test_caps\";\r\n var params = {indexer: $scope.model.name, apikey: $scope.model.apikey, host: $scope.model.host};\r\n if (angular.isDefined($scope.model.username)) {\r\n params[\"username\"] = $scope.model.username;\r\n params[\"password\"] = $scope.model.password;\r\n }\r\n ConfigBoxService.checkCaps(url, params, $scope.model).then(function (data, model) {\r\n angular.element(testMessage).text(\"Supports: \" + data.supportedIds + \",\" ? data.supportedIds && data.supportedTypes : \"\" + data.supportedTypes);\r\n showSuccess();\r\n }, function (message) {\r\n angular.element(testMessage).text(message);\r\n showError();\r\n ModalService.open(\"Error testing capabilities\", 'The capabilities of the indexer could not be checked. You can set the IDs manually. Refer to the Wiki for the IDs supported by some indexers.

You may repeat the check at any time to try again.');\r\n }).finally(function () {\r\n angular.element(testButton).removeClass(\"glyphicon-refresh-animate\");\r\n });\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalCheckCaps',\r\n extends: 'checkCaps',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalApiKeyInput',\r\n extends: 'apiKeyInput',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalPercentInput',\r\n extends: 'percentInput',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'switch',\r\n template: \r\n '
'\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'duoSetting',\r\n extends: 'input',\r\n defaultOptions: {\r\n className: 'col-md-9',\r\n templateOptions: {\r\n type: 'number',\r\n noRow: true,\r\n label: ''\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalSwitch',\r\n extends: 'switch',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalSelect',\r\n extends: 'select',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'horizontalMultiselect',\r\n defaultOptions: {\r\n templateOptions: {\r\n optionsAttr: 'bs-options',\r\n ngOptions: 'option[to.valueProp] as option in to.options | filter: $select.search',\r\n valueProp: 'id',\r\n labelProp: 'label',\r\n getPlaceholder: function() {return \"\";}\r\n }\r\n },\r\n templateUrl: 'ui-select-multiple.html',\r\n wrapper: ['settingWrapper', 'bootstrapHasError']\r\n });\r\n\r\n\r\n formlyConfigProvider.setType({\r\n name: 'label',\r\n template: ''\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'duolabel',\r\n extends: 'label',\r\n defaultOptions: {\r\n className: 'col-md-2',\r\n templateOptions: {\r\n label: '-'\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'repeatSection',\r\n templateUrl: 'repeatSection.html',\r\n controller: function ($scope) {\r\n $scope.formOptions = {formState: $scope.formState};\r\n $scope.addNew = addNew;\r\n $scope.remove = remove;\r\n $scope.copyFields = copyFields;\r\n\r\n function copyFields(fields) {\r\n fields = angular.copy(fields);\r\n $scope.repeatfields = fields;\r\n return fields;\r\n }\r\n\r\n $scope.clear = function (field) {\r\n return _.mapObject(field, function (key, val) {\r\n if (typeof val === 'object') {\r\n return $scope.clear(val);\r\n }\r\n return undefined;\r\n\r\n });\r\n };\r\n\r\n\r\n function addNew() {\r\n $scope.model[$scope.options.key] = $scope.model[$scope.options.key] || [];\r\n var repeatsection = $scope.model[$scope.options.key];\r\n var newsection = angular.copy($scope.options.templateOptions.defaultModel);\r\n repeatsection.push(newsection);\r\n }\r\n\r\n function remove($index) {\r\n $scope.model[$scope.options.key].splice($index, 1);\r\n }\r\n }\r\n });\r\n\r\n formlyConfigProvider.setType({\r\n name: 'arrayConfig',\r\n templateUrl: 'arrayConfig.html',\r\n controller: function ($scope, $uibModal, growl) {\r\n $scope.formOptions = {formState: $scope.formState};\r\n $scope._showBox = _showBox;\r\n $scope.showBox = showBox;\r\n $scope.isInitial = false;\r\n\r\n $scope.presets = $scope.options.data.presets($scope.model);\r\n\r\n\r\n function _showBox(model, parentModel, isInitial, callback) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'configBox.html',\r\n controller: 'ConfigBoxInstanceController',\r\n size: 'lg',\r\n resolve: {\r\n model: function () {\r\n return model;\r\n },\r\n fields: function () {\r\n return $scope.options.data.fieldsFunction(model, parentModel, isInitial, angular.injector());\r\n },\r\n isInitial: function () {\r\n return isInitial\r\n },\r\n parentModel: function () {\r\n return parentModel;\r\n },\r\n data: function () {\r\n return $scope.options.data;\r\n }\r\n }\r\n });\r\n\r\n\r\n modalInstance.result.then(function () {\r\n $scope.form.$setDirty(true);\r\n if (angular.isDefined(callback)) {\r\n callback(true);\r\n }\r\n }, function () {\r\n if (angular.isDefined(callback)) {\r\n callback(false);\r\n }\r\n });\r\n }\r\n\r\n function showBox(model, parentModel) {\r\n $scope._showBox(model, parentModel, false)\r\n }\r\n\r\n $scope.addEntry = function (entriesCollection, preset) {\r\n if ($scope.options.data.checkAddingAllowed(entriesCollection, preset)) {\r\n var model = angular.copy($scope.options.data.defaultModel);\r\n if (angular.isDefined(preset)) {\r\n _.extend(model, preset);\r\n }\r\n\r\n $scope.isInitial = true;\r\n\r\n $scope._showBox(model, entriesCollection, true, function (isSubmitted) {\r\n if (isSubmitted) {\r\n entriesCollection.push(model);\r\n }\r\n });\r\n } else {\r\n growl.error(\"That predefined indexer is already configured.\"); //For now this is the only case where adding is forbidden so we use this hardcoded message \"for now\"... (;-))\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n });\r\n\r\n }]);\r\n\r\n\r\nangular.module('nzbhydraApp').controller('ConfigBoxInstanceController', [\"$scope\", \"$q\", \"$uibModalInstance\", \"$http\", \"model\", \"fields\", \"isInitial\", \"parentModel\", \"data\", \"growl\", function ($scope, $q, $uibModalInstance, $http, model, fields, isInitial, parentModel, data, growl) {\r\n\r\n $scope.model = model;\r\n $scope.fields = fields;\r\n $scope.isInitial = isInitial;\r\n $scope.allowDelete = data.allowDeleteFunction(model);\r\n $scope.spinnerActive = false;\r\n $scope.needsConnectionTest = false;\r\n \r\n $scope.obSubmit = function () {\r\n console.log($scope);\r\n if ($scope.form.$valid) {\r\n \r\n var a = data.checkBeforeClose($scope, model).then(function() {\r\n $uibModalInstance.close($scope);\r\n });\r\n } else {\r\n growl.error(\"Config invalid. Please check your settings.\");\r\n angular.forEach($scope.form.$error, function (error) {\r\n angular.forEach(error, function (field) {\r\n field.$setTouched();\r\n });\r\n });\r\n }\r\n };\r\n\r\n $scope.reset = function () {\r\n $scope.reset();\r\n };\r\n\r\n $scope.deleteEntry = function () {\r\n parentModel.splice(parentModel.indexOf(model), 1);\r\n $uibModalInstance.close($scope);\r\n };\r\n\r\n $scope.reset = function () {\r\n if (angular.isDefined(data.resetFunction)) {\r\n data.resetFunction($scope);\r\n }\r\n };\r\n\r\n $scope.$on(\"modal.closing\", function (targetScope, reason) {\r\n if (reason == \"backdrop click\") {\r\n $scope.reset($scope);\r\n }\r\n });\r\n}]);\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('ConfigBoxService', ConfigBoxService);\r\n\r\nfunction ConfigBoxService($http, $q) {\r\n\r\n return {\r\n checkConnection: checkConnection,\r\n checkCaps: checkCaps\r\n };\r\n\r\n function checkConnection(url, settings) {\r\n var deferred = $q.defer();\r\n\r\n $http.post(url, settings).success(function (result) {\r\n //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click \r\n if (result.result) {\r\n deferred.resolve();\r\n } else {\r\n deferred.reject({checked: true, message: result.message});\r\n }\r\n }).error(function (result) {\r\n deferred.reject({checked: false, message: result.message});\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function checkCaps(url, params, model) {\r\n var deferred = $q.defer();\r\n\r\n $http.post(url, params).success(function (data) {\r\n //Using ng-class and a scope variable doesn't work for some reason, is only updated at second click \r\n if (data.success) {\r\n model.search_ids = data.supportedIds;\r\n model.searchTypes = data.supportedTypes;\r\n if (data.supportsAllCategories) { //Don't display all the categories, will be replaced with placeholder \"All categories\"\r\n model.categories = [];\r\n } else {\r\n model.categories = data.supportedCategories;\r\n }\r\n model.animeCategory = data.animeCategory;\r\n model.audiobookCategory = data.audiobookCategory;\r\n model.comicCategory = data.comicCategory;\r\n model.ebookCategory = data.ebookCategory;\r\n model.magazineCategory = data.magazineCategory;\r\n model.backend = data.backend;\r\n deferred.resolve({supportedIds: data.supportedIds, supportedTypes: data.supportedTypes}, model);\r\n } else {\r\n deferred.reject(data.message);\r\n }\r\n }).error(function () {\r\n deferred.reject(\"Unknown error\");\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n}\r\nConfigBoxService.$inject = [\"$http\", \"$q\"];\r\n\r\n\r\n\r\n\r\n","var filters = angular.module('filters', []);\r\n\r\nfilters.filter('bytes', function() {\r\n\treturn function(bytes) {\r\n\t\treturn filesize(bytes);\r\n\t}\r\n});\r\n\r\nfilters.filter('unsafe', \r\n\t[\"$sce\", function ($sce) {\r\n\t\treturn function (value, type) {\r\n\t\t\treturn $sce.trustAs(type || 'html', text);\r\n\t\t};\r\n\t}]\r\n);\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('FileDownloadService', FileDownloadService);\r\n\r\nfunction FileDownloadService($http, growl ) {\r\n\r\n var service = {\r\n downloadFile: downloadFile\r\n };\r\n\r\n return service;\r\n \r\n function downloadFile(link, filename) {\r\n $http({method: 'GET', url: link, responseType: 'arraybuffer'}).success(function (data, status, headers, config) {\r\n var a = document.createElement('a');\r\n var blob = new Blob([data], {'type': \"application/octet-stream\"});\r\n a.href = URL.createObjectURL(blob);\r\n a.download = filename;\r\n\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }).error(function (data, status, headers, config) {\r\n growl.error(status);\r\n });\r\n\r\n }\r\n \r\n\r\n}\r\nFileDownloadService.$inject = [\"$http\", \"growl\"];\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('DownloaderCategoriesService', DownloaderCategoriesService);\r\n\r\nfunction DownloaderCategoriesService($http, $q, $uibModal) {\r\n\r\n var categories = {};\r\n var selectedCategory = {};\r\n\r\n var service = {\r\n get: getCategories,\r\n invalidate: invalidate,\r\n select: select,\r\n openCategorySelection: openCategorySelection\r\n };\r\n\r\n var deferred;\r\n\r\n return service;\r\n\r\n\r\n function getCategories(downloader) {\r\n\r\n function loadAll() {\r\n if (angular.isDefined(categories) && angular.isDefined(categories.downloader)) {\r\n var deferred = $q.defer();\r\n deferred.resolve(categories.downloader);\r\n return deferred.promise;\r\n }\r\n \r\n return $http.get('internalapi/getcategories', {params: {downloader: downloader.name}})\r\n .then(function (categoriesResponse) {\r\n \r\n console.log(\"Updating downloader categories cache\");\r\n var categories = {downloader: categoriesResponse.data.categories};\r\n return categoriesResponse.data.categories;\r\n\r\n }, function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n return loadAll().then(function (categories) {\r\n return categories;\r\n }, function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n\r\n function openCategorySelection(downloader) {\r\n $uibModal.open({\r\n templateUrl: 'static/html/directives/addable-nzb-modal.html',\r\n controller: 'DownloaderCategorySelectionController',\r\n size: \"sm\",\r\n resolve: {\r\n categories: function () {\r\n return getCategories(downloader)\r\n }\r\n }\r\n });\r\n deferred = $q.defer();\r\n return deferred.promise;\r\n }\r\n\r\n function select(category) {\r\n selectedCategory = category;\r\n console.log(\"Selected category \" + category);\r\n deferred.resolve(category);\r\n }\r\n\r\n function invalidate() {\r\n console.log(\"Invalidating categories\");\r\n categories = undefined;\r\n }\r\n}\r\nDownloaderCategoriesService.$inject = [\"$http\", \"$q\", \"$uibModal\"];\r\n\r\nangular\r\n .module('nzbhydraApp').controller('DownloaderCategorySelectionController', [\"$scope\", \"$uibModalInstance\", \"DownloaderCategoriesService\", \"categories\", function ($scope, $uibModalInstance, DownloaderCategoriesService, categories) {\r\n console.log(categories);\r\n $scope.categories = categories;\r\n $scope.select = function (category) {\r\n DownloaderCategoriesService.select(category);\r\n $uibModalInstance.close($scope);\r\n }\r\n}]);","angular\r\n .module('nzbhydraApp')\r\n .controller('DownloadHistoryController', DownloadHistoryController);\r\n\r\n\r\nfunction DownloadHistoryController($scope, StatsService, downloads, ConfigService) {\r\n $scope.limit = 100;\r\n $scope.pagination = {\r\n current: 1\r\n };\r\n $scope.sortModel = {\r\n column: \"time\",\r\n sortMode: 2\r\n };\r\n $scope.filterModel = {};\r\n\r\n //Filter options\r\n $scope.indexersForFiltering = [];\r\n _.forEach(ConfigService.getSafe().indexers, function (indexer) {\r\n $scope.indexersForFiltering.push({label: indexer.name, id: indexer.name})\r\n });\r\n $scope.preselectedTimeInterval = {beforeDate: null, afterDate: null};\r\n $scope.successfulForFiltering = [{label: \"Succesful\", id: true}, {label: \"Unsuccesful\", id: false}, {label: \"Unknown\", id: null}];\r\n $scope.accessOptionsForFiltering = [{label: \"All\", value: \"all\"}, {label: \"API\", value: false}, {label: \"Internal\", value: true}];\r\n\r\n\r\n //Preloaded data\r\n $scope.nzbDownloads = downloads.data.nzbDownloads;\r\n $scope.totalDownloads = downloads.data.totalDownloads;\r\n\r\n\r\n $scope.update = function () {\r\n StatsService.getDownloadHistory($scope.pagination.current, $scope.limit, $scope.filterModel, $scope.sortModel).then(function (downloads) {\r\n $scope.nzbDownloads = downloads.data.nzbDownloads;\r\n $scope.totalDownloads = downloads.data.totalDownloads;\r\n });\r\n };\r\n\r\n\r\n $scope.$on(\"sort\", function (event, column, sortMode) {\r\n if (sortMode == 0) {\r\n column = \"time\";\r\n sortMode = 2;\r\n }\r\n $scope.sortModel = {\r\n column: column,\r\n sortMode: sortMode\r\n };\r\n $scope.$broadcast(\"newSortColumn\", column);\r\n $scope.update();\r\n });\r\n\r\n\r\n $scope.$on(\"filter\", function (event, column, filterModel, isActive) {\r\n if (filterModel.filter) {\r\n $scope.filterModel[column] = filterModel;\r\n } else {\r\n delete $scope.filterModel[column];\r\n }\r\n $scope.update();\r\n })\r\n\r\n}\r\nDownloadHistoryController.$inject = [\"$scope\", \"StatsService\", \"downloads\", \"ConfigService\"];\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .filter('reformatDateEpoch', reformatDateEpoch);\r\n\r\nfunction reformatDateEpoch() {\r\n return function (date) {\r\n return moment.unix(date).local().format(\"YYYY-MM-DD HH:mm\");\r\n\r\n }\r\n}","angular\r\n .module('nzbhydraApp')\r\n .factory('ConfigService', ConfigService);\r\n\r\nfunction ConfigService($http, $q, $cacheFactory, bootstrapped) {\r\n\r\n var cache = $cacheFactory(\"nzbhydra\");\r\n var safeConfig = bootstrapped.safeConfig;\r\n\r\n return {\r\n set: set,\r\n get: get,\r\n getSafe: getSafe,\r\n invalidateSafe: invalidateSafe,\r\n maySeeAdminArea: maySeeAdminArea\r\n };\r\n\r\n\r\n function set(newConfig) {\r\n $http.put('internalapi/setsettings', newConfig)\r\n .then(function (successresponse) {\r\n console.log(\"Settings saved. Updating cache\");\r\n cache.put(\"config\", newConfig);\r\n invalidateSafe();\r\n }, function (errorresponse) {\r\n console.log(\"Error saving settings:\");\r\n console.log(errorresponse);\r\n });\r\n }\r\n\r\n\r\n function get() {\r\n var config = cache.get(\"config\");\r\n if (angular.isUndefined(config)) {\r\n config = $http.get('internalapi/getconfig').then(function (data) {\r\n return data.data;\r\n });\r\n cache.put(\"config\", config);\r\n }\r\n\r\n return config;\r\n }\r\n\r\n function getSafe() {\r\n return safeConfig;\r\n }\r\n\r\n function invalidateSafe() {\r\n $http.get('internalapi/getsafeconfig').then(function (data) {\r\n safeConfig = data.data;\r\n });\r\n }\r\n\r\n function maySeeAdminArea() {\r\n function loadAll() {\r\n var maySeeAdminArea = cache.get(\"maySeeAdminArea\");\r\n if (!angular.isUndefined(maySeeAdminArea)) {\r\n var deferred = $q.defer();\r\n deferred.resolve(maySeeAdminArea);\r\n return deferred.promise;\r\n }\r\n\r\n return $http.get('internalapi/mayseeadminarea')\r\n .then(function (configResponse) {\r\n var config = configResponse.data;\r\n cache.put(\"maySeeAdminArea\", config);\r\n return configResponse.data;\r\n });\r\n }\r\n\r\n return loadAll().then(function (maySeeAdminArea) {\r\n return maySeeAdminArea;\r\n });\r\n }\r\n}\r\nConfigService.$inject = [\"$http\", \"$q\", \"$cacheFactory\", \"bootstrapped\"];","angular\r\n .module('nzbhydraApp')\r\n .factory('ConfigFields', ConfigFields);\r\n\r\nfunction ConfigFields($injector) {\r\n\r\n var restartWatcher;\r\n\r\n return {\r\n getFields: getFields,\r\n setRestartWatcher: setRestartWatcher\r\n };\r\n\r\n function setRestartWatcher(restartWatcherFunction) {\r\n restartWatcher = restartWatcherFunction;\r\n }\r\n\r\n\r\n function restartListener(field, newValue, oldValue) {\r\n if (newValue != oldValue) {\r\n restartWatcher();\r\n }\r\n }\r\n\r\n\r\n function ipValidator() {\r\n return {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n if (value) {\r\n return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/.test(value)\r\n || /^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$/.test(value);\r\n }\r\n return true;\r\n },\r\n message: '$viewValue + \" is not a valid IP Address\"'\r\n };\r\n }\r\n\r\n function regexValidator(regex, message, prefixViewValue) {\r\n return {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n if (value) {\r\n return regex.test(value);\r\n }\r\n return true;\r\n },\r\n message: (prefixViewValue ? '$viewValue + \" ' : '\" ') + message + '\"'\r\n };\r\n }\r\n\r\n\r\n function getCategoryFields() {\r\n var fields = [];\r\n var ConfigService = $injector.get(\"ConfigService\");\r\n var categories = ConfigService.getSafe().categories;\r\n fields.push({\r\n key: 'enableCategorySizes',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Category sizes',\r\n help: \"Preset min and max sizes depending on the selected category\"\r\n }\r\n });\r\n _.each(categories, function (category) {\r\n if (category.name != \"all\" && category.name != \"na\") {\r\n var categoryFields = [\r\n {\r\n key: \"categories.\" + category.name + '.requiredWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required words',\r\n placeholder: 'separate, with, commas, like, this'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.requiredRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required regex',\r\n help: 'Must be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.forbiddenWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden words',\r\n placeholder: 'separate, with, commas, like, this'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.forbiddenRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden regex',\r\n help: 'Must not be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.applyRestrictions',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Apply restrictions',\r\n options: [\r\n {name: 'Internal searches', value: 'internal'},\r\n {name: 'API searches', value: 'external'},\r\n {name: 'All searches', value: 'both'}\r\n ],\r\n help: \"For which type of search word restrictions will be applied\"\r\n }\r\n }\r\n ];\r\n categoryFields.push({\r\n wrapper: 'settingWrapper',\r\n templateOptions: {\r\n label: 'Size preset'\r\n },\r\n fieldGroup: [\r\n {\r\n key: \"categories.\" + category.name + '.min',\r\n type: 'duoSetting',\r\n templateOptions: {\r\n addonRight: {\r\n text: 'MB'\r\n }\r\n }\r\n },\r\n {\r\n type: 'duolabel'\r\n },\r\n {\r\n key: \"categories.\" + category.name + '.max',\r\n type: 'duoSetting', templateOptions: {addonRight: {text: 'MB'}}\r\n }\r\n ]\r\n });\r\n categoryFields.push({\r\n key: \"categories.\" + category.name + '.newznabCategories',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Newznab categories',\r\n help: 'Map newznab categories to hydra categories',\r\n required: true\r\n },\r\n parsers: [function (value) {\r\n if (!value) {\r\n return value;\r\n }\r\n var arr = [];\r\n arr.push.apply(arr, value.split(\",\").map(Number));\r\n return arr;\r\n\r\n }]\r\n });\r\n categoryFields.push({\r\n key: \"categories.\" + category.name + '.ignoreResults',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Ignore results',\r\n options: [\r\n {name: 'For internal searches', value: 'internal'},\r\n {name: 'For API searches', value: 'external'},\r\n {name: 'Always', value: 'always'},\r\n {name: 'Never', value: 'never'}\r\n ],\r\n help: \"Ignore results from this category\"\r\n }\r\n });\r\n\r\n fields.push({\r\n wrapper: 'fieldset',\r\n templateOptions: {\r\n label: category.pretty\r\n },\r\n fieldGroup: categoryFields\r\n\r\n })\r\n }\r\n }\r\n );\r\n return fields;\r\n }\r\n\r\n function getFields(rootModel) {\r\n return {\r\n main: [\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Hosting'},\r\n fieldGroup: [\r\n {\r\n key: 'host',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Host',\r\n required: true,\r\n placeholder: 'IPv4/6 address to bind to',\r\n help: 'I strongly recommend using a reverse proxy instead of exposing this directly. Requires restart.'\r\n },\r\n validators: {\r\n ipAddress: ipValidator()\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'port',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Port',\r\n required: true,\r\n placeholder: '5050',\r\n help: 'Requires restart'\r\n },\r\n validators: {\r\n port: regexValidator(/^\\d{1,5}$/, \"is no valid port\", true)\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'urlBase',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'URL base',\r\n placeholder: '/nzbhydra',\r\n help: 'Set when using an external proxy. Call using a trailing slash, e.g. http://www.domain.com/nzbhydra/'\r\n },\r\n validators: {\r\n urlBase: regexValidator(/^(\\/\\w+)*$/, \"Base URL needs to start with a slash and must not end with one\")\r\n }\r\n },\r\n {\r\n key: 'externalUrl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'External URL',\r\n placeholder: 'https://www.somedomain.com/nzbhydra/',\r\n help: 'Set to the full external URL so machines outside can use the generated NZB links.'\r\n }\r\n },\r\n {\r\n key: 'useLocalUrlForApiAccess',\r\n type: 'horizontalSwitch',\r\n hideExpression: '!model.externalUrl',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Use local address in API results',\r\n help: 'Disable to make API results use the external URL in NZB links.'\r\n }\r\n },\r\n {\r\n key: 'socksProxy',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SOCKS proxy',\r\n placeholder: 'socks5://user:pass@127.0.0.1:1080',\r\n help: \"IPv4 only\"\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'httpProxy',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'HTTP proxy',\r\n placeholder: 'http://user:pass@10.0.0.1:1080',\r\n help: \"IPv4 only\"\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'httpsProxy',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'HTTPS proxy',\r\n placeholder: 'https://user:pass@10.0.0.1:1090',\r\n help: \"IPv4 only\"\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'ssl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Use SSL',\r\n help: 'I recommend using a reverse proxy instead of this. Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'sslcert',\r\n hideExpression: '!model.ssl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SSL certificate file',\r\n required: true,\r\n help: 'Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'sslkey',\r\n hideExpression: '!model.ssl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SSL key file',\r\n required: true,\r\n help: 'Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'sslca',\r\n hideExpression: '!model.ssl',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'SSL intermediate certificate (CA file)',\r\n help: 'Requires restart.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n }\r\n\r\n\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'UI'},\r\n fieldGroup: [\r\n\r\n {\r\n key: 'theme',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'Theme',\r\n help: 'Reload page after saving',\r\n options: [\r\n {name: 'Grey', value: 'grey'},\r\n {name: 'Bright', value: 'bright'},\r\n {name: 'Dark', value: 'dark'}\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Security'},\r\n fieldGroup: [\r\n\r\n {\r\n key: 'apikey',\r\n type: 'horizontalApiKeyInput',\r\n templateOptions: {\r\n label: 'API key',\r\n help: 'Remove to disable. Alphanumeric only'\r\n },\r\n validators: {\r\n apikey: regexValidator(/^[a-zA-Z0-9]*$/, \"API key must only contain numbers and digits\", false)\r\n }\r\n },\r\n {\r\n key: 'dereferer',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Dereferer',\r\n help: 'Redirect external links to hide your instance. Insert $s for target URL. Delete to disable.'\r\n }\r\n },\r\n {\r\n key: 'verifySsl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n label: 'Verify SSL certificates',\r\n help: 'If enabled only valid/known SSL certificates will be accepted when accessing indexers'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n wrapper: 'fieldset',\r\n key: 'logging',\r\n templateOptions: {label: 'Logging'},\r\n fieldGroup: [\r\n {\r\n key: 'logfilelevel',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'Logfile level',\r\n options: [\r\n {name: 'Critical', value: 'CRITICAL'},\r\n {name: 'Error', value: 'ERROR'},\r\n {name: 'Warning', value: 'WARNING'},\r\n {name: 'Info', value: 'INFO'},\r\n {name: 'Debug', value: 'DEBUG'}\r\n ]\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logfilename',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Log file',\r\n required: true\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'rolloverAtStart',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n label: 'Startup rollover',\r\n help: 'Starts a new log file on start/restart'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logMaxSize',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Max log file size',\r\n help: 'When log file size is reached a new one is started. Set to 0 to disable.',\r\n addonRight: {\r\n text: 'kB'\r\n }\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logRotateAfterDays',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Rotate after',\r\n help: 'A new log file is started after this many days. Supercedes max size. Keep empty to disable.',\r\n addonRight: {\r\n text: 'days'\r\n }\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'keepLogFiles',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Keep log files',\r\n help: 'Number of log files to keep before oldest is deleted.'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logfileUmask',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Log file chmod',\r\n help: 'chmod for log files (linux only)'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'consolelevel',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'Console log level',\r\n options: [\r\n {name: 'Critical', value: 'CRITICAL'},\r\n {name: 'Error', value: 'ERROR'},\r\n {name: 'Warning', value: 'WARNING'},\r\n {name: 'Info', value: 'INFO'},\r\n {name: 'Debug', value: 'DEBUG'}\r\n ]\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'logIpAddresses',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Log IP addresses'\r\n }\r\n }\r\n\r\n\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Updating'},\r\n fieldGroup: [\r\n\r\n {\r\n key: 'gitPath',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n label: 'Git executable',\r\n help: 'Set if git is not in your path'\r\n }\r\n },\r\n {\r\n key: 'branch',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Repository branch',\r\n required: true,\r\n help: 'Stay on master. Seriously...'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {label: 'Other'},\r\n fieldGroup: [\r\n {\r\n key: 'keepSearchResultsForDays',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Store results for ...',\r\n addonRight: {\r\n text: 'days'\r\n },\r\n required: true,\r\n help: 'Meta data from searches is stored in the database. When they\\'re deleted links to hydra become invalid.'\r\n }\r\n },\r\n {\r\n key: 'debug',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Enable debugging',\r\n help: \"Only do this if you know what and why you're doing it\"\r\n }\r\n },\r\n {\r\n key: 'runThreaded',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Run threaded server',\r\n help: 'Requires restart'\r\n },\r\n watcher: {\r\n listener: restartListener\r\n }\r\n },\r\n {\r\n key: 'startupBrowser',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Open browser on startup'\r\n }\r\n },\r\n {\r\n key: 'shutdownForRestart',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Shutdown to restart',\r\n help: 'When run with a service manager which automatically restarts Hydra enable this to prevent duplicate instances'\r\n }\r\n }\r\n ]\r\n }\r\n ],\r\n\r\n searching: [\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {\r\n label: 'Indexer access'\r\n },\r\n fieldGroup: [\r\n {\r\n key: 'timeout',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Timeout when accessing indexers',\r\n addonRight: {\r\n text: 'seconds'\r\n }\r\n }\r\n },\r\n {\r\n key: 'ignoreTemporarilyDisabled',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Ignore temporarily disabled',\r\n help: \"If enabled access to indexers will never be paused after an error occurred\"\r\n }\r\n },\r\n {\r\n key: 'ignorePassworded',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Ignore passworded releases',\r\n help: \"Not all indexers provide this information\"\r\n }\r\n },\r\n {\r\n key: 'forbiddenWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden words',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: \"Results with any of these words in the title will be ignored\"\r\n }\r\n },\r\n {\r\n key: 'forbiddenRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden regex',\r\n help: 'Must not be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: 'requiredWords',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required words',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: \"Only results with at least one of these words in the title will be used\"\r\n }\r\n },\r\n {\r\n key: 'requiredRegex',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Required regex',\r\n help: 'Must be present in a title (which is converted to lowercase before)'\r\n }\r\n },\r\n {\r\n key: 'applyRestrictions',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Apply word restrictions',\r\n options: [\r\n {name: 'Internal searches', value: 'internal'},\r\n {name: 'API searches', value: 'external'},\r\n {name: 'All searches', value: 'both'}\r\n ],\r\n help: \"For which type of search word restrictions will be applied\"\r\n }\r\n },\r\n {\r\n key: 'forbiddenGroups',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden groups',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: 'Posts from any groups containing any of these words will be ignored'\r\n }\r\n },\r\n {\r\n key: 'forbiddenPosters',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Forbidden posters',\r\n placeholder: 'separate, with, commas, like, this',\r\n help: 'Posts from any posters containing any of these words will be ignored'\r\n }\r\n },\r\n {\r\n key: 'maxAge',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Maximum results age',\r\n help: 'Results older than this are ignored. Can be overwritten per search',\r\n addonRight: {\r\n text: 'days'\r\n }\r\n }\r\n },\r\n {\r\n key: 'generate_queries',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Generate queries',\r\n options: [\r\n {label: 'Internal searches', id: 'internal'},\r\n {label: 'API searches', id: 'external'}\r\n ],\r\n help: \"Generate queries for indexers which do not support ID based searches\"\r\n }\r\n },\r\n {\r\n key: 'idFallbackToTitle',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Fallback to title queries',\r\n options: [\r\n {label: 'Internal searches', id: 'internal'},\r\n {label: 'API searches', id: 'external'}\r\n ],\r\n help: \"When no results were found for a query ID search again using the title\"\r\n }\r\n },\r\n {\r\n key: 'idFallbackToTitlePerIndexer',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Fallback per indexer',\r\n help: \"If enabled, fallback will occur on a per-indexer basis\"\r\n }\r\n },\r\n {\r\n key: 'userAgent',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'User agent',\r\n required: true\r\n }\r\n }\r\n\r\n ]\r\n },\r\n {\r\n wrapper: 'fieldset',\r\n templateOptions: {\r\n label: 'Result processing'\r\n },\r\n fieldGroup: [\r\n {\r\n key: 'htmlParser',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'HTML parser',\r\n options: [\r\n {name: 'Default BS (slower)', value: 'html.parser'},\r\n {name: 'LXML (faster, needs to be installed separately)', value: 'lxml'}\r\n ]\r\n }\r\n },\r\n {\r\n key: 'duplicateSizeThresholdInPercent',\r\n type: 'horizontalPercentInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Duplicate size threshold',\r\n required: true,\r\n addonRight: {\r\n text: '%'\r\n }\r\n\r\n }\r\n },\r\n {\r\n key: 'duplicateAgeThreshold',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Duplicate age threshold',\r\n required: true,\r\n addonRight: {\r\n text: 'hours'\r\n }\r\n }\r\n },\r\n {\r\n key: 'alwaysShowDuplicates',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Always show duplicates',\r\n help: 'Activate to show duplicates in search results by default'\r\n }\r\n },\r\n {\r\n key: 'removeTrailing',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Remove trailing...',\r\n help: 'Removed from title if it ends with either of these. Case insensitive and disregards leading/trailing spaces'\r\n }\r\n },\r\n {\r\n key: 'nzbAccessType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'NZB access type',\r\n options: [\r\n {name: 'Proxy NZBs from indexer', value: 'serve'},\r\n {name: 'Redirect to the indexer', value: 'redirect'}\r\n ],\r\n help: \"How access to NZBs is provided when NZBs are downloaded (by the user or external tools). Redirecting is recommended.\"\r\n }\r\n }\r\n ]\r\n }\r\n ],\r\n\r\n categories: getCategoryFields(),\r\n\r\n downloaders: [\r\n {\r\n type: \"arrayConfig\",\r\n data: {\r\n defaultModel: {\r\n enabled: true\r\n },\r\n entryTemplateUrl: 'downloaderEntry.html',\r\n presets: function () {\r\n return getDownloaderPresets();\r\n },\r\n checkAddingAllowed: function () {\r\n return true;\r\n },\r\n presetsOnly: true,\r\n addNewText: 'Add new downloader',\r\n fieldsFunction: getDownloaderBoxFields,\r\n allowDeleteFunction: function () {\r\n return true;\r\n },\r\n checkBeforeClose: function (scope, model) {\r\n var DownloaderCheckBeforeCloseService = $injector.get(\"DownloaderCheckBeforeCloseService\");\r\n return DownloaderCheckBeforeCloseService.check(scope, model);\r\n },\r\n resetFunction: function (scope) {\r\n scope.options.resetModel();\r\n scope.options.resetModel();\r\n }\r\n\r\n }\r\n }\r\n ],\r\n\r\n\r\n indexers: [\r\n {\r\n type: \"arrayConfig\",\r\n data: {\r\n defaultModel: {\r\n animeCategory: null,\r\n comicCategory: null,\r\n audiobookCategory: null,\r\n magazineCategory: null,\r\n ebookCategory: null,\r\n enabled: true,\r\n categories: [],\r\n downloadLimit: null,\r\n loadLimitOnRandom: null,\r\n host: null,\r\n apikey: null,\r\n hitLimit: null,\r\n hitLimitResetTime: 0,\r\n timeout: null,\r\n name: null,\r\n showOnSearch: true,\r\n score: 0,\r\n username: null,\r\n password: null,\r\n preselect: true,\r\n type: 'newznab',\r\n accessType: \"both\",\r\n search_ids: undefined, //[\"imdbid\", \"rid\", \"tvdbid\"],\r\n searchTypes: undefined, //[\"tvsearch\", \"movie\"]\r\n backend: null,\r\n userAgent: null\r\n },\r\n addNewText: 'Add new indexer',\r\n entryTemplateUrl: 'indexerEntry.html',\r\n presets: function (model) {\r\n return getIndexerPresets(model);\r\n },\r\n\r\n checkAddingAllowed: function (existingIndexers, preset) {\r\n if (!preset || !(preset.type == \"anizb\" || preset.type == \"binsearch\" || preset.type == \"nzbindex\" || preset.type == \"nzbclub\")) {\r\n return true;\r\n }\r\n return !_.any(existingIndexers, function (existingEntry) {\r\n return existingEntry.name == preset.name;\r\n });\r\n\r\n },\r\n fieldsFunction: getIndexerBoxFields,\r\n allowDeleteFunction: function (model) {\r\n return true;\r\n },\r\n checkBeforeClose: function (scope, model) {\r\n var IndexerCheckBeforeCloseService = $injector.get(\"IndexerCheckBeforeCloseService\");\r\n return IndexerCheckBeforeCloseService.check(scope, model);\r\n },\r\n resetFunction: function (scope) {\r\n //Then reset the model twice (for some reason when we do it once the search types / ids fields are empty, resetting again fixes that... (wtf))\r\n scope.options.resetModel();\r\n scope.options.resetModel();\r\n }\r\n\r\n }\r\n }\r\n ],\r\n\r\n auth: [\r\n {\r\n key: 'authType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Auth type',\r\n options: [\r\n {name: 'None', value: 'none'},\r\n {name: 'HTTP Basic auth', value: 'basic'},\r\n {name: 'Login form', value: 'form'}\r\n ]\r\n\r\n }\r\n },\r\n {\r\n key: 'restrictSearch',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict searching',\r\n help: 'Restrict access to searching'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictStats',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict stats',\r\n help: 'Restrict access to stats'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictAdmin',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict admin',\r\n help: 'Restrict access to admin functions'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictDetailsDl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict NZB details & DL',\r\n help: 'Restrict NZB details, comments and download links'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'restrictIndexerSelection',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Restrict indexer selection box',\r\n help: 'Restrict visibility of indexer selection box in search. Affects only GUI'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'rememberUsers',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Remember users',\r\n help: 'Remember users with cookie for 14 days'\r\n },\r\n hideExpression: function () {\r\n return rootModel.auth.authType == \"none\";\r\n }\r\n },\r\n {\r\n key: 'rememberUsersExpiry',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Cookie expiry',\r\n help: 'How long users are remembered',\r\n addonRight: {\r\n text: 'days'\r\n }\r\n }\r\n },\r\n {\r\n type: 'repeatSection',\r\n key: 'users',\r\n model: rootModel.auth,\r\n templateOptions: {\r\n btnText: 'Add new user',\r\n altLegendText: 'Authless',\r\n fields: [\r\n {\r\n key: 'username',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Username',\r\n required: true\r\n }\r\n\r\n },\r\n {\r\n key: 'password',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'password',\r\n label: 'Password',\r\n required: true\r\n }\r\n },\r\n {\r\n key: 'maySeeAdmin',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see admin area'\r\n }\r\n },\r\n {\r\n key: 'maySeeStats',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see stats'\r\n },\r\n hideExpression: 'model.maySeeAdmin'\r\n },\r\n {\r\n key: 'maySeeDetailsDl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see NZB details & DL links'\r\n },\r\n hideExpression: 'model.maySeeAdmin'\r\n },\r\n {\r\n key: 'showIndexerSelection',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'May see indexer selection box'\r\n },\r\n hideExpression: 'model.maySeeAdmin'\r\n }\r\n\r\n ],\r\n defaultModel: {\r\n username: null,\r\n password: null,\r\n maySeeStats: true,\r\n maySeeAdmin: true,\r\n maySeeDetailsDl: true,\r\n showIndexerSelection: true\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n}\r\nConfigFields.$inject = [\"$injector\"];\r\n\r\n\r\nfunction getIndexerPresets(configuredIndexers) {\r\n var presets = [\r\n [\r\n {\r\n name: \"6box\",\r\n host: \"https://6box.me\"\r\n },\r\n {\r\n name: \"6box spotweb\",\r\n host: \"https://6box.me/spotweb\"\r\n },\r\n {\r\n name: \"altHUB\",\r\n host: \"https://api.althub.co.za\"\r\n },\r\n {\r\n name: \"DogNZB\",\r\n host: \"https://api.dognzb.cr\"\r\n },\r\n {\r\n name: \"Drunken Slug\",\r\n host: \"https://api.drunkenslug.com\"\r\n },\r\n {\r\n name: \"LuluNZB\",\r\n host: \"https://lulunzb.com\"\r\n },\r\n {\r\n name: \"miatrix\",\r\n host: \"https://www.miatrix.com\"\r\n },\r\n {\r\n name: \"newz69.keagaming\",\r\n host: \"https://newz69.keagaming.com\"\r\n },\r\n {\r\n name: \"NewzTown\",\r\n host: \"https://newztown.co.za\"\r\n },\r\n {\r\n name: \"NZB Finder\",\r\n host: \"https://nzbfinder.ws\"\r\n },\r\n {\r\n name: \"NZBCat\",\r\n host: \"https://nzb.cat\"\r\n },\r\n {\r\n name: \"nzb.ag\",\r\n host: \"https://nzb.ag\"\r\n },\r\n {\r\n name: \"nzb.is\",\r\n host: \"https://nzb.is\"\r\n },\r\n {\r\n name: \"nzb.su\",\r\n host: \"https://api.nzb.su\"\r\n },\r\n {\r\n name: \"nzb7\",\r\n host: \"https://www.nzb7.com\"\r\n },\r\n {\r\n name: \"NZBGeek\",\r\n host: \"https://api.nzbgeek.info\"\r\n },\r\n {\r\n name: \"NzbNdx\",\r\n host: \"https://www.nzbndx.com\"\r\n },\r\n {\r\n name: \"NzBNooB\",\r\n host: \"https://www.nzbnoob.com\"\r\n },\r\n {\r\n name: \"nzbplanet\",\r\n host: \"https://nzbplanet.net\"\r\n },\r\n {\r\n name: \"NZBs.org\",\r\n host: \"https://nzbs.org\"\r\n },\r\n {\r\n name: \"NZBs.io\",\r\n host: \"https://www.nzbs.io\"\r\n },\r\n {\r\n name: \"Nzeeb\",\r\n host: \"https://www.nzeeb.com\"\r\n },\r\n {\r\n name: \"oznzb\",\r\n host: \"https://api.oznzb.com\"\r\n },\r\n {\r\n name: \"omgwtfnzbs\",\r\n host: \"https://api.omgwtfnzbs.me\"\r\n },\r\n {\r\n name: \"PFMonkey\",\r\n host: \"https://www.pfmonkey.com\"\r\n },\r\n {\r\n name: \"SimplyNZBs\",\r\n host: \"https://simplynzbs.com\"\r\n },\r\n {\r\n name: \"Tabula-Rasa\",\r\n host: \"https://www.tabula-rasa.pw\"\r\n },\r\n {\r\n name: \"Usenet-Crawler\",\r\n host: \"https://www.usenet-crawler.com\"\r\n }\r\n ],\r\n [\r\n {\r\n name: \"Jackett/Cardigann\",\r\n host: \"http://127.0.0.1:9117/torznab/YOURTRACKER\",\r\n search_ids: [],\r\n searchTypes: [],\r\n type: \"jackett\",\r\n accessType: \"internal\"\r\n }\r\n ],\r\n [\r\n {\r\n accessType: \"both\",\r\n categories: [\"anime\"],\r\n downloadLimit: null,\r\n enabled: false,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://anizb.org\",\r\n loadLimitOnRandom: null,\r\n name: \"anizb\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"anizb\",\r\n username: null\r\n },\r\n {\r\n accessType: \"internal\",\r\n categories: [],\r\n downloadLimit: null,\r\n enabled: true,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://binsearch.info\",\r\n loadLimitOnRandom: null,\r\n name: \"Binsearch\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"binsearch\",\r\n username: null\r\n },\r\n {\r\n accessType: \"internal\",\r\n categories: [],\r\n downloadLimit: null,\r\n enabled: true,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://www.nzbclub.com\",\r\n loadLimitOnRandom: null,\r\n name: \"NZBClub\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"nzbclub\",\r\n username: null\r\n\r\n },\r\n {\r\n accessType: \"internal\",\r\n categories: [],\r\n downloadLimit: null,\r\n enabled: true,\r\n generalMinSize: 1,\r\n hitLimit: null,\r\n hitLimitResetTime: null,\r\n host: \"https://nzbindex.com\",\r\n loadLimitOnRandom: null,\r\n name: \"NZBIndex\",\r\n password: null,\r\n preselect: true,\r\n score: 0,\r\n search_ids: [],\r\n searchTypes: [],\r\n showOnSearch: true,\r\n timeout: null,\r\n type: \"nzbindex\",\r\n username: null\r\n\r\n }\r\n ]\r\n ];\r\n\r\n\r\n return presets;\r\n}\r\n\r\nfunction getIndexerBoxFields(model, parentModel, isInitial, injector) {\r\n var fieldset = [];\r\n\r\n fieldset.push({\r\n key: 'enabled',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Enabled'\r\n }\r\n });\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'name',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Name',\r\n required: true,\r\n help: 'Used for identification. Changing the name will lose all history and stats!'\r\n },\r\n validators: {\r\n uniqueName: {\r\n expression: function (viewValue) {\r\n if (isInitial || viewValue != model.name) {\r\n return _.pluck(parentModel, \"name\").indexOf(viewValue) == -1;\r\n }\r\n return true;\r\n },\r\n message: '\"Indexer \\\\\"\" + $viewValue + \"\\\\\" already exists\"'\r\n }\r\n }\r\n })\r\n }\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'host',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Host',\r\n required: true,\r\n placeholder: 'http://www.someindexer.com'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'apikey',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'API Key'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n fieldset.push(\r\n {\r\n key: 'score',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Priority',\r\n required: true,\r\n help: 'When duplicate search results are found the result from the indexer with the highest number will be selected'\r\n }\r\n });\r\n\r\n fieldset.push(\r\n {\r\n key: 'timeout',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Timeout',\r\n help: 'Supercedes the general timeout in \"Searching\"'\r\n }\r\n });\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'hitLimit',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'API hit limit',\r\n help: 'Maximum number of API hits since \"API hit reset time\"'\r\n }\r\n },\r\n {\r\n key: 'downloadLimit',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Download limit',\r\n help: 'When # of downloads since \"Hit reset time\" is reached indexer will not be searched.'\r\n }\r\n }\r\n );\r\n fieldset.push(\r\n {\r\n key: 'loadLimitOnRandom',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Load limiting',\r\n help: 'If set indexer will only be picked for one out of x API searches (on average)'\r\n },\r\n validators: {\r\n greaterThanZero: {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n return angular.isUndefined(value) || value === null || value === \"\" || value > 1;\r\n },\r\n message: '\"Value must be greater than 1\"'\r\n }\r\n\r\n }\r\n },\r\n {\r\n key: 'hitLimitResetTime',\r\n type: 'horizontalInput',\r\n hideExpression: '!model.hitLimit && !model.downloadLimit',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Hit reset time',\r\n help: 'UTC hour of day at which the API hit counter is reset (0==24). Leave empty for a rolling reset counter'\r\n },\r\n validators: {\r\n timeOfDay: {\r\n expression: function ($viewValue, $modelValue) {\r\n var value = $modelValue || $viewValue;\r\n return value >= 0 && value <= 24;\r\n },\r\n message: '$viewValue + \" is not a valid hour of day (0-24)\"'\r\n }\r\n\r\n }\r\n });\r\n }\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'username',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n required: false,\r\n label: 'Username',\r\n help: 'Only needed if indexer requires HTTP auth for API access (rare)'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n );\r\n }\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'password',\r\n type: 'horizontalInput',\r\n hideExpression: '!model.username',\r\n templateOptions: {\r\n type: 'text',\r\n required: false,\r\n label: 'Password',\r\n help: 'Only needed if indexer requires HTTP auth for API access (rare)'\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'userAgent',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n required: false,\r\n label: 'User agent',\r\n help: 'Rarely needed. Will supercede the one in the main searching settings'\r\n }\r\n }\r\n )\r\n }\r\n\r\n\r\n fieldset.push(\r\n {\r\n key: 'preselect',\r\n type: 'horizontalSwitch',\r\n hideExpression: 'model.accessType == \"external\"',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Preselect',\r\n help: 'Preselect this indexer on the search page'\r\n }\r\n }\r\n );\r\n if (model.type != \"jackett\") {\r\n fieldset.push(\r\n {\r\n key: 'accessType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n label: 'Enable for...',\r\n options: [\r\n {name: 'Internal searches only', value: 'internal'},\r\n {name: 'API searches only', value: 'external'},\r\n {name: 'Internal and API searches', value: 'both'}\r\n ]\r\n }\r\n }\r\n );\r\n }\r\n if (model.type != \"anizb\") {\r\n fieldset.push(\r\n {\r\n key: 'categories',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Enable for...',\r\n help: 'You can decide that this indexer should only be used for certain categories',\r\n options: [\r\n {\r\n id: \"movies\",\r\n label: \"Movies\"\r\n },\r\n {\r\n id: \"movieshd\",\r\n label: \"Movies HD\"\r\n },\r\n {\r\n id: \"moviessd\",\r\n label: \"Movies SD\"\r\n },\r\n {\r\n id: \"tv\",\r\n label: \"TV\"\r\n },\r\n {\r\n id: \"tvhd\",\r\n label: \"TV HD\"\r\n },\r\n {\r\n id: \"tvsd\",\r\n label: \"TV SD\"\r\n },\r\n {\r\n id: \"anime\",\r\n label: \"Anime\"\r\n },\r\n {\r\n id: \"audio\",\r\n label: \"Audio\"\r\n },\r\n {\r\n id: \"flac\",\r\n label: \"Audio FLAC\"\r\n },\r\n {\r\n id: \"mp3\",\r\n label: \"Audio MP3\"\r\n },\r\n {\r\n id: \"audiobook\",\r\n label: \"Audiobook\"\r\n },\r\n {\r\n id: \"console\",\r\n label: \"Console\"\r\n },\r\n {\r\n id: \"pc\",\r\n label: \"PC\"\r\n },\r\n {\r\n id: \"xxx\",\r\n label: \"XXX\"\r\n },\r\n {\r\n id: \"ebook\",\r\n label: \"Ebook\"\r\n },\r\n {\r\n id: \"comic\",\r\n label: \"Comic\"\r\n }],\r\n getPlaceholder: function () {\r\n return \"All categories\";\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab') {\r\n fieldset.push(\r\n {\r\n key: 'search_ids',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Search IDs',\r\n options: [\r\n {label: 'TVDB', id: 'tvdbid'},\r\n {label: 'TVRage', id: 'rid'},\r\n {label: 'IMDB', id: 'imdbid'},\r\n {label: 'Trakt', id: 'traktid'},\r\n {label: 'TVMaze', id: 'tvmazeid'},\r\n {label: 'TMDB', id: 'tmdbid'}\r\n ],\r\n getPlaceholder: function (model) {\r\n if (angular.isUndefined(model)) {\r\n return \"Unknown\";\r\n }\r\n return \"None\";\r\n }\r\n }\r\n }\r\n );\r\n }\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n key: 'searchTypes',\r\n type: 'horizontalMultiselect',\r\n templateOptions: {\r\n label: 'Search types',\r\n options: [\r\n {label: 'Movies', id: 'movie'},\r\n {label: 'TV', id: 'tvsearch'},\r\n {label: 'Ebooks', id: 'book'},\r\n {label: 'Audio', id: 'audio'}\r\n ],\r\n getPlaceholder: function (model) {\r\n if (angular.isUndefined(model)) {\r\n return \"Unknown\";\r\n }\r\n return \"None\";\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'newznab' || model.type == 'jackett') {\r\n fieldset.push(\r\n {\r\n type: 'horizontalCheckCaps',\r\n hideExpression: '!model.host || !model.apikey || !model.name',\r\n templateOptions: {\r\n label: 'Check capabilities',\r\n help: 'Find out what search types the indexer supports. Done automatically for new indexers.'\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (model.type == 'nzbindex') {\r\n fieldset.push(\r\n {\r\n key: 'generalMinSize',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Min size',\r\n help: 'NZBIndex returns a lot of crap with small file sizes. Set this value and all smaller results will be filtered out no matter the category'\r\n }\r\n }\r\n );\r\n }\r\n\r\n return fieldset;\r\n}\r\n\r\n\r\nfunction getDownloaderBoxFields(model, parentModel, isInitial) {\r\n var fieldset = [];\r\n\r\n fieldset = _.union(fieldset, [\r\n {\r\n key: 'enabled',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Enabled'\r\n }\r\n },\r\n {\r\n key: 'name',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Name',\r\n required: true\r\n },\r\n validators: {\r\n uniqueName: {\r\n expression: function (viewValue) {\r\n if (isInitial || viewValue != model.name) {\r\n return _.pluck(parentModel, \"name\").indexOf(viewValue) == -1;\r\n }\r\n return true;\r\n },\r\n message: '\"Downloader \\\\\"\" + $viewValue + \"\\\\\" already exists\"'\r\n }\r\n }\r\n\r\n }]);\r\n\r\n if (model.type == \"nzbget\") {\r\n fieldset = _.union(fieldset, [{\r\n key: 'host',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Host',\r\n required: true\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n\r\n },\r\n {\r\n key: 'port',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'Port',\r\n placeholder: '5050',\r\n required: true\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'ssl',\r\n type: 'horizontalSwitch',\r\n templateOptions: {\r\n type: 'switch',\r\n label: 'Use SSL'\r\n }\r\n }]);\r\n } else if (model.type == \"sabnzbd\") {\r\n fieldset.push({\r\n key: 'url',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'URL',\r\n required: true\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n fieldset = _.union(fieldset, [\r\n {\r\n key: 'username',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Username',\r\n help: model.type == \"nzbget\" ? 'Only alphanumeric usernames are guaranteed to work' : \"\"\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n },\r\n {\r\n key: 'password',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'password',\r\n label: 'Password',\r\n help: model.type == \"nzbget\" ? 'See username' : \"\"\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n }\r\n ]);\r\n\r\n\r\n if (model.type == \"sabnzbd\") {\r\n fieldset.push({\r\n key: 'apikey',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'API Key'\r\n },\r\n watcher: {\r\n listener: function (field, newValue, oldValue, scope) {\r\n if (newValue != oldValue) {\r\n scope.$parent.needsConnectionTest = true;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n fieldset = _.union(fieldset, [\r\n {\r\n key: 'defaultCategory',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Default category',\r\n help: 'When adding NZBs this category will be used instead of asking for the category. Write \"No category\" to let the downloader decide.',\r\n placeholder: 'Ask when downloading'\r\n }\r\n },\r\n {\r\n key: 'nzbaccesstype',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'NZB access type',\r\n options: [\r\n {name: 'Proxy NZBs from indexer', value: 'serve'},\r\n {name: 'Redirect to the indexer', value: 'redirect'}\r\n ],\r\n help: \"How external access to NZBs is provided. Redirecting is recommended.\"\r\n }\r\n },\r\n {\r\n key: 'nzbAddingType',\r\n type: 'horizontalSelect',\r\n templateOptions: {\r\n type: 'select',\r\n label: 'NZB adding type',\r\n options: [\r\n {name: 'Send link', value: 'link'},\r\n {name: 'Upload NZB', value: 'nzb'}\r\n ],\r\n help: \"How NZBs are added to the downloader, either by sending a link to the NZB or by uploading the NZB data\"\r\n }\r\n },\r\n {\r\n key: 'iconCssClass',\r\n type: 'horizontalInput',\r\n templateOptions: {\r\n type: 'text',\r\n label: 'Icon CSS class',\r\n help: 'Copy an icon name from http://fontawesome.io/examples/ (e.g. \"film\")',\r\n placeholder: 'Default'\r\n }\r\n }\r\n ]);\r\n\r\n return fieldset;\r\n}\r\n\r\nfunction getDownloaderPresets() {\r\n return [[\r\n {\r\n host: \"127.0.0.1\",\r\n name: \"NZBGet\",\r\n password: \"tegbzn6789x\",\r\n port: 6789,\r\n ssl: false,\r\n type: \"nzbget\",\r\n username: \"nzbgetx\",\r\n nzbAddingType: \"link\",\r\n nzbaccesstype: \"redirect\",\r\n iconCssClass: \"\",\r\n downloadType: \"nzb\"\r\n },\r\n {\r\n url: \"http://localhost:8086\",\r\n type: \"sabnzbd\",\r\n name: \"SABnzbd\",\r\n nzbAddingType: \"link\",\r\n nzbaccesstype: \"redirect\",\r\n iconCssClass: \"\",\r\n downloadType: \"nzb\",\r\n username: null,\r\n password: null\r\n }\r\n ]];\r\n}\r\n\r\n\r\nfunction handleConnectionCheckFail(ModalService, data, model, whatFailed, deferred) {\r\n var message;\r\n var yesText;\r\n if (data.checked) {\r\n message = \"The connection to the \" + whatFailed + \" failed: \" + data.message + \"
Do you want to add it anyway?\";\r\n yesText = \"I know what I'm doing\";\r\n } else {\r\n message = \"The connection to the \" + whatFailed + \" could not be tested, sorry\";\r\n yesText = \"I'll risk it\";\r\n }\r\n ModalService.open(\"Connection check failed\", message, {\r\n yes: {\r\n onYes: function () {\r\n deferred.resolve();\r\n },\r\n text: yesText\r\n },\r\n no: {\r\n onNo: function () {\r\n model.enabled = false;\r\n deferred.resolve();\r\n },\r\n text: \"Add it, but disabled\"\r\n },\r\n cancel: {\r\n onCancel: function () {\r\n deferred.reject();\r\n },\r\n text: \"Aahh, let me try again\"\r\n }\r\n });\r\n\r\n}\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('IndexerCheckBeforeCloseService', IndexerCheckBeforeCloseService);\r\n\r\nfunction IndexerCheckBeforeCloseService($q, ModalService, ConfigBoxService, blockUI, growl) {\r\n\r\n return {\r\n check: checkBeforeClose\r\n };\r\n\r\n function checkBeforeClose(scope, model) {\r\n var deferred = $q.defer();\r\n if (!scope.needsConnectionTest) {\r\n checkCaps(scope, model).then(function () {\r\n deferred.resolve();\r\n }, function () {\r\n deferred.reject();\r\n });\r\n } else {\r\n blockUI.start(\"Testing connection...\");\r\n scope.spinnerActive = true;\r\n var url = \"internalapi/test_newznab\";\r\n var settings = {host: model.host, apikey: model.apikey};\r\n if (angular.isDefined(model.username)) {\r\n settings[\"username\"] = model.username;\r\n settings[\"password\"] = model.password;\r\n }\r\n ConfigBoxService.checkConnection(url, JSON.stringify(settings)).then(function () {\r\n checkCaps(scope, model).then(function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n growl.info(\"Connection to the indexer tested successfully\");\r\n deferred.resolve();\r\n }, function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n deferred.reject();\r\n });\r\n },\r\n function (data) {\r\n blockUI.reset();\r\n handleConnectionCheckFail(ModalService, data, model, \"indexer\", deferred);\r\n }).finally(function () {\r\n scope.spinnerActive = false;\r\n blockUI.reset();\r\n });\r\n }\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function checkCaps(scope, model) {\r\n var deferred = $q.defer();\r\n var url = \"internalapi/test_caps\";\r\n var settings = {indexer: model.name, apikey: model.apikey, host: model.host};\r\n if (angular.isDefined(model.username)) {\r\n settings[\"username\"] = model.username;\r\n settings[\"password\"] = model.password;\r\n }\r\n if (angular.isUndefined(model.search_ids) || angular.isUndefined(model.searchTypes)) {\r\n\r\n blockUI.start(\"New indexer found. Testing its capabilities. This may take a bit...\");\r\n ConfigBoxService.checkCaps(url, JSON.stringify(settings), model).then(\r\n function (data, model) {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n growl.info(\"Successfully tested capabilites of indexer\");\r\n deferred.resolve();\r\n },\r\n function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n model.search_ids = [];\r\n model.searchTypes = [];\r\n ModalService.open(\"Error testing capabilities\", \"The capabilities of the indexer could not be checked. The indexer won't be used for ID based searches (IMDB, TVDB, etc.). You may repeat the check manually at any time.\");\r\n deferred.resolve();\r\n }).finally(\r\n function () {\r\n scope.spinnerActive = false;\r\n })\r\n } else {\r\n deferred.resolve();\r\n }\r\n return deferred.promise;\r\n\r\n }\r\n}\r\nIndexerCheckBeforeCloseService.$inject = [\"$q\", \"ModalService\", \"ConfigBoxService\", \"blockUI\", \"growl\"];\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('DownloaderCheckBeforeCloseService', DownloaderCheckBeforeCloseService);\r\n\r\nfunction DownloaderCheckBeforeCloseService($q, ConfigBoxService, growl, ModalService, blockUI) {\r\n\r\n return {\r\n check: checkBeforeClose\r\n };\r\n\r\n function checkBeforeClose(scope, model) {\r\n var deferred = $q.defer();\r\n if (!scope.isInitial && !scope.needsConnectionTest) {\r\n deferred.resolve();\r\n } else {\r\n scope.spinnerActive = true;\r\n blockUI.start(\"Testing connection...\");\r\n var url = \"internalapi/test_downloader\";\r\n ConfigBoxService.checkConnection(url, JSON.stringify(model)).then(function () {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n growl.info(\"Connection to the downloader tested successfully\");\r\n deferred.resolve();\r\n },\r\n function (data) {\r\n blockUI.reset();\r\n scope.spinnerActive = false;\r\n handleConnectionCheckFail(ModalService, data, model, \"downloader\", deferred);\r\n }).finally(function () {\r\n scope.spinnerActive = false;\r\n blockUI.reset();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n}\r\nDownloaderCheckBeforeCloseService.$inject = [\"$q\", \"ConfigBoxService\", \"growl\", \"ModalService\", \"blockUI\"];\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('ConfigModel', function () {\r\n return {};\r\n });\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .factory('ConfigWatcher', function () {\r\n var $scope;\r\n\r\n return {\r\n watch: watch\r\n };\r\n\r\n function watch(scope) {\r\n $scope = scope;\r\n $scope.$watchGroup([\"config.main.host\"], function () {\r\n }, true);\r\n }\r\n });\r\n\r\n\r\nangular\r\n .module('nzbhydraApp')\r\n .controller('ConfigController', ConfigController);\r\n\r\nfunction ConfigController($scope, $http, activeTab, ConfigService, config, DownloaderCategoriesService, ConfigFields, ConfigModel, ModalService, RestartService, $state, growl) {\r\n $scope.config = config;\r\n $scope.submit = submit;\r\n $scope.activeTab = activeTab;\r\n\r\n $scope.restartRequired = false;\r\n $scope.ignoreSaveNeeded = false;\r\n\r\n ConfigFields.setRestartWatcher(function () {\r\n $scope.restartRequired = true;\r\n });\r\n\r\n\r\n function submit() {\r\n if ($scope.form.$valid) {\r\n\r\n ConfigService.set($scope.config);\r\n $scope.form.$setPristine();\r\n DownloaderCategoriesService.invalidate();\r\n if ($scope.restartRequired) {\r\n ModalService.open(\"Restart required\", \"The changes you have made may require a restart to be effective.
Do you want to restart now?\", {\r\n yes: {\r\n onYes: function () {\r\n RestartService.restart();\r\n }\r\n },\r\n no: {\r\n onNo: function () {\r\n $scope.restartRequired = false;\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n growl.error(\"Config invalid. Please check your settings.\");\r\n\r\n //Ridiculously hacky way to make the error messages appear\r\n try {\r\n if (angular.isDefined(form.$error.required)) {\r\n _.each(form.$error.required, function (item) {\r\n if (angular.isDefined(item.$error.required)) {\r\n _.each(item.$error.required, function (item2) {\r\n item2.$setTouched();\r\n });\r\n }\r\n });\r\n }\r\n angular.forEach($scope.form.$error.required, function (field) {\r\n field.$setTouched();\r\n });\r\n } catch (err) {\r\n //\r\n }\r\n\r\n }\r\n }\r\n\r\n ConfigModel = config;\r\n\r\n $scope.fields = ConfigFields.getFields($scope.config);\r\n\r\n $scope.allTabs = [\r\n {\r\n active: false,\r\n state: 'root.config.main',\r\n name: 'Main',\r\n model: ConfigModel.main,\r\n fields: $scope.fields.main,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.auth',\r\n name: 'Authorization',\r\n model: ConfigModel.auth,\r\n fields: $scope.fields.auth,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.searching',\r\n name: 'Searching',\r\n model: ConfigModel.searching,\r\n fields: $scope.fields.searching,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.categories',\r\n name: 'Categories',\r\n model: ConfigModel.categories,\r\n fields: $scope.fields.categories,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.downloader',\r\n name: 'Downloaders',\r\n model: ConfigModel.downloaders,\r\n fields: $scope.fields.downloaders,\r\n options: {}\r\n },\r\n {\r\n active: false,\r\n state: 'root.config.indexers',\r\n name: 'Indexers',\r\n model: ConfigModel.indexers,\r\n fields: $scope.fields.indexers,\r\n options: {}\r\n }\r\n ];\r\n\r\n $scope.isSavingNeeded = function () {\r\n return $scope.form.$dirty && $scope.form.$valid && !$scope.ignoreSaveNeeded;\r\n };\r\n\r\n $scope.goToConfigState = function (index) {\r\n $state.go($scope.allTabs[index].state, {activeTab: index}, {inherit: false, notify: true, reload: true});\r\n };\r\n\r\n $scope.help = function () {\r\n var tabName = $scope.allTabs[$scope.activeTab].name;\r\n $http.get(\"internalapi/gethelp\", {params: {id: tabName}}).then(function (result) {\r\n var html = '' + result.data + \"\";\r\n ModalService.open(tabName + \" - Help\", html, {}, \"lg\");\r\n },\r\n function () {\r\n growl.error(\"Error while loading help\")\r\n })\r\n };\r\n\r\n $scope.$on('$stateChangeStart',\r\n function (event, toState, toParams, fromState, fromParams) {\r\n if ($scope.isSavingNeeded()) {\r\n event.preventDefault();\r\n ModalService.open(\"Unsaved changed\", \"Do you want to save before leaving?\", {\r\n yes: {\r\n onYes: function () {\r\n $scope.submit();\r\n $state.go(toState);\r\n },\r\n text: \"Yes\"\r\n },\r\n no: {\r\n onNo: function () {\r\n $scope.ignoreSaveNeeded = true;\r\n $scope.allTabs[$scope.activeTab].options.resetModel();\r\n $state.go(toState);\r\n },\r\n text: \"No\"\r\n },\r\n cancel: {\r\n onCancel: function () {\r\n event.preventDefault();\r\n },\r\n text: \"Cancel\"\r\n }\r\n });\r\n }\r\n })\r\n}\r\nConfigController.$inject = [\"$scope\", \"$http\", \"activeTab\", \"ConfigService\", \"config\", \"DownloaderCategoriesService\", \"ConfigFields\", \"ConfigModel\", \"ModalService\", \"RestartService\", \"$state\", \"growl\"];\r\n\r\n\r\n","angular\r\n .module('nzbhydraApp')\r\n .factory('CategoriesService', CategoriesService);\r\n\r\nfunction CategoriesService(ConfigService) {\r\n\r\n return {\r\n getByName: getByName,\r\n getAll: getAll,\r\n getDefault: getDefault\r\n };\r\n\r\n\r\n function getByName(name) {\r\n for (var category in ConfigService.getSafe().categories) {\r\n category = ConfigService.getSafe().categories[category];\r\n if (category.name == name || category.pretty == name) {\r\n return category;\r\n }\r\n }\r\n }\r\n \r\n function getAll() {\r\n return ConfigService.getSafe().categories;\r\n }\r\n \r\n function getDefault() {\r\n return getAll()[1];\r\n }\r\n\r\n}\r\nCategoriesService.$inject = [\"ConfigService\"];","angular\r\n .module('nzbhydraApp')\r\n .factory('BackupService', BackupService);\r\n\r\nfunction BackupService($http) {\r\n\r\n return {\r\n getBackupsList: getBackupsList,\r\n restoreFromFile: restoreFromFile\r\n };\r\n \r\n\r\n function getBackupsList() {\r\n return $http.get('internalapi/getbackups').then(function (data) {\r\n return data.data.backups;\r\n });\r\n }\r\n\r\n function restoreFromFile(filename) {\r\n return $http.get('internalapi/restorefrombackupfile', {params:{filename: filename}}).then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n}\r\nBackupService.$inject = [\"$http\"];"],"sourceRoot":"/source/"} \ No newline at end of file