From 3de5a549c9d65b8f33a9593ae77b8445c656e6fd Mon Sep 17 00:00:00 2001 From: LyLme Date: Mon, 6 May 2024 00:35:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/admin/css/bootstrap.min.css | 14 + assets/admin/css/coloris.min.css | 1 + assets/admin/css/materialdesignicons.min.css | 1 + assets/admin/css/style.min.css | 4538 ++++ assets/admin/css/theme_setting.css | 51 + assets/admin/fonts/materialdesignicons.eot | Bin 0 -> 292776 bytes assets/admin/fonts/materialdesignicons.svg | 6150 ++++++ assets/admin/fonts/materialdesignicons.ttf | Bin 0 -> 292556 bytes assets/admin/fonts/materialdesignicons.woff | Bin 0 -> 144072 bytes assets/admin/fonts/materialdesignicons.woff2 | Bin 0 -> 109248 bytes assets/admin/js/Chart.js | 18962 +++++++++++++++++ assets/admin/js/apply.js | 186 + assets/admin/js/bootstrap-notify.min.js | 2 + assets/admin/js/bootstrap.min.js | 7 + assets/admin/js/coloris.min.js | 6 + assets/admin/js/group.js | 146 + assets/admin/js/jquery-confirm.min.css | 9 + assets/admin/js/jquery-confirm.min.js | 10 + assets/admin/js/jquery.dragsort-0.5.2.min.js | 3 + assets/admin/js/jquery.lazyload.min.js | 2 + assets/admin/js/jquery.min.js | 4 + assets/admin/js/layer.css | 1 + assets/admin/js/layer.min.js | 1 + assets/admin/js/lightyear.js | 88 + assets/admin/js/link.js | 448 + assets/admin/js/main.min.js | 161 + assets/admin/js/perfect-scrollbar.min.js | 6 + assets/admin/js/theme_setting.js | 125 + assets/admin/loading.gif | Bin 0 -> 1787 bytes assets/css/viewer.min.css | 9 + assets/img/bing.php | 78 +- assets/img/cron.php | 147 +- assets/js/bootstrap.bundle.min.js | 7 + assets/js/layui/css/layui.css | 1 + assets/js/layui/font/iconfont.eot | Bin 0 -> 54172 bytes assets/js/layui/font/iconfont.svg | 405 + assets/js/layui/font/iconfont.ttf | Bin 0 -> 53996 bytes assets/js/layui/font/iconfont.woff | Bin 0 -> 34624 bytes assets/js/layui/font/iconfont.woff2 | Bin 0 -> 29736 bytes assets/js/layui/layui.js | 1 + assets/js/sweetalert.min.js | 1 + assets/js/viewer.min.js | 10 + 42 files changed, 31485 insertions(+), 96 deletions(-) create mode 100644 assets/admin/css/bootstrap.min.css create mode 100644 assets/admin/css/coloris.min.css create mode 100644 assets/admin/css/materialdesignicons.min.css create mode 100644 assets/admin/css/style.min.css create mode 100644 assets/admin/css/theme_setting.css create mode 100644 assets/admin/fonts/materialdesignicons.eot create mode 100644 assets/admin/fonts/materialdesignicons.svg create mode 100644 assets/admin/fonts/materialdesignicons.ttf create mode 100644 assets/admin/fonts/materialdesignicons.woff create mode 100644 assets/admin/fonts/materialdesignicons.woff2 create mode 100644 assets/admin/js/Chart.js create mode 100644 assets/admin/js/apply.js create mode 100644 assets/admin/js/bootstrap-notify.min.js create mode 100644 assets/admin/js/bootstrap.min.js create mode 100644 assets/admin/js/coloris.min.js create mode 100644 assets/admin/js/group.js create mode 100644 assets/admin/js/jquery-confirm.min.css create mode 100644 assets/admin/js/jquery-confirm.min.js create mode 100644 assets/admin/js/jquery.dragsort-0.5.2.min.js create mode 100644 assets/admin/js/jquery.lazyload.min.js create mode 100644 assets/admin/js/jquery.min.js create mode 100644 assets/admin/js/layer.css create mode 100644 assets/admin/js/layer.min.js create mode 100644 assets/admin/js/lightyear.js create mode 100644 assets/admin/js/link.js create mode 100644 assets/admin/js/main.min.js create mode 100644 assets/admin/js/perfect-scrollbar.min.js create mode 100644 assets/admin/js/theme_setting.js create mode 100644 assets/admin/loading.gif create mode 100644 assets/css/viewer.min.css create mode 100644 assets/js/bootstrap.bundle.min.js create mode 100644 assets/js/layui/css/layui.css create mode 100644 assets/js/layui/font/iconfont.eot create mode 100644 assets/js/layui/font/iconfont.svg create mode 100644 assets/js/layui/font/iconfont.ttf create mode 100644 assets/js/layui/font/iconfont.woff create mode 100644 assets/js/layui/font/iconfont.woff2 create mode 100644 assets/js/layui/layui.js create mode 100644 assets/js/sweetalert.min.js create mode 100644 assets/js/viewer.min.js diff --git a/assets/admin/css/bootstrap.min.css b/assets/admin/css/bootstrap.min.css new file mode 100644 index 0000000..70c0b22 --- /dev/null +++ b/assets/admin/css/bootstrap.min.css @@ -0,0 +1,14 @@ +/* + * @Description: + * @Author: LyLme admin@lylme.com + * @Date: 2024-01-23 12:25:35 + * @LastEditors: LyLme admin@lylme.com + * @LastEditTime: 2024-04-09 02:04:32 + * @FilePath: /lylme_spage/assets/admin/css/bootstrap.min.css + * Copyright (c) 2024 by LyLme, All Rights Reserved. + */ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 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;-webkit-text-size-adjust:100%;-ms-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{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}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}}*{-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:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}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: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{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[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{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#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;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}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;overflow:hidden;clear:left;text-align:right;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;text-align:right;border-right:5px solid #eee;border-left:0}.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;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-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-right:15px;padding-left: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;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.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{min-height:.01%;overflow-x:auto}@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{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.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=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.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-top:4px\9;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;font-weight:400;vertical-align:middle;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{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{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;background-color:#dff0d8;border-color:#3c763d}.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;background-color:#fcf8e3;border-color:#8a6d3b}.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;background-color:#f2dede;border-color:#a94442}.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{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{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{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}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.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,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.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,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.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,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.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,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.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,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.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,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{font-weight:400;color:#337ab7;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-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.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;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.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;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-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-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=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-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height: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-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn: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-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn: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{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a: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;cursor:not-allowed;background-color:transparent}.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;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a: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{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a: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-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left: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;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.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;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .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{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .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;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-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-right:15px;margin-left: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{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a: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{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#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{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;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:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a: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;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label: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;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;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{padding-right:15px;padding-left:15px;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-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left: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{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#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);-webkit-background-size:40px 40px;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{overflow:hidden;zoom:1}.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{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}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{color:#555;text-decoration:none;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{color:#777;cursor:not-allowed;background-color:#eee}.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-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.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-left-radius:3px;border-top-right-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-left-radius:0;border-top-right-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-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table: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,.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-right-radius:3px;border-bottom-left-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{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.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;bottom:0;left:0;width:100%;height: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;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;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{right:5px;bottom:0;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-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>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;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,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;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;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;margin-top:-10px}.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;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left: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,.modal-header:after,.modal-header: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{display:table;content:" "}.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,.modal-header: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-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.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}} \ No newline at end of file diff --git a/assets/admin/css/coloris.min.css b/assets/admin/css/coloris.min.css new file mode 100644 index 0000000..fe3033d --- /dev/null +++ b/assets/admin/css/coloris.min.css @@ -0,0 +1 @@ +.clr-picker{display:none;flex-wrap:wrap;position:absolute;width:200px;z-index:1000;border-radius:10px;background-color:#fff;justify-content:space-between;box-shadow:0 0 5px rgba(0,0,0,.05),0 5px 20px rgba(0,0,0,.1);-moz-user-select:none;-webkit-user-select:none;user-select:none}.clr-picker.clr-open{display:flex}.clr-dark{background-color:#444}.clr-gradient{position:relative;width:100%;height:100px;margin-bottom:15px;border-radius:3px 3px 0 0;background-image:linear-gradient(rgba(0,0,0,0),#000),linear-gradient(90deg,#fff,currentColor);cursor:pointer}.clr-marker{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border:1px solid #fff;border-radius:50%;background-color:currentColor;cursor:pointer}.clr-picker input[type=range]::-webkit-slider-runnable-track{width:100%;height:8px}.clr-picker input[type=range]::-webkit-slider-thumb{width:8px;height:8px;-webkit-appearance:none}.clr-picker input[type=range]::-moz-range-track{width:100%;height:8px;border:0}.clr-picker input[type=range]::-moz-range-thumb{width:8px;height:8px;border:0}.clr-hue{background-image:linear-gradient(to right,red 0,#ff0 16.66%,#0f0 33.33%,#0ff 50%,#00f 66.66%,#f0f 83.33%,red 100%)}.clr-alpha,.clr-hue{position:relative;width:calc(100% - 40px);height:8px;margin:5px 20px;border-radius:4px}.clr-alpha span{display:block;height:100%;width:100%;border-radius:inherit;background-image:linear-gradient(90deg,rgba(0,0,0,0),currentColor)}.clr-alpha input,.clr-hue input{position:absolute;width:calc(100% + 16px);height:16px;left:-8px;top:-4px;margin:0;background-color:transparent;opacity:0;cursor:pointer;appearance:none;-webkit-appearance:none}.clr-alpha div,.clr-hue div{position:absolute;width:16px;height:16px;left:0;top:0;margin:-4px 0 0 -8px;border:2px solid #fff;border-radius:50%;background-color:currentColor;box-shadow:0 0 1px #888;pointer-events:none}.clr-alpha div:before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;border-radius:50%;background-color:currentColor}.clr-swatches{order:2;width:calc(100% - 40px);margin:0 20px}.clr-swatches div{display:flex;flex-wrap:wrap;padding-bottom:12px;justify-content:center}.clr-swatches button{position:relative;width:20px;height:20px;margin:0 8px 6px 0;border:0;border-radius:50%;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;cursor:pointer}.clr-swatches button:last-child,.clr-swatches button:nth-child(6n){margin-right:0}.clr-swatches button:after{content:'';display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.clr-dark .clr-swatches button:after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}input.clr-color{order:1;width:120px;height:32px;margin:15px 20px 15px 0;padding:0 15px;border:1px solid #ddd;border-radius:16px;color:#444;background-color:#fff;font-family:sans-serif;font-size:14px;text-align:left;box-shadow:none}.clr-dark input.clr-color{color:#fff;border-color:#777;background-color:#555}input.clr-color:focus{outline:0;border:1px solid #aaa}.clr-preview{position:relative;width:32px;height:32px;margin:15px 0 20px 20px;border:0;border-radius:50%;overflow:hidden;cursor:pointer}.clr-preview:after,.clr-preview:before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;border:1px solid #fff;border-radius:50%}.clr-preview:after{border:0;background-color:currentColor;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.clr-dark .clr-preview:after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}.clr-alpha div,.clr-color,.clr-hue div,.clr-marker{box-sizing:border-box}.clr-field{display:inline-block;position:relative;color:#000}.clr-field button{position:absolute;width:30px;height:100%;right:0;top:50%;transform:translateY(-50%);border:0;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;pointer-events:none}.clr-field button:after{content:'';display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 1px rgba(0,0,0,.5)}.clr-alpha,.clr-alpha div,.clr-field button,.clr-preview:before,.clr-swatches button{background-image:repeating-linear-gradient(45deg,#aaa 25%,transparent 25%,transparent 75%,#aaa 75%,#aaa),repeating-linear-gradient(45deg,#aaa 25%,#fff 25%,#fff 75%,#aaa 75%,#aaa);background-position:0 0,4px 4px;background-size:8px 8px}.clr-marker:focus{outline:0}.clr-keyboard-nav .clr-alpha input:focus+div,.clr-keyboard-nav .clr-hue input:focus+div,.clr-keyboard-nav .clr-marker:focus{outline:0;box-shadow:0 0 0 2px #1e90ff,0 0 2px 2px #fff} \ No newline at end of file diff --git a/assets/admin/css/materialdesignicons.min.css b/assets/admin/css/materialdesignicons.min.css new file mode 100644 index 0000000..69c5775 --- /dev/null +++ b/assets/admin/css/materialdesignicons.min.css @@ -0,0 +1 @@ +/* MaterialDesignIcons.com */@font-face{font-family:"Material Design Icons";src:url("../fonts/materialdesignicons.eot?v=2.0.46");src:url("../fonts/materialdesignicons.eot?#iefix&v=2.0.46") format("embedded-opentype"),url("../fonts/materialdesignicons.woff2?v=2.0.46") format("woff2"),url("../fonts/materialdesignicons.woff?v=2.0.46") format("woff"),url("../fonts/materialdesignicons.ttf?v=2.0.46") format("truetype"),url("../fonts/materialdesignicons.svg?v=2.0.46#materialdesigniconsregular") format("svg");font-weight:normal;font-style:normal}.mdi:before,.mdi-set{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-access-point:before{content:"\F002"}.mdi-access-point-network:before{content:"\F003"}.mdi-account:before{content:"\F004"}.mdi-account-alert:before{content:"\F005"}.mdi-account-box:before{content:"\F006"}.mdi-account-box-outline:before{content:"\F007"}.mdi-account-card-details:before{content:"\F5D2"}.mdi-account-check:before{content:"\F008"}.mdi-account-circle:before{content:"\F009"}.mdi-account-convert:before{content:"\F00A"}.mdi-account-edit:before{content:"\F6BB"}.mdi-account-key:before{content:"\F00B"}.mdi-account-location:before{content:"\F00C"}.mdi-account-minus:before{content:"\F00D"}.mdi-account-multiple:before{content:"\F00E"}.mdi-account-multiple-minus:before{content:"\F5D3"}.mdi-account-multiple-outline:before{content:"\F00F"}.mdi-account-multiple-plus:before{content:"\F010"}.mdi-account-network:before{content:"\F011"}.mdi-account-off:before{content:"\F012"}.mdi-account-outline:before{content:"\F013"}.mdi-account-plus:before{content:"\F014"}.mdi-account-remove:before{content:"\F015"}.mdi-account-search:before{content:"\F016"}.mdi-account-settings:before{content:"\F630"}.mdi-account-settings-variant:before{content:"\F631"}.mdi-account-star:before{content:"\F017"}.mdi-account-switch:before{content:"\F019"}.mdi-adjust:before{content:"\F01A"}.mdi-air-conditioner:before{content:"\F01B"}.mdi-airballoon:before{content:"\F01C"}.mdi-airplane:before{content:"\F01D"}.mdi-airplane-landing:before{content:"\F5D4"}.mdi-airplane-off:before{content:"\F01E"}.mdi-airplane-takeoff:before{content:"\F5D5"}.mdi-airplay:before{content:"\F01F"}.mdi-alarm:before{content:"\F020"}.mdi-alarm-bell:before{content:"\F78D"}.mdi-alarm-check:before{content:"\F021"}.mdi-alarm-light:before{content:"\F78E"}.mdi-alarm-multiple:before{content:"\F022"}.mdi-alarm-off:before{content:"\F023"}.mdi-alarm-plus:before{content:"\F024"}.mdi-alarm-snooze:before{content:"\F68D"}.mdi-album:before{content:"\F025"}.mdi-alert:before{content:"\F026"}.mdi-alert-box:before{content:"\F027"}.mdi-alert-circle:before{content:"\F028"}.mdi-alert-circle-outline:before{content:"\F5D6"}.mdi-alert-decagram:before{content:"\F6BC"}.mdi-alert-octagon:before{content:"\F029"}.mdi-alert-octagram:before{content:"\F766"}.mdi-alert-outline:before{content:"\F02A"}.mdi-all-inclusive:before{content:"\F6BD"}.mdi-alpha:before{content:"\F02B"}.mdi-alphabetical:before{content:"\F02C"}.mdi-altimeter:before{content:"\F5D7"}.mdi-amazon:before{content:"\F02D"}.mdi-amazon-clouddrive:before{content:"\F02E"}.mdi-ambulance:before{content:"\F02F"}.mdi-amplifier:before{content:"\F030"}.mdi-anchor:before{content:"\F031"}.mdi-android:before{content:"\F032"}.mdi-android-debug-bridge:before{content:"\F033"}.mdi-android-head:before{content:"\F78F"}.mdi-android-studio:before{content:"\F034"}.mdi-angular:before{content:"\F6B1"}.mdi-angularjs:before{content:"\F6BE"}.mdi-animation:before{content:"\F5D8"}.mdi-apple:before{content:"\F035"}.mdi-apple-finder:before{content:"\F036"}.mdi-apple-ios:before{content:"\F037"}.mdi-apple-keyboard-caps:before{content:"\F632"}.mdi-apple-keyboard-command:before{content:"\F633"}.mdi-apple-keyboard-control:before{content:"\F634"}.mdi-apple-keyboard-option:before{content:"\F635"}.mdi-apple-keyboard-shift:before{content:"\F636"}.mdi-apple-mobileme:before{content:"\F038"}.mdi-apple-safari:before{content:"\F039"}.mdi-application:before{content:"\F614"}.mdi-approval:before{content:"\F790"}.mdi-apps:before{content:"\F03B"}.mdi-archive:before{content:"\F03C"}.mdi-arrange-bring-forward:before{content:"\F03D"}.mdi-arrange-bring-to-front:before{content:"\F03E"}.mdi-arrange-send-backward:before{content:"\F03F"}.mdi-arrange-send-to-back:before{content:"\F040"}.mdi-arrow-all:before{content:"\F041"}.mdi-arrow-bottom-left:before{content:"\F042"}.mdi-arrow-bottom-right:before{content:"\F043"}.mdi-arrow-collapse:before{content:"\F615"}.mdi-arrow-collapse-all:before{content:"\F044"}.mdi-arrow-collapse-down:before{content:"\F791"}.mdi-arrow-collapse-left:before{content:"\F792"}.mdi-arrow-collapse-right:before{content:"\F793"}.mdi-arrow-collapse-up:before{content:"\F794"}.mdi-arrow-down:before{content:"\F045"}.mdi-arrow-down-bold:before{content:"\F72D"}.mdi-arrow-down-bold-box:before{content:"\F72E"}.mdi-arrow-down-bold-box-outline:before{content:"\F72F"}.mdi-arrow-down-bold-circle:before{content:"\F047"}.mdi-arrow-down-bold-circle-outline:before{content:"\F048"}.mdi-arrow-down-bold-hexagon-outline:before{content:"\F049"}.mdi-arrow-down-box:before{content:"\F6BF"}.mdi-arrow-down-drop-circle:before{content:"\F04A"}.mdi-arrow-down-drop-circle-outline:before{content:"\F04B"}.mdi-arrow-down-thick:before{content:"\F046"}.mdi-arrow-expand:before{content:"\F616"}.mdi-arrow-expand-all:before{content:"\F04C"}.mdi-arrow-expand-down:before{content:"\F795"}.mdi-arrow-expand-left:before{content:"\F796"}.mdi-arrow-expand-right:before{content:"\F797"}.mdi-arrow-expand-up:before{content:"\F798"}.mdi-arrow-left:before{content:"\F04D"}.mdi-arrow-left-bold:before{content:"\F730"}.mdi-arrow-left-bold-box:before{content:"\F731"}.mdi-arrow-left-bold-box-outline:before{content:"\F732"}.mdi-arrow-left-bold-circle:before{content:"\F04F"}.mdi-arrow-left-bold-circle-outline:before{content:"\F050"}.mdi-arrow-left-bold-hexagon-outline:before{content:"\F051"}.mdi-arrow-left-box:before{content:"\F6C0"}.mdi-arrow-left-drop-circle:before{content:"\F052"}.mdi-arrow-left-drop-circle-outline:before{content:"\F053"}.mdi-arrow-left-thick:before{content:"\F04E"}.mdi-arrow-right:before{content:"\F054"}.mdi-arrow-right-bold:before{content:"\F733"}.mdi-arrow-right-bold-box:before{content:"\F734"}.mdi-arrow-right-bold-box-outline:before{content:"\F735"}.mdi-arrow-right-bold-circle:before{content:"\F056"}.mdi-arrow-right-bold-circle-outline:before{content:"\F057"}.mdi-arrow-right-bold-hexagon-outline:before{content:"\F058"}.mdi-arrow-right-box:before{content:"\F6C1"}.mdi-arrow-right-drop-circle:before{content:"\F059"}.mdi-arrow-right-drop-circle-outline:before{content:"\F05A"}.mdi-arrow-right-thick:before{content:"\F055"}.mdi-arrow-top-left:before{content:"\F05B"}.mdi-arrow-top-right:before{content:"\F05C"}.mdi-arrow-up:before{content:"\F05D"}.mdi-arrow-up-bold:before{content:"\F736"}.mdi-arrow-up-bold-box:before{content:"\F737"}.mdi-arrow-up-bold-box-outline:before{content:"\F738"}.mdi-arrow-up-bold-circle:before{content:"\F05F"}.mdi-arrow-up-bold-circle-outline:before{content:"\F060"}.mdi-arrow-up-bold-hexagon-outline:before{content:"\F061"}.mdi-arrow-up-box:before{content:"\F6C2"}.mdi-arrow-up-drop-circle:before{content:"\F062"}.mdi-arrow-up-drop-circle-outline:before{content:"\F063"}.mdi-arrow-up-thick:before{content:"\F05E"}.mdi-assistant:before{content:"\F064"}.mdi-asterisk:before{content:"\F6C3"}.mdi-at:before{content:"\F065"}.mdi-atom:before{content:"\F767"}.mdi-attachment:before{content:"\F066"}.mdi-audiobook:before{content:"\F067"}.mdi-auto-fix:before{content:"\F068"}.mdi-auto-upload:before{content:"\F069"}.mdi-autorenew:before{content:"\F06A"}.mdi-av-timer:before{content:"\F06B"}.mdi-baby:before{content:"\F06C"}.mdi-baby-buggy:before{content:"\F68E"}.mdi-backburger:before{content:"\F06D"}.mdi-backspace:before{content:"\F06E"}.mdi-backup-restore:before{content:"\F06F"}.mdi-bandcamp:before{content:"\F674"}.mdi-bank:before{content:"\F070"}.mdi-barcode:before{content:"\F071"}.mdi-barcode-scan:before{content:"\F072"}.mdi-barley:before{content:"\F073"}.mdi-barrel:before{content:"\F074"}.mdi-basecamp:before{content:"\F075"}.mdi-basket:before{content:"\F076"}.mdi-basket-fill:before{content:"\F077"}.mdi-basket-unfill:before{content:"\F078"}.mdi-battery:before{content:"\F079"}.mdi-battery-10:before{content:"\F07A"}.mdi-battery-20:before{content:"\F07B"}.mdi-battery-30:before{content:"\F07C"}.mdi-battery-40:before{content:"\F07D"}.mdi-battery-50:before{content:"\F07E"}.mdi-battery-60:before{content:"\F07F"}.mdi-battery-70:before{content:"\F080"}.mdi-battery-80:before{content:"\F081"}.mdi-battery-90:before{content:"\F082"}.mdi-battery-alert:before{content:"\F083"}.mdi-battery-charging:before{content:"\F084"}.mdi-battery-charging-100:before{content:"\F085"}.mdi-battery-charging-20:before{content:"\F086"}.mdi-battery-charging-30:before{content:"\F087"}.mdi-battery-charging-40:before{content:"\F088"}.mdi-battery-charging-60:before{content:"\F089"}.mdi-battery-charging-80:before{content:"\F08A"}.mdi-battery-charging-90:before{content:"\F08B"}.mdi-battery-minus:before{content:"\F08C"}.mdi-battery-negative:before{content:"\F08D"}.mdi-battery-outline:before{content:"\F08E"}.mdi-battery-plus:before{content:"\F08F"}.mdi-battery-positive:before{content:"\F090"}.mdi-battery-unknown:before{content:"\F091"}.mdi-beach:before{content:"\F092"}.mdi-beaker:before{content:"\F68F"}.mdi-beats:before{content:"\F097"}.mdi-beer:before{content:"\F098"}.mdi-behance:before{content:"\F099"}.mdi-bell:before{content:"\F09A"}.mdi-bell-off:before{content:"\F09B"}.mdi-bell-outline:before{content:"\F09C"}.mdi-bell-plus:before{content:"\F09D"}.mdi-bell-ring:before{content:"\F09E"}.mdi-bell-ring-outline:before{content:"\F09F"}.mdi-bell-sleep:before{content:"\F0A0"}.mdi-beta:before{content:"\F0A1"}.mdi-bible:before{content:"\F0A2"}.mdi-bike:before{content:"\F0A3"}.mdi-bing:before{content:"\F0A4"}.mdi-binoculars:before{content:"\F0A5"}.mdi-bio:before{content:"\F0A6"}.mdi-biohazard:before{content:"\F0A7"}.mdi-bitbucket:before{content:"\F0A8"}.mdi-black-mesa:before{content:"\F0A9"}.mdi-blackberry:before{content:"\F0AA"}.mdi-blender:before{content:"\F0AB"}.mdi-blinds:before{content:"\F0AC"}.mdi-block-helper:before{content:"\F0AD"}.mdi-blogger:before{content:"\F0AE"}.mdi-bluetooth:before{content:"\F0AF"}.mdi-bluetooth-audio:before{content:"\F0B0"}.mdi-bluetooth-connect:before{content:"\F0B1"}.mdi-bluetooth-off:before{content:"\F0B2"}.mdi-bluetooth-settings:before{content:"\F0B3"}.mdi-bluetooth-transfer:before{content:"\F0B4"}.mdi-blur:before{content:"\F0B5"}.mdi-blur-linear:before{content:"\F0B6"}.mdi-blur-off:before{content:"\F0B7"}.mdi-blur-radial:before{content:"\F0B8"}.mdi-bomb:before{content:"\F690"}.mdi-bomb-off:before{content:"\F6C4"}.mdi-bone:before{content:"\F0B9"}.mdi-book:before{content:"\F0BA"}.mdi-book-minus:before{content:"\F5D9"}.mdi-book-multiple:before{content:"\F0BB"}.mdi-book-multiple-variant:before{content:"\F0BC"}.mdi-book-open:before{content:"\F0BD"}.mdi-book-open-page-variant:before{content:"\F5DA"}.mdi-book-open-variant:before{content:"\F0BE"}.mdi-book-plus:before{content:"\F5DB"}.mdi-book-secure:before{content:"\F799"}.mdi-book-unsecure:before{content:"\F79A"}.mdi-book-variant:before{content:"\F0BF"}.mdi-bookmark:before{content:"\F0C0"}.mdi-bookmark-check:before{content:"\F0C1"}.mdi-bookmark-music:before{content:"\F0C2"}.mdi-bookmark-outline:before{content:"\F0C3"}.mdi-bookmark-plus:before{content:"\F0C5"}.mdi-bookmark-plus-outline:before{content:"\F0C4"}.mdi-bookmark-remove:before{content:"\F0C6"}.mdi-boombox:before{content:"\F5DC"}.mdi-bootstrap:before{content:"\F6C5"}.mdi-border-all:before{content:"\F0C7"}.mdi-border-bottom:before{content:"\F0C8"}.mdi-border-color:before{content:"\F0C9"}.mdi-border-horizontal:before{content:"\F0CA"}.mdi-border-inside:before{content:"\F0CB"}.mdi-border-left:before{content:"\F0CC"}.mdi-border-none:before{content:"\F0CD"}.mdi-border-outside:before{content:"\F0CE"}.mdi-border-right:before{content:"\F0CF"}.mdi-border-style:before{content:"\F0D0"}.mdi-border-top:before{content:"\F0D1"}.mdi-border-vertical:before{content:"\F0D2"}.mdi-bow-tie:before{content:"\F677"}.mdi-bowl:before{content:"\F617"}.mdi-bowling:before{content:"\F0D3"}.mdi-box:before{content:"\F0D4"}.mdi-box-cutter:before{content:"\F0D5"}.mdi-box-shadow:before{content:"\F637"}.mdi-bridge:before{content:"\F618"}.mdi-briefcase:before{content:"\F0D6"}.mdi-briefcase-check:before{content:"\F0D7"}.mdi-briefcase-download:before{content:"\F0D8"}.mdi-briefcase-upload:before{content:"\F0D9"}.mdi-brightness-1:before{content:"\F0DA"}.mdi-brightness-2:before{content:"\F0DB"}.mdi-brightness-3:before{content:"\F0DC"}.mdi-brightness-4:before{content:"\F0DD"}.mdi-brightness-5:before{content:"\F0DE"}.mdi-brightness-6:before{content:"\F0DF"}.mdi-brightness-7:before{content:"\F0E0"}.mdi-brightness-auto:before{content:"\F0E1"}.mdi-broom:before{content:"\F0E2"}.mdi-brush:before{content:"\F0E3"}.mdi-buffer:before{content:"\F619"}.mdi-bug:before{content:"\F0E4"}.mdi-bulletin-board:before{content:"\F0E5"}.mdi-bullhorn:before{content:"\F0E6"}.mdi-bullseye:before{content:"\F5DD"}.mdi-burst-mode:before{content:"\F5DE"}.mdi-bus:before{content:"\F0E7"}.mdi-bus-articulated-end:before{content:"\F79B"}.mdi-bus-articulated-front:before{content:"\F79C"}.mdi-bus-double-decker:before{content:"\F79D"}.mdi-bus-school:before{content:"\F79E"}.mdi-bus-side:before{content:"\F79F"}.mdi-cached:before{content:"\F0E8"}.mdi-cake:before{content:"\F0E9"}.mdi-cake-layered:before{content:"\F0EA"}.mdi-cake-variant:before{content:"\F0EB"}.mdi-calculator:before{content:"\F0EC"}.mdi-calendar:before{content:"\F0ED"}.mdi-calendar-blank:before{content:"\F0EE"}.mdi-calendar-check:before{content:"\F0EF"}.mdi-calendar-clock:before{content:"\F0F0"}.mdi-calendar-multiple:before{content:"\F0F1"}.mdi-calendar-multiple-check:before{content:"\F0F2"}.mdi-calendar-plus:before{content:"\F0F3"}.mdi-calendar-question:before{content:"\F691"}.mdi-calendar-range:before{content:"\F678"}.mdi-calendar-remove:before{content:"\F0F4"}.mdi-calendar-text:before{content:"\F0F5"}.mdi-calendar-today:before{content:"\F0F6"}.mdi-call-made:before{content:"\F0F7"}.mdi-call-merge:before{content:"\F0F8"}.mdi-call-missed:before{content:"\F0F9"}.mdi-call-received:before{content:"\F0FA"}.mdi-call-split:before{content:"\F0FB"}.mdi-camcorder:before{content:"\F0FC"}.mdi-camcorder-box:before{content:"\F0FD"}.mdi-camcorder-box-off:before{content:"\F0FE"}.mdi-camcorder-off:before{content:"\F0FF"}.mdi-camera:before{content:"\F100"}.mdi-camera-burst:before{content:"\F692"}.mdi-camera-enhance:before{content:"\F101"}.mdi-camera-front:before{content:"\F102"}.mdi-camera-front-variant:before{content:"\F103"}.mdi-camera-gopro:before{content:"\F7A0"}.mdi-camera-iris:before{content:"\F104"}.mdi-camera-metering-center:before{content:"\F7A1"}.mdi-camera-metering-matrix:before{content:"\F7A2"}.mdi-camera-metering-partial:before{content:"\F7A3"}.mdi-camera-metering-spot:before{content:"\F7A4"}.mdi-camera-off:before{content:"\F5DF"}.mdi-camera-party-mode:before{content:"\F105"}.mdi-camera-rear:before{content:"\F106"}.mdi-camera-rear-variant:before{content:"\F107"}.mdi-camera-switch:before{content:"\F108"}.mdi-camera-timer:before{content:"\F109"}.mdi-cancel:before{content:"\F739"}.mdi-candle:before{content:"\F5E2"}.mdi-candycane:before{content:"\F10A"}.mdi-cannabis:before{content:"\F7A5"}.mdi-car:before{content:"\F10B"}.mdi-car-battery:before{content:"\F10C"}.mdi-car-connected:before{content:"\F10D"}.mdi-car-convertable:before{content:"\F7A6"}.mdi-car-estate:before{content:"\F7A7"}.mdi-car-hatchback:before{content:"\F7A8"}.mdi-car-pickup:before{content:"\F7A9"}.mdi-car-side:before{content:"\F7AA"}.mdi-car-sports:before{content:"\F7AB"}.mdi-car-wash:before{content:"\F10E"}.mdi-caravan:before{content:"\F7AC"}.mdi-cards:before{content:"\F638"}.mdi-cards-outline:before{content:"\F639"}.mdi-cards-playing-outline:before{content:"\F63A"}.mdi-cards-variant:before{content:"\F6C6"}.mdi-carrot:before{content:"\F10F"}.mdi-cart:before{content:"\F110"}.mdi-cart-off:before{content:"\F66B"}.mdi-cart-outline:before{content:"\F111"}.mdi-cart-plus:before{content:"\F112"}.mdi-case-sensitive-alt:before{content:"\F113"}.mdi-cash:before{content:"\F114"}.mdi-cash-100:before{content:"\F115"}.mdi-cash-multiple:before{content:"\F116"}.mdi-cash-usd:before{content:"\F117"}.mdi-cast:before{content:"\F118"}.mdi-cast-connected:before{content:"\F119"}.mdi-cast-off:before{content:"\F789"}.mdi-castle:before{content:"\F11A"}.mdi-cat:before{content:"\F11B"}.mdi-cctv:before{content:"\F7AD"}.mdi-ceiling-light:before{content:"\F768"}.mdi-cellphone:before{content:"\F11C"}.mdi-cellphone-android:before{content:"\F11D"}.mdi-cellphone-basic:before{content:"\F11E"}.mdi-cellphone-dock:before{content:"\F11F"}.mdi-cellphone-iphone:before{content:"\F120"}.mdi-cellphone-link:before{content:"\F121"}.mdi-cellphone-link-off:before{content:"\F122"}.mdi-cellphone-settings:before{content:"\F123"}.mdi-certificate:before{content:"\F124"}.mdi-chair-school:before{content:"\F125"}.mdi-chart-arc:before{content:"\F126"}.mdi-chart-areaspline:before{content:"\F127"}.mdi-chart-bar:before{content:"\F128"}.mdi-chart-bar-stacked:before{content:"\F769"}.mdi-chart-bubble:before{content:"\F5E3"}.mdi-chart-donut:before{content:"\F7AE"}.mdi-chart-donut-variant:before{content:"\F7AF"}.mdi-chart-gantt:before{content:"\F66C"}.mdi-chart-histogram:before{content:"\F129"}.mdi-chart-line:before{content:"\F12A"}.mdi-chart-line-stacked:before{content:"\F76A"}.mdi-chart-line-variant:before{content:"\F7B0"}.mdi-chart-pie:before{content:"\F12B"}.mdi-chart-scatterplot-hexbin:before{content:"\F66D"}.mdi-chart-timeline:before{content:"\F66E"}.mdi-check:before{content:"\F12C"}.mdi-check-all:before{content:"\F12D"}.mdi-check-circle:before{content:"\F5E0"}.mdi-check-circle-outline:before{content:"\F5E1"}.mdi-checkbox-blank:before{content:"\F12E"}.mdi-checkbox-blank-circle:before{content:"\F12F"}.mdi-checkbox-blank-circle-outline:before{content:"\F130"}.mdi-checkbox-blank-outline:before{content:"\F131"}.mdi-checkbox-marked:before{content:"\F132"}.mdi-checkbox-marked-circle:before{content:"\F133"}.mdi-checkbox-marked-circle-outline:before{content:"\F134"}.mdi-checkbox-marked-outline:before{content:"\F135"}.mdi-checkbox-multiple-blank:before{content:"\F136"}.mdi-checkbox-multiple-blank-circle:before{content:"\F63B"}.mdi-checkbox-multiple-blank-circle-outline:before{content:"\F63C"}.mdi-checkbox-multiple-blank-outline:before{content:"\F137"}.mdi-checkbox-multiple-marked:before{content:"\F138"}.mdi-checkbox-multiple-marked-circle:before{content:"\F63D"}.mdi-checkbox-multiple-marked-circle-outline:before{content:"\F63E"}.mdi-checkbox-multiple-marked-outline:before{content:"\F139"}.mdi-checkerboard:before{content:"\F13A"}.mdi-chemical-weapon:before{content:"\F13B"}.mdi-chevron-double-down:before{content:"\F13C"}.mdi-chevron-double-left:before{content:"\F13D"}.mdi-chevron-double-right:before{content:"\F13E"}.mdi-chevron-double-up:before{content:"\F13F"}.mdi-chevron-down:before{content:"\F140"}.mdi-chevron-left:before{content:"\F141"}.mdi-chevron-right:before{content:"\F142"}.mdi-chevron-up:before{content:"\F143"}.mdi-chili-hot:before{content:"\F7B1"}.mdi-chili-medium:before{content:"\F7B2"}.mdi-chili-mild:before{content:"\F7B3"}.mdi-chip:before{content:"\F61A"}.mdi-church:before{content:"\F144"}.mdi-circle:before{content:"\F764"}.mdi-circle-outline:before{content:"\F765"}.mdi-cisco-webex:before{content:"\F145"}.mdi-city:before{content:"\F146"}.mdi-clipboard:before{content:"\F147"}.mdi-clipboard-account:before{content:"\F148"}.mdi-clipboard-alert:before{content:"\F149"}.mdi-clipboard-arrow-down:before{content:"\F14A"}.mdi-clipboard-arrow-left:before{content:"\F14B"}.mdi-clipboard-check:before{content:"\F14C"}.mdi-clipboard-flow:before{content:"\F6C7"}.mdi-clipboard-outline:before{content:"\F14D"}.mdi-clipboard-plus:before{content:"\F750"}.mdi-clipboard-text:before{content:"\F14E"}.mdi-clippy:before{content:"\F14F"}.mdi-clock:before{content:"\F150"}.mdi-clock-alert:before{content:"\F5CE"}.mdi-clock-end:before{content:"\F151"}.mdi-clock-fast:before{content:"\F152"}.mdi-clock-in:before{content:"\F153"}.mdi-clock-out:before{content:"\F154"}.mdi-clock-start:before{content:"\F155"}.mdi-close:before{content:"\F156"}.mdi-close-box:before{content:"\F157"}.mdi-close-box-outline:before{content:"\F158"}.mdi-close-circle:before{content:"\F159"}.mdi-close-circle-outline:before{content:"\F15A"}.mdi-close-network:before{content:"\F15B"}.mdi-close-octagon:before{content:"\F15C"}.mdi-close-octagon-outline:before{content:"\F15D"}.mdi-close-outline:before{content:"\F6C8"}.mdi-closed-caption:before{content:"\F15E"}.mdi-cloud:before{content:"\F15F"}.mdi-cloud-braces:before{content:"\F7B4"}.mdi-cloud-check:before{content:"\F160"}.mdi-cloud-circle:before{content:"\F161"}.mdi-cloud-download:before{content:"\F162"}.mdi-cloud-off-outline:before{content:"\F164"}.mdi-cloud-outline:before{content:"\F163"}.mdi-cloud-print:before{content:"\F165"}.mdi-cloud-print-outline:before{content:"\F166"}.mdi-cloud-sync:before{content:"\F63F"}.mdi-cloud-tags:before{content:"\F7B5"}.mdi-cloud-upload:before{content:"\F167"}.mdi-code-array:before{content:"\F168"}.mdi-code-braces:before{content:"\F169"}.mdi-code-brackets:before{content:"\F16A"}.mdi-code-equal:before{content:"\F16B"}.mdi-code-greater-than:before{content:"\F16C"}.mdi-code-greater-than-or-equal:before{content:"\F16D"}.mdi-code-less-than:before{content:"\F16E"}.mdi-code-less-than-or-equal:before{content:"\F16F"}.mdi-code-not-equal:before{content:"\F170"}.mdi-code-not-equal-variant:before{content:"\F171"}.mdi-code-parentheses:before{content:"\F172"}.mdi-code-string:before{content:"\F173"}.mdi-code-tags:before{content:"\F174"}.mdi-code-tags-check:before{content:"\F693"}.mdi-codepen:before{content:"\F175"}.mdi-coffee:before{content:"\F176"}.mdi-coffee-outline:before{content:"\F6C9"}.mdi-coffee-to-go:before{content:"\F177"}.mdi-coin:before{content:"\F178"}.mdi-coins:before{content:"\F694"}.mdi-collage:before{content:"\F640"}.mdi-color-helper:before{content:"\F179"}.mdi-comment:before{content:"\F17A"}.mdi-comment-account:before{content:"\F17B"}.mdi-comment-account-outline:before{content:"\F17C"}.mdi-comment-alert:before{content:"\F17D"}.mdi-comment-alert-outline:before{content:"\F17E"}.mdi-comment-check:before{content:"\F17F"}.mdi-comment-check-outline:before{content:"\F180"}.mdi-comment-multiple-outline:before{content:"\F181"}.mdi-comment-outline:before{content:"\F182"}.mdi-comment-plus-outline:before{content:"\F183"}.mdi-comment-processing:before{content:"\F184"}.mdi-comment-processing-outline:before{content:"\F185"}.mdi-comment-question-outline:before{content:"\F186"}.mdi-comment-remove-outline:before{content:"\F187"}.mdi-comment-text:before{content:"\F188"}.mdi-comment-text-outline:before{content:"\F189"}.mdi-compare:before{content:"\F18A"}.mdi-compass:before{content:"\F18B"}.mdi-compass-outline:before{content:"\F18C"}.mdi-console:before{content:"\F18D"}.mdi-console-line:before{content:"\F7B6"}.mdi-contact-mail:before{content:"\F18E"}.mdi-contacts:before{content:"\F6CA"}.mdi-content-copy:before{content:"\F18F"}.mdi-content-cut:before{content:"\F190"}.mdi-content-duplicate:before{content:"\F191"}.mdi-content-paste:before{content:"\F192"}.mdi-content-save:before{content:"\F193"}.mdi-content-save-all:before{content:"\F194"}.mdi-content-save-settings:before{content:"\F61B"}.mdi-contrast:before{content:"\F195"}.mdi-contrast-box:before{content:"\F196"}.mdi-contrast-circle:before{content:"\F197"}.mdi-cookie:before{content:"\F198"}.mdi-copyright:before{content:"\F5E6"}.mdi-corn:before{content:"\F7B7"}.mdi-counter:before{content:"\F199"}.mdi-cow:before{content:"\F19A"}.mdi-creation:before{content:"\F1C9"}.mdi-credit-card:before{content:"\F19B"}.mdi-credit-card-multiple:before{content:"\F19C"}.mdi-credit-card-off:before{content:"\F5E4"}.mdi-credit-card-plus:before{content:"\F675"}.mdi-credit-card-scan:before{content:"\F19D"}.mdi-crop:before{content:"\F19E"}.mdi-crop-free:before{content:"\F19F"}.mdi-crop-landscape:before{content:"\F1A0"}.mdi-crop-portrait:before{content:"\F1A1"}.mdi-crop-rotate:before{content:"\F695"}.mdi-crop-square:before{content:"\F1A2"}.mdi-crosshairs:before{content:"\F1A3"}.mdi-crosshairs-gps:before{content:"\F1A4"}.mdi-crown:before{content:"\F1A5"}.mdi-cube:before{content:"\F1A6"}.mdi-cube-outline:before{content:"\F1A7"}.mdi-cube-send:before{content:"\F1A8"}.mdi-cube-unfolded:before{content:"\F1A9"}.mdi-cup:before{content:"\F1AA"}.mdi-cup-off:before{content:"\F5E5"}.mdi-cup-water:before{content:"\F1AB"}.mdi-currency-btc:before{content:"\F1AC"}.mdi-currency-chf:before{content:"\F7B8"}.mdi-currency-cny:before{content:"\F7B9"}.mdi-currency-eth:before{content:"\F7BA"}.mdi-currency-eur:before{content:"\F1AD"}.mdi-currency-gbp:before{content:"\F1AE"}.mdi-currency-inr:before{content:"\F1AF"}.mdi-currency-jpy:before{content:"\F7BB"}.mdi-currency-krw:before{content:"\F7BC"}.mdi-currency-ngn:before{content:"\F1B0"}.mdi-currency-rub:before{content:"\F1B1"}.mdi-currency-sign:before{content:"\F7BD"}.mdi-currency-try:before{content:"\F1B2"}.mdi-currency-twd:before{content:"\F7BE"}.mdi-currency-usd:before{content:"\F1B3"}.mdi-currency-usd-off:before{content:"\F679"}.mdi-cursor-default:before{content:"\F1B4"}.mdi-cursor-default-outline:before{content:"\F1B5"}.mdi-cursor-move:before{content:"\F1B6"}.mdi-cursor-pointer:before{content:"\F1B7"}.mdi-cursor-text:before{content:"\F5E7"}.mdi-database:before{content:"\F1B8"}.mdi-database-minus:before{content:"\F1B9"}.mdi-database-plus:before{content:"\F1BA"}.mdi-debug-step-into:before{content:"\F1BB"}.mdi-debug-step-out:before{content:"\F1BC"}.mdi-debug-step-over:before{content:"\F1BD"}.mdi-decagram:before{content:"\F76B"}.mdi-decagram-outline:before{content:"\F76C"}.mdi-decimal-decrease:before{content:"\F1BE"}.mdi-decimal-increase:before{content:"\F1BF"}.mdi-delete:before{content:"\F1C0"}.mdi-delete-circle:before{content:"\F682"}.mdi-delete-empty:before{content:"\F6CB"}.mdi-delete-forever:before{content:"\F5E8"}.mdi-delete-sweep:before{content:"\F5E9"}.mdi-delete-variant:before{content:"\F1C1"}.mdi-delta:before{content:"\F1C2"}.mdi-deskphone:before{content:"\F1C3"}.mdi-desktop-classic:before{content:"\F7BF"}.mdi-desktop-mac:before{content:"\F1C4"}.mdi-desktop-tower:before{content:"\F1C5"}.mdi-details:before{content:"\F1C6"}.mdi-developer-board:before{content:"\F696"}.mdi-deviantart:before{content:"\F1C7"}.mdi-dialpad:before{content:"\F61C"}.mdi-diamond:before{content:"\F1C8"}.mdi-dice-1:before{content:"\F1CA"}.mdi-dice-2:before{content:"\F1CB"}.mdi-dice-3:before{content:"\F1CC"}.mdi-dice-4:before{content:"\F1CD"}.mdi-dice-5:before{content:"\F1CE"}.mdi-dice-6:before{content:"\F1CF"}.mdi-dice-d10:before{content:"\F76E"}.mdi-dice-d20:before{content:"\F5EA"}.mdi-dice-d4:before{content:"\F5EB"}.mdi-dice-d6:before{content:"\F5EC"}.mdi-dice-d8:before{content:"\F5ED"}.mdi-dice-multiple:before{content:"\F76D"}.mdi-dictionary:before{content:"\F61D"}.mdi-dip-switch:before{content:"\F7C0"}.mdi-directions:before{content:"\F1D0"}.mdi-directions-fork:before{content:"\F641"}.mdi-discord:before{content:"\F66F"}.mdi-disk:before{content:"\F5EE"}.mdi-disk-alert:before{content:"\F1D1"}.mdi-disqus:before{content:"\F1D2"}.mdi-disqus-outline:before{content:"\F1D3"}.mdi-division:before{content:"\F1D4"}.mdi-division-box:before{content:"\F1D5"}.mdi-dna:before{content:"\F683"}.mdi-dns:before{content:"\F1D6"}.mdi-do-not-disturb:before{content:"\F697"}.mdi-do-not-disturb-off:before{content:"\F698"}.mdi-dolby:before{content:"\F6B2"}.mdi-domain:before{content:"\F1D7"}.mdi-donkey:before{content:"\F7C1"}.mdi-dots-horizontal:before{content:"\F1D8"}.mdi-dots-horizontal-circle:before{content:"\F7C2"}.mdi-dots-vertical:before{content:"\F1D9"}.mdi-dots-vertical-circle:before{content:"\F7C3"}.mdi-douban:before{content:"\F699"}.mdi-download:before{content:"\F1DA"}.mdi-download-network:before{content:"\F6F3"}.mdi-drag:before{content:"\F1DB"}.mdi-drag-horizontal:before{content:"\F1DC"}.mdi-drag-vertical:before{content:"\F1DD"}.mdi-drawing:before{content:"\F1DE"}.mdi-drawing-box:before{content:"\F1DF"}.mdi-dribbble:before{content:"\F1E0"}.mdi-dribbble-box:before{content:"\F1E1"}.mdi-drone:before{content:"\F1E2"}.mdi-dropbox:before{content:"\F1E3"}.mdi-drupal:before{content:"\F1E4"}.mdi-duck:before{content:"\F1E5"}.mdi-dumbbell:before{content:"\F1E6"}.mdi-ear-hearing:before{content:"\F7C4"}.mdi-earth:before{content:"\F1E7"}.mdi-earth-box:before{content:"\F6CC"}.mdi-earth-box-off:before{content:"\F6CD"}.mdi-earth-off:before{content:"\F1E8"}.mdi-edge:before{content:"\F1E9"}.mdi-eject:before{content:"\F1EA"}.mdi-elephant:before{content:"\F7C5"}.mdi-elevation-decline:before{content:"\F1EB"}.mdi-elevation-rise:before{content:"\F1EC"}.mdi-elevator:before{content:"\F1ED"}.mdi-email:before{content:"\F1EE"}.mdi-email-alert:before{content:"\F6CE"}.mdi-email-open:before{content:"\F1EF"}.mdi-email-open-outline:before{content:"\F5EF"}.mdi-email-outline:before{content:"\F1F0"}.mdi-email-secure:before{content:"\F1F1"}.mdi-email-variant:before{content:"\F5F0"}.mdi-emby:before{content:"\F6B3"}.mdi-emoticon:before{content:"\F1F2"}.mdi-emoticon-cool:before{content:"\F1F3"}.mdi-emoticon-dead:before{content:"\F69A"}.mdi-emoticon-devil:before{content:"\F1F4"}.mdi-emoticon-excited:before{content:"\F69B"}.mdi-emoticon-happy:before{content:"\F1F5"}.mdi-emoticon-neutral:before{content:"\F1F6"}.mdi-emoticon-poop:before{content:"\F1F7"}.mdi-emoticon-sad:before{content:"\F1F8"}.mdi-emoticon-tongue:before{content:"\F1F9"}.mdi-engine:before{content:"\F1FA"}.mdi-engine-outline:before{content:"\F1FB"}.mdi-equal:before{content:"\F1FC"}.mdi-equal-box:before{content:"\F1FD"}.mdi-eraser:before{content:"\F1FE"}.mdi-eraser-variant:before{content:"\F642"}.mdi-escalator:before{content:"\F1FF"}.mdi-ethernet:before{content:"\F200"}.mdi-ethernet-cable:before{content:"\F201"}.mdi-ethernet-cable-off:before{content:"\F202"}.mdi-etsy:before{content:"\F203"}.mdi-ev-station:before{content:"\F5F1"}.mdi-eventbrite:before{content:"\F7C6"}.mdi-evernote:before{content:"\F204"}.mdi-exclamation:before{content:"\F205"}.mdi-exit-to-app:before{content:"\F206"}.mdi-export:before{content:"\F207"}.mdi-eye:before{content:"\F208"}.mdi-eye-off:before{content:"\F209"}.mdi-eye-off-outline:before{content:"\F6D0"}.mdi-eye-outline:before{content:"\F6CF"}.mdi-eyedropper:before{content:"\F20A"}.mdi-eyedropper-variant:before{content:"\F20B"}.mdi-face:before{content:"\F643"}.mdi-face-profile:before{content:"\F644"}.mdi-facebook:before{content:"\F20C"}.mdi-facebook-box:before{content:"\F20D"}.mdi-facebook-messenger:before{content:"\F20E"}.mdi-factory:before{content:"\F20F"}.mdi-fan:before{content:"\F210"}.mdi-fast-forward:before{content:"\F211"}.mdi-fast-forward-outline:before{content:"\F6D1"}.mdi-fax:before{content:"\F212"}.mdi-feather:before{content:"\F6D2"}.mdi-ferry:before{content:"\F213"}.mdi-file:before{content:"\F214"}.mdi-file-account:before{content:"\F73A"}.mdi-file-chart:before{content:"\F215"}.mdi-file-check:before{content:"\F216"}.mdi-file-cloud:before{content:"\F217"}.mdi-file-delimited:before{content:"\F218"}.mdi-file-document:before{content:"\F219"}.mdi-file-document-box:before{content:"\F21A"}.mdi-file-excel:before{content:"\F21B"}.mdi-file-excel-box:before{content:"\F21C"}.mdi-file-export:before{content:"\F21D"}.mdi-file-find:before{content:"\F21E"}.mdi-file-hidden:before{content:"\F613"}.mdi-file-image:before{content:"\F21F"}.mdi-file-import:before{content:"\F220"}.mdi-file-lock:before{content:"\F221"}.mdi-file-multiple:before{content:"\F222"}.mdi-file-music:before{content:"\F223"}.mdi-file-outline:before{content:"\F224"}.mdi-file-pdf:before{content:"\F225"}.mdi-file-pdf-box:before{content:"\F226"}.mdi-file-plus:before{content:"\F751"}.mdi-file-powerpoint:before{content:"\F227"}.mdi-file-powerpoint-box:before{content:"\F228"}.mdi-file-presentation-box:before{content:"\F229"}.mdi-file-restore:before{content:"\F670"}.mdi-file-send:before{content:"\F22A"}.mdi-file-tree:before{content:"\F645"}.mdi-file-video:before{content:"\F22B"}.mdi-file-word:before{content:"\F22C"}.mdi-file-word-box:before{content:"\F22D"}.mdi-file-xml:before{content:"\F22E"}.mdi-film:before{content:"\F22F"}.mdi-filmstrip:before{content:"\F230"}.mdi-filmstrip-off:before{content:"\F231"}.mdi-filter:before{content:"\F232"}.mdi-filter-outline:before{content:"\F233"}.mdi-filter-remove:before{content:"\F234"}.mdi-filter-remove-outline:before{content:"\F235"}.mdi-filter-variant:before{content:"\F236"}.mdi-find-replace:before{content:"\F6D3"}.mdi-fingerprint:before{content:"\F237"}.mdi-fire:before{content:"\F238"}.mdi-firefox:before{content:"\F239"}.mdi-fish:before{content:"\F23A"}.mdi-flag:before{content:"\F23B"}.mdi-flag-checkered:before{content:"\F23C"}.mdi-flag-outline:before{content:"\F23D"}.mdi-flag-outline-variant:before{content:"\F23E"}.mdi-flag-triangle:before{content:"\F23F"}.mdi-flag-variant:before{content:"\F240"}.mdi-flash:before{content:"\F241"}.mdi-flash-auto:before{content:"\F242"}.mdi-flash-off:before{content:"\F243"}.mdi-flash-outline:before{content:"\F6D4"}.mdi-flash-red-eye:before{content:"\F67A"}.mdi-flashlight:before{content:"\F244"}.mdi-flashlight-off:before{content:"\F245"}.mdi-flask:before{content:"\F093"}.mdi-flask-empty:before{content:"\F094"}.mdi-flask-empty-outline:before{content:"\F095"}.mdi-flask-outline:before{content:"\F096"}.mdi-flattr:before{content:"\F246"}.mdi-flip-to-back:before{content:"\F247"}.mdi-flip-to-front:before{content:"\F248"}.mdi-floppy:before{content:"\F249"}.mdi-flower:before{content:"\F24A"}.mdi-folder:before{content:"\F24B"}.mdi-folder-account:before{content:"\F24C"}.mdi-folder-download:before{content:"\F24D"}.mdi-folder-google-drive:before{content:"\F24E"}.mdi-folder-image:before{content:"\F24F"}.mdi-folder-lock:before{content:"\F250"}.mdi-folder-lock-open:before{content:"\F251"}.mdi-folder-move:before{content:"\F252"}.mdi-folder-multiple:before{content:"\F253"}.mdi-folder-multiple-image:before{content:"\F254"}.mdi-folder-multiple-outline:before{content:"\F255"}.mdi-folder-open:before{content:"\F76F"}.mdi-folder-outline:before{content:"\F256"}.mdi-folder-plus:before{content:"\F257"}.mdi-folder-remove:before{content:"\F258"}.mdi-folder-star:before{content:"\F69C"}.mdi-folder-upload:before{content:"\F259"}.mdi-font-awesome:before{content:"\F03A"}.mdi-food:before{content:"\F25A"}.mdi-food-apple:before{content:"\F25B"}.mdi-food-croissant:before{content:"\F7C7"}.mdi-food-fork-drink:before{content:"\F5F2"}.mdi-food-off:before{content:"\F5F3"}.mdi-food-variant:before{content:"\F25C"}.mdi-football:before{content:"\F25D"}.mdi-football-australian:before{content:"\F25E"}.mdi-football-helmet:before{content:"\F25F"}.mdi-forklift:before{content:"\F7C8"}.mdi-format-align-bottom:before{content:"\F752"}.mdi-format-align-center:before{content:"\F260"}.mdi-format-align-justify:before{content:"\F261"}.mdi-format-align-left:before{content:"\F262"}.mdi-format-align-middle:before{content:"\F753"}.mdi-format-align-right:before{content:"\F263"}.mdi-format-align-top:before{content:"\F754"}.mdi-format-annotation-plus:before{content:"\F646"}.mdi-format-bold:before{content:"\F264"}.mdi-format-clear:before{content:"\F265"}.mdi-format-color-fill:before{content:"\F266"}.mdi-format-color-text:before{content:"\F69D"}.mdi-format-float-center:before{content:"\F267"}.mdi-format-float-left:before{content:"\F268"}.mdi-format-float-none:before{content:"\F269"}.mdi-format-float-right:before{content:"\F26A"}.mdi-format-font:before{content:"\F6D5"}.mdi-format-header-1:before{content:"\F26B"}.mdi-format-header-2:before{content:"\F26C"}.mdi-format-header-3:before{content:"\F26D"}.mdi-format-header-4:before{content:"\F26E"}.mdi-format-header-5:before{content:"\F26F"}.mdi-format-header-6:before{content:"\F270"}.mdi-format-header-decrease:before{content:"\F271"}.mdi-format-header-equal:before{content:"\F272"}.mdi-format-header-increase:before{content:"\F273"}.mdi-format-header-pound:before{content:"\F274"}.mdi-format-horizontal-align-center:before{content:"\F61E"}.mdi-format-horizontal-align-left:before{content:"\F61F"}.mdi-format-horizontal-align-right:before{content:"\F620"}.mdi-format-indent-decrease:before{content:"\F275"}.mdi-format-indent-increase:before{content:"\F276"}.mdi-format-italic:before{content:"\F277"}.mdi-format-line-spacing:before{content:"\F278"}.mdi-format-line-style:before{content:"\F5C8"}.mdi-format-line-weight:before{content:"\F5C9"}.mdi-format-list-bulleted:before{content:"\F279"}.mdi-format-list-bulleted-type:before{content:"\F27A"}.mdi-format-list-checks:before{content:"\F755"}.mdi-format-list-numbers:before{content:"\F27B"}.mdi-format-page-break:before{content:"\F6D6"}.mdi-format-paint:before{content:"\F27C"}.mdi-format-paragraph:before{content:"\F27D"}.mdi-format-pilcrow:before{content:"\F6D7"}.mdi-format-quote-close:before{content:"\F27E"}.mdi-format-quote-open:before{content:"\F756"}.mdi-format-rotate-90:before{content:"\F6A9"}.mdi-format-section:before{content:"\F69E"}.mdi-format-size:before{content:"\F27F"}.mdi-format-strikethrough:before{content:"\F280"}.mdi-format-strikethrough-variant:before{content:"\F281"}.mdi-format-subscript:before{content:"\F282"}.mdi-format-superscript:before{content:"\F283"}.mdi-format-text:before{content:"\F284"}.mdi-format-textdirection-l-to-r:before{content:"\F285"}.mdi-format-textdirection-r-to-l:before{content:"\F286"}.mdi-format-title:before{content:"\F5F4"}.mdi-format-underline:before{content:"\F287"}.mdi-format-vertical-align-bottom:before{content:"\F621"}.mdi-format-vertical-align-center:before{content:"\F622"}.mdi-format-vertical-align-top:before{content:"\F623"}.mdi-format-wrap-inline:before{content:"\F288"}.mdi-format-wrap-square:before{content:"\F289"}.mdi-format-wrap-tight:before{content:"\F28A"}.mdi-format-wrap-top-bottom:before{content:"\F28B"}.mdi-forum:before{content:"\F28C"}.mdi-forward:before{content:"\F28D"}.mdi-foursquare:before{content:"\F28E"}.mdi-fridge:before{content:"\F28F"}.mdi-fridge-filled:before{content:"\F290"}.mdi-fridge-filled-bottom:before{content:"\F291"}.mdi-fridge-filled-top:before{content:"\F292"}.mdi-fuel:before{content:"\F7C9"}.mdi-fullscreen:before{content:"\F293"}.mdi-fullscreen-exit:before{content:"\F294"}.mdi-function:before{content:"\F295"}.mdi-gamepad:before{content:"\F296"}.mdi-gamepad-variant:before{content:"\F297"}.mdi-garage:before{content:"\F6D8"}.mdi-garage-open:before{content:"\F6D9"}.mdi-gas-cylinder:before{content:"\F647"}.mdi-gas-station:before{content:"\F298"}.mdi-gate:before{content:"\F299"}.mdi-gauge:before{content:"\F29A"}.mdi-gavel:before{content:"\F29B"}.mdi-gender-female:before{content:"\F29C"}.mdi-gender-male:before{content:"\F29D"}.mdi-gender-male-female:before{content:"\F29E"}.mdi-gender-transgender:before{content:"\F29F"}.mdi-gesture:before{content:"\F7CA"}.mdi-gesture-double-tap:before{content:"\F73B"}.mdi-gesture-swipe-down:before{content:"\F73C"}.mdi-gesture-swipe-left:before{content:"\F73D"}.mdi-gesture-swipe-right:before{content:"\F73E"}.mdi-gesture-swipe-up:before{content:"\F73F"}.mdi-gesture-tap:before{content:"\F740"}.mdi-gesture-two-double-tap:before{content:"\F741"}.mdi-gesture-two-tap:before{content:"\F742"}.mdi-ghost:before{content:"\F2A0"}.mdi-gift:before{content:"\F2A1"}.mdi-git:before{content:"\F2A2"}.mdi-github-box:before{content:"\F2A3"}.mdi-github-circle:before{content:"\F2A4"}.mdi-github-face:before{content:"\F6DA"}.mdi-glass-flute:before{content:"\F2A5"}.mdi-glass-mug:before{content:"\F2A6"}.mdi-glass-stange:before{content:"\F2A7"}.mdi-glass-tulip:before{content:"\F2A8"}.mdi-glassdoor:before{content:"\F2A9"}.mdi-glasses:before{content:"\F2AA"}.mdi-gmail:before{content:"\F2AB"}.mdi-gnome:before{content:"\F2AC"}.mdi-gondola:before{content:"\F685"}.mdi-google:before{content:"\F2AD"}.mdi-google-analytics:before{content:"\F7CB"}.mdi-google-assistant:before{content:"\F7CC"}.mdi-google-cardboard:before{content:"\F2AE"}.mdi-google-chrome:before{content:"\F2AF"}.mdi-google-circles:before{content:"\F2B0"}.mdi-google-circles-communities:before{content:"\F2B1"}.mdi-google-circles-extended:before{content:"\F2B2"}.mdi-google-circles-group:before{content:"\F2B3"}.mdi-google-controller:before{content:"\F2B4"}.mdi-google-controller-off:before{content:"\F2B5"}.mdi-google-drive:before{content:"\F2B6"}.mdi-google-earth:before{content:"\F2B7"}.mdi-google-glass:before{content:"\F2B8"}.mdi-google-keep:before{content:"\F6DB"}.mdi-google-maps:before{content:"\F5F5"}.mdi-google-nearby:before{content:"\F2B9"}.mdi-google-pages:before{content:"\F2BA"}.mdi-google-photos:before{content:"\F6DC"}.mdi-google-physical-web:before{content:"\F2BB"}.mdi-google-play:before{content:"\F2BC"}.mdi-google-plus:before{content:"\F2BD"}.mdi-google-plus-box:before{content:"\F2BE"}.mdi-google-translate:before{content:"\F2BF"}.mdi-google-wallet:before{content:"\F2C0"}.mdi-gradient:before{content:"\F69F"}.mdi-grease-pencil:before{content:"\F648"}.mdi-grid:before{content:"\F2C1"}.mdi-grid-large:before{content:"\F757"}.mdi-grid-off:before{content:"\F2C2"}.mdi-group:before{content:"\F2C3"}.mdi-guitar-acoustic:before{content:"\F770"}.mdi-guitar-electric:before{content:"\F2C4"}.mdi-guitar-pick:before{content:"\F2C5"}.mdi-guitar-pick-outline:before{content:"\F2C6"}.mdi-hackernews:before{content:"\F624"}.mdi-hamburger:before{content:"\F684"}.mdi-hand-pointing-right:before{content:"\F2C7"}.mdi-hanger:before{content:"\F2C8"}.mdi-hangouts:before{content:"\F2C9"}.mdi-harddisk:before{content:"\F2CA"}.mdi-headphones:before{content:"\F2CB"}.mdi-headphones-box:before{content:"\F2CC"}.mdi-headphones-off:before{content:"\F7CD"}.mdi-headphones-settings:before{content:"\F2CD"}.mdi-headset:before{content:"\F2CE"}.mdi-headset-dock:before{content:"\F2CF"}.mdi-headset-off:before{content:"\F2D0"}.mdi-heart:before{content:"\F2D1"}.mdi-heart-box:before{content:"\F2D2"}.mdi-heart-box-outline:before{content:"\F2D3"}.mdi-heart-broken:before{content:"\F2D4"}.mdi-heart-half:before{content:"\F6DE"}.mdi-heart-half-full:before{content:"\F6DD"}.mdi-heart-half-outline:before{content:"\F6DF"}.mdi-heart-off:before{content:"\F758"}.mdi-heart-outline:before{content:"\F2D5"}.mdi-heart-pulse:before{content:"\F5F6"}.mdi-help:before{content:"\F2D6"}.mdi-help-box:before{content:"\F78A"}.mdi-help-circle:before{content:"\F2D7"}.mdi-help-circle-outline:before{content:"\F625"}.mdi-help-network:before{content:"\F6F4"}.mdi-hexagon:before{content:"\F2D8"}.mdi-hexagon-multiple:before{content:"\F6E0"}.mdi-hexagon-outline:before{content:"\F2D9"}.mdi-high-definition:before{content:"\F7CE"}.mdi-highway:before{content:"\F5F7"}.mdi-history:before{content:"\F2DA"}.mdi-hololens:before{content:"\F2DB"}.mdi-home:before{content:"\F2DC"}.mdi-home-assistant:before{content:"\F7CF"}.mdi-home-automation:before{content:"\F7D0"}.mdi-home-circle:before{content:"\F7D1"}.mdi-home-map-marker:before{content:"\F5F8"}.mdi-home-modern:before{content:"\F2DD"}.mdi-home-outline:before{content:"\F6A0"}.mdi-home-variant:before{content:"\F2DE"}.mdi-hook:before{content:"\F6E1"}.mdi-hook-off:before{content:"\F6E2"}.mdi-hops:before{content:"\F2DF"}.mdi-hospital:before{content:"\F2E0"}.mdi-hospital-building:before{content:"\F2E1"}.mdi-hospital-marker:before{content:"\F2E2"}.mdi-hotel:before{content:"\F2E3"}.mdi-houzz:before{content:"\F2E4"}.mdi-houzz-box:before{content:"\F2E5"}.mdi-human:before{content:"\F2E6"}.mdi-human-child:before{content:"\F2E7"}.mdi-human-female:before{content:"\F649"}.mdi-human-greeting:before{content:"\F64A"}.mdi-human-handsdown:before{content:"\F64B"}.mdi-human-handsup:before{content:"\F64C"}.mdi-human-male:before{content:"\F64D"}.mdi-human-male-female:before{content:"\F2E8"}.mdi-human-pregnant:before{content:"\F5CF"}.mdi-humble-bundle:before{content:"\F743"}.mdi-image:before{content:"\F2E9"}.mdi-image-album:before{content:"\F2EA"}.mdi-image-area:before{content:"\F2EB"}.mdi-image-area-close:before{content:"\F2EC"}.mdi-image-broken:before{content:"\F2ED"}.mdi-image-broken-variant:before{content:"\F2EE"}.mdi-image-filter:before{content:"\F2EF"}.mdi-image-filter-black-white:before{content:"\F2F0"}.mdi-image-filter-center-focus:before{content:"\F2F1"}.mdi-image-filter-center-focus-weak:before{content:"\F2F2"}.mdi-image-filter-drama:before{content:"\F2F3"}.mdi-image-filter-frames:before{content:"\F2F4"}.mdi-image-filter-hdr:before{content:"\F2F5"}.mdi-image-filter-none:before{content:"\F2F6"}.mdi-image-filter-tilt-shift:before{content:"\F2F7"}.mdi-image-filter-vintage:before{content:"\F2F8"}.mdi-image-multiple:before{content:"\F2F9"}.mdi-import:before{content:"\F2FA"}.mdi-inbox:before{content:"\F686"}.mdi-inbox-arrow-down:before{content:"\F2FB"}.mdi-inbox-arrow-up:before{content:"\F3D1"}.mdi-incognito:before{content:"\F5F9"}.mdi-infinity:before{content:"\F6E3"}.mdi-information:before{content:"\F2FC"}.mdi-information-outline:before{content:"\F2FD"}.mdi-information-variant:before{content:"\F64E"}.mdi-instagram:before{content:"\F2FE"}.mdi-instapaper:before{content:"\F2FF"}.mdi-internet-explorer:before{content:"\F300"}.mdi-invert-colors:before{content:"\F301"}.mdi-itunes:before{content:"\F676"}.mdi-jeepney:before{content:"\F302"}.mdi-jira:before{content:"\F303"}.mdi-jsfiddle:before{content:"\F304"}.mdi-json:before{content:"\F626"}.mdi-keg:before{content:"\F305"}.mdi-kettle:before{content:"\F5FA"}.mdi-key:before{content:"\F306"}.mdi-key-change:before{content:"\F307"}.mdi-key-minus:before{content:"\F308"}.mdi-key-plus:before{content:"\F309"}.mdi-key-remove:before{content:"\F30A"}.mdi-key-variant:before{content:"\F30B"}.mdi-keyboard:before{content:"\F30C"}.mdi-keyboard-backspace:before{content:"\F30D"}.mdi-keyboard-caps:before{content:"\F30E"}.mdi-keyboard-close:before{content:"\F30F"}.mdi-keyboard-off:before{content:"\F310"}.mdi-keyboard-return:before{content:"\F311"}.mdi-keyboard-tab:before{content:"\F312"}.mdi-keyboard-variant:before{content:"\F313"}.mdi-kickstarter:before{content:"\F744"}.mdi-kodi:before{content:"\F314"}.mdi-label:before{content:"\F315"}.mdi-label-outline:before{content:"\F316"}.mdi-lambda:before{content:"\F627"}.mdi-lamp:before{content:"\F6B4"}.mdi-lan:before{content:"\F317"}.mdi-lan-connect:before{content:"\F318"}.mdi-lan-disconnect:before{content:"\F319"}.mdi-lan-pending:before{content:"\F31A"}.mdi-language-c:before{content:"\F671"}.mdi-language-cpp:before{content:"\F672"}.mdi-language-csharp:before{content:"\F31B"}.mdi-language-css3:before{content:"\F31C"}.mdi-language-go:before{content:"\F7D2"}.mdi-language-html5:before{content:"\F31D"}.mdi-language-javascript:before{content:"\F31E"}.mdi-language-php:before{content:"\F31F"}.mdi-language-python:before{content:"\F320"}.mdi-language-python-text:before{content:"\F321"}.mdi-language-r:before{content:"\F7D3"}.mdi-language-swift:before{content:"\F6E4"}.mdi-language-typescript:before{content:"\F6E5"}.mdi-laptop:before{content:"\F322"}.mdi-laptop-chromebook:before{content:"\F323"}.mdi-laptop-mac:before{content:"\F324"}.mdi-laptop-off:before{content:"\F6E6"}.mdi-laptop-windows:before{content:"\F325"}.mdi-lastfm:before{content:"\F326"}.mdi-launch:before{content:"\F327"}.mdi-lava-lamp:before{content:"\F7D4"}.mdi-layers:before{content:"\F328"}.mdi-layers-off:before{content:"\F329"}.mdi-lead-pencil:before{content:"\F64F"}.mdi-leaf:before{content:"\F32A"}.mdi-led-off:before{content:"\F32B"}.mdi-led-on:before{content:"\F32C"}.mdi-led-outline:before{content:"\F32D"}.mdi-led-strip:before{content:"\F7D5"}.mdi-led-variant-off:before{content:"\F32E"}.mdi-led-variant-on:before{content:"\F32F"}.mdi-led-variant-outline:before{content:"\F330"}.mdi-library:before{content:"\F331"}.mdi-library-books:before{content:"\F332"}.mdi-library-music:before{content:"\F333"}.mdi-library-plus:before{content:"\F334"}.mdi-lightbulb:before{content:"\F335"}.mdi-lightbulb-on:before{content:"\F6E7"}.mdi-lightbulb-on-outline:before{content:"\F6E8"}.mdi-lightbulb-outline:before{content:"\F336"}.mdi-link:before{content:"\F337"}.mdi-link-off:before{content:"\F338"}.mdi-link-variant:before{content:"\F339"}.mdi-link-variant-off:before{content:"\F33A"}.mdi-linkedin:before{content:"\F33B"}.mdi-linkedin-box:before{content:"\F33C"}.mdi-linux:before{content:"\F33D"}.mdi-loading:before{content:"\F771"}.mdi-lock:before{content:"\F33E"}.mdi-lock-open:before{content:"\F33F"}.mdi-lock-open-outline:before{content:"\F340"}.mdi-lock-outline:before{content:"\F341"}.mdi-lock-pattern:before{content:"\F6E9"}.mdi-lock-plus:before{content:"\F5FB"}.mdi-lock-reset:before{content:"\F772"}.mdi-locker:before{content:"\F7D6"}.mdi-locker-multiple:before{content:"\F7D7"}.mdi-login:before{content:"\F342"}.mdi-login-variant:before{content:"\F5FC"}.mdi-logout:before{content:"\F343"}.mdi-logout-variant:before{content:"\F5FD"}.mdi-looks:before{content:"\F344"}.mdi-loop:before{content:"\F6EA"}.mdi-loupe:before{content:"\F345"}.mdi-lumx:before{content:"\F346"}.mdi-magnet:before{content:"\F347"}.mdi-magnet-on:before{content:"\F348"}.mdi-magnify:before{content:"\F349"}.mdi-magnify-minus:before{content:"\F34A"}.mdi-magnify-minus-outline:before{content:"\F6EB"}.mdi-magnify-plus:before{content:"\F34B"}.mdi-magnify-plus-outline:before{content:"\F6EC"}.mdi-mail-ru:before{content:"\F34C"}.mdi-mailbox:before{content:"\F6ED"}.mdi-map:before{content:"\F34D"}.mdi-map-marker:before{content:"\F34E"}.mdi-map-marker-circle:before{content:"\F34F"}.mdi-map-marker-minus:before{content:"\F650"}.mdi-map-marker-multiple:before{content:"\F350"}.mdi-map-marker-off:before{content:"\F351"}.mdi-map-marker-outline:before{content:"\F7D8"}.mdi-map-marker-plus:before{content:"\F651"}.mdi-map-marker-radius:before{content:"\F352"}.mdi-margin:before{content:"\F353"}.mdi-markdown:before{content:"\F354"}.mdi-marker:before{content:"\F652"}.mdi-marker-check:before{content:"\F355"}.mdi-martini:before{content:"\F356"}.mdi-material-ui:before{content:"\F357"}.mdi-math-compass:before{content:"\F358"}.mdi-matrix:before{content:"\F628"}.mdi-maxcdn:before{content:"\F359"}.mdi-medical-bag:before{content:"\F6EE"}.mdi-medium:before{content:"\F35A"}.mdi-memory:before{content:"\F35B"}.mdi-menu:before{content:"\F35C"}.mdi-menu-down:before{content:"\F35D"}.mdi-menu-down-outline:before{content:"\F6B5"}.mdi-menu-left:before{content:"\F35E"}.mdi-menu-right:before{content:"\F35F"}.mdi-menu-up:before{content:"\F360"}.mdi-menu-up-outline:before{content:"\F6B6"}.mdi-message:before{content:"\F361"}.mdi-message-alert:before{content:"\F362"}.mdi-message-bulleted:before{content:"\F6A1"}.mdi-message-bulleted-off:before{content:"\F6A2"}.mdi-message-draw:before{content:"\F363"}.mdi-message-image:before{content:"\F364"}.mdi-message-outline:before{content:"\F365"}.mdi-message-plus:before{content:"\F653"}.mdi-message-processing:before{content:"\F366"}.mdi-message-reply:before{content:"\F367"}.mdi-message-reply-text:before{content:"\F368"}.mdi-message-settings:before{content:"\F6EF"}.mdi-message-settings-variant:before{content:"\F6F0"}.mdi-message-text:before{content:"\F369"}.mdi-message-text-outline:before{content:"\F36A"}.mdi-message-video:before{content:"\F36B"}.mdi-meteor:before{content:"\F629"}.mdi-metronome:before{content:"\F7D9"}.mdi-metronome-tick:before{content:"\F7DA"}.mdi-micro-sd:before{content:"\F7DB"}.mdi-microphone:before{content:"\F36C"}.mdi-microphone-off:before{content:"\F36D"}.mdi-microphone-outline:before{content:"\F36E"}.mdi-microphone-settings:before{content:"\F36F"}.mdi-microphone-variant:before{content:"\F370"}.mdi-microphone-variant-off:before{content:"\F371"}.mdi-microscope:before{content:"\F654"}.mdi-microsoft:before{content:"\F372"}.mdi-minecraft:before{content:"\F373"}.mdi-minus:before{content:"\F374"}.mdi-minus-box:before{content:"\F375"}.mdi-minus-box-outline:before{content:"\F6F1"}.mdi-minus-circle:before{content:"\F376"}.mdi-minus-circle-outline:before{content:"\F377"}.mdi-minus-network:before{content:"\F378"}.mdi-mixcloud:before{content:"\F62A"}.mdi-mixer:before{content:"\F7DC"}.mdi-monitor:before{content:"\F379"}.mdi-monitor-multiple:before{content:"\F37A"}.mdi-more:before{content:"\F37B"}.mdi-motorbike:before{content:"\F37C"}.mdi-mouse:before{content:"\F37D"}.mdi-mouse-off:before{content:"\F37E"}.mdi-mouse-variant:before{content:"\F37F"}.mdi-mouse-variant-off:before{content:"\F380"}.mdi-move-resize:before{content:"\F655"}.mdi-move-resize-variant:before{content:"\F656"}.mdi-movie:before{content:"\F381"}.mdi-movie-roll:before{content:"\F7DD"}.mdi-multiplication:before{content:"\F382"}.mdi-multiplication-box:before{content:"\F383"}.mdi-mushroom:before{content:"\F7DE"}.mdi-mushroom-outline:before{content:"\F7DF"}.mdi-music:before{content:"\F759"}.mdi-music-box:before{content:"\F384"}.mdi-music-box-outline:before{content:"\F385"}.mdi-music-circle:before{content:"\F386"}.mdi-music-note:before{content:"\F387"}.mdi-music-note-bluetooth:before{content:"\F5FE"}.mdi-music-note-bluetooth-off:before{content:"\F5FF"}.mdi-music-note-eighth:before{content:"\F388"}.mdi-music-note-half:before{content:"\F389"}.mdi-music-note-off:before{content:"\F38A"}.mdi-music-note-quarter:before{content:"\F38B"}.mdi-music-note-sixteenth:before{content:"\F38C"}.mdi-music-note-whole:before{content:"\F38D"}.mdi-music-off:before{content:"\F75A"}.mdi-nature:before{content:"\F38E"}.mdi-nature-people:before{content:"\F38F"}.mdi-navigation:before{content:"\F390"}.mdi-near-me:before{content:"\F5CD"}.mdi-needle:before{content:"\F391"}.mdi-nest-protect:before{content:"\F392"}.mdi-nest-thermostat:before{content:"\F393"}.mdi-netflix:before{content:"\F745"}.mdi-network:before{content:"\F6F2"}.mdi-new-box:before{content:"\F394"}.mdi-newspaper:before{content:"\F395"}.mdi-nfc:before{content:"\F396"}.mdi-nfc-tap:before{content:"\F397"}.mdi-nfc-variant:before{content:"\F398"}.mdi-ninja:before{content:"\F773"}.mdi-nintendo-switch:before{content:"\F7E0"}.mdi-nodejs:before{content:"\F399"}.mdi-note:before{content:"\F39A"}.mdi-note-multiple:before{content:"\F6B7"}.mdi-note-multiple-outline:before{content:"\F6B8"}.mdi-note-outline:before{content:"\F39B"}.mdi-note-plus:before{content:"\F39C"}.mdi-note-plus-outline:before{content:"\F39D"}.mdi-note-text:before{content:"\F39E"}.mdi-notification-clear-all:before{content:"\F39F"}.mdi-npm:before{content:"\F6F6"}.mdi-nuke:before{content:"\F6A3"}.mdi-null:before{content:"\F7E1"}.mdi-numeric:before{content:"\F3A0"}.mdi-numeric-0-box:before{content:"\F3A1"}.mdi-numeric-0-box-multiple-outline:before{content:"\F3A2"}.mdi-numeric-0-box-outline:before{content:"\F3A3"}.mdi-numeric-1-box:before{content:"\F3A4"}.mdi-numeric-1-box-multiple-outline:before{content:"\F3A5"}.mdi-numeric-1-box-outline:before{content:"\F3A6"}.mdi-numeric-2-box:before{content:"\F3A7"}.mdi-numeric-2-box-multiple-outline:before{content:"\F3A8"}.mdi-numeric-2-box-outline:before{content:"\F3A9"}.mdi-numeric-3-box:before{content:"\F3AA"}.mdi-numeric-3-box-multiple-outline:before{content:"\F3AB"}.mdi-numeric-3-box-outline:before{content:"\F3AC"}.mdi-numeric-4-box:before{content:"\F3AD"}.mdi-numeric-4-box-multiple-outline:before{content:"\F3AE"}.mdi-numeric-4-box-outline:before{content:"\F3AF"}.mdi-numeric-5-box:before{content:"\F3B0"}.mdi-numeric-5-box-multiple-outline:before{content:"\F3B1"}.mdi-numeric-5-box-outline:before{content:"\F3B2"}.mdi-numeric-6-box:before{content:"\F3B3"}.mdi-numeric-6-box-multiple-outline:before{content:"\F3B4"}.mdi-numeric-6-box-outline:before{content:"\F3B5"}.mdi-numeric-7-box:before{content:"\F3B6"}.mdi-numeric-7-box-multiple-outline:before{content:"\F3B7"}.mdi-numeric-7-box-outline:before{content:"\F3B8"}.mdi-numeric-8-box:before{content:"\F3B9"}.mdi-numeric-8-box-multiple-outline:before{content:"\F3BA"}.mdi-numeric-8-box-outline:before{content:"\F3BB"}.mdi-numeric-9-box:before{content:"\F3BC"}.mdi-numeric-9-box-multiple-outline:before{content:"\F3BD"}.mdi-numeric-9-box-outline:before{content:"\F3BE"}.mdi-numeric-9-plus-box:before{content:"\F3BF"}.mdi-numeric-9-plus-box-multiple-outline:before{content:"\F3C0"}.mdi-numeric-9-plus-box-outline:before{content:"\F3C1"}.mdi-nut:before{content:"\F6F7"}.mdi-nutrition:before{content:"\F3C2"}.mdi-oar:before{content:"\F67B"}.mdi-octagon:before{content:"\F3C3"}.mdi-octagon-outline:before{content:"\F3C4"}.mdi-octagram:before{content:"\F6F8"}.mdi-octagram-outline:before{content:"\F774"}.mdi-odnoklassniki:before{content:"\F3C5"}.mdi-office:before{content:"\F3C6"}.mdi-oil:before{content:"\F3C7"}.mdi-oil-temperature:before{content:"\F3C8"}.mdi-omega:before{content:"\F3C9"}.mdi-onedrive:before{content:"\F3CA"}.mdi-onenote:before{content:"\F746"}.mdi-opacity:before{content:"\F5CC"}.mdi-open-in-app:before{content:"\F3CB"}.mdi-open-in-new:before{content:"\F3CC"}.mdi-openid:before{content:"\F3CD"}.mdi-opera:before{content:"\F3CE"}.mdi-orbit:before{content:"\F018"}.mdi-ornament:before{content:"\F3CF"}.mdi-ornament-variant:before{content:"\F3D0"}.mdi-owl:before{content:"\F3D2"}.mdi-package:before{content:"\F3D3"}.mdi-package-down:before{content:"\F3D4"}.mdi-package-up:before{content:"\F3D5"}.mdi-package-variant:before{content:"\F3D6"}.mdi-package-variant-closed:before{content:"\F3D7"}.mdi-page-first:before{content:"\F600"}.mdi-page-last:before{content:"\F601"}.mdi-page-layout-body:before{content:"\F6F9"}.mdi-page-layout-footer:before{content:"\F6FA"}.mdi-page-layout-header:before{content:"\F6FB"}.mdi-page-layout-sidebar-left:before{content:"\F6FC"}.mdi-page-layout-sidebar-right:before{content:"\F6FD"}.mdi-palette:before{content:"\F3D8"}.mdi-palette-advanced:before{content:"\F3D9"}.mdi-panda:before{content:"\F3DA"}.mdi-pandora:before{content:"\F3DB"}.mdi-panorama:before{content:"\F3DC"}.mdi-panorama-fisheye:before{content:"\F3DD"}.mdi-panorama-horizontal:before{content:"\F3DE"}.mdi-panorama-vertical:before{content:"\F3DF"}.mdi-panorama-wide-angle:before{content:"\F3E0"}.mdi-paper-cut-vertical:before{content:"\F3E1"}.mdi-paperclip:before{content:"\F3E2"}.mdi-parking:before{content:"\F3E3"}.mdi-passport:before{content:"\F7E2"}.mdi-pause:before{content:"\F3E4"}.mdi-pause-circle:before{content:"\F3E5"}.mdi-pause-circle-outline:before{content:"\F3E6"}.mdi-pause-octagon:before{content:"\F3E7"}.mdi-pause-octagon-outline:before{content:"\F3E8"}.mdi-paw:before{content:"\F3E9"}.mdi-paw-off:before{content:"\F657"}.mdi-pen:before{content:"\F3EA"}.mdi-pencil:before{content:"\F3EB"}.mdi-pencil-box:before{content:"\F3EC"}.mdi-pencil-box-outline:before{content:"\F3ED"}.mdi-pencil-circle:before{content:"\F6FE"}.mdi-pencil-circle-outline:before{content:"\F775"}.mdi-pencil-lock:before{content:"\F3EE"}.mdi-pencil-off:before{content:"\F3EF"}.mdi-pentagon:before{content:"\F6FF"}.mdi-pentagon-outline:before{content:"\F700"}.mdi-percent:before{content:"\F3F0"}.mdi-periodic-table-co2:before{content:"\F7E3"}.mdi-periscope:before{content:"\F747"}.mdi-pharmacy:before{content:"\F3F1"}.mdi-phone:before{content:"\F3F2"}.mdi-phone-bluetooth:before{content:"\F3F3"}.mdi-phone-classic:before{content:"\F602"}.mdi-phone-forward:before{content:"\F3F4"}.mdi-phone-hangup:before{content:"\F3F5"}.mdi-phone-in-talk:before{content:"\F3F6"}.mdi-phone-incoming:before{content:"\F3F7"}.mdi-phone-locked:before{content:"\F3F8"}.mdi-phone-log:before{content:"\F3F9"}.mdi-phone-minus:before{content:"\F658"}.mdi-phone-missed:before{content:"\F3FA"}.mdi-phone-outgoing:before{content:"\F3FB"}.mdi-phone-paused:before{content:"\F3FC"}.mdi-phone-plus:before{content:"\F659"}.mdi-phone-settings:before{content:"\F3FD"}.mdi-phone-voip:before{content:"\F3FE"}.mdi-pi:before{content:"\F3FF"}.mdi-pi-box:before{content:"\F400"}.mdi-piano:before{content:"\F67C"}.mdi-pig:before{content:"\F401"}.mdi-pill:before{content:"\F402"}.mdi-pillar:before{content:"\F701"}.mdi-pin:before{content:"\F403"}.mdi-pin-off:before{content:"\F404"}.mdi-pine-tree:before{content:"\F405"}.mdi-pine-tree-box:before{content:"\F406"}.mdi-pinterest:before{content:"\F407"}.mdi-pinterest-box:before{content:"\F408"}.mdi-pipe:before{content:"\F7E4"}.mdi-pipe-disconnected:before{content:"\F7E5"}.mdi-pistol:before{content:"\F702"}.mdi-pizza:before{content:"\F409"}.mdi-plane-shield:before{content:"\F6BA"}.mdi-play:before{content:"\F40A"}.mdi-play-box-outline:before{content:"\F40B"}.mdi-play-circle:before{content:"\F40C"}.mdi-play-circle-outline:before{content:"\F40D"}.mdi-play-pause:before{content:"\F40E"}.mdi-play-protected-content:before{content:"\F40F"}.mdi-playlist-check:before{content:"\F5C7"}.mdi-playlist-minus:before{content:"\F410"}.mdi-playlist-play:before{content:"\F411"}.mdi-playlist-plus:before{content:"\F412"}.mdi-playlist-remove:before{content:"\F413"}.mdi-playstation:before{content:"\F414"}.mdi-plex:before{content:"\F6B9"}.mdi-plus:before{content:"\F415"}.mdi-plus-box:before{content:"\F416"}.mdi-plus-box-outline:before{content:"\F703"}.mdi-plus-circle:before{content:"\F417"}.mdi-plus-circle-multiple-outline:before{content:"\F418"}.mdi-plus-circle-outline:before{content:"\F419"}.mdi-plus-network:before{content:"\F41A"}.mdi-plus-one:before{content:"\F41B"}.mdi-plus-outline:before{content:"\F704"}.mdi-pocket:before{content:"\F41C"}.mdi-pokeball:before{content:"\F41D"}.mdi-polaroid:before{content:"\F41E"}.mdi-poll:before{content:"\F41F"}.mdi-poll-box:before{content:"\F420"}.mdi-polymer:before{content:"\F421"}.mdi-pool:before{content:"\F606"}.mdi-popcorn:before{content:"\F422"}.mdi-pot:before{content:"\F65A"}.mdi-pot-mix:before{content:"\F65B"}.mdi-pound:before{content:"\F423"}.mdi-pound-box:before{content:"\F424"}.mdi-power:before{content:"\F425"}.mdi-power-plug:before{content:"\F6A4"}.mdi-power-plug-off:before{content:"\F6A5"}.mdi-power-settings:before{content:"\F426"}.mdi-power-socket:before{content:"\F427"}.mdi-power-socket-eu:before{content:"\F7E6"}.mdi-power-socket-uk:before{content:"\F7E7"}.mdi-power-socket-us:before{content:"\F7E8"}.mdi-prescription:before{content:"\F705"}.mdi-presentation:before{content:"\F428"}.mdi-presentation-play:before{content:"\F429"}.mdi-printer:before{content:"\F42A"}.mdi-printer-3d:before{content:"\F42B"}.mdi-printer-alert:before{content:"\F42C"}.mdi-printer-settings:before{content:"\F706"}.mdi-priority-high:before{content:"\F603"}.mdi-priority-low:before{content:"\F604"}.mdi-professional-hexagon:before{content:"\F42D"}.mdi-projector:before{content:"\F42E"}.mdi-projector-screen:before{content:"\F42F"}.mdi-publish:before{content:"\F6A6"}.mdi-pulse:before{content:"\F430"}.mdi-puzzle:before{content:"\F431"}.mdi-qqchat:before{content:"\F605"}.mdi-qrcode:before{content:"\F432"}.mdi-qrcode-scan:before{content:"\F433"}.mdi-quadcopter:before{content:"\F434"}.mdi-quality-high:before{content:"\F435"}.mdi-quicktime:before{content:"\F436"}.mdi-radar:before{content:"\F437"}.mdi-radiator:before{content:"\F438"}.mdi-radio:before{content:"\F439"}.mdi-radio-handheld:before{content:"\F43A"}.mdi-radio-tower:before{content:"\F43B"}.mdi-radioactive:before{content:"\F43C"}.mdi-radiobox-blank:before{content:"\F43D"}.mdi-radiobox-marked:before{content:"\F43E"}.mdi-raspberrypi:before{content:"\F43F"}.mdi-ray-end:before{content:"\F440"}.mdi-ray-end-arrow:before{content:"\F441"}.mdi-ray-start:before{content:"\F442"}.mdi-ray-start-arrow:before{content:"\F443"}.mdi-ray-start-end:before{content:"\F444"}.mdi-ray-vertex:before{content:"\F445"}.mdi-rdio:before{content:"\F446"}.mdi-react:before{content:"\F707"}.mdi-read:before{content:"\F447"}.mdi-readability:before{content:"\F448"}.mdi-receipt:before{content:"\F449"}.mdi-record:before{content:"\F44A"}.mdi-record-rec:before{content:"\F44B"}.mdi-recycle:before{content:"\F44C"}.mdi-reddit:before{content:"\F44D"}.mdi-redo:before{content:"\F44E"}.mdi-redo-variant:before{content:"\F44F"}.mdi-refresh:before{content:"\F450"}.mdi-regex:before{content:"\F451"}.mdi-relative-scale:before{content:"\F452"}.mdi-reload:before{content:"\F453"}.mdi-remote:before{content:"\F454"}.mdi-rename-box:before{content:"\F455"}.mdi-reorder-horizontal:before{content:"\F687"}.mdi-reorder-vertical:before{content:"\F688"}.mdi-repeat:before{content:"\F456"}.mdi-repeat-off:before{content:"\F457"}.mdi-repeat-once:before{content:"\F458"}.mdi-replay:before{content:"\F459"}.mdi-reply:before{content:"\F45A"}.mdi-reply-all:before{content:"\F45B"}.mdi-reproduction:before{content:"\F45C"}.mdi-resize-bottom-right:before{content:"\F45D"}.mdi-responsive:before{content:"\F45E"}.mdi-restart:before{content:"\F708"}.mdi-restore:before{content:"\F6A7"}.mdi-rewind:before{content:"\F45F"}.mdi-rewind-outline:before{content:"\F709"}.mdi-rhombus:before{content:"\F70A"}.mdi-rhombus-outline:before{content:"\F70B"}.mdi-ribbon:before{content:"\F460"}.mdi-rice:before{content:"\F7E9"}.mdi-ring:before{content:"\F7EA"}.mdi-road:before{content:"\F461"}.mdi-road-variant:before{content:"\F462"}.mdi-robot:before{content:"\F6A8"}.mdi-rocket:before{content:"\F463"}.mdi-roomba:before{content:"\F70C"}.mdi-rotate-3d:before{content:"\F464"}.mdi-rotate-left:before{content:"\F465"}.mdi-rotate-left-variant:before{content:"\F466"}.mdi-rotate-right:before{content:"\F467"}.mdi-rotate-right-variant:before{content:"\F468"}.mdi-rounded-corner:before{content:"\F607"}.mdi-router-wireless:before{content:"\F469"}.mdi-routes:before{content:"\F46A"}.mdi-rowing:before{content:"\F608"}.mdi-rss:before{content:"\F46B"}.mdi-rss-box:before{content:"\F46C"}.mdi-ruler:before{content:"\F46D"}.mdi-run:before{content:"\F70D"}.mdi-run-fast:before{content:"\F46E"}.mdi-sale:before{content:"\F46F"}.mdi-sass:before{content:"\F7EB"}.mdi-satellite:before{content:"\F470"}.mdi-satellite-variant:before{content:"\F471"}.mdi-saxophone:before{content:"\F609"}.mdi-scale:before{content:"\F472"}.mdi-scale-balance:before{content:"\F5D1"}.mdi-scale-bathroom:before{content:"\F473"}.mdi-scanner:before{content:"\F6AA"}.mdi-school:before{content:"\F474"}.mdi-screen-rotation:before{content:"\F475"}.mdi-screen-rotation-lock:before{content:"\F476"}.mdi-screwdriver:before{content:"\F477"}.mdi-script:before{content:"\F478"}.mdi-sd:before{content:"\F479"}.mdi-seal:before{content:"\F47A"}.mdi-search-web:before{content:"\F70E"}.mdi-seat-flat:before{content:"\F47B"}.mdi-seat-flat-angled:before{content:"\F47C"}.mdi-seat-individual-suite:before{content:"\F47D"}.mdi-seat-legroom-extra:before{content:"\F47E"}.mdi-seat-legroom-normal:before{content:"\F47F"}.mdi-seat-legroom-reduced:before{content:"\F480"}.mdi-seat-recline-extra:before{content:"\F481"}.mdi-seat-recline-normal:before{content:"\F482"}.mdi-security:before{content:"\F483"}.mdi-security-home:before{content:"\F689"}.mdi-security-network:before{content:"\F484"}.mdi-select:before{content:"\F485"}.mdi-select-all:before{content:"\F486"}.mdi-select-inverse:before{content:"\F487"}.mdi-select-off:before{content:"\F488"}.mdi-selection:before{content:"\F489"}.mdi-selection-off:before{content:"\F776"}.mdi-send:before{content:"\F48A"}.mdi-send-secure:before{content:"\F7EC"}.mdi-serial-port:before{content:"\F65C"}.mdi-server:before{content:"\F48B"}.mdi-server-minus:before{content:"\F48C"}.mdi-server-network:before{content:"\F48D"}.mdi-server-network-off:before{content:"\F48E"}.mdi-server-off:before{content:"\F48F"}.mdi-server-plus:before{content:"\F490"}.mdi-server-remove:before{content:"\F491"}.mdi-server-security:before{content:"\F492"}.mdi-set-all:before{content:"\F777"}.mdi-set-center:before{content:"\F778"}.mdi-set-center-right:before{content:"\F779"}.mdi-set-left:before{content:"\F77A"}.mdi-set-left-center:before{content:"\F77B"}.mdi-set-left-right:before{content:"\F77C"}.mdi-set-none:before{content:"\F77D"}.mdi-set-right:before{content:"\F77E"}.mdi-settings:before{content:"\F493"}.mdi-settings-box:before{content:"\F494"}.mdi-shape-circle-plus:before{content:"\F65D"}.mdi-shape-plus:before{content:"\F495"}.mdi-shape-polygon-plus:before{content:"\F65E"}.mdi-shape-rectangle-plus:before{content:"\F65F"}.mdi-shape-square-plus:before{content:"\F660"}.mdi-share:before{content:"\F496"}.mdi-share-variant:before{content:"\F497"}.mdi-shield:before{content:"\F498"}.mdi-shield-half-full:before{content:"\F77F"}.mdi-shield-outline:before{content:"\F499"}.mdi-shopping:before{content:"\F49A"}.mdi-shopping-music:before{content:"\F49B"}.mdi-shovel:before{content:"\F70F"}.mdi-shovel-off:before{content:"\F710"}.mdi-shredder:before{content:"\F49C"}.mdi-shuffle:before{content:"\F49D"}.mdi-shuffle-disabled:before{content:"\F49E"}.mdi-shuffle-variant:before{content:"\F49F"}.mdi-sigma:before{content:"\F4A0"}.mdi-sigma-lower:before{content:"\F62B"}.mdi-sign-caution:before{content:"\F4A1"}.mdi-sign-direction:before{content:"\F780"}.mdi-sign-text:before{content:"\F781"}.mdi-signal:before{content:"\F4A2"}.mdi-signal-2g:before{content:"\F711"}.mdi-signal-3g:before{content:"\F712"}.mdi-signal-4g:before{content:"\F713"}.mdi-signal-hspa:before{content:"\F714"}.mdi-signal-hspa-plus:before{content:"\F715"}.mdi-signal-off:before{content:"\F782"}.mdi-signal-variant:before{content:"\F60A"}.mdi-silverware:before{content:"\F4A3"}.mdi-silverware-fork:before{content:"\F4A4"}.mdi-silverware-spoon:before{content:"\F4A5"}.mdi-silverware-variant:before{content:"\F4A6"}.mdi-sim:before{content:"\F4A7"}.mdi-sim-alert:before{content:"\F4A8"}.mdi-sim-off:before{content:"\F4A9"}.mdi-sitemap:before{content:"\F4AA"}.mdi-skip-backward:before{content:"\F4AB"}.mdi-skip-forward:before{content:"\F4AC"}.mdi-skip-next:before{content:"\F4AD"}.mdi-skip-next-circle:before{content:"\F661"}.mdi-skip-next-circle-outline:before{content:"\F662"}.mdi-skip-previous:before{content:"\F4AE"}.mdi-skip-previous-circle:before{content:"\F663"}.mdi-skip-previous-circle-outline:before{content:"\F664"}.mdi-skull:before{content:"\F68B"}.mdi-skype:before{content:"\F4AF"}.mdi-skype-business:before{content:"\F4B0"}.mdi-slack:before{content:"\F4B1"}.mdi-sleep:before{content:"\F4B2"}.mdi-sleep-off:before{content:"\F4B3"}.mdi-smoking:before{content:"\F4B4"}.mdi-smoking-off:before{content:"\F4B5"}.mdi-snapchat:before{content:"\F4B6"}.mdi-snowflake:before{content:"\F716"}.mdi-snowman:before{content:"\F4B7"}.mdi-soccer:before{content:"\F4B8"}.mdi-sofa:before{content:"\F4B9"}.mdi-solid:before{content:"\F68C"}.mdi-sort:before{content:"\F4BA"}.mdi-sort-alphabetical:before{content:"\F4BB"}.mdi-sort-ascending:before{content:"\F4BC"}.mdi-sort-descending:before{content:"\F4BD"}.mdi-sort-numeric:before{content:"\F4BE"}.mdi-sort-variant:before{content:"\F4BF"}.mdi-soundcloud:before{content:"\F4C0"}.mdi-source-branch:before{content:"\F62C"}.mdi-source-commit:before{content:"\F717"}.mdi-source-commit-end:before{content:"\F718"}.mdi-source-commit-end-local:before{content:"\F719"}.mdi-source-commit-local:before{content:"\F71A"}.mdi-source-commit-next-local:before{content:"\F71B"}.mdi-source-commit-start:before{content:"\F71C"}.mdi-source-commit-start-next-local:before{content:"\F71D"}.mdi-source-fork:before{content:"\F4C1"}.mdi-source-merge:before{content:"\F62D"}.mdi-source-pull:before{content:"\F4C2"}.mdi-soy-sauce:before{content:"\F7ED"}.mdi-speaker:before{content:"\F4C3"}.mdi-speaker-off:before{content:"\F4C4"}.mdi-speaker-wireless:before{content:"\F71E"}.mdi-speedometer:before{content:"\F4C5"}.mdi-spellcheck:before{content:"\F4C6"}.mdi-spotify:before{content:"\F4C7"}.mdi-spotlight:before{content:"\F4C8"}.mdi-spotlight-beam:before{content:"\F4C9"}.mdi-spray:before{content:"\F665"}.mdi-square:before{content:"\F763"}.mdi-square-inc:before{content:"\F4CA"}.mdi-square-inc-cash:before{content:"\F4CB"}.mdi-square-outline:before{content:"\F762"}.mdi-square-root:before{content:"\F783"}.mdi-stackexchange:before{content:"\F60B"}.mdi-stackoverflow:before{content:"\F4CC"}.mdi-stadium:before{content:"\F71F"}.mdi-stairs:before{content:"\F4CD"}.mdi-standard-definition:before{content:"\F7EE"}.mdi-star:before{content:"\F4CE"}.mdi-star-circle:before{content:"\F4CF"}.mdi-star-half:before{content:"\F4D0"}.mdi-star-off:before{content:"\F4D1"}.mdi-star-outline:before{content:"\F4D2"}.mdi-steam:before{content:"\F4D3"}.mdi-steering:before{content:"\F4D4"}.mdi-step-backward:before{content:"\F4D5"}.mdi-step-backward-2:before{content:"\F4D6"}.mdi-step-forward:before{content:"\F4D7"}.mdi-step-forward-2:before{content:"\F4D8"}.mdi-stethoscope:before{content:"\F4D9"}.mdi-sticker:before{content:"\F5D0"}.mdi-sticker-emoji:before{content:"\F784"}.mdi-stocking:before{content:"\F4DA"}.mdi-stop:before{content:"\F4DB"}.mdi-stop-circle:before{content:"\F666"}.mdi-stop-circle-outline:before{content:"\F667"}.mdi-store:before{content:"\F4DC"}.mdi-store-24-hour:before{content:"\F4DD"}.mdi-stove:before{content:"\F4DE"}.mdi-subdirectory-arrow-left:before{content:"\F60C"}.mdi-subdirectory-arrow-right:before{content:"\F60D"}.mdi-subway:before{content:"\F6AB"}.mdi-subway-variant:before{content:"\F4DF"}.mdi-summit:before{content:"\F785"}.mdi-sunglasses:before{content:"\F4E0"}.mdi-surround-sound:before{content:"\F5C5"}.mdi-surround-sound-2-0:before{content:"\F7EF"}.mdi-surround-sound-3-1:before{content:"\F7F0"}.mdi-surround-sound-5-1:before{content:"\F7F1"}.mdi-surround-sound-7-1:before{content:"\F7F2"}.mdi-svg:before{content:"\F720"}.mdi-swap-horizontal:before{content:"\F4E1"}.mdi-swap-vertical:before{content:"\F4E2"}.mdi-swim:before{content:"\F4E3"}.mdi-switch:before{content:"\F4E4"}.mdi-sword:before{content:"\F4E5"}.mdi-sword-cross:before{content:"\F786"}.mdi-sync:before{content:"\F4E6"}.mdi-sync-alert:before{content:"\F4E7"}.mdi-sync-off:before{content:"\F4E8"}.mdi-tab:before{content:"\F4E9"}.mdi-tab-plus:before{content:"\F75B"}.mdi-tab-unselected:before{content:"\F4EA"}.mdi-table:before{content:"\F4EB"}.mdi-table-column-plus-after:before{content:"\F4EC"}.mdi-table-column-plus-before:before{content:"\F4ED"}.mdi-table-column-remove:before{content:"\F4EE"}.mdi-table-column-width:before{content:"\F4EF"}.mdi-table-edit:before{content:"\F4F0"}.mdi-table-large:before{content:"\F4F1"}.mdi-table-row-height:before{content:"\F4F2"}.mdi-table-row-plus-after:before{content:"\F4F3"}.mdi-table-row-plus-before:before{content:"\F4F4"}.mdi-table-row-remove:before{content:"\F4F5"}.mdi-tablet:before{content:"\F4F6"}.mdi-tablet-android:before{content:"\F4F7"}.mdi-tablet-ipad:before{content:"\F4F8"}.mdi-taco:before{content:"\F761"}.mdi-tag:before{content:"\F4F9"}.mdi-tag-faces:before{content:"\F4FA"}.mdi-tag-heart:before{content:"\F68A"}.mdi-tag-multiple:before{content:"\F4FB"}.mdi-tag-outline:before{content:"\F4FC"}.mdi-tag-plus:before{content:"\F721"}.mdi-tag-remove:before{content:"\F722"}.mdi-tag-text-outline:before{content:"\F4FD"}.mdi-target:before{content:"\F4FE"}.mdi-taxi:before{content:"\F4FF"}.mdi-teamviewer:before{content:"\F500"}.mdi-telegram:before{content:"\F501"}.mdi-television:before{content:"\F502"}.mdi-television-classic:before{content:"\F7F3"}.mdi-television-guide:before{content:"\F503"}.mdi-temperature-celsius:before{content:"\F504"}.mdi-temperature-fahrenheit:before{content:"\F505"}.mdi-temperature-kelvin:before{content:"\F506"}.mdi-tennis:before{content:"\F507"}.mdi-tent:before{content:"\F508"}.mdi-terrain:before{content:"\F509"}.mdi-test-tube:before{content:"\F668"}.mdi-text-shadow:before{content:"\F669"}.mdi-text-to-speech:before{content:"\F50A"}.mdi-text-to-speech-off:before{content:"\F50B"}.mdi-textbox:before{content:"\F60E"}.mdi-textbox-password:before{content:"\F7F4"}.mdi-texture:before{content:"\F50C"}.mdi-theater:before{content:"\F50D"}.mdi-theme-light-dark:before{content:"\F50E"}.mdi-thermometer:before{content:"\F50F"}.mdi-thermometer-lines:before{content:"\F510"}.mdi-thought-bubble:before{content:"\F7F5"}.mdi-thought-bubble-outline:before{content:"\F7F6"}.mdi-thumb-down:before{content:"\F511"}.mdi-thumb-down-outline:before{content:"\F512"}.mdi-thumb-up:before{content:"\F513"}.mdi-thumb-up-outline:before{content:"\F514"}.mdi-thumbs-up-down:before{content:"\F515"}.mdi-ticket:before{content:"\F516"}.mdi-ticket-account:before{content:"\F517"}.mdi-ticket-confirmation:before{content:"\F518"}.mdi-ticket-percent:before{content:"\F723"}.mdi-tie:before{content:"\F519"}.mdi-tilde:before{content:"\F724"}.mdi-timelapse:before{content:"\F51A"}.mdi-timer:before{content:"\F51B"}.mdi-timer-10:before{content:"\F51C"}.mdi-timer-3:before{content:"\F51D"}.mdi-timer-off:before{content:"\F51E"}.mdi-timer-sand:before{content:"\F51F"}.mdi-timer-sand-empty:before{content:"\F6AC"}.mdi-timer-sand-full:before{content:"\F78B"}.mdi-timetable:before{content:"\F520"}.mdi-toggle-switch:before{content:"\F521"}.mdi-toggle-switch-off:before{content:"\F522"}.mdi-tooltip:before{content:"\F523"}.mdi-tooltip-edit:before{content:"\F524"}.mdi-tooltip-image:before{content:"\F525"}.mdi-tooltip-outline:before{content:"\F526"}.mdi-tooltip-outline-plus:before{content:"\F527"}.mdi-tooltip-text:before{content:"\F528"}.mdi-tooth:before{content:"\F529"}.mdi-tor:before{content:"\F52A"}.mdi-tower-beach:before{content:"\F680"}.mdi-tower-fire:before{content:"\F681"}.mdi-trackpad:before{content:"\F7F7"}.mdi-traffic-light:before{content:"\F52B"}.mdi-train:before{content:"\F52C"}.mdi-tram:before{content:"\F52D"}.mdi-transcribe:before{content:"\F52E"}.mdi-transcribe-close:before{content:"\F52F"}.mdi-transfer:before{content:"\F530"}.mdi-transit-transfer:before{content:"\F6AD"}.mdi-translate:before{content:"\F5CA"}.mdi-treasure-chest:before{content:"\F725"}.mdi-tree:before{content:"\F531"}.mdi-trello:before{content:"\F532"}.mdi-trending-down:before{content:"\F533"}.mdi-trending-neutral:before{content:"\F534"}.mdi-trending-up:before{content:"\F535"}.mdi-triangle:before{content:"\F536"}.mdi-triangle-outline:before{content:"\F537"}.mdi-trophy:before{content:"\F538"}.mdi-trophy-award:before{content:"\F539"}.mdi-trophy-outline:before{content:"\F53A"}.mdi-trophy-variant:before{content:"\F53B"}.mdi-trophy-variant-outline:before{content:"\F53C"}.mdi-truck:before{content:"\F53D"}.mdi-truck-delivery:before{content:"\F53E"}.mdi-truck-fast:before{content:"\F787"}.mdi-truck-trailer:before{content:"\F726"}.mdi-tshirt-crew:before{content:"\F53F"}.mdi-tshirt-v:before{content:"\F540"}.mdi-tumblr:before{content:"\F541"}.mdi-tumblr-reblog:before{content:"\F542"}.mdi-tune:before{content:"\F62E"}.mdi-tune-vertical:before{content:"\F66A"}.mdi-twitch:before{content:"\F543"}.mdi-twitter:before{content:"\F544"}.mdi-twitter-box:before{content:"\F545"}.mdi-twitter-circle:before{content:"\F546"}.mdi-twitter-retweet:before{content:"\F547"}.mdi-uber:before{content:"\F748"}.mdi-ubuntu:before{content:"\F548"}.mdi-ultra-high-definition:before{content:"\F7F8"}.mdi-umbraco:before{content:"\F549"}.mdi-umbrella:before{content:"\F54A"}.mdi-umbrella-outline:before{content:"\F54B"}.mdi-undo:before{content:"\F54C"}.mdi-undo-variant:before{content:"\F54D"}.mdi-unfold-less-horizontal:before{content:"\F54E"}.mdi-unfold-less-vertical:before{content:"\F75F"}.mdi-unfold-more-horizontal:before{content:"\F54F"}.mdi-unfold-more-vertical:before{content:"\F760"}.mdi-ungroup:before{content:"\F550"}.mdi-unity:before{content:"\F6AE"}.mdi-untappd:before{content:"\F551"}.mdi-update:before{content:"\F6AF"}.mdi-upload:before{content:"\F552"}.mdi-upload-network:before{content:"\F6F5"}.mdi-usb:before{content:"\F553"}.mdi-van-passenger:before{content:"\F7F9"}.mdi-van-utility:before{content:"\F7FA"}.mdi-vanish:before{content:"\F7FB"}.mdi-vector-arrange-above:before{content:"\F554"}.mdi-vector-arrange-below:before{content:"\F555"}.mdi-vector-circle:before{content:"\F556"}.mdi-vector-circle-variant:before{content:"\F557"}.mdi-vector-combine:before{content:"\F558"}.mdi-vector-curve:before{content:"\F559"}.mdi-vector-difference:before{content:"\F55A"}.mdi-vector-difference-ab:before{content:"\F55B"}.mdi-vector-difference-ba:before{content:"\F55C"}.mdi-vector-intersection:before{content:"\F55D"}.mdi-vector-line:before{content:"\F55E"}.mdi-vector-point:before{content:"\F55F"}.mdi-vector-polygon:before{content:"\F560"}.mdi-vector-polyline:before{content:"\F561"}.mdi-vector-radius:before{content:"\F749"}.mdi-vector-rectangle:before{content:"\F5C6"}.mdi-vector-selection:before{content:"\F562"}.mdi-vector-square:before{content:"\F001"}.mdi-vector-triangle:before{content:"\F563"}.mdi-vector-union:before{content:"\F564"}.mdi-verified:before{content:"\F565"}.mdi-vibrate:before{content:"\F566"}.mdi-video:before{content:"\F567"}.mdi-video-3d:before{content:"\F7FC"}.mdi-video-off:before{content:"\F568"}.mdi-video-switch:before{content:"\F569"}.mdi-view-agenda:before{content:"\F56A"}.mdi-view-array:before{content:"\F56B"}.mdi-view-carousel:before{content:"\F56C"}.mdi-view-column:before{content:"\F56D"}.mdi-view-dashboard:before{content:"\F56E"}.mdi-view-day:before{content:"\F56F"}.mdi-view-grid:before{content:"\F570"}.mdi-view-headline:before{content:"\F571"}.mdi-view-list:before{content:"\F572"}.mdi-view-module:before{content:"\F573"}.mdi-view-parallel:before{content:"\F727"}.mdi-view-quilt:before{content:"\F574"}.mdi-view-sequential:before{content:"\F728"}.mdi-view-stream:before{content:"\F575"}.mdi-view-week:before{content:"\F576"}.mdi-vimeo:before{content:"\F577"}.mdi-vine:before{content:"\F578"}.mdi-violin:before{content:"\F60F"}.mdi-visualstudio:before{content:"\F610"}.mdi-vk:before{content:"\F579"}.mdi-vk-box:before{content:"\F57A"}.mdi-vk-circle:before{content:"\F57B"}.mdi-vlc:before{content:"\F57C"}.mdi-voice:before{content:"\F5CB"}.mdi-voicemail:before{content:"\F57D"}.mdi-volume-high:before{content:"\F57E"}.mdi-volume-low:before{content:"\F57F"}.mdi-volume-medium:before{content:"\F580"}.mdi-volume-minus:before{content:"\F75D"}.mdi-volume-mute:before{content:"\F75E"}.mdi-volume-off:before{content:"\F581"}.mdi-volume-plus:before{content:"\F75C"}.mdi-vpn:before{content:"\F582"}.mdi-walk:before{content:"\F583"}.mdi-wall:before{content:"\F7FD"}.mdi-wallet:before{content:"\F584"}.mdi-wallet-giftcard:before{content:"\F585"}.mdi-wallet-membership:before{content:"\F586"}.mdi-wallet-travel:before{content:"\F587"}.mdi-wan:before{content:"\F588"}.mdi-washing-machine:before{content:"\F729"}.mdi-watch:before{content:"\F589"}.mdi-watch-export:before{content:"\F58A"}.mdi-watch-import:before{content:"\F58B"}.mdi-watch-vibrate:before{content:"\F6B0"}.mdi-water:before{content:"\F58C"}.mdi-water-off:before{content:"\F58D"}.mdi-water-percent:before{content:"\F58E"}.mdi-water-pump:before{content:"\F58F"}.mdi-watermark:before{content:"\F612"}.mdi-waves:before{content:"\F78C"}.mdi-weather-cloudy:before{content:"\F590"}.mdi-weather-fog:before{content:"\F591"}.mdi-weather-hail:before{content:"\F592"}.mdi-weather-lightning:before{content:"\F593"}.mdi-weather-lightning-rainy:before{content:"\F67D"}.mdi-weather-night:before{content:"\F594"}.mdi-weather-partlycloudy:before{content:"\F595"}.mdi-weather-pouring:before{content:"\F596"}.mdi-weather-rainy:before{content:"\F597"}.mdi-weather-snowy:before{content:"\F598"}.mdi-weather-snowy-rainy:before{content:"\F67E"}.mdi-weather-sunny:before{content:"\F599"}.mdi-weather-sunset:before{content:"\F59A"}.mdi-weather-sunset-down:before{content:"\F59B"}.mdi-weather-sunset-up:before{content:"\F59C"}.mdi-weather-windy:before{content:"\F59D"}.mdi-weather-windy-variant:before{content:"\F59E"}.mdi-web:before{content:"\F59F"}.mdi-webcam:before{content:"\F5A0"}.mdi-webhook:before{content:"\F62F"}.mdi-webpack:before{content:"\F72A"}.mdi-wechat:before{content:"\F611"}.mdi-weight:before{content:"\F5A1"}.mdi-weight-kilogram:before{content:"\F5A2"}.mdi-whatsapp:before{content:"\F5A3"}.mdi-wheelchair-accessibility:before{content:"\F5A4"}.mdi-white-balance-auto:before{content:"\F5A5"}.mdi-white-balance-incandescent:before{content:"\F5A6"}.mdi-white-balance-iridescent:before{content:"\F5A7"}.mdi-white-balance-sunny:before{content:"\F5A8"}.mdi-widgets:before{content:"\F72B"}.mdi-wifi:before{content:"\F5A9"}.mdi-wifi-off:before{content:"\F5AA"}.mdi-wii:before{content:"\F5AB"}.mdi-wiiu:before{content:"\F72C"}.mdi-wikipedia:before{content:"\F5AC"}.mdi-window-close:before{content:"\F5AD"}.mdi-window-closed:before{content:"\F5AE"}.mdi-window-maximize:before{content:"\F5AF"}.mdi-window-minimize:before{content:"\F5B0"}.mdi-window-open:before{content:"\F5B1"}.mdi-window-restore:before{content:"\F5B2"}.mdi-windows:before{content:"\F5B3"}.mdi-wordpress:before{content:"\F5B4"}.mdi-worker:before{content:"\F5B5"}.mdi-wrap:before{content:"\F5B6"}.mdi-wrench:before{content:"\F5B7"}.mdi-wunderlist:before{content:"\F5B8"}.mdi-xaml:before{content:"\F673"}.mdi-xbox:before{content:"\F5B9"}.mdi-xbox-controller:before{content:"\F5BA"}.mdi-xbox-controller-battery-alert:before{content:"\F74A"}.mdi-xbox-controller-battery-empty:before{content:"\F74B"}.mdi-xbox-controller-battery-full:before{content:"\F74C"}.mdi-xbox-controller-battery-low:before{content:"\F74D"}.mdi-xbox-controller-battery-medium:before{content:"\F74E"}.mdi-xbox-controller-battery-unknown:before{content:"\F74F"}.mdi-xbox-controller-off:before{content:"\F5BB"}.mdi-xda:before{content:"\F5BC"}.mdi-xing:before{content:"\F5BD"}.mdi-xing-box:before{content:"\F5BE"}.mdi-xing-circle:before{content:"\F5BF"}.mdi-xml:before{content:"\F5C0"}.mdi-xmpp:before{content:"\F7FE"}.mdi-yammer:before{content:"\F788"}.mdi-yeast:before{content:"\F5C1"}.mdi-yelp:before{content:"\F5C2"}.mdi-yin-yang:before{content:"\F67F"}.mdi-youtube-play:before{content:"\F5C3"}.mdi-zip-box:before{content:"\F5C4"}.mdi-blank:before{content:"\F68C";visibility:hidden}.mdi-18px.mdi-set,.mdi-18px.mdi:before{font-size:18px}.mdi-24px.mdi-set,.mdi-24px.mdi:before{font-size:24px}.mdi-36px.mdi-set,.mdi-36px.mdi:before{font-size:36px}.mdi-48px.mdi-set,.mdi-48px.mdi:before{font-size:48px}.mdi-dark:before{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive:before{color:rgba(0,0,0,0.26)}.mdi-light:before{color:#fff}.mdi-light.mdi-inactive:before{color:rgba(255,255,255,0.3)}.mdi-rotate-45:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.mdi-rotate-90:before{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-135:before{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.mdi-rotate-180:before{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-225:before{-webkit-transform:rotate(225deg);-ms-transform:rotate(225deg);transform:rotate(225deg)}.mdi-rotate-270:before{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-rotate-315:before{-webkit-transform:rotate(315deg);-ms-transform:rotate(315deg);transform:rotate(315deg)}.mdi-flip-h:before{-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-v:before{-webkit-transform:scaleY(-1);transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"}.mdi-spin:before{-webkit-animation:mdi-spin 2s infinite linear;animation:mdi-spin 2s infinite linear}@-webkit-keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} diff --git a/assets/admin/css/style.min.css b/assets/admin/css/style.min.css new file mode 100644 index 0000000..c99205a --- /dev/null +++ b/assets/admin/css/style.min.css @@ -0,0 +1,4538 @@ +/** ---------------------------------- + * 光年(Light Year Admin)后台管理系统模板 + * 基于Bootstrap v3.3.7 + * http://www.itshubao.com + * yinqi<3331653644@qq.com> + -------------------------------------- */ +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; + color: #4d5259; + line-height: 1.5; + font-size: 14px; + overflow-x: hidden; + background-color: #f5f6fa; +} +html, +body { + height: 100%; +} +a { + color: #33cabb; + -webkit-transition: .2s linear; + transition: .2s linear +} +a:hover, +a:focus { + color: #4d5259; + text-decoration: none; + outline: none +} +a:hover, +a:focus, +a:active { + text-decoration: none; +} +a, +button, +a:focus, +a:active, +button:focus, +button:active { + outline: none !important; +} +blockquote { + font-size: 16px; +} +img { + max-width: 100%; +} +pre { + background-color: #f9fafb; + border: none; + border-left: 5px solid #ebebeb; + padding: 12px; + border-radius: 3px; + color: #616a78; +} + +/** ---------------------------------- + * 示例中用到的样式,可删除 + -------------------------------------- */ +.example-box .btn { + margin-bottom: 10px; + margin-right: 6px; +} + +/** ---------------------------------- + * 重设样式 + -------------------------------------- */ + +/* 标题 */ +h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif; + color: #313944; + line-height: 1.5; + letter-spacing: .5px; +} +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: .5rem; +} + +/* 导航相关 */ +.navbar-toggle { + background-color: transparent; + border-color: transparent!important; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: transparent; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #4d5259; +} +.nav > li > a:focus { + background-color: transparent; +} +.nav > li > a:hover { + background-color: rgba(0,0,0,.0085); +} +.nav .open > a, +.nav .open > a:focus, +.nav .open > a:hover { + background-color: transparent; + border-color: transparent; +} + +/* 下拉 */ +.dropdown-menu { + border-radius: 0; + border: none; + /*border: 1px solid rgba(235, 235, 235, 0.4);*/ + -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.075); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.075); +} +.dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover { + background-color: #f9fafb; +} +.dropdown-menu .divider { + background-color: #f1f2f3; +} +.dropdown-menu > li > a { + padding-top: 8px; + padding-bottom: 8px; +} +.dropdown-menu > li > a > i { + margin-right: 10px; +} +.dropdown-menu>.active>a, +.dropdown-menu>.active>a:focus, +.dropdown-menu>.active>a:hover { + background-color: #33cabb; +} + +/* 表格 */ +.table-bordered { + border-color: #eceeef; +} +.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: .75em;*/ + vertical-align: middle; + padding: 10px; + line-height: 1.5; + border-color: #eceeef; +} +.table-striped tbody tr:nth-of-type(odd) { + background-color: #fafafa; +} +.table-hover > tbody > tr:hover { + background-color: #F1FBFB; +} +.table-vcenter > thead > tr > th, +.table-vcenter > thead > tr > td, +.table-vcenter > tbody > tr > th, +.table-vcenter > tbody > tr > td, +.table-vcenter > tfoot > tr > th, +.table-vcenter > tfoot > tr > td { + vertical-align: middle; +} +.table-hover tbody tr { + -webkit-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.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: .5em; +} + +/* 标签 */ +.label { + padding-top: .3em; + border-radius: 2px; + font-weight: 300; +} +.label-default { + background-color: #f5f6f7; + color: #8b95a5; +} +.label-primary { + background-color: #33cabb; +} +.label-success { + background-color: #15c377; +} +.label-info { + background-color: #48b0f7; +} +.label-warning { + background-color: #faa64b; +} +.label-danger { + background-color: #f96868; +} +.label-dark { + background-color: #465161; +} +.label-secondary { + background-color: #e4e7ea; + color: #4d5259; +} +.label-purple { + background-color: #926dde; +} +.label-pink { + background-color: #f96197; +} +.label-cyan { + background-color: #57c7d4; +} +.label-yellow { + background-color: #fcc525; +} +.label-brown { + background-color: #8d6658; +} +[class*='label-outline-'] { + position: relative; + border: 1px solid #ebebeb; + color: #4d5259; + font-size: 12px; +} +[class*='label-outline-']:before { + content: ""; + margin-right: 5px; + width: 8px; + height: 8px; + display: inline-block; + -wekit-border-radius: 50%; + border-radius: 50%; +} +.label-outline-default::before { + background-color: #f5f6f7; +} +.label-outline-primary::before { + background-color: #33cabb; +} +.label-outline-success::before { + background-color: #15c377; +} +.label-outline-info::before { + background-color: #48b0f7; +} +.label-outline-warning::before { + background-color: #faa64b; +} +.label-outline-danger::before { + background-color: #f96868; +} +.label-outline-dark::before { + background-color: #465161; +} +.label-outline-secondary::before { + background-color: #e4e7ea; +} +.label-outline-purple::before { + background-color: #926dde; +} +.label-outline-pink::before { + background-color: #f96197; +} +.label-outline-cyan::before { + background-color: #57c7d4; +} +.label-outline-yellow::before { + background-color: #fcc525; +} +.label-outline-brown::before { + background-color: #8d6658; +} +/* 淡一些的颜色 */ +.label-primary-light { + background-color: rgba(51, 202, 187, .15); + color: #33cabb; +} +.label-success-light { + background-color: rgba(21, 195, 119, .15); + color: #15c377; +} +.label-info-light { + background-color: rgba(72,176,247, .15); + color: #48b0f7; +} +.label-warning-light { + background-color: rgba(250,166,75, .15); + color: #faa64b; +} +.label-danger-light { + background-color: rgba(249,104,104, .15); + color: #f96868; +} +.label-purple-light { + background-color: rgba(146,109,222, .15); + color: #926dde; +} +.label-pink-light { + background-color: rgba(249,97,151, .15); + color: #f96197; +} +.label-cyan-light { + background-color: rgba(87,199,212, .15); + color: #57c7d4; +} +.label-yellow-light { + background-color: rgba(252,197,37, .15); + color: #fcc525; +} +.label-brown-light { + background-color: rgba(141,102,88, .15); + color: #8d6658; +} + +/* well */ +.well { + border-radius: 2px; + background-color: #f7f7f7; + border-color: #f0f0f0; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* 面板 */ +.panel { + border-color: #f0f0f0; + -webkit-box-shadow: none; + box-shadow: none; + margin-bottom: 30px; +} +.panel a:hover, +.panel a:focus, +.panel a:active { + color: inherit; +} +.panel-heading { + -webkit-border-radius: 0px; + border-radius: 0px; +} +.panel-default>.panel-heading, +.panel-default>.panel-heading+.panel-collapse>.panel-body { + border-color: #f0f0f0; +} +.panel-primary>.panel-heading { + background-color: #33cabb; + border-color: #33cabb; +} +.panel-primary { + border-color: #33cabb; +} +.panel-primary>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #33cabb; +} +.panel-primary > .panel-heading .badge { + color: #33cabb; +} +.panel-success>.panel-heading { + color: #fff; + background-color: #15c377; + border-color: #15c377; +} +.panel-success { + border-color: #15c377; +} +.panel-success>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #15c377; +} +.panel-success > .panel-heading .badge { + background-color: #fff; + color: #15c377; +} +.panel-info>.panel-heading { + color: #fff; + background-color: #48b0f7; + border-color: #48b0f7; +} +.panel-info { + border-color: #48b0f7; +} +.panel-info>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #48b0f7; +} +.panel-info > .panel-heading .badge { + background-color: #fff; + color: #48b0f7; +} +.panel-warning>.panel-heading { + color: #fff; + background-color: #faa64b; + border-color: #faa64b; +} +.panel-warning { + border-color: #faa64b; +} +.panel-warning>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #faa64b; +} +.panel-warning > .panel-heading .badge { + background-color: #fff; + color: #faa64b; +} +.panel-danger>.panel-heading { + color: #fff; + background-color: #f96868; + border-color: #f96868; +} +.panel-danger { + border-color: #f96868; +} +.panel-danger>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #f96868; +} +.panel-danger > .panel-heading .badge { + background-color: #fff; + color: #f96868; +} +.panel-dark>.panel-heading { + color: #fff; + background-color: #465161; + border-color: #465161; +} +.panel-dark { + border-color: #465161; +} +.panel-dark>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #465161; +} +.panel-secondary>.panel-heading { + background-color: #e4e7ea; + border-color: #e4e7ea; +} +.panel-secondary { + border-color: #e4e7ea; +} +.panel-secondary>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #e4e7ea; +} +.panel-purple>.panel-heading { + color: #fff; + background-color: #926dde; + border-color: #926dde; +} +.panel-purple { + border-color: #926dde; +} +.panel-purple>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #926dde; +} +.panel-pink>.panel-heading { + color: #fff; + background-color: #f96197; + border-color: #f96197; +} +.panel-pink { + border-color: #f96197; +} +.panel-pink>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #f96197; +} +.panel-cyan>.panel-heading { + color: #fff; + background-color: #57c7d4; + border-color: #57c7d4; +} +.panel-cyan { + border-color: #57c7d4; +} +.panel-cyan>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #57c7d4; +} + +/* 列表组 */ +.list-group-item { + border-color: #f0f0f0; +} +a.list-group-item:focus, +a.list-group-item:hover, +button.list-group-item:focus, +button.list-group-item:hover { + background-color: #f9fafb; +} +.list-group-item.active, .list-group-item.active:focus, .list-group-item.active:hover { + background-color: #33cabb; + border-color: #33cabb; +} +.list-group-item:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} +.list-group-item:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} + +/* 表单 */ +.form-control { + height: 38px; + border-color: #ebebeb; + -webkit-border-radius: 2px; + border-radius: 2px; + padding: 5px 12px; + line-height: inherit; + -webkit-transition: 0.2s linear; + transition: 0.2s linear; + -webkit-box-shadow: none; + box-shadow: none; +} +.form-control:focus { + border-color: #33cabb; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(51, 202, 187, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(51, 202, 187, .6); +} +.input-group-addon { + border-color: #ebebeb; + background-color: #f9fafb; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.input-group-lg>.form-control, .input-group-lg>.input-group-addon, .input-group-lg>.input-group-btn>.btn { + -webkit-border-radius: 2px; + border-radius: 2px; +} +.input-sm { + height: 30px; +} +.input-lg { + height: 46px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #15c377; +} +.has-success .form-control { + border-color: #15c377!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; +} +.has-success .form-control:focus { + border-color: #15c377!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(21, 195, 119, .6)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(21, 195, 119, .6)!important; +} +.has-success .input-group-addon { + color: #15c377; + background-color: #dff0d8; + border-color: #15c377; +} +.has-success .form-control-feedback { + color: #15c377; +} +.has-info .help-block, +.has-info .control-label, +.has-info .radio, +.has-info .checkbox, +.has-info .radio-inline, +.has-info .checkbox-inline, +.has-info.radio label, +.has-info.checkbox label, +.has-info.radio-inline label, +.has-info.checkbox-inline label { + color: #48b0f7; +} +.has-info .form-control { + border-color: #48b0f7!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; +} +.has-info .form-control:focus { + border-color: #48b0f7!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(72, 176, 247, .6)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(72, 176, 247, .6)!important; +} +.has-info .input-group-addon { + color: #48b0f7; + background-color: #dff0d8; + border-color: #48b0f7; +} +.has-info .form-control-feedback { + color: #48b0f7; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #faa64b; +} +.has-warning .form-control { + border-color: #faa64b!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; +} +.has-warning .form-control:focus { + border-color: #faa64b!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px rgba(250, 166, 75, .6)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px rgba(250, 166, 75, .6)!important; +} +.has-warning .input-group-addon { + color: #faa64b; + background-color: #fcf8e3; + border-color: #faa64b; +} +.has-warning .form-control-feedback { + color: #faa64b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #f96868; +} +.has-error .form-control { + border-color: #f96868!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)!important; +} +.has-error .form-control:focus { + border-color: #f96868!important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px rgba(249, 104, 104, .6)!important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px rgba(249, 104, 104, .6)!important; +} +.has-error .input-group-addon { + color: #f96868; + background-color: #f2dede; + border-color: #f96868; +} +.has-error .form-control-feedback { + color: #f96868; +} + +/* 复选框 & 单选框 */ +.lyear-checkbox, +.lyear-radio { + display: block; + position: relative; + margin-top: 0px; + margin-bottom: 0px; + cursor: pointer; + padding-left: 30px; + padding-right: 10px; + font-weight: 400; + min-height: 18px; + height: auto!important; + line-height: 18px!important; +} +input[type=checkbox], +input[type=radio] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +.lyear-checkbox input, +.lyear-radio input { + position: absolute;; + /*opacity: 0;*/ + display: none; +} +.lyear-checkbox span::before, +.lyear-radio span::before { + content: ''; + position: absolute; + display: inline-block; + height: 18px; + width: 18px; + left: 0; + top: 0px; + border: 2px solid #ebebeb;; + -webkit-transition: all .1s; + -o-transition: all .1s; + transition: all .1s; +} +.lyear-checkbox span::after, +.lyear-radio span::after { + content: ''; + position: absolute; + display: none; + width: 5px; + height: 10px; + left: 7px; + top: 3px; + border: solid #4d5259; + border-width: 0 2px 2px 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.lyear-checkbox span, +.lyear-radio span { + display: inline-block; +} +.lyear-checkbox input:checked~span:after, +.lyear-radio input:checked~span:after { + display: inline-block; +} +.lyear-checkbox:hover span::before, +.lyear-radio:hover span::before { + border-color: #ebebeb; +} +.lyear-checkbox.checkbox-grey span::before, +.lyear-checkbox.radio-grey span::before, +.lyear-radio.checkbox-grey span::before, +.lyear-radio.radio-grey span::before { + background-color: #ebebeb; + border-color: #ebebeb; +} +.lyear-checkbox input:disabled + span, +.lyear-radio input:disabled + span { + cursor: not-allowed; +} +.lyear-checkbox input:disabled + span::before, +.lyear-checkbox input:disabled + span::after, +.lyear-radio input:disabled + span::before, +.lyear-radio input:disabled + span::after { + opacity: .4; +} +/* checkbox */ +.checkbox-primary input:checked~span::before { + background-color: #33cabb; + border-color: #33cabb; +} +.checkbox-primary input:checked~span::after { + border-color: #fff; +} +.checkbox-success input:checked~span::before { + background-color: #15c377; + border-color: #15c377; +} +.checkbox-success input:checked~span::after { + border-color: #fff; +} +.checkbox-info input:checked~span::before { + background-color: #48b0f7; + border-color: #48b0f7; +} +.checkbox-info input:checked~span::after { + border-color: #fff; +} +.checkbox-warning input:checked~span::before { + background-color: #faa64b; + border-color: #faa64b; +} +.checkbox-warning input:checked~span::after { + border-color: #fff; +} +.checkbox-danger input:checked~span::before { + background-color: #f96868; + border-color: #f96868; +} +.checkbox-danger input:checked~span::after { + border-color: #fff; +} +.checkbox-dark input:checked~span::before { + background-color: #465161; + border-color: #465161; +} +.checkbox-dark input:checked~span::after { + border-color: #fff; +} +.checkbox-secondary input:checked~span::before { + background-color: #e4e7ea; + border-color: #e4e7ea; +} +.checkbox-secondary input:checked~span::after { + border-color: #fff; +} +.checkbox-purple input:checked~span::before { + background-color: #926dde; + border-color: #926dde; +} +.checkbox-purple input:checked~span::after { + border-color: #fff; +} +.checkbox-pink input:checked~span::before { + background-color: #f96197; + border-color: #f96197; +} +.checkbox-pink input:checked~span::after { + border-color: #fff; +} +.checkbox-cyan input:checked~span::before { + background-color: #57c7d4; + border-color: #57c7d4; +} +.checkbox-cyan input:checked~span::after { + border-color: #fff; +} +.checkbox-yellow input:checked~span::before { + background-color: #fcc525; + border-color: #fcc525; +} +.checkbox-yellow input:checked~span::after { + border-color: #fff; +} +.checkbox-brown input:checked~span::before { + background-color: #8d6658; + border-color: #8d6658; +} +.checkbox-brown input:checked~span::after { + border-color: #fff; +} +/* radio */ +.lyear-radio span::before { + -webkit-border-radius: 50%; + border-radius: 50%; +} +.lyear-radio span::after { + border: 0; + height: 6px; + left: 6px; + top: 6px; + width: 6px; + background: #4d5259; + -webkit-border-radius: 100%; + border-radius: 100%; +} +.radio-primary input:checked~span::before { + background-color: #33cabb; + border-color: #33cabb; +} +.radio-primary input:checked~span::after { + background-color: #fff; +} +.radio-success input:checked~span::before { + background-color: #15c377; + border-color: #15c377; +} +.radio-success input:checked~span::after { + background-color: #fff; +} +.radio-info input:checked~span::before { + background-color: #48b0f7; + border-color: #48b0f7; +} +.radio-info input:checked~span::after { + background-color: #fff; +} +.radio-warning input:checked~span::before { + background-color: #faa64b; + border-color: #faa64b; +} +.radio-warning input:checked~span::after { + background-color: #fff; +} +.radio-danger input:checked~span::before { + background-color: #f96868; + border-color: #f96868; +} +.radio-danger input:checked~span::after { + background-color: #fff; +} +.radio-dark input:checked~span::before { + background-color: #465161; + border-color: #465161; +} +.radio-dark input:checked~span::after { + background-color: #fff; +} +.radio-secondary input:checked~span::before { + background-color: #e4e7ea; + border-color: #e4e7ea; +} +.radio-secondary input:checked~span::after { + background-color: #fff; +} +.radio-purple input:checked~span::before { + background-color: #926dde; + border-color: #926dde; +} +.radio-purple input:checked~span::after { + background-color: #fff; +} +.radio-pink input:checked~span::before { + background-color: #f96197; + border-color: #f96197; +} +.radio-pink input:checked~span::after { + background-color: #fff; +} +.radio-cyan input:checked~span::before { + background-color: #57c7d4; + border-color: #57c7d4; +} +.radio-cyan input:checked~span::after { + background-color: #fff; +} +.radio-yellow input:checked~span::before { + background-color: #fcc525; + border-color: #fcc525; +} +.radio-yellow input:checked~span::after { + background-color: #fff; +} +.radio-brown input:checked~span::before { + background-color: #8d6658; + border-color: #8d6658; +} +.radio-brown input:checked~span::after { + background-color: #fff; +} + +.checkbox-inline, .radio-inline { + display: inline-block; +} +.form-horizontal .lyear-radio.radio-inline, +.form-horizontal .lyear-checkbox.checkbox-inline { + padding-top: 0px; + margin-top: 8px; +} +.checkbox-inline+.checkbox-inline, +.radio-inline+.radio-inline { + margin-left: 0px; +} + +/* 开关 */ +.lyear-switch { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; +} +.lyear-switch input { + height: 0; + width: 0; + position: absolute; + opacity: 0; +} +.lyear-switch span { + display: inline-block; + position: relative; + width: 40px; + height: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + background-color: #ebebeb; + border: 2px solid #ebebeb; + cursor: pointer; + -webkit-transition: all .1s ease; + -o-transition: all .1s ease; + transition: all .1s ease +} +.lyear-switch span:after { + content: ''; + height: 20px; + width: 20px; + -webkit-border-radius: 50%; + border-radius: 50%; + position: absolute; + left: 1px; + top: -7px; + color: #aaa; + -webkit-transition: all .1s ease; + -o-transition: all .1s ease; + transition: all .1s ease; + text-align: center; + font-size: 13px; + background-color: #fff; + -webkit-box-shadow: rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px; + box-shadow: rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px +} +.lyear-switch input:checked~span:after { + left: -webkit-calc(100% - 20px); + left: calc(100% - 20px); +} +.switch-primary input:checked~span:after { + background-color: #33cabb +} +.switch-success input:checked~span:after { + background-color: #15c377 +} +.switch-info input:checked~span:after { + background-color: #48b0f7 +} +.switch-warning input:checked~span:after { + background-color: #faa64b +} +.switch-danger input:checked~span:after { + background-color: #f96868 +} +.switch-secondary input:checked~span:after { + background-color: #868e96 +} +.switch-dark input:checked~span:after { + background-color: #465161 +} +.switch-purple input:checked~span:after { + background-color: #926dde +} +.switch-pink input:checked~span:after { + background-color: #f96197 +} +.switch-cyan input:checked~span:after { + background-color: #57c7d4 +} +.switch-yellow input:checked~span:after { + background-color: #fcc525 +} +.switch-brown input:checked~span:after { + background-color: #8d6658 +} + +.lyear-switch.switch-solid span, +.lyear-switch.switch-light span, +.lyear-switch.switch-outline span { + height: 20px; +} +.lyear-switch.switch-solid span:after, +.lyear-switch.switch-light span:after, +.lyear-switch.switch-outline span:after { + top: -2px; +} +.lyear-switch.switch-outline span { + background-color: #fff +} +.switch-solid.switch-primary input:checked~span { + background-color: #33cabb; + border-color: #33cabb +} +.switch-solid.switch-primary input:checked~span:after { + background-color: #fff; + color: #33cabb +} +.switch-solid.switch-success input:checked~span { + background-color: #15c377; + border-color: #15c377 +} +.switch-solid.switch-success input:checked~span:after { + background-color: #fff; + color: #15c377 +} +.switch-solid.switch-info input:checked~span { + background-color: #48b0f7; + border-color: #48b0f7 +} +.switch-solid.switch-info input:checked~span:after { + background-color: #fff; + color: #48b0f7 +} +.switch-solid.switch-warning input:checked~span { + background-color: #faa64b; + border-color: #faa64b +} +.switch-solid.switch-warning input:checked~span:after { + background-color: #fff; + color: #faa64b +} +.switch-solid.switch-danger input:checked~span { + background-color: #f96868; + border-color: #f96868 +} +.switch-solid.switch-danger input:checked~span:after { + background-color: #fff; + color: #f96868 +} +.switch-solid.switch-secondary input:checked~span { + background-color: #868e96; + border-color: #868e96 +} +.switch-solid.switch-secondary input:checked~span:after { + background-color: #fff; + color: #868e96 +} +.switch-solid.switch-dark input:checked~span { + background-color: #465161; + border-color: #465161 +} +.switch-solid.switch-dark input:checked~span:after { + background-color: #fff; + color: #465161 +} +.switch-solid.switch-purple input:checked~span { + background-color: #926dde; + border-color: #926dde +} +.switch-solid.switch-purple input:checked~span:after { + background-color: #fff; + color: #926dde +} +.switch-solid.switch-pink input:checked~span { + background-color: #f96197; + border-color: #f96197 +} +.switch-solid.switch-pink input:checked~span:after { + background-color: #fff; + color: #f96197 +} +.switch-solid.switch-cyan input:checked~span { + background-color: #57c7d4; + border-color: #57c7d4 +} +.switch-solid.switch-cyan input:checked~span:after { + background-color: #fff; + color: #57c7d4 +} +.switch-solid.switch-yellow input:checked~span { + background-color: #fcc525; + border-color: #fcc525 +} +.switch-solid.switch-yellow input:checked~span:after { + background-color: #fff; + color: #fcc525 +} +.switch-solid.switch-brown input:checked~span { + background-color: #8d6658; + border-color: #8d6658 +} +.switch-solid.switch-brown input:checked~span:after { + background-color: #fff; + color: #8d6658 +} + +/* 模态框 */ +.modal-header { + border-bottom-color: #f1f2f3; +} +.modal-footer { + border-top-color: #f1f2f3; +} +.modal-content { + -webkit-border-radius: 3px; + border-radius: 3px; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* 标签页 */ +.nav-tabs { + border-bottom-color: #ebebeb; + margin-bottom: 1rem; +} +.nav-tabs > li > a { + margin-right: 0px; + border: none; + border-bottom: 1px solid transparent; + border-radius: 0; + color: #8b95a5; + -webkit-transition: 0.5s; + transition: 0.5s; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:focus, +.nav-tabs > li.active > a:hover { + color: #4d5259; + border: none; + background-color: transparent; + border-bottom: 1px solid #33cabb; +} +.nav-tabs.nav > li > a:hover, +.nav-tabs.nav > li > a:focus { + text-decoration: none; + background-color: transparent; + border-bottom-color: #33cabb; +} +.nav-tabs.nav-justified>.active>a, +.nav-tabs.nav-justified>.active>a:focus, +.nav-tabs.nav-justified>.active>a:hover { + color: #4d5259; + border: none; + border-bottom: 1px solid #33cabb; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified>li>a { + border-bottom-color: #ebebeb; + -webkit-border-radius: 0px; + border-radius: 0px; + } +} + +/* 进度条 */ +.progress { + height: 12px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + margin-bottom: 8px; + background-color: #f5f6f7; + -webkit-box-shadow: none; + box-shadow: none; +} +.progress-bar { + font-size: 10px; + line-height: 12px; + background-color: #33cabb; + -webkit-box-shadow: none; + box-shadow: none; +} +.progress-bar-success { + background-color: #15c377; +} +.progress-bar-info { + background-color: #48b0f7; +} +.progress-bar-warning { + background-color: #faa64b; +} +.progress-bar-danger { + background-color: #f96868; +} +.progress-bar-secondary { + background-color: #e4e7ea; +} +.progress-bar-pink { + background-color: #f96197; +} +.progress-bar-purple { + background-color: #926dde; +} +.progress-bar-brown { + background-color: #8d6658; +} +.progress-bar-cyan { + background-color: #57c7d4; +} +.progress-bar-yellow { + background-color: #fcc525; +} +.progress-bar-gray { + background-color: #868e96; +} +.progress-bar-dark { + background-color: #465161; +} +.progress-sm { + height: 8px; +} +.progress-lg { + height: 16px; +} + +/* 弹出框 */ +.popover { + border-color: #ebebeb; + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + box-shadow: none; + padding: 0px; +} +.popover-title { + background-color: #fcfdfe; + padding-top: 10px; + padding-bottom: 10px; + color: #616a78; + border-bottom-color: #f1f2f3; +} +.popover.top>.arrow { + border-top-color: #ebebeb; +} +.popover.right>.arrow { + border-right-color: #ebebeb; +} +.popover.bottom>.arrow { + border-bottom-color: #ebebeb; +} +.popover.left>.arrow { + border-left-color: #ebebeb; +} + +/* 警告框 */ +.alert { + -webkit-border-radius: 2px; + border-radius: 2px; +} +.alert .alert-link:hover { + text-decoration: underline; +} + +/* 分页 */ +.pagination > li > a, +.pagination > li > span { + padding: 0px 8px; + margin: 0 3px; + color: #6c757d; + border-color: #dee2e6; + line-height: 29px; + min-width: 31px; + text-align: center; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 0; + min-width: 26px; + line-height: 24px; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 0; + min-width: 37px; + line-height: 35px; +} +.pagination > li > a:hover, +.pagination > li > a:focus +.pagination > li > span:hover, +.pagination > li > span:focus { + background-color: #f9fafb; + color: #4d5259; +} +.pagination > li:first-child a, +.pagination > li:first-child span { + -webkit-border-radius: 2px; + border-radius: 2px; +} +.pagination > li:last-child a, +.pagination > li:last-child span { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +.pagination > .active > a, +.pagination > .active > a:focus, +.pagination > .active > a:hover, +.pagination > .active > span, +.pagination > .active > span:focus, +.pagination > .active > span:hover { + background-color: #33cabb; + border-color: #33cabb; +} +.pagination > .disabled > a, +.pagination > .disabled > a:focus, +.pagination > .disabled > a:hover, +.pagination > .disabled > span, +.pagination > .disabled > span:focus, +.pagination > .disabled > span:hover { + color: #6c757d; + opacity: 0.6; +} +.pagination.no-border > li a, +.pagination.no-border > li span { + border: none; +} +.pagination-circle > li a, +.pagination-circle > li span { + -webkit-border-radius: 50% !important; + border-radius: 50% !important; +} +.pagination.no-gutters > li a, +.pagination.no-gutters > li span { + margin: 0; + margin-left: -1px; + -webkit-border-radius: 0 !important; + border-radius: 0 !important; +} + +.pager li > a, +.pager li > span { + -webkit-border-radius: 2px; + border-radius: 2px; + background-color: #fcfdfe; + border-color: #ebebeb; + color: #8b95a5; +} +.pager li > a:hover, +.pager li > a:focus{ + background-color: #f9fafb; + color: #4d5259 +} +.pager li > a:active, +.pager li > a.active { + background-color: #f9fafb; + color: #4d5259 +} +.pager .disabled > a, +.pager .disabled > a:focus, +.pager .disabled > a:hover, +.pager .disabled > span { + opacity: .6; + background-color: #fcfdfe; +} + +/* 按钮 */ +.btn-w-xs { + width: 80px +} +.btn-w-sm { + width: 100px +} +.btn-w-md { + width: 120px +} +.btn-w-lg { + width: 145px +} +.btn-w-xl { + width: 180px +} +.btn { + color: #8b95a5; + padding: 8px 12px; + letter-spacing: 1px; + border-radius: 2px; + background-color: #fff; + outline: none !important; + -webkit-transition: 0.15s linear; + transition: 0.15s linear +} +.btn:focus, +.btn.focus, +.btn:active, +.btn.active { + -webkit-box-shadow: none !important; + box-shadow: none !important +} +.btn-default { + background-color: #fcfdfe; + border-color: #ebebeb; + color: #8b95a5 +} +.btn-default:hover { + background-color: #f9fafb; + border-color: #ebebeb; + color: #4d5259 +} +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.show>.btn-default.dropdown-toggle, +.open>.btn-default.dropdown-toggle { + background-color: #f9fafb!important; + border-color: #ebebeb!important; + color: #4d5259 +} +.btn-default:not([disabled]):not(.disabled).active, +.btn-default:not([disabled]):not(.disabled):active, +.show>.btn-default.dropdown-toggle { + background-color: #f9fafb!important; + border-color: #ebebeb!important; + color: #4d5259; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-default.disabled, +.btn-default:disabled { + background-color: #fcfdfe; + border-color: #ebebeb; + opacity: 0.5 +} +.btn-primary { + background-color: #33cabb; + border-color: #33cabb; + color: #fff!important; +} +.btn-primary:hover { + background-color: #52d3c7; + border-color: #52d3c7; +} +.btn-primary:focus, +.btn-primary.focus, +.btn-primary.active, +.btn-primary:active, +.open>.dropdown-toggle.btn-primary { + background-color: #52d3c7!important; + border-color: #52d3c7!important; +} +.btn-primary.disabled, +.btn-primary:disabled { + background-color: #33cabb; + border-color: #33cabb; + opacity: 0.5 +} +.btn-primary:not([disabled]):not(.disabled).active, +.btn-primary:not([disabled]):not(.disabled):active, +.show>.btn-primary.dropdown-toggle { + background-color: #2ba99d!important; + border-color: #2ba99d!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-primary.disabled.focus, +.btn-primary.disabled:focus, +.btn-primary.disabled:hover, +.btn-primary[disabled].focus, +.btn-primary[disabled]:focus, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary.focus, +fieldset[disabled] .btn-primary:focus, +fieldset[disabled] .btn-primary:hover { + background-color: #26BBA8; + border-color: #26BBA8; +} +.btn-success { + background-color: #15c377; + border-color: #15c377; + color: #fff!important; +} +.btn-success:hover { + background-color: #16d17f; + border-color: #16d17f; +} +.btn-success:focus, +.btn-success.focus, +.btn-success.active, +.btn-success:active, +.open>.dropdown-toggle.btn-success { + background-color: #16d17f!important; + border-color: #16d17f!important; +} +.btn-success.disabled,.btn-success:disabled { + background-color: #15c377; + border-color: #15c377; + opacity: 0.5 +} +.btn-success:not([disabled]):not(.disabled).active, +.btn-success:not([disabled]):not(.disabled):active, +.show>.btn-success.dropdown-toggle { + background-color: #14b56f!important; + border-color: #14b56f!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-success.disabled.focus, +.btn-success.disabled:focus, +.btn-success.disabled:hover, +.btn-success[disabled].focus, +.btn-success[disabled]:focus, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success.focus, +fieldset[disabled] .btn-success:focus, +fieldset[disabled] .btn-success:hover { + background-color: #0FB25F; + border-color: #0FB25F; +} +.btn-info { + background-color: #48b0f7; + border-color: #48b0f7; + color: #fff!important; +} +.btn-info:hover { + background-color: #65bdf8; + border-color: #65bdf8; +} +.btn-info:focus, +.btn-info.focus, +.btn-info.active, +.btn-info:active, +.open>.dropdown-toggle.btn-info { + background-color: #65bdf8!important; + border-color: #65bdf8!important; +} +.btn-info.disabled, +.btn-info:disabled { + background-color: #48b0f7; + border-color: #48b0f7; + opacity: 0.5 +} +.btn-info:not([disabled]):not(.disabled).active, +.btn-info:not([disabled]):not(.disabled):active, +.show>.btn-info.dropdown-toggle { + background-color: #2ba3f6!important; + border-color: #2ba3f6!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-info.disabled.focus, +.btn-info.disabled:focus, +.btn-info.disabled:hover, +.btn-info[disabled].focus, +.btn-info[disabled]:focus, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info.focus, +fieldset[disabled] .btn-info:focus, +fieldset[disabled] .btn-info:hover { + background-color: #379BF5; + border-color: #379BF5; +} +.btn-warning { + background-color: #faa64b; + border-color: #faa64b; + color: #fff!important; +} +.btn-warning:hover { + background-color: #fbb264; + border-color: #fbb264; +} +.btn-warning:focus, +.btn-warning.focus, +.btn-warning.active, +.btn-warning:active, +.open>.dropdown-toggle.btn-warning { + background-color: #fbb264!important; + border-color: #fbb264!important; +} +.btn-warning.disabled,.btn-warning:disabled { + background-color: #faa64b; + border-color: #faa64b; + opacity: 0.5 +} +.btn-warning:not([disabled]):not(.disabled).active, +.btn-warning:not([disabled]):not(.disabled):active, +.show>.btn-warning.dropdown-toggle { + background-color: #f99a32!important; + border-color: #f99a32!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-warning.disabled.focus, +.btn-warning.disabled:focus, +.btn-warning.disabled:hover, +.btn-warning[disabled].focus, +.btn-warning[disabled]:focus, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning.focus, +fieldset[disabled] .btn-warning:focus, +fieldset[disabled] .btn-warning:hover { + background-color: #F89038; + border-color: #F89038; +} +.btn-danger { + background-color: #f96868; + border-color: #f96868; + color: #fff!important; +} +.btn-danger:hover { + background-color: #fa8181; + border-color: #fa8181; +} +.btn-danger:focus, +.btn-danger.focus, +.btn-danger.active, +.btn-danger:active, +.open>.dropdown-toggle.btn-danger { + background-color: #fa8181!important; + border-color: #fa8181!important; +} +.btn-danger.disabled, +.btn-danger:disabled { + background-color: #f96868; + border-color: #f96868; + opacity: 0.5 +} +.btn-danger:not([disabled]):not(.disabled).active, +.btn-danger:not([disabled]):not(.disabled):active, +.show>.btn-danger.dropdown-toggle { + background-color: #f84f4f!important; + border-color: #f84f4f!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-danger.disabled.focus, +.btn-danger.disabled:focus, +.btn-danger.disabled:hover, +.btn-danger[disabled].focus, +.btn-danger[disabled]:focus, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger.focus, +fieldset[disabled] .btn-danger:focus, +fieldset[disabled] .btn-danger:hover { + background-color: #F75252; + border-color: #F75252; +} +.btn-secondary { + color: #4d5259 !important; + background-color: #e4e7ea; + border-color: #e4e7ea; +} +.btn-secondary:hover { + background-color: #edeff1; + border-color: #edeff1; +} +.btn-secondary:focus, +.btn-secondary.focus, +.btn-secondary.active, +.btn-secondary:active, +.open>.dropdown-toggle.btn-secondary { + background-color: #edeff1!important; + border-color: #edeff1!important; +} +.btn-secondary.disabled, +.btn-secondary:disabled { + background-color: #e4e7ea; + border-color: #e4e7ea; + opacity: 0.5 +} +.btn-secondary:not([disabled]):not(.disabled).active, +.btn-secondary:not([disabled]):not(.disabled):active, +.show>.btn-secondary.dropdown-toggle { + background-color: #dbdfe3!important; + border-color: #dbdfe3!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-secondary.disabled.focus, +.btn-secondary.disabled:focus, +.btn-secondary.disabled:hover, +.btn-secondary[disabled].focus, +.btn-secondary[disabled]:focus, +.btn-secondary[disabled]:hover, +fieldset[disabled] .btn-secondary.focus, +fieldset[disabled] .btn-secondary:focus, +fieldset[disabled] .btn-secondary:hover { + background-color: #DBDFE3; + border-color: #DBDFE3; +} +.btn-link { + color: #48b0f7; + background-color: transparent; + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + text-decoration: none; + color: #e4e7ea +} +.btn-purple { + background-color: #926dde; + border-color: #926dde; + color: #fff!important; +} +.btn-purple:hover { + background-color: #a282e3; + border-color: #a282e3; +} +.btn-purple:focus, +.btn-purple.focus, +.btn-purple.active, +.btn-purple:active, +.open>.dropdown-toggle.btn-purple { + background-color: #a282e3!important; + border-color: #a282e3!important; +} +.btn-purple.disabled, +.btn-purple:disabled { + background-color: #926dde; + border-color: #926dde; + opacity: 0.5 +} +.btn-purple:not([disabled]):not(.disabled).active, +.btn-purple:not([disabled]):not(.disabled):active, +.show>.btn-purple.dropdown-toggle { + background-color: #8258d9!important; + border-color: #8258d9!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-purple.disabled.focus, +.btn-purple.disabled:focus, +.btn-purple.disabled:hover, +.btn-purple[disabled].focus, +.btn-purple[disabled]:focus, +.btn-purple[disabled]:hover, +fieldset[disabled] .btn-purple.focus, +fieldset[disabled] .btn-purple:focus, +fieldset[disabled] .btn-purple:hover { + background-color: #7A56D4; + border-color: #7A56D4; +} +.btn-pink { + background-color: #f96197; + border-color: #f96197; + color: #fff!important; +} +.btn-pink:hover { + background-color: #fa75a4; + border-color: #fa75a4; +} +.btn-pink:focus, +.btn-pink.focus, +.btn-pink.active, +.btn-pink:active, +.open>.dropdown-toggle.btn-pink { + background-color: #fa75a4!important; + border-color: #fa75a4!important; +} +.btn-pink.disabled, +.btn-pink:disabled { + background-color: #f96197; + border-color: #f96197; + opacity: 0.5 +} +.btn-pink:not([disabled]):not(.disabled).active, +.btn-pink:not([disabled]):not(.disabled):active, +.show>.btn-pink.dropdown-toggle { + background-color: #f84d8a!important; + border-color: #f84d8a!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-pink.disabled.focus, +.btn-pink.disabled:focus, +.btn-pink.disabled:hover, +.btn-pink[disabled].focus, +.btn-pink[disabled]:focus, +.btn-pink[disabled]:hover, +fieldset[disabled] .btn-pink.focus, +fieldset[disabled] .btn-pink:focus, +fieldset[disabled] .btn-pink:hover { + background-color: #F74B80; + border-color: #F74B80; +} +.btn-cyan { + background-color: #57c7d4; + border-color: #57c7d4; + color: #fff!important; +} +.btn-cyan:hover { + background-color: #77d2dc; + border-color: #77d2dc; +} +.btn-cyan:focus, +.btn-cyan.focus, +.btn-cyan.active, +.btn-cyan:active, +.open>.dropdown-toggle.btn-cyan { + background-color: #77d2dc!important; + border-color: #77d2dc!important; +} +.btn-cyan.disabled, +.btn-cyan:disabled { + background-color: #57c7d4; + border-color: #57c7d4; + opacity: 0.5 +} +.btn-cyan:not([disabled]):not(.disabled).active, +.btn-cyan:not([disabled]):not(.disabled):active, +.show>.btn-cyan.dropdown-toggle { + background-color: #37bccc!important; + border-color: #37bccc!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-cyan.disabled.focus, +.btn-cyan.disabled:focus, +.btn-cyan.disabled:hover, +.btn-cyan[disabled].focus, +.btn-cyan[disabled]:focus, +.btn-cyan[disabled]:hover, +fieldset[disabled] .btn-cyan.focus, +fieldset[disabled] .btn-cyan:focus, +fieldset[disabled] .btn-cyan:hover { + background-color: #42B7C7; + border-color: #42B7C7; +} +.btn-yellow { + background-color: #fcc525; + border-color: #fcc525; + color: #fff!important; +} +.btn-yellow:hover { + background-color: #fdd04d; + border-color: #fdd04d; +} +.btn-yellow:focus, +.btn-yellow.focus, +.btn-yellow.active, +.btn-yellow:active, +.open>.dropdown-toggle.btn-yellow { + background-color: #fdd04d!important; + border-color: #fdd04d!important; +} +.btn-yellow.disabled, +.btn-yellow:disabled { + background-color: #fcc525; + border-color: #fcc525; + opacity: 0.5 +} +.btn-yellow:not([disabled]):not(.disabled).active, +.btn-yellow:not([disabled]):not(.disabled):active, +.show>.btn-yellow.dropdown-toggle { + background-color: #f5b703!important; + border-color: #f5b703!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-yellow.disabled.focus, +.btn-yellow.disabled:focus, +.btn-yellow.disabled:hover, +.btn-yellow[disabled].focus, +.btn-yellow[disabled]:focus, +.btn-yellow[disabled]:hover, +fieldset[disabled] .btn-yellow.focus, +fieldset[disabled] .btn-yellow:focus, +fieldset[disabled] .btn-yellow:hover { + background-color: #FCB41B; + border-color: #FCB41B; +} +.btn-brown { + background-color: #8d6658; + border-color: #8d6658; + color: #fff!important; +} +.btn-brown:hover { + background-color: #9d7162; + border-color: #9d7162; +} +.btn-brown:focus, +.btn-brown.focus, +.btn-brown.active, +.btn-brown:active, +.open>.dropdown-toggle.btn-brown { + background-color: #8d6658!important; + border-color: #8d6658!important; +} +.btn-brown.disabled, +.btn-brown:disabled { + background-color: #8d6658; + border-color: #8d6658; + opacity: 0.5 +} +.btn-brown:not([disabled]):not(.disabled).active, +.btn-brown:not([disabled]):not(.disabled):active, +.show>.btn-brown.dropdown-toggle { + background-color: #7d5b4e!important; + border-color: #7d5b4e!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-brown.disabled.focus, +.btn-brown.disabled:focus, +.btn-brown.disabled:hover, +.btn-brown[disabled].focus, +.btn-brown[disabled]:focus, +.btn-brown[disabled]:hover, +fieldset[disabled] .btn-brown.focus, +fieldset[disabled] .btn-brown:focus, +fieldset[disabled] .btn-brown:hover { + background-color: #755043; + border-color: #755043; +} +.btn-dark { + background-color: #465161; + border-color: #465161; + color: #fff!important; +} +.btn-dark:hover { + background-color: #515d70; + border-color: #515d70; +} +.btn-dark:focus, +.btn-dark.focus, +.btn-dark.active, +.btn-dark:active, +.open>.dropdown-toggle.btn-dark { + background-color: #515d70!important; + border-color: #515d70!important; +} +.btn-dark.disabled, +.btn-dark:disabled { + background-color: #465161; + border-color: #465161; + opacity: 0.5 +} +.btn-dark:not([disabled]):not(.disabled).active, +.btn-dark:not([disabled]):not(.disabled):active, +.show>.btn-dark.dropdown-toggle { + background-color: #3b4552!important; + border-color: #3b4552!important; + -webkit-box-shadow: none; + box-shadow: none +} +.btn-dark.disabled.focus, +.btn-dark.disabled:focus, +.btn-dark.disabled:hover, +.btn-dark[disabled].focus, +.btn-dark[disabled]:focus, +.btn-dark[disabled]:hover, +fieldset[disabled] .btn-dark.focus, +fieldset[disabled] .btn-dark:focus, +fieldset[disabled] .btn-dark:hover { + background-color: #353E4B; + border-color: #353E4B; +} +.btn-round { + -webkit-border-radius: 10rem; +} +.btn-label { + position: relative; + padding-left: 52px; + overflow: hidden; +} +.btn-label label { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 36px; + line-height: 1.5; + padding-top: 5px; + padding-bottom: 5px; + background-color: rgba(0,0,0,0.1); + cursor: pointer; + margin-bottom: 0; +} +.btn-label label i { + font-size: 16px; +} +.btn-group-xs>.btn, +.btn-xs { + font-size: 12px; + padding: 2px 6px; + line-height: 18px +} +.btn-group-sm>.btn, +.btn-sm { + font-size: 12px; + padding: 4px 8px; + line-height: 20px +} +.btn-group-lg>.btn, +.btn-lg { + font-size: 16px; + padding: 7px 20px; + line-height: 32px +} +.btn-sm.btn-label { + padding-left: 42px; +} +.btn-sm.btn-label label { + line-height: 20px; + width: 30px; +} +.btn-lg.btn-label { + padding-left: 58px; +} +.btn-lg.btn-label label { + line-height: 36px; + width: 36px; +} +.btn-xs.btn-label { + padding-left: 36px; +} +.btn-xs.btn-label label { + line-height: 14px; + width: 28px; +} +.btn-group-justified { + display: -webkit-box; + display: flex; + -webkit-box-pack: justify; + justify-content: space-between; +} +.btn-group-justified .btn, +.btn-group-justified .btn-group { + width: 100%; +} +.btn-group-round .btn:first-child { + border-top-left-radius: 10rem; + border-bottom-left-radius: 10rem; +} +.btn-group-round .btn:last-child { + border-top-right-radius: 10rem; + border-bottom-right-radius: 10rem; +} + +/* 背景色 */ +.bg-primary { + background-color: #33cabb !important; + color: #fff!important; +} +.bg-secondary { + background-color: #e4e7ea !important; + color: #fff!important; +} +.bg-success { + background-color: #15c377 !important; + color: #fff!important; +} +.bg-info { + background-color: #48b0f7 !important; + color: #fff!important; +} +.bg-warning { + background-color: #faa64b !important; + color: #fff!important; +} +.bg-danger { + background-color: #f96868 !important; + color: #fff!important; +} +.bg-pink { + background-color: #f96197 !important; + color: #fff!important; +} +.bg-purple { + background-color: #926dde !important; + color: #fff!important; +} +.bg-brown { + background-color: #8d6658 !important; + color: #fff!important; +} +.bg-cyan { + background-color: #57c7d4 !important; + color: #fff!important; +} +.bg-yellow { + background-color: #fcc525 !important; + color: #fff!important; +} +.bg-gray { + background-color: #868e96 !important; + color: #fff!important; +} +.bg-dark { + background-color: #465161 !important; + color: #fff!important; +} +.bg-white { + background-color: #fff !important +} +.bg-lightest { + background-color: #fcfdfe !important +} +.bg-lighter { + background-color: #f9fafb !important +} +.bg-light { + background-color: #f5f6f7 !important +} +.bg-translucent { + background-color: rgba(255, 255, 255, 0.175) +} +.bg-transparent { + background-color: transparent !important +} + +/* 字体颜色 */ +.text-primary { + color: #33cabb !important +} +.text-secondary { + color: #e4e7ea !important +} +.text-success { + color: #15c377 !important +} +.text-info { + color: #48b0f7 !important +} +.text-warning { + color: #faa64b !important +} +.text-danger { + color: #f96868 !important +} +.text-pink { + color: #f96197 !important +} +.text-purple { + color: #926dde !important +} +.text-brown { + color: #8d6658 !important +} +.text-cyan { + color: #57c7d4 !important +} +.text-yellow { + color: #fcc525 !important +} +.text-gray { + color: #868e96 !important +} +.text-dark { + color: #465161 !important +} +.text-default { + color: #4d5259 !important +} +.text-muted { + color: #868e96 !important +} +.text-light { + color: #616a78 !important +} +.text-lighter { + color: #a5b3c7 !important +} +.text-fade { + color: rgba(77,82,89,0.7) !important +} +.text-fader { + color: rgba(77,82,89,0.5) !important +} +.text-fadest { + color: rgba(77,82,89,0.4) !important +} +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important +} +.text-white { + color: #ffffff!important +} +.text-transparent { + color: transparent !important +} +a.text-primary:hover,a.text-primary:focus { + color: #33cabb !important +} +a.text-secondary:hover,a.text-secondary:focus { + color: #e4e7ea !important +} +a.text-info:hover,a.text-info:focus { + color: #48b0f7 !important +} +a.text-success:hover,a.text-success:focus { + color: #15c377 !important +} +a.text-warning:hover,a.text-warning:focus { + color: #faa64b !important +} +a.text-danger:hover,a.text-danger:focus { + color: #f96868 !important +} + +/* 分割线 */ +.divider { + display: -webkit-box; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-flex: 0; + flex: 0 1; + color: #8b95a5; + font-size: 11px; + letter-spacing: .5px; + margin: 2rem auto; + width: 100%; +} +.divider::before, +.divider::after { + content: ''; + -webkit-box-flex: 1; + flex-grow: 1; + border-top: 1px solid #ebebeb; +} +.divider::before { + margin-right: 16px; +} +.divider::after { + margin-left: 16px; +} + +/* 其他 */ +.media img { + max-width: inherit; +} +hr { + border-top-color: rgba(77,82,89,0.05); + margin: 2rem auto; +} +dd, dt { + line-height: 1.75; +} +.lead { + font-size: 16px; + line-height: 1.75; +} +.irs { + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; +} + +/** ---------------------------------- + * 辅助类 + -------------------------------------- */ +/* margin */ +.m-0 { + margin: 0px!important; +} +.m-t-0 { + margin-top: 0px!important; +} +.m-b-0 { + margin-bottom: 0px!important; +} +.m-5 { + margin: 5px!important; +} +.m-t-5 { + margin-top: 5px!important; +} +.m-r-5 { + margin-right: 5px!important; +} +.m-b-5 { + margin-bottom: 5px!important; +} +.m-l-5 { + margin-left: 5px!important; +} +.m-10 { + margin: 10px!important; +} +.m-tb-10 { + margin: 10px 0px!important; +} +.m-lr-10 { + margin: 0px 10px!important; +} +.m-t-10 { + margin-top: 10px!important; +} +.m-r-10 { + margin-right: 10px!important; +} +.m-b-10 { + margin-bottom: 10px!important; +} +.m-l-10 { + margin-left: 10px!important; +} +.m-15 { + margin: 15px!important; +} +.m-tb-15 { + margin: 15px 0px!important; +} +.m-lr-15 { + margin: 0px 15px!important; +} +.m-t-15 { + margin-top: 15px!important; +} +.m-r-15 { + margin-right: 15px!important; +} +.m-b-15 { + margin-bottom: 15px!important; +} +.m-l-15 { + margin-left: 15px!important; +} + +/* padding */ +.p-0 { + padding: 0px!important; +} +.p-t-0 { + padding-top: 0px!important; +} +.p-b-0 { + padding-bottom: 0px!important; +} +.p-10 { + padding: 10px!important; +} +.p-tb-10 { + padding: 10px 0px!important; +} +.p-lr-10 { + padding: 0px 10px!important; +} +.p-t-10 { + padding-top: 10px!important; +} +.p-r-10 { + padding-right: 10px!important; +} +.p-b-10 { + padding-bottom: 10px!important; +} +.p-l-10 { + padding-left: 10px!important; +} +.p-15 { + padding: 15px!important; +} +.p-tb-15 { + padding: 15px 0px!important; +} +.p-lr-15 { + padding: 0px 15px!important; +} +.p-t-15 { + padding-top: 15px!important; +} +.p-r-15 { + padding-right: 15px!important; +} +.p-b-15 { + padding-bottom: 15px!important; +} +.p-l-15 { + padding-left: 15px!important; +} +.p-l-20 { + padding-left: 20px!important; +} +.p-l-40 { + padding-left: 40px!important; +} + +/* 字体大小 */ +.fa-1-5x { + font-size: 1.5em; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-6x { + font-size: 6em; +} +.fa-7x { + font-size: 7em; +} +.fa-8x { + font-size: 8em; +} +.fa-9x { + font-size: 9em; +} +.fa-10x { + font-size: 10em; +} + +/* 宽度 */ +.w-5 { + width: 5%; +} +.w-10 { + width: 10%; +} +.w-15 { + width: 15%; +} +.w-20 { + width: 20%; +} +.w-25 { + width: 25%; +} +.w-30 { + width: 30%; +} +.w-35 { + width: 35%; +} +.w-40 { + width: 40%; +} +.w-45 { + width: 45%; +} +.w-50 { + width: 50%; +} +.w-55 { + width: 55%; +} +.w-60 { + width: 60%; +} +.w-65 { + width: 65%; +} +.w-70 { + width: 70%; +} +.w-75 { + width: 75%; +} +.w-80 { + width: 80%; +} +.w-85 { + width: 85%; +} +.w-90 { + width: 90%; +} +.w-95 { + width: 95%; +} +.w-100 { + width: 100%; +} + +/* 边框 */ +.no-border-tb { + border-top: 0px; + border-bottom: 0px +} +.no-border-lr { + border-left: 0px; + border-right: 0px; +} + +/* 圆点 */ +.badge-dot { + min-width: inherit; + padding: 0px; + width: 8px; + height: 8px; + -webkit-border-radius: 100%; + border-radius: 100%; +} +.badge-dot:empty { + display: inline-block; +} +.badge-dot-sm { + width: 6px; + height: 6px; +} +.badge-dot-lg { + width: 10px; + height: 10px; +} +.badge-dot-xl { + width: 12px; + height: 12px; +} + +/* 其他辅助类 */ +.d-none { + display: none !important; +} +.d-inline { + display: inline !important; +} +.d-inline-block { + display: inline-block !important; +} +.d-block { + display: block !important; +} +.d-table { + display: table !important; +} +.d-table-row { + display: table-row !important; +} +.d-table-cell { + display: table-cell !important; +} +.position-static { + position: static !important; +} +.position-relative { + position: relative !important; +} +.position-absolute { + position: absolute !important; +} +.position-fixed { + position: fixed !important; +} + +/* 图库 */ +.masonry-grid { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 30px; + -moz-column-gap: 30px; + column-gap: 30px; +} +.masonry-item { + display: block; + -webkit-column-break-inside: avoid; + break-inside: avoid; + padding-bottom: 30px; +} +.masonry-grid { + -webkit-column-gap: 16px; + -moz-column-gap: 16px; + column-gap: 16px; +} +.masonry-grid .masonry-item { + padding-bottom: 16px; +} + +/** ---------------------------------- + * 滚动条样式 + -------------------------------------- */ +.ps { + overflow: hidden !important; + overflow-anchor: none; + -ms-overflow-style: none; + touch-action: auto; + -ms-touch-action: auto; +} +.ps__rail-x { + display: none; + opacity: 0; + transition: background-color .2s linear, opacity .2s linear; + -webkit-transition: background-color .2s linear, opacity .2s linear; + height: 6px; + bottom: 2px; + position: absolute; +} + +.ps__rail-y { + display: none; + opacity: 0; + transition: background-color .2s linear, opacity .2s linear; + -webkit-transition: background-color .2s linear, opacity .2s linear; + width: 6px; + right: 2px; + position: absolute; +} +.ps--active-x > .ps__rail-x, +.ps--active-y > .ps__rail-y { + display: block; + background-color: transparent; +} +.ps:hover > .ps__rail-x, +.ps:hover > .ps__rail-y, +.ps--focus > .ps__rail-x, +.ps--focus > .ps__rail-y, +.ps--scrolling-x > .ps__rail-x, +.ps--scrolling-y > .ps__rail-y { + opacity: 0.6; +} +.ps .ps__rail-x:hover, +.ps .ps__rail-y:hover, +.ps .ps__rail-x:focus, +.ps .ps__rail-y:focus, +.ps .ps__rail-x.ps--clicking, +.ps .ps__rail-y.ps--clicking { + background-color: #eee; + opacity: 0.9; +} +.ps__thumb-x { + background-color: #aaa; + border-radius: 6px; + transition: background-color .2s linear, height .2s ease-in-out; + -webkit-transition: background-color .2s linear, height .2s ease-in-out; + height: 3px; + bottom: 0px; + position: absolute; +} +.ps__thumb-y { + background-color: #aaa; + border-radius: 6px; + transition: background-color .2s linear, width .2s ease-in-out; + -webkit-transition: background-color .2s linear, width .2s ease-in-out; + width: 3px; + right: 0px; + position: absolute; +} +.ps__rail-x:hover > .ps__thumb-x, +.ps__rail-x:focus > .ps__thumb-x, +.ps__rail-x.ps--clicking .ps__thumb-x { + background-color: #999; + height: 6px; +} +.ps__rail-y:hover > .ps__thumb-y, +.ps__rail-y:focus > .ps__thumb-y, +.ps__rail-y.ps--clicking .ps__thumb-y { + background-color: #999; + width: 6px; +} +@supports (-ms-overflow-style: none) { + .ps { + overflow: auto !important; + } +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .ps { + overflow: auto !important; + } +} + +/** ---------------------------------- + * 左侧导航 + -------------------------------------- */ +.lyear-layout-sidebar { + position: fixed; + top: 0; + bottom: 0; + z-index: 5; + display: block; + width: 240px; + font-weight: 500; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: 0.3s transform; + transition: 0.3s transform; + transform: translateX(0); + -webkit-box-shadow: 0px 0px 5px rgba(0,0,0,0.08); + -moz-box-shadow: 0px 0px 5px rgba(0,0,0,0.08); + box-shadow: 0px 0px 5px rgba(0,0,0,0.08); +} +.lyear-layout-sidebar-close .lyear-layout-sidebar { + transform: translateX(-100%); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.lyear-layout-sidebar-close .lyear-layout-header, +.lyear-layout-sidebar-close .lyear-layout-content { + padding-left: 0px; +} +.lyear-layout-sidebar-scroll { + height: -moz-calc(100% - 68px); + height: -webkit-calc(100% - 68px); + height: calc(100% - 68px); + position: relative; + background-color: #fff; +} + +/* 侧边栏开关 */ +.lyear-aside-toggler { + margin-right: .25rem; + padding: .25rem .95rem .25rem .25rem; + line-height: 1.5; + cursor: pointer; +} +.lyear-aside-toggler .lyear-toggler-bar { + display: block; + height: 2px; + width: 20px; + background-color: #4d5259; + margin: 4px 0px; + -webkit-transition: 0.3s; + transition: 0.3s; +} +.lyear-aside-toggler .lyear-toggler-bar:nth-child(2) { + width: 15px; +} +.lyear-aside-toggler:hover .lyear-toggler-bar:nth-child(2) { + width: 20px; +} +.lyear-layout-sidebar-close .lyear-aside-toggler .lyear-toggler-bar { + width: 20px; +} + +/* logo */ +.sidebar-header { + position: relative; + overflow: hidden; + z-index: 999; + background-color: #fff; + width: 100%; + -webkit-box-shadow: 0 1px 1px -1px rgba(77,82,89,0.15); + box-shadow: 0 1px 1px -1px rgba(77,82,89,0.15); +} +.sidebar-header:before, .sidebar-header:after { + content: " "; + display: table; +} +.sidebar-header a { + display: block; + height: auto; + width: 100%; + text-align: center; +} +.sidebar-header a img { + max-width: 240px; + margin: 16px 0px; +} +.sidebar-main { + -webkit-transform: translateZ(0); + transform: translateZ(0); +} +.nav-drawer li a { + padding-right: 24px; + padding-left: 52.99999px; + color: inherit; + font-weight: 500; +} +.nav-drawer > li > a { + border-right: 3px solid transparent; + padding-top: 14px; + padding-bottom: 13px; +} +.nav-drawer > .active > a { + background-color: rgba(0,0,0,.0125); + border-color: #33cabb; +} +.nav-drawer > li.active > a { + background-color: rgba(0,0,0,.0125)!important; +} +.nav-drawer > .active > a:hover, +.nav-drawer > .active > a:focus, +.nav-drawer > .active > a:active { + background-color: rgba(0,0,0,.0125); + border-color: #33cabb; +} +.nav-drawer .nav-subnav > li.active > a, +.nav-drawer .nav-subnav > li > a:hover { + color: #33cabb; + background-color: transparent; +} +.nav-drawer > li > a > i { + position: absolute; + left: 21px; + top: 11px; + font-size: 1.25em; +} +.nav-drawer ul li ul { + padding-left: 15px; +} +.nav-item-has-subnav > a:after { + position: absolute; + right: 24px; + font-family: 'Material Design Icons'; + font-size: 10px; + line-height: 1.75; + content: '\f142'; + -webkit-transition: -webkit-transform 0.3s linear; + transition: -webkit-transform 0.3s linear; + transition: transform 0.3s linear; + transition: transform 0.3s linear, -webkit-transform 0.3s linear; +} +.nav-item-has-subnav.open > a:after { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} +.nav-item-has-subnav.open > .nav-subnav { + display: block; +} +.nav-subnav { + display: none; + margin-top: 8px; + margin-bottom: 8px; +} + +/* 左侧版权信息 */ +.sidebar-footer { + bottom: 0; + width: 100%; + height: 96px; + border-top: 1px solid rgba(77,82,89,0.05); + margin-top: 24px; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 24px; + padding-left: 24px; + font-size: 13px; + line-height: 24px; +} + +/** ---------------------------------- + * 头部信息 + -------------------------------------- */ +.lyear-layout-header { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 4; + padding-left: 240px; + background-color: #fff; + -webkit-transition: padding 0.3s; + transition: padding 0.3s; + -webkit-box-shadow: 4px 0 5px rgba(0, 0, 0, 0.035); + -moz-box-shadow: 4px 0 5px rgba(0, 0, 0, 0.035); + box-shadow: 4px 0 5px rgba(0, 0, 0, 0.035); +} +.lyear-layout-header .navbar { + position: relative; + min-height: 64px; + margin-bottom: 0; + border: 0px; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} +.lyear-layout-header .navbar-default { + background-color: transparent; +} +.topbar { + display: -webkit-box; + display: flex; + -webkit-box-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + align-items: center; + min-height: 64px; + padding: 0 15px; +} +.topbar .topbar-left { + display: -webkit-box; + display: flex; + -webkit-box-align: center; + align-items: center; +} +.topbar .topbar-right { + display: -webkit-box; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + flex-direction: row-reverse; + list-style: none; + margin: 0px; + padding: 0px; +} +.topbar-right > li > a { + position: relative; + display: block; + padding: 10px 0px 10px 15px; +} +.navbar-page-title { + display: inline-block; + margin-right: 20px; + padding-top: 20px; + padding-bottom: 20px; + font-size: 16px; +} + +/* 头像相关 */ +.img-avatar { + display: inline-block !important; + width: 64px; + height: 64px; + line-height: 64px; + text-align: center; + vertical-align: middle; + -webkit-border-radius: 50%; + border-radius: 50%; +} +.img-avatar-48 { + width: 48px; + height: 48px; + line-height: 48px; +} +.edit-avatar { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; +} +.avatar-divider { + display: inline-block; + border-left: 1px solid rgba(77,82,89,0.07); + height: 50px; + align-self: center; + margin: 0px 20px; +} +.edit-avatar-content { + display: inline-block; +} + + +/** ---------------------------------- + * 主要内容 + -------------------------------------- */ +.lyear-layout-content { + height: 100%; + width: 100%; + padding-top: 68px; + padding-left: 240px; + -webkit-transition: padding 0.3s; + transition: padding 0.3s; +} +.lyear-layout-content .container-fluid { + padding-top: 15px; + padding-bottom: 15px; +} + +/* card */ +.card { + margin-bottom: 24px; + background-color: #fff; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.035); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.035); +} +.card-header { + width: 100%; + margin: 0; + padding: 15px 24px; + border-bottom: 1px solid rgba(77,82,89,0.05); +} +.card-header > * { + margin: 0; + display: table-cell; + vertical-align: middle; +} +.card-header:after, +.card-footer:after { + display: table; + content: " "; + clear: both; +} +.card-body { + padding: 24px 24px; +} +.card-header .h4, +.card-header h4 { + font-size: 16px; + float: left; +} +.card-header + .card-body { + padding-top: 15px; +} +.card-header[class*='bg'] .card-actions > li > a:not(.label), +.card-header[class*='bg'] .card-actions > li > button, +.card-header[class*='bg'] h1, +.card-header[class*='bg'] h2, +.card-header[class*='bg'] h3, +.card-header[class*='bg'] h4, +.card-header[class*='bg'] h5, +.card-header[class*='bg'] h6, +.card-header[class*='bg'] .h1, +.card-header[class*='bg'] .h2, +.card-header[class*='bg'] .h3, +.card-header[class*='bg'] .h4, +.card-header[class*='bg'] .h5, +.card-header[class*='bg'] .h6 { + color: #ffffff; +} +.card-toolbar { + padding: 24px 24px 0px 24px; + position: relative; +} +.card-toolbar .search-bar { + max-width: 280px; +} +.card-toolbar .dropdown-menu { + min-width: 100%; +} +/* card-actions */ +.card-actions { + float: right; + margin-bottom: 0; + margin-left: auto; + padding: 0; +} +.card-actions > li { + display: inline-block; + padding: 0; +} +.card-actions > li > a:not(.label), +.card-actions > li > button { + color: #86939e; + display: inline-block; + padding: 0; + line-height: 1; + opacity: .7; + vertical-align: middle; + -webkit-transition: opacity 0.15s ease-out; + transition: opacity 0.15s ease-out; +} +.card-actions > li > a:not(.label):hover, +.card-actions > li > button:hover { + text-decoration: none; + opacity: 1; +} +.card-actions > li > a:not(.label):active, +.card-actions > li > button:active { + opacity: .6; +} +.card-actions > li > span { + display: block; +} +.card-actions > li > .label { + line-height: 1.25; +} +.card-actions > li > a:focus { + text-decoration: none; + opacity: 1; +} +.card-actions > li > button { + background: none; + border: none; +} +.card-actions > li.active > a, +.card-actions > li.open > button { + text-decoration: none; + opacity: 1; +} +.card-actions > li + li { + margin-left: 10px; +} +.card .tab-content { + padding: 10px 24px; +} +.card-footer { + background-color: #fcfdfe; + border-top: 1px solid rgba(77,82,89,0.05); + padding: 15px 24px; +} +/* page-tabs */ +.page-tabs.nav-tabs { + padding: 0px 10px; +} +.page-tabs.nav-tabs > li > a { + padding: 15px; +} + +/* 加载动画 */ +#lyear-loading { + position: fixed; + width: 100%; + height: 100%; + z-index: 9990; + background: rgba(0, 0, 0, 0.0325) +} +#lyear-loading .spinner-border { + z-index: 999999; + position: fixed; + left: 50%; + top: 50% +} +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.spinner-border { + display: inline-block; + width: 3rem; + height: 3rem; + vertical-align: text-bottom; + border: 0.125em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite; +} + +/* 步骤条 */ +.nav-step { + display: -webkit-box; + display: flex; + -webkit-box-pack: justify; + justify-content: space-between; + -webkit-box-align: baseline; + align-items: baseline; + padding: 0px; + margin-bottom: 1rem; +} +.step-dots .nav-step-item { + position: relative; + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + -webkit-box-flex: 1; + -webkit-box-align: center; + align-items: center; + flex: 1 1; + padding: 0 12px +} +.step-dots .nav-step-item:first-child a::before { + display: none +} +.step-dots .nav-step-item.complete a, +.step-dots .nav-step-item.complete a::before, +.step-dots .nav-step-item.active a, +.step-dots .nav-step-item.active a::before { + background-color: #dcfcfa +} +.step-dots .nav-step-item.complete a::after, +.step-dots .nav-step-item.active a::after { + background-color: #33cabb; + width: 29px; + height: 29px; + -webkit-transform: translateX(0); + transform: translateX(0); + color: #fff +} +.step-dots .nav-step-item.complete a::after { + width: 29px; + height: 29px; + -webkit-transform: translateX(0); + transform: translateX(0); + color: #fff +} +.step-dots .nav-step-item.active a::after { + width: 13px; + height: 13px; + margin-top: 8px; + -webkit-transform: translateX(8px); + transform: translateX(8px); + color: transparent +} +.step-dots a { + display: -webkit-inline-box; + display: inline-flex; + padding: 0; + margin: 10px 0; + width: 29px; + height: 29px; + max-height: 29px; + border-radius: 50%; + background-color: #f7fafc; + -webkit-transition: .5s; + transition: .5s; + z-index: 1 +} +.step-dots a::before { + content: ''; + position: absolute; + left: calc(-50% + 14.5px); + right: calc(50% + 14.5px); + height: 10px; + margin-top: 9.5px; + background-color: #f7fafc; + cursor: default; + -webkit-transition: .5s; + transition: .5s; +} +.step-dots a::after { + content: "\f12c"; + font-family: "Material Design Icons"; + width: 0; + height: 0; + text-align: center; + font-size: 15px; + position: absolute; + border-radius: 50%; + background-color: transparent; + color: transparent; + -webkit-transform: translate(14.5px, 14.5px); + transform: translate(14.5px, 14.5px); + -webkit-transition: .5s; + transition: .5s; + z-index: 1; + display: -webkit-inline-box; + display: inline-flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center +} +.nav-step-pane.active { + display: block!important; +} +.nav-step-button { + display: -webkit-box; + display: flex; + -webkit-box-pack: justify; + justify-content: space-between; +} +.nav-step-button button.disabled { + opacity: 0; +} + +.nav-step.step-anchor { + justify-content: flex-start; + border: 0; + background: #fcfdfe; + border-radius: 0; + list-style: none; + overflow: hidden; +} +.step-anchor > li > a, +.step-anchor > li > a:hover { + color: #bbb; + text-decoration: none; + padding: 10px 0 10px 45px; + position: relative; + display: block; + border: 0!important; + border-radius: 0; + outline-style: none; + background: #f7fafc; +} +.step-anchor > li > a:before, +.step-anchor > li > a:after { + -webkit-transition: .2s linear; + transition: .2s linear; +} +.step-anchor > li > a:after { + content: " "; + display: block; + width: 0; + height: 0; + border-top: 50px solid transparent; + border-bottom: 50px solid transparent; + border-left: 30px solid #f7fafc; + position: absolute; + top: 50%; + margin-top: -50px; + left: 100%; + z-index: 2 +} +.step-anchor > li > a:before { + content: " "; + display: block; + width: 0; + height: 0; + border-top: 50px solid transparent; + border-bottom: 50px solid transparent; + border-left: 30px solid rgba(77,82,89,0.075); + position: absolute; + top: 50%; + margin-top: -50px; + margin-left: 1px; + left: 100%; + z-index: 1 +} +.step-anchor > li:first-child > a { + padding-left: 15px; +} +.step-anchor > li.active h6, +.step-anchor > li.complete h6 { + color: #fff!important; +} +.step-anchor > li.active > a, +.step-anchor > li.complete > a { + border-color: #33cabb!important; + color: rgba(255, 255, 255, .8)!important; + background: #33cabb!important; +} +.step-anchor > li.active > a:after, +.step-anchor > li.complete > a:after { + border-left: 30px solid #33cabb!important; +} + +/* 多图上传 */ +.lyear-uploads-pic { + display: -webkit-flex; + display: flex; + -webkit-align-items: stretch; + align-items: stretch; + flex-direction: row; + flex-wrap: wrap; + margin-bottom: -10px; +} +.lyear-uploads-pic li { + margin-bottom: 10px; +} +.lyear-uploads-pic figure { + position: relative; + background: #4d5259; + overflow: hidden; + text-align: center; + cursor: pointer; +} +.lyear-uploads-pic figure img { + position: relative; + display: block; + min-height: 100%; + max-width: 100%; + width: 100%; + opacity: 1; + backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} +.lyear-uploads-pic figure:hover img { + opacity: 0.5; +} +.lyear-uploads-pic figure figcaption, +.lyear-uploads-pic figure figcaption > a:not(.btn) { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.lyear-uploads-pic figure figcaption { + display: -webkit-box; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; + text-transform: none; + padding: 2em; + color: #fff; + -webkit-transform: scale(0); + transform: scale(0); + -webkit-transition: .35s; + transition: .35s; +} +.lyear-uploads-pic figure figcaption > a { + position: static; + z-index: auto; + text-indent: 0; + white-space: nowrap; + opacity: 1; + margin-left: 2px; + margin-right: 2px +} +.lyear-uploads-pic figure figcaption > *:first-child { + margin-left: 0; +} +.lyear-uploads-pic figure:hover figcaption { + -webkit-transform: scale(1); + transform: scale(1) +} +.lyear-uploads-pic .pic-add { + display: -webkit-flex; + justify-content: center; + align-items: center; + height: 100%; + border: 1px dashed #ebebeb; + font-family: "Material Design Icons"; + font-size: 2.875rem; + color: #8b95a5; + -webkit-transition: .35s; + transition: .35s; +} +.lyear-uploads-pic .pic-add:before { + content: "\f415"; +} +.lyear-uploads-pic .pic-add:hover { + border-color: #33cabb; + color: #33cabb; +} + +/** ---------------------------------- + * 响应式处理 + -------------------------------------- */ +@media (max-width: 1024px) { + .lyear-layout-sidebar { + transform: translateX(-100%); + } + .lyear-layout-header, + .lyear-layout-content { + padding-left: 0; + } + .lyear-layout-sidebar { + -webkit-box-shadow: none; + -moz-webkit-box-shadow: none; + box-shadow: none; + } + .lyear-layout-sidebar.lyear-aside-open { + transform: translateX(0); + } + /* 遮罩层 */ + .lyear-mask-modal { + background-color: rgba(0, 0, 0, 0.5); + height: 100%; + left: 0; + opacity: 1; + top: 0; + visibility: visible; + width: 100%; + z-index: 5; + position: fixed; + -webkit-transition: visibility 0 linear 0.4s, opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1); + transition: visibility 0 linear 0.4s, opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transform: translateZ(0); + transform: translateZ(0); + } +} +@media screen and (max-width: 767px) { + .table-responsive { + border-color: #eceeef; + } +} +@media screen and (max-width: 700px) { + .card-toolbar .search-bar { + max-width: 100%; + margin-bottom: 10px; + float: none!important; + } + .masonry-grid { + -webkit-column-count: 2; + -moz-column-count: 2; + column-count: 2; + } +} +@media screen and (max-width: 430px) { + .navbar-page-title { + display: none; + } + .dropdown-skin .dropdown-menu { + left: -80px!important; + } + .nav-step .nav-step-item p { + display: none; + } +} + +@media (min-width: 1024px) { + .masonry-grid { + -webkit-column-count: 4; + -moz-column-count: 4; + column-count: 4; + } +} + +/** ---------------------------------- + * 主题设置 + -------------------------------------- */ +.icon-palette { + display: block; + height: 68px; + line-height: 68px; + font-size: 1.5em; + cursor: pointer; + padding: 0 12px; + text-align: center; +} +.drop-title { + color: #4d5259; +} +.drop-title p { + padding: 5px 15px 0px 15px; +} +.drop-skin-li { + padding: 0px 12px; +} +.drop-skin-li input[type=radio] { + display: none; +} +.drop-skin-li input[type=radio]+label { + display: inline-block; + width: 20px; + height: 20px; + cursor: pointer; + margin: 3px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: all .1s ease; + transition: all .1s ease; +} +.drop-skin-li input[type=radio]:checked+label { + position: relative; +} +.drop-skin-li input[type=radio]:checked+label::after { + content: "\f12c"; + font-family: "Material Design Icons"; + font-size: 1rem; + display: block; + color: #fff; + width: 100%; + text-align: center; + line-height: 20px; + position: absolute; + top: 0px; + -webkit-transition: .2s; + transition: .2s; +} +.drop-skin-li .inverse input[type=radio]:checked+label::after { + color: #4d5259; +} +.dropdown-skin .dropdown-menu { + border: none; + width: 262px; +} + +#header_bg_1+label, #logo_bg_1+label, #sidebar_bg_1+label, #site_theme_1+label { + background-color: #fff; + border: 1px solid #f0f0f0; +} +#header_bg_2+label, #logo_bg_2+label, #sidebar_bg_2+label { + background-color: #15c377; + border: 1px solid #15c377; +} +#header_bg_3+label, #logo_bg_3+label, #sidebar_bg_3+label { + background-color: #48b0f7; + border: 1px solid #48b0f7; +} +#header_bg_4+label, #logo_bg_4+label, #sidebar_bg_4+label { + background-color: #faa64b; + border: 1px solid #faa64b; +} +#header_bg_5+label, #logo_bg_5+label, #sidebar_bg_5+label { + background-color: #f96868; + border: 1px solid #f96868; +} +#header_bg_6+label, #logo_bg_6+label, #sidebar_bg_6+label { + background-color: #926dde; + border: 1px solid #926dde; +} +#header_bg_7+label, #logo_bg_7+label, #sidebar_bg_7+label { + background-color: #33cabb; + border: 1px solid #33cabb; +} +#header_bg_8+label, #logo_bg_8+label, #sidebar_bg_8+label, #site_theme_2+label { + background-color: #465161; + border: 1px solid #465161; +} +#site_theme_3+label { + background: -webkit-linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background: -o-linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background: -moz-linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background: linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); +} + +/* 暗黑 */ +body[data-theme='dark'] { + background-color: #1c1e2f; + color: #8c909a; +} +body[data-theme='dark'] .jconfirm.jconfirm-white .jconfirm-bg, +body[data-theme='dark'] .jconfirm.jconfirm-light .jconfirm-bg { + background-color: #fff; +} +body[data-theme='dark'] a, +[data-theme='dark'] .input-group-addon, +[data-theme='dark'] a.list-group-item, +[data-theme='dark'] button.list-group-item, +[data-theme='dark'] h1, +[data-theme='dark'] h2, +[data-theme='dark'] h3, +[data-theme='dark'] h4, +[data-theme='dark'] h5, +[data-theme='dark'] h6, +[data-theme='dark'] .h1, +[data-theme='dark'] .h2, +[data-theme='dark'] .h3, +[data-theme='dark'] .h4, +[data-theme='dark'] .h5, +[data-theme='dark'] .h6 { + color: #8c909a; +} +[data-theme='dark'] code, +[data-theme='dark'] .panel { + background-color: #292B3D; +} +[data-theme='dark'] .lyear-aside-toggler .lyear-toggler-bar { + background-color: #8c909a; +} +[data-theme='dark'] .lyear-layout-header { + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); + -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +} +[data-theme='dark'] .sidebar-header { + -webkit-box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.35); + -moz-box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.35); + box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.35); +} +[data-theme='dark'] .lyear-layout-sidebar-scroll { + -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.35); + -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.35); + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.35) +} +[data-theme='dark'] .sidebar-header, +[data-theme='dark'] .lyear-layout-sidebar-scroll, +[data-theme='dark'] .lyear-layout-header, +[data-theme='dark'] .card, +[data-theme='dark'] .jconfirm .jconfirm-box { + background-color: #222437; +} +[data-theme='dark'] .nav-drawer > .active > a { + background-color: #202234!important; +} +[data-theme='dark'] .nav-drawer .nav-subnav > li.active > a, +[data-theme='dark'] .nav-drawer .nav-subnav > li > a:hover { + color: #bebdc2; +} +[data-theme='dark'] hr, +[data-theme='dark'] .card-header, +[data-theme='dark'] .sidebar-footer, +[data-theme='dark'] .modal-header, +[data-theme='dark'] .modal-footer, +[data-theme='dark'] .card-footer, +[data-theme='dark'] .table>tbody>tr>td, +[data-theme='dark'] .table>tbody>tr>th, +[data-theme='dark'] .table>tfoot>tr>td, +[data-theme='dark'] .table>tfoot>tr>th, +[data-theme='dark'] .table>thead>tr>td, +[data-theme='dark'] .table>thead>tr>th, +[data-theme='dark'] .table-bordered { + border-color: #303243; +} +[data-theme='dark'] .table-hover > tbody > tr:hover, +[data-theme='dark'] .table-striped tbody tr:nth-of-type(odd) { + background-color: #292B3D; +} +[data-theme='dark'] .dropdown-menu, +[data-theme='dark'] .modal-content { + background-color: #222437; + border: none; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); + -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +} +[data-theme='dark'] .dropdown-menu > li > a:focus, +[data-theme='dark'] .dropdown-menu > li > a:hover, +[data-theme='dark'] .dropdown-menu>.active>a, +[data-theme='dark'] .dropdown-menu>.active>a:focus, +[data-theme='dark'] .dropdown-menu>.active>a:hover { + background-color: #292B3D; + color: #bebdc2; +} +[data-theme='dark'] .dropdown-menu .divider { + background-color: #303243; +} +[data-theme='dark'] .divider::before, +[data-theme='dark'] .divider::after { + border-color: #303243; +} + +[data-theme='dark'] .popover { + background-color: #222437; + border: none; + -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.35); +} +[data-theme='dark'] .popover.top>.arrow:after { + border-top-color: #222437; +} +[data-theme='dark'] .popover.right>.arrow:after { + border-right-color: #222437; +} +[data-theme='dark'] .popover.bottom>.arrow:after { + border-bottom-color: #222437; +} +[data-theme='dark'] .popover.left>.arrow:after { + border-left-color: #222437; +} +[data-theme='dark'] .popover.top>.arrow { + border-top-color: #1D1F2F; +} +[data-theme='dark'] .popover.right>.arrow { + border-right-color: #1D1F2F; +} +[data-theme='dark'] .popover.bottom>.arrow { + border-bottom-color: #1D1F2F; +} +[data-theme='dark'] .popover.left>.arrow { + border-left-color: #1D1F2F; +} +[data-theme='dark'] .popover-title { + background-color: #222437; + border-color: #303243; +} + +[data-theme='dark'] .progress, +[data-theme='dark'] .irs--flat .irs-min, +[data-theme='dark'] .irs--flat .irs-max, +[data-theme='dark'] .irs--flat .irs-line { + background-color: #303243; +} + +[data-theme='dark'] .nav-tabs, +[data-theme='dark'] blockquote { + border-color: #303243; +} +[data-theme='dark'] .nav-tabs > li.active > a, +[data-theme='dark'] .nav-tabs > li.active > a:focus, +[data-theme='dark'] .nav-tabs > li.active > a:hover { + color: #bebdc2; +} + +@media (min-width: 768px) { + [data-theme='dark'] .nav-tabs.nav-justified>li>a { + border-bottom-color: #303243; + } +} +[data-theme='dark'] .nav-tabs.nav-justified>.active>a, +[data-theme='dark'] .nav-tabs.nav-justified>.active>a:focus, +[data-theme='dark'] .nav-tabs.nav-justified>.active>a:hover { + border-bottom-color: #33cabb; +} + +[data-theme='dark'] :not(panel-default) .panel-title a { + color: #fff; +} +[data-theme='dark'] .form-control { + border-color: #303243; + background-color: #1D1F2F; +} +[data-theme='dark'] .form-control:focus { + border-color: #33cabb; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(51, 202, 187, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(51, 202, 187, .6); +} +[data-theme='dark'] div.tagsinput, +[data-theme='dark'] .input-group-addon, +[data-theme='dark'] .input-group-btn .btn-default, +[data-theme='dark'] .btn-group .btn-default, +[data-theme='dark'] .btn-group-vertical .btn-default, +[data-theme='dark'] .pagination > li > a, +[data-theme='dark'] .pagination > li > span { + border-color: #303243!important; + background-color: #1D1F2F!important; +} +[data-theme='dark'] .pagination > li > a:hover, +[data-theme='dark'] .pagination > li > a:focus +[data-theme='dark'] .pagination > li > span:hover, +[data-theme='dark'] .pagination > li > span:focus { + background-color: #191A28; + color: #8c909a; +} +[data-theme='dark'] .pagination > .active > a, +[data-theme='dark'] .pagination > .active > a:focus, +[data-theme='dark'] .pagination > .active > a:hover, +[data-theme='dark'] .pagination > .active > span, +[data-theme='dark'] .pagination > .active > span:focus, +[data-theme='dark'] .pagination > .active > span:hover { + border-color: #303243; + background-color: #191A28; + color: #fff; +} +[data-theme='dark'] .pager li > a, +[data-theme='dark'] .pager li > span { + background-color: #1D1F2F; + border-color: #303243; +} +[data-theme='dark'] .pager li > a:hover, +[data-theme='dark'] .pager li > a:focus{ + background-color: #191A28; + color: #8c909a +} +[data-theme='dark'] .pager li > a:active, +[data-theme='dark'] .pager li > a.active { + background-color: #191A28; + color: #fff +} +[data-theme='dark'] .pager .disabled > a, +[data-theme='dark'] .pager .disabled > a:focus, +[data-theme='dark'] .pager .disabled > a:hover, +[data-theme='dark'] .pager .disabled > span { + opacity: .6; + background-color: #1D1F2F; +} + +[data-theme='dark'] .well { + background-color: #292B3D; + border-color: #303243; +} + +[data-theme='dark'] .list-group-item { + background-color: transparent; + border-color: #303243; +} +[data-theme='dark'] .list-group-item.active, +[data-theme='dark'] .list-group-item.active:focus, +[data-theme='dark'] .list-group-item.active:hover { + background-color: #33cabb; + border-color: #33cabb; + color: #fff; +} +[data-theme='dark'] a.list-group-item:hover, +[data-theme='dark'] button.list-group-item:hover, +[data-theme='dark'] a.list-group-item:focus, +[data-theme='dark'] button.list-group-item:focus { + background-color: #292B3D; + color: #bebdc2; +} +[data-theme='dark'] button.list-group-item { + -webkit-transition: .2s linear; + transition: .2s linear +} +[data-theme='dark'] .list-group-item.disabled, +[data-theme='dark'] .list-group-item.disabled:focus, +[data-theme='dark'] .list-group-item.disabled:hover { + background-color: #292B3D; + color: #bebdc2; +} +[data-theme='dark'] .list-group-item-success, +[data-theme='translucent'] .list-group-item-success { + color: #155724!important; +} +[data-theme='dark'] .list-group-item-info, +[data-theme='translucent'] .list-group-item-info { + color: #0c5460!important; +} +[data-theme='dark'] .list-group-item-warning, +[data-theme='translucent'] .list-group-item-warning { + color: #856404!important; +} +[data-theme='dark'] .list-group-item-danger, +[data-theme='translucent'] .list-group-item-danger { + color: #721c24!important; +} +[data-theme='dark'] a.list-group-item .list-group-item-heading, +[data-theme='dark'] button.list-group-item .list-group-item-heading { + color: #bebdc2; +} +[data-theme='dark'] .list-group-item.active .list-group-item-heading, +[data-theme='dark'] .list-group-item.active .list-group-item-heading>.small, +[data-theme='dark'] .list-group-item.active .list-group-item-heading>small, +[data-theme='dark'] .list-group-item.active:focus .list-group-item-heading, +[data-theme='dark'] .list-group-item.active:focus .list-group-item-heading>.small, +[data-theme='dark'] .list-group-item.active:focus .list-group-item-heading>small, +[data-theme='dark'] .list-group-item.active:hover .list-group-item-heading, +[data-theme='dark'] .list-group-item.active:hover .list-group-item-heading>.small, +[data-theme='dark'] .list-group-item.active:hover .list-group-item-heading>small { + color: #fff; +} +[data-theme='dark'] .lyear-checkbox span::before, +[data-theme='dark'] .lyear-radio span::before { + border-color: #656B77; +} +[data-theme='dark'] .lyear-checkbox.checkbox-grey span::before, +[data-theme='dark'] .lyear-checkbox.radio-grey span::before, +[data-theme='dark'] .lyear-radio.checkbox-grey span::before, +[data-theme='dark'] .lyear-radio.radio-grey span::before { + background-color: #656B77; +} +[data-theme='dark'] .lyear-switch span { + background-color: #1D1F2F; + border-color: #1D1F2F; +} +[data-theme='dark'] .lyear-switch.switch-outline span { + background-color: transparent; +} +[data-theme='dark'] .input-group-btn .btn-default:focus, +[data-theme='dark'] .input-group-btn .btn-default.focus, +[data-theme='dark'] .input-group-btn .btn-default:active, +[data-theme='dark'] .input-group-btn .btn-default.active, +[data-theme='dark'] .input-group-btn .show>.btn-default.dropdown-toggle, +[data-theme='dark'] .input-group-btn .open>.btn-default.dropdown-toggle { + border-color: #303243!important; + background-color: #292B3D!important; + color: #BEBDC2; +} +[data-theme='dark'] .input-group-btn .btn-default:hover { + color: #BEBDC2; +} +[data-theme='dark'] .has-success .input-group-addon { + color: #15c377!important; + border-color: #15c377!important; +} +[data-theme='dark'] .has-info .input-group-addon { + color: #48b0f7!important; + border-color: #48b0f7!important; +} +[data-theme='dark'] .has-warning .input-group-addon { + color: #faa64b!important; + border-color: #faa64b!important; +} +[data-theme='dark'] .has-error .input-group-addon { + color: #f96868!important; + border-color: #f96868!important; +} +[data-theme='dark'] .login-center { + background-color: #222437; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); + -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +} +[data-theme='dark'] .datepicker-dropdown.datepicker-orient-top:after { + border-top-color: #222437; +} +[data-theme='dark'] .datepicker-dropdown:after { + border-bottom-color: #222437; +} +[data-theme='dark'] .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { + border-bottom-color: #1D1E2F; +} +[data-theme='dark'] .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { + border-bottom-color: #222437; +} +[data-theme='dark'] .bootstrap-datetimepicker-widget.dropdown-menu.top:before { + border-top-color: #1D1E2F; +} +[data-theme='dark'] .bootstrap-datetimepicker-widget.dropdown-menu.top:after { + border-top-color: #222437; +} +[data-theme='dark'] .bootstrap-datetimepicker-widget .btn { + background-color: transparent; +} +[data-theme='dark'] .close { + text-shadow: none; + -webkit-transition: .2s linear; + transition: .2s linear +} +[data-theme='dark'] .alert-success { + background-color: #16d17f; + border-color: #16d17f; + color: #fff; +} +[data-theme='dark'] .alert-info { + background-color: #48b0f7; + border-color: #48b0f7; + color: #fff; +} +[data-theme='dark'] .alert-warning { + background-color: #faa64b; + border-color: #faa64b; + color: #fff; +} +[data-theme='dark'] .alert-danger { + background-color: #f96868; + border-color: #f96868; + color: #fff; +} +[data-theme='dark'] .alert-link { + color: #fff; +} +[data-theme='dark'] .alert h1, +[data-theme='dark'] .alert h2, +[data-theme='dark'] .alert h3, +[data-theme='dark'] .alert h4, +[data-theme='dark'] .alert h5, +[data-theme='dark'] .alert h6, +[data-theme='dark'] .alert .h1, +[data-theme='dark'] .alert .h2, +[data-theme='dark'] .alert .h3, +[data-theme='dark'] .alert .h4, +[data-theme='dark'] .alert .h5, +[data-theme='dark'] .alert .h6 { + color: #fff; +} + +/* 半透明 */ +body[data-theme='translucent'] { + color: rgba(255, 255, 255, .85); + background: -webkit-linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background: -o-linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background: -moz-linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background: linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%); + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; +} +body[data-theme='translucent'] .jconfirm { + color: #4d5259; +} +[data-theme='translucent'] ::-webkit-input-placeholder { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] :-moz-placeholder { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] ::-moz-placeholder { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] :-ms-input-placeholder { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .sidebar-footer { + border-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] a, +[data-theme='translucent'] h1, +[data-theme='translucent'] h2, +[data-theme='translucent'] h3, +[data-theme='translucent'] h4, +[data-theme='translucent'] h5, +[data-theme='translucent'] h6, +[data-theme='translucent'] .h1, +[data-theme='translucent'] .h2, +[data-theme='translucent'] .h3, +[data-theme='translucent'] .h4, +[data-theme='translucent'] .h5, +[data-theme='translucent'] .h6, +[data-theme='translucent'] .divider { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .h1 .small, +[data-theme='translucent'] .h1 small, +[data-theme='translucent'] .h2 .small, +[data-theme='translucent'] .h2 small, +[data-theme='translucent'] .h3 .small, +[data-theme='translucent'] .h3 small, +[data-theme='translucent'] .h4 .small, +[data-theme='translucent'] .h4 small, +[data-theme='translucent'] .h5 .small, +[data-theme='translucent'] .h5 small, +[data-theme='translucent'] .h6 .small, +[data-theme='translucent'] .h6 small, +[data-theme='translucent'] h1 .small, +[data-theme='translucent'] h1 small, +[data-theme='translucent'] h2 .small, +[data-theme='translucent'] h2 small, +[data-theme='translucent'] h3 .small, +[data-theme='translucent'] h3 small, +[data-theme='translucent'] h4 .small, +[data-theme='translucent'] h4 small, +[data-theme='translucent'] h5 .small, +[data-theme='translucent'] h5 small, +[data-theme='translucent'] h6 .small, +[data-theme='translucent'] h6 small { + color: rgba(255, 255, 255, .65); +} +[data-theme='translucent'] a:hover, +[data-theme='translucent'] .nav-drawer .nav-subnav > li.active > a, +[data-theme='translucent'] .nav-drawer .nav-subnav > li > a:hover, +[data-theme='translucent'] .card-header h1, +[data-theme='translucent'] .card-header h2, +[data-theme='translucent'] .card-header h3, +[data-theme='translucent'] .card-header h4, +[data-theme='translucent'] .card-header h5, +[data-theme='translucent'] .card-header h6, +[data-theme='translucent'] .card-header .h1, +[data-theme='translucent'] .card-header .h2, +[data-theme='translucent'] .card-header .h3, +[data-theme='translucent'] .card-header .h4, +[data-theme='translucent'] .card-header .h5, +[data-theme='translucent'] .card-header .h6 { + color: #fff; +} +[data-theme='translucent'] .card, +[data-theme='translucent'] .sidebar-header, +[data-theme='translucent'] .lyear-layout-sidebar-scroll, +[data-theme='translucent'] .lyear-layout-header { + background-color: rgba(0, 0, 0, .075); +} +[data-theme='translucent'] .card-header, +[data-theme='translucent'] .modal-header, +[data-theme='translucent'] .modal-footer, +[data-theme='translucent'] .divider::before, +[data-theme='translucent'] .divider::after, +[data-theme='translucent'] .card-footer { + border-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] .lyear-aside-toggler .lyear-toggler-bar { + background-color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .table-bordered, +[data-theme='translucent'] .table>tbody>tr>td, +[data-theme='translucent'] .table>tbody>tr>th, +[data-theme='translucent'] .table>tfoot>tr>td, +[data-theme='translucent'] .table>tfoot>tr>th, +[data-theme='translucent'] .table>thead>tr>td, +[data-theme='translucent'] .table>thead>tr>th { + border-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] .table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, .1); +} +[data-theme='translucent'] .table-hover > tbody > tr:hover, +[data-theme='translucent'] a.list-group-item:focus, +[data-theme='translucent'] a.list-group-item:hover, +[data-theme='translucent'] button.list-group-item:focus, +[data-theme='translucent'] button.list-group-item:hover { + background-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] .table>tbody>tr.active>td, +[data-theme='translucent'] .table>tbody>tr.active>th, +[data-theme='translucent'] .table>tbody>tr>td.active, +[data-theme='translucent'] .table>tbody>tr>th.active, +[data-theme='translucent'] .table>tfoot>tr.active>td, +[data-theme='translucent'] .table>tfoot>tr.active>th, +[data-theme='translucent'] .table>tfoot>tr>td.active, +[data-theme='translucent'] .table>tfoot>tr>th.active, +[data-theme='translucent'] .table>thead>tr.active>td, +[data-theme='translucent'] .table>thead>tr.active>th, +[data-theme='translucent'] .table>thead>tr>td.active, +[data-theme='translucent'] .table>thead>tr>th.active { + background-color: rgba(245, 245, 245, .35); +} +[data-theme='translucent'] .table>tbody>tr.success>td, +[data-theme='translucent'] .table>tbody>tr.success>th, +[data-theme='translucent'] .table>tbody>tr>td.success, +[data-theme='translucent'] .table>tbody>tr>th.success, +[data-theme='translucent'] .table>tfoot>tr.success>td, +[data-theme='translucent'] .table>tfoot>tr.success>th, +[data-theme='translucent'] .table>tfoot>tr>td.success, +[data-theme='translucent'] .table>tfoot>tr>th.success, +[data-theme='translucent'] .table>thead>tr.success>td, +[data-theme='translucent'] .table>thead>tr.success>th, +[data-theme='translucent'] .table>thead>tr>td.success, +[data-theme='translucent'] .table>thead>tr>th.success { + background-color: rgba(21, 195, 119, .35); +} +[data-theme='translucent'] .table>tbody>tr.info>td, +[data-theme='translucent'] .table>tbody>tr.info>th, +[data-theme='translucent'] .table>tbody>tr>td.info, +[data-theme='translucent'] .table>tbody>tr>th.info, +[data-theme='translucent'] .table>tfoot>tr.info>td, +[data-theme='translucent'] .table>tfoot>tr.info>th, +[data-theme='translucent'] .table>tfoot>tr>td.info, +[data-theme='translucent'] .table>tfoot>tr>th.info, +[data-theme='translucent'] .table>thead>tr.info>td, +[data-theme='translucent'] .table>thead>tr.info>th, +[data-theme='translucent'] .table>thead>tr>td.info, +[data-theme='translucent'] .table>thead>tr>th.info { + background-color: rgba(72, 176, 247, .35); +} +[data-theme='translucent'] .table>tbody>tr.warning>td, +[data-theme='translucent'] .table>tbody>tr.warning>th, +[data-theme='translucent'] .table>tbody>tr>td.warning, +[data-theme='translucent'] .table>tbody>tr>th.warning, +[data-theme='translucent'] .table>tfoot>tr.warning>td, +[data-theme='translucent'] .table>tfoot>tr.warning>th, +[data-theme='translucent'] .table>tfoot>tr>td.warning, +[data-theme='translucent'] .table>tfoot>tr>th.warning, +[data-theme='translucent'] .table>thead>tr.warning>td, +[data-theme='translucent'] .table>thead>tr.warning>th, +[data-theme='translucent'] .table>thead>tr>td.warning, +[data-theme='translucent'] .table>thead>tr>th.warning { + background-color: rgba(250, 166, 75, .35); +} +[data-theme='translucent'] .table>tbody>tr.danger>td, +[data-theme='translucent'] .table>tbody>tr.danger>th, +[data-theme='translucent'] .table>tbody>tr>td.danger, +[data-theme='translucent'] .table>tbody>tr>th.danger, +[data-theme='translucent'] .table>tfoot>tr.danger>td, +[data-theme='translucent'] .table>tfoot>tr.danger>th, +[data-theme='translucent'] .table>tfoot>tr>td.danger, +[data-theme='translucent'] .table>tfoot>tr>th.danger, +[data-theme='translucent'] .table>thead>tr.danger>td, +[data-theme='translucent'] .table>thead>tr.danger>th, +[data-theme='translucent'] .table>thead>tr>td.danger, +[data-theme='translucent'] .table>thead>tr>th.danger { + background-color: rgba(249, 104, 104, .35); +} +[data-theme='translucent'] .btn-default { + border-color: rgba(255, 255, 255, .075); + background-color: rgba(255, 255, 255, .075); + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .btn-default:hover { + background-color: rgba(255, 255, 255, .125); + border-color: rgba(255, 255, 255, .125); + color: #fff +} +[data-theme='translucent'] .btn-default:focus, +[data-theme='translucent'] .btn-default.focus, +[data-theme='translucent'] .btn-default:active, +[data-theme='translucent'] .btn-default.active, +[data-theme='translucent'] .show>.btn-default.dropdown-toggle, +[data-theme='translucent'] .open>.btn-default.dropdown-toggle, +[data-theme='translucent'] .btn-default:not([disabled]):not(.disabled).active, +[data-theme='translucent'] .btn-default:not([disabled]):not(.disabled):active, +[data-theme='translucent'] .show>.btn-default.dropdown-toggle, +[data-theme='translucent'] .btn-default.disabled, +[data-theme='translucent'] .btn-default:disabled { + background-color: rgba(255, 255, 255, .125)!important; + border-color: rgba(255, 255, 255, .125)!important; + color: #fff +} +[data-theme='translucent'] .dropdown-menu { + border: none; +} +[data-theme='translucent'] blockquote { + border-color: rgba(255, 255, 255, .1); +} +[data-theme='translucent'] blockquote .small, +[data-theme='translucent'] blockquote footer, +[data-theme='translucent'] blockquote small { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .bg-white { + background-color: rgba(255, 255, 255, .35) !important +} +[data-theme='translucent'] .bg-lightest { + background-color: rgba(253, 252, 254, .35)!important; +} +[data-theme='translucent'] .bg-lighter { + background-color: rgba(249, 250, 251, .35) !important; +} +[data-theme='translucent'] .bg-light { + background-color: rgba(245, 246, 247, .35) !important; +} +[data-theme='translucent'] .progress { + background-color: rgba(245, 246, 247, .075); +} + +[data-theme='translucent'] .nav-tabs { + border-bottom-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] .nav-tabs > li > a { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .nav-tabs > li.active > a, +[data-theme='translucent'] .nav-tabs > li.active > a:focus, +[data-theme='translucent'] .nav-tabs > li.active > a:hover, +[data-theme='translucent'] .nav-tabs.nav-justified > .active > a, +[data-theme='translucent'] .nav-tabs.nav-justified > .active > a:focus, +[data-theme='translucent'] .nav-tabs.nav-justified > .active > a:hover { + color: #fff; + border-bottom-color: rgba(255, 255, 255, .35); +} +[data-theme='translucent'] .nav-tabs.nav > li > a:hover, +[data-theme='translucent'] .nav-tabs.nav > li > a:focus { + border-bottom-color: rgba(255, 255, 255, .35); +} +@media (min-width: 768px) { + [data-theme='translucent'] .nav-tabs.nav-justified>li>a { + border-bottom-color: rgba(255, 255, 255, .075); + } +} +[data-theme='translucent'] .modal-content, +[data-theme='translucent'] .popover { + background-color: #474747; + border: none; + -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .35); + -moz-box-shadow: 0 0 4px rgba(0, 0, 0, .35); + box-shadow: 0 0 4px rgba(0, 0, 0, .35); +} +[data-theme='translucent'] .popover-title { + background-color: #474747; + border-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] .popover.top>.arrow { + border-top-color: #474747; +} +[data-theme='translucent'] .popover.right>.arrow { + border-right-color: #474747; +} +[data-theme='translucent'] .popover.bottom>.arrow { + border-bottom-color: #474747; +} +[data-theme='translucent'] .popover.left>.arrow { + border-left-color: #474747; +} +[data-theme='translucent'] .popover.top>.arrow:after, +[data-theme='translucent'] .popover.right>.arrow:after, +[data-theme='translucent'] .popover.bottom>.arrow:after, +[data-theme='translucent'] .popover.left>.arrow:after { + border-color: transparent; +} + +[data-theme='translucent'] .alert-success, +[data-theme='translucent'] .alert-info, +[data-theme='translucent'] .alert-warning, +[data-theme='translucent'] .alert-danger { + border: none; + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .alert-success a, +[data-theme='translucent'] .alert-info a, +[data-theme='translucent'] .alert-warning a, +[data-theme='translucent'] .alert-danger a { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .alert-success { + background-color: #15c377; +} +[data-theme='translucent'] .alert-info { + background-color: #48b0f7; +} +[data-theme='translucent'] .alert-warning { + background-color: #faa64b; +} +[data-theme='translucent'] .alert-danger { + background-color: #f96868; +} +[data-theme='translucent'] .pagination > li > a, +[data-theme='translucent'] .pagination > li > span, +[data-theme='translucent'] .pager li > a, +[data-theme='translucent'] .pager li > span { + color: rgba(255, 255, 255, .85); + border-color: rgba(255, 255, 255, .125); + background-color: rgba(255, 255, 255, .075); +} +[data-theme='translucent'] .pagination > li > a:hover, +[data-theme='translucent'] .pagination > li > a:focus +[data-theme='translucent'] .pagination > li > span:hover, +[data-theme='translucent'] .pagination > li > span:focus, +[data-theme='translucent'] .pager li > a:hover, +[data-theme='translucent'] .pager li > a:focus { + color: #fff; + background-color: rgba(255, 255, 255, .125); +} +[data-theme='translucent'] .pagination > .active > a, +[data-theme='translucent'] .pagination > .active > a:focus, +[data-theme='translucent'] .pagination > .active > a:hover, +[data-theme='translucent'] .pagination > .active > span, +[data-theme='translucent'] .pagination > .active > span:focus, +[data-theme='translucent'] .pagination > .active > span:hover, +[data-theme='translucent'] .pager li > a:active, +[data-theme='translucent'] .pager li > a.active { + background-color: rgba(255, 255, 255, .125); +} +[data-theme='translucent'] .well, +[data-theme='translucent'] .panel, +[data-theme='translucent'] code, +[data-theme='translucent'] .list-group-item { + background-color: rgba(0, 0, 0, .035); +} +[data-theme='translucent'] .well, +[data-theme='translucent'] .list-group-item { + border-color: rgba(0, 0, 0, .035); +} +[data-theme='translucent'] .list-group-item.active, +[data-theme='translucent'] .list-group-item.active:focus, +[data-theme='translucent'] .list-group-item.active:hover { + background-color: #33cabb; + border-color: #33cabb; +} +[data-theme='translucent'] .form-control, +[data-theme='translucent'] div.tagsinput { + border-color: rgba(255, 255, 255, .075); + background-color: rgba(0, 0, 0, .035); + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .form-control:focus { + border-color: rgba(255, 255, 255, .35); +} +[data-theme='translucent'] .input-group-btn:first-child>.btn, +[data-theme='translucent'] .input-group-btn:first-child>.btn-group { + margin-right: 0px; +} +[data-theme='translucent'] .input-group-addon { + background-color: rgba(255, 255, 255, .075); + border-color: rgba(255, 255, 255, .075); + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .help-block { + color: rgba(255, 255, 255, .5); +} +[data-theme='translucent'] .lyear-checkbox span::before, +[data-theme='translucent'] .lyear-radio span::before, +[data-theme='translucent'] .lyear-checkbox.checkbox-grey span::before, +[data-theme='translucent'] .lyear-checkbox.radio-grey span::before, +[data-theme='translucent'] .lyear-radio.checkbox-grey span::before, +[data-theme='translucent'] .lyear-radio.radio-grey span::before { + border-color: rgba(0, 0, 0, .125); +} +[data-theme='translucent'] .lyear-checkbox.checkbox-grey span::before, +[data-theme='translucent'] .lyear-checkbox.radio-grey span::before, +[data-theme='translucent'] .lyear-radio.checkbox-grey span::before, +[data-theme='translucent'] .lyear-radio.radio-grey span::before { + background-color: rgba(235, 235, 235, .35) +} +[data-theme='translucent'] .lyear-switch.switch-outline span { + background-color: transparent; + border-color: rgba(0, 0, 0, .35); +} +[data-theme='translucent'] .lyear-switch span { + border-color: rgba(0, 0, 0, .035); + background-color: rgba(0, 0, 0, .35); +} +[data-theme='translucent'] .login-center { + background-color: rgba(0, 0, 0, .125); +} +[data-theme='translucent'] .datepicker.dropdown-menu { + color: #333; +} +[data-theme='translucent'] .irs--flat .irs-min, +[data-theme='translucent'] .irs--flat .irs-max { + background-color: rgba(0, 0, 0, .035); + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .irs--flat .irs-line { + background-color: rgba(0, 0, 0, .075); +} +[data-theme='translucent'] .irs--flat .irs-grid-text { + color: rgba(255, 255, 255, .85); +} +[data-theme='translucent'] .text-muted { + color: rgba(255, 255, 255, .5)!important; +} +[data-theme='dark'] .card-footer, +[data-theme='translucent'] .card-footer { + background-color: transparent; +} + +@media (max-width: 1024px) { + [data-theme='translucent'].lyear-layout-sidebar-close .lyear-layout-sidebar-scroll, + [data-theme='translucent'].lyear-layout-sidebar-close .sidebar-header { + background-color: rgba(0, 0, 0, .75); + } +} + +/* 颜色搭配 */ +[data-headerbg='color_2'] .lyear-layout-header, +[data-logobg='color_2'] .sidebar-header, +[data-sidebarbg='color_2'] .lyear-layout-sidebar-scroll { + background-color: #15c377; +} +[data-headerbg='color_3'] .lyear-layout-header, +[data-logobg='color_3'] .sidebar-header, +[data-sidebarbg='color_3'] .lyear-layout-sidebar-scroll { + background-color: #48b0f7; +} +[data-headerbg='color_4'] .lyear-layout-header, +[data-logobg='color_4'] .sidebar-header, +[data-sidebarbg='color_4'] .lyear-layout-sidebar-scroll { + background-color: #faa64b; +} +[data-headerbg='color_5'] .lyear-layout-header, +[data-logobg='color_5'] .sidebar-header, +[data-sidebarbg='color_5'] .lyear-layout-sidebar-scroll { + background-color: #f96868; +} +[data-headerbg='color_6'] .lyear-layout-header, +[data-logobg='color_6'] .sidebar-header, +[data-sidebarbg='color_6'] .lyear-layout-sidebar-scroll { + background-color: #926dde; +} +[data-headerbg='color_7'] .lyear-layout-header, +[data-logobg='color_7'] .sidebar-header, +[data-sidebarbg='color_7'] .lyear-layout-sidebar-scroll { + background-color: #33cabb; +} +[data-headerbg='color_8'] .lyear-layout-header, +[data-logobg='color_8'] .sidebar-header, +[data-sidebarbg='color_8'] .lyear-layout-sidebar-scroll { + background-color: #465161; +} + +[data-logobg*='color_'] .sidebar-header img, +[data-theme='dark'] .sidebar-header img, +[data-theme='translucent'] .sidebar-header img { + position: relative; + -webkit-filter: brightness(275%); + -moz-filter: brightness(275%); + -ms-filter: brightness(275%); + -o-filter: brightness(275%); + filter: brightness(275%); +} +[data-headerbg*='color_'] .lyear-layout-header, +[data-headerbg*='color_'] .lyear-layout-header .topbar-right > li > a, +[data-sidebarbg*='color_'] .lyear-layout-sidebar-scroll a, +[data-sidebarbg*='color_'] .sidebar-footer { + color: rgba(255, 255, 255, .85); +} +[data-sidebarbg*='color_'] .nav-drawer .nav-subnav > li.active > a, +[data-sidebarbg*='color_'] .nav-drawer .nav-subnav > li > a:hover { + color: #fff; +} +[data-headerbg*='color_'] .lyear-aside-toggler .lyear-toggler-bar { + background-color: #fff; +} +[data-sidebarbg*='color_'] .nav-drawer > .active > a { + border-color: rgba(255, 255, 255, .35); + background-color: rgba(255, 255, 255, .075)!important; +} +[data-sidebarbg*='color_'] .nav > li > a:hover { + background-color: rgba(255, 255, 255, .035); +} +[data-sidebarbg*='color_'] .nav-drawer > .active > a:hover, +[data-sidebarbg*='color_'] .nav-drawer > .active > a:focus, +[data-sidebarbg*='color_'] .nav-drawer > .active > a:active { + border-color: rgba(255, 255, 255, .35); +} \ No newline at end of file diff --git a/assets/admin/css/theme_setting.css b/assets/admin/css/theme_setting.css new file mode 100644 index 0000000..8b26e5e --- /dev/null +++ b/assets/admin/css/theme_setting.css @@ -0,0 +1,51 @@ +.layui-form-item>.layui-input-block>tip { + margin-bottom: 10px; + font-size: 13px; + color: #a29c9c; + display: block; +} + +.layui-form-item>.layui-input-block>tip a { + color: #33cabb; +} + +.layui-form-item { + margin-bottom: 15px; + clear: both; + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.layui-input-block { + margin-left: 0; + min-height: 36px; + width: 100%; +} + +.layui-form-label { + float: left; + display: block; + padding: 0; + width: 100%; + font-weight: bold; + text-align: left; + color: #4d5259; +} +.layui-form-select dl dd.layui-this { + background-color: #33cabb; + color: #fff; +} + +.layui-form-radio:hover *, +.layui-form-radioed, +.layui-form-radioed>i { + color: #33cabb; +} +.clr-alpha { + display: none !important; +} + +textarea::-webkit-input-placeholder,input::-webkit-input-placeholder { + color: #aaaaaa; +} \ No newline at end of file diff --git a/assets/admin/fonts/materialdesignicons.eot b/assets/admin/fonts/materialdesignicons.eot new file mode 100644 index 0000000000000000000000000000000000000000..df4d4521cbcb1a9184ee9e1cb70c2e50c4b3c083 GIT binary patch literal 292776 zcmeFaf1FfTdB^{pdv|B{$Lx=p+4-@*W@mrSG6TEI{v?6GB!TcFgg|5w4KYhXBFPdZ z1|o@=jEYJOR#X-d`X_EYW|K6xvRJnC(VGifc>^qMLz)1^bYc=E?lCWBVAL^5Ja{KnUHcF%cw*}X)z6T9N}dseSMS?PaD zq;WHGi{8BMfjfV;@mDvCTysS1gR=IH)oXmqAF3wpG0?x32>aK?-zK~tw5+{n!=|%Q zLSix^4QJQA_4d`}Uwh^ik)|U;o$pz_X?<~{9OiiuiQ;crea{_t?0adh*#E_I>#OVE zdf$ex@B8>svHzR$A6TMwHDl+-q(jHy+=OL0wI`hW=RN1dkS_6yn{K?dV%E!2>Wb*Yb1Tz{C2{vJLO)_L$_4X^0bDRak&pJ^T1^uxXc5WdEhb+T;_qx zJaCx@F7v=;9=OZ{mwDha4_xMf%RF$I2QKr#WgfW91DAQ=G7ntlfy+E_nFlWOz-1n| z%mbHs;4%;V|C0we_E$d=MP1e(0N)2ER3`kgRhF8JpPj+0m1>w2v&hLfV9C^M5=gR zML0AIU!GOqph#p0XAsJW9uld3T%?A2)f^M4C0`xkI?Ar+c|G}Kn*j71+5!0*_JS8g z;-ri328RL98<&F&;CUl;YoaXmy=g82>%nul=@fveU;}twq;)aa21wr)1!=GqoWZMx zvJ!hl+R4-24oKThUD`G7q{tM?n{pU0B%UYN0>UY-sTV}1E(N5SHUp5pgR~vTL^>-0 zWp`3u*DUb3$aL!2O}g$KB0Z$(oeQAV$F*+@Ag;eoU5>z$A_D@b%fK%1g2;?6uoavT zxq|Q&wC4)SzLNY`Qua*J&m02#MP?NN>N4wq$W_q1YOl!bso;pnoH%$~Bu&2bA#hgY zYG_{53wDcK>jRrb=2imgF|P$|2WLdCdsdx#fvfJ!#jEiQKyY91?lk4Dh(feFb1D7y_ib?@4f4WCQKpum!v%vT+t5 z@BMSZQIWT=0w+Z_@qE)6{Kv@q0M8$U_JfB--mx4&XY*E(cS7@_c0idAlkefPBANXn z?I|0v}@x(Sf(QR=siG~1}_wxc2+i~`E~AmKlWgAL$Wkq<%dLwmtDd{h8*KYCJR$7XOwWMnNkA+nQt?mQy$F=*`C4$g{ve5=Tx z&IN}>KCu8$?(QP67C`@#y@0YlMV?RX0#azyh#C>1KOL%O500QETflE{xJ>qm3JUXdRc0P6eW!ykexC62r1^)8$UnA#=S2RAGG16E^2;KT zf8HkYFKLmJbzmJh3aHD!Li=B-*Ndcik@y!M2QP`d6a_Dc{2THAwjR)se_sq<5&4g$ zfOP-C^V7tgre6P90O;rcq}*Sv75Q}>tN}+v&JaFB8E4Llyu1>S?l-+)J2)xw+aYjN zI3h;of}`LSF=iIn z4$k6x+9k#&u3)VgPZ8J;o)zO=47Q3Xih~8&ERasfCX#vcW1z?hgo3)lqChzTwQPl~DHTJ?gMPzD?o z6DEC_^kJSw2uD@|@_5<>^64yrB zw$0#qF^Rc=dL*6|gN|d`cZiunUUVCSUSm?Ud1?V5JoTuUX{4WaQVcqc>7?vV@^w+> zbe>O#UN_IX*MT!)ddS<`0y1Lyy1*_m{oMDT5HmoU8C8J%S8Nq?C242!Y$k1(H5F_J zlylW`F|*sjCh&@wIXlFpNuTD~)my||lLpl5+F5{l%!Te;?&m>g-XSs9kq`aE%!khW zV`3Kcf+xi+B;UeqxOxkK&Z6hVT)!3^7PELR;MrozxB)shoDj350IUSW-$>kz2gEF$ z1-M_z^JP9j{$<23J0s?%&ESZb*R_N70J_VUg8gC!TL5u`r^T!w|Lf~O2J98H5;`l7 ziFw20V%}H;)`4fm+#Clx#H^wYt9W(`@wbeLdDB`kx6TzaG!^Uul)ZX4I4kBh(%g1Z z%;uv^UfO0Y)Ez0kXta_^;%_mcN*O95%`px z0O>O)#Jr32@7f{e-D?5#-ctk~7qg`fY!mZduJ48JdryjaUoW5z?>i>u{m^

9#^^ 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%0DUem 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%0AVGJoQ*r%>5U{PvxTn}xpmljiSsg^nl_r8 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

sN-6iyaCK?e4{` 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 literal 0 HcmV?d00001 diff --git a/assets/admin/fonts/materialdesignicons.svg b/assets/admin/fonts/materialdesignicons.svg new file mode 100644 index 0000000..41d0359 --- /dev/null +++ b/assets/admin/fonts/materialdesignicons.svg @@ -0,0 +1,6150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/admin/fonts/materialdesignicons.ttf b/assets/admin/fonts/materialdesignicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..69404e3d9758bf3d6a7e4ce27e5362089366542f GIT binary patch literal 292556 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໶Mi^<6`|6 z_4u!yV*RcN3><`!;?Gi_vj@eNRioyL>Jnz5@Cc zq^%@hnXebS+N_qZy;^MN^n5zcs*DLpwT!N>=8S`^Tbv_ z9hwL?L8pnl%`xz}*e$aFWwb&U-NJ73gWZ7g+t-3u#7?dThsExIcE_V)PfGx3Pota^ z<)n51o~Mfe^w2fz>Cm2jTI?CaU?+G%?9T0CcM0Iy-3s=JJ+lw&6}yM>dt=}kvHOVY z<5~Z7uo0XPdmtnBU^mzbPK!Njv)HpqH~XO2mn8soxQzOsXV`Prg2w^r=2E}8(4RXF zPKkZ_O7N1{^Ol31fHd==bp_>LL7FShh<)WOKsi?tcNK99pnG*6I3V^l9bli>3yVNE zAnzj5FWLcK5E~nby_n}qioqIiQ0!}=wKM@vh<)8gv6t~|*`wf;*w-%td%;n$mqT;; z0kKz5)`|__2q4c5+~2SRJR$b$1gr*>`?|wouY~T(4A>4xJ4Bg7&{{?NU+)L&!82m7 z?gryxzk%=@p>-qua^pU5TVX<%J*{uh}zO4$Z z1k@iL#J-*Q+t&i~mtjd%M`!Q0(_qfkR?%CH}pB za9Hg35q=+KzaP5qC(pJmVn0N>hjxqofj$7;hi8EUVsB4?6Jmdm=YJdnN5%dS&vsOU zt>B>8AEulS?*Y*I2`#JE6@fKkfBJyfdp7|3;xp^PQL!Ic3!W4EvpoOoA+aB= z2YbZ++!nDv4~@@1FZLHGb00Jwqu!4_F7|!_!{C(IW6&ErBlhE5A1CdXNcW|U;03Y2 z4DByduLHEN}wNX>$T;fDb{wi2q9gN3fyFi@q z`d}>98jG3NH!NGdtRWt|e9`5xcm3# zXgqh(sK!87eanm}`%HP?Vph*R5YJ!u;Lb0Jlb8{j*UZ)RQFPl83 z@y=5%#%+g|Wiw0aq*bJ?DbUmp(QrW_cBg6f`og_Q)t4o_yT1$7!3dJUW8RK8o9d*;{_@i96jYrKYXAGkBUQgtLQ5Z}PMhBzgiBu|+ zN+mKY4JEETIj5$1X^k05&rhZ1r@v`ZiMF;xDwZKOuI+(tZqAoFvtHUdP15PU3S;Ms zpdXoaOgW~Yk&dgvPWOec>Tvt0?#9iQwfRQ!B+kA$n% z<}4a$NxuK6w2wl2<0j-w4pL4FrCd0IdmC0%y!nG=3Ex#OPlYB=UNDSh4J(Yb^-Y)G zVz%T%lP?sGW^VlW4$TOhT#JmG4!1Dn5Nxzj1xzoTL)e{>9*2$Ka7XrNcbtr*x_pT+ z4X+C)d~=y3LBHSlyYKZ(j(Ik9GY??glgP4A)EHVH4H-=l^be&}!llx=nUU}N2{Vqo zRlaRePNFD^Oy+0CV2-V#z0twmc}CgSWY3Dz>}*XU(UVAgNm;fgIF!i@!8{`&ZSG&0 z#LT9qnTdt5;N(OwW-=KQ3z~EgiRJRqNoOwmB}|#hr%nBxM#Z=zRULNCbZ_#SRo+dL zpBu}%lY7){fQsvaHn{WQBz&p-Q!i~wQJDp5od$X45{ISSd2p_Tp^~yt#AH2hem3=H zk4by(NYSZq%v1HwWz1Bx#`^o)+S}XoH>I7)pVO&awf}tjW3+6QOFEjJxG`NrT%K{K zN=sf8<7w${r&e%X)YqaTOkj}e7F5~{yNg56ol<+xyEE7BHKi3zfoU0Q{Fs%Q#&xK= zFBa>oPTt}%$2_-~epi@oGE6+C-^TNA@2#yY^Z2aV(pvs3uGf_DuchU(%Ua+BcO8UJ zwQW^M%Ql%=Fji5doA&Sd-P+Qut6(JQtkUk{Y{IRpiwq2NSG~ztvk$m^`#xpg($Y|< z^yy4G!{1mUkxnNPMbWl&I@Z`**w=RL)wM+tO_b5@W-Z9ci$>|7Mq%a)MYU9W)5zL> zl!Ly3Ifkn{fu}@>316@-WzEX$N;B$q?MV9Ef|E`(rqhiH1fnCdC{tzBgtPvXz_GQ? z3KT^Lp!JQGkLEIZ$w3ol+UQDTlJT|P&h~6uUFLV@n!(+5W@ug4EL}g^5;J^j8`~$c zt@W97e0uTjy2;+b2B5E7Y7bs>l_`-vy+kBJkgo2D`3wuYx0b> ztS3}c(_T|Eme%e~kLM=L36t*v&_%F9!IsfvnJZB;m&2!~BpV>^Rhk_Eg~0kdq*oau8k^Tuc|lw26LUK}vuArc=H|u=UOZ{W=+AcP zp{)ZdLY&1T**6%8dc)j0EloE2+I@LOQC-PRG|zmoea70Yw!L*Nzg2|h# zP1O5Vx`%Tm#Z5o7rV+)wYN7PKx65T`e3}I8A2*&O(e7{b%$qi!t>^oD>^>p3hA$8 zuf95awUM^={{C27xzTHTTiTV;?(fm=?rW~@?!MZczwW+5b@~K#DbOd-l;91Oz7+;m zacg4aoJz6z#znVU)~$=2-{PFYW=0FNipf99KPJ&*R1m#Q$4dKQob~m`>>_5%<#L5w zuj3Vo_Ao%n_JL@`>#J679EkY5?a6kECyEDyeK0CfA%?cWxSJl-T{>s5*Vi(b+Y2?f zC+WlwwqI3N;V&t(J(soD_s{l~)>O9D&3LuQGBivSfSO?H!Rhm-k7fAB+H7Lxt95;| zeI>P;FL|X)tY~(UNaHK5t!S&Ck-Vz3qP)1w^30xmo|QbCPG^HLU5>}b(nAm&(v{uS ztyE5qp<5+r^MFXS(_C(P!%RlI2Nu*oPEvQ8es)s>%9J`ekewce!P!uCnv=nrY)vp6 z4TmCSrBparQ(6`Yg}-O|rdI}omDBqs$EJd5YLrH|Fy@%Ic2$4tqG_tcPFvL4zpB=| zYvA5ki&xL#grWtxqk|?2vp0JiOrz<)>aGXJ z($_9Y-Cs9(;Li+XKfk~%A6Y&{>-ziaxOYle_Jy!+D%^GMBr?rX+R>(D2wltz;%%Y`-LX*H zoT`qBB6I6`<7rE|V>#)i=JX?W3tjq{XWY=O)Ld5w_$E52&zW>l%oYQx$+27xjKxEZ zPlaaI(XGL%>+2d~@mL^I!@|&-sqLyOXJo(0qmrf&Q8SWFF>`;sGCujEst_GqH#79! zx`t3=b)Y8G%6P}3U3DhIFxSBbbv23h&J}lCCX^_-kpEmekC<}?otD=c{U~*I*f5;R zWcUle#`wR7nojOncHi0;aC87-U@M%l*Jx#U=V`oV5{nKM7M^}xd zN6ctG{Wx-<60X#JcM}S4pxTQWp`HEMK$O)|F_JeRApH)hy#fK6-_HkYCbC&JPVkEA zvhG^w^7&Nx=e5qMNVuR;W7%VA6F#pcg>|#V@5oWw;mfb(p%z~_+B=9@E|m)VD=TA_ zl?(Q6*syoQSoU~Tw2D77le-OjbGong37=qP?I=e)+f8<;X^<69RRSX?>66b)etWw% zY;!P7V>4Ku!7?(2LgV!|F^}Vg5 z!Cugs>}pQ17eqbJ?U9h9XlybvV3D1O1y|`B=PtRRHQ3V?K9=Y zUhf@=UMm==sVufX+OlTGWyu?oK2L?GwcO{8beH&pc9HRvz0OlqR#k@8 zV)~4hPJd~!e1Twz@fweJX4067%IcnmH-w_4CB8fS7;7+e)KoTnxwbadZhNfS z2K0HWIN-G`gL&596|gPa->mCBJaWvms$M>*3YZSmfa-nKK2@O^ktUt#ca|2Lu9n(q zCDqLh?ZzrDiPYCeCZDQpZT+d;+G*;eHO90z6#HybpRPBiWuQgZF=(H&X{7aKrnbDw zKgddrYU7$8+TaaUGLyMq)qX#g&~v~8VbAOljLMFx~E;#z21$}Hn?+L^|tBKPp`wxaIe#UFgvpe zaS_LOt)hc4OLad1x|uZ&A>cN|NL?%Ap2@^#1`;Fb+GTHCR+}DateP3mWU8a4wJu-3 z*81uuUuSx!CsCWatFg}Re;9|q4m)zao?YmGET?`d z5y5;jkZi9s?ajVqySI`3N4Tl4Jxb+Sk9!7?742wuhy_j#2B~ROE$~cBz3a^-LEXFD zG#NT_BpklC-s|-hH`dOpP53H&b+LLQ4L6hrjl%?!+u$2iR}<{;mqav_(s&FYtSv*4 zNF-VBV_GK4%M;!TUwyDYk?0=@R*b5Gd*07PiT_%Syw?5omrOWvX2R?;k2p3j$9|dH zGqEJ)MgM%0^l4Ll$dLxqgl_F&o~Zz${%+qsu`BH?&;QVQnc1R+Kf@URIkZ ztu2k_S%R)CzqaJ^U}s(O%Gk!P+Is?lduqFWR&p)9|3kljprqu^Jh!?!{1=_NVdrhr ziO-NT`#TLHRQK)k(8eOJLP=e1x+qd%A$QG(${VNEb=HT%P2~--+RDzlaBF#ay0)yd zx+rNE^%R+khx{#7R(Yg3XjLS_jg^(ADV(~mFVXR3Z#L7OaU?l)Xn+uJyiT*>^PX4ZCFe(z@!ZD>^;Ky2gZR#&=Z&i!S%z z0#KctV_9EkdBb2d($WwMg^_EM?EGr0QXF`MS>q;8hAaFn#iik}eaDrPCov{oRWmK^ z@wWtg{<0U@zvkEAG1g#}X?k9W?#m8I8PAzS2mxihPQ+%v&P2!1u39kBI`4cc9)KBh z*WldlDVV+s0px6?bmfihw zmL579VPqyuSL@_tYnSQZCLXP>C`(Nr=ri%Q2Z`fZqSNE?MB=8rA!V$qI(@zwsxjvD zw=#)1JGW_$-qG(^81!sRxry@NECSrlH=Pb+5m(7$wgQ9fT3Y5a$|_tiU-niSb~q@Z z=bJs)f?!5pu{ScOxgc28bOlDS*HuQV{E5+g;5>6k2iuqCIg!09!qLgGbK(6}S2VpT zab;zs>aK8jQ$CJ@-!@OQErI=tpQMeN0UXT5gVa^z2Lb67Yex zB;4X5;O5uqoE}e)q=(FYy-e)iZ$^g*q{j94uKk5{Y*$;Ks)2JBKUIT?$%$k6Dom_8 zc1-J#Kd*N8Kl#3PYT_tL)I)o9kgLwt^!WJb$cPD3laa7)`ON6}u92Z}envBy{TYXM z{>}V^*Gd|hYrSeuPD04Jur1QND8uDkk|sQoh_753PmClQSFUX2Qg}D3`yF>y(8x(b8Y?KF%M3i8wr!qNvPHY zXDC{dxva^+pbib)VfMy{uiKS=AU>Slb={=?4D0={$;CKNC!MItapy7p?bhcp=e&(x z4!9k2GIekKvB%=~nvt`zNkf}-Y%WNf>%@swOZpyrtZ#`K8DG--*kip*3iz)K`|f!% zCq!l0$e%ArMl!1yw}Q>%{Xa7@L&G zO3hSYd~|eF3mY!?-dt34v$uRaA6U5Z^D9?={=ELFIKO`|!kpJPRWNs9&+Ho+$=6lq zx7w>&LkjKHD$?^3{z7Vn-O+pj<-+cGKugJ=IjJ1VpI?ej7Ki@^^L&W)(uqm-=lSsI z`0&zEhYd%UK0cftT{^7y!;it2L^uy0cVg~x9_IOK%-pFvkTyh}GaJoVp7$nl+^BVO zd2lLiZUURJ9PgdXG2?lC3=irm>nwUGDjsG|KZ{u*GdLVKUdTDhN|bj_Cgyl>K5j%| z1V{lvrOYiIKhKQ*9xfaIee5|^Rsj#@%X&>7)Y8VM7;h?|9Ox8Qmgl?+S@696fd>ow z2etgXzJccodj^)As%rrcs(m=$2^z@v_J!0g;Il%?7qDk;toONmF&J)wouM{law2Jp zEnJ?MO4pl9cOgrh*JgME6rOs*G#8Kt7mx+PSa75*PDC8{!_GQZsL!pavYF zL|+&@fnHPe{0~gw@?QZ@lRy=#}QqE|6#GN$N!L*BafMN zj?7`h;AjTeBHe{AoM$pveQMpyrOhh~>71+yzs9=f$xi`T%tmaocAY2NZ&Yy*zL4Y2 zn_D@VgB6Pwv~XC4+V1wE2J$oR_pf^<{d>4CH)aL=l`G5hnli^NjqTE_E__aDuetIS z>ZT5l74{L6`@H@^&=mHLv-DleV|pr>?+6X#JLp1c7YLU^$`|mTBPU$Hr=YXCVtP^E zxdJDrN^A!6Ik;2pRZkOh-c1j7bgW(t%;<%VO(&fA)w~~pj(wKB#JgS3(KhF7#g&^8 zj8b`D1RZ2d!2Rm)!_F|G${v!$J#jD_{ZpqtHPfrAX2kM(jAiO?4>zfQ3Y&e7`SkET z+t70E7{ueB>9eQK^XGOYXv5`iviEmw(rO`58>McZ zor75?9PJJ7?YYvJD|?>DgxC6Y_2k^U7n?|l6Lcb<&hWVBN=uzh*v`&~n}nLjoRAZj zfcIS)G=^?dEzNA-ImJi@=3!jWLs#AE1uArxryaq;F}kGVaOUpA!vp>9PWxTj@|w(0 zX&6f=+xF2!LPumjA-qRp!IAVm>@yr&#{{+x^>3@p*#|h$8%#zAu?h`x{zW+CUf2wC z7mZZs)InT&2YUAQ$K(Cr>D=`$_qP8%eVu&^X8L@u_yRunVir3I`}?2BU5#i)aD=oA zXOi$0A8GZHJMTDVuBA6hk;GvUcH>E3?_h7VHyP6H53+>&x7EZt7fh>MP}#BI+81BU z+?Cn1Df883%kCRbrN$>;OsDUTqp_}OU~y|>eS(w6d?e+#`xaMUOgffh8FV?e z*&9Io<;8ze&lj}{YG!e#Z`3t^_YAbn1pxGXxIh z3~m_^i8OpV)& zeTyqtQ2#4TyLmVghkxUfFHM<5Z;LOx(OfaRv);PAs0^3x5oK%sa74hgsy5ch(2aJN zZK7pgERU9y>A2*}UQF3~LZsTYE<;V>e#AXS>;93U_(KoHhs@B##KhPt4X;X#IwmpA z&s@j&*%zVsbpv=_boa4h@|XO||h**cse!yK>8&pD$AO7@Xzy5WW~8J#ugk{cvi|S@HW{ z{vnEYW^$LF{q4_;XUy10Iz6;&*ICJo@8VzH7xS3O(CdXZ9NqJ_ycRfa!<>#)VO1F8 z0@utC&R!Y)KTy6p#I?UMCg8~?)L4M8xNvi zjjsJe9C$<`_|;*e$7zr7o{H`|<0XObqCl!<+U(G@NL5qFKeHmWxjD!hau26XYw0;P67Z+JGC)T~1~oXJl~Qk_+Nm6< zdR5@Ej;T*qJGKQxaqd5olfhDZL+-yW)53YIW8dVWMr-^-Y@grn^?53b%R`lAUQdZP zP*>$EDk-+@U}Z&3X~gUGn38y)V`zG^EfMk9#?*T}W&ZjEM+-Aj9WC`fzv1K*+h{Bi z2$hz4YO6|1s{_qFfq>7Lx7l`CI27anwcIWWguG<;R<;L=i)_2dDi2gNR81=hml;zT z_Eva{?257)AGrcPuOELuzg^@hq7vT9U`fM_X)W>kV5!HpjBOPa`(q2Hr8~X26+1)X z%0E5VS1Sgx7eBu)OBee=HMHnzUx{g>1?8FEau(wrW_zm3zkR54@`M@161hK< zMem**D=+;t)uAenl$NKmQ})fVoE*xP&w{Rtx??d`^Ska9UZZ>p=il!u|Kw{I@67WT zk@@-#m8hUmT~4)I=Zzlq-(TCBZS_}G`H%2pM)0So@=yM$Mwo^EDo2-a^V@16Zfgnj zx+c8~s0{7jUs*sXV+3J(KBHHkRVe-{xk*!A*y;F1P2jx{&@5L4NqWLsAcJJOP9sNaoM0T+&fhILY z3fLFaQ{6eu$;?RRZ7uE`{ehpes;Y@y$M&1-#T9ki|B^$q#PL~ksOpK{h2!H;ehJFi zv9XGah~IVbjB{ygeN_&qKiq3jjXGr-xsdK(X<--5zEPS2MIAS{Fa9_6)*gA)dXHZ` zi_X#h|4{FVkqepa_tl$GeD(f*&3c>gtIP~%zwm1P^8bQ9zS$SEOMwh^PXEwU+~a=t zs9*P-_&(!pw>G~#_*=81``PLgt`H`b8sm)nTt6!<=ANG0I?e;`hTfs3E3TfO{#FUP zyzFnuj*MaXALF?7V!Dyh+@54=UjG4WP#9;qi&~8$lB1>X6zlFUUrTjwaBGR0n0G!s zukFr(qrUigLHm!fMDurEAL#qaui6J5$Fzqo%A)VNs4onfz7m@pdbJKY=9ClGPI3EN zWu3meI)nL$%H(TNUDWYhXUB#*Rjp^HuPXhn2o?M7bWwG!ADa>WKzLOdwmgOM@XxA? zgXIn3I=`Aw)XLNF*_4S~)T4R%sPnf)b*r`k6mIlk$C$+dy#}>54XP9Cp3#R6tQH89 zxq3N!xEq(%RhBkSYbv#FS*!-4B{$p7ZDswKnLDG;KU9{i`ap3_AQTGBSy60MxiZBo z=IDJ*$)-|9H~p<#5N< zHnaGFm2E2VvtbIx{3V;p@co)RNqJJ@FX|pxzr1L_Ye@*V)`u#eNvb;)or5P;@|ns| zeJjpP#`vo|D+ktp!1JehXE5Ds>AqI$CcnR4uU3KAC@bIZO1A>v9kspW+64RhyuZJo zkzAv;q_!0C_UJ{e=5=eQB|p3Ark{BhzItnQZejzqmD*VkY8rW7Wsyf@(J)VoV< zb@Aq@1EI^h)sd1{dB)GZ3l)Ax$&@{R?r_6>MxSF*&6m52a&1NjpA5UD&h*+i*hZM6 zL(H|4Ma_|hz_ei9)nPAoj8*t}>^H4mI}j}?xmx!PNT*|bw$+22O5w$HjVxhqIrC>Q z;%k9W4|~U6HiG1m}&s3ELX3q+g2G-6BhAYZLGe1&VRvc@oen)m@ zwclS{Uj40+k#AOqBOyh5eNlkL8mpqlq`a#7#G@nGXsJw?6jlF=j-`}Czk8>0DQl6mq+2Pc1$ z@y?B#8=pe}QPTG#P8m&unQS;TH$M3}^Lq98a|(RJ_Zd)E{*F)7T&q%m`>jSNYe(j5O!TgaOBBg%}{LUVO|`VwrNw(Vt<9&7%TjX zdp6-9I}{7L?^0=b?iq#Zi*4+k)q;V1%a_)mBGoC4@n->ZSC|Q>_tu$tJ=OKqJ@d>A zlO18V$e(uM8@BW>!xKLgs;u-c>)$dX8hz05BBmeRd5vc$9z6||#|q;ZH=Ks({JEfs z$-!PCu?@CyY~jN|__C)cQeqFqK6zeadEdfhN$52zQ|pnm$n<(jF*2G`2|-fC}%n(4&X zLvOWYGW~QIPNpYE)8?`+HP|xb4+mpIHJ`ORni|`??8$F5b+9~kCf$K~IKo(@&l{bW zb!6BsER1RO9*QkYQQJbk(0)S_v^fqGI^*>HuM4{^&l%~tb4U0aI3OmD0|6fkwQvvqE{b5?o2S`v;8 z<=h#KzJ8(yH(0U5jyVGk+)|S}ps5L*l>mP7k;fbb#*F3K7dQyjoG`>Hl(L>eW!?uDlFa14@!U)uT&aq*1^3k{k@>osJ7rPJQ-bB%z<3 zNH=!Q~@T~(4a-%kl=G9x8^wxmu}IAb!SyHui$jE|CHoVk$Y5pEcxjoRw*v~x^s)TYIZI5J1i zBZ3I>yY#BKOYQ8LUHYoiI8RhAkp?Yzm+MpO{!U~vW0^>HB2AajFX$YqZ(buyWr%lM z)>5ZxbwN=FWS2v9RfGjvyn2ws6Wnc;BOISwzQKaZr!NW&=vyDo%K%B1e-&S>s_o50 zxd&7ZO&sqvImsxrXinOXEfjBDZ-3I~Yn~Md%xd=Wwv3mx8HZDUdQOqCuI>-CHt^~| zpfWxq(q35^z=qz?8tA`z^5->I*2ESxmxuJFj$*5+&a}L*uE}m_xzp!O4I17sDNYWS zw9dqY8n3O58_Vu)D;Z1{7hA>*rqEgz+Vu-BtE!k@2i>@-s;q2})J?Cbx@=*+y>LlY zRpjj^SR3T8C*JKZ^2F0O_`Bo9X*GQ3$@#Q?&nNSZt^tzUIAwnW_9bJ@kU!UlS80opnn5)+6Pftx#Q%_S<&9XZ!Qx+;( zarM3ukn_bT{&;wmA40C0shR@6=h`=6{TgB2b;;&(`<@cYRj*9 zOGv-05qirN<+Ux7&-$zdk-ECb0?TLYgk>e{VeBh40lxiHpx>1_XJWL1YBS!5A_Cm9 z(_)y_TX0I1Lub$JtgtTg;X54(|&o*6gN zZ(aI64-1MOkk5Ax4B>XBgiZ)ojpU_l{P^`g|9n21A5A~Fv8t}FYH`I9y)3Exv0kpL z=&q`-uez?X$&LKEds(fQ#TCCa)ro4eWK*~?yjZcxy}wt()Ai?G&Q-%GiaDJ`=Y@U= zKu@2l8}*YXYV2j`+|yUBh^qp3F}BHeo}>8|cAC2t8Y{i_>GEK({DE!dCFtj6kwpI%(0R%+ceRxc$zHa?Vj%-#{q;;f9R9E`*e$z-%a{ zdbo*&h%#ZK{{rY|ad^K7MN;KmC*RD`QyspU)2U+5c`!Mqse)5_)*9O-#kojx^k_YT|Maku*mtJOr!^!f!!Cp7tN{Q@&S_4Mu?9WY#SLA{wCt(jcq zh9{qmVhD8guDqXJC#xTtrR#m6v(r)P(do6>gW z^k;aMhVe{Y=|Q?EI zp6~95@AQ35HeGGL%k^yn6jA*5d{I_{!KAsoqod(;IZYu!dCUJ>|Zn2|;RY0rfA{Rae&}jQP;al9G!{ zx~IPV=Jwj2`SUV8u|7;nh2`4lASJF1tBtx>vaDX%mKK_&-;GPZ=YlppgrV&u=Z0%8 zY8#OSdxm0qNtFTZ9C`^~k6br#+aERIj^_9k_lHxD#6PHgwPt2~SBF{9(GtJnzLE5L zC-RXSXU0obOmp<5adSU>>h_n~-qiE`RYpJ^NpwL*BDP#K8qIvXA)Q{8N`0tfxem+y zk1$Z1{~GsOcr3i`*eGw7E zxopjvsgVhHbf7eIn$17nnyFv2<~}WnWNr{bvPD=`J7p=kT=ThvR>|yd*z*ym51byt$%;rSK@bzUs5F#wWZ7O?y(IVO)hWpRrk&fX+FlMUMEvo^8vPPZU$$0(GfbY3vbbm z4o&`o_jF1^pK%{8&5enBY0x)%bj3QCHSHUsPQc9dR|IQ<)?C|m@0Zt4e(rBe zLrc%=``qw7;zpiks+5KpM32WAEvvH9eXy6FUviF%Pjc&6tcfZ;_vm*koWUuv?YS03 zSNP}V?^o2B8z=WNl%~n0lAj@~+}j+p>x9~=sepcSCRpw%t-RSyqU_HcVE?0XxR|k2 zYfuWEw2vg*2Xs{$SP!d|AzlAd(uXrrczASiK$2?G= zo_~smE5W-#t``%z+xc8osN}~a*Q>cbx9($EuLf0*#1yC|Q?@y5_tabz<~wy5OV~2D zH;?J(=BldrF}$o-cr&VR(bon7wR*Mf^X^nEIpgBmN5sPv;P{rWWa!Ib?5}wJu-9Z= z&(&=I0QN=wK+i=UtI%=nEUE*!UtrT0ZVP>4^~4IZq8`)r2F&P0juQT#?5F4Qg&%g$ zxc5mgc2^>CS4_Y8!-t;qBLR~W%0I5{Qt4M-SOPr(ab3z=c-8oV5+)%36O;tp?9LV8 zk{?ebMkexhtkzbFaxM5APhoHFroGd?u*({Hl8IWyvzAFmj8TFzQ4xD z#}h+|B?%*RnZ6V3z7Rb5U4yTz(_b%B)~(1i&OwX{9@t&`obOjKzP*^;b(9%x%4)Zr z1X#s-2cl-YHQ6{X7MnMJUd&hIi4MlNi(Wa{7qxs|6N#vMPudGkDnxV4FK!C0M z=M!@|6>r*1nV$M9|*jX9rn8OvnMP{{e_7G+PR z$HP=vJCO8Y6Xc7XNzS^=h?6b2>b>zd&*FtxJ_?h|ee%7H>t?B$K5(^TrU_4;>@tCKB=M?5aWAM-siTP(5G=4@ zPW6^Utgv}5ncqhTvtD$NPSdm27A8+}Z(JcS=>kn4K$?QaS@)$0Q{HW0oomt26d^+y_Apb4xUMv}N(44M9 zE;1_}Wru729cRv}oil3A5?a`%P#=uIsTFF&^2@a;x!b9aAWKQz%+-6gSgaXj?2?H-gs-8HGf*{1!V^r=FCqVYfzZy@$9nLz<2nGvGRq`j4beZPkeU2l1fuf=8~dT4#ld3LOva zdjsd|IOO9st}tC#(`2*?ZbjSxVR|qh1^?y$@fB+AYjyHvkDG-ud115`dJ zFKNxkohl)F_}+lS@A|1Kr?V%tC*4@BR2HuI1NlOEQ`@d3>6mNZMd1bQ7e&7BG)=yb zHJ#q;bIpHJ`@@kp4lBSE^xznEu73MnVXc)@>F(B#NcznEcaGOo66iF7n+Q<*V-8p8 zy>eHI$A941Ydf?q?wFtB1C8@J?{d&C!aBb+t{-T-HJp!|nlt$dQ+cLMPNZq1)8)?3 zlq_=vF{4jwoF?TP;7B?h_Ci~&YU=IG_(D_q)K)4V@Ok6B8PLh6%L>mT?r?2AF-)&` zT79&nq_HUo&O4O&w!4wfy5HL(#ld3lB*xc=K+U3Ph;r(;@CMMY8P&X`hZjJEd~ zQyYoY8q?dp+gDoZTgK<9+=#xUn8NqH5*rx1gf*^lOG#XVq3Z=zJ)t_f_dWe{FomTjRU+Gco$P zm?`4dE{RWnOME9X!6_gVqZA4_N8igXA)y+!<6f9VQF-+O+;@6+T~t8&E~4_}U#0%) zYY2UI1kO<}8${Q+j)Ul^e#)@Fl8^gRwi(kpyJrg81U@#YFFzZ$rTK2rHtCAITyHPU509MvvH6wxD%vQU zrnY7d966rJxs-88mGt3+$H6%NqlA9G@zD@#nl`N|*5G`*b<^5~3)fzAjq{uFSI%2D zuhMhQqgS?7wq=Dap| zbr00WZk$ed4bm476^HEk1l6wK_KCh**~&OhS)dB4esSOAK2=}Xf`Se*;oMjMo-Js} zc^!4GTpxB#{l*q^l?4yyio!nXAN2Gl%}idOopyEV>JMP+A<|Bpbcxv9bHCEgeK9!Hm9{0q8U>sxd4pS78g&-vCQ5-SY&KAUbo-B0gv z_#E!VjLI)L`Beup)e77ftFhAdsysuY&8>{J#JegI6alk(Pe?$ z&A4ifwN)+gPTTH`w^Y@p%F6hjV_9jsp{1oEUFzI0kWqt+kB?R- zvF@Jt_1ZZmK-C9<{=avO85sF{vue!s9C5`-W+XjyRz}Rj1F6XuO=NTgIrE|;AtS-q z30G|lA8c6@0D@u2<-offZq(;cjMdUUD|Lv%dHr|z43oZPFi zx!OBOdd#5eJ7(~pu}b(RdUGPcqE(vq@jv$CT+}I;!_h!%OJ!{dN&HweZwpk!gTZ)3 zV0?%qc5%48s>obZRBC+7I7np)FY(&}e*_mve~Dx6534Ija4;CJM1{z&>0^AmRllPf zc06v-+~76$!^2a7Bws>v-{jIBi)#}YOpeGqadh$e^ncA_B!POtA;FK`%NtCXQ*x@c zpTfD~e&>7^X=3DL?hL{GW@KG3+z@J~F(r|R{Jh&?I<)vW_ruA__b9mx+v>$dn0VjN~scHtts$BzQGGU_*fgR3-s6s>+#oG*qjh z{{vpgKG(L^Vv|rnY6Bi_mz>6qU6XKui6V=_kSLhiV;qJQKt?N>1GXaqm4n1O6q6WT z`B*?@-kDCPj;1)|GI8VI7|-N_gt-R*WyT`YQ_<1x>FEfjxMPCFyTd0=gu96&ole^} zZwx(NE6e1ySdBwjV^lB_Pb>LFWO|yYyz!Cj7_FA}8=SkBnzrNRYiiRjK|BP-LE3&Nz^Dg> z4pWnkbx*kBc_)yi&&(PL37iRY?5tUQf-E^fU;rIhc(we&zSH%sE3fMz8hl|$az+vG zQ<@a-XNOv^uH_bzZ=5`=)Zxj=BT60FI69my{?65*0(k^_ek_B{pz5~1Ke>=2{41OL z`|iV&lQgfh%`)EF?{^#raHv;_D&huAZ#9>IsUx&AHtz#CxM^{=#j?o^AMzhYzPlZ@Xq1;_@Hvx&vAf9Wo|yad+ZgnKyApw)N^^5Ln+=WlCg4 zI5Q;Xn*1Z51i3Ui){4wWLwhgD*l%B#Qs)iUrN@<%V@qOI{`S@R(!ql%{hvN~aE~>* zwR!L$-Qa1}zZUNR`*tmUnNBqgSr1mTJ3q#%g(IKc%iNOmeln z_9NsM(Eg$gM9`RAW} z?M8W(Z=Qd$yz$!ArrVAUa6aw8&|g1FkX)KUyvqyH3=z{iw1GV57hR9Ga7tIuf>z;$ zDn(VEJ)S#0d!;e^Xz6WgMSp1U;rXw>&8?%UYTAYj+|CvShZAV4(IDv+x1_ee&Ge+1cVN@PbjpFXg0Nj6qtn|LO9sfNdc<2u5j2Zr%$h+ zJ}rUuJC$;>jw zCVRL~daJquzSCKV$Iu7=POWAS>p}3I&Z>brL-Kd-{u7yl_&MU0m(bCKjJu-*AlCS` z10-wiSxDh}4N)D0h{L~stJB64jW-TX+N*i{IGt$uOidj_Wp2En3=FseUm|S)1|*=l zx22^ltD?t{aGLcjp1{}`mZ(`g-I|y9>0)hL6AmBFW)B|*^cc;vQFNELnjL1P$s^f; zBS!|nu}EAb=hB*L>h+KZ3$Sg0eOf)7aGK-BLTK3mvC(AB!if}DuXxWMJ?j+(r6DnN zu&GSu*m84u8NKW3OIcnj(up)TocI%4FC+29)UDNy4cZ}+szIk6BW+ZqohO9rkU5Y& z9zf+UUu%U^wb*cU#P0I^w3!Qk33~d?XBA=;8UuB?wJ6|Pt&=gynTI!{2HpCJMCeix zk<9A$Xg>=rlL`PYlHjMjtdem=AP|*BiO)`AG8TCBLu+{wQnUplx#)~fImv$TSmG%H-37jMlXjS&hKu2oYS=&u5N-nO5+1}1y!(5l`k zi>284;ZIK&8y)MZ4xs>f8VQFZQ^z(tKisS-?`^x^&=6+*1ogauOCU}SA6DJ5d_3({ zBaEi9Zr&l?TEPRQx< zD-v5i;=mvoI6`W%$cu&$6y91ayk)|1*mT$bn-InNKNB55I4c(C18H(48ylb!T%zeA zVPIlW|5MS?f#}D%IYyr3p*tpx;StG`o^|%1v-eE=28nY$fV>Vi8|Ge1F9EJ|X$;vU zdn2jl;P#R2RI1t-=$NW*GHCug%Nct*YI{$_E5CfvKQ$Dq*O|q-wnHf;6BoZ4ywDRp zp3c7J;$$>*q5m6;_t*bcz=gHw$mc}{VR(5~_X*r|kVBX?gl&(rm;}C$;&tJ0^yGGE zU9IG==JUpI@Slvb;HTcc$kj-ncM|>_X1+_GHkX!`jh?_9Hw9BPHsolS_zk_DS;5zU z$s#k?Tu#E)`NNof?0BI*$8A|za9xlvKF;v(S89#LRjvC$RfXjC<*tTm)PzFDjCW;o zL+ zF@Jl2#M6lcKN_eje#CFIK2-Z&ey!D~V_j#lG`;>zN;(%klP0Tx%%r)(E>&a}F5Y#n zwKt78DG88Ey~5ev+U$v2gBJfPe%ZZ@KSkOJb2q-Rw6tQ(L(OqBjNeiu+`xrh{4%s% zKj-x(87$%xmNmf%;m@AeLMuWCy#`o;9A-RF@PikeqZri9sCfis1)W-K0-X_Vu(GU& zWHxgQg-Fo6v*GYmYBC(&7t~&)i?O$Tp5B-bX+n424`1e=vNP9Gq^wxs4F^W} zMlKc;!+~-z7WM>sv{Y(#JYaRl0t-Q8F@{F_Hf=LHFv+uNEFVGPY2+?K_hE1(iY>4k zAreGTLk7LpV=M6QfaR@UDqk4#3HSDoK9%@lcfx%dv1q-{9;1+{!!4BZ|DMv7sd7}^Zlb+Kc3U5MK_OW z_4%F-cNaW9VFDwe%JW;B^4xd^{-fQ#?`YU8y349iMS9Bv2C!mrhi2ZrfHu=(hh9Te z{vE@54Rpf45Ydd$cT9u+PcwdZkKeuaz?s&llKNM3h%a|ZV{~qJj<>%mDat2d5wwU%w7ovSh%ok|mJ-Da#5#B-z&D}{QyVa; zR!^>;NpQtc^uCLWs;g61ML!S_ZPx3nNF@6FO_fZqWD<$YD)d!X382r41PE=sQ4Ni-f3<@q{JZH z$^zI;yQPcZzkQRj!F#$)iU<>eAk}Km6-OdGjDIV62`2%aS~#4?QI^j)+jc6Y>RZk7 zwQI;kR>YkXY5X#lt=P4)434T$IUFvB_V2p$>XnEccJ|1%)|ic6Z`82VWYmg2;)>WK zEAH5lfBR0U6CZbR#TLO!9qWX>2eCxT3o}Q;8+xDv1dcIBl^vWRtB7?j+Fcf!pg{J6 z8A*02%T8?&rlHea>iZ=vAg|TStqT^4Y`acUa_d@3JKm;BDfhym4Fng9Z(&k6Bz(H? zSe!;$>z?OfR!6{sAmWZBpEj{I%jDn1Ik}9mtTv`Tp>1Z%sHHDJ}W@KnKm2msP*rj{XqYuud1B2m%%8$O;LT>^b8I=Ms zRQ5m9B^we}2LW%5T+B$SmlgV#Qa98IFG5D~J&QxLw#<;~iA+pH&>TDS@F!|XTTt92 znB6g)fXf#Roj7M{ZJC&J@&;2ch<>9N2F(C#L}}&%y%uUbb|7&FAo6$!6%!vcTcx@N zdruX;nQSPc_WQ;?BjMph{VnyxaCpQs?%S^-p=`!mJk|ReC=rb6KVnX|mwKUTdg8E{ zU?dPgydPs@h(8iACaNBFcP*Oi4cPwPWFk@Ax38E;BzygKpf?$<-K{*;#Bt*}V2-t+ zNEEx}jOq?!yPV-N8WHeff!`&Mm&m3Q>5w-AzaU7QK!P(z%#YEwPocGgAZIhIw6XbifbQibkV0k`jM zx!R?{Tn8goMG7NP7La4ITW!?9<}IK1x|RfFg1X|MS_Y;2ohvH@UDes?7I$5U2Pvu< z+1NrQFdb(|a<|Omyi)oIOyuQ^MZ+0Skwh^Ll50x1R#)C27)ud3ab460aP0lxTwiZ& z>Tw02QbQS)W(&VCwx+ypsG^QO(hRof$o~>^pujvlmSAOeSjmA*n_+P5qvc*W>wc1=(os>~D zvY>|MO_fa%gZiJO3pi56udDil9S)5QXCg$zI9A%dQszRQA@cU@+G11Y<67H>%cAgrvw zZGrzX36_UiuGN+q(@k;iD4oma&zH;R^Z9cc4C?(XZMdxYU1EUK8OByK_Lv3C5ONhF zUE%jXV`T%1Y%PU^tDzFyzyWT@A3=)rThSEfEugxp;bb`Pc(zEE9 ze8a5|`4_!2&j-&XVB*IQJbd7e{&UfN89QE{$ersRwWrShWYPc7t)nw{FClx=^P0)uc>SMG5$v4Uk$!i4EmJsUdosVoSmY#U}f$_&b`tt`Kde2w3 z{&&{s-~a2oekJwoi+}c|&fiN;-LCz_Ny63;Tw~6J(q0tHbpH6=1}Yys3YLW*a{3O0 z5?zY?g1?bkxn5rsIs|L{#d>3V`C2kB?ShVxMyk3r>oKL9_y?c2zkTrqF!&zH!?l>I?Udw%UDGc0)*OoK#a1@7(i4g+Zj84IEJaw>ry}&b})+kK7wb{jjG= zhn~zmsebD(?i;?Wx}M5?c=&lff8>YvakDG;VSyvF1All-oV!O$~dN1mQ=%FZf?56S^gXSdvPvs z$6!6_7TJPv;>RXs8rDw~8!Wbz?P)o%;ZpT-m*_7=EZY$5U0M;4uBEh?DT?13W*{=v zLc^G~By^DAS!Q_Tx+QO*1m)MeO4qJkd)3e`U)s!Wxo)cw2C(JS9&K-~*4K}p{8(;%>1i`o4UsbF(L(a~ zdnZ3WyuS1g9b?vB+aB4q!jmQh7{WZ&gdQl9o=VQD&c&*cr~L@}Ugk}*WQ*_it&$y= zKwZX686amP?@N;xwTLJ2aRr^yqsB426X|S?wy^9z9;OB=2E@6q@xejVN23MsMqEijofR^kvt;u zA*YWruV$=2qH50XfXCGtOLnOGNXMgUw4;#r@7CPkk%=%+JYh+#PhR(DrmhBZ2i-=2 zS%Dc#e))xt(yJZ62S7??(5WGQ)0NOj_zSu(Dx^>PYkeSJ>}V>xASmhBYbKFVirFUP*TEL&mu%dzt9XHg%oh`EmqKyUAX2vpxT3ue-p z6ZEk-fz`jxh;g?*VgHGUJM=?DTjnB!S_ZE@^UU9F&nBOjty5je1Wj-Y`~FkZEm*vwE@-w zuq3oj5|J7xT?^U-+Ma+1GxAm~y%K8J)o!gC7FOvT245wP zgL~Z5KpAj3Ae$Dr)1dMZ8Dii&=_GbXH+#f1L%QH?A??u)8}qI&N~}G z>_OA-ZxhQ**}JM{-BJ@8Ky5$4x^->&e@6ei#J+yT)V! z%6)$Cj@Ij9y?>oL8?}|?niJ4qk4oEh`q28q0XjYrH}2+UJy-pBPB=~0&aQ6O7jxB* z<(xc0H>@*&#G4sS;8r9;HE15N$aPosD&A`)q5=?8YLBIDmn9Q*8F2+di#=C35XzZT zvyYQv2_{}8vRetBGw-=^uW@VURa;vtU#H`U8`-mEH%Iy&T^A?`UGo&MWC&YmiIMU+ zYfDr&MZMF+;#tI=4hDu)2r&I}LfSWnNwG$>;8gj6eyAFlDDV(p>Cv-AMOPfvH;kBB zBJmlpfE3Kp$J9*ruMjcCm_q#J2TIv^&nImTs(7TR=GutsR@55dZT?L+(a4V{M z*=_ug5a%8BN!%!rj@#8)A-q)AiMr&`l4JdZV@E00lF7U(fBoEm}#x{ooas9;h= zhT(z$bZLk*xxg;H);Ta8ZXf6Kv#BG-zU!`VuRxa2q*6NYZVgwnl@Z8Y6sWsp%jBXBr2QBDTD0qmy~DDzmB$` zb2kcx-`aHV^FRy#86F?fYgY|$G$z!5sc2g*!ts|%9p&w)YD1N7>-d&2fL3&POqq}E z`$(iLWO}9N_S&!UijvbI{ ztXj>v|90yEL`j_yd4Aq~f=6}VB*&uIm!M(8SIVvB1UOc_2F27C`Vr(O*Ps#*pjOs$ zEo$3&RqZGcJt)EW(Xg!|dS5iBl$O`4nml$>?k4`L5A`Dll{^OBp^_0f%SmjK5Rb~b zYt!cek>ik6EAu~zQTNGA4$#~*+0@yCCqV?0$u?mYK+z2lx4V|v!4k4EmhVg|?K517DfJiMbI(2Rx#!;D@xT7c~8#0&6ln9xWWw1h@S_PK7$6m zU~FUrW1~VyQI~UH>Y^#*vz$$Dd%nUyBKK;j|Sy?A8ioIP8^IdMVR5>ff4t2dF? zY`PdYGrw?~nCz90m^sqr=$PI++B3Xo->){wcS+} zIlM@uwf3%abEu^kMK$FKOy%&qi=aVyvSU}QNNA|Rf>H;@aS2kTmbB}E%N>0XZ#OJu ziZX9|bb=(&knC^YqZ5ev>-7_R_dymicsL={>o_(evT;lwWK$*mA_&T0jeF0(jG-HV@GU$-T&PD8EE6#cByv$%XzfC5@4W0S$|s@mOX7=IQDF zW077NGkl0kH%ZiT`(^FyTbs4d%^X?$t92a&NLs4bWmq!q&P?cpF3Zbb^&Ba)-DvsQ zh50l7;*7fWdHf@3d&%ClR$)hoTfEm=EyG)`%q1p0Jws&DUb~oY#ygF!OX&k;|GV9tx>Aiad9xW5hte3cizdhe~e+5mK$DRwNdMSe59$x%^@SOkm_b zjGwE!7Oqhi2qE}7)heV>TEVnSAKGqR@eNdx4c;3&nNCIaNtZXauKOjpx zeY);S8@Cnt=FTxNZ9UF7J8QK)s4U{^F$`}aG9)iUsEz9LhHk&D6>|p;JeJt=< zHO61}`0K_~!}mUR?{LaF$*tC25Spo1+ZyhG233tjgs4el@FeE5vV{es31L$td5Y-f z4^C`@65mZ>;t=J4dT2N$SrTQu8#i{!-b|{pNmx{Buyc*3DQNPNZWD| zD5hr*7AprZUn~?SdOgWmTTBDe_5mB)__-6FgR>Qa1AdWM%(or>^x?yY&%OWfZJ*Ge zp6BWXu)ga)3kJ|bwL{$-j|zfDs2%2 z${(@1wz_I{ec$LA(OhB~!KjE9uDvbF5{;+n*d|F*`%L`(cLsvkxX2#R21qF9`tOAJ z03JBwkm-`l)7LLgA_G7Z+0~Z7epdxgTSpEYvBUrc3*Ftdt!pc%)P}L&b>%DKLz2-x zUI%VeyIm#nRg9ITC5A2W^6p-SPd>{6>sr5YTN)=%ik=mpB3`R*i?)x)AR}`9@jw7< zr+M#g!8xS&yL&Ibfh(Xpi@(Y9sgYYHoKmtNQ--u^Se>*>!7hdIg6A&A3NJdI}?#2xWB7?&_Rg zt?RF)U$Tacue7WqBvkMadQWJPzzBE&P@(sP)C(D1EZ`r9^ZAJ6<}(5TAP4M0{2sPR z_~e_mHtS+?hE4EBSvXxcKtMcmXP|NO%~!5KYw-g{wR23Nw0>5PuhZA-c5>VP92Wn> zpH&02o&YGw@$0UZHDh#t-AXqR-qxt9bDhdw7`svJ>;#c0$a{AupVQ{GyDPj3dC7}8 z^mVLFHzwuJ?5p4z(SgW&cclgpq;#+bB-XoYcNWsJ+lJ2m4(sTq!W#%xi^+qwywrXS zqBF!zn-GGqJY+yY0wp>axJ9wihb0pWQdly9gYm`gP$U?*^Zjxy#^2ALYxA2{ zY+ZCntFALv@9dDBU3auLJ0xe!Tj!YltTlpBjdlu?!P(t}C7fWctgmnGu30U+K?Jwg z_ex=>s5aOWyQ|bIgsqJ0M00nw&hluoc3l`Fx>dQ36m)X#Vs8c}R#^Yji}zLN_}fa354 zBhO^7!rex8i`g}DY_5F0e)Lwq|I9HxUrH=!9nOid++>s2&jezDGgK$AM9aDwT#4nu zgw~moX9Q3C9rAyCm5pftPF|X@5Jan*aM$&=Gj#vfcTmux_5ZwMD1giq(rUXI zY+ez4@&B?dh5{=MX@ z(1GtNMl1w{F0XEelTS0`kZ`!h$mwW6M^PI~^v%unC3M6!6_{JCiS@^t{arE*e919? zdf7P#+K7ZUDr6x3IqBBfQm0+g~FuV=s0BdF~ zf2i#$fcD=+roleGe#NnGQFT)3=&lH9B!NsBO1++`>G$Z9#G_WnNsCKrz+5vO5k3|>W;Xh7G zh_QcF&Xd`(ybbnZ!G(+Yk2A-{&Mx6@!2{2A0K%<5&C^ZTEcz<3`v$3Z8p@)E4{(Pb zRl+08ipUW{#yz-Z9mvHU2<6_vp3&TCebr$c=J7?#;`_=QKiCE1$1!J4c>0P1hnxuN z_6Bpa!-TA_FX*v*11iP4+#9&rxc<8NVQl04QF0vnPB>?}X690S0Y?lnU+=^OYt5`z zMLcu2zD11;`Ms8%@Tn1{{Mo9lVk+iOsJs;~?(4Bg5fS;L{KP2_ESk7eetbGr+QQ| zO*m49$3f9NVc2gH+f-j7gHt$pvoT_M*qk2Hkvvp?zw#u;MlJtjJQOEeVshH@MIz~i zbR^=lrjwDVpZk-3YjiB(;oy2z?OTF_tNJr}Ogje7gIu zUHD=AD7BxLLarg6lskPXU0=y<{*u^A5k6pJ$8^f}GW%QXOhgW)X$%FY=i@Ds9T>pE zh~wJp0Thbt-igz-GgcS*wYQprO{lEAzPt~6!Qg^f(9A=nFd}jz?4%0f1t~raB2uAQeo^gIAdUgQXa>}JyUSAgqLJr>qRhCMcM>V)YEF`*|b+5__--#P2*oFql5Btz38-gobwAj&q}nyEztOsm@-5Uo-Un! zFyvl*!!;PfL~En-3;o1@>9FUa#V(BygyzQTm!05Xj#p5%>N3FLb8gLhHlY<^_f0o$ zOM5>3&|g?=!j4vnE9n;uLA;Wc@}=|VFOhRtOt@5O<*Mj3uGWk_hC?@+mLNzDc+ca;r&jLy%02gdWqf*O2D<0e z?CWP=&woyH%-iacm@RG}p%xRYJ6BNTW8(q@M4(|yZG6=4#_E-oRrDIQ+PY9}Tx@Vf z0B}(kuCCTL`Ru-^i#Y~2%2;|N*N7S^j*Mg4D0{7%P`|MC;}GQ93uPbd#5VHTLJ7g>E&+1`8KFo(qM+ zF}2*PLE|3U_gUJP$6p?Qb%|O*S7ieVxuJzu2(ZK~LI6y$FmFSYK#`f#(s`)A#n{|w z-#a1n&PQw!@8>W1U+w2V_*gLbm?Dr?trmEDci@?bT!~GQgiKjf;nC5^PQ8s*#2m49CcCkpbraz*>pY>3H2vN^2+kQ`c98O zJoGg}m^j2aR zZEV_S`U0ozvhSw-y^V#&!r*@I`%Sq+6Lv&PL}hY|`1}`<+!H{$0v0;^h?f63=fzCsZ2!A5vzb}dC3X>n z1#nI!u`3W4-VVHCi@q9>vbLWQ<1`SfTMwVah@)XYw|`+_|0Rk-)9~V@OBe)QTU85p zFTmHs&6HP{F$8kvL~xbFAZKhe<*S`cFaferyYObF&>_9~ZsfPDEzyG$ytIk`#|xS1 z^hA0peX%w%Rh%eJ6`utUIAtzTCa9ZbT-A2i3^aBNEH!X6RH!U`S#v@p>9sJeemaIl zceS5*dZVMY;c|7VH~?lVj}&?Ivq; zf1mvT80}p?Y9#nii-+u+KYF@yEKmWB#86 ztVrP0wAUZBJ-*q`n+(ZCyG1;k8zsNM91y zuNApe#Sa*i@L|R=ba%yPr;EjD0=4a@BiE^0b=SJpfkC!wi#KrlERg?a*WVe+>}R#( zO|B3k}_+t=)xDOt5lABZgHOBq_|3XKDD^XNQ+;6YWT?UtJo0 z=9%H8t4yK6wa=K$|!9sq_Me_d-mDfk}Ly5ll?^1D1+VEiZLZ>Igk!R zFiRUFvzqU56hUS~X33%QK_%<7IWn@xX=GT55p-HZlQ;UFV1D z(3<6OVi!~p6B&J+aA3y;u?tCW2>O7_Evv2?Kv&1|z;A|t9)`z#r#TU1v|Iwmi?}RX z8ypiP3wY3nWy7z!G8c(^Wa^(H>hvl4$PT3y*KdPkU9h8d!l?OLt=pt^I=KSUx_0Y6 zhS43ioo;I}mfiZtpWWc{&*+DlBf$#+Su40Y6TcG0rB+9wdO&1+F14IG2P1S%GkwAp zg7F<^Ihkf>{ePP>TxzpR(zt5t7*9GepYVVxi6W6!-@e(Cj;+Vio}1?ntsnYc{q*V6 zi2gp&mrVAlw@IATnq*0M1GlAI(>CGdC4YDq3{k>^O7+8AKl<<{IRXa$46))m&k?zR zZ=2NLNr4v8X3k*eEm;JS7i~AmN+T~qX`|_0L!#}zcB#}A*Y*!a@IN6hU0=sSF;z0h zQfZmL?Pm4bt-fA&{1|JZJ1>=-lQh-rE%7ndIec8+Q+PgnQD{{W%&s}VrWmxiacowp za#b^dtHOxF5cbz>+p)Niat*K1pj>wxpj1r1WiCVxE;tw(LgFV}0!i;Lw|s1pJvEtgV@ zwX$8a>zkW()wR01v9ZeDme;b*_SO)5_J#yqn zl_#F4@P5wutTv8FOy6wQr*Bs(m-J&!lZeK8~jwp*U zH2Bjkb7YTFUA0=;z343ds1)A{bho`0C&sFdwKoPlZoyF5HyLEspt9@sp{32+vs$ND zI{ff;YIpm%Vj#NP3ifqt@0vEu@6igktF6jg%?Y?)U4Ik^!zT7Oe{F{5Mq?rYRe98H zn~|%x=b{8OIr`t%I(G@Y@@6_AoSmV31+68{j+TQiw~UMo|G%@{x4fd3yA5s+uzTl~ zcVYX0Yb76Y<3?Nbg^+IBNFzVjU2xXM&K?B%D~XEyNo}1- z=2g-J5!z|x-2Kf!%-{6$9}6`7AFb5z*i)7B=2qM}wf2DE7|9DI(XWM*adeuRh!dIl zGy*hg<&DlynjXi`NIi0!R#ksoz`MJ=H#^MkzPi$6OX)rBz&VjTu&1HOiUDNxuI!;Y zE5ZO9u>imlh@JE+Yu_z{4-|-(dinnQpR}we`;Xsr*TqA}FJ&?V!^8GKrh9S!f%~7b ztf%h3|EWKjIgG~ONZ`$b2Wh^+1Aon(H6Uy+_07^Jr(9DDQKTd+YM@%2Kvm$#Kj|KfOuv;zB}QM9JyVp{J@wJ$?7{4F zwBey61QSd|eTCTQgm`Sd4!(9(CzJf%Fm+WgHrenS$2bW`PYIXfz$IRg7d7vXhw<1z#rNC}2Z| zq9SB;hh;P2I336Mb(j3>fSnS1TaR(Vjd&(nMWH%HfU5<`?Jo>D>Pnb(-`E=7Erd8G zvrYHbUpR28^QLlQk~VZGGbf@MAzd}NYCxYhh+sg^Vs# zC{^c;A`DdBe((H@^@&(iG_)vVLyj9)WZBCL8Haf_pvoHJ?G5c9|6F%OZ@40Xr!+lb zaNI`MHO*UyJVHz(L~_iI*l|Hj0s|ZV*^VqJeoe~ye0HZX>M|1`CMt#*THye#rXC7Ac8s8Zo!^{O% z$1deb682Ycy{bp`%B~|3);gxanGGj_P%BP{jLhzK=r%~*uui%S*E_=!$&_+1!L;R? z#Xx1(`v(p&M&S0Evlh3@hl^k%R-AZ_2$6WBbMyL@P`O@{JDa9yQHQQT8-QpRb*C(F zEsHv?UKB^9fft&?lel%MlQ7mN=O%}nFQA1#IX8EbX18fOlS9$`R13H$X{VVFmMW>? z(aFhEQ%c$Iu{&%AYVWa?nmRQ(IXawj?6Hh}7In1g-w?QG6b;Hk*Uh5c9+zZ|vvUBg z09(RSO%YEGyg;;}9uLAa1F*{yNC;k6cWEJ=N>3DKM|pk$;i@>hX(+B9>gnr?=L-I@ zrw*08$=qZ%8O{D-eBk0#I5#tz_9v3B3FQ+LXVQJ4sg>Np)aZd&E*x9Ud&cquDZg(X zr+>?}H>e(;vw|ZF2h?z|KQ|bv+!Fq>73@icbHjt-)WX-pQ-w%y?9fOeR!rundpsxh zlO46EJN3)%?;pSgksU8C-7hWyFyT%sqGc)B}&Q$A3d31x5gr=r;dv50@< zTxmEnn(6C)Q_AX3#ruL|L?DoO1^T$1jM;i=vY>pKiIG%yDxCC>9|*kDQvPsX?{x3* zvw`9Mpl_gzVv|)eBdLu z_YdBA=U~6O3$xw^-Kg zzYrek4|@0eyi;D~^G1=pc*>S%%$NRVxHl9W=&@6QNKe3j*IloAqf)Q0zv?d2#-FM` zh0Y4<3^Fb&B5gzQ$T3AMYYa~Og4k#$U$Bs0G=?#8d>{Mmf$GpqQF)F$*a$or@Xbb! zWj%d`sP_ooL738H<27}3YH+I8>gh>lz1?5w_KaMZKA7{K^aho`j9ZEDw?9$eWe%LR z15F2%B0I8k7Q70nmp11ecO~3|`NI6@{$9yzQGK8)C!OQMx&C50=a2RU?hiy`fm})* z9q#=6Os^!mkS95PrsF!D%8|~PU-d=(L~?!CaOY=t{Ro}fkIm=-W|^skvd30HLpwPf z6YB~y>j$fnQF7jhRvqy6^FF&5%i4zasE_v_AizcXD>uK&@;!#rWC!fJ5bYBYKl)!% z^MsPGs*W7F5PI-bGX9v26@-h~pUmcB>SBKGIDN>=ueN@eJ~A>ne!t&eQ+=oQhx5Ja6kC$0JLRcY#gm81 zx$Mbt9!}f2i0mJc#cZlSP+yRUU)2S#fRL)K7orU3{Dl8-Sv}z0`g`vu7T^3GzyHC2 zHQ@Pd=Z`taq8e|&Lf={ILM%q&f}aINz@OtpX`F~Emh z)V_T2X@1A?&ZU`)f2`D<)BI>gfP|5Ei9Xm*eLAmw0+(G#GM}-y^TA6QUoK;sBhs%` zBt|%N$#HAbHRiygLo7)23qG|0ZONe@)tro_p#_9T)c&Z5t?AQld!h|qZTT5#wU(F5 z{Iijr)^SSny{kWP^RY=hv6QkqJ9``ZaAYh?xAQ%c$F z@4kFlWS)kOmUi`04zjIXR&iA^eF_vi?c2Vk4WBo#IN8y#)s>gK{>}2TTQ2_UO*A;u z;Aic-Mv8#Wp%hh~Hh31tWz%+TXUm6ll?BE~V?py`I;R9_Nbs+a%6)NT`HslUk z*#k2Ll~;wC16H5kRO$b<0~gY2U;4tYb%3vbH#pOi3*`6Z1G%1=YZ6{t-ge4#DP=c^ zYf+qDcN+bB5kF+SBZf{lXq>Yvk&T-p;)@V zKOGwym`)x%Wg33!U~>9*I%ese%wJDlvI+O(|HU5tF|b^$_RK7FG+VmFM>FPzL8PZL zK|<_r>qbYI*|STN9fQ7QaP^wAG?qKtZ&Z6{O=CNTeZs7@9&`Gw&PKP_w&?F<-Pl6UhEBqqREigKbrCnhXY>gA&<&r zeTA7pfBqLzInQ7wJ?b4IAh-%eEOH!J-OmKORU{Erk?`k3!9=bvmk9Lu1HtZK;idw| zfKRPPN0LLf*W(?^#QHqELZ0X-WN2?X<@5V{GS%*M!QU4STD_SNHm-?O+yjJ+WW&#U zCgyVfvDus&o*lE)@O;5DMx|k^Cl*nWICUnXZ?L?UDo$O$5v17yCJw4sS0%khe z+~ch9Gprg~A}%E~MFO*fy*ob&-L?067s(D0n_z=rnGP->8d83LB11w7mHBk%2Xy)f zFL!T7vjGsGOB6$8lV+L>6!I2Apnd&vSL??Z2e@&jWIOz|FhzM@oP_oQXNs+`*jm^k z;t-+)l!(9wL9&Q_Tss~z_h{io4P6^b{s#7T2wB7st_F>=N#>TaLw`tlevxmAtfW{t z2BmqUf;ZNeNjS2j@M|08<+baSzot@96v!k*A1U78uKlYjT|@IomkhnpR1L0-l_cE& zFKm;v`sChr*{bTgvVwZiZYu!DSX3%Wzh3^o)W5}Vp%)C<#V*D(OIux%ZE9i8qw|3m z)&0xS=ywKAXU|8YKa7t4*W1aKcK%K3op0(Hjee)U|2(H3Mz{X!?cLqCzp0Z}>qolK zg`*d2qv#4G6r?!)koF4z1F!Dx1GSNUx$A^XH0FFd@BHT_rPh{{%}ye_i0Dy`N#>K# z;OFJT3A3^p6T_#9yfq=#Zp@9DUp>b%%jBzq^zIy@RV_*rVIeVd&e%gk_SWxmY-qh@ zvsP;&G8;^7{jq$b4x|QU+~Knq^|*@^P1cmwT+1So1T)u4%j=j{lQ_0+udOXEZb)=o zJzxAzY;i=+4j&*Ax1wobp(x}V))LigqMKeUoqkMpWglH!CsIbewz#rO~~PZf5sXO5P(?j;VY=i8BM3EpXeVvbYv(KjtBgfKaz=9zR-az5jQdX z^W|<%b$faumdEM|g}pug^r56>MJD=&ZVr0|#Yj8}f7EyI<;z&J>6va?#ZZdCgkw|ZnGz|VQ(-R zN?BHXG~5#iAmO2qK(B>2ODJ>l)>G+V!U`q`q3n$LU#Z^)9|pUQcb#N683_)W7BN6X z&x1KW!O;M5CiHTJ-t#XsbYa?Bm`_(28Ag{JV*CQNx2;YFBhifNPoE2vV)NOd!LSv- zTO}=(n>#XLseCp&qyl|Ys#}HpeZC`JwJ$Z}JL|Xle|pQ}|6-*rD{pzdtKpb6U?san zK|K8SXdvf5;3*k=w*^$S#$+{wT{pZ2qt;VbAW=Y>g!kXF|gn_@fBcHC>5 z%Qx%TNg4lozOU8Dx>VC_hU_z4#}acV*-^xH&CwdU6e2{{cK*S*)MY!f0N?fAp`rKQ zrH}Y_7?;g;qR6$L39EZ=z4czDk5Z-KW5s?=_{&jfZg@f@dyJT75#}&B1S=xg99CMa z#Eq(6HAw=Q2~H#&{lZUAV;c1Eh{Z7w7)kX@bt?zL3j;J}u6$c|>qEcGt>E$5er`iBv^QSCAaFq3q+SY0^y?Ec@_|E@WI+<$6+F86zn z{(dgE|CGPX&9}|@^}XMJ^!M~VVG%XlGWnVC&LF9PDBoDatQFCEK}~>bBVn=wVd z907nzbXRb1S*#-=<@csdvbK8#w(qo!@X03D%Mg%Hk>XU^DQ?CL7E@M1!ZpNB+XctO z16rtI;SRl_>v8nMeHst4hLa?~sm`X1DwZIkGT~k5d-sp4vqO2U_&r^D^E;|%ZM})8$G<kLYn-+Jq1rbgQD`B0975n-;ec|J;^LWpvLPNcQXukjOnZ9DLxodgPrGrC#{%C%{ z2^ZdM-Ep7mjU0ciN8goS4;(rZ+voh+nal608dpA6L#*l}uB-ixt*5{74N1#~JzzuD z4CBVPg3mpyZ;6&<_M^~R5N^J9 zTfeP?SEhi%3dxdMP`(T)Z+RpxQp&YZH!l5z2L&b}$NK^P%wFt}we^Y3h7)Cw z=6%Fu3`{(uQ@09{$tn-n41d};S|sHJF{cQ~SBtKUGq-SMT5dZLNeyOZtnUJ}dM(o@U=< z;;#!?eWBkO%w`9vikH#xvUfD?A+}v;;1C6p_*5+1ME6~dG4xMt{X~OZ+_;P2-Z+o==_E8+Dw-@`R$8r}&#kNZ3&DdK@ zxubiPD{$M50m(*3T(+~0zX+6a>4|XvuvmS5G?mNltnM0-KGR80VL)tIbCYcF?ez-r zwyQrZl6kgc8fI^2h2L77^}_`f5bkd87gm|Wq{>VQS>WI+cg$p7_O4}IoFjKu@%^T8 zjon`UhSu?#vMEhqu7O+hK%%gS{fa>CU5eN8+FDH_&_hqSPVN0nH?#>UR6AVl+T$Ye zHSkr#w6J3lAsH6;3TzH#bkcH-D~Av)_;FO{8=Y(F*PqBQN^pk7RISFry&|?jdwu0E zl}lq|rP4yBTpk-Mmn#eOt&LA~WV~?_RuxFC2ILLw>ev0{nVIq}x9B6LjP1VNb=S%Y z@145j?fny3@V4y+?S=kZ6mpHuO_zG&iN&?4qsNYQ*nW03@|SM;%=EEi02>!K$y^7K z2X<+oBQjNd)dc;S4P7m2`UL0>RQCs(4$*V9fm48y-}Xcv8W?F2Kq|JOjhV;3@{bK8 z3=TdVlklNaMBhC+HG)Zqp^4lzrt^F3UdhO|B_^VQzq?i%fQ7_p#`tgNdTwlxIL|_rI}+>45^G=yAQJFOjd{1m6^wy*6kXa{Z_;*XSm3hgjHJwdq6ys9 zbx+sBtv<9f$D|>_@E(HS6>hZZZV!MIh z*pGPjgn}tfr+O8md1-9}&60)??};WtLnTk7=hHsR8!8Sal4KV5hW!DbKg@+c&_}k^ zBz&q0hoZwtPktd*7=RV^;nirR;{UUaI5l!U;IlkF!X$2o)c+yZ7x49})Zk%%udmmN z#>PFV$%rouBas*yod`!WA-@l9czDzb`-4H-@hp#f4J(oGlVhVd==b?8 zx)Jn+z5b{j4EIKhA+L&cfXO)(OIe;wpU?V(fH#6u*P`+w^i}>JWCpv#s+WQ5J4pZi zVQZAsR?6oOWujhx%pM&|AqwFtX7Fqlil)F}|QCb+q3d*ySbLuG=LEu`B{7%<^~Ol?Fi^C5Q^!9a_=s zM+aw$tns@_$UHD1$^v7oHR5JN| zC=?sXB}3sWYMa}7^8yAbNRvA7*)|{gZ2?uZ4QI#1tgLU(7}(z9QFw0f7VE-AD}YGj zPLoFAsw6}}OBwh@5-C@o=mdm62Ibd&<p7wbq!K zX^{7+10D%HAKz<+k&W>$P!C!Hm?2j?ruQH61W;@Y@VyEJ2FORf)eMVnP}O_l5Qp-@s8C+gE_!Wbq;301c9ok0Nl|`y>Wq zqH2V*)DshVI?lwlIKr3;V=#Nzam&pZ8RG`kC$bl%E-AO%e`P=_-}Do#wqHG(-Fn;L zMK0Ai2UvI_l+%Q7mQRoSN{jNFejyEL#}7143{m$8oNla04K+gdJhS+WMS8YpU+!95 ze^!P{_&WF5Sm)D7tXPogdHL1PH-6sQC|N68KV6YuzmKSNYd^oWRsNSNEA29V1P+c! zgeM)(*fAJWt=iR*qepW`kL5TXJG%9KN`1EejOFFykt1^R=u!2xj&=zg`GIoF#A|x* zQr%Xn!=$>SEBEss==mHKQ$oB_WN(bApjYqNp0z5X0l7 zBr(I}aUbpbkLo+>^UU-9uGe;bu{kqlS0+!z!AAU`N~ z6``4KxngR%gB-C#~Ssrk8&1jQg6T(G9_oRvnXM7+M*Kl5EMN}7$oW; z@)ciK=N2jx1^=`K)%nxv2?bFRj9Bk_J$h5GZ(%wXc=$n&<&A_czPf&gC+rLR9(YT3 zHd!3$w+I($rH4*ETuu)6^`!e_*68%UU^g-JLSCQ$*lfs`9t5`x?l1PMB%$t;LkDBY zP;Ss7Ds(WQ2C{)z{LtZjp!{xYZX%8vRrv>w%=rSUr#zY9^f}KE#EFna6H};BBc7~J z-Q>H^?+X(Yz<-A~aNg&$tYE~yIAtYb!*9F8@1=paJ-iU;kM5hANCy3hcy`2>9++Lm z!afqV?EA-iyFIb^z-Tx+F?(=2-(69|!~1SOTJS1wD4egH7#T^%4vhPPs%QFm#J3Xk ztMLOP-k`tR(?6b5KCxYO}o){V!?arq5-+Nen$f}KFK|C6qc%*8aOYV8bsqY_HYahh- z=%cJ^rVhD*9Q-8aJ}B9;p~HlP!Vbr8LrmEf8Zfso&rCD*G@}S1J1uRJASQYp+5Ch= zxPDAVixe`6}V%0e^CnC~?D=8qce!4DbH)ID*kMa$~gFS^u?jx`j zFQ4)R&`o=+K*)=JM(Ed|J+SYcM-H7<&&`hc@Wk$if*WH{)H_&lgr z{F&~95WHUhV8~8}E#+a+Q5bYqkfKBVK0Jnc<+L!khi&d}LE#KmWDCJ_z|#fC=F zi~Fsp6=mI$I{NBwSbP89M-Q}J}@0BLDX z%|-_z(bSTWAlfzWzM7_mhlb;knOtrr63>Mq-lmZy(nNvp z9I*I8X5WQ{rC=_kWokayEL{$+A&A^sT`g@2zuJ0E;#^Ge35pe5!%qbHLb(!nfVZ3t zEi3mS&*p8(+Nq*ku*P1}Qj2l(KOp=lpDrCle| zX_4v`Rpp7b@DruxS|hSlk2pmMR&{^-8{p7Eu^@%i9Rfzej4|vLQK~T?!c`Zv^Q-$! zQTB-b2FsUtxqotW@W8~x0evcU=d8I=VrG!bMfJzH7@bo%-XsDMWdb5>m=i~O6zYE9 zerr%dB@hztJc)X_veFKmSOdp-gr7=C$ksq*6_nexjt*>5*-!o#J>2?W+JEEL@72;9 zwoBu6qyLZ=FkwUjUag@YCJbnkc1YENH#gOvX?{4YJ;2EZfUF2@!2CF~&QH`E`un}5 zTlV*!?%lujSZ%dlS3`H)aTyA#Nnl&m)s%7!T$KJw&P-%>RVWm)b5pD6E>=)1ytwt# z>~ihGz1eH)(=UE6yK-mq1NR}`b9twR9xK78@D|nL2r{wCh=-NM{22*Pv!>A1NnE{V zqh@vkLiR>!Yw;@mX|MM-U27;hv9WY0sw&j8lpC;%Wvptm7aPsm>6O2eGHWyHA{l?O zci#EGer|a=RccNXX24mSP1aXT$G{W?BM}8f4R6v5j~=b$&zwj|u%}yeMlIkmp>k|8U3WF0q|u7f78#U-W4$#1Jy%2}p^VRt6v0 zjl2T|oxmPfBo@5B!;VB(fgNOmO?c~-n(WO@5$Hgzh!$4wRf)m* z28lw`|7nEguv_|Wod-#z$1{?%j9teAd?))mk%7EX z@XeK_iqRIJ9RcAqL*1B~i^A$EijOYauBh{(PY^3zaUTqkNSsZoz4M@#)nW>Df~jBP z(aOF!+I5n(O~;|tgasFCB_S5(s?;sU?vBP!%n>yrfhv=xO|S>#xgM3^n;umoNRRdA zw_w^ioy)yl<-Pux`=pGJSFA?4NjZJ}0e}D2Pjrn;ubyMEITq@l1uxvb>*!ckn@BF*F$18t6*2Km z6YtK@&hmR%*`op}*g!CTE&tCd2xoh-YIR$(h4+$+r&UY6onT=+gId3(`Ee=)F41Vy zUXcVCD`v3~Fy_j`@Oj{~v_iVz+9fy2pF2}J^ME3>g0r&3Q&5$Gd=E%*22Vdk)09bYjm@VGn9MJljc#BI@n!W3-Am z8ZQ|e$7)2o&bx>+eVGh+_hywfNft%wB5<0roBofP6{n_^qB&~ zaCsJU7tH21*JXXWa&r@CQ=)k2Xqo~?^|B&`xrDqF{A=QT%G{FSp*6eLDSmb7eC51- zohll7#+~3Goz-;IBkdQNy`V57?G`QS5fsL*LSPr;`T+J-5d5SF5WNgc41Eg_$l#B*u5hj!uh4= zJz{`h7Y;6n?-@pq#5G1nC{~X0iQRiXKa&~HzAC@&iSY3zpO z>m%Wnt!tZOgM(wMqEaUQkv3@sry09emc!lFu&fDXi_8x~b)>AFh?M%6LUj($8gY zK6SJZ@u|M?O6w|>7#K+O7X}goW1Rc9eNy>>@jeXC3rA1gTxngc>Bo3_pkN;7=zgMY zMh^Kq>M5|Iv2>7pD56CG;V)nt=?VBn&w>~hdj$PHAuE*dcKS>!M{d6}7Nm{l{9te@ znBjeIU@DLZOa(u{`FLI?3DOiJuEh2loZ10>8wyh8bJn&IY>Q zX|YPfgu_tcMQ9P`Ur#>VLJv%(kTTVZ95F~iNd^hyf&5hBltDD`o(qp*H`#OimV<>c zPi)YN29L?AllR4NpB+-xV{h~&nkFQ869Gy8+_3+gpKOt@2?k~LsTzku&?XG}-_~kS zQ@mO=Fqi^2?5MP2g7j%9VQO8G)_vsPa!S*DcGYoX$U8mImbl&Rg&QA7u&k zE#Wn#j&;m-`ZGX8c2+86_rY=28s{=-=n9vXOir>D7pGJw2K!Ixueoc}S3z4A)60 zPQVZx7yFpa)i^reJ2m2<71 zS#&gPTs9}=bVPeuB}yStFg)X1KX~j7pTv`x9dT#Ww$5Owa z6YfGUnGPMP`+IE>FJ)l$GUDST zMyWDO@>g?Lkk|3X!=MEY9=hiwNj-5USDaD-hl{U-^x}-EZxd zxIBc3Jezro+fGwQaeE!&w(GhwisZ`SHyMrN@Wp~I5Yk}rK)`UJ`Z3GnM#ilPX3?R3 zP}7#{WMKuhx7V#17nCZUBLfM$or4t-TRHBJFw>oatbrxeuFRNo3(cRYmlYSWd z(=o$l3n#h6$MOl=j05x965uc8tB~(YBRPWrjuY;goSj;(og&Y=|gw`&!vizo@0E zMd!CaB-Q%Liu>bM_0E`G)9shoF5BxzlqTXdX@hZK6GT(i(!`1}N4oPfA5BNV#r#o8{H@I^`L80sEBoBr-_HvTnYz zIdj|54c=-+e4RFGbi<`>pKxF@@^z8b(FOe%m@moz!o+PF6G8wMc(YzPcfL|Nf3C8D zm(rC|>D;+1=gzhIv82lqOCMu@CD526Ti!o7zZo%%by|4fM<&c8mUW;>7`h``LQU(-y;hLmsc0~<~I7zn2-JPb+* zg1_iQ63Uinz~ns@AX0)K1sM>-hpaqf{dM>EYf4r#vefZ;y3fipCsnSM8aUSBYFA%u zG!}Wc>l9v7=ff6gE&B)YDUm_}ZoHcRA8T&{ANP6QcjBGvKlgoNfWZKR!4NYfZeVzG zNbwdak`f29Ma!mT>o6cGvK`uzqga!~m7OT-$a271bzLh;BHKicrjFBWolPcblXl~D zH*pMh({xicZDN;b`{@y9yW91s-{*b*GZ>Jdl23QZ!5shj&wIbm`y9XLd0MNDl{TRL z)rPFRMjx$ovbyohl9A^Z`lqr>8nPp5E6XeG<>j>+%e+DAkB0P*@!M2igwrq6K7<;L zjz_Y=e@Yxf$o6h9o0zRbK z$rl6OkH5IDUEB4%$NMoa3Mr?Gj>q!8+B;keE@#d16ocLu2Yt`$@gXnpAF2kerhdc- znzvZ zJ37CSj-`f(C!<{696*f0WV{d#D0^=I5Pj?&b!WPDmrUJk&Hu5w8>x75IOq$Snscf6 zNQj#Cy5;F-m}6PD_`EtnMw&4Qs@r!Ud4$GqtMY^wRpeq^n+EUph@&3{4h3xtl{8 zT?wd5!{Q1oVQPVk!6tL6@bf;KK==1@K8XfuOy-~@$#R4su?ZI4x4-fo zBV$B2RPHU=J=^%v*!x1HA zmgkVy=l10bxM`}e^)+xF&XTY6Z!&S^_eQP9FtVRag&nCFu8gX==<+C^*X#8uezOOk zeH=hNfe|7|;JQF7RQUHJufjm*f}QKZAmG)H@I~7Hu5&dB&pY7ObXIJV;>TlfX9Kd? zaTLb{B;LT%5qec=jd7~TmA$jGTQaRTBDNA&8&*UpBuZ{Eou^E5f!Fyqh)-*~IYccBR`j zvOaK5_4lPacHLaHng&rIBDo~0?eevpdy8vY$}knQtJSm&o5pDB(dt&wtTk@vo*3F9 zafRHR1~EZ@!u!*7VUfCXAw8K-t*$hxi~!v4O5^%U751xvdlm2aY}2T1<&2i1@<(Pf)ih5pKdIjsk??t(VPNXgxFJkjhh-l&Xgx*t~j}JOL z2OB=u!gzW#08}}|1%KlnPw#@dpwjU}wI|1S1Ko}mgP7*h@h56Wd!KvjMr@SEo+RFi zWNp#8Y{{IGn#Z#mYr4AHXj}tI*SLD^TH|VqL!;4Xy=LCaC3_q;IoAbCsPQNXcBo)} zAo=W3(WugRhS)wx7JC7edw7(!n@gu1oC3qM@pOE4SbrFWwvu?zaKZED1t;}0OPn2< zWHO`Q9g!2QT5A{<*nY8jq+j9ukoewvMTdxrP?&BB@|BrIpM$Xv%ZZpkv4iSzk7OxU>KmxsX)?Zr{i|02oHvhcI`rC>We?+7dvrRQlhE?5N@b;@tAS$a;{$%yb z`s)8{%RtCb*bno%uH`JP>JfoUHCLKV@&wAA=ARnCwUT7MSQ+hqve%*5&=gr4QM6$u zyCdf^#(psnGqcPuV6C))p9!XgxJ+G{hU>O)(|v>D7UuwlTxQ`2lv;fdT5RLd3i+9% z#r^#uAERc-&zP4lnwM#>5aWyJO$tRn}I&I>_$n$5-Y>4uf zhy8Nc74@F>N1+yDImb!A$V%`l^z;8vp94j8K&)UD^0X*a&vl)R zt1nW7+&QrTKo69UV2Nk{X(0kKEb8$*#|v2&BO~N>@f0HX4M#klXG!DBOQi5mCEE+j zW+NAm@Dnca&9mGNP%T2ZyO?K$GNOFyUHqq99g_uz)<^TQv{__ZZMox+l&!|z(yL=} zUUaE!w=R4|4X|C*foZ)SrVl7~4V>HQnHjapew#hv+bw9Q-M$mEOQ$DAq~T%n%Wd{g zQroH0h`+2zR-VT4ZLgtSEk5O+o*b=88{|vPY;N(Jf*r?*BO|%NV}l2br#>3-^+z7x-mKBwpxk`^dTnN8q>zjCHBsmnb1Y*M zvS(SQ7)go$%x`b2X$`t;DxE8}q5nCaB=`)wL}Jj$i_WbCc0~T&y8p?Ki=5A8{VaRk z(sgZ8mmp>qh&y<4;OxMCA|V<>?IBymcK|e|38yiesn42sNsA^(9!m1tmIO5J>`qg? z`$oX@Ld4XDv6G7EosAzSzga#iDNua8kn`-gs0o9ekKzfjd>#2*w(dvGOXvSuudcV( z<(OY5A4)vu4-AcmgVAU(JU$fg=i+dj@Re|u%QhZMTMj7!>^a^H9Be&$Hm_~n$hWi^ zVFZsAu&s+kJg`knV?=UgfN}em?0dcaUVnZZhaNvNJ)j}aVZ zJs4cqFMslUIXq~6#FGe$o*>9dm@hjVz`Nb>wE;A7 z35U}f%xC5@`9Zv#5^8ajxKyKIf{+9PD&$pzM3;2Go7Q%t1vo;k#X+B=vNV!%=93Or z%;Sl<9Lc;hHL_H3SP55BxN4U-7;_AJMqMF?1kMnUhm7-I=yRjN2i7daDGk5~BO+48 z#F7a1IECxz5er^Q{^n?w7iF)UtLDD{n;MuOE#@$^oap zyx);_xV%FnxxKlOA+OV!cI+>Eyq33dQ8}Jv#Xo!H^phE7xyP+hr-a;c#z7jSypGzz zQrb-@QCGsE8!BCJr%MNG4tFxLAE6-gN zMi0^%9NpJ%xPv}_+Om|-U!dF@R8a8ylx3y;z97)da{zhQX5LvC8Xqj2#Z>O_x!pd8 zCz&~07#treywfvQC?J|{?R%%eOC;DhScj}w29+I26b0`mGQ?tK(U~DH!1{)Gzjrp$ zmx5vTK^k5a)n)^kp>snx_`-xc68Y9{={JuFG z-^&=31izMG3}8TI803vT3_6Y)3CfVW2%0rNK`}s?Jz=+ZS0r@XV1y#OyzVgaRM~oj zkY)a%!J(7cR63hKpG#S0K&({md_J2_Wl!>Dabj?A!mO!3S3g8MFrmShrs0rd6H6nE z!32^bVFVHUm=0*H@`bLcP;#vu@TbzM5Nwn3SvA_xlpB>xFt1{RCSjlW``J55#l7C8~|DG8R0}lNRtGd$QdxN@B<>XWmu{iIw}I3jx1-sLTeOOxBskx z@aT6${Ea}ukpU-PYYbNKKq%!~Ls1t|bsetgP%A&?^t&p9jloGwM;5`xuNBqa#zUyjiurX9gx;;*y;K@qW680ap z0`}Q0Iz`*xn^2qrrPlV)Er^?lQ3~8vt2X$V&kXiO5N&+@;>EAC^{(_oV+3=5xy|=X4ZOdw$B}npSJxr@h{%E&m0Nt2yk5 z9#P(tv##X4%eTL*=I0N7*o7->-j~cq!@JKMPKm3aP4~Y+d%+$_27<0MB7&7rej3L+ zX~uPu%mMa*jKzu6d{P z`Q^(Wcd8G(Bku36qnpS;dF)q$U`K;ubQqf7ox>RdLSYhu=}_9j8qary67>%{KjtSE z=3{YB!4*wMT?H%pSTGXld@GsH@5<+Y)x4-iH1IEj5fwcv$L86niUj{6pm@r3V8I4fXn2_>5Yoe;In~f z=rIYs{TC{IHaL+DhZm0A|8H$}>IlI=f3mp8n#-J=>Rks`WAKwA;|WO)#qx(}`FKAd93Wn%S%~n)<+&NbI7I7fgsu zV)q91K5ub2^!OQ&rs|=SL71`A_3BYU1J;4&8R4>iTB*~m;K_#+u+lS+hlY#Z(9tSa zr#~Zi)yLa##QLT>T1d0jWgJahrpaws6uViv1@JufDw>k!8n_CcPKKq>svEe4`|lD3 zaK^Tb_#pNVBMW0}lnwq1PJwof%0M6<|UsHKR>Oevi%Wxl-q z>TlZJeL>XDA_<88YQur22;&@M#j;wNcGF-+)3g&ik|+=>V;0M^H|-+7^MOk&5+-3{ z6(&ZSEcW=BnM?OJoA+Leghrk?^8Qaaou7FBktaq%kz6KoWZcZf_>oLz^S1VUKy=z` z&bb4MAMi7EV9x2w=2`z|_>szIMZYVuql|e28Ymg8Btz2)+HHjux`a9ng3}?>aS|UU zN1x(jzPl)Tt7Gd*x6e0@1d6GYYq8R&jry! zNp~O@2u3g>47TnRoYG&TBihxW^_b~SDqcfY@3y{6 z3fq)eJ@q;?I*%Ayta*t*3=?i~;%k>SSvcTCa!oK4VIUEliAKROp$e-I|+VRl$IW`u_vdne9 z9n4M?N_Gv;JtS^uHq92=V{FYt$lIP63qgu#BN(^-$(O`l(7tY(nMJETfh9j&>{MB_S9ay*(5CFbyPG(^We zJmf{a#%@k7hy>Y015uo(N?`ReGlLof96<2^2>6 zSUlir&07BV>g&YI^I#Q-3Oc18V;fr&Wy0j?czL+jTMZTa<~L(%;?KYKY%nmpwDi3{ zpAD#$r0<*G^u73ruho1--_YXXE1#IPc}me)2G|?oJ%O@G(}el%%F>R*8ThE)x~eQx z)TZcY0D82W&WYW-=I3{%hrN@PLnL^1Ty7jakGCc^JJDIr$9I!r^}Z#nE4~Wut0wWu zg`**l&|0&nWj#dTuok!EWC_P5BCorzMXV3nASayYCUlGBG(nKw7ANmiF$D;@_|3W_ zHFpmo%*LHf=Sg?J?nN0L~xe7hEU-()jAbk|JAU>=SPLo`Ddj})*TIr(@ZX-W-mF^p0l&F|GH$I^16dzSIQCg z`#sSZ(T~HSSSplm;El=8Hu!mqB=zEV1%f`FO{jDl_v6CUh;rlt!yaFGYWD2RG87M{ z)Mq6F{&*xF3WX>oT~2}X(R}rH)gP%J6WXE^Qj}mW1uua>IFF^amfF@o_v0Lm zXBQeAkyqtFLQiP^WI6IDhGzN0iUFq5woBP7WJ3oS1bESVU2aKCHc?8&a+uf&KggHz z(ErTa*76ObwKDESvbQ+@iE;EM^umWVc>>vZx9uNyXkZ{F9)G&Vy11;GM#vjlq%W9; zgPku!w1jSnpQ~;*Z}RH5^R>>`W4RmE@tV4To5OhR!m>OO95J7NYapL*<@3w26MT%F zP=6!eIglr_h&mCwP#eb`qVr4Da&=kW(}m8B{Ga7Npa1-c7#~_Z({|x$jqcOQS}kFL zm^Gt`PJ;a&(Ij9iHviXi`gkkIWl7^543z=a7b>uov@MGl5X z_>%g}dH8FbRaj|t-~zCVsL^0@AnQC>vpg^$uMJl`(^+qJ)-zrxdWz+20>8DXWVRed zpYVa4&*Akte7VBK^JhxKdmWCw!((T5OgP5o|M9nIjm~Qc7b0-s7Am zl;*<(M^V0a#ysQgh8jQ#t8yz|ezu*hs-G_%^gpi0AEQw@*P<^9>8 z^}3wzv$Byi-W!E6Rze2NJ|EN-MY5*p2PF9gk_lcAKo zXX2Mdw2okj+yz?SyDcK1sReEl^%G}+=0SSu{+`rOXG65KdmtoSqI+>3yrOL^dlN2~ zH{p%CC)0!Q3r2zdhy5br{BAzBFtT*|1EPA52ixZ5(N7jX zBzuPyApWGXcW9$_qg@p2GBSZS?eY$GNi#m;z|%A*c$0MINZZ8sfAaq8yj`yyk)!`e zZJnF0-~S}Vnsp{;`yi5(#I`s@w{@|`TuZU+Q|M0urAmL8r@s}5Xrq#f1P+*)ueSTb z4>eGz7`xMBfk@M!l0m2Rht-m9$@$&3`zD^l6?!OrqL+|Cn*|i=$0nt}36{Gy2+6V^ z5Ou>Hy?sSHE7RwvF5TJZOHXw&Vwuu7TA@i|16$YBZ^v;>L2>Ugw#_xkCcoq8rtnwH z-_+x4=1%q*Iu+OnsioH&I|LGak?!{OnOjC{YXtff5VvBPq|u>Jsxfw6$n;N9pWI}0wfB5fc>uPAf$=weY6lCMPj1dlC3 z2{l`K31k)*h=BU$?jT)htudt2Oc3e z9f#MyTJMf`1vTnB4?T&Gp6GF-95lh!R)5CuL^GlH` z!a8hc&gbK46v6$rgzlYc9@w{Y+nqc?>ws+p1H;{XDQvFK_qT9>ak6xb{X7*G1X1VNL{$rr7wqLzzmRYrbYi zawK(iUu;)*JgwI1e>USew6^+WC~VG8Ge1c!XINX^V-rX(@kKWyN=HQ-VMdu~`;PNh zl$spPReigB)!gW$QdeUAlQ?1~cERB|{^(S(I+RWiRf|)PD(}{;4w-p2a|^A0g|omZ z6i;v#39)@R@pQ!aBS2No!oz9ky0z$-ZuQf9OOsn;(hh zcNf$C$~n*YP#p|~-Va94Ac({XIcLypmKKHLi(a#P+{ymfrc5}R2!x4+Fo-8g_oU;X z>B~3w-0vs-`AlFun-AK0yYb;)B?d~rR>155V_RkqlsQy2;-RAJ7tSjKJ@S9W9d>`k zuX=B;hCJ_fx!&ywwYzU@UPo-y2_)woOR88YQkLyh9)RYxJIg$E`Hjn$-{|cv(JQzG zv57xdy@DAUp&VJ?91hGs+n0C~EPVFa=KEvKeecT8{Mi2Fy|YGeUc40BllZ{t!;;Dnz zIi4_EeV4k~hDfG546!i$Gy`ZJ4S)hSQqlz5K8RfY)_-Jf|2A_ZURh(v5=cO0MrJAP zX1FkmA?J#HfhiNciGBl(U=(?aM4rZ;R#1W}Vj9B&6jSZM7XyJWc3#piUn>@^Mem|j zEPg#-bktLUh%3E#F|p`bOsK(7B$*^}WaqyX7t^jtAXRr1^KIvqAGGdy_0@Z4?PenH zzyL4;cZ57_HJ6(_`cv+%$%W?HcJ2c8fGx+0zqg45A`u7&fYXW; z38m(efGXq_y;rFg^fhmSi@33z(h8I7BBiPUc}7%C3F?+e?!HbNSEZKBHd>b(xSg-_ z*Jzmj(U$A%DaqHQc^tEc4og&-UfpWoNK^TK#K%Kj)-|a$c)2TIwXCmRXFv`K<5Bf!!)_OMjFCstivu~oSo_Xu?^CxU2hAfx?P@m!5CgBPM^(f^^;0` zFbCX=R*bB!nZ-Is*JtHlV|`gIBRe*4Alb_OW*^9WiH^W8`#>-RxuTeZ`BBFe9ngOzXm;LnR+j*e+meon z-LJB>`|I~Vr5fwSq75zTDQQewZ?ZNc_PC4dr6>ypJ~5ve1=!Ue{{ZC#aZFSbgtBOa zc)CSQ3)9XGO_Loa*Ci=F8GI>B1l7L623VK!Q)5Us<<*vDBt+fD$Zo`Qo82;539@d} zPz1DDOcWSGnML#8Xf)?V8Wyzb;`|}>2%|_qSditT{3k~xfsxRgqTB|2Lp8YIDqrUo z!E<~ckuOAp*^)QJijYN*BZ2#23eyM3O)n%Yt@cnGL)j4WaK(eYdvMNv#yf+s|Pllh$M`ss4>kwe8Y{ke{=8Ly|T8p z)~SaP);W7PO&9xCsfIqlfUFTFSlX*;LhZ(l8xm`L>k?(Tr9eGbT|0!xFI`Jr2GL9` z5zvK{oRfrOfl!O#AAZpoCwja4W8#}y!_h9+`A7OKRdE;(*mm@9$w#(-@2i&FZrd4U zezxjI`(5vr4!Je;3ARDEK!R@RHo>IaW}m@t(OA8dYpu&I(w6?U|Mn~Y zZ5RFBmb=zNZxWMaja3?eI_2466|g7s1N&GZ=?v(>ObQ6Ar!E|FN#?;AZ7W1GsZU7u zg!v`+`~-=lF*HD2DvPA&SbA>u=*;-XkIs&ijunzwXU+3Idx?IhX6-5r4Hb5wepTnp z2m9W_cwVj!jp?iV3)%g}nG^P@CMEqsfg5Lz&KAb6_T9%gu~*;v1NFbFUu1nBXASkt z{bKnrx-XBVfh$a2G9z$DF}kHQqP0Z_g}zjfn{*Ie0oMi1sRqn~UiI;BWOVrWh|lXN z4G)(bUf;;^;n9)1T*seN0}}2PgjIb1SWLxQa9g-C}IV*PDrkKEDO?W2J=iRCu!RHqL81ar>l`HnQkMF;*vY~@F zDK?v-amKewkWB!**#8-h%L?Qb6^fk-O(-jpc#ZT@2sTDj2$vz@^QeN-+jmV%CTo~A zF0{vk1+hpia2cr*JcVZ8;a~2csZIQYn`=#3Fa&JsPmZ!lzAGJ?OQQd6BeA`GYwY#N zq&5HJoUA>xd%dHje*PzZvWT7@yA1Gd%> z>82ZcP}HQAOc!n=J>)yxK;9UV{l+gZoK))Mf_a%4tuck8zh++IBu!37B9CsRH954$ zY&H1w?oZ^GlUu)$pB9z;EFBr?%Lzw7e*=may_n>Blz4>$2~2s29g@>Y2xf+Nk~&}! z7izMB2=q+9D1;Hk2qAOa?7m|-^c)xra2ajiocLA9B+_Fmow7#FjA{!l6D)8*6d#NL zcks;NQJ=7o3l)2rK?&n>m)>(a6?FwNs`DQ_QzNPI;0IIhZA_M?&!^Gj7pCHgsa)jo zlf%2cKkeK7vGnXrA%MU9+-RW|Ojz*VNoO*)I666(5`ca>37jDc6gdCL{^_Y`U@Uh} z^D=6q(a9sJNTxQ~`Hhe>5?>rE@6)vDzhDn|8A>aB1S0E1Mch|1xPBz*4g&1bf*Kf{ zikDR)@z8V6JvTQuc=*`i!MQ>rQC=LJN<4J%x#t!?wUFcA!l&%9VKhV+YfwXsO<8yo zHZL(K;kVL)JQd;JU{FO9zIZ2I5SunkvT%Xv&W&^fAiR%xQMbgU-3KndbJKWBeZgeU zjn5w&J(#^Ef_p2HaXl$hnARD=o^)j*HRC#Ep0AP$#C@-vZmfr&)pCpAFGfMboTBAj z0i$P;Kzuc@F;?&arZF?8BSkMP71X?@%k`uXa?zwP{}rZK;;X2Ea3V33NSq5Nlf3+v zd`c!S7F~`D&Pvre+&DVv381yC?D3p(7fD9%aLpWd&8gR?qrQ9mqiQWNoZyi*FXs6x zV`KSU|LUIOM^0cMiUyqL#$A_(@%~hnH~#2B=f#C*78A3MWBYB|xv8F{UuPMA79C|zaSbRK?iF9qRasI=>cG62q;MXJ;|B1u&eWD6>to> zloQ2uCKfwZJ8(h$`{7DuI6CA{yW_r4ES3*@{mFD8JUlTm9Me~EDvQh2M5gf11AB%l z^9q3TU=>(78buW<)s*AD{XR7|Kc+%~tmTVlqss3NWiml?&7bx3U1PDy*=pqdyy#Lh ztTU}lFt7T+kV8ZMoF*8lS$(U58*hj_WOKQ*mKXjkhM^=HuZ;t!pv}KisUX*^Fg#f^jr%L{k%RWrm(~aan_S zsKDJIf(ca;u~*a1g{3V#8uMmymF8y>r?0=k4p0u!SNyN;HQZ>-%D% zUhh73taQEmEw^>ouAJkBgOaI)hxf>7YW8N*Vgs7fQf)LFjhT3&i`;d1UKUvE{+CnW4MeFCGRqk?GML`xXH)+2IXqxQOfm12oef{Y^T_0Bj2 z6If!W1VikuYvXrc=lcicZUfPc%u7J48@GC0f7`LBE#ImUn2J9_m+)+VAZ<@qewtto9S-GSgQsOJbJNw_ zJGmH6xj&9wceVT|eu;f^hdxuKx|6qv@cV5uY3ewfxp~{_&L2`F^T+xu1HG|y$UP=e ztyinRe7^GsYFch@sDZ-ys=SkVjLQ>aQoGAqo<<_9v!ag>Ux72cj#RwJd~zNLJ?{O9 z?>cxNOuUPPOTtOo{)0d1-P3=+URBK%T#nL>R1;HhL#;^Oc<_8|y9V0lO-9oGzp^S* z+WXh{KGnO(8_hc!xj7C-VopbdkdzTAnYUCL3mMKh8C-7g(!sfe|BIZw6Yh!b71@5> z?{UmBKOk+kwS+g8)B97Q&{@wXEzj9t@N6hFUJ_C7l&A9tF2^aa_q501P@mIZo+j6V zxxA0%|QAaIpKJ>r0zaVx5D@n#dWGu5Tgia6Z9WN+L83iC|M7lFA6MI=n#9!Kamv3pJ z1XdrQ0R)f-{Jpl)mbY?AzT%RGNz(KhZIT|?UwP}vF%)!02h@$`fz*uQ?+e_+gYo%Tdhs#JalG#dt+-&$U^G2YY-EgLO|X4 z2c28SUa+WjTr>)X0FE6d9QH%J0nrZ4*O%~CCr_FDN&GGTES4;P5(H1a_^!`e&Yn7@ z9%y98e4#Yy3TM=w$>H$9P|;iT@E59bwHhi~`hTbvN`;bXPil3+xotLC;raA46D)TwMVT}u`m55 zeAua}Q}<6ylpviP0QSCz71TPUfie+5DzrN@AHf^3lyQzav0n^482r5Jb@$ESXWi4& zDC+K4_ZMDz=}h)VunN?nZYR`8=Zy&%w=QqmraUL-1wMNTH1UWyMpcZOAHGUUwCJ!! zl3`3y5o-BI1RfFbDm1dwdeoCoWeekhSitp&cXVMim+|34JmSm8#o(}SdF@_ECKXdE=&U@hx)x&1MJkke7*P3g2c#<`wA+MH#6 zIjhhI+U#DK)HZ2B9^wO_;}XFIEncp+biW`mX^I1+Rv2J_yQeb>?msoc^&uixRy4jwq{I8(2map>nS zhl=3?ADys#R?MFpD*yOJD{%N|GG0Eg?Yfa)-eldr1l^iI%L%W>kU|MSddLybrzMh} z9TE@9WE#02Azz!T4nTn6Lg}%sRH`9p4;w>(R-YRzl?FfO^Slcm(RU4wDPEo# zEFB9g5*(?2{dQlfBKKb6C!X-Q`Qb%gN`w3U--OSj$YoV24PG29Ss~T?y2LN`{kMeA zvV4i&p8OPYpP(8C5+WmeDya(o=n_1)j!FPc4pCpjtX#Zw@dRJ2J@pQynn!1+_f0#F z{3Z#G0{6RTy&v{QFJ)YhE;!YxqmLchcd7E>(f|D6(OvV$lM{}2?3>NIf70{Y?;dy0 zx{tX>8{VHZdxSN!N-IQb1z&^FSxzg_f%YhEQ!>kTf!;#koBRfta=&3t+p{%&;XBzQ zIvQUY1*cO^Tr?4K#wZ;>9%K8B&T`E$(Awy15{!xHVEX4~EcEXs<_u%ei#a3F#_Xnv zvD7pT%>t@fjG9J>{^dKGiCqfhM$MowRrMAvz9pvtyn;Dg^_DUFW>v?UVhrqsHLu;p zQKm5*#9|sAE$}T7VI1*W<9JnTbXQ=?KQ&ZYT&(14!Dwv0uq6JMOS=w5 ztKRhVa3)or7%xty@{tq{F=`|?Ix=%qjSN4LE2xEw3o4(PNau_yU~=NUAn&r{5l^tV zzf=w-RXm)CSb<_;bke4kLff?NfuMm9S&k$prXR76b&WpQ=~V699~Axo)|7ax-Q3m! zP2l3WHSCMRcNpdLnx?^TbI{mir8v4N=rn_lGD@xf_y>n4lhM%6 z{je*w-n?*1IYu2v{(v+3rXyIt*W}#6y*W8RhX?btm3 zBYoap;%$8vUpT?5uyP^T#?v|j2@uFP`+gBWI~%c*pLk^N-bW_%vm!5x_Mtvk+I34+ z#>Xq_)-HBVSN1S^7V(ZB5c`funBxC*JF;pkpUK+BMzhswZfp<(RvYQX7S{P3jWtnn zs~fCI1c|M036cn+UGG1mFO)vO{v>)iQcM_1ybG|7-cfb4S9C)sD$2yeO%jmw>W0!w z`6~Sp0(tF$h4EiQ6R>rIOsnjDQ@3EqVV#|l9oXF*|1T_#5EvM<=u_^ydYa#l`=*<@p) zak-;y1Sz{ef*F(YC9VOB0LDc_Q-nLwtYQomfnZg}CdBcLJJ=Mg6d@ivRoD>IRcUBh z6sw1JtXxv}1l9LrsTy4f&CiDxM)w?&wot#EOOnBfd1Xmz?K`nO1R)QUL=wtql`w4( z+CNd}S;146=jO_dhE@=E{;}%4ugfhmKTHLM2D7k73N@?iQKh6HsY@iacy#P)#Pb@>;F-|qh4gS zp#iIlF{Waomu1AubBQ=c>|nGbNjy~bCHn@CBs55qZgXjYAN;Ar9V-^^9c_+|j1-C6 zlBmol?@e4FlG&YC6Q0+tSjYlQc5Y;ZUlj8>e{#N(IG30|Y3+D9DPE~&Z%A8*kvq|_ z>QR(1M$+J3d+;J0gQcKhroFu`R3uW67?H5HEa>5UeDAjQ?k&-YSk$qy?dqw*GQCKL zyb}(Rrt6`7eDAh)?;Z1otXMVunQd236-q?!**83qi5Z_-v;Nx9Z8_DkERXh*RpB*< z5X#g;zUKP?f}|`QPbgrSyAzX3By9z+by^vkhqHuf^c<#};ktR-4aR-8?$xhUwco|(Ofb457sJ$Nvd zi~Smy*+MF{`@nYp*3Q>HSg5E-DErlwU@R6~`IbtKBzbIn^{ZX`_WubDNFb9vFz~K{ zN1^&mz~C9mrTH%^x8Abe&MP(17qOj9U=hF+?>)sDG(6~{7C_MAc-bVFT-gY zp0Y5}i;19efuX=@pNd6tW%8 z9r1^Y!IVE)im7}$|IaLI(284m%X$F1g2n2*d3h-qZ073IF-IcGri@ST&Hb@279;6_KoP~82zq6Yi|}#GrVve8BRYJW;08HhG=4B;dbWx+u%*U9 zCdq=y{>GNIpk@#OD5}QuHF7}8S~BN@w4)&2BCMm^Di=(UI2`DyvAT_v&>#JEw>6@p zX1BmJPo?^*27r*at8aG^VrIWf-A=uZv2>57{;C#q4TlDu^;fqdb@Qeg_$wM>_7vx& znUA23XSsznk`VlNHtTM)^0c7Fwzq5NnK^n}%kG$+t+U%BXE%P!unC!NI9=IE1hOX( zyl@Z;OB-uz&-|@6LmzJ=6t>&7+{F{iC!X2pB2K}AqhA%y)s*|k>{nf`or4alGz{Zq zqKlft+K`gf>(`(89lJ=%rh;z4;zBG%!f{E#l*v8X#~= z4fnT8PdRE5cLgwzSv`L?`-FVU_LMXJ&(trFW2_ew z81p|$S!2~qAtyas7R152D!?am& z;jh`{3fAeaC8H-x)k`~;zae=>cCIAw+O^m0dH)s8qm-=E1XBP9n30^5!u}YOEVSPk zW503WJ{2Q+=}K|M6Q3Fc`JgTwz|?;K(h_v*!U51S9=;<`YE0dC;J}5dSkZZO*R9OG z$!R3@bgQuqzd|6}u$05GV5{1SPt5aPT~3kOSY2++Pk?uB1!Kd!Z(M#s$9*(=!IUZE zvqPCZQI7q0XW95pFxoqme?+cVnFhVzHq}1^hZz!k6)RTsbMWA@J1W$Oya8_j&z$BY z6a=Fd*Xv7ZOFI$qM&L2LU+j*iI_um$>KLz7M+w+`DZ4vHPVt~ug*@5NQvGAQs^#p+ z$L4auO!aRsma@&`e{-qsTpC<(#CB)r1UL3u2w&5q6IE3!wp1eK#g8lE`ij@%&i(Mx zlo}d-^1zYFgjEhD3YQMPR<9(Mj=V7)%MAyj3CD@K`IB~^OiW6r$bn@dWTLySSSV8f z#0XfQFx(T8zUi9tL#=1M%C8*ywYKMbd)~2U&!ofK`E{z@y=Ri}>BmIHYtto>CA2R@ zPdg?DAEU%z$=PR;%VwC^t`EvLB-`v%;dhzVt`ka+CpW$bXlWt}7ryByZdp(!?n@4>gs#TO_VOv9TY|OqJ%A9ggL>5^n5W8fIkZB&YvCx$6oe zw35zhk|s?t@9JUDeOja}WN?nA+x{Q+J1)08kEYV%gmYlJFt)=O{N%Y;GdWyx7S4zB zU4K-4#$Ct8$XX{bu4O`nV%E#laX-^|B^V5iTv}2OKk~KwahKFk8#GWm8C3iN(eLqf+f*4&;~q+IQJr8(ly_O&BY?_6I_>psrA~`pPY5PtqBZS`TWbTI)tnzs8u}RPTcd z5Cek5Pt3y7A`u}Z zJai&8O{NEx3iwOID*F8Nhkd9LprIjuz@eW$H~sE(R6RE64@`TCslnL4-CeyoK193* zKe2nAE+;QOr@QkPyQ{xw87PoUn)-dUtaYm>yGAp{aEL|5HZG~ZAD+x~ZjR5~H*;+I zzUf_|prd*pK|R%MJbvy^_!kNN*5AuOh~Opkn0-|95?QS~gq2vzB$A$KRd>rXYLnQ~ zh_kY&zV$=zI%D}i5%NF!Joz-dA8~tBxaE2AgKGYp*FWlWcHZ!L+;iXfOP}T1@04ty z5zi6-zu4QN3R91nS7XIB_yEo^ZLrsxCu7{#R(_ZzZEmu)yTV1mb}SlA9GP}j$yP}) z8Sxmx@kTVPeIHsxaY7q+b9smF>>K3{nk92e|J$m;JHb|I%S;Lri2QHpb94Au3Q;+}VVG4@$)#)@*bkCt=Pij9gf ztUF}*V%5;4qoeG#h0HQcOy4h-Y~V!v>o3}#`@XsC z_d(2b!;Fibm=u5_zKD*t>qpt0N0Be+7X;A$gU)PuGG>hYDYBmYHR&0>HAMYhYnPA+4#cHDMS^qg%}%GGy}Ua;L!z3f=M9goqSMB&@tK!@F(n$!6>vJ~lzyElr+zV-PFIb2T$Y8W z*DlFWKE&#n(-D?LS8v!--40>GOH32uD^2P)xzcMfUkQkarQ^{`<^#^@675Zc2f2^e zckU04TvWAVo-xz-eV?wGwvYR({~+kI+y$pmGVdSTLw{&xAo5WRc>9Bq&$z1T-_ZRi z?|q+i!!@280#@%VXx7#2b90^>Ofp_XfQ*G|u%vMrpGWV*zYTf9?R-PtbynN-eT(kz z7>kBAA<7cAww(C*+`7a#`N3~y)++cM5KYirv2CNF6{6P$GG29#p^Tqxsu0bSJIn6bhXBA z$-xLElU|8=jrBq=3@x9p#7Z1H;E2@*m3*Em^3XDoijoESarrySo}L5nR_ zYfd2{hIh5GGUClJNngalM#MDjX|wH3d6XzM8SpYTx3*?PvuBO>hP)uME34B^2S5Db zP(~f5Nv|1yrvB$QZ8-^lZ&_~^^y0tLhBoI_6vUatJw7)e3!SbmqSJ(cCDRu1YteQr zR3sFUq==OBMNTuxWnoet99Hh0j-jgtyYq^AczSx52OQzx;D?XA=hfdShQpO-JaLe8 z%KRg}m&M;~xpziyNuog3}zjtA6Nd=KB#G8&ZTx4v@E!tSZ#osM$DtQkvb6vq(phGiQ+wIVQ}2{LKTrpP1et zbx(^wK`ub5B?m1`)4?g24N#CbRqYAyzDi}E_lZ@~31x&OS>*&EV?}(`X!A2<7i!QH z`|OdnM7550n3Hi~`xxkIfjnUIN>!FJGUJL*4oD6LS_hC`X1dLY4yI!K-l~@Xr$qU`W4xkXg1EPKu zEJ$O^Z5j6Y8j4ClAc2n{DQKcr*ob@g!=p~G>lTfNPP`Xd1YcDc6J?@Ddf$aUQZd{??#OuK9-!;?|8KOe)7!*mFs@XZ_rqo-@sl$C0XK{qUxXGYIpLae+E~(E0{K<0Q~8O zN<6hG!|)MOhQu@2p_CZ3$xN5Dqrb4LtWiv&+lo{J-|bo>&AI)TdS2YZqbU4>NOmZR z0Bw3FIIc#s^Dl;86z9vO$;y)BQBYjZHJ)n}^DjDSe|W zCIii(O6@zV2(L&SZ*_91rK+tby!Y=nQN8zG@?RF?3v)>se?%Exu{}fMj0IfSvTj*) zQgl^(FH*BRlASDSQE|oO^F~Li%R3Gr(&%Btq zc}>fR1Ime_l6ieC@|n*>U|2sEX*5uRO56Se`o7N(=vZG`zl!T3;$p_?e!$!T4YU3O zN!s+kgMahTr;qLVLqY);t`rI*Q-3&h^?9mdMD& z(pad}MRQuQVY*2>pnbi!_+c1VreH#*3Ym}3PfR7U<1^VQ!qa1PAqkGjtoYpW6k9AY zH8DT3bgM8GL|n^GrItn-myh-n59R<_hKZ0fCZg@QxO8G2kRI#!zQR6=?_EVWR+Pv# znn z|M7T<|N5z9EaZg9Bk*gr^-JSh{|HS4d#vCp?e*|m>TynmIq_~t%q+1r!wwwSunM9H zknjSSVOR@*W?*Ho*pNVEfn~Ee<-q%#o!q^q#d^8+r{QqQ9|^e+&HCL0I0L%qx|5ro-nlUZuR5P}-4jIunj`NDVu}d-l#G9nPt;#~GfEI|iqx zhn4k^$1zurH4a>{tSbi;KIx8g`_=yQj)dP^+H=aXPR=NAAU<1H^=TFN!$_MmPv+Z; zjTp`cuX;mtMB$@>2Qt$DmW)e-SdBHhK^8$>V0v_AHU{!g1W ziTWWXywQ*Vh6ooZ`4B|5U(ju`b#jvT8`GRH^mY~@h7aJnnQkx<5+;ZRu!R-ZO5qme z_A>sFO{J;B1qn{S%MO7a&c$aW(;t#Fnf_*O+(61f7m9?nbr*9l^yb@~J+BTl20lPb zB>IM^#_+BMGi)BDOKES@A4`xKTiz{-kq$SfZDdX^{jaDobD=k8q{8|zNVrP_f zA`l}TM`Dp!I6m*+5vbH;Bw~T4cO_ja86zq17ww00m%|ZsTMmbN(Hl3n{vGdFsazf{ zCy7Wql2*!l8%sLSctD_fK? zW2A(Sa&WSN9?F!rCJ63E)vk5E(M9pMHm_al#a`TK$xpZVF!{Y$vBl@N8`Dg{FF1BU zawz9odxL0cVoD=&ANRx7bc~3L@gMHU$7=QMGkE-Pd(H zy7Zz3H7-aDJdJ)zl|^r&$51nj#+jwWQ7JlI9Waw`A&{sQ(Mpg;KqB@nW0Mk?Qal`v z-(Wn@R+)pKh5_cLs1^0NKp(`28!pzkS4WWJD;bk+`vq?){{MGKA8?55MIufd7A?+% z_A%|sAF@hX@`U8b6X9_5LNbd7s{^&#dJ%ci1~Sec+Xqv0WkX;WW|#$$0_a%`2*{|B zdg@qNQll_Su~F!w>9e7pqT)3%!%Rm_C_Dy32f`CnsXhpKkQ zBEzR!PvfxrcF%3ubJ8{wVOm;tJGY{Vx>0f&4>CrYk7MoVYU8#xL+Xwp;!LVGS%&CyS%F)H=5SwN^z7BYZJkP8TjM5lLFaK79jxX) zWV^u|X+GVYmD>li7sL?-fxY_B9mk0#_%`7j*F~|(O*+^h=ECjcYZf!3u(dx;yR-#S zHclAur&u+GzVqLbW|3Fm1g(sNsul}jK^|! z>FyL&6ONdSJ-F4OkcCJKNfbIPTOL-ab;qo%7r7bYD6;_oAopu#W#6&t8JDg3kh~xO z9?F8*=${bNLUesQYyz?&GCF!ry6bcMtQaD_HAMH^J~LZ%LPw5ejj~FiheQ;CG-IuRx!w*mAo=ea8SoHk$Y~*@R2(qaQI_6J@j7-8FnC@#t=urfit*IflZkw_C*KyY)>! z-7s;F;Iw7UnvfBH-NnjQTyCM?_^XzwFk}QWf4c>`HKt;TFPrt*-+sQ=V+K&kL ze>)G8&}s*38zaY>N5j^?ygM7zwBC0%dhiC-`3TGA_kYE}%AzK0r|@7}Xf(sTHJYvU zYIXhYW4N`JO}!v`gaTPRQPxdq{l;zM1bYPAeaF~r%}oTaK8c@n=lIz3)T8XSPrX@B z8qLUTZW})4%MkaiH+OKvj766bH!H47@5R(?+fg>P9nxa&PU3@p%&cl?ygv41W%tfQ z(-=F{%U>}StZ}o-y9Xn4p-<|!U+p;E=Hk86QMa9=wfJ@`zpG<1d~~-Tdi9%Lm>sb5 z$nH3`45RFZ?W23=o}jIF8QnX#M<3l190?lQ+joc{55${NgdbyFHtp`8^BcNdHm{l6 zzIRx9+xO^QXqNZ`_vlpLEK7`%yG9FFVx2Mq4u=M$>*=@IWt?7UWMuCN@q(OUiq?(W z+Lb+a)0W50+!?y6InJF%VyC%Mscl2@^lcjwEC2REdF%Gg*}peUgq{J_@BBA9m*(`= zN(SM2Dm%=OL_t#RemW+gPI!fOA4xsPA=7`vYhFSxAO=deQlvtW(7W=Kk&o*G4c1Cu z3sO7G6TwNbuLu`lpFetDaewGCt*R|eszMiUqmADtG7w3og!HEx4T*@%N6odO#z2n& zMp>?G&D;&bSHNa-JM$|){!&*e>z8M{ZI`+1jh$)vcA>$v+*l<{2rNT)2t;M_vJlkPTL_h{o3#dpUv5Br%f;I( z3?#S@**UtA8g6OZOJu#H$WRbYul1d!IxgAYFcp#76)YP^5&dHTs2h935BV2=@*lGw-?fGlk-!xaXtC0Y+$k&SvY z({%+!>SVEWmB?tsdlo45yek{aEw~nPv8>A*A+L1wlGp3BlHMZ?65ly3>r!+wo{D_J z_9U6Y+5FIye*U|DD;V>7V?oOwNreJ_b;Y1V>gVg&Nd`W}*=kU%x zPS5G9sKqgJk=!1vi&*N=?bI0riI2mu)WC*|O2wdt7M7Ufx&>@ppfM7w>94+KJ>x%?z74NRQAL|9(nqjV>Tn-WoG{; zaC52}^k15E#iB0P;3q}V9cR0NHsY&R<6Ldz;J7CgwaU1LYyRgq=*v3mbcUY1fc1h^ z8teIVEJDG1e?-7c%@rJTxWnVpBy&CGDC;YS9ps;L^3fU#JJ4LS%2V`x?y!UVGk8on zZ~qS4M+U`6i-P$ zw9`XT-dLV^$g;RwK7=!*%k17z8@8-a++*px^-nEE(;5cR5)ZvK5F2DIWd>tKO|b$Y z_I1sQ#p6C}#!ZP{FW$rYLd>eEcvL>G#AAHn3AtxHzPMb9h@#tk7x#JioyTiQ88OT0 z^!c!|+WYWT^|aO>l@=xJJ)|j#gW4id`UMJJ=Wda!={2hQEAF8|o&^XF@O z7S7Mq_s*PK*t2Ku@;&Fz-*b6R)~k_|Z>mG^s|2QJ?O|XbnWbQr>KULoVkZzgQ%20O z>5Tb;>%{WmORks3K+kf#sGo~x!a>(xWQs*eaDZj_^>~pT<5l zRq{m9G56Zt#+GFKS2@hIaBrhiWT9cI6EQ;Tcm^bbJ=hF60pQ-XQX#jw+-luqL2H{} zZ3B3^CViUjnsE_&_y0q@pe~JH)8qZtrpD%p9E`VuMB`^5WeYHv^YuguWN@ZpO%PA# z*!>Q5a^K|@hvTCUI}WGHL!&PRYBOrB*m>RBzpK0ys0A-9?Z4kUqC7P#94lT;p&T%E z+#=qC!5zk zD(D-Yjs1FT_IiHI@zU~C^YixWn7Pbm9M7kNzD)YQ83OUE_nw})FP-rP)A@0JD)G!$ z)5&D|#%Mf(5I-7=Hk<3jdruiMwEUZGXd)4{-Wo8kf6Xq!z3QGCZ@5}I<;;v`2=kIo>Nlx= z9bI4U29S)FY#n{}-kwVpKpb1A+GYc3lstlD*S3~hBcBg}cmx2a2D&R=lIHZuYi^wd ztcb)W=bVINTBt*rw3isZK=c}yWInWo{V|Ib10W4t*+hu$hYxECtU@=nP zkpau){t+Mt(!u-^4uHHI9ZaTz#CNu=haV=y>uE9JtCK4U7kao!@Kp&yD1%5s&IRvsck9 z9Vy>2|8UL=5Kk->khrH{+LE8Wc6RyfQA&S{(ub){hMyYJoxi+RtG!Iw<9&7Y^+9~8 zsRP*jmJDIH-%Y=8a}(;Se&zNKd`oxihoo9{v9D<9#z^`jRLZu}vcWC&r_iGU`o*%Q z76Y(q)WAcsN%G*(N%3c=ne^0CbvJ3x$?!&;Knbc=^Sa$dm*-28a?;}*ArEn?mv_?t zyDxP99b;Kt2?XLV24B4Cj(YccoDY+W(&bqq&2ez0n~?G&?(3gE_0=;kpZua@xMPQ_f4UJ`gIw|LB&bu#w)81GByB2dkYIsvkcp?P=|hy)u0! zdn$A0_oN9war$L@d>DIk*2t+)B0}sI(wUWRAkQ4L_M0vU+6LyxrV(Bc$^$^>n!!Ea zw+;S$9+N^o9)H5b2nffc@ofqm2VjA8u+xu-%>IwKkMj3=GvZfTym# zE*@%J1mY?#M7WE$C0rtYH~H~%PBJv;ASK9`jL|0N@rc%89vZkJ>lKnJre0x9F!wS- zl?ADfT7_+q>wK%*kV%JO4-cy}M~v{%Q&1CJaMFB9#2^SxMObbfJctcNYKDQmdjf@c zu`01+JZ2m`1d&nIV!RO8vsVWdAcO#+1#+HHVTc7k^mCq}kzjDB5PDBCnDP-;QzcZY z7zh+oyir_81#wjw3PmX-TlQtLW;(JNUpY%f(a=y8C{?%QXVPQd%l#3`(WhO!JGL z3H8LT$-R3gcm3$z^Or82|GgPb{gIhJ*Ns2$)!sQ$(Uh%?sJIQWIkqXlwPqI-T$NC+~4OgTd~b z>g8X!eEApDs-uKsSE%zlA!XjF{h_7raMWZqgwXUs&C{hChOanK$fIbL{ud|K6LwKz_|fg;-3BcEo_DrXd+jj=rr zu>ZO{=m?9IQZCG1KjIV1BY`DKA1baEMhJX zoNV;#TlVYG+g_Oz_TL7ZdtI!+60H}xH70OP0qF1^g^Wy>=%tM(j!>mVbyf1#8F5vr zDH_35t~rj)NjB`pcO{B}@{4TwrZnvv-;iJiZ_3rqU(OwKaNl=(>s>I>mPX?u4a#_; zN#o$w1W*m0I6-GKYfTg4ZUeN(c=kqzb4p;My)s((w+mgzN)#(O`NKn2GOD5+7OfWd z8C{L61-Z}meD!Vq>%&ig4j z>busqa5w{ZsA^v=yZRz?^z&7=_Z+f{D5vTPW=NEN>Y`Rty^MaYtEB2|N}>IF zLg}~o5BB_&>vkzH&qgz5djDvj%1c_dsug8jtruq+aryqa`tOvz34B}EbtcY>ecvA* z7UBUU2!I5*i6jU~q$F6YC3=x%gN`LHvL|+I(vA~5w&N@|vNg`0aY80e`fJmqNi$^9 zbV)L4CJXZGbY`-(OU^n%T{kd9YO9`#-E zCX5PDZz5!)&CV?I&cp^3^Ab*kd=$l(T^?kO_5?)G`!eH#W}H3ein(T7-S&6Re&?*H zx_o}06Q+=e2j3?6ExwHX0AKcK^c%R27rF%MZ_fey2w51#x@M7b_sjBFSLJN?vuFQ` z=i-U+@mKMQbc zu9+Oy*q}DP-?=8^{g`pE%3Oe`-Qdg->MHAD9+B((xm`*lN$h5Y_d3?p2Doo~i<9LM$X z2Opw5U``P`S7RvyTn|EY1H!a;ugA@wx^eeEmwo5Ovlrhv_^zSlvxqS5ow7P8_h;Yv z4eU4XA!{0P&OnI;mr%=wuAuP{gn{~8Q#GXj7TPHC&EDDlZ-&?pw2MkUyQSW~B==$f z)%w~2@0RiYyRxwsA?*(#vlmc`l?Gx9U`47nR}Z9T^4-6Mi=mCI0}`~kb{y~^nG~gM z+UQ7UFvoCaBCQ8vg(WPACVRrNXr|MX?)RilO-}g&BcmMmk9^k=@GfD?;r;&PsnnF$ zft~p5`0hve_2>w);9K;yiE|gADeMCeLT=13dI@(CGdB0pO2<+-@fp|!V_rA)YaPf%ZbEW6N&rx-NHj}*%w}f^;?Z2 z{jxcULwo6VH4ym)1nf1NfS}YDv~LPwqK44`ow*S>h<~J=ga9U&Uu6&n z`Wb65tOY>#`tupEg}TeNul;;`p9@|;_kGMid5f8G% zKgj)&=e7h3R)s@ty}x9S;fzG|U3LU%;U7MCq@`cu9&`{jSc7N--Jm9Jd)KvYKp)+b z&VWb4oZq?a#XU_a!X*S!#sUX#Kp#Qv5W$bmJfS^V5J>miM~Cv>dxNCU&BBw~6KC4E zt~CyuSOs&;(F&GA@h;DdqhvgmH(0^F+w?hmI#-u|wnCcRjJDwJ$EU3wKV{>n1&?B2LgVXx$k}Nm~EWlj}IB z(6-uPj@3`3DOiQT#Gz4Mi>5xd^knjhm!PS_6Uir+c-bCJwXwx}gt>)^tS?D9EMhIz zYPIAwh~+erRIGKcNg2Wqb9|4VTGwTaIj*d~#{D;bpt2Rf@@?5DD7fqS28;S;3Wp5NZ1i#kas5#5aB*%_rMO3kP$xn$4P|oYPDo* zZ(f1_>Wq_FrXsGOBpO#(5seE3MK)YRWeAfG!!j*%W5uE9G2D@gT?1(jsQ-XS;A>_K zHH%e%!?mh32X&aSg!8E*^URp@G)xL0Kie^ImWxizLv_koOQnLqzG_KDkkz)g<+-c8 zN|W-tCBIR+YSkoXkpbG9o1{7A!}yN)kd!4j)lX;(9n%OM>dm4 zDtl8hk;yuIHx40upJN0S^d9v#EF;U$(`o&7f7VDR<28pUZF)<>QHv+j1}yOXISp1t zFz)b#GV!r+`p~d4It?F6hsWZXkjD`ZT57GO=3ZxOv!t3Y*-srgY?D?h4@wv3rqhEv`P2UwYL2@`k8Ng%!V`wEWC2Nlk zKiZLiILKR6M`c^+x1k*gejJ%ofVv#=(B+v=09zm(88QFt@T0Yjn&W#okIEhJ%rn4= zMk2N9_oienP$^GH{s-*>S7&8ICU?NUwzam3?CT(TysR}>S61<8_O4HTI4mvoz~1!P z(dQZPQ{g|VOX0sirOKzPtF7j8vn5|vWn!mZ*jRVHih}bjZi+TtzAQe4wP7A(Qm(j* zOn-4m?1Li!rcT%xV1I)r09Xi+8n<hU{lwmXhDZr?QybJD+qmeyUg$=1j^LZAKh z2zbnDfrvI34n)QHU~zi7m`pg_hzRxNhUZV&Y^UbOPl*Z3uq5*sD;o!W0@O1Yt6>@4 z<%p93!E@!#LhhznlWw{ z8;>?NUliw1Y-ZOQ7?-hVS3$hGHKaAz126iW)!oRwcxrW{Wz7rHrH#5W>MJRhq)P+M zR=d?_o4MGzxYcJgVOvbQ3~jT_L5KUOh$$rO@;0i|*jec2%EZd@)IZg3U(-h0{qDt! z7zRt0Tt*v-Ugdb`FgkGoX>LN>T5S@4wzg(kpVaYxigm_|j4VJz#96-w4od=^piI+6 zQ|qjYWOZxliz_Ic^BjJ@UF!g1yE^Y!nKW*A&Rp|V4NcPuL?8`$Ooa*3@L${5*xK6Q z0>$SlToaox2%)`7|JtbuOB)1^M+1i7{}>bU?yQTIu6k-+q{3c-Ew+slw3|D>Z=&Za zGZzq_b=1`C!Oi;HAXLeZzJ|z5)n;Q#*S>< zVH`SS99lFM@#uC?&_bH%qVlua>m?IZWBh$_KO!QFGD8Vi2#qgkKBv8M|6@*2o7^+Pqx^U z<9^LtRLXzRclG{>W}RsJoY@$_GxKJOEIXhWzR(%Q{|>WL>n5$XB6BYlb#)Dn6-QY+uwS zDbDP`oxz0AQ`x>T5EGm&m#<8IhHBUGXuMOUutFQ0A() zE&w;53Zb}$#0+x_adOD1CHpGDmDk9tCCxaS{};Kna97sBfBZ6w4Q`Hg+mE2YMBTk5 z@9aA-R_76W3d?z|g@mx%e+KF_ZeR(9 z*Z{MIgsX&PRuY4V3MKW5fxe~T!m+!&%cyNJ;aNsbrClG?!Y9`HR*q5It=BPA$aS}N zKhxX%y-; z0F?D!ZniYJY@ih1mG*m+5A4k|+Cx;7#j1q9LT%}XxwMv-FI`&iMUks4VHO|y2iPT< zH@0Y(RXk_oOb{&ATK}PO5gD6XpWcr*vD*E+e}`P2B7|2tr~W_Sd)Erg82^7!#=CtP^;d=K)bE(Bd*brG$AY5#LX#Tfl&|{1;H7wyfDkN z%BL*W%5REIg><2|he*nrd)ZS1UZfVTxvTD~r-diB!g#%|6-EH`j-{Oz800j>E8p6% zDDKc_8n!Lq^ZJ#&ey%R{|9kU;!z#(jaMl>E2otSVc_mQuH{_!SibM{bo-ZDV=2O>? zD>v2n^*3xOy&o25NxPO+YQPCDAAiX!G9pYS=)}@JbnS~nUIDTj_Qoe=Bd)gr{!}~= zGxXEr3KTbfdI@L@bQ{Az;N%O&pVoEGqp0+3nOD;BUIBu8sNRr9a0(5Za$-z9cT4wD zb5*og5mJOO``RsUd)w<*I-M1s4&x|!(5B3EhHPJo;gDG}kr?kFC9a`*Z9|gmhW7e$ ztu$Y%m0yoKlL(LpYl+ofL^-?mi=EES+M~_~E6ugf=%z-&Ea0jrt^4X%_^{mxdiOe! zSJUHh?z!IccHwLJgd^wl`+RbEEV-|ZF=8e_Vk{u@>6TU?-Jj51REi=Z9942)O)2cB zH#UGi9YjT*ffmxpwpNutd2OYQw5bU792~)zS-2WiSC2L8XQ=VPZLD%4$;FPcF3qj8 zGCc?l-RP?cqtYq;5}c$%7#3^l(q3HkGOju(0GN6R@TrHG@WtF{A31X5gGegh6iwA4 z9Eadnw5R*2pzDCcaljRPRlqgpaLl;^gM-7vFE2KSj~p3pqPc7@T1Q-hH72U!8rsJ! zBV5grv^Y}(HCIW9FeQGCCo(;BOlwAa6TbcCRugSp0qHV-Tt_trW3vTYI9vfNX@s2K z>kv>CPLq6}(Xb_qlFG`6dQ&|BS#L-v{UQz;!N-8Y&{tHX!EzQ@Q$nYAc3MjxTx3-4 z=H@XWt^jv+H!~4(kBA>F_cpVU&|oy0ibZ_<_$1b1j|d*rwCn zzafks6<~qg!MqftX|Jrl2YZ3Jt04HJBh|d75lK0ct|7}m$pd`gFEEtrTs>gXGn)>Z zjx-!YLxE@u=D=XjBFxCZ=(f)ri`7Nrd>iIVI3tnz6c-eo26i_Z*x%^D@Q+=l?B5aR zx#nVJfWm{mF(Xs4xp*OS{M7N*%>5cbWuN={?WbxpZ~obvReP8lb(3CFMES@NQ<5tD zqH^|f+#tU)m<`4g;x}X|AxT2w3k75WK&n5;k%iRI5ME-ph{8-k+=3mr{agHkBH6Al z%p>_jN-1ar*E;grAgI^!MjSxY%XRF>j<*5kCn@`5@?bCK44)V-*r%~6{S%;NM)Q)U zrJn-tWYEau(n6+v1{ukv4MGe*V@DSX5rWV8vQ^z+RUgbahKEaC5c5qSLKHjr0uurC zL0IB0cc7PaWSfbOtn?7yZ1Wkb-WxL!b9$o@G`XRryIamy5+P`pUtt^X6}BEv*;iDF zS1DXj&`^4+!6w*sTD$l|X11uK?P3`zv}E6~$|3b60>s)a81}HFVclCrSJ5j}zlzD# z9>M*aj1Ly9=ZtLcTvWDIw=q_=Wkh6QA0o!^w^ggH0EbvxYi;l+HU0uw&2e^a$X&2J zSg~&Vd%b^n;0*)s9{31o9L$ati5j%M$>^Qo3NRr|1j`8td?Hpqf)&YQ8Z*diR$<*D zqIyadjr7!gI00I;#7v2>1FU@|d3QhwGOPs-|wqxh3A)J4{7L?xqHS?MQISUyenr|+4@>f-u|vVkaPW`^EVd1|!hs2+;tk{mg>*68s)~qt4h4rZfx|Hk6;v%A zNu2~veQ9Q}RL6!g;L_{>OsQM0lz=ld;B_~MZo^JSz~X~CM0^MlQKnQ3WpHYN(lBJ= zM9fGri#y7#03iyECE(iuiVca|jnttLB`rhUta*>`Q*v~6GHRrN%O5c&+!Fy5IG6d< zeyOK@j^AYZbl7%<(4us31R0y}z|7>tVBW?(@2DmtHE<$hhBR1pxkf41HM~FS195x! zz);UU-*DmD$meS%!>E1IeE*bsuXaBLgEf|fYIg&xEG3#7DlUs8%=RD*b=)!X?JC)oj8>Dl-v)7xg6piDh80VE1olHQRLz-1iymZL@paCPbg}d zC`Yn6Q0}%!4F`U0ef`%0!^j>nJrW7e4o@p;oF1MHM@FV^htgNRE>+FFY)%M%an)*ysnou?XpyE;T)s&x<{k_9mZWiI@5GT!g<1mcf%Us2^ib46s#`y*@Dz1z zS=iODvOLGXby`jJOOc8<&EH;9*Nj8F#Wj&ljsi#vhl^v~uU_qvyRTV7gqZmw=%o5k zU2HFR|83`@!oK^WeQkz;3!DKzg3K>PA{6ana)Mq9{%Gek<|aGe>wz^0Y7E#9NT&>a z;VI3iwPNiBccEHvzhJ&?F=Hc!F9n06`rYq~$C=BbWCe|2{sCSy$tYwU!RBzJ)(Kyo zolj~>WLFhGEo=|oeDi}gyu!EMtQ0+Vn?8GB9FW#@JtthkpZbG9@P?P$Y%jk7uijOA zSRWi0j#-EEu;b(Y2+CO6{lOq&9yot~Amdn=Um8iG!H2OVRiYRS2p;5cMNKKJH6gxh zeEVVJrf)N$d|EqRJA9P17i)gg`1T{l%{N1#pB_n%`d_oMvIeEglxG;95rO}JE1$Ic zLMfI8!wR`&oayy3R!-C-!jD3G;2k4LA^Rbtu5h;JcAw1$i`kd)vOGesSc4sIZ11$hURMg!g> z^)|(GsN-;t`UFHnUHFe*5aPn|gb01F?#YB}_4?w}ofVJhZm&ktZmqQcl_g{9uChCgcuL_(mL54! zGVZxCoPFxf5YiG{yjVR~KN>WC91WJVyKTw2bM<4vX!oOcg^WN+6Za(NRz=99(@Vg; zS0Qt=p2k24E8j4d^Mh{WJ~XF@M6@^4T+mg;Xe^8&E%F`CJ>kGANsr426EWa9_c0b9o&4dEMc0 z*%JOxSPO-|t>;A0a4dtB<1`p@oBuu$3nLw}4&=NlSsRZe!-+^p4?P}>*`a^fLm`~W zdnlrX!b!M>En2%IYUI`Mp;I~re<9n19ap@=SgI{Orq9G~KTv4sH+B9bgTk~YB6Cfl z#c%B3_m(~SU8WsXQ5>`sa%`4^!0pR3m)H*$ZnD{KT3A|wN;mfOQRB%cjiVJHlxx_D zuWD4Y#8Kl3?B2#CP;-DdYNGXfq7z!i7ODwhw(;qnFn;Kc@ObDtR;Gd&4`KYox;W62 z?@^ztjHTX`?@z2-ZKqvX`k+t^zEbBsE&?Gm%NeKFiE3aU6uk4TX?8{8U z5H{*`umDMfA5cFSYj~4U$Zl6o=dVh038ZpVzJQFpN0ED$GgmSjHO_ym#<|3ro}hHV zqFf+F3;=vR7z~U8na`<*R_=|(C0r_hQz<|5>hYPG`g3#XbZ2EHJryTZs$vA9g~p!PYKEWoxXUirr+?6=KEpmW{|jz+$>aI7sO>HZ zWy-r;Q;5}}RS!0BASz&50>~UvAgW5it~F3a?Mj%!tF0ygR{-krmCaK!Eq@<^wgf_v z2r`pbLTZH7v~mb`6`WCm$eRDD)q4N?QFnu>J3nU@S84Ke?~g3pf4=qy+*CLU$o@R9 zsx?c`HKA-snYFipnpP`3xvPcQmFooDM=WfAqt(HTpTsAC5NH)|x&1z`vo^17irMv4Reikb$B> z2F_~NMYpSh&V(H0ik>`d!+z8w=yecBS=KNSP9RWy=y)O)&1+MMcrX;y-5z(WP^p3m z6k{GY7OvN*D(EI$O-6zILR_2F3ei~NL_tf&{T@fiA1)92ML_q8=wKP}H>dYU2y(W5 zIcA27Sbmv-4k$(8g(TL7T0|XBx_+#8c(rE57P$fl)?yJF%#lDDTH=Q~AI6cs;xTx6 z%(|>`up07o$`M!^>a(Wc0P&uJ1-xZ|(gHkRt|P*9X0E{(YA<}YR#EQ`=E^QCl#mcr z)i$R0#m>4neuFQ5Bncc+a|>Tn?`FC|STwiPr!D+a{w$6#Wjr-)b8XGy--yV@ore>w zp-1ge_m95V`C_N7a8YeFcYYx24B9bwhH*~`IzohJpAHVnG?nuNVgyj1)i`b(kBFrk zLQ$pKMZ+3vNFeYzl~}sZ7&)Fl_T17^xSUkCB3YhHG*CZ+r9ASD#L~TRB`CdG`A>To zF3eR75}$VP^ljdTY87%`cVl(=68-_3+py?Zd=2BDlsQ__v?X0{1b+(pO1)UQ}|rnEu?dR6(j6>11sPu-|oMF zCqIBSUz2if83*9N z+05Ll?P=q~3M2f1MgPf@qaWTszqsT~gp!lSf&8+4&ZuNEKT>h~eY`Lv{nwa4kVz#5 z8L}Uf&49#ctB#Uf;-0MF%TWhmnD_1vs1a`H&5tO&N~4 zQo`tC7Aue92hx3_NmgV}>UF@6idcurC|~8C1tR9&d#4r_rck=ecI(&6lY{BGnlooa zqDIbDbBc$K-h0oj-sAV4fXRfmJkY z$%%n<{aE)nTi_>vK#x%dPeduLMhi*T(o9{I5)YEpJ54&mYjljmwS~f`JJ?YaR^x$d z+ZYv10~>7ug9~~?4>xdKCo}+=Cl}WC1`9IC+FZ1T>cCooh&Z-VI@831dGx?>|71Cz zeyuZ?k2z-Um3@aLbYbd=TxoLf#u{=4MBmFU=AO9sr~=s3yeIBG?!A?lRBIFa%heNf z6lZ}9Tm_0EMtN`NLHdeo0EUE2ClLF@y?>&VM)be?ubmD@0I^domWa``(-+5gcO4^v zk+Sq1=2ucE#UkUK8Wt-WQWpU>fGNN0B?ycZ*eP^`5ss<00Cc9*(A~i6Ycvgk1p|hD z_|#$D$lZ9yjd>$=I%UKr>yw)h7o_J8FXWn^F;baK%E%23-C?9sMl^v+QCz3YwG@qO z6j6y2(?>%bC4@7+(BK0z?l!C}ZB64VpGfGPj%`;Nq5umFSui}DGQX3OOFk~{gUmo} zc>of*QY*OTK)RN3U3`BlYVnO`GTHZh#lC2N;Wg)y>@Q2lVsxiSlcFny+@_N>tN^lF7ell89dA zJIlAKq?7IPp?jZOId<=OVeWTBH$OUJ6VX%Uwp{G-yJ-jZ=38?5`P?#bof6n`Op z1s0b<>2V!EdMh`gB57#=qep9DfPf65?u%~SAUBjN@!sH4xqL(L)`f+0p)=+361QHp zD{|xgUoyTV-g2(Iv{XJ9Tv!aSD8HWappZTqLECnt=VG+bT5 zrJ&R8OYh51PIBL3Fc=QP$z)7?0VXMA^he$;uphDc^yFlIU)tw(;s@}LrDu$Z$)_hK z4EUSyi{PR$@t3e|A!|6eaTUDST)&v_vPArA1FlTkBY5>Xa$O=61k;miJQ!}JQKr8b z+79P#5m=bU{O66_plhrp?m4p|Ha5=OBU)pw!JLsBnXXQcJVeg#^PW5BeHMGBYTC_@ zMQX=uctjq%S*uNr;J`t5wdx+c6ABFkQHMEhl;K&U3M&v1i~X~iV>FA@Ws@LyS;>U! zj2!x3K+jHi$B&BXUjv|N*Ai1jX~uJF5%uN9e*2rc7YyP!CpGbHTZ_HL~n0* z;D25N0v>Mbhd#J@$MP+=ET1#!=yFF~hVJKuB*|)$0}$P1d1u@^l+U&^G9H?yDhh;P zZ;T!Jja&a%9hPPPdtMQ`<=M*v&xwH-eQDowUO02r`|EpO`!n|(y8o>BvWF5E+fkqT5(0%+Pe&8K}85D&!or zgM#{YHCa3$5_#=(bd|H;3K9KK{kYk9k#88&PygN16UH2Hv2XYJ#DFj3eag$%->H6F9`NDk2y?)_0AKq9@exR~z^};2b$1bW z1j`Ln62Pt4P|=Qr{$pVY7=q<9g)jMRfvHfWwq6x41in-_13y4*sqi1eh2T_RvbI(= z*Dm@b3*eDdxh2#@AsyuKpr8xo7eILuNtRw&^9BHhdXadsk?hvs$X1#_8vz5~7IwmG z+TE6KYAxF<3uA?ZD^uzv)J-6bBRLQGh^+XFb+IWQfX4Hr15yVN8Zkb=K$;Fd_&m(9 z_*Jw!O3KGQ;y)%GCL`_|7JSsf)9F&hmiX1>+|k3i<-^D&q;eSLe{j%IuiFpE*J2K^ zjaIH*nTM2*1LiAt<(ebKBe~p>;z(2SC$yS&G8eRP_y|gvO;CjZ5rKdK5o3N5#y|wl zp`7qGir95;Z*R1_za9s(EaSO_jK9a#UF;d|1|N%;avCNyEZO{yQ`0+qWZpl(bV+&M(=t0Xz;Lq=Hl@1=<^~t&7J#T zWU%IJ4e|rr3aFs2@NO!w0BxVNauA5@#%2vYo8DB8()RlLrFIFt%{<57VBY&l8I0NF z1f^}yIVrF@F*7oD(ojRi)Hn`quXUaMUMW>B0Y`cd7| z;j$ABaBSCAo?806udcuMLR6E+t_9Ryf7SBogIKr3!D+44D$D_8O1zn({qL=0Eg%qF3qS*%L}CCqM0jkujiraC9Hja{Ijp`n>_As}ocY)7s3ZAN z{Tv$r&`B&dk=C3ms&D;vq@A4J`+)X6Xd*qAK;38~vEER1n8iuHgA*2`kjT(e1q5dh zJVD`ly@;iQ2m)$k{29VdVF8s#4!bKH2VWYeT!ipaLwhJ?^zJpjs0EY{M`GhUtF z^AN!02Jjm|>xd#m=eLj(AKxP+4Jf-dzvl~%g(ZpOBx85Y{xOfy9*4SyhW0%bmeImA z%I>gB>bXirE+1^0wT(UM4;NN{S3eANLwp`-C@AyKSR-uZs3isUqJ(EDLe83S!+wg1 zTLdN7BH}`icxd>)f@nZF_h-AW9$bjj{yb7^^^?seJ97oW zfK*g`I^_l{Ka_>L96*GG3iKxtqx~~UJDMxa9um?+y^8e1n!|i2y+g`IXqebQfEai# zN*y4}qTJr#%6|z^2Y@OC`Ee6})l~Px@<48i=YfNO{*L2F!jg_DuR0MCG9k1e7M@PG z$+V4~&YBD=P#8(_A?1HmHcmBnAw!!cP0NlT=P*S0J)c3@WzBrru>o!)pZyjF zZ=bcHe;bwu{>gb*1(V*fH2_Zqkx;&D%DwbkK*5ANXG;+}akLvMMnc(tcI+Y0tgq;W zX$>I`p}%F)_K`$ZvemwebBb+&C%8;KdL8m|1G!Yp5xNG)m0S!4JahbN!fuY7HByuw zI8w9;bCj-N$Lms%mi=Cb)t{d%1C1J_J`N3{xb1Fc-nZMp@mz$DFQ}VaVjFILFiV!f_csCQDmW$ zc4TV@<;~-2la&2hr~!gmgWw|j_5Hm4WM%e4`wn42dzcO>>_hsglh;A zmt9=UR5w(o0sFla(Ol>y>A8bGZeoS10gul+brgvFGXpp6P(lroD8?VjL){gVbQhrE zC}SD6Ad)nkmVL4Utu=>WF4;HUuii~FiRXtkM-}#mcV@NjFR>TDUHc^8N;RKjd{DfO z+sE7g*&CSpo~A`2>h4(tUadLGp6}<6t+Sb8??6X}u|9P_LwS8DhC(|JboDUVAQ4CzOCqcjb!f+}JQ0*5itc zZSObs;~~EXjr!%9pzOxXAlttd+z9--YyoANUQa=bAX`|hEL$gpH%X`0=0{2xl421M z*-0It>uUaVH+i?@r}=lv?M*SL|0#Bw>4`drn&04o!G<{h^u<#5e9McC^^4!u#QH!Pg9E=S4}l3%!N zJ73sb@{3>VcWkejAWu18q^*^4t^us4Tzj~tTR2kq0=T{_NuWMk>vY5!3GAQ$#>I|U z!2-^8e+|0{wLdq1d1FORP>!iu%ek(B!<8x&<`2WbCOT`6J`x^%{Os2Ha_pzhHRi?b z^4QCN1-Xi`s))5h@^%)CSDLRx<4U_JKn`iN=kV#)fTb2qp(1~mGa&u`T$*= zq47#JVQ_ODQyAb1OWWymkkoZ;&DPp7)tzNjxs5$_{X<8OK6L$4mhMBjC4h5L_ra-P zhk)^fmRa%uj1P5NT*ZV@SSDIApj2@5Rb_fZ9-EP0swy8R@P}rU>L#>!X4jcm{5>dk z*^wg(1e=Om*lHSVq3hzFvmGwjUJ4ikTo1N8EE@gR#|0?Bw8h9Q98{;p$m^5=Qeqy} zr8htJF@C{I?EtvrDRtTI_6lV>@(S8tm_JrSbR#4A(EB*nB?|I@h|?)OgiQv`^(fE$ znuoLze?zkrqBmi?(!kq*cmFdfyd&Td4)Ill76LOnID*wyX48EZm;~Sw%y~^LlG6DG zO0cm(ezEI-LhE%}rp2OhZ2ZabGvnRAH$-6kn~xfgeq8Rs2es?TN3qYcb$m=*l;=Vw zUaB34T$OL4_2P?5OL&6A*6L^YvV?Afe$e+nMBiid1i@=4u^xyfgN_B^x-mNhk42>@ zR$qm`g~f?#q0qT_qO;KLT*QYHqJ0s6&BckacBk3F8&4bM2_G{n5d4HM2RpQB9D6v+{{PHEIF@TpK9f zyplY3sJ+=Nbdt~02h5cnaS}H<2N0_ z;GKyR+KKpy#L4(w@Etf^#&0@$0;~X`kw|`Sn#=>X!4H_yx<#VWMGSv;qj%GT6dqGz+*8 zBxLnYU5}q39i(DA_Sq&arrab95H&=zA?Oe21jSb@+yurPXeq26_1XAt zE3t-ORabYeAX1wv9hesO+K2yG{5ojLMcW1fVbF3N5Ac61xRBiF^;n(1GzT@Lj8eZ!VURF%te(S;C1c zARLIUq-YPNJt5dub9$|HbZ7JK$;tF^HHgXtG1S5Vre!`qT(^nj@Bx%5NQ|IvRX|LL z=1{Aq=U{IPdD2IBHoJc-%0{B-@!EZQ$d%Pug39t;@3sc=~(HpT1%4!UaR-HT)hq6f6(FO@52xMDQumf zc1%tuoe;3~TkrHpfVsltDnDSmn!vn~jJ5R3>M~dz@F(pZ zYAwyf9sq2NHbg0$7G`EXBqRmME1LhoxQHm0$cH**WS!)Wy=3*UnTdB63iU!Eri~d9 zU5}KeL}BE@5I2p{QDZ2Y5{Rysi*ob-Bo2)glEX>t*@q%WBm2uDJ)9_vEslw#Hdr*k zK$T5N*<%zkj_uozu^^ZkJlWZ6C2Yq1E$nMmUt8dRD zEE);<(gE-^2Qpy_XTa+YxLxp9*?b|?k2+vsSe zz!gR)1o{qZ$Ds+z@9{|Jh;!aGRrOZ`iLmoPFdhgADqEpIJb1tvP6Y7HlxyC3Bov9a z6dE=)7S^)fl0B3NrsC;o=e%tw>hoqI^e9I%USD*`Ht(EH$5X*X$X@bhwJ-!)teU0{ z>c^Z-K|?4HOd>bj;=oaK3jF|`qaTy35r}#Ujrp*B9$w2Zx`h`M)@h(PmW$t@94Ocw zSRB)|91(O-HFoElIxyk7Sn`C*?nY+hndZUl{*#Z#GV@L`1Op0Obg{xeH5V(#W}axq zllp=2)SvkyliAR&Bvf&c3&xUmPcrKo9lLQpbZ+0Nqp^f`XnJNaKUq1|be}vJJ$kBI za*4rGJT>CakvDVk6-~*L_F=Zj+0f^s$Ng|(ALD@;B|y70gdFL6QW;s+;J6p<)K~Ea z$9ngFC%p(!CZr4IN%-@-?Ph=xw9Fx(UTJDo09>y=<1kEcu+$GEl#a|$$v8EE8 z6LzRzPDT;H9i$f_<^#Mq(A}(`S*q8U&eUPAZo`H@P_14%a|REEMg4Q}74cDY&Iwsl zR%(g^$_v~R6$wa_734(U2LLzx!n}$$tNq5w6DLl(4~J)uHjmX$O^5uxH$QOaNB-UY zqIL3Q_tMFeFF$zc(w&oI)pun7y%@{A*9Q97+h)jv1hLSrX@@tw#O$Zh*cFr$XZfZ^xX zktw-B76WK1SdSD*X#F5LLU6)OK5PTqhW!yCX`dP^iOShhc{CJ>pm^xZeEy{0>kHXM zX#a?)j*OO3v@<-GE(N3Eh%e*{eS!lBpw{B}%z?!_7l(^yitqcCvcutWC;TE*Fi`Bt zwy$DLM}r~TuO^})h$|kiH=4OgjW0-1(j)Z$ra2Z^U+ReMM5rZhy_6|M8>L%N8Gf}! zhaAZlItAw9wiuLtuMBh;&QW5$Gys~xRavPM0v1qHC<4V7sPf!2_qa8P?R6Xl;I8W* zzidFHO9gz+#%N{I=Qo`5ahGc{?jN_=5`ig~*WvI^h*(V6f6<|+<-BO3=VmkGGk z9g?MB`GUC!+?BF2HLMLg?=0<3#1-f<5r=$@M_j~o$r4iuxvTftJR~j>2&_eENg5^o zQN6uGy@|Dv!9>9mN+s(_JW?S~At7-$L#}A1e}{EYCh8i}b_^UU!ao-1UQz}R+#V%6 zbU>es)~OCO;VDr$L*z;f3RGQ%Y`{)hUF!AC**ieRr;q^|OkK0n^*zzDX3xwTNI->g zc}T@;7cPML#8ZSxNg_Eh+=iCLgpQNYm z?>g=;aS%BoG_b;{hLQ3x*KnJWKGrfHS#e0no_UIn)*frQp;%S zREHhFW5ZkmNP zM63Cb6JM9j`y*%ti`GRjH*ooyVZ_ei-SIxB7Q$E6Rn=IEjz2Y+N2Y;)`E8I^ zI)>a3?98AMY2y8TfiRl+7quVuEWFlyr|riFy1@EFd58#EOacJuWfUaW*nNbRs2Sjd z@CMdJp{PMatSp)u3;ouU9wUBmdSY-0VLl?GyMs}8ZpijpF+G%XM*}Vd>;*De7~^6& z&uhPfa=MzxX8ZtbjvUrm0y=l&#QCRxcjCqzN;cuS+F-_YFEHot; zf@bX~6V;d%-~H@O#>3z4{>=FJ*!Ux(k4&Uq`_0eZY&`Pq>XT2d2$;H>*8Nb}k}#~A zlTr$r#570#Sg0@1X(S6q2m5wGsw|@lCT%hvD`wz1r!uyPU7T&1t{CFU!I2=Y0{II}(DJHtdW9?I;*&&xRs4 zS1@3UhV%Bobw1Z*M!0-lTXxpw7gM_uA?(;oRXhMu&{ziJI(;XACN*EUtswIFpkJ2TXCT%y#feEtO@2Qwnz#23=>7w?zh>4a9kWP? zbMOC%-xME^>xInVN2QTZJf!)Gm|mitJMmW~2IG&$yIW_LPX_|&;P4m19}36rzKDH4 z##8uCFQ0*pEgg6a`d7Yni$#UCqchzX<-2fZ@pp4_NaRvpvXzbCJU zVr8~VSMi%852Hgjy&WBLene^cBiEs0t`DMP8d7+nUl=pCLHUzcV4&B+;Ae>6B`Jme)SQpDcd9ZdOEqh8Jg&R+2elX_h0&{1~J69$%D;Pi! zA?Q%B^-!`wj6BAc@@oSu@-W6)W`b5rtoX%vCWBD0?x!%(-X2X(PMw^bgseC+UwT(K zft6JZ`rLlaSFxvJI5O_{exGk1x8djRk}WMRWJ`3%iHu0&M3r-yY)EU z5Ifae-QGs>7xfdBnBF=!<7nl%DSOUF8>_oct@!Bn&Uxu|K^z8)ETW3o)lS<-&mN!y z2OyT1R71lOr~)HJhDPwQWN#Q-FgNbSbXU?OC;XbvPdTmovtn`Dzchn{0C636S_nOk zoNPnWzKQ)}8TpM+coIf_CDOG!(=WTAb^N$aUjgpiW-#eE zjGdK8!IOVRM&iL)ZQ6?3QXd*9A-YqgSA`~I-7osE?b7Z?dm$`F(rP5LhnF;^?_ zjO~ur-O#j404*Y%zloACs|XZpw=YTkN!=gjGbKM80{4;FI-Y`IX7rLkMaG$-@5>z1 zvr*AP$sA2vVH(0}6Zzhn8_OFV39wIUO)c4Mc3*^wp2Wb3F)OGtU(s3WK-9s3 z0#fD#ngx~kiIIZp!xYH4FrNtgMSLR|f}((mwL!}xGo?VdR^PzxQf#9QtH|z201DAf zcu#Veo0k|3C=My9-%LLC4wc-1fwHtjfKYx0KVNIYrpSeQC)HfkQ@(U@ zH_8}wupN>ngcg_&=XHpm6#8Y#5%m=iF|aB%GZlx=QOvdnBMw_AWOGCY+u32e&r!)V zGh^eEb0YZSFI`J5A<;lKtdr!L4+nv ziB1ba0WG{BY#wM0c+3T3*rMS# z!qPKB4UF1>;JMRAg4c9_iGIr$&m`7e`JNdmHafryokf`ssaL z>J_ibq>I=8JO~K*mS!|9>?J!MP4yv5ZVf zp%PSV;XC*ZaF991zl<@qGu|hTkyT!2h+q{AHqEZd#0SSZ+DZ%+E{`2BjIZ7Qb;CGt z%q3c##G7I+x$o=ue@*U-lEiS|fJb3$w2Z+fg2d7>k&xmL1R98_OcF|S2Q+}wBAl05 z5+RMXdY>4eJCx0j&Vt+_qHUWoyXG!l2Wu-RN%1|_*@XTCs}>Q+Oyeiwx^<#+3Izn@$emoMh@x! zv)07xY~Nmt*udp~LqAv1&kAV`K3h-{EYz}Rl@e$R9knhCU=V|);emj835STy_Eanp zE+BnqCe{6o8TpP2VBcpvo^*01+x_J?rjvOOGPbfU1q{Xv+MvzKH`SCv_A^fVxH~wL z6=$dLUcjJObFB@@i*o4@P|(1xz^d05Pst)Wboo+Nka4#tp~Hj;)*gUxFi++9k~V0M zj7T(j-i$_IR^|f(149^G4lqYvBQl=`IzFS6x0xLj!2Ak66KVlAk5*u#j;AcYBB7Un z(Zhs?r~_c~x6%lONdulwr&A41ZuJM~J=;mJJ=U>SJOx-jYns9BU9F|Q3M9P6Z%Gf9 zUO^8SbTzIb)YZ6taDm})$h_Ei?+-c#z`xzSgctZ1c4sCfWg;&y{xBqJF4JGnxI@Nh zfW5+!$IH}2lvm&^wd09S<6_`-Si-is{&cGA{A)F91cO>pkqFg9(sA0dmzUQiUX4S) z!!!D>16h%`aX~}@>ZvmnG>#|yhPVc`hU96PJgU%g9=6azv_@$cX#!wAC;NX``~PpT~T{os-^%9aKC!ho^PtnE#o* zzUm#^U{Hq8l*x=)2wQN-DP#|{KMC9BbwS^h&D}t|Df|g|2vIY{Nz&znL>hEeLi}OG z_FnoCzom_99xo~tziIqU^p5U?~R2PW|H8&vkKE&l0D>8 z<>4W=PbNIAu3knxsnty&ensnQw`U!q*ADG7rcPzb1Ai^4K{zBNotxw^%c>D%F6=u+ z1WnF1=Also02ev`yXZR}mzEXyvk6fS0d|VJK>Og|vJ@$lzAEXW|JrbAgN0Il@4GrZ z-T<`~84Uv_hgP5w==x8%HUbEL!nIeWy;kKKN9GwW!!S5vO~x2l!43?AfH%zSJ>I|B zgM&930s$^NreL%4=>KL972eqYxVk4z^G%Kc=uxd7#1XKDx70S6^O>M5dj4b-tpp1p zHcI`JkO#I@!TG-I42vuFh!38W7)m){l0-CFWnXyo@YW(pV;qVKAD3 zRJyAGJvpS z>!&M9kJ%ED&wVZ;xc0_VfaFW%2FCNjkrnfUyuXrtp9K{QhGz&?C~@4<|)58r@8TQ0KggI*`A(PZ7nAJl;lY1K`_rBD{bcw&n^}P&4?#4D5#6j(`pbGc=qJ^|n?E zFBS@F8vT&YP!2Ji#6N2Y?*^Av^6;99+Ly1JSSOI|M#{<-s2!Ec znZ8TDey|D63r|zu{&mFPYZwXJd>M2Plv-&%i9}nl%7(=ET%SPoop0S9w!xATh&T?q z(=V&pJu~M&=(Ic9gN}&jEzWSP`@>x5x-kdH(BjSXlQCz%_H4D^|7`D4_;fPxYjTrPNVm1>?%5);qo<%RrK~oohnQK(VP!V%0#;xDQ{(wdpB^Jpyx7I{CoPpd*>7 z{(Cl_9`%ZgGnG`fjPQ=Jp>(=5DU-+kwCOfAskW6poR;Z6Mf?!Tyq-tS*m2V$YkG4n zn%Knky}(%jXAU%~>Ymnf&-O05-D$6^AmE=?UDKVcA@><@wonw5snZc5? zF-0kowrenOuC^X|mgQw1(%yA=k^5692;Ly-uQtvKXTVgGnGH$)^RwI?|ZETf} zWmCt_9!q79m3B5&d(Z~bmk*i^GEc?P6nSa*Ve7M5h+fdATLB+&0KPzV;Ugbe*jl|L zn(?6khe8B~x}QbJV)uKsfBhbBF*^zQu}Nx!<_{reNYu_Q4qt5JD$UhfkV%1u?2H3f zamadc75!)ipJ9T663NRLigE;Qdf4P+EVq)7R{90K+#4cQ4V4}SH>4|G3nkNCwsp06JIaXMCoos6&eVCy0! zw_V%~{$Y+gb=e{4^>ehKP~ox6u@rZE=2&{@Xg$GAgjSRj!*1+q)iA`ciURD# zL@oG~>{gShPs5}~MI^3wH}rUl*T)gPS17u$cQ>0arefa-bUK0WAm<7^ZVR~6Uc-#OY47JP7Em;IdxHqTMjqy)t-+EH;ZKj+ztAE0lstU?vJ4!qcKZY zrx-K3pEv$n!SEWTV5pQ^NT=L-&gaV|zX!kOsPW0<-HWbDYHBKVs{40~^H>26-Eb&| zuV#+s`Ag(y)JAmMNKvF-9f{_mw!y53zY5;dud{>h-mZD|cf$k<{NX?-ubrWn)Fx<|eWB#jn5!cf6`)D&kO!cD zOj72aK|l&^`9L~0V5oDiUZXo-N#CV@HT>b*|l`leK0GXGh2uJk?LLBgO zyf1`6RPZP^nEujjeyO@Ce(-)@#J&%436J7_MpwMCzuDOgsqcQ^_q^KW!a950>2u?d z;JZRGx^a#>{I2Lj-q1Tk$YJ(sr`sG`<*$MSvEzSdfCaIO(Edm=SS*QWl%Q3tnm62V zgMRA5(9nfbPo`o@NhbGIMygoq{Jwp+A9UV!oAY28x7x}VOFMqw2Xowc?Lo{oX`A3M zo4UDNw#h1?q31C2m~HS+BBi#a7>UiRU3$rWbpEKlb1{+4j%Kr+YhV766#gO)WXH02 zn09csMcHW~!!iFA=CFKTdnk}CRK__0czfkIq=divPW(T4jUhn61(KfBOWNQ)Sl{8x zMFz7*yVXQcUki0#w^vrS`)k>-PV}&x1wHMyAI^kff(eJ|?B~R_N~VbTWcqyNfl66J zdQz3h`SitIRa%~o$J^)2<;nwWAI#yG$V_RuR%8y{qB?l4q(Nl?_lP@v;Y8T)bo%k;b0+-xQeF!Lk_Hl4`u*Q@#L|&K*yC_` z0^y*?QS~LV!86VQ=*XLEwvbE)egj@MN3aCvTVtPLe7)&1|#VTo_rb^2wlZ7Y;I z@sQK9H`dUItbCscZDl4G4y);00BnwW6Wtn8C4mTal!{;+8>YTzdCh=p6iq z=m8YRy_e~3!$HyBQUx|RCOdkes*nH$NO{M4Jwowyy)hfzeTmpBjvs%;-jgHbU+=b@+ula+A|>N2T(B z!*yRmc-AtJd=PMT*jrmd&rc1D?DX{Ej7@0%%G8iHIvKA-vxVI8kS!9-Odh}ffUwQp ze8beB2S89Mg8-}0hK)Xoo?H)JWSL_nBa+dY)*eKoqO~-*(76HA3p&yFqSO|uvhqOs z_=t!B^0Dvjh2|h!{3a@;DT;&E)7-^x@f=X4Q{ZsN8Aej8sZt7$PRcWGNc(Nl826;| zc%tTInxmF>PZ;&|tHL9Pb_PJgA*{NK+88_R;EH*i} zvoaf37qOgQHlS%n%0u_Sz9l%)lvdzsliUpZ{f<=_p zoD!T>5@ONNL~GxJt)DU4t)JT0>}|Doj+YUC$Xf&qq$ajn2&QgIWSkr#`C^`vzK`7I1(mSzYaS;?njZdwd9qx$*VSb-xB6(JG?2x2-wC z^+n|?9bjA*_2Z0_G0mBDg%62b>kEuJsTn$>*lRSyY(FhFh7)lxun)n9hbU ziu7|gX&KvwEipM-a-85O1M>=K_bST9L^6d* zImR9}#*>9iM@ok3wSIzqgvaDSMW%`V-5Gc$9{EO-1<-|vTi5Xv^2Y#uXWK@TsT&} zXIpKFT(e8Qg>=&JXrN7at<_Cl{PlXhV{ZN_MCaHxqXPIuOQf$DGlXr?z@Zrv1t9`b z(B6vz`3q-A9du8$vfF~SL#$L7=H}kZH=FCgue8_eJFN_vt;O2e*NWD14KXb>e|@Rn zGs?E9c?@X=wtmp?khFBl6hllpWDbXP&(md(8^*vu*cxCWfn-bPqAps*m}Y?lJ>+sd zQZAijW4IwYa5Fnuo zCXfV}fxNijk!9kLOnyT(nPes*d6Uc=SAsLiyks(uQP20CbFWI(wiA+HUX^t3)z#HK z=brOF|9t`7F&gn5ealWnA`@A=bK5+v^qfYDb7C`udSGbwW6cqhf%KQIbFf@)d&A?Q zVAPzbqxR!W8{Xv{1nHTzc~ijO7NVYi%|54@XrnC4_Lm%sYyVSxNjwg^2z@xJgrL|9 zrUPhHn)F$V0&c?RZ-Xx+D64Q<2g|n|yHtNNmN_P7?W2LU%6M@4Gl8;2kHI0+qgE=Zf{`45zrN__&(r#8Xs6; ziBZ&;kp!%TH9DnKVJ1taFh*d+zyZrW!!?i{^p7*yoIhI_u2&a?zUR(SxaOx~6GeZ} z>+w$KQ+vRB)|_h%y$j`7H_|5RTot-Vfo9nG@_wYJ9Dro(+-obed(``%&Id}ZZVxpt*a z{4(wPv`(l%sU{dMGGxfIC<~)WZ!eI**4R33yoOt_l9gAQAbA^!r|kNU@Sq@nNB6*& zzTy1YaPLpUXBz12&Kq}-9DjC?`QqF6ag3}TOF6U#?IGl9w1asUe)ClR^v2m#tGN4O zY(Dh{VdRF-Y@CV1HDe)i41q;zjMv3e3h!CEH;`Ouo>{U`-3uZqhhWfv{E5A=3e_L+x zvjH5=O2!8fH$_>AeyCWKY768|uU9NgwWY!nU&}2nLFphehWrsO!j_(6I9)ao2AedO zkvzG(Y_zdQ*0$tI9kjcf(YOWe8NRIm0Vft8g={*g~m{9Y>hW)qZ$Cb zS1cLzKcK#N1=`s&3MvvIk)-_=P|YnexzW7Zf`#&cz5s71%mgfj1U5{jucE>#@xz?N!nR~GEpbq z*gzrB zd{~H(A3=i1dW33h$a(}{ZbLw7hO_;ZNtY2q@wPr$Uk1yo__S~h8E#ATl<791&^k33D@lq@H?nXN7O_Ly5_MC50P<@Pt^V7D&gJ1EHI zIr0p)%+hbuNt8otv1%LTOPUQpuY}Tp(@L9xCS=Q7TfGf)3m(qa38R066ZNgNx@^?y zBrTH`y``6%o%tFv3!20_06M{906bznfQnF7q20fkB+WxOec6D--z+c6(cpJ@Z&Vh; z=45EG(yg>Y@&FlL&2H7G;-z-Slt{ORd_-$IuI%!+brZ6eeJOr%f$1gz8yFwJ1a&a1 z#aqHL`-G07m+T_hG%O>Y#7CI+;itH18h0JIaK8q_HhfdCl3V#ZYq(P7CoO|s2WHLE%x+rGL zD7R`t{o_05kdj=;?LHet#zf>uJg3J#3>PKnBH{d#jS0s&AL@tUVxv4Oil--%$;tC$ z?sG1WbWhdKCG!=eNr;|xyF;-xrONEX+d5{Dl|dJV_A{4de@wTbn-2p>BNA5#9iRnx z8(3=?XxKHeM0j1fX^pcffuG|G7n>yfY_=C*m&$$>ALyyeUx~FL{3pcHH-~bT|$otxPu6WdLXw` zp2ffuw_pt0c%w6LiP(ZkYYV-=r{!e{y8@Y2F?ifCF)TZSF0P@A7LuuN5t3!!rM)s> z;hgQUq;Ef~KJQ1>gmW_E{=np4H>&a*$%{$2u$EoT9#oFJ)Bb=V--eJQ@nM1lhkH2Q z`%9X)#7E-8a`d-4opmuBA2*@iv4(w%9o}eT^m$(XjpGh@G(61OaQq``Hq4HR({%s} zghDx11RIQmjjzbZsu(rUGs#;3nG#Pj*P>`YeOLGCyMTC@>P&R+dYUh@e%0a^EZnS1 zDun2(Rtk|_d@9T#l27AVS=76;0k2}b>MKV5`RB!zHcehhS&zkr+shJWbI{H!91jc+ znFYV++ETiDB;b?%V%!cA@!>oiC}m63JhR8#o3kUM-A=a_t9LW6AEi|quVmUPxp6$lX{awQxu5{zmd%%)y%EWP3(XX}cYJ0W2+U>5+J&GN= zfQAjw5r`NTZQrh)GbLAZTS{LShF&rBYOHLugK-Alq@xlC9L$zFh|6j^7`z&;K`1aT z)48Q@8RtiBc}nk}!q*%>c}E!WWaM%Kz=(DAzX&($+`#-m*nx@>6WCq@ghI_v*s>4l zA&y`CoV-r(gIZ=du+UiVdEThgM!^RpR$?t5+_BqEBI3_P5_b7tYVp0L7CZuhnX3 z$f8}0(I6cKp(&7}0?}@R|%wXMnm`{{AUSnKDDtspaP}tQK#*0ey2AJsyg~qrQI+Jbu(I?UbqG z**z$KgEAvSZs*bLGH&~x7vTGjB00F3<7ie4FXPrP*!QCy%`3C-VjDl(1^F># zjQvA?v?x-3pFD~64J!_!OK^8&h**Ajaq-kCyqmJGs`sau=Az$M!Wk@*!g^Zed5^#Q9nMMXy)}8)4z~lxG#hnQI6roqco^*DW*g@+*9vWC@Y#-*nQuj4zrL}t+3wL7 zg*nI68)K+*AOV}Uk05c7oLS~zK?a2$yg62{!d3)^eha^A_kW{uy2y5z1e|Ti-z;}} zYn=|*I|R;I?QoCZDSbR?g6dxwEu%G7`XL-O2}=eu^dlYSI?Q-oWOCfx?3$YcZSuE- zPpr{W(>(w)6cz;Ryp%}?#;f-hX@>&k>TD0ycFr~QU`Kz*>$9d@iv2;~+IDv~*Lz*n zv+d`w#~IJT-Z0k)cJhB&U=((|fhh1K;1H~}hIY4q-+v-L0skpjupb3L+EsI{eoVOPvMWmNwVzRr51(y&T+kjbRq)5_R6VpI+6KAKh;0~A+MwAC z5vDfwfpwz)J+YB6+FStGAPVqz&N$ww4V9j3zHdlDsYrbx@zuODp(+cq>vl7Obx3_3DerE zNsS9w0eIpzYdk;7RI$+c!UBU%r#L(ZHJTyzpu4z*_*6RTF|=01AIbTdEZXJBX$Pv~ zyOG__>2U6K=uUxb(XoUJc5eqfxm`~0aFhcnP(Cw}@WDGnbLwpo)18%~>xooKi{MJ( z4wf}%0g4=#(0pT4uSZ;*lcNz0MGFasXHNI|JWhwlp=;0#l}drMOAn96!VxHUT*3Jo z5Xd%+5+~n*HGI8YfSKcE7_Zv}qYfSh&)aOlMZa3E;uD;1FbC@+3G*xbo zR(9#3RKV|p!iveiFO-HkwpvOT883PuaL0b078O(K2RFFGH!<}uI3_#Nm_7F|H708V zI{x0j%#Z*_LHF?c;H`Y{TSP1ri-Jj|d<~(S>VSHA=oX;HlmP|QT0%Lnt*}1`-Fe8J z_GHo-Pug``A-;Fd-gqH|IN7tIlml5cL*lKWfL?HF;PVPsqrgDzxqZb+{q=h-NXV1)`n}oP2kV~g? zz3(rBCcSMkbmqR(;mOF|$B*B=o|_7+`=?&n?TD3*g|}9uuAP(#_gGt5T@^#>Ym5Fo zCBKKvt*%JniP2;S_kK={WHKYxFY_CD zYAGcy^H;c>caR%-oAlm1#}+c=W$`P@i?;$^0JH#W0t`Y6DQ_tpAmL>{re*5BGp5gQ zI^R^Cx~Y0#uGS12kz}%D7+cjFqCy*c{kc%@-+b}N>ih59e+N&Oz%Q#YpuUsxF=nAc z4}Lhb(a{(@IE;*B3^4pula*7phoaaZPPD_XHa; zhgCuWj5}mO%r^a37-LA!;Uj1l!Hvp>(;#!F6N1@T%RazLqRSuGKIj8Gl^Bpiq!Jt4 z{FVEs%1cY-sr#8yZVT)Q5++#LwBI!2fXhmB#N+pSMxtw`k6;BT~MN8fV&sW zU6N_GLc*Elj_q3R+gsf&^LeH2TCLYtq4(Lce4eZ^@`Gx|WrPz(2s5tU93sfDjR7Cg zzD(91i#C)IZ8;F#?iN)_R7XMR?LRcN0DNT1=@8lnp3Nt5G3RI$*o|4-_hOb#A!Fdm z5KQQ_S^}X_j|X)_1N0bANdTdukLnEYHTa&6nD9VbYyl4cL ztzPgO{++Lr)o8Rzi!1hWJwoyq8<6=h+hE85oa7>r1eKgy8O%xoA$Tl{(;Z0VfpF;2 zym7_Ik6OD8JIM#LgiIVuzxA!@V>hZDmj>7UhWLNbj)!^-)GlDiFY2x-qXRVT18p6I zw}&uSoB7wiHs4$|)t#qH2vh1esOL+Yi~N4EWA!Rq(EDxb1=x-Uo=vt1Lx*ZJCFimR z+b>f|a4n*G4QztRev_O3+$JsB(uEuV85$!<^MM>tnUl`*pa(B;!qAo$Z}_;|{qY+X z;WW*$`CsDaLF>ZOzYqbAm;tI^AjW`T;4XkTP>K8R`swTqfe0QrZAN!z$8oP%H1#$8 zrn`Q6?X7Ra5xzbchpY2O?F(95Ag)P?h1aJ48O|STVt>IKp(R6QaXU{4j32(Kag}2 zXc+bsh-HXxlujQs$uN67zrfn#`4X;xmoxGp!UUpKd%sWgiv^A44%|z*4FQ~x%MF~k zHk6J%rOl_f;#2b{Ht-90U#4S8pd^LyOyG6~ilb{BZ;S$IWQ@5f$je|bloJ3fci=K0 zJmVx*0VFv39f8R~2?UipKYC?Nid8x&8 z;-YKtSMxQ8%nS>9h^7^-U@S6yv39GvRg95G%P_(%ES3h2E3#{ZA-;i&pa8Y|h7JPz z&_CH8JqCv=TDP#+mbxWwL|&?bxas{{^x1lZu~`jHH3JVJ98(h}2bG&Q34@2dEo{3O zM4NWVJyY&i!S*fff{6=x)sqYfnyZl*`F-8%s11i(*#qhCOY6^(q0<<5KCoqU92|Ve zvV;xgP|<%@IS>5B4gy-U&ve<>7fq0S0!g+L=Y)N@MA{$WP`pM%d zOqm#%!xd$ZGc9k;6`KK2d<~zkLF?8_z|=qRSaQ0d$0m8UyUm7b3v zySy9i+h~Dk&;jCXY`it%_%sL0_~tO0>~SrS(F-r)H{4uH29cI0okH88z$tg21vvyFF) z*VYf!YKQ6?>~O zanS4qjBcBjF33)x#yP=SeS~>Pq2g3&PcS(W z9Ss|4;W5e=J^IN0pvNED7k0fP9xcuo0lEFG$sR}u|b1QPncX4Cu8voE$`aB>OHFjhK`AquPeoqm5|cs8`Qw;XAxueNsc& zJ8e=A-{JA{8+^dlyNv}!6v4pWhzHWqHkzTnDHZobd`=ImH*Fwy!o6OPBh0Oa51;jV zoN~(#{ck4vi;hJ#oRNsb5t_|!PJ{y7*1Y#f<3 zS=<4l8@M|uqc1M}QxMGeGMPZJSPWz``||mGFz60P!fs?E`;jor*zmz@z~c#I4-UWj z(S?OjDd>hSCkVn#9CKC9{~Y<%e+K?!DOk#PSR{m%)?!|O_ksS6&e?cy!jS}lf6CJy znJJ^JiF-7l15~u&j5qA?cwge&kNEr-1EX$~OexPu7?}xb-e_2ViE~5XBq^)>8>|QV zfMyVTSO$)mqIWzVPcg9oa2zPNjasS-L9<1NG1AfsdC!y^E5KbtegIi%8c?f<2q-!e zGd0qS>BnzPWF3`?GaDC~Dz>-W63;q6g1}4|8T;2y?XS~u9k0tLyxx*KGLw1lh0IL! zkFbgSCw}|}&Tr#0#qQ%~cT z4}#nXs%noU+MK@y0hs^ahu;#5J&VNkMU0?U<)3 zyJCK&TVrB(Cr5 zg~Kes(`W!r+=tzf>-zrUzV^O*gjIMJ7Fd4gi0n2t;JN?VeP;q|xn{_Yz`^kUzrO#@ zVHOx_G+cowo^?PzPk|a9!)R}FOQWiEkyP%uAv-X0BfeGI9>&^%p>{$I0zxSvic1(&1yMoI2Q|G++wUIFTuzQ8_gy!6($!*44n!BPPT9z$y7j=HzJWU z2{)Ldm}GnLL2;1ygpA)o-nWmhIR^=>TdaXNXf|Ev+;F|Z_^K|;jA^u-N-}H=$b?sR7@5B6h|}g{H5nG=-{c`l z_(1m=RcGl++{oE%fI}&QDpRjOo_?r;N<~l$gh5cD2&mcG0fzc9nzQAik^m@(+5^xT z>Jt{BOQ<1@69_Se0oQ=Vex@p^N4B3pZ%JpO2HdiwXXHDCGPPn3PNW9s`&oSf$8yLZ%% zQGENl#Ie+By%@Lldx`_ao$H{VSQL_QrdVki5xK~0AnbI83e^na*}Fl(-PPgtQhT`S zhE50i4g2Eu%@Z$yWP4vo$AaFY$xJ4B)Ek6yNy&8IgG`mDOh^2mV45P}m71mebCE~d zD=33Xm?A`pAyg#tFGiA%s#{Y5GpKy*NJbX@Qmz3|!*L9UC;%7wshma`RLlKTD2@u3 z5=0;lSTeTV_QKGOKYIJ_6qFJ&a0Xg1B-wxuOc+!cx-~4!)LtA~8nAh&kpA(mUdWA^ zRy*mgT+nPonBbn!v3&7;&w!Jm&2-c)SiEJsVHEofl5u}69?+M zs9U>qS$BrwA@n-2$6FkS9Z%Cd;|?dvOFKQuK+xrJx)Qqh3uWRF#nP+i+qXS34)xov z`hi4V$jm>Ahx|VDVb5R{@1v9o-!T~SV7CLK#OGoXR)`l?4ixyAv*I=?utMN~lj1?T z9asA)nRF@NE-?2bN2Dd5xP>7`o;M=cZI4F_8y<7~R!xfrVe~D)CgLr|1ODTviQz{r zT+N~DJ}dtH)wwckBPfXoyGbz~{5?m@AN9G9IyGn0lZXi9m%Gh@D!KOe#auZt7Ixhe z2x%ejJDh%p_feI0qWAN0ab#|6#BPss3TXWyY#nZ_?lR~}4d4jpF)&4Cynvtj$S4K% ze52)T)c#}mXn5kNdGz-(#Zg3XrjL!w88|V2!O*J3Vr8;-c`n^S2B?jV_u(%$szz56 z4b%IscWpd+R`L$l{sg@2Gw6XEwg8m_7qPYQKB7$kOF^l?03-`lCoL#EjjzRn)qFJv zpNwv9)`#2ey{cFI27YP$w2-gm-+B-=QkNFhvo9`v)co06z9wAxYT>O1 z*UZnLm)4yB7vM?F6Hxp=m> z7zv$0Sil~tX)sqjm>VgEg4JkjHf_{0`PM|?%);^P+Oho&WNKBN2n3Ff7tjIG%@(}A zM$k9w4>w}IMLl)T@#9%>cdFr2JrYNKDcPOAou-7I1yFq=Lz^sOcpEK6yU>Th548r| z7$7HL7OXv11_!Ai#E*@S>%cg8T^JvC1dSkG-!i9ypcEoEB6m~uO5SB?NmuUTyJvhs z6n_r=ihUqHsg3CRh<4w7YX8X(zA@qTCf0#2zyv+HY_TU>1;_hWky^yu5*6nH^!T7GJOq{6;*(IMovU zt&oHUb(xTLrUO&b(B`Jq|Mj6QLM&}ww7ZFwHH5TS`ZBwZ(gzPdO#NOuadq?`=_z}> zqqlS_U4a8tn_l1pak^@~u)pLf;ZlK?N+^3$qJb2_KiDp_qz7+kt}m|(gH;${i(WV3 z6}8>hu6$nNw;|YjjTXX&kT9!Ofs1XsyLEL9$*4M4Hy#{$@>jp1|HS9C4`&|!`uJr$ zE9D}kw|7D|Z9&&|dgvD112jyQ#e=v82Nl3%8FZnb!FnJ+nP9EBewDf$s=0!IPf{&T z?hgc%#rFF0cwFK-MOIEkE>7(2*$m}Hw4>_)-Kz_1pF+PVRC7i_VNB*(^ytsAoja0HOj#NcK=QJjIH zR>CDC1o5$Nf0O*&6S`=$_s=;U`pB)$xl$L?*O-Vc#rL^1 zEfGbi%!nZj1BD2(d4SZ+g*@VJ@AZwsc%dBL@AT>W({D)c*L}|Y;WEx0lLCI=L2WLkJ@j}?Per3CJ@)uR zT5L}HhNS?q;9ibvN7}237*}SnX1I&13Ja>$q#I$Dc8fA;^?T3DcK5zkwYexpde0k6 zs!dfQ^u28P_3tUL*|)sGCsK}_-K_Ikj|xw~yC0r3Wyqb2LqjN40%k##EkVr^s>3KL zvAh{zKPjU`K&N@0xnOX1~U-gqH<`ZR3yxD0L{^?2PST+NbFb)2Ho!mHsvC@-v#xL}2PPib9KSGSd5P`+C#q z`26ePDCvIiihB>@yKi#C)9}K)?qZ*;bw>&gCuKlhpQruD`m@86&pVDV*;{uD-7)Ub zci*aC8Hb$##S3s+t7qZDIOw5wlhg4t_re9#b>Gu)uyDK;pvLKsfqzt< z^C6Ma0Y0q4PysPa86sXkU;pDXPdw54&J$sB32|=k-m@Ym z+=0~ZD7)islpVNnadC~L0hZKMz>TlZ?p4=T3#cwDZn2Dw9Tp(Ki*Vq?nEyF)8GQ^C zJ`28j0hAi}uAtF=L2(t>AP&q&Srwlk!Y=ZYEFW5{rV@AnzypkW&>z|k%I-gnYfdpDIsTsR~z=Eg6|)OFdhh<_W6Rx6TVt4 z=+9OocqF;506&Z=&>$6pccCNzVT419^#z9rBJIuYO5m=y-W7mWCT$;F+PL&-)QQyn zx4-3;J_nw|_sX~2KCoWgz?RSqf!7DJkj#{fmuZrQ;`57Atswqp`)_sIFAN3Z5Hmz% zf%kGcZhO(nRN#I2q9f;JOh)Goi4w?(RWeBWox7#AQld++Rn+w)Tq&3;s7W9cfdW|& z1TIu6Fd4Sf`>%xz{_?SS{C){ov&%e=^X!MIyM?Z*v&|68l3=|b7KRTTJ}{h*&&*GU zB#BNvBMi9R^oxdVQe5S6D%s;j3DIR zM06AIDmS8j1?Bftfjv_)+z1rJ=&f|QsiT5ceTBnmf_azWPL?i>u_7wY1H42<`k$d5 zE84AqYd~oNl=icwfGbzTGsVl7itQ~-%9Z+}JRSnoz#sfa?bsCho7s^`O8&;(C~x!4 zJKM+ho}P(3MjEtcyVH4Ub@jGAvXox@LONOJniLMCZuo4vjY7(O`2LaM^!@&h5vg=j0GHFaUp*nz@S7B+$4a zwm>}k=%ax127tMd$@G2@kH6v-@whN>_F%g`pUKR(+XwG0PDNjNM|84CzE;kEmn%{@ z4RA$di$A$4bn^Z?9*kUi2A}{^C2O!J6MM3jc2PrClEXK?wtF1?R7D319%(JVXpDMk@VdOZYQf8Y zz`dN%w&3Q-BLLFhf=LBF!1S{vRREcSatV*7h_p;w1QuU^cXBpS`jRW?^KQC5o}h3Z zn7!|FCmt|L!T8NB3NU+Sg?{8Fp*_0z9w*{N-YJHCn=auB-hW^+`FU~E5p8x4^?a?H zNMc@>MMSu8qI6%=qPGzeRGNkf-Dd~Dc}1T$yTR&=*Em@G{xoK>L+f0Lon$M1|Qlxv6?^-z-KdgJ&;X0^567*X=L8>K>t2}Al`)g z#MFJ@AqkBF1x|Mgo^J9^;?s^~@C_fCxMj6o*d^`^22Jy?gF!w2g#V{Tik?faa)2)w zSi7VX^tOlQh_ngO!V0jZG^h8Mu&mAt9qORQK&@N3?V4A+&ktC>dhe130lMd&xPgumQ=&|0>kh?F+lq8 zveqr_pv1W)+>=Hhl2)i;tphw096}k$M!)OYG6ImVc2UW86Cw$P7us%NHbe2tt7J-$ z0FM#C@+>yO!ZXxiv8wS9&A^0dq@1HSw^FlF>CSYv>W;=@)4F#TISS}ezE&)v0Wu`) zwT-(-D|BgdL)D-PWNZey0?+WK2Q)Com|U=?b5|aW12x)-Kqr-_g*Q`mVe9P{0`~4_Z@i-w;I4d^heI^ zyxSlQK!V2b?zl6Ju=YIOaVdZJEjwEooa5f#$?xsLu{+;fuaLS9EOUDE?pp9>3Y z0MQ*uUS2345UemzIYAdqNvW*bc~em4Nb(QJM}=2Td>eDWrk}{u6(oP+mGI!e>k<|W zf+nQztT8f%Ggv=r4A2ki-HC%S2AEE@axus1AU?1%K9Q?d_ta|7DzF|_^&CuAb@)BO zFZNXLwxAcWk$WcPHzrCq^y${SFmGAd-bQ!8SPR)RYhXJhkWu(3H)))n_;d++Uo&@Se=kRVj-E=TU}b|tKALKY&dfbL3|R!TD6 z*+P4I%@`3skuCTmS0ibyDE4`Ke_@K(k3A>u&h{P}DR_;DC=8?8@mGIq09Gd918@}M z#A+$1k-`cqWxL)?0|jSVWmHgMQ5no&YXFf9lH~7c-f+MZ@VcrfpAs<&37^*}7~$cB zANF=%z#RyC9n^gGwem}MYTBJka{K%Kh|lGPZ)GOt3uj6(S8OyL@<)aZv7BH$5i+E?h5#1%q$oOkVGa#WpER534(qk4I`1HvJ)~0qHUT!#N`>j zrX6-O_!$sL%;F8yaV5R)wm(_x3=P9X1;1-U!k7wGZ$?X$;gntzF)6gbgT+IHE&?5{ z4J{O=rt;S7waL{a+?Y_3kA*Sr%TG_|r`4BN!AF8vIoXiZpD6iRw!_RcD4x%ZGCN2VMAr$PQ=vz?T=_;7#F55f|oGONIm zCoq0ce#(lxHC70tgDJFO6quTz8q6lI^tAB0VU`ZX!q7A#2@5r+GASjbJ~!^{`@A#c z{5+GGTL&9!Yild1LSd#*NO^<7crbYL{f@R%#Pzsd)Z*inh;Z(9Tnf7Ga5(O81vl)2 z8*cvG%{PBe7lqVr{F7w+|>)u1}2L55$v_ z$IHkFIF20H2RJ4m1p-~qT5-6w#FMT{33rdhN{7Xf($VtwdMkmTd()M6U3CR}4~kcP z>Bol45-Hi@t9PNx@Qr@kqf{Z&7BF zg_F$zm`pf=)Pn7d3P)7pTWW|6iv@C;7}XtzoUYTZ0=zy$i9m2?q_;`pcL_l?0^C%( zP)rL);NVi)aURy=U^qMsT0$7Icm!2Pb&+;x0d|gFEC{7U7!Ud-J7n`PHTwX5krpgS zx5xsSdoh%RKX}|9EX)>yey}MygSPNs(1)tS$P6U};FbGekRDAdjTF(=~BMOga1NIO2yXWv5TTW3pJOQY*HEWinE1|7lS7Lx} zty!pg(7ue-m5thoq!?PKJ(1YjD6QeS^B zih6Q6M!;Th|Et-b{aF~zB~3+NzY3T#WsJlSqH$yt8JO|;mYlTx@FtVNL$Hs46Q>2+ zT8#Z_%CMHSAUJ;R95O`3^C`a%gN;@UyeSJ@E#{~5O-W`0e+1D*RL>=+T-j(U@Aw2M z?xk2}jhLyo{!AyC&nKTtO{&>izw}IJ`?=o*Z_j;zd4&!zmJ%hXh*F+I$O<_7O{z z6M4b;h7(>ZoAL9-FJ;#CgEsbwRH6r#&b)+J-kn>T0czQ@5ghaUIU zvu|ccSG;)j_d=UG&y?Z2iztqa38LOj)vOo>eTE)I*}G^^GckrVIHeFwSmuEYDr|t? z!qkCVX~OdL)~q?>p3(fC4K~p!7Q@EZ$42%%K9jCwZ_2)>G&Zt2GDZW~<0EEs&f{g@ zi$yRa?K^#)|N7pCR2q7M9w!#`g1!KhGm$B$(d<0jepqzcRDibeHP$MwAwFhp0#^Ga z*UE|nOj+29QNLHN*imVHmNsn^igM9T>vBH> z_g=@vtSjrD3_3%<;(*U?9u+v|-@&n7cuOc0ddmV2Kb>&nl7urXI~9W*-i+N`L<>DM7vgwt<36QVkiKDY;C-m!n4J)EeFRq( zb97obZ*bxzrbjK=ue-6nemg!kmUVr(F*-eK*@rmB3LY3+NQ~7)b)g#oA9M{WK}^BG z(jeq65ge>>281lsK+jxYv8De2u7NukzO@L%A_WDwPrQ3cqe! zYik4Zo2kEeV8y@0QF0TT|i<6%1$rq+d2=#De1LQS?uYGb=}G{oet-~HWPh1J!Q zFr<_BKx=F{9e?Al`YyD{YVNPD@9tgQU4OOR9@KT@5d&7ihD$jSBL`r4xLxMu9a`t@ul|i#iN{n0;@p0W3K& z-qc@{O})7NN869Ki`mDu#Tv>4L8iMK$>Uz4BmFUcLbTBrgbcyzgGbewQ|$@VmqFSC z)4W3-&<57OzH48vDyHrg(ehj5RT~fpN97T&#<*U4Uh2Aw(l&V*utKCD18{(aK`wv` z4BE5l`vW5n5CNUIfT)0;0ZcNTqa_+|tAb8+=UlF)E9M$5_{H?SGbmg-j89FMYyPn( z7){>A#;hBbI><%_%^7u3I_wG^4u=m1U6C~J6L-!um)p*Vn#;@0hn#KG?6CSeUWIK` zV8O_C{yFG?X|=Gt4T~RMIBrHh^#GtGs$5xH^1`~&tq3U_LHlVb7$wq|4X}=8` zzKilS9G;OhkbA%!R#g(n4N3@5z?x*h;SUK(6%BDG8SxMuJC1r&K2%3NzJLF5UHAG@ z-T)Fe#eJTUa8%Tbxp9}rHJ&Th5u!N)S5CKA|70rX$e^^Vd+!+`&g^xg$ZN)tPv)jv zdMH#(xgx$uGKP9ENgTLR#ZX9hP4&n8GJFoEz-xfIu%{NXMW={$5N8B5hYxN8-w}Eg zWk;10jvXEcbHhNN9p9S6i^EXfB#Z9--auz;1oobN5TT3hV)=%#@=|&11{i_hB9?7t zuMPE2^$)u6u=-acW3Z4xy#sDa9(>nb(o9G@6nHYx4dgO)40~^l3~N;luX_I*U>W>@ zkLm)O(-ZZ2d+`i%g|IHDge*dtF#u^`2>My_cnsD+zM2047s{#@VvVNZ-a5DZg9?2e zTWJK~0TyXj?3-Q%Z>YY7F&SP4I7XQ&`|o+gznb756_2`s{;p$2f|!e;7I0w$EEVx1 z@@%?mO?ap@8IeFOKdBD%l})%_H@bDd>rp=_|C68w$@wSoJ>A7g|aq_2@E`Sm&c{a=`2qlTSl(J2<PL3R2KJp8b%fJ@#`q*0m4af7>HBnUD`#OB2ZHZQ)Vq3u*gsLt_Xp`WDRk z6}*v?K$*!KdI?Vs-nGeN}PHECq8=U(8YH9N->?wrHj2S zY%t;w4FQsJqn?Siu)#7!S!H4?f9Bif3up3OaARk#UK_%ZbuHxuA7B-Z5=a9Ht`)WB zyZJLOnBT@VI1ocu&*Uwhh5F+O=pSg6<;qlOazGD8p5Zz@n8EzZ68B*dh|cONj24St zl*WWoOwNlbRbol+B0lvtp5NGb9?74Dd3A?AY^Qb%Y3|`J(Z#bW{;rFDO*7UEP~`?O zlGYT05K#)*Qf{fnQZ+LrYekUK5i+p_oFRNgpRX8?8dxzRVOj=qjG-C5bUm}U%k?KrSEj6`mVhAxZ&g^)2Iy=2@fvXNL zJ12Kbd)xI(uoC0p6tlg~j4p`wigRK^NZMIza&AOT5Ch<%CBFZSjQA z-9v|w<^1H(Ss7m^F)=)e={$fcd;mqBQAR#079l;lF|gF;fBG#CS z%yv8j?|i*)m*{OGa>2gWv*Izxe9+$!-;g@BAg)RVxhbBxWL`dVsrRunm-3fP@s3Mp zE}NIWV&cP@%l+Sz_Q~J#r#0R~774?x+?%KQyZ`r+xpw*ze|388dw83d@LNR#u8O-z zL0NkV7#3mxB!Y(66gRiK4E!wJJ%&1SRtV^)l274x%GYd5n84a2;J2<g?)OR$=h4 zWh3eDCnt-OT%vIuxp}bokxd&c7p^tn5yPp-oxbICjt3Z~p?Z8O0kIpxcVg|ZKYaVL zS-)J!yaRt1SCG2%-3TxeF6~B_>%4F|#RaYRh~q}+ z$RivC*P_c65}L!Qjn^EjLf`p?JU^}pizX7zw*C3wq=!{A_@?^}rhWTO*AnVF_y&n- zTYvNuQ-2){FDmrurUJ%sEERFY2ZkYo#Lmsu*2>7B~duv=UE2>rJI6 z!M?%N@m!a5RZlAHQfvQSf{Ne*!$!s}g?yO<_ z1B>(8v9m7O`2*k|$$yD=S_h9^w_mqD+k2=FZ`lLaf_d?7*H1ImH0y4eZGmY|ZIN z?+U|DY_E#vL3qLDg6%W-2ZK`E)`@KaK3%{dz+ROm0g=la5ZX#n>Rnq|S>D7OPKzC& z&*f!qpmE3J^z{+^J?6V5e;sB*@vY5G`j*OHsEff{0Q$HVg*Q~4GC|+E_ne_|+Us4_DM(iK05BA&Kejcm;{dUwZQ7E(2 zls`eof#dlc>RF}kORXo^jG`q-oCqJUl~Zs(>#h7+@mR6hEFOb$XXVlz?|RK^-et`< z`8?Lb$bzeapVZE%Qymx^YzLT&kib%KgRKGws}7(&+q%waYQO}$1pWyA3eX0l`gk30 zF^l4k^_R1{3b4+|6$Z6^VYXDMi~;sQ;pKy2oby%{lUo3hfHQE;Wirw@Bt=ndsI(C* zmMBmuR+aLmjDBLVr3M&Rz>aRSO!)nEOcZ>s0I=cE4mXNnLZ5*RGllBSyn0ua;V}fe-d2*M^47@|pO@@)n9OQE5{&o`8Vp`ntfaq3~&xc2{v-;nDp2;a0U zu+oIYN|<42JaoXKtJDu*3$m*^SCP9W;~Nm%;8eSP;yy<(DE?fegdPm`ep&5r z|G$Lh_4b~XyXLLTXsz}BTJ7O;{R_e$LXPaCy=&b6Hq=7?Ao5-x`elz-KZ1>h)KwRt zl@?+JsXB2b`wSe4IouMb;FVbdzi<&)3+2M0E2|zLV~`+QfSBPOCsax;tSTtfTDGZ! z7c;>crDU1k58o5qu^i=!6yI|AG(DNrHFPVRbv7Md-4O~obbr8s(vO!S$)I0z`<*T) z`nE8hoeCr)PH)f|Her4H&uOT+$8(!wNGCd;4;>tzKiWi|Zdd8ts59WvofEGfcW2xI zXL7-C1>Bl5e?0FliDV=YcluzY)%@;IxCX<|NX8X$27JzNeljOIu1W^+cIT~|dz>!&>H~I!yGkxgR0e7%L zn$?GQa+;Pcnu7&-2s@b2DH#G0;1oCtnL`5?;>7``LZVOV`|vJ|g=t6Bkj_M@csvFF zp%!#Up?a=9=7=Wc`E){`{JMgC>Lnohd`IopL?P@cBY#381RI{nf3vdlUUH!DHR7`XCrdbhLLImb4+*hX+H$uay8j@$ z{fsU9U=2#JSm2&2y2Wl7CHLV&Mm#n6sFwGX^;CbVo(kv*R~Ox97f=S*8V?8Rk=pku zy5BDktw*pCo#j+*^Y(lm>PEt_NMyl#4MA1k)bWl27m+gRK=LG%tSbqcBu}=xT@>&@ zPza36Lz~OQLXe)o($}FmgO&iI7PeArh5|hJgG~+iV^e$(EAcR^54A!Jw&U_433KI< zeFr*iYQdQE4$2HV>d9*mzChuAxC7B)#H$yGB zKhB&kmx8I#cv6J2-iUW<0g2BZ5#B=H6Dy23E;@d^KI=O$k*)@^ky5ViF6E-(Sj!np zigYhKCmGNXrz=3Id~H&U@Zkc zR%`Eyc4<_)T7qOiI8_SzO)Hl9^NI^6zqui<$ueW@$&RJ(wsMo)~E8yteT?gP3<|$XH7=6~#Q(C0+5@(Q4Cmsaqz^&BC zP&cBC{AB!SrT}swF08@-3&On;V_NhMkz`0^UggvvdJ#HG8JEcDbR6vX`1exUK-lcc z%DUtSl(-QyH?2>IX_R5@*Z+J)Q7pGpddEJ|9r#A3zi#DV1<=T)NB`sMpQ@6Ka zpe~;J-?T1LIPQNUclJ+W3|RYd2y_4;#!eW8Qdk*4b*L)>?I%`Hh*`T)JVN|dZowVw zom+K6Ci6TEFEG6$4}T^S6t4o;S~w|Q9oYD>NO9>J%16LsjMrTYhV(<80^*~8k>g63 zRqYzG-3nk#wgDrYXkazkEu*>tnoqG)Ga~NRU+{X+j%#P*2Tqb%Mz5lOxcc;}_(`@D z-P!mrzAu(3u~TmS+R$M+^~6y-`v6-9jLkp`fNCI%+9=V$B2a^}agBloD`Ty+H_KjXQnK-N8nJa-Gf`t<74&m8q06F(UWUXzy`a-ibvwP?X} zNYBLH_o0Bh82PcU9Y%LPv#<=;8U<_0?;1LP47f$4;ih5b3}{J8y+HpPVJfa>=}sZ; z?ENit%y%vs@!e*zEKpm9N!;!4&u5M@jLaFTMfZ()eSrW3HPAM+pxR2&4{5M9HjBn3 zzcMG#Q~y9GCI%7*RbJeo!T#i-m)+5ymw0+RSkr#Sml}hq{8JYS z^Z&?DRB%y#eqcQ4r4H$FdpyeaP_*VjpE2=Je7;1F2IiyQf7VcNH21m>H1Zd&^gjBs zgJb7Y()3Y(>4UsD`r-k?bjdM-eZ2z<)F^$iuvEBC(LX4;$hLu?B3Bp|kO8ytC>V@` zpz%$f0qa4~DI>aY?@FM)OF-$~+hQ<9d(JpHmvRgT%ZYvalBhTDa}{#QNYKH`(Ziu~ z9OP$Sf{&JkOZx}++Kk;u48W5{5bBTbQG+3guBG0pE(>QD`5D+>44L37+*0T zZlvCunz?u{O0YvY2A>PqQjpc{@z+R)r#8DI$7col4)lg{56sE10fJrRO>i^Fx68=z zA4`{WFd!lw+|U*{ir7|u%9Do0#WN*g=-OYQKc9kj5C&DkP)flM4(RuS%)czMAU+rk zKKY6#1A$!VJ0A!~Bf;U(U^Ei`fOsbO#4DZzH06Tp9|(t|!O`JBG!ps%hYPd-^LGjT z^FVW<>Pl0WqQihfF03G6Acba{+)Stqb4)(zXtfcf$0|C|Q+Gcdj6{N;?ppW49mtc& z8W3^fb8z1z=9vFx!&WvI#X(eScRoDpI=iZEpa=oHVnnBSwA*qJqyun+Den+YWA$>s$MuE+g2TxZml{bPe~cO*08UFqEZB66>fW-un&QbvJ5@ z!#)diXEkWw|CAhCK#}BWIks+P&zEp?K-m2bwL#H~D@BCeTBExPX5-;!o_UycXB5qD zV{AP#PO(1@AY2N?VLmY5hp~n#PUkb?=5SZTN55Q6wln@SN8V562A=_lMgru7;*8&rG{|RK>lr#}A zxMjg09=1i+o=B~ws1Be9nLw~wHk8j*3N_lj@Al#)ZiXM}bM(!e&i@unb+`SJ+x<(o zwQufy6R1exCi}j{m%T66Ay*=n^-JBq%`{W(muy41En0K)*W%|fE}UnGb^Y~8DX`I^ z8=8137JU1oZx00a2cLZ`7(DlA3@h?6@pFP_f$#SPf9A2!Xz*Mt5PZyr9pa!MWLm;Q;t?x#fr(=&rVy8}?ibuqrJx);T zeWIMJ*BfOZtHafOx2}%(-&KF7AMuUg^i^K2b@(D>0ktMQt>SX5*>fm%(Fs^>Wc@V; zE5X>yxoC1O8ng`XT72SJZrN4q+vWzWFL+_iV3lwUao<~}wzs`Tr^1f03@t89G&IsA z#k%|kWnTKp_SCOXDVaCAHnf#o#Q}|g*sWq7CC%LgTz*aJ7HE5uHFjkesMME{>#R4P zV%OlvDf?)Q=kJGMc?FUh=LMT?_alV|T3u6oHGeUH4Ar_R8E|Gin{I?5d? zmfE>UTyxZ8fuw&pQ3`mLy}Q9Qwvj(bYsfvoob{bQwzWb);b{l%~8T5 zCniCR;g3k9hh>2|Zb3Cgwv1vv%xI49$f%3)v4C%8`iAt3*8#7nhha+!ct7zSN5Fdu z>O6;cCVj&+YD`HnV!ruat2>)G-?c_I#o%hl=VGwX^G8ILvXH!Nsk@U43KlnP2`M z(d+K9EW6OV++CNs3U~0xN(va@)8PQl$J@aRe`$4<<3AW^{*Gl-8Sl@hEl<-QVL*bM zmN?y>61Q@G*>UIF1}vY!Rn&zaY-4;Ny7cBNs=-12J}f1e!M>y8Eu*%hg)i0XS5|l2 z_8st5UPjjkWEjq^>N^mG-Cv6&0jj3KH^P2QA@VvY#qQyc)OTfTqz~4hKP)}5q+Gx? ziIo6@IUEA4cU&>&L={{mG~U97s{?mHl?Bv;6bo`~Zjk7LqA0S12!IYfu3+46%U5qj zMmHqeZB*|Zi$k92K*#-4kG%ocF~GGPaTXKYmz8jj>s))Tw7p}b@H&(&&sk5@&JT+ElDk_NOqz3i3b8D z;BD*zDAf(i>LxU=W5PtBhCkuQ3(3^@b*Bx=ia#*vU0_xlLuKLhN?Hp%igcSwt4v74 zo45+|(tjhUWVPLah>W?xt1Bl58+dEN4mzYJ3(0BZKbrzPqdnqp!XR6bH&e7h-T1}F z9qASXpB(7X)mC&j%(XRhqf_77s(0|hfrRf3@n_<*7_}_?QXr!v)gUt$N~ctaYBG>9 zRT+gX2RWGO*eo-zmq5OhSR?+dx0t!t>_gK-_g&M=g{; z@lqViWGdpfvUj|?>GcD?askwhi|yZV>Sfam_?~n+;mp$8+_q6~>ksIwry|1eps=%J z?$nzOg!b4X;Th~!kdEm$wYrJ~Wy|f}3b{#%+dv5Mw|!41MpH@z$Y+6ws*0O|#x1!` z$*l=$(p!P$>!N91oa7*`d|Phe=FzP`bL!N|OD9jB!v55C_w|C#N;#hQr3gTZ1)pR| zWz}6_Vt|7QD!3zp4L&=#A3ANe1@CXo$yLaBA(`*wEas$^f*MP@D3)L?qv8?fR_ab* zCZi|?E(MDTcnGIbNtnx|G8FEtNNDw9r&h7~V5s+((l582%5P3KW8<15JC4j!A~Op~ z3TB(;Bx25xStG2?W`u88j6?7mk2P=cheF9v=rz7@*a(H%9aH3!0{1|uSn9ZDXyJ$h zfo6Me6eB(@?t&FFt!ZF$ldibt8xc3|#g~pqSToK=l9B!k1Q2l%4o;9>DnRY9+Ca8oOa%;NY#3{ywJ1({y9Qx73`XI$K0PrK>MS7c^}@ju=RJ<5Tc4RV=QX)> z!Q=0%CbgT`WFQrYR_4%TE(m{F{MFaE%IoG!b>IPs0p!=@%M>p8A^M`=AGRIBy%e5W zPB3RFxA^GEkDfgF(J!x5PM)mvF3H^nHBW0sw`;7)tu@xDgA0@QI9d?G;|^%Hy_!9G1c=ieh1w5UEIyurT~ z5qlgr1hYs<>sKY!3~No44gp^T78HMQm0W9Ig_aI)j5hv&!`H3r=@mLeyW{q|DaVJQ zix8WW^x$R`0P7%tR>1U5EN%eFA$-!Vhs?mfEkb~aOH3K!M^>6)g}wFX*`(rsuYh*Q z%-N91nN*LqNojF+W97oqO=zsaXM_Td)XMos(oi3dmfF#9G4S5(2{Bnc<;)nErx|^+ z*e)0|SuvGKj7)iE;L2NY?aQ7hjr&h}0wNPHkGrR*U9njiA5VPCm~QIo;*b)d0GH-Y zX$ZxNk_38s+wZ;x1~*=YK?P7DAom2~e!p+>Xe4s<)}!I@(JA08gr;6=uPvvO!9ZmhHqA?IcYi*-je= zX)aBZv}xK<&26jFEp{WeUDMQQmozEcHE%E3)-)~Eyy^DVZ?mqQ)b-P@%eJ-~yzl>c z4nR<%Y`5=)#O2`N;GE|?m;dGWzm5HT{`0}ZwX)Uk|NhLuAfLv*XFi-x!45Ug-~@t) zN1*FNhR?Ub4O87(K)6Dcobk+Xq4#8tFA#X5VGi2*TAFTu0?Sj-=#@5LrAh)q@%WsT}uSg%$YPfv$ezx#x7>%u$gLyG3> z*0=r*erU4=PblUogdBa8P7KZZ`lysQOZB{%yAX0lVpPwY^+oOgCG9FQyG`%Jq|R0( zx}$T4$`^5j3Z7WVQ<(MnToKI$4D?|$pS`vmlEO~FGxOl-n2AUq=M2u>Q;lqkp*kT@*bHCe&7Sa$s=C;)qDOl zas26zhfkl*C3dS7QW{;GIevUbCCke=F8}d~>E`_W{5wtnz!-WV*Rrr14E5x9{1J<^31*5Hs~j|5@trDlZKB_)0icMdMlNgU zI$Oxwv!3gOHFPNFO2w7}D#ZVl%f;DMKwA>97Tfi|zNId9B9$b|bgkqO1qJOy*Av?O zkV0W*`3Sx@4E=#>ij_?ZT+Con3I8kC1qX}66Dx=G`@39UUFni7Rl4<;v$OY{y=Qjz z`rL3X?sBn~`hAXM*5PuqIpDSO`ANY}&5w91H~6!8u;_0-Em_hE1X{F#D$!cqyk4y~ zB(_2|Bt1Zf%QwY|aAON|Z}X&ef@znop)Hib*OP*s4hlI8wN5~puoCII% z{5DRG6C9b%KO5`qgSVce)s&x#tZwLmABuoqJ5qyo<(Z2M^dR6`^?JDuWDHQf?l^zy z)Op8RorFB+Reia6=0_-9d`3=Wc%8@w5+#CUP%P=lRb0z)GZEjj`C?md7YQ51?F0 zkHgxucAe`dp=sk_{TiKMNy-h`PZRVfh=Jy~?G1Dg)pPHYj;V1iUyn~Yo_xWmxW58R z#d>!~9*d*n$$M|RFLSKU-?7Z8*?XV-s^f(EADX1}m3$=+-!tt5OOk}bz(&L(=!Uw3FM9T}9YJWO&E~7qjE_3cnw3C*Y z*E(@wc8$O0-FM4FJ(IsT&*Q#Bj;BtVgHArx`WeTm`o2>RA{y(bzWQLPa(c|xou$8e zwcT92EG(qSIDIrMmTKsd_K1O8O7dggs$(wke3M=irlmKOwdOdxHyUsKcH+(%i~Mnx zD(43$dZ&6PhH@3v`tPhIIM5f&n_9hcoHztc?kI#=K2_zEwNnvl`1Wk zlrQYdi`=3t9EWE}YG}r3_Y4?BrJjsu`*Ny2G(JA$@%cP`eThsa(PvqGgWoy(x|1QU<(3+Q!L!V()>CBzF&fGr05)oLm-_j40tK-0d*YV7rJNL84vrm3q zNg@wE>RosJ?1}7CUzau;K6f3vw%~E2tb(qAW%OB*W_1cAW687^OM|K#am>7SrE2{h zH9fZT@Zp_f(*y%=re!yx;D(mw%Oc_iM=27Kl2E3JXl@ za3n^JQ`ZdvTU0%#I23^wQ?!?XW)ez=)015(Z z`~Hc#jKwFVR&tNT5}ajZ&%h`DIHcmKKbRr#rF16=F1&^ zEdJmUD<(*1kAjOw;o)RE6VsfhM2C^Gt6-|5wXPgaW>h(o{N1Zp=iik2G!`IVqdnbJtUSnAPij^~O4Qh+2;Q<(Y}_ z$OO3@RK7GNU~nv<)FQPNA0Npj(}RUVFg&Qv#Zn0??GKKRS))N~Xlg?B=TqraT$~+8 ztx(?wYep5Ar=|&Q`cUkmA{rTE z9m`slr=V!CF=1uxr;wOof+!(S4W1@^xu;z<2I}!=9aK$dj7Cr~U;@Nr5|b41m9;j3 z(Ri9h*syr(bMaDc$}O1j`U8Aa1mBW4SZFIbSncQnY0r97@W9_6r!>eoGV#ywP>=uq zdb7FC?~QIKGVl$yd8O~RW}|=-U&#IFr@3FVE%X4786lNuC#GquNG+tqT+@hmlNfH1 zS}-$+L20dRR1!V=Ys}+M(}DolV4gnrq@p0fHFPKt+Ej5k#m#8jg%CcV$V{fvSbs-` z%w_zkp4QJixAr;fV^6HcQfc)m(j;GMyd(3AT%fZ4+yrl{%yPN3o}-2qr_j`NB_Pcd zr4licl6Zwk;Dkp83>L-QMQzlX%;21A^8T}wHOP%5JyUz9JjoIH@cR4DtMU`?@&#kz z)_R!4HS5TbxH77Awph$!4v-Je^_R>2)4hFu1j(?!uh+(`o6I>z%E&zuqCo~T#!U1< z%rVPlJYtWXKc@N>#-v7rcqb;n4D%xro#6xH}yF z1swxm=G7(56Id%!I}=_hde(}FUX5mh$cl=@NL;e#px~1ln-nTpKv9xf=Y|ZRZ9)@3 z3z1ArJr!l0e9BS3&#_$B0zP7XJ-3j^4jdfU3cwrB^c^E(;FI^>=UlG06^4|R8^~%s z;)(OMfvM9X2iaKVtj-dmbJa4E5&(2>*EDEEuYg(sX%KuE@g!B{76>YZgpQOvhJ?=llMj99gWo!S{J82F zJT!Lt^iVB1Ihm{t<%aT=+r|zJ?o_o8e(-~Q|NBFO2hW^7m`qMTJ)KO3a_Par#ZR!_ zjqE6Tdkn1;@6ajbp(un-(A;JrE*79X)$^@ijHt=hf7Pl70#CU09SO?Y*!XwPjz86} zBcWMi7sA$iSdiU3(@Wk5i;Rf7p-63wRYWY}ckLiE`rjkQ5JrmeV%bBr_9`b!4<%F! z{yUN{0)Y~9nYw!Qi)L#t66ub+94dz`H@}q6r_(uSWxBOIT^ZWHw7+SP_~wdbHsU`% zA%?k$A5Z60+MCaN({RO^=p9q7KUe9gJE8#(#LtXD6Z+?a3b8K9{U_1>xL!LUo;6a; z%vs2Ns)vw7@$Vq1k{Ee;k{;+-BiYdASJ5N1o#C>MElNt10(e@%B2$e{MYrhzAUSQT z)Td;Ta`Tp~4Z+b$o`O1i;X<`quU0RRP*-&Lb7SSVcqyBfh|FdSOIB#IGF_aykS|sj znmosF`8A6C(Z0ivPCHe6Bt1xc%RqhdGl*er-R9%0%eI#Q79WglQp!B#nUQipBC-$! zRr~eY6Hn9zKRP}*IR4T8H|=}ZcZP=cox0~;`_MyYi$6L$`=iB$?3*5V>Zzw5yXQ^z zdKccQqmqgRS=PW^;!<6mV*yHN^E^OFswUYPOI5Z0(M9IrB_wa zN7RQ7{OyAe{%xxD-Rd|o2Cu7dfNiv7EN@Zqg>3_=0 zOvTi#c)91QbLoL4r+(4hv8h{NT!L>RdTOZ|CtA<-73=)@{STdOZVbACSoV~g0t*R&A zY~~+D_%l4CsRHJ>qR1gNa4K`$iX8R`hw1)Y*ESi4u5Z+%=75+rbZ0vmc*Jvol@V2q zix=0g>e@-7lieY3prD&Q7xGQ<1r-*L?18lwwNasY$T~FV_Hu7h-%EPhoXmCOWyrQ( zEf}0q&Q;%XElx}wUHioKt=GdlXI1k(TgMZ-Tsw-UZ8*j620xBkLpXu4#QoPh`8(R> z2!LD;DQVIr(swqd>611am>5P?#d%@~GEsuFlb(goJm(iwkBw`tdxK9tnVFf%Jo#i$ zt##1NaL{|~j?BoNmgG*i?i|V7aZEB?w`qdt4<1dU@r9F&aSH&RXkMN|73M9{h!M(V z38~+;CM~ZokR!8|TA-?jG) z8BNJ{QIc7jLQ|@xFu!q0Emf-P^PaoMj~*Sr+cV$U`YBPr*B4Jj59D$OqQ{pOPsHw! ztrN5OEg5+V+Ayb)Q>iE5W*zCY(j{rX=pou)h&2{w!AdNWmO<1Hlk@kIwP#{tPcl86 z8JWFpKe-=n+uYfoZ|@|dOyBz~HNJP8z{9~b3d;W5IQoX2jygN_+-uVbskp(MP=-=) zv)pRR1jI;<7DF#qQ_nq@T0K`x+!rstYiP)(8vWI;9Xj;2%pc9po;Y~Wo*SG==&gwn z!SFiVW&YKfX`$oQy0N^Qq)BVXvd=x2J*IS;5?kxAUc6Iw-uYsCt#;0d9Bh2$jX4?i z&j}$Zb82-H=TM#BcbkyoY5P)Ld_lL9v@GH<)M;yxU@$prft2H&mR@f+sj~;eL;Hkg zU3A|&biR{fSo**TA(Dn#YJF2#>YPCP_39kQu~z3ooKDlf--YLscPKt5^ByjhD%8Y- zzn0oqj{Z>Plb@{oP_(_FR)6}DI}aVY^O2vn-_3emS6?QsL$Hk=h1P3a8jLtDD5ed; znkZ~`lTX+i~S zu_?h;1#Q)+Yo8#n+0xzFW0@S1D$zNcYuk+J5S~8hI@A^H^gjf(ik$^b9Px6;0&0Ut z3Y`e&)Lf{dwoIV2D@78BRQmgeRe4}hf?~q?ioC*=y642pJ*Clnet5?)+3CT}QDAx1 zYr)tY1yLFjZ<9C!)+X{Ih)bLkIRRum#UZD&g@R!u@77iQPU3NrXZXyg<*qFfIb!}3 z8J)NC+FI+H*vylX!pFzjv)iz)KB*DPqRG%LqKe1HOz0Zz<5ChPEanv_>M|TF1>6Ng zRI3mAr~3y34|eA33q}sbUz%i8E0PdOt@I~-c$RGe4eeAPt?QQ>jjL3A+%k^^4+B?W zqM3Qe^xFiy>Th_%na3VGqhB9;EZcc>cJkFvb?ujXWcG>fCGt@}v$032u}0Adk-SZk zB+)U&!KUgG6SCBjtK#g5*E^gEtLA7E|1qR`T?Gay$pXaekJTx8E&FGS8v?WT6Nu^3 zyj5};$h9QjxOmgRTm>yu!<#siDC-bkThy1djEsC6I+ThT^6c=%uP~*@Gnsc??LE45 zv{$WHL{z&m=43ZsQF7R~^BMly^y>@iI=!%|4Qy3`X29p zdGcerq>geFSBpjO!qERzJ+*HtcTB92p!S} zky#{WM(ndW@O;)SHzJhIQzCbk%vOkt)@7+UVM#bsyo%aTlN7@#Z1w6o(ogHJ31Rt2 z>(gqwoOPt5Qi`ZNTsl@s|8px;{)`nF>^<&Rk5yWK4Q5W+r%InCIZi93!#`eD)8u+z z>sOJ9_tyKuzj^|pyFIVObF7^qq{_wdz}2%#R;`3&&be4A&=E_CB-4~z6=YFF9#}Uk zcX_$ez{I{T->g$haAieIz;?f1S7*Vk651obJzs3hfcZ*4ixdyJ8gZ*0lM^s=@|{CN z?>wnrS2B;j?MNoL9b0MELju_60n>~ znBbrknMgEw9O0dd69tS;F{9kNu>I}D39g%(dcjn13-BScn4Rp;Ji4clAD(_c?@8;n zRNi?sZ|dCd57LlbrhfM29x2__O36{p{7Z*cZ5NilJ zNkE_x4}`Y!=H?UMs15foz2WFSHIW=nPMj>}7K;-HO3A^QOtv;QkRBf#m>&UuT6NDp z_rxWqRhmkL!V^B%P}Ea#5yDP@3al*UaEx(nkz2p3zK%TEClNhyCM5CMVuEMVvQj|T zn7#tN0Fg4ZbM$xZdU7nX(40&xe(n7EYby6tmp{r%?e+P`Vf=d0>5?%HIx>H&8v&AUBg{7;i`Dam5Xnn^0rdf){jou_ow ztF~+ZTzf-(!RZc7&f@GaK06t5JCVaLy#93;mHLANr;(!$l*km?El7c1gX%NZ1O8c+|>V0x1=`0>mX2NDk5Nn2)r+ z194R22mfeUytzzVG&yJS)#Z<5J1P}lCK=hR))K$-h*2F|>jw{(t(EZ9fOaM4ExaOW zSl40R=~95dQktxavKHGmM-T?|Zyo#rj9wGGLX1L+Jo-|a>in{@*5(ZRu^Z(ZcTbRt2}vYyZQ#U`20P&^ftEO~Nj3}}{R zpQwCPjkW$`-2S1Ox7#Pbk$QTPGfn5A!F{0X_YHN=LH~IF@WiinohMLvXwOU5K-snB ze8>Rw+aGCtpn#VsR4nH}ne>pH(Sa8bekJ-dX$bV^TG4#p{yg_bZs&}{G2?Wf#qC}; zJZEp(ql#|ltiv(OLG2B->T0;%r${pBI^}jZT-WS(d+!A|d)p7`D>J@=RqD7}Ffkm(Y?1L37I#+;Hp^|GAX>z*CoN77}IV$GJA?iNHmP9XQw=$FqzM(uYjA^ zC%jYH(V5v3op^ldn?J>O@Y5PCz%*Kao8ZDj)XmK2(S;7E<}A?W?xleQ#yT@7q~4ZR)$8 zX?;rWpSDORpzrtN-B)40==tcuK@pZG%$%76tO|$2208|$pH(%KemVo&$`2bQe|BVX zsjr;s{_u_6yOM$h{I>m0$#|6fx)3r?@o5lrXr zJQ`Ia4v)1vlXN6wi^W*5U!}{BOhuxP1>Sd}p?baE>2s6QKYG~dnmyzmr2)EcG+%Q< zt>_z_B~~T{lB;BiV$hHS=%<7Ro@Ll(a4FR`ow~qk|G_&vKir@41p+GP%S6GFQwd)% z9P00LPo2*fi*n2zebzuaIpFJc`MhDAnOUX-m9)3l<&XM<{_oF!sy$A2tr?-6dD>C~ z^?}=Ik&)cKCA-|Is3$l?6{HR+)zey^0xWZkfBDO(2d363j!-iViLZWtMhXaRc-(*T zr7!6qam?10W%?dGQp?Wb8!S~-J6=#SH)MhEWM;_9paS&#>*U3is1JvA9IeDpLiWuD;9W(mpSakR3!qL{RwT(o= zwpCBPzQCdQ0wT~8vuC%njbq2ro_6%qnK9cmrOi8T*?MjUwgP3w@~_rzZr}&Dzm;T} z8*K%cMS|V z-nP8_R)^!Q%YlGNUrMb7vdgblGKa_SmoM(;>oRFg*-who+)nGRcHexF>xgI62qRqJ z&gK3&H5Wsr!B8ujg>iNh%a}SAbwg{YiE=`z6N>}WG57iWHC@$e;q@yktM1tJfcc7o zDA7K5^nCuju4{Gg!g+Y0Js$0AqF{;kQ00O)S>&<|ND7;*oh3xODIll_&T)*B-FSgF zn`^&L?CIFjIpU@U+SkWbfn#VxyMNaO;efViIp{`*KecwX++5SxgGR*(R$6ON4Z_wM zadWiq|_JF{T4gH|X6|33{s_pgg%}#21 z3Gi#XI{;zGpB@)mCi7x%y_<0{40A`aW;A>oA@xwvsXM?Yx+`N{gxT5=}7} zdr|PGhLINEY?59Q=$P^PNqAY-`7jBeBp)UsCrO1Z`zx3EYQV*w>moA8VsB#{Od6E* z&$W|U_BwP@OY&N}{SL`?8S@A1ESMg4cCuhH1-j^hQ=|SpMX__;h%Pf=Qi#rmX0K|1 zr01&WJy(@Z`mgs;fo@H(0-0Ch3)d7Bk#h;#01yGRl)*P7QYL`tLXzoH;}SaCP;5Er z3$B6_Leb?dDV|Uv(8kx$f7P?gA{Kz5@P|Ak5`uU(2_6p3*Yr+k9+Xcsv+g}basFWliD;pA zCv{Eh+SR&6a=G=!%Jt=XeR;)#nv|1l^1*5nbYf(3(eZVDk8LYr8>+9F3oUAwx9)7L z8>LRa-dxQ(VC#sIK}&9lzWqz}P4#2gf&@jzmM^d;W+n{zGoz#T7w+d_zdzBnE&KSr zX|Kcr2`+Ci`KS%O6A3GzL{s~~uo&7df}m?c+d7CXv4XF59`P4?)$_Ejnz8zSqfHR{ zS8J2NI5)Maar3SHW6txH?apKLO5rI1BmsPFy8TBzQZ1cPt1TdY-jKDU-_@J(c#;*% zS;XYJ#f|m6Gvo7Gm8Aa0o)6!JHhxG@9_GQYl#f2CyeHL%KK*xpXU4nzy^kYwY5{ZD zPwoA!y+6gV?)y~Z!dJh#rjKXcz^`OJw|zzc+XeM7hPU~JA|vY}SV!tolDVKjkBYtJ zWqDOc3G~4&drf0mozPe^;|Q%cPcsK;iQutAx@xgrcc!9)N0Qk>+}&d+ak$>#7$kBN z5Ml}`QXiuY7^`YI+4KebV@E>nd3WfDXJ{7>D^S0T%x*b?VaU5Q3$$I~;3hlS6MUR( z&EwzWzSDg^xu#|H{wVl8Uvlh?yi0tpx8Ysg632}^tjR3ou?-(<$bMLv%q{L+e66(| zh=|>e1fyvYd<-IFHCDvYd<9R8mGX*IKjdRYwpTcbImZi}L!yE4SmGod7Z6;vb!;;+ zgCc@M%_?uZD|^@7*}Hi(dPT`!(H625wQ_a&?R;gvU6%CllFD6aoyy2UQopCKqgUbi z!PvJYNZcg_&;=%CufU|WIQIe@)=vdCt)yFV;Hq7@HaJSHp2q0lhK}nZ&aAO+8_6!M ztXu~lZ&D}=WRXD^t`+0{XHLH zjN~@OcIOee8-3fItd)>-p^bbR@nGEqQxw-E_RfuYz@w9KFmm>hc9qnt7~fFKMJ@3p zB~iSj149kqe#WG#12j=yh=UY;M%3rj0;oKyO;!L+oSpDlN9oas2ueQHagxcAWb)p? z_&_w0K{@Vs_d4S5gGKtIWAb8eOuIb;9=E(avGvfgl-EBoKR@C3&Mf6}OEX(OMFZZE z(a{m_ckK7Cd&pFFU|`(p^`4F7r{k8>RhYaGpi*cipNHV9aMXUk z?D2a4kf(}oJ?_Kd{SzTF;fE&n52Ul%^uX4Szn@O~2hs!nG=KI+fbydcr{lrNg3D?B zvn`+OIeSU{0#fh@a~AASyEft*PNzw=S@D%~()B5jVT=f4*N6A^@7R$&Rtjbotg*59 zO#1x!XUn0XTr@NkP5ARzUi+&bn9rtNWhX8WZy1lq&Ygdvb!qZ@=klW`NT^>9vDDgl zf1MWCb`>BY9;Ilh7%kz%zK&VtMRnoDo6IUbMxWWxyi#HVg*0^{1J&0*9~=yRJ`m7v zzHhg;^bSLJuTh`C=Ce2cS_uCQXDEFB^Pk^(mN0vSTyPJz4iTj9=E%t+(qPJ?^?x)= z{0c;^M8Lqx(oP*a&#V@euY@xmM+*GY*0>?jcjvPGdk^gG&*tv_!5k(Q9rmMAxq=Bp z*#JF=$Fu#1`m^ykxPV#5YBewOKxRY!Y<7IcL}JX0XRCFSate&(=mM&1w!c4%zPfO9 zv)G03czQ!!W<4W`flC=Z)QKvL>nDvBms}EY65dkK9!MViWby(VrqheoRAnk;?J4AD z!d58d^0?ky85?=RtBx7nzV)q#D$UE4dU~j=22&#m<(PT&XyoUT=wE*6KxOn|v8_tg z%UwNn>It6cIdv;7x#U4)lQb1$sj(8V&KRu#TEMMp1$TeHwCfu#*ObF?#_2rhbdI>(9J9ye z?|ppS=PiDgW4+rd-(OeW3_%TERV869^&>(L^!4TQk=y!)BYpY4dOpwV2f^{88DEue zN8~8FLdM}w$eH*_)*+l-{5BCEOC~k7_DYbzR}bEeDRui&D3pD8DF=e99yys^dN@n= z%{^zbdvd4MCzjaGp4*c>`H1okAI>hF9SVh(hKBZJjbHYkfTw>_OWv$@`zkm*=#!U3 zVx|AY>?3Kg#s9%vj5-xVp+acs%$e+&q3jFR(x9Av^Iw1zI%X?teWWvE&Idc{^H+P`MVTK z?@e>mSYSsw2ke>20DtDva-NCpzq-vo=6`E0w>O96X!pa4Y9c=YDPR>ahCpT`5)vkW zPQby6ni(rg?igOq8z+bL(k|cq_xpAoH*fvQI5%weubek5D4U!YIwkY!#b z#@XSPXLsK63ZUt?xQ6&k%XK#ILHY&CcB`JzzA7trgS$I@wrnfnH}ucT`T}NNuc(UY zcl#cg*}C^Ton$&lpH_^!riXOf?X#Aq_OyGb)8@)6_PcKIYwvf{T;n&deTqc)Y*&m! ziqWDh>^9*xC3R#=+#ON~g@BIQuHBIo;DcuHwR|j6w)z<(0SpZfKbTFYv(ZGN^#^O{ zR^SD^r5`sCeavJim#Tl*87H#oJxBJWvqQ%pIG)d@kMOhUg=yv6blJq3V?r5#_K!%# znTd`CvOTtf|B27p9MU7|jzxHZs6DJDj5;WXtgO_Sof6Q)f0=|+?+F~>jV%Q1SSKGCA?CuEKuFeU zG#7ljjRr&Z8m-Cfc

=C=tV{oq<$771*h8(@92m-V@BFQn{e{E~)G?2>pSLeWcP#PAIj5FVr6P@yX^ z#=Uq-@-R6uq9Jb-IdLS5RCy^_c(cIH8Neo;Q`TO~|M0fJ5}^1{e^2U_+ftsI%1uw_ zrZCG*y;6f(zui8H18q7ce)AHIE%leAeyS9`N5;mL!^BQ$wUKEj>_}u_R7%H}*H92ovE|9oo zkT6gr=^M;AEZbqZf~!qx)W*v_f<=_+Cc@}6ump(EtO#^*-Si0ImL|r_rlD)l24h$4 zv2)1iOfrJHl$X0x$k@kAy%PI)GNyL^wH>^3IBBBzr|m8+iwI^azK~h05YV8aEZ&k6 zWK1Zhc48L%w0#$~_6B=w`pwLNIm(oFW3SjO z=#0$@>K?o_OL9fM=GMZ$_sNpL+h(sprR+_Uw7*ZFlW>?zX$hKVpydzr$xl=8)tKHhyNf zL|Iz;t*<@v?6VK89e+lmgqsgN`z#yJ952g6Y0s0h^fa@tW)cxfU^@w3=`yc9 zcy`eu9BJp)n{RyKg*U2|wHIEnue;7Xil75j4>{D@-8avHF*%@gB7-{3s!Tezcur(goi{An%Ttu$wO7X2$ZytG>UR??sBk zbJ_R}CzWIxtJ}7EUH4OW;5+@-84rCQ5EBWKY;YS*`z~&{2eM~w31ldmnN)9kUrW1H zh3kX8ZXF@|@P;Zhl-*D0z_ke?(?)uHsXf#*f#Eql0IUYZ4#zVX+CE%^DZ^GJU zUQO5%mW+c;1*dKE!Wg=><8QjL?d}6_E2wgT_}wj$Hl@zIQa5zF?jk1E4R>eGZS!1_ z7bOA>Cel_eWCIol#_2?`6847UPgjDAXU+fx#iM_ftY+IATZ|Tx;4fQE{uMcwu5>or zxR%gWi33bSt9nc%U>8A+BVddFA<2P^B&w{77gtF--!V^p#kn}U+X<`G9&HjB*mgjt zCVUewNzx^)b$mdW3mS(KS#rAP2rFIWvmqR`Y_l?CvPMa{l=!p2+N;L>9JdzB=vk&) z5Tix%H~qplz-t>qnFpRAK<0xX-{XC5pX)$U{5h%RDV}#KAvI=aix6uzEs{rHwcqoM1>Vr|7y2{48b09t>oNp*TpuIdNVGfyD%7s??jV?yU;Z%5k zdEuz6`_8?A0o>}&O2$yVO?%f7!APtCBl2x+3ovQ3**X6jefJ9IcN+S#&G}b3%XX&+ zS-}_MwVpq2*8VoqF&28q;wk_Cxwg~Ohb7BoyV0X`Hk-V7Ih4w6G-a?2F!VqI5@db*KEOur+ ztDFsDdi2akN@L}lC1KBfRwds;7G(PC?}-)MocnD##}}pI2{k%MN#sPoEQL%m zFfl-Vi|jyZAdiP?_O|dqRu;qXV070zKhRzT8`9T=sRVs1rQXQju_F4%0t2zE;BNg1 z_i$1#iyaezwH|m zW!n0(`scK@AifFFo0HbJ4<+&gMgP9LgT;Zt$m{*F zk?ipB?zrFS_+M`rD)z_251os|GsXDD{eyjj2K`A}n@YK+g|vOK0%f8|$N%O1xs{jvk$N&EQo!>j6D$b4;C8O%6dl(;I}$*5oz z(a#CJMy2PZT5b^80k`V8DhXd!Wo}x{*2}*Jg~?YD9`v6&JvtHeHLyNksf<-$be(Cq zR^1oBubM3Lzn)C$xoF}e6FLS(w4rL-j00yGfyGv3y|Ktdi<6Yass}a(H!;ZGo+)Zb zhvB!up+~dXM~8xrvxLGUoeqwgnrf^9r^|YXYBD23cfQ@}eEXe4BS#+Y^p#*1$flco zevYM%rGv;aEEyK)b(_UM@U(kX`Oo{6epz)t-C^!;T`t>umA}0FR?aQ-rk!g?=PlC~ zZf-<`MvVh=Gg@eY#3D*o$zycp8K)#bsvsIrhoB+3#DHtc&S%avaUI|e31|_zD?l9j z4Q;-TZ0*#j)(*)lRwQ?*SQKpt3nhV0bB|F@VJ{b^=N1Xwv&h44LpQ`|zTiIRY+SwN2cynZ zUp&}Hc0{95YyN*~%Q|kmui6%akGIF>4nYy&$gj0mh>ya2YP^Vr8*fRO z`I-jrN4InPd$j?*mE&J$oK61htmMqoQfLYQv0L-qhfHs;MW%sZ0w~DUbuk@u2bT+R zWdQ~?c&K!M3UYtzx>l9Mp~uejgWOu-Vb3$@Pg|!DYlBYuu|=cUyy8vD#5?6Yb)8QR^ZR;8eX+?F({mO{#YVc23!?EzMESO;A-+i+=>;0c?V5g)hipIM_awOQ5#uL_M8w**=6v+ zTC_wI?B*G%m$%ZmZfpbqVy!ErR*+BT{^>{aTl^Q}bLO{J!Tg3IOXhe1$IRTj;X34; z(MADG#3lV3HB!sg+7I*Vdix{$JLg$bBeXZbHD!U9T(TrnZ_^2R)lTy^qTim^ubtnm zw|^&B#zd{jgLMb)Q&xY4hucS6I5bltL@JqLS^)AF`I zVrfB03O1OmLKVZaP>>{->=W-pkL&`*9>ZVJ+!`8?zC{^XaZQwWf!PcX{3q!LtJMdm z`wE4=>CTq&#-qtlnwGz}y>U+tt64z)>kjYUkRkE`04#Zp^Y zgK4Kp*RiR430-T`{6bI9gc8GzoWndz&>VTD(77a1P~O!>Yq?BLRsQ*FYJF=%zcK*{ z7!lG@-l#WMDveFrBm6qd=+v0dTmcjtf>2d&f0%RCUU&WcrN;Mvq4j%mg3tV-|1&G% z_M&ylcK#|b{F`%EZJV=dyL45$pE|j)O0>gx?4yfAT8t0BxCElHmbPTa+V%>rl50^& z*rKb{*|M*CN9@Gn(s7e6>%`*JQgA+3bc(r+JF_N=QDvT|Kw=9P7b! zL8b@hN->Y!om-zM#QsFHUxr)4TXSThcd9Z)6?SQt;Dg?-K>z=bxUAuEUh4fzV=C6==}^{_XbNGBp*-ue?^Z(g~a zy*_`hQ{uXTa(pg_OMTGi>v9+U2^>2M`LR2kzYrUUdcDyBBDgYrUTdYHzY5Cq|*dz8MbP}9{P2)MdB68 zf>g-m)moiaPtNwHECgw7hm^3|wJ(OT({*gzVz-hAbLOe!K!#Ka{S`YmB*_qF=0|71 znXonWQ*$GygRw;bZwWXTWE)V=LCh#&WkjgGBeE1h*gVbM!HI|=b#yR_p+eQfu-(Hk z_WkrQK2TUy<$_#F^Nlk2#!4B=e)KGDh3mjCzQb{YMA0&>Z5#uevN3-{Y=we~osYJP zg}Ge>nEuhQX9`zSL2=+Jp)=1q9M7KF`Owfv>e$Q?VKGPUc*wta;+|dpiy!j_0=|p9 zc-8QZ5w#SIE~-Ab*R!WjKkKMYW{Q)-fQ2L7xBtY6`&NEd1-$17qxPNi29(u5GSWZP z7qYAnRomJ&50Q1faQh+VU{7tnMwF~$thP`~YO*;N0c->kTd0;Kd|Uuo-RqzAf&MVr z-({tJ@;-L@gd=v>C+~_mPMq#yg=+z?D;#8L1j8;bi|k=FX;CXWI67`keyp1_3eRoF z5+QNlz!gPuv2*lky5zZ$JLU!k_6^kQyqNbJIpvqSzLR4#c4@GoUTyCgm1`1^vdQa4P@6{ie{DH}pF2?_})@0J_&3IP2?)u#vRPPc3{v@e$6MDDYaSs_IdS3n= zaUsmsd|4^iZ(#TD{b%hAjW$Huov8>*bX`SI%l_?(N2pCnm^{qR~CD~9v zR&HG(Xq=;Eo*0bcDmh!?P-r|#;~inpGg5M!s9vVE80DDIO!X9Vgmua?r9an29yFPg zJ6l!OFrG;%+>TPKUE8V=4wG(l| z)upQC>>!~WZ|~Z+?~0us+Z3rwosOgVY;X3R(ha(yk?UAGNYkPl_RC$JSGl3@CY%;c zOFDGZ&c9OMNv<(^<;K2~G41LsGomua+jZOPwscfAkxC_aZqs3=r|dpTMy7U5MdW4c zc;0%RnO2x}DlP8x-FEZrR$X<|JbR_SYU^?`|HW3f-Rx(E=@}K?cDmOKLqi35-gMoM zk+>nc`-r@Bc%EEG<};jRyHR=N8U4zG^h$I46^88AbNtrhhi3NbbKUMU(ht4bM1RVj zP_H=2t*+T*wBqkysSXN`9x|WWS?BCE% zWCOw1OhypsI;ZHEbnNrABgGf-%qFZ2jpMpyT@rK7C4FAAxgxkf5x{t|nQW7Fxk{aw zK}?f%U8h0wHM!>|R9muZi3fEw6(va;I2C!mc-EZQkK`H@*=~I*^V!|#DEDO6>aFXd zUH@5KJy^+ncJ)Uqj}`A3RFRqbn}IZK-AZcQ2E->xM`s8Kf#y=e!bR95Rrv~kzqFKH z+LPVGW9cvJx9w6rf4paYVf4ZFzUTA3!>$hF5 zNTgRe531hykDKk@1In4W@~@Ihb&5{&lWVz3^Q9bl8LYmqsd7HgyPRaVqjvz~XUy#i zMn;uuAmVaS?Jg8qTu8^GGq#K<{=jf^5=Ud38wTV78a;phd~3OR=P|)G5B%BMW1rD- z;$I^te%Ov81kI5yY>V@P>{MOo{%BuxDL(=Ce~R6?kmv zvFW9mt-IBS^>H53W4PT1s@dt*(q}mCg*|fIL4F%CyKVW}(SximI@gp~u9)8?6kK_- zKERLZeB&6YCBedGxTOTGbYd^-eQyap-uHay)A4(>91qSWE+(dWA9-9&E{Cb=>s$Y~ zk-snJK_c=Y$KIiRwdm~ZL8{L7s z9li(L0l(K7e9-H-+wBW@dh@RE>ph;c9yWW`{=XzV3cSLRbXvdTqjP?MG$>C|alZFaw3mtl zsbo}rHlGYc>Wi&Esuc6;eU<-QQi*tawL+bWN8fv&RJN_3Iz`OTrd(p^M3NTaFOI($ zeZ|;=Kbs8^MTQ|!UH)~~%ViR7OMVKFz22R@Wu9vGUv^=zfUl@kqT~(cW`~Q#(b@go z-h*5mJrSDN)N*fEjf1ACY_M6>V6&ZqqsGwz;fOM(bP=z%21ru{jeITpDuu(Ng(HR0 z!-ap)Mx8V*&Z3h?-Mo>rW&Jhov+sfX6 zEkNdMveSw1JLstVbl#{d`bcRH+AQsP3BI_Q|4DQY>M26HXq&*qqHqkOQn;7^ z;!rMLLhz=&s)@7u)8$|1we@>-SV+C~l2+cyq?`URfL=_~N0oTApRLzV^7e6TGM9x> zk*DfN?aGxJj&7T>-d*UPQL)W2_Y73i*(gEiB~BrNI&BS$Vj*!1WG`C_g4;wQKPm7H zD&_3Nv?m(!jEzh6jqx#0DC(J>__`>iJe2+Zu!>L1H)B~rEVEzfyUOY+P}yUd)?zmsqRZIHvCAUfCTJ~q`pM@y8o8-Aw|e=;JM;QY~o za>x%`-&E5VeiIGwiS{qml^cI2x^M|k1`lLm*t)-cU~Bo;yU)P&%vzSYP0|8NUve2S z_mzlJ0UBMun3bQ32Sw}m>}}06?R(=lIuLMJ+Xzd;3dnTxKucY*PjJI^;`BjvSYIYJ zObTB$W6lj|ir4@4zp2sRg{Uz`Mk#J#A7yp_+RRJZCN|pyYjvCpgF54)3ltfJjSQ17 z3o=b^Zb}JiM>X*y*ANb+C8`Tz2yUZUysssN6V5_-o3HKAfP=q}$ zZ;ykyK2-Ttu3nJ9Wmv?mudTBvP(NdvOA{|KIw&$G(@l63SCgE-QP4Z_K$5E?gz%3D zhC`6tCAs)51O)T!fNtvRnxp5jnb$^_<@PJbj$skLu)Hj(+6k#qb#sK=>}ounm!QV# zF$1+}dc?J^b8Ta96|_&PD2cU8{y}%?cKa2Gtl)w!2`XYgORlz^16m~#%lv|6u2)fF z#c%3Y%`;aQ7M5ukkA;Pnq?wZX-|af!U5(t*(CUS<4GXqg+>YhG4qqB%o^0YaJMreb zla@okB`MUFc31HH5p&rM%_kho7#8GqD6wJgpmQrAIPm_h_fe5vZqdIN+c(24UDqEa zEq?b+Nd(VzxgB}d<7v7*t?~=zuRRbt>dC}DF%8^$F35Nc*jkIps;8&g4fiBbGh_dl zJ4nZl-Kxp;bbPhbVp>b?t#(6og0c1}z{l))V`i+xmrVE6=>6?l`Wj}hI|nFYssEFgB# zO!Cu;yeP@yMWn%1)hxJ<6Nl-;*6&;lCtN2~@`Ni9zNoib*JRtW7nm%pn;M-T<%na) z_~q#O=4P`!V{N@l`w&RG4a&7mi$#5TZJpcQk*}dw^PNuI(w!ZQw>|!^JoY#Al|90* zIF7PZwM-+t4H-Bk_7sFV?9pcWV4~LHf*wBd6(7Um0&X#6)^|OHd^~CGt2p*g5A5#m zePkjt=`O19_#?gjy9cKCJ1YCEWISK+SdWATgN{<+Z}{LoHM?}*s_XuXxy4zv z?_jt$?TC9^iIO8Y7(!Z%%;cu%w~i36fx^?lNXxk&S7y{(^!baDcb5d{e=FAC7{&tChg=Xmox^Io7?1B z%fD&jYi0uf7keJp3F+KyQJaX_Q?@g4H`~>g4rUloI{fB75<>)5zin8VYHY0B#L8O# zt7YH+EBzQR|TRj{JeIL|w$%8BM!CpkHUyKws4 zb9m={D-KMgXsbIDOX_2F-^txW{lnukjSH>MV1=SwMcsd)f!T3pd^khywT?~GTyIw6 zW%`mO?WN`9GSF1vfi`-Q)mlAmfFX)tDuqTM$&`jNp)|^(39+4i+G33^C3d1aio6xZh>1%;0Six zLGSIJJlc;^yS&Zpj`*%v+RA%w_a3C9?D0A#TwWYf1P(pcY`mELiN@t>v+=KUYmLhs zgPclUHsL2>sCSvn&j)+%FYU>V4UdM0-Qnfl`zHLC`~lyP$3Gg*yCS4obM+0Jcb=Ny z2SMMU+gAt;yCVIuu)A+S_4HAI_3wKh`fxIka7C zdRLj>gj|CsZ~2WG_rK71TDu?q@qM7~8Sn>nyK^HIxzT=it~jD^py9l)th<0a(s$m^ zjYcy6*gG=1?q8^7d;DId&8kSlbU){ZEB&L+zJ5=>$OzEkuiOHg$7`%R28w(SSd&=- z1~p{R8TyhA{*mfRcpM>aOFjiS2}_1qw5aSboUBA|h{jXW#g{ZJAOS>8Sqk;rtUG5G zmxJY<;%~x)pfYbPpYM;w`Ze4g^aWbiw%KbDEH-z@U82I-;hnup73`>Mqz8uF@#GX1 zZZW_E6^uR>xk-c;Q_q)_1W8}e$S?N2rNuhA-MtA?LLx16>Do3e{rz+2vIh>lj%W7V zHf{MI`s=Lzx=l;hRfQ`9SQL>zh$z=K47|3dm8D6q0qhmi?Re@f$2| z!cRyf$BWp;w8J@q68CX^WhM6DfupmH#_Z7p55_2fQud5iR{zDnSgnkD%A$t}e)p&9 z{pwTnFVv4gtGP%KsCwS_zW25M8!zfpFWqxb=F4AZ8k=_hKfh*MmuhPMC{+ulSSR9x zg7232Z`rrN9f*-np4=Hv5oJ6WMoC0Y9Iw0)u1dz5#?Vfl<-x%*-^{MTU4zR!cg^_5 z27hnXcl-MyL$i1IXMR4c-@Y$AsB5x{FFyt0^;@O9Qg7(zYMn08ee$2wx71G{<$+2S zS$?nt@@axJx)U<1NvX*cC;OmT*m_B;jbx%cSzi3WVtKkUQ7%tacK^`s%49i_*f9PS z`gMI||DgHa96D8=m?%$`2lu}X2G>5$w1Ey^XMATB8*-8IWD4YIAWaB>GLQU)w^hVU|Nx zoKc%x0Scf&ciu%;CY+SsiX9Xg&u^yvG=g^?% zz)!^QK!jH!2Bcnv@#3?QfNegP$TfoNnt0LUh*ZTJ9?FMNnz!ITT^4{*UVc(O>L^4N zZ2e88a;aQiC6I1~1MS+1z8h*SZu_})mBh1D1eSSW=KsG@$MBZup+F?jf~3VPxbcp} zrXtB9bbpa%Bqa_(^Q3S)r2M_T$3K_~?Q%K1!Ch&g`Yc$>z3ubZc3AJlT3eGKg$qYKGrsiFjmaG~m&ONA=chzHzRR&kh{A=g^x-nl+ux+H*zlHzehvBySO3PovwD z1Q}48xJMP#WffPBx#1US1<6nNAZkbTg3os;CnYL38jZ8)0fL^FJ2L(yQ1b&!Nodp9 zXbEE;xEYg>xd+FR&j=VLG60hbnWZJJ%4i|h+(JqWe@xhtB$?)sb0pP9e`2`xcm0F0 z2)gj}(;v%>Kjd(@!b@XeswcSa?REM*jzHl4Ugdvl$mR6=UG5JDd{jfoyHz4|nldY?H<@aA+FvxZX-!?k2=nWFxB@_>Ohhb52ZSaP@ zyW>iZp9|&a$QOyxgM^Oc>x3Ov$>}Iw8qoiG-RGW)hN8_rlEFfZso4_7~pDAa{ zJPuT{6&^Jx-Ku-CFBG!EeI{n`8ow%$z`x1Y2R09us63GYTCBHsLy4JF@x3gmu!E$p zSsg>KMJ52vti!G`A#0C0B(RX4LriUt?DE86Pv}5lbq-y_>kZ90hk`?qXfB$VN%RL7 zYiexwKHq#*jm?bi4EdwU-cZ;b?DvKuj?q3V?+SRXyZmZ!*fpr8f_;wOMC{Z=Iq7q` zT)9;Lv_qvsp(DGCj$Oy9L%SWS91SJYA7$LkFg1C=~;%IM+3 zLxU1O2IUZNxuPWXjqSOQcrD^~)RcOr{00asVdQMw*-mdHL76Rlt;nsz*2|oi@zk`@ zi3RNZkd40!+9aiZPYVCRyJA=BQP60xZ&CotN)p z!Lm(`-ep7TvRs_B;U#TT7tStrL!m7R(pqV>86pW8Orgu-LnaXos1=f{8zn>a;KvcT zAdaQ^nw8BQ`ZN`$szpJ+RB-aR^MqP+JazI?B66X>LVe|QGMC9#%^{yf^S)HbPaf}! zGHr}5Kwe|X;i&WG;1(<_P~(}h$V?uAnkY3|(^-*7_e%LnU1%9oS+i|QvEn4mLvp9l z2GkDtca!s*b@Ltd5qQ9no|8I*heYAk05G&6lDtV;KF1~?0D`!+3Ok&u0bQaiVV4tf zxC56RTE#+3xH}O_opp}7ZpKFa-q@w3NW8y)tY10ufsm4oP$2J+jsAFK=~B_-_j|wO z3it!AR{`Lwonc*!}Se=~f+ZG|{xJY=~q4C|8*IF}BuDNoSz zC3wCYqO}-uyOkxUX+NF{NSgG3egER?<%W_;?lt6dQqLg_Gu;pbxNn3|VS!pYWwUcL zJsWjZu5XO(?;nWclp7!D-#?ZrMFtXk69bV_Dq>k#%c8i)+S)OdNe_sF??5_pNcBbf z6N&yv-{C|y!J~`c^yxLkMZ=Cn*0E!+V}1-rxvCC}#9iShvd5Q?@5$%)n73oc>c`5f zm(~5b&Mx`pS#tR|r6{z>rr%OOhfj$3W8Bm8V9&Xp@6~J6j7A3+)b^5yi6xV~9!WPh zFB{BvEe4c8@p*)i4i@HgpqUOd)l@6B(1EI-RGN z-w4IRK?iOep`_D|$I+0}5pnwm9FBdtp-C0$cR8YJ*y(g7U9e8Kvo{cmg}feuKSp-O zJ^K-MN!k5Qd1D^=Lw;AEOZh|Uf}Fa~?~)7k1&TzzIGr;Mr?=1Rp&H(jQ)PVaghM!g zTm=IjUqt2VE|c%*kbE2z|`$cZTo|bo%Mf&U|@{*)mD) zV9AwEFEKq>mOxW;OctTl5C?2*2o5tUDS>(ThUhF#5;y}kfyN~pZYTvo9_rj(M>FZ{ zy*qNG4&8NNnc3oWxILcUT5s>}-XEXXp}yzHq>3pXlM1Te8%?N3)yX~8yZuvBPEYN= z#C&$o$%WY+gJVJEa5@~=?xrorCxX-2iJhnLlJuym*9|#q%K_vp)VjW88ytljIp>_6 z$j*h9tKd&kYUk#%6x;~+`6u;Mfp19+ifGYcN$?=Xc7(y zG9Uk5eNDX&S|-|3I})4lbe&og;lqPCQsNVgyYpNE3(A_mNbBXLrLXOIKAR&+cQzZb zpJ*R1%eMUWsh($+eq+zqa=GkXd^~19?R$r(h>u$L)forFvhat{_Ru+`6&4*&i|5)E zVOHjan&uL1v9+WNVHIk5efhd*UMBwI8h#Jm*Vxnw0pLXg>tu7pYe>QcyRVn(x;DzE z(ezs8{m<4~%{AgY8vJckD)P2XTQ=KMHLVgpb`2gPF+qtQS_!!}6rjeuHESHY#)gg+ zMF~(nM#N4bjr-o?;{hiF!*UMaefKb75u}bm0H4mDW%rpccsyS?Q$IC7WP>`{GW%ck=M~>=-BnpL4m?lb>~aK8I*K9JzQQJQ8#ST;Z@Q;0TU{FI%LDFWIpg_u%#$gPdIl=@8f|-vem!mrZx@nd;rL`R4D=ok=~H|z zbIfb~^+A~m!PheeLNg7{ zYOH;Bt?L?*m~dxwfv^T!J1veg;cBLBtmA!-wp0v5H%lHfKajLDoliS=9=-xl&~Etm z)nku_Ew^r{KNjuHteUoeTyChpe|^t`5fTXZMIQXPzDZdsXP#;OdVS?sg61mMQ0(lQ zeK&l^O^N+t@}&w5Rh;eS_%Ly(sCblH0p? zW)JD9W*+`=E`wizSDfYU`8f)SP*~h5 z+<-bZO|+MJ4SB}htCw*C;JLN&UOu2p8z89}v z-O7sUohaR@B?%gf_y-fQSRym)PX+>3Kwgu6Hh8UP0mc+)7yF`Ffu8e`o9B z$0%!<$Ytg)IcDsw&W^K~c*1pg;ZVj&b>_0*O(K-bwHO28BU&k=4KkT=-UK8@CIYGj z4X`&>NgJ@jm5`R~4bCaJfLY&t+^J;Tm6OV=xI73vVNPiF@v0hE>-@Ltw#&*k8%Y<@;cs8oBA1YiO4`AmuMM?sl{cP@zd(Ep|}6my!{V# zS0a;1w0@D-FTtsq#rpN7ZiMqi`+$TTTy7u2fwX6n9vDCMjI2HJE-A?v%Dagd5++Sk za6_aa?U}Bs$Bw;-8)~`yQE7!~%ky2$_|)v|>_+3tYrMWxR5Z1$<+`uX2Qt4fqDzEV zfdM^vi%tL?633r9S#URQ)r6ysH^{WpvD)pizs#y1kr~BQLK-r!V-h4Kb$^&yBwJ?# zmprv`o2xHybo8K`w1gAUSZwLR$ZhJ-t}D9^{Xw}N`pZy#BQ_j*d+I5d$9Z?)XfKrh z_BUq6#xigGIF&laAid_ALTh^Ac!B`VQQNVrkHu@DGx!KPBX1b-4~&wD&_E{T(Sgdm zGGnUduRlFEH#ZvDJ7F-FiM^3g>*Tx%Uzk71aN9DN!PxtI&KUmM9?y6(f|`Tqvez-k zRAY-r3MhdMf&1~_5Rf_SK#=&~mAwbNTt)dmoO7mbzcmRZAqWH^E`(G-#h?fxqJn}2 z7546)ySv$PmOZ<-M8$}xh>D_uy?0Pl>=i`CjumX!J7CAI_?^51L_X8PCle zyKVyxcJwvlD4BbIHCf=HR%xZytS#KUZek*}Zf4Cqyc&3PgoSnKh7|_-C?h1C@d(*DWY8bl^r{Fy`(4ePs zeH@{`31$H^2W)HsMOeYU{h$CgP@-XLwwj;!0?o1ZBrrl7vl<)|^4v6b$V}&?I9mi~ zHqQ*i*~eK~C)kkDx$PS^Y)`LVd&#Mr)*O8BnoXx(a=8^|>>R*b$c9BS0H_j01+BDO z(fX%Nl=erIhzQzqKM?dbX34q^zkdh<2TF(I$?$#<@G+Yfyts&eMG1Gu`>lIJ$B2>{zuwyyEvy4dJ2~)6fHj5C@3e zb)bo(E>xWIb#x(sYjt3992n=WU%#_Uon?Lle5$*1{khi#=)mACJ8UU8dVAOJ#K7G~ z!N|Aab5ZQL+uRvO?#NAi+>mF{dAQqGowDk5n#1TkC%U- zLQZFCYXAg;Bj`7?j<)IqR@X+-k+$p%8oPJn1mYbjNL91x?VHf9)TZre>~CG2+5za^ zo9@Jslh~5=A?xb6D1Fd$IF0i;Hr;N1Q#y+;q2HM{e%50>1a}Rl#ok?(X>Uy7l;9~n zpv81n(WKcO>Xic60h~d=d|hov?hLZ^$Z4pzV;eQw*j-TW%&s$nw^ z)ZYCy*C?G^x9l{2RO2^B_gjtbi2Epa2J_JyNqF1{QN!vX|Icrn*!L5^OOq{=O0C_P z-LL_aat+JQ3{i(4mYpHg;da{n|Lu<(K}vb1Fts*+s{I?Is@uLZj@DvY4$+_%W{ic`MAes%x&H($|n) zj5SE@Ao@W2@Hd(07EI86Vuf+i3YH%Umk@UL6EjQ#^U9cEa8Yyi*WT^NUU-vTMuR;? zq$pfBa7j+BJ%5AQd2`VUm*hxa4Qbf^+c)MO#cbL^G4;(eCq5l^6B`Zj)4&l|8j%op#$IuGMv`1`J1=k4Ri zvV0cY9g}FB^OL;_bAsYt#=miu(JKa10AGkS&fGCmV%JSK&FVg`Xy0(3Pd!t8pb|EsX#)-KK6iOR`#;i=^HoB?A)+n z=gh{9r?=SN&5Ij%pS0r7ClE|d;`o9?kGbN4O(*R}trM$mv9;qm>)!+!O#w1* z#n;Tja$?gQ=@VR?UTtqUvmCdRbE9g% zS?caLZ@2bRkHJkB< zPB-2im3zn4dcDrc#~(lM@W++o)~d6?Lwc*CRozu}q?)TXzz-kcm!9jZs;k<7&RkVq z6(g0bIv4orsy@n;Q2PJ=-2c7g`KBH8ZhGSejOcOLJ@$Wp{tP_dHg(u;8DS& zgL8s&gU1AqrCn_Z`hR@zgy4z61;LYoCkIanE(|UTO2J%EhKnr<=7VZb3+lmcM71@8 zR?rUOpc7mibb}=51^r+lSPYheUKG4IxGH!_@Y3LA!PU@;ULL$6cxCXa;MKuvg4YJG3to>{r8fp| z3f_!gHh63Bw&3l-JA!ux*FtxASMcuOde|)A8@w;LA$WiAf#8EU$>zhsM}m(A9}7Mn zd;;f%ek!;TQ6`@bZVo;Zd=|d8TM!`kh2V?9m#`1`E5TQTTZ69!Uk|t zejVaZ!JmV_1os4g4gMDVJ@^OC!T4A3@8Cbde}j92|Ani<04EHx5IS%uLlx>U72@2C zFdOE=d{_u4!pU$doDOHg*>H8ZCR`gH6doKN5*`|^3)hE-g&V@d!~29sghz%)g&V`8 z!~2HEgvW-P!uy5A@VM~!aC3MIIO2ZRp{PYE9s?g~#0 z9~?d;JS}`^czSq7_^|NI@ZsTE;UmJc!$*dX3LhPw6P_DBCVXsoUU+`^xbX4e6T&Bk z7lcm=pBz3VyfC~dEQNDnIjn?HI3HHST38QvhmEiqw!(H8hn?`^up1^}FYJd4;bOQH zE{A)!pgwGFO5WX__=I|}yTf?`7Zx7!QzB9Zw zye@oK`0nuf@IB#s!}o!~d~WEMOsH3`bNl$rRHp#nLRpvMk5)tiUGNB%5N> zY=+IU)ocx0%MM}(vqRXSY#m$A4r3eG;p{%_2zDe+=Ge%NX7^>suw&UKc0X2R$Fbwt zW_AMG0+;nRww>)@JK2fsBz7{pKYIXsAUlOU2q$`+${x%f!cM~vUZ2j+U=L$wvWK&? z*dy5446!%t(d-;{E_)1nEIW^#&mPAf&z``Z$Sz<{VozpIVHdKCSc%QCGOMtN&9f@2 zu{zt$8m!4$tj%K9VHdM5OIVNf*#cW+OKh3#VNYdGV^3$7uxGHn?3wIR_AGW8dp3Ix zdoH`2J&#?%p3h#uUdXOwFJdodSFx9{m$H|!tJyW|`Uy+>?`c6>{j+Q_I36R_D%LJ_HA|> zyPbW9eV2WYeV_e+-NAmye#Cyve!_mre#U;ze!+gpe#L&xe#3st?qqkdyV>v9@7W*N zAK9PSpV?p7J?yXSZ|v{vAMBs(U+mxPKkUEkUiLq}iU&O8jB_ryFSKM7$H_va7b59Fut2k~9}RQ_Q85PlkeC_kN_ z!5_xYToqw|JY!yu&Z%U7qkB@ACz|$d~vs-@~8EpT?igFX7MNd-*f@ zrTkg^GX8A-9R6H>Ie#9%fbrzn_1Ae~^EO zf0%!Sf0TcWf1H1Uf0BQS-^g#`pXN97&+yOk&+%LM=lK`-7x|a?m-$!tSNW~{Yy9i{ z8~mI6Tm0MnHhw$*4*xFy9{)c70l$O)kpGDPnE!dzXod1IVlK+bTn*WCXmfy+m z;&=1k@!#`5@IUfD@jvsw@O$`Q`QP~8`9JtS`M>zT`G5F-`MvyqVwDJRCM^>jQH4?{ zp+!ohMMh*rPUJ-a@j8=Y3MX#Oh*`w=tPyL)LE>O>h&WWN6YIrcVuLtb+(#TCjuc0U zjpAr=UvZ2$R%{aY6Gd^HI9_ZPCx|U#tJo&CiydO8I8mG=P8RnU4-gL&r-%oMUHH+_ z2aAV@)5Jr?>EaCWFma}MxHwBZ0+!21ibsh@i*v-e;xXc};yiJ_c$|2=c!GGMxIjEf zJXt(NTqrIQB{3(;q9P(OFRG#@>SDKOh^AlOp_=xzZ_?Y;(_=NbR_>{O&+$26NZWf;rpB0}Iw}{V+FNiOSFNrUU zuZXXTTgBJJ*Tpx)H^sNax5aJZcJUqYUGY8feenZvhxnoRk@&IriTJ7bnfST*h4`iT zmH4&zjrgs&Q`{x)7QYj}7k?0c6n_$b7Jm`X?e5!jQp(poV-PT zUVcG-QGQ8&S$;)+Ro*JUCciGfA-^fVCBH3ilef$7$nVPU$?wY_$UEc@<&Wf#O^&tI$7OcJwQEBouVG3cBxae=c!>bdH2^*nWjdcJyr zdZD^fy-2-SU8P>4UaDTEu2$Emm#bH(SE^U3SF6{k*Q(d4*Q+x+OH>UQ-V^Mby?pD83zgK@ye^h@`e^!4{_o%N~d*3XLU~Jbpa8XlX^-|>lr<( zSL-!;tv*N}tPjzL>UDa(K1^@WhwJ<3BlMB_D7{f1t?#Rk(Z}jd`hL2okJHEN&H4nr zMQ_#H^me^N@6;#ilk~~@{`vv>f%+8vAiYbUsvoQ$qEFKg)u-z-^uzR-`r-O4{Rn-w zex!bsezZPEpQ|6EAFI#P=j+Gm$LlBPC+Z9Ilk}7IQ}l)UB3;sRx~wZY((}5iYr3v? z>xORXmTv19zh`~1?&?JMbYCy%MZKh#^&b6H{WSe_eTjaC-m9OfFV)Y|m+5Eg=ji9^ z%k}g075e%51^R{hO8p}JVttiz9 zq~EOHqTj0Drr)mLq2H;m)z|5F>38ev^?USt_51V<`u+L?`h)sI`osDo`lI?|`s4Z& z`jh%o`bK?|{eAiLFX_UfHxwAPpR2;YL)eKI=DelmEq`?|q* z#PjomJogRMH}vI2dT{Uw-KZ5WL<2C1O5Jj8P&Db4x+3n*)qBGdi}hZ)CQFsw{iIhY z)w@O5-zs(bwy2v1JXeBoEN*KgJIzuXW8xA;G)h@uS(IR{Yh}!}=sJ}!MgQF?n}tWx zHbt$*Q*-?muIObHz_o}0%i5G3jGP7Ha<5dS-Zq6?58%O0t%TyZ&PBa?xzv=UR%uV% zp0u}Oxf%B>m2Q0@N|jo3uqd|6lsO0&-Fl^p zp0t_8q}Q+1V^Qj0RI}z|lU*Q@)%-(;)P5wv=U3aWR`&u)$J52w(K{9FE(lsNwqkZh!VoQ#Eg0FSM zKF_Ua>{!JktsSd)1n(=(+lqS_7y6>Y5HxMk7VdXkxqiof2hC1Q6@Vj+J#>Fa|Dtu{ znJbz;$zP?l`N$Q||?Os^wrAxhDsa$JCZO|NA({pj$(4{^tvHDWRB>J6Z zT&f@&tO$;SMO|7b_Uf&u%jZgS%V}C(bNy}=i=UE7r&Nyel)^W5ql6wp!FEH(G@@R{-q4h0Gw0I%HbJPY2TuvT-Q0^OY#t=H z43k@j$!){r_F;0zFu8M>JaL#jX)|7IUt!4YgonztQnv~kHM0_drfir2QnzS)Auhc(Rx9xhU$Yxu`~r2S5|!jSF$ktW8*XBxL|`?2Qan;Q9Wqe zC-q8{ars1ueY%al!3UV<&_F8Y>of$~14(bW8Tn>_nxlp084`9$h*ER$BF3P~AdI2d zQnB18a*%?663v%EuL^^d?WU!(;kMcl)|pYjFFrKNl&E*>3B7|J z?v%Q{WeCrh+YZwO6__4L`=_Z5^h9D*7ymZHpYb8>$}%nyE0?;cs0&%x@G?APR2!mC zQ3a#eEiRUl8omJ1Ne|=S?V%=UAZ}@+CIB=BQ#9p^5Unkbz`~{CNey)*HDZ0J8VNtJ z7Tr&1P9-!%Nsm-2`(C^*={2cw=yPy_P7P~za*!%IZKE*6KnAFn^Fz3T*)%Z(>!ya0 zd@S6?)G(hw8n+RYC&HOBt@rsl+JdQHgC+<0q!!1`6ft@zE8X&hPemn~C+)~(L3SzF ztQzF1xY{kX(iR>m)Tu|ptOYy-Et?2l-lT}6m^Cvy4mxRn-F~rtTvo5hb;E_`;2l&m zk>jW`EM{S^NvtU5(7y6DE3;kgBY3CS+YdNwSbhxe>sz~TzHQEi17-LpF(CM!sB0(| zeOwFU)GRJWrB2+Q2D|`u5b9SStlMZ|D{;gaW>%ClWO8x^vfrV1x#||%1Ar>X`5f~k zhS-+tcVxNNhx(c+*OPLLR?S6Ayj<^r1U2g&)8@%Rs^|0|seg;_uKW-~gi#XMSr&%&qD>^ufM};}Y94D)+ho1%axu^uiy|9IkDg30+v#cv zp-=fYW^JBTd(mntXaQd$XOYg7;~;0qn6-Hh@=xF^Pz`kHQitp>)QEnCn$-u6KAc`k zX=A6N(f~Zir56BnGZtNBp!s=^arJZ{QTC>7u1WiRSGVQXX;NE20lKB-j7iRQq2naE zK^n4TVhcsE)HNqfMimqrf&$dOQv2Y2Fh!X4OyRuAYLX;CCD)9DD~h$_o_%VyDK-E- zGng=FFc0W+wJ3=a+uo!{l5@&r!gQ1LhQ2MGdFT=bD48$%k^djbq z6vTqN`zeg38oY;n-=SX|o+kF}7_?6rGm?Wc2J&Ur`X@az@fm}LxZ$1g1&KlVLQ?}| zHzuX{%!as8rv}528g*GYUd)ss{MFF{va5}x2mF0v z6iEs_FT+xmq6=(vQIt0+h=dhncA}gCJ8>7Sse{H)F>BmTBb_9~cN2QXC5zQgA^o$YnMyQY0{2@z4*E7{9NL(rUD}xQqpq%$dL_s= zQQjwtMv2c2KqCTMb1X)@Qv~UX^CK`;Ltzwz1~XBK%JmjlCGH?cNi;yz+ZG`!5wrok z)Z9EB5deFoR3%CpMx@G6icDRtQaR_-y?7BCaRs_}y_uvd(E@3iU>6FyX$xj^O>dyJ zBrElDR6N1nw%FTNd)sDj+wE;fx>AQgPS2pidO~6nNC+}9Ns_$1`M%VZ`a+$;T(dqw zlbTi9iLAs}OzlD??j^+$ozcKvuhX7Y@JhE-Ezo7GEWy64Lhd36NXFgiMH-g$xj6_N zS)U-RfWfUDp?nO+za%T&eg}Gb1?C1_>9^*{W+5QR_i8C~C1I3Du&j%SqHQNJ2n(jm zXuwE%%nvcp4kB&AxGN$e7in`Xl1`s8p26DU#=4U=#T|py2Iy4gEfxuS zWx-;J3K$wTy#l5(vla(CFuupmY+&vCiFDgHF2FbwTO{0=t`{gpRoIs=wVKqUEh^O_ zd8R{6w<#J}2?*q#dWD28*KjIBpk?0Fm?7lL_(z;|1N}rJY@|WF5e%Fz^YIdZq{d;_ ztmf%rWl&=rF`$=4Mgc#s$QoKLqS0_|fnXTOz0R0ZYiXdMHIuz2Ws@{lO{z)O9C~9? zGfDfgSTMaVDyqY+U_D%ThXstGLC!ZZ$(QMd;gNxHJeH7l{M3w<*k=qo1nmvfIe z`;UXHl+Nel81o4iTKm+^l=L=D06lWv;v;PWosDT!YGO>#T!({|w-xnJrVDBU=7TL5 z#WH4Y)SVf_k$bp4zdSjHB;{;s3}X~UwBOW5{vNc+q~TaEb^X&;*2dhV#+hu48eVT- z>`Pf3y<;3hc256RTgJQ<-(;$)MX-Q%izlprx2%A-u7J0#fVZ!JcdQ<--^&;N3*2iB zv0qWtOCBqVb|7_Dd{OcxL-6&ru0Z=5FdNJ_)?pB?mwkQ2HjCti!aDY&)`VfEXbqoH z@y z$iJTm7L>$VH||$!hx!7eNIy~i8nEaaLSr=$mzol>`pFEZ& z#A6f1BIivgLC)TaH0`6x%oyaVm>fq!{7lcoSdBi2BCOd#vPdjn&-dF#a8y;;Lpu;k z+}(FhdV41)lwgVR~0%^Ggk#K!ZMkM+|-OR4x;qbNZMt46sSi#vDu

YP+mSoyJ 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 UF${6<6sghVORY|aen0vD14G(^TmS$7 literal 0 HcmV?d00001 diff --git a/assets/admin/fonts/materialdesignicons.woff b/assets/admin/fonts/materialdesignicons.woff new file mode 100644 index 0000000000000000000000000000000000000000..56b9a358a8648a69cedc922150ecb337aa41dd6f GIT binary patch literal 144072 zcmV)kK%l>OPew)n0RR910y4+|3IG5A1a`~-0RR91000000000000000000000000_ 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ʜ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 lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + + level: function (color2) { + var contrastRatio = this.contrast(color2); + if (contrastRatio >= 7.1) { + return 'AAA'; + } + + return (contrastRatio >= 4.5) ? 'AA' : ''; + }, + + dark: function () { + // YIQ equation from http://24ways.org/2010/calculating-color-contrast + var rgb = this.values.rgb; + var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; + return yiq < 128; + }, + + light: function () { + return !this.dark(); + }, + + negate: function () { + var rgb = []; + for (var i = 0; i < 3; i++) { + rgb[i] = 255 - this.values.rgb[i]; + } + this.setValues('rgb', rgb); + return this; + }, + + lighten: function (ratio) { + var hsl = this.values.hsl; + hsl[2] += hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + darken: function (ratio) { + var hsl = this.values.hsl; + hsl[2] -= hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + saturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] += hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + desaturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] -= hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + whiten: function (ratio) { + var hwb = this.values.hwb; + hwb[1] += hwb[1] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + blacken: function (ratio) { + var hwb = this.values.hwb; + hwb[2] += hwb[2] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + greyscale: function () { + var rgb = this.values.rgb; + // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale + var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + this.setValues('rgb', [val, val, val]); + return this; + }, + + clearer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha - (alpha * ratio)); + return this; + }, + + opaquer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha + (alpha * ratio)); + return this; + }, + + rotate: function (degrees) { + var hsl = this.values.hsl; + var hue = (hsl[0] + degrees) % 360; + hsl[0] = hue < 0 ? 360 + hue : hue; + this.setValues('hsl', hsl); + return this; + }, + + /** + * Ported from sass implementation in C + * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 + */ + mix: function (mixinColor, weight) { + var color1 = this; + var color2 = mixinColor; + var p = weight === undefined ? 0.5 : weight; + + var w = 2 * p - 1; + var a = color1.alpha() - color2.alpha(); + + var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + return this + .rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue() + ) + .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); + }, + + toJSON: function () { + return this.rgb(); + }, + + clone: function () { + // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, + // making the final build way to big to embed in Chart.js. So let's do it manually, + // assuming that values to clone are 1 dimension arrays containing only numbers, + // except 'alpha' which is a number. + var result = new Color(); + var source = this.values; + var target = result.values; + var value, type; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + value = source[prop]; + type = ({}).toString.call(value); + if (type === '[object Array]') { + target[prop] = value.slice(0); + } else if (type === '[object Number]') { + target[prop] = value; + } else { + console.error('unexpected color value:', value); + } + } + } + + return result; + } +}; + +Color.prototype.spaces = { + rgb: ['red', 'green', 'blue'], + hsl: ['hue', 'saturation', 'lightness'], + hsv: ['hue', 'saturation', 'value'], + hwb: ['hue', 'whiteness', 'blackness'], + cmyk: ['cyan', 'magenta', 'yellow', 'black'] +}; + +Color.prototype.maxes = { + rgb: [255, 255, 255], + hsl: [360, 100, 100], + hsv: [360, 100, 100], + hwb: [360, 100, 100], + cmyk: [100, 100, 100, 100] +}; + +Color.prototype.getValues = function (space) { + var values = this.values; + var vals = {}; + + for (var i = 0; i < space.length; i++) { + vals[space.charAt(i)] = values[space][i]; + } + + if (values.alpha !== 1) { + vals.a = values.alpha; + } + + // {r: 255, g: 255, b: 255, a: 0.4} + return vals; +}; + +Color.prototype.setValues = function (space, vals) { + var values = this.values; + var spaces = this.spaces; + var maxes = this.maxes; + var alpha = 1; + var i; + + this.valid = true; + + if (space === 'alpha') { + alpha = vals; + } else if (vals.length) { + // [10, 10, 10] + values[space] = vals.slice(0, space.length); + alpha = vals[space.length]; + } else if (vals[space.charAt(0)] !== undefined) { + // {r: 10, g: 10, b: 10} + for (i = 0; i < space.length; i++) { + values[space][i] = vals[space.charAt(i)]; + } + + alpha = vals.a; + } else if (vals[spaces[space][0]] !== undefined) { + // {red: 10, green: 10, blue: 10} + var chans = spaces[space]; + + for (i = 0; i < space.length; i++) { + values[space][i] = vals[chans[i]]; + } + + alpha = vals.alpha; + } + + values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); + + if (space === 'alpha') { + return false; + } + + var capped; + + // cap values of the space prior converting all values + for (i = 0; i < space.length; i++) { + capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); + values[space][i] = Math.round(capped); + } + + // convert to all the other color spaces + for (var sname in spaces) { + if (sname !== space) { + values[sname] = convert[space][sname](values[space]); + } + } + + return true; +}; + +Color.prototype.setSpace = function (space, args) { + var vals = args[0]; + + if (vals === undefined) { + // color.rgb() + return this.getValues(space); + } + + // color.rgb(10, 10, 10) + if (typeof vals === 'number') { + vals = Array.prototype.slice.call(args); + } + + this.setValues(space, vals); + return this; +}; + +Color.prototype.setChannel = function (space, index, val) { + var svalues = this.values[space]; + if (val === undefined) { + // color.red() + return svalues[index]; + } else if (val === svalues[index]) { + // color.red(color.red()) + return this; + } + + // color.red(100) + svalues[index] = val; + this.setValues(space, svalues); + + return this; +}; + +if (typeof window !== 'undefined') { + window.Color = Color; +} + +module.exports = Color; + +},{"1":1,"4":4}],3:[function(require,module,exports){ +/* MIT license */ + +module.exports = { + rgb2hsl: rgb2hsl, + rgb2hsv: rgb2hsv, + rgb2hwb: rgb2hwb, + rgb2cmyk: rgb2cmyk, + rgb2keyword: rgb2keyword, + rgb2xyz: rgb2xyz, + rgb2lab: rgb2lab, + rgb2lch: rgb2lch, + + hsl2rgb: hsl2rgb, + hsl2hsv: hsl2hsv, + hsl2hwb: hsl2hwb, + hsl2cmyk: hsl2cmyk, + hsl2keyword: hsl2keyword, + + hsv2rgb: hsv2rgb, + hsv2hsl: hsv2hsl, + hsv2hwb: hsv2hwb, + hsv2cmyk: hsv2cmyk, + hsv2keyword: hsv2keyword, + + hwb2rgb: hwb2rgb, + hwb2hsl: hwb2hsl, + hwb2hsv: hwb2hsv, + hwb2cmyk: hwb2cmyk, + hwb2keyword: hwb2keyword, + + cmyk2rgb: cmyk2rgb, + cmyk2hsl: cmyk2hsl, + cmyk2hsv: cmyk2hsv, + cmyk2hwb: cmyk2hwb, + cmyk2keyword: cmyk2keyword, + + keyword2rgb: keyword2rgb, + keyword2hsl: keyword2hsl, + keyword2hsv: keyword2hsv, + keyword2hwb: keyword2hwb, + keyword2cmyk: keyword2cmyk, + keyword2lab: keyword2lab, + keyword2xyz: keyword2xyz, + + xyz2rgb: xyz2rgb, + xyz2lab: xyz2lab, + xyz2lch: xyz2lch, + + lab2xyz: lab2xyz, + lab2rgb: lab2rgb, + lab2lch: lab2lch, + + lch2lab: lch2lab, + lch2xyz: lch2xyz, + lch2rgb: lch2rgb +} + + +function rgb2hsl(rgb) { + var r = rgb[0]/255, + g = rgb[1]/255, + b = rgb[2]/255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + delta = max - min, + h, s, l; + + if (max == min) + h = 0; + else if (r == max) + h = (g - b) / delta; + else if (g == max) + h = 2 + (b - r) / delta; + else if (b == max) + h = 4 + (r - g)/ delta; + + h = Math.min(h * 60, 360); + + if (h < 0) + h += 360; + + l = (min + max) / 2; + + if (max == min) + s = 0; + else if (l <= 0.5) + s = delta / (max + min); + else + s = delta / (2 - max - min); + + return [h, s * 100, l * 100]; +} + +function rgb2hsv(rgb) { + var r = rgb[0], + g = rgb[1], + b = rgb[2], + min = Math.min(r, g, b), + max = Math.max(r, g, b), + delta = max - min, + h, s, v; + + if (max == 0) + s = 0; + else + s = (delta/max * 1000)/10; + + if (max == min) + h = 0; + else if (r == max) + h = (g - b) / delta; + else if (g == max) + h = 2 + (b - r) / delta; + else if (b == max) + h = 4 + (r - g) / delta; + + h = Math.min(h * 60, 360); + + if (h < 0) + h += 360; + + v = ((max / 255) * 1000) / 10; + + return [h, s, v]; +} + +function rgb2hwb(rgb) { + var r = rgb[0], + g = rgb[1], + b = rgb[2], + h = rgb2hsl(rgb)[0], + w = 1/255 * Math.min(r, Math.min(g, b)), + b = 1 - 1/255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +} + +function rgb2cmyk(rgb) { + var r = rgb[0] / 255, + g = rgb[1] / 255, + b = rgb[2] / 255, + c, m, y, k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; +} + +function rgb2keyword(rgb) { + return reverseKeywords[JSON.stringify(rgb)]; +} + +function rgb2xyz(rgb) { + var r = rgb[0] / 255, + g = rgb[1] / 255, + b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y *100, z * 100]; +} + +function rgb2lab(rgb) { + var xyz = rgb2xyz(rgb), + x = xyz[0], + y = xyz[1], + z = xyz[2], + l, a, b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +} + +function rgb2lch(args) { + return lab2lch(rgb2lab(args)); +} + +function hsl2rgb(hsl) { + var h = hsl[0] / 360, + s = hsl[1] / 100, + l = hsl[2] / 100, + t1, t2, t3, rgb, val; + + if (s == 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) + t2 = l * (1 + s); + else + t2 = l + s - l * s; + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * - (i - 1); + t3 < 0 && t3++; + t3 > 1 && t3--; + + if (6 * t3 < 1) + val = t1 + (t2 - t1) * 6 * t3; + else if (2 * t3 < 1) + val = t2; + else if (3 * t3 < 2) + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + else + val = t1; + + rgb[i] = val * 255; + } + + return rgb; +} + +function hsl2hsv(hsl) { + var h = hsl[0], + s = hsl[1] / 100, + l = hsl[2] / 100, + sv, v; + + if(l === 0) { + // no need to do calc on black + // also avoids divide by 0 error + return [0, 0, 0]; + } + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + v = (l + s) / 2; + sv = (2 * s) / (l + s); + return [h, sv * 100, v * 100]; +} + +function hsl2hwb(args) { + return rgb2hwb(hsl2rgb(args)); +} + +function hsl2cmyk(args) { + return rgb2cmyk(hsl2rgb(args)); +} + +function hsl2keyword(args) { + return rgb2keyword(hsl2rgb(args)); +} + + +function hsv2rgb(hsv) { + var h = hsv[0] / 60, + s = hsv[1] / 100, + v = hsv[2] / 100, + hi = Math.floor(h) % 6; + + var f = h - Math.floor(h), + p = 255 * v * (1 - s), + q = 255 * v * (1 - (s * f)), + t = 255 * v * (1 - (s * (1 - f))), + v = 255 * v; + + switch(hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +} + +function hsv2hsl(hsv) { + var h = hsv[0], + s = hsv[1] / 100, + v = hsv[2] / 100, + sl, l; + + l = (2 - s) * v; + sl = s * v; + sl /= (l <= 1) ? l : 2 - l; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; +} + +function hsv2hwb(args) { + return rgb2hwb(hsv2rgb(args)) +} + +function hsv2cmyk(args) { + return rgb2cmyk(hsv2rgb(args)); +} + +function hsv2keyword(args) { + return rgb2keyword(hsv2rgb(args)); +} + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +function hwb2rgb(hwb) { + var h = hwb[0] / 360, + wh = hwb[1] / 100, + bl = hwb[2] / 100, + ratio = wh + bl, + i, v, f, n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + if ((i & 0x01) != 0) { + f = 1 - f; + } + n = wh + f * (v - wh); // linear interpolation + + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +} + +function hwb2hsl(args) { + return rgb2hsl(hwb2rgb(args)); +} + +function hwb2hsv(args) { + return rgb2hsv(hwb2rgb(args)); +} + +function hwb2cmyk(args) { + return rgb2cmyk(hwb2rgb(args)); +} + +function hwb2keyword(args) { + return rgb2keyword(hwb2rgb(args)); +} + +function cmyk2rgb(cmyk) { + var c = cmyk[0] / 100, + m = cmyk[1] / 100, + y = cmyk[2] / 100, + k = cmyk[3] / 100, + r, g, b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; +} + +function cmyk2hsl(args) { + return rgb2hsl(cmyk2rgb(args)); +} + +function cmyk2hsv(args) { + return rgb2hsv(cmyk2rgb(args)); +} + +function cmyk2hwb(args) { + return rgb2hwb(cmyk2rgb(args)); +} + +function cmyk2keyword(args) { + return rgb2keyword(cmyk2rgb(args)); +} + + +function xyz2rgb(xyz) { + var x = xyz[0] / 100, + y = xyz[1] / 100, + z = xyz[2] / 100, + r, g, b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r = (r * 12.92); + + g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g = (g * 12.92); + + b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b = (b * 12.92); + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +} + +function xyz2lab(xyz) { + var x = xyz[0], + y = xyz[1], + z = xyz[2], + l, a, b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +} + +function xyz2lch(args) { + return lab2lch(xyz2lab(args)); +} + +function lab2xyz(lab) { + var l = lab[0], + a = lab[1], + b = lab[2], + x, y, z, y2; + + if (l <= 8) { + y = (l * 100) / 903.3; + y2 = (7.787 * (y / 100)) + (16 / 116); + } else { + y = 100 * Math.pow((l + 16) / 116, 3); + y2 = Math.pow(y / 100, 1/3); + } + + x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); + + z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); + + return [x, y, z]; +} + +function lab2lch(lab) { + var l = lab[0], + a = lab[1], + b = lab[2], + hr, h, c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + c = Math.sqrt(a * a + b * b); + return [l, c, h]; +} + +function lab2rgb(args) { + return xyz2rgb(lab2xyz(args)); +} + +function lch2lab(lch) { + var l = lch[0], + c = lch[1], + h = lch[2], + a, b, hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + return [l, a, b]; +} + +function lch2xyz(args) { + return lab2xyz(lch2lab(args)); +} + +function lch2rgb(args) { + return lab2rgb(lch2lab(args)); +} + +function keyword2rgb(keyword) { + return cssKeywords[keyword]; +} + +function keyword2hsl(args) { + return rgb2hsl(keyword2rgb(args)); +} + +function keyword2hsv(args) { + return rgb2hsv(keyword2rgb(args)); +} + +function keyword2hwb(args) { + return rgb2hwb(keyword2rgb(args)); +} + +function keyword2cmyk(args) { + return rgb2cmyk(keyword2rgb(args)); +} + +function keyword2lab(args) { + return rgb2lab(keyword2rgb(args)); +} + +function keyword2xyz(args) { + return rgb2xyz(keyword2rgb(args)); +} + +var cssKeywords = { + aliceblue: [240,248,255], + antiquewhite: [250,235,215], + aqua: [0,255,255], + aquamarine: [127,255,212], + azure: [240,255,255], + beige: [245,245,220], + bisque: [255,228,196], + black: [0,0,0], + blanchedalmond: [255,235,205], + blue: [0,0,255], + blueviolet: [138,43,226], + brown: [165,42,42], + burlywood: [222,184,135], + cadetblue: [95,158,160], + chartreuse: [127,255,0], + chocolate: [210,105,30], + coral: [255,127,80], + cornflowerblue: [100,149,237], + cornsilk: [255,248,220], + crimson: [220,20,60], + cyan: [0,255,255], + darkblue: [0,0,139], + darkcyan: [0,139,139], + darkgoldenrod: [184,134,11], + darkgray: [169,169,169], + darkgreen: [0,100,0], + darkgrey: [169,169,169], + darkkhaki: [189,183,107], + darkmagenta: [139,0,139], + darkolivegreen: [85,107,47], + darkorange: [255,140,0], + darkorchid: [153,50,204], + darkred: [139,0,0], + darksalmon: [233,150,122], + darkseagreen: [143,188,143], + darkslateblue: [72,61,139], + darkslategray: [47,79,79], + darkslategrey: [47,79,79], + darkturquoise: [0,206,209], + darkviolet: [148,0,211], + deeppink: [255,20,147], + deepskyblue: [0,191,255], + dimgray: [105,105,105], + dimgrey: [105,105,105], + dodgerblue: [30,144,255], + firebrick: [178,34,34], + floralwhite: [255,250,240], + forestgreen: [34,139,34], + fuchsia: [255,0,255], + gainsboro: [220,220,220], + ghostwhite: [248,248,255], + gold: [255,215,0], + goldenrod: [218,165,32], + gray: [128,128,128], + green: [0,128,0], + greenyellow: [173,255,47], + grey: [128,128,128], + honeydew: [240,255,240], + hotpink: [255,105,180], + indianred: [205,92,92], + indigo: [75,0,130], + ivory: [255,255,240], + khaki: [240,230,140], + lavender: [230,230,250], + lavenderblush: [255,240,245], + lawngreen: [124,252,0], + lemonchiffon: [255,250,205], + lightblue: [173,216,230], + lightcoral: [240,128,128], + lightcyan: [224,255,255], + lightgoldenrodyellow: [250,250,210], + lightgray: [211,211,211], + lightgreen: [144,238,144], + lightgrey: [211,211,211], + lightpink: [255,182,193], + lightsalmon: [255,160,122], + lightseagreen: [32,178,170], + lightskyblue: [135,206,250], + lightslategray: [119,136,153], + lightslategrey: [119,136,153], + lightsteelblue: [176,196,222], + lightyellow: [255,255,224], + lime: [0,255,0], + limegreen: [50,205,50], + linen: [250,240,230], + magenta: [255,0,255], + maroon: [128,0,0], + mediumaquamarine: [102,205,170], + mediumblue: [0,0,205], + mediumorchid: [186,85,211], + mediumpurple: [147,112,219], + mediumseagreen: [60,179,113], + mediumslateblue: [123,104,238], + mediumspringgreen: [0,250,154], + mediumturquoise: [72,209,204], + mediumvioletred: [199,21,133], + midnightblue: [25,25,112], + mintcream: [245,255,250], + mistyrose: [255,228,225], + moccasin: [255,228,181], + navajowhite: [255,222,173], + navy: [0,0,128], + oldlace: [253,245,230], + olive: [128,128,0], + olivedrab: [107,142,35], + orange: [255,165,0], + orangered: [255,69,0], + orchid: [218,112,214], + palegoldenrod: [238,232,170], + palegreen: [152,251,152], + paleturquoise: [175,238,238], + palevioletred: [219,112,147], + papayawhip: [255,239,213], + peachpuff: [255,218,185], + peru: [205,133,63], + pink: [255,192,203], + plum: [221,160,221], + powderblue: [176,224,230], + purple: [128,0,128], + rebeccapurple: [102, 51, 153], + red: [255,0,0], + rosybrown: [188,143,143], + royalblue: [65,105,225], + saddlebrown: [139,69,19], + salmon: [250,128,114], + sandybrown: [244,164,96], + seagreen: [46,139,87], + seashell: [255,245,238], + sienna: [160,82,45], + silver: [192,192,192], + skyblue: [135,206,235], + slateblue: [106,90,205], + slategray: [112,128,144], + slategrey: [112,128,144], + snow: [255,250,250], + springgreen: [0,255,127], + steelblue: [70,130,180], + tan: [210,180,140], + teal: [0,128,128], + thistle: [216,191,216], + tomato: [255,99,71], + turquoise: [64,224,208], + violet: [238,130,238], + wheat: [245,222,179], + white: [255,255,255], + whitesmoke: [245,245,245], + yellow: [255,255,0], + yellowgreen: [154,205,50] +}; + +var reverseKeywords = {}; +for (var key in cssKeywords) { + reverseKeywords[JSON.stringify(cssKeywords[key])] = key; +} + +},{}],4:[function(require,module,exports){ +var conversions = require(3); + +var convert = function() { + return new Converter(); +} + +for (var func in conversions) { + // export Raw versions + convert[func + "Raw"] = (function(func) { + // accept array or plain args + return function(arg) { + if (typeof arg == "number") + arg = Array.prototype.slice.call(arguments); + return conversions[func](arg); + } + })(func); + + var pair = /(\w+)2(\w+)/.exec(func), + from = pair[1], + to = pair[2]; + + // export rgb2hsl and ["rgb"]["hsl"] + convert[from] = convert[from] || {}; + + convert[from][to] = convert[func] = (function(func) { + return function(arg) { + if (typeof arg == "number") + arg = Array.prototype.slice.call(arguments); + + var val = conversions[func](arg); + if (typeof val == "string" || val === undefined) + return val; // keyword + + for (var i = 0; i < val.length; i++) + val[i] = Math.round(val[i]); + return val; + } + })(func); +} + + +/* Converter does lazy conversion and caching */ +var Converter = function() { + this.convs = {}; +}; + +/* Either get the values for a space or + set the values for a space, depending on args */ +Converter.prototype.routeSpace = function(space, args) { + var values = args[0]; + if (values === undefined) { + // color.rgb() + return this.getValues(space); + } + // color.rgb(10, 10, 10) + if (typeof values == "number") { + values = Array.prototype.slice.call(args); + } + + return this.setValues(space, values); +}; + +/* Set the values for a space, invalidating cache */ +Converter.prototype.setValues = function(space, values) { + this.space = space; + this.convs = {}; + this.convs[space] = values; + return this; +}; + +/* Get the values for a space. If there's already + a conversion for the space, fetch it, otherwise + compute it */ +Converter.prototype.getValues = function(space) { + var vals = this.convs[space]; + if (!vals) { + var fspace = this.space, + from = this.convs[fspace]; + vals = convert[fspace][space](from); + + this.convs[space] = vals; + } + return vals; +}; + +["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { + Converter.prototype[space] = function(vals) { + return this.routeSpace(space, arguments); + } +}); + +module.exports = convert; +},{"3":3}],5:[function(require,module,exports){ +'use strict' + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +},{}],6:[function(require,module,exports){ +//! moment.js + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + + var hookCallback; + + function hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + } + + function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; + } + + function isObjectEmpty(obj) { + if (Object.getOwnPropertyNames) { + return (Object.getOwnPropertyNames(obj).length === 0); + } else { + var k; + for (k in obj) { + if (obj.hasOwnProperty(k)) { + return false; + } + } + return true; + } + } + + function isUndefined(input) { + return input === void 0; + } + + function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; + } + + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; + } + + function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; + } + + function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); + } + + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; + } + + function Locale(config) { + if (config != null) { + this.set(config); + } + } + + var keys; + + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; + + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + ss : '%d seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + var priorities = {}; + + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } + + function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PRIORITIES + + addUnitPriority('year', 1); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } + + function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } + + function set$1 (mom, unit, value) { + if (mom.isValid() && !isNaN(value)) { + if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); + } + else { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + } + + // MOMENTS + + function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + + function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + + function mod(n, x) { + return ((n % x) + x) % x; + } + + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } + + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; + } + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PRIORITY + + addUnitPriority('month', 8); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } + + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } + + function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; + } + + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; + } + + // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } + + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; + } + + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PRIORITIES + + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + // FORMATTING + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + } + + function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } + + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + + + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PRIORITY + addUnitPriority('hour', 13); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + addRegexToken('kk', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse + }; + + // internal storage for locale config files + var locales = {}; + var localeFamilies = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return globalLocale; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + var aliasedRequire = require; + aliasedRequire('./locale/' + name); + getSetGlobalLocale(oldLocale); + } catch (e) {} + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + else { + if ((typeof console !== 'undefined') && console.warn) { + //warn user if arguments are passed but the locale could not be set + console.warn('Locale ' + key + ' not found. Did you forget to load it?'); + } + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, config) { + if (config !== null) { + var locale, parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + locale = loadLocale(config.parentLocale); + if (locale != null) { + parentConfig = locale._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + function updateLocale(name, config) { + if (config != null) { + var locale, tmpLocale, parentConfig = baseConfig; + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + + // returns locale data + function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + function listLocales() { + return keys(locales); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, expectedWeekday, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); + + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + + // check for mismatching day of week + if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { + getParsingFlags(config).weekdayMismatch = true; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; + + function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + var result = [ + untruncateYear(yearStr), + defaultLocaleMonthsShort.indexOf(monthStr), + parseInt(dayStr, 10), + parseInt(hourStr, 10), + parseInt(minuteStr, 10) + ]; + + if (secondStr) { + result.push(parseInt(secondStr, 10)); + } + + return result; + } + + function untruncateYear(yearStr) { + var year = parseInt(yearStr, 10); + if (year <= 49) { + return 2000 + year; + } else if (year <= 999) { + return 1900 + year; + } + return year; + } + + function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + } + + function checkWeekday(weekdayStr, parsedInput, config) { + if (weekdayStr) { + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), + weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); + if (weekdayProvided !== weekdayActual) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return false; + } + } + return true; + } + + var obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + + function calculateOffset(obsOffset, militaryOffset, numOffset) { + if (obsOffset) { + return obsOffsets[obsOffset]; + } else if (militaryOffset) { + // the only allowed military tz is Z + return 0; + } else { + var hm = parseInt(numOffset, 10); + var m = hm % 100, h = (hm - m) / 100; + return h * 60 + m; + } + } + + // date and time from ref 2822 format + function configFromRFC2822(config) { + var match = rfc2822.exec(preprocessRFC2822(config._i)); + if (match) { + var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); + if (!checkWeekday(match[1], parsedArray, config)) { + return; + } + + config._a = parsedArray; + config._tzm = calculateOffset(match[8], match[9], match[10]); + + config._d = createUTCDate.apply(null, config._a); + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); + } + + hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // constant that refers to the ISO standard + hooks.ISO_8601 = function () {}; + + // constant that refers to the RFC 2822 form + hooks.RFC_2822 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + + var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + + function isDurationValid(m) { + for (var key in m) { + if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; + } + + function isValid$1() { + return this._isValid; + } + + function createInvalid$1() { + return createDuration(NaN); + } + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible to translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // FORMATTING + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } + + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } + + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + + function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + createDuration.fn = Duration.prototype; + createDuration.invalid = createInvalid$1; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; + } + + function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } + } + + var add = createAdder(1, 'add'); + var subtract = createAdder(-1, 'subtract'); + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + } + + function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + + function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + + function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); + } + + function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); + } + + function diff (input, units, asFloat) { + var that, + zoneDelta, + output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + switch (units) { + case 'year': output = monthDiff(this, that) / 12; break; + case 'month': output = monthDiff(this, that); break; + case 'quarter': output = monthDiff(this, that) / 3; break; + case 'second': output = (this - that) / 1e3; break; // 1000 + case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 + case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 + case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst + case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: output = this - that; + } + + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + + hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function toISOString(keepOffset) { + if (!this.isValid()) { + return null; + } + var utc = keepOffset !== true; + var m = utc ? this.clone().utc() : this; + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + if (utc) { + return this.toDate().toISOString(); + } else { + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); + } + } + return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + + /** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ + function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); + } + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(this.valueOf() / 1000); + } + + function toDate () { + return new Date(this.valueOf()); + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + + function isValid$2 () { + return isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PRIORITY + + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); + + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); + }); + + // MOMENTS + + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } + + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PRIORITY + + addUnitPriority('quarter', 7); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + // FORMATTING + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PRIORITY + addUnitPriority('date', 9); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0]); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + // FORMATTING + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PRIORITY + addUnitPriority('dayOfYear', 4); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // FORMATTING + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PRIORITY + + addUnitPriority('minute', 14); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + // FORMATTING + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PRIORITY + + addUnitPriority('second', 15); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + // FORMATTING + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PRIORITY + + addUnitPriority('millisecond', 16); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + // FORMATTING + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var proto = Moment.prototype; + + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.year = getSetYear; + proto.isLeapYear = getIsLeapYear; + proto.weekYear = getSetWeekYear; + proto.isoWeekYear = getSetISOWeekYear; + proto.quarter = proto.quarters = getSetQuarter; + proto.month = getSetMonth; + proto.daysInMonth = getDaysInMonth; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.isoWeeksInYear = getISOWeeksInYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeekday = getSetISODayOfWeek; + proto.dayOfYear = getSetDayOfYear; + proto.hour = proto.hours = getSetHour; + proto.minute = proto.minutes = getSetMinute; + proto.second = proto.seconds = getSetSecond; + proto.millisecond = proto.milliseconds = getSetMillisecond; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; + proto.hasAlignedHourOffset = hasAlignedHourOffset; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; + proto.zoneAbbr = getZoneAbbr; + proto.zoneName = getZoneName; + proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); + proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + + function createUnix (input) { + return createLocal(input * 1000); + } + + function createInZone () { + return createLocal.apply(null, arguments).parseZone(); + } + + function preParsePostFormat (string) { + return string; + } + + var proto$1 = Locale.prototype; + + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; + proto$1.week = localeWeek; + proto$1.firstDayOfYear = localeFirstDayOfYear; + proto$1.firstDayOfWeek = localeFirstDayOfWeek; + + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; + + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; + + proto$1.isPM = localeIsPM; + proto$1.meridiem = localeMeridiem; + + function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); + } + + function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; + } + + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; + } + + function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); + } + + function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } + + function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } + + function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } + + function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } + + getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + + hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); + hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + + var mathAbs = Math.abs; + + function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function clone$1 () { + return createDuration(this); + } + + function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; + } + + function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set the rounding function for relative time strings + function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; + } + + // This function allows you to set a threshold for relative time strings + function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; + } + + function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var abs$1 = Math.abs; + + function sign(x) { + return ((x > 0) - (x < 0)) || +x; + } + + function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + var totalSign = total < 0 ? '-' : ''; + var ymSign = sign(this._months) !== sign(total) ? '-' : ''; + var daysSign = sign(this._days) !== sign(total) ? '-' : ''; + var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + + return totalSign + 'P' + + (Y ? ymSign + Y + 'Y' : '') + + (M ? ymSign + M + 'M' : '') + + (D ? daysSign + D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? hmsSign + h + 'H' : '') + + (m ? hmsSign + m + 'M' : '') + + (s ? hmsSign + s + 'S' : ''); + } + + var proto$2 = Duration.prototype; + + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; + proto$2.asMilliseconds = asMilliseconds; + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + + proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); + proto$2.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + hooks.version = '2.22.2'; + + setHookCallback(createLocal); + + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; + + // currently HTML5 input type only supports 24-hour formats + hooks.HTML5_FMT = { + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // + DATE: 'YYYY-MM-DD', // + TIME: 'HH:mm', // + TIME_SECONDS: 'HH:mm:ss', // + TIME_MS: 'HH:mm:ss.SSS', // + WEEK: 'YYYY-[W]WW', // + MONTH: 'YYYY-MM' // + }; + + return hooks; + +}))); + +},{}],7:[function(require,module,exports){ +/** + * @namespace Chart + */ +var Chart = require(30)(); + +Chart.helpers = require(46); + +// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! +require(28)(Chart); + +Chart.Animation = require(22); +Chart.animationService = require(23); +Chart.defaults = require(26); +Chart.Element = require(27); +Chart.elements = require(41); +Chart.Interaction = require(29); +Chart.layouts = require(31); +Chart.platform = require(49); +Chart.plugins = require(32); +Chart.Scale = require(33); +Chart.scaleService = require(34); +Chart.Ticks = require(35); +Chart.Tooltip = require(36); + +require(24)(Chart); +require(25)(Chart); + +require(56)(Chart); +require(54)(Chart); +require(55)(Chart); +require(57)(Chart); +require(58)(Chart); +require(59)(Chart); + +// Controllers must be loaded after elements +// See Chart.core.datasetController.dataElementType +require(15)(Chart); +require(16)(Chart); +require(17)(Chart); +require(18)(Chart); +require(19)(Chart); +require(20)(Chart); +require(21)(Chart); + +require(8)(Chart); +require(9)(Chart); +require(10)(Chart); +require(11)(Chart); +require(12)(Chart); +require(13)(Chart); +require(14)(Chart); + +// Loading built-in plugins +var plugins = require(50); +for (var k in plugins) { + if (plugins.hasOwnProperty(k)) { + Chart.plugins.register(plugins[k]); + } +} + +Chart.platform.initialize(); + +module.exports = Chart; +if (typeof window !== 'undefined') { + window.Chart = Chart; +} + +// DEPRECATIONS + +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Legend + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +Chart.Legend = plugins.legend._element; + +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Title + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +Chart.Title = plugins.title._element; + +/** + * Provided for backward compatibility, use Chart.plugins instead + * @namespace Chart.pluginService + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +Chart.pluginService = Chart.plugins; + +/** + * Provided for backward compatibility, inheriting from Chart.PlugingBase has no + * effect, instead simply create/register plugins via plain JavaScript objects. + * @interface Chart.PluginBase + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ +Chart.PluginBase = Chart.Element.extend({}); + +/** + * Provided for backward compatibility, use Chart.helpers.canvas instead. + * @namespace Chart.canvasHelpers + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +Chart.canvasHelpers = Chart.helpers.canvas; + +/** + * Provided for backward compatibility, use Chart.layouts instead. + * @namespace Chart.layoutService + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +Chart.layoutService = Chart.layouts; + +},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"34":34,"35":35,"36":36,"41":41,"46":46,"49":49,"50":50,"54":54,"55":55,"56":56,"57":57,"58":58,"59":59,"8":8,"9":9}],8:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Bar = function(context, config) { + config.type = 'bar'; + + return new Chart(context, config); + }; + +}; + +},{}],9:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Bubble = function(context, config) { + config.type = 'bubble'; + return new Chart(context, config); + }; + +}; + +},{}],10:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Doughnut = function(context, config) { + config.type = 'doughnut'; + + return new Chart(context, config); + }; + +}; + +},{}],11:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Line = function(context, config) { + config.type = 'line'; + + return new Chart(context, config); + }; + +}; + +},{}],12:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.PolarArea = function(context, config) { + config.type = 'polarArea'; + + return new Chart(context, config); + }; + +}; + +},{}],13:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Radar = function(context, config) { + config.type = 'radar'; + + return new Chart(context, config); + }; + +}; + +},{}],14:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + Chart.Scatter = function(context, config) { + config.type = 'scatter'; + return new Chart(context, config); + }; +}; + +},{}],15:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('bar', { + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + + // Specific to Bar Controller + categoryPercentage: 0.8, + barPercentage: 0.9, + + // offset settings + offset: true, + + // grid line settings + gridLines: { + offsetGridLines: true + } + }], + + yAxes: [{ + type: 'linear' + }] + } +}); + +defaults._set('horizontalBar', { + hover: { + mode: 'index', + axis: 'y' + }, + + scales: { + xAxes: [{ + type: 'linear', + position: 'bottom' + }], + + yAxes: [{ + position: 'left', + type: 'category', + + // Specific to Horizontal Bar Controller + categoryPercentage: 0.8, + barPercentage: 0.9, + + // offset settings + offset: true, + + // grid line settings + gridLines: { + offsetGridLines: true + } + }] + }, + + elements: { + rectangle: { + borderSkipped: 'left' + } + }, + + tooltips: { + callbacks: { + title: function(item, data) { + // Pick first xLabel for now + var title = ''; + + if (item.length > 0) { + if (item[0].yLabel) { + title = item[0].yLabel; + } else if (data.labels.length > 0 && item[0].index < data.labels.length) { + title = data.labels[item[0].index]; + } + } + + return title; + }, + + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + return datasetLabel + ': ' + item.xLabel; + } + }, + mode: 'index', + axis: 'y' + } +}); + +/** + * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. + * @private + */ +function computeMinSampleSize(scale, pixels) { + var min = scale.isHorizontal() ? scale.width : scale.height; + var ticks = scale.getTicks(); + var prev, curr, i, ilen; + + for (i = 1, ilen = pixels.length; i < ilen; ++i) { + min = Math.min(min, pixels[i] - pixels[i - 1]); + } + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + min = i > 0 ? Math.min(min, curr - prev) : min; + prev = curr; + } + + return min; +} + +/** + * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, + * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This + * mode currently always generates bars equally sized (until we introduce scriptable options?). + * @private + */ +function computeFitCategoryTraits(index, ruler, options) { + var thickness = options.barThickness; + var count = ruler.stackCount; + var curr = ruler.pixels[index]; + var size, ratio; + + if (helpers.isNullOrUndef(thickness)) { + size = ruler.min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + // When bar thickness is enforced, category and bar percentages are ignored. + // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') + // and deprecate barPercentage since this value is ignored when thickness is absolute. + size = thickness * count; + ratio = 1; + } + + return { + chunk: size / count, + ratio: ratio, + start: curr - (size / 2) + }; +} + +/** + * Computes an "optimal" category that globally arranges bars side by side (no gap when + * percentage options are 1), based on the previous and following categories. This mode + * generates bars with different widths when data are not evenly spaced. + * @private + */ +function computeFlexCategoryTraits(index, ruler, options) { + var pixels = ruler.pixels; + var curr = pixels[index]; + var prev = index > 0 ? pixels[index - 1] : null; + var next = index < pixels.length - 1 ? pixels[index + 1] : null; + var percent = options.categoryPercentage; + var start, size; + + if (prev === null) { + // first data: its size is double based on the next point or, + // if it's also the last data, we use the scale end extremity. + prev = curr - (next === null ? ruler.end - curr : next - curr); + } + + if (next === null) { + // last data: its size is also double based on the previous point. + next = curr + curr - prev; + } + + start = curr - ((curr - prev) / 2) * percent; + size = ((next - prev) / 2) * percent; + + return { + chunk: size / ruler.stackCount, + ratio: options.barPercentage, + start: start + }; +} + +module.exports = function(Chart) { + + Chart.controllers.bar = Chart.DatasetController.extend({ + + dataElementType: elements.Rectangle, + + initialize: function() { + var me = this; + var meta; + + Chart.DatasetController.prototype.initialize.apply(me, arguments); + + meta = me.getMeta(); + meta.stack = me.getDataset().stack; + meta.bar = true; + }, + + update: function(reset) { + var me = this; + var rects = me.getMeta().data; + var i, ilen; + + me._ruler = me.getRuler(); + + for (i = 0, ilen = rects.length; i < ilen; ++i) { + me.updateElement(rects[i], i, reset); + } + }, + + updateElement: function(rectangle, index, reset) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var dataset = me.getDataset(); + var custom = rectangle.custom || {}; + var rectangleOptions = chart.options.elements.rectangle; + + rectangle._xScale = me.getScaleForId(meta.xAxisID); + rectangle._yScale = me.getScaleForId(meta.yAxisID); + rectangle._datasetIndex = me.index; + rectangle._index = index; + + rectangle._model = { + datasetLabel: dataset.label, + label: chart.data.labels[index], + borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, + backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) + }; + + me.updateElementGeometry(rectangle, index, reset); + + rectangle.pivot(); + }, + + /** + * @private + */ + updateElementGeometry: function(rectangle, index, reset) { + var me = this; + var model = rectangle._model; + var vscale = me.getValueScale(); + var base = vscale.getBasePixel(); + var horizontal = vscale.isHorizontal(); + var ruler = me._ruler || me.getRuler(); + var vpixels = me.calculateBarValuePixels(me.index, index); + var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); + + model.horizontal = horizontal; + model.base = reset ? base : vpixels.base; + model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; + model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; + model.height = horizontal ? ipixels.size : undefined; + model.width = horizontal ? undefined : ipixels.size; + }, + + /** + * @private + */ + getValueScaleId: function() { + return this.getMeta().yAxisID; + }, + + /** + * @private + */ + getIndexScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + getValueScale: function() { + return this.getScaleForId(this.getValueScaleId()); + }, + + /** + * @private + */ + getIndexScale: function() { + return this.getScaleForId(this.getIndexScaleId()); + }, + + /** + * Returns the stacks based on groups and bar visibility. + * @param {Number} [last] - The dataset index + * @returns {Array} The stack list + * @private + */ + _getStacks: function(last) { + var me = this; + var chart = me.chart; + var scale = me.getIndexScale(); + var stacked = scale.options.stacked; + var ilen = last === undefined ? chart.data.datasets.length : last + 1; + var stacks = []; + var i, meta; + + for (i = 0; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + if (meta.bar && chart.isDatasetVisible(i) && + (stacked === false || + (stacked === true && stacks.indexOf(meta.stack) === -1) || + (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { + stacks.push(meta.stack); + } + } + + return stacks; + }, + + /** + * Returns the effective number of stacks based on groups and bar visibility. + * @private + */ + getStackCount: function() { + return this._getStacks().length; + }, + + /** + * Returns the stack index for the given dataset based on groups and bar visibility. + * @param {Number} [datasetIndex] - The dataset index + * @param {String} [name] - The stack name to find + * @returns {Number} The stack index + * @private + */ + getStackIndex: function(datasetIndex, name) { + var stacks = this._getStacks(datasetIndex); + var index = (name !== undefined) + ? stacks.indexOf(name) + : -1; // indexOf returns -1 if element is not present + + return (index === -1) + ? stacks.length - 1 + : index; + }, + + /** + * @private + */ + getRuler: function() { + var me = this; + var scale = me.getIndexScale(); + var stackCount = me.getStackCount(); + var datasetIndex = me.index; + var isHorizontal = scale.isHorizontal(); + var start = isHorizontal ? scale.left : scale.top; + var end = start + (isHorizontal ? scale.width : scale.height); + var pixels = []; + var i, ilen, min; + + for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { + pixels.push(scale.getPixelForValue(null, i, datasetIndex)); + } + + min = helpers.isNullOrUndef(scale.options.barThickness) + ? computeMinSampleSize(scale, pixels) + : -1; + + return { + min: min, + pixels: pixels, + start: start, + end: end, + stackCount: stackCount, + scale: scale + }; + }, + + /** + * Note: pixel values are not clamped to the scale area. + * @private + */ + calculateBarValuePixels: function(datasetIndex, index) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var scale = me.getValueScale(); + var datasets = chart.data.datasets; + var value = scale.getRightValue(datasets[datasetIndex].data[index]); + var stacked = scale.options.stacked; + var stack = meta.stack; + var start = 0; + var i, imeta, ivalue, base, head, size; + + if (stacked || (stacked === undefined && stack !== undefined)) { + for (i = 0; i < datasetIndex; ++i) { + imeta = chart.getDatasetMeta(i); + + if (imeta.bar && + imeta.stack === stack && + imeta.controller.getValueScaleId() === scale.id && + chart.isDatasetVisible(i)) { + + ivalue = scale.getRightValue(datasets[i].data[index]); + if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { + start += ivalue; + } + } + } + } + + base = scale.getPixelForValue(start); + head = scale.getPixelForValue(start + value); + size = (head - base) / 2; + + return { + size: size, + base: base, + head: head, + center: head + size / 2 + }; + }, + + /** + * @private + */ + calculateBarIndexPixels: function(datasetIndex, index, ruler) { + var me = this; + var options = ruler.scale.options; + var range = options.barThickness === 'flex' + ? computeFlexCategoryTraits(index, ruler, options) + : computeFitCategoryTraits(index, ruler, options); + + var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); + var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); + var size = Math.min( + helpers.valueOrDefault(options.maxBarThickness, Infinity), + range.chunk * range.ratio); + + return { + base: center - size / 2, + head: center + size / 2, + center: center, + size: size + }; + }, + + draw: function() { + var me = this; + var chart = me.chart; + var scale = me.getValueScale(); + var rects = me.getMeta().data; + var dataset = me.getDataset(); + var ilen = rects.length; + var i = 0; + + helpers.canvas.clipArea(chart.ctx, chart.chartArea); + + for (; i < ilen; ++i) { + if (!isNaN(scale.getRightValue(dataset.data[i]))) { + rects[i].draw(); + } + } + + helpers.canvas.unclipArea(chart.ctx); + }, + }); + + Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ + /** + * @private + */ + getValueScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + getIndexScaleId: function() { + return this.getMeta().yAxisID; + } + }); +}; + +},{"26":26,"41":41,"46":46}],16:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('bubble', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + type: 'linear', // bubble should probably use a linear scale by default + position: 'bottom', + id: 'x-axis-0' // need an ID so datasets can reference the scale + }], + yAxes: [{ + type: 'linear', + position: 'left', + id: 'y-axis-0' + }] + }, + + tooltips: { + callbacks: { + title: function() { + // Title doesn't make sense for scatter since we format the data as a point + return ''; + }, + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + var dataPoint = data.datasets[item.datasetIndex].data[item.index]; + return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + } + } + } +}); + + +module.exports = function(Chart) { + + Chart.controllers.bubble = Chart.DatasetController.extend({ + /** + * @protected + */ + dataElementType: elements.Point, + + /** + * @protected + */ + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var points = meta.data; + + // Update Points + helpers.each(points, function(point, index) { + me.updateElement(point, index, reset); + }); + }, + + /** + * @protected + */ + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var xScale = me.getScaleForId(meta.xAxisID); + var yScale = me.getScaleForId(meta.yAxisID); + var options = me._resolveElementOptions(point, index); + var data = me.getDataset().data[index]; + var dsIndex = me.index; + + var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); + var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); + + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = dsIndex; + point._index = index; + point._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + hitRadius: options.hitRadius, + pointStyle: options.pointStyle, + rotation: options.rotation, + radius: reset ? 0 : options.radius, + skip: custom.skip || isNaN(x) || isNaN(y), + x: x, + y: y, + }; + + point.pivot(); + }, + + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); + model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); + model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); + model.radius = options.radius + options.hoverRadius; + }, + + /** + * @private + */ + _resolveElementOptions: function(point, index) { + var me = this; + var chart = me.chart; + var datasets = chart.data.datasets; + var dataset = datasets[me.index]; + var custom = point.custom || {}; + var options = chart.options.elements.point; + var resolve = helpers.options.resolve; + var data = dataset.data[index]; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + 'hoverRadius', + 'hitRadius', + 'pointStyle', + 'rotation' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + // Custom radius resolution + values.radius = resolve([ + custom.radius, + data ? data.r : undefined, + dataset.radius, + options.radius + ], context, index); + return values; + } + }); +}; + +},{"26":26,"41":41,"46":46}],17:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('doughnut', { + animation: { + // Boolean - Whether we animate the rotation of the Doughnut + animateRotate: true, + // Boolean - Whether we animate scaling the Doughnut from the centre + animateScale: false + }, + hover: { + mode: 'single' + }, + legendCallback: function(chart) { + var text = []; + text.push('

'); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc && arc.custom || {}; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var arcOpts = chart.options.elements.arc; + var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); + var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); + var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); + + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + // toggle visibility of index if exists + if (meta.data[index]) { + meta.data[index].hidden = !meta.data[index].hidden; + } + } + + chart.update(); + } + }, + + // The percentage of the chart that we cut out of the middle. + cutoutPercentage: 50, + + // The rotation of the chart, where the first data arc begins. + rotation: Math.PI * -0.5, + + // The total circumference of the chart. + circumference: Math.PI * 2.0, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(tooltipItem, data) { + var dataLabel = data.labels[tooltipItem.index]; + var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; + + if (helpers.isArray(dataLabel)) { + // show value on first line of multiline label + // need to clone because we are changing the value + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } + + return dataLabel; + } + } + } +}); + +defaults._set('pie', helpers.clone(defaults.doughnut)); +defaults._set('pie', { + cutoutPercentage: 0 +}); + +module.exports = function(Chart) { + + Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers.noop, + + // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly + getRingIndex: function(datasetIndex) { + var ringIndex = 0; + + for (var j = 0; j < datasetIndex; ++j) { + if (this.chart.isDatasetVisible(j)) { + ++ringIndex; + } + } + + return ringIndex; + }, + + update: function(reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var arcOpts = opts.elements.arc; + var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; + var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; + var minSize = Math.min(availableWidth, availableHeight); + var offset = {x: 0, y: 0}; + var meta = me.getMeta(); + var cutoutPercentage = opts.cutoutPercentage; + var circumference = opts.circumference; + + // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc + if (circumference < Math.PI * 2.0) { + var startAngle = opts.rotation % (Math.PI * 2.0); + startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); + var endAngle = startAngle + circumference; + var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; + var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; + var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); + var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); + var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); + var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); + var cutout = cutoutPercentage / 100.0; + var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; + var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; + var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; + minSize = Math.min(availableWidth / size.width, availableHeight / size.height); + offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; + } + + chart.borderWidth = me.getMaxBorderWidth(meta.data); + chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); + chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + chart.offsetX = offset.x * chart.outerRadius; + chart.offsetY = offset.y * chart.outerRadius; + + meta.total = me.calculateTotal(); + + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); + me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); + + helpers.each(meta.data, function(arc, index) { + me.updateElement(arc, index, reset); + }); + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var animationOpts = opts.animation; + var centerX = (chartArea.left + chartArea.right) / 2; + var centerY = (chartArea.top + chartArea.bottom) / 2; + var startAngle = opts.rotation; // non reset case handled later + var endAngle = opts.rotation; // non reset case handled later + var dataset = me.getDataset(); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); + var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; + var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + + helpers.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + + // Desired view properties + _model: { + x: centerX + chart.offsetX, + y: centerY + chart.offsetY, + startAngle: startAngle, + endAngle: endAngle, + circumference: circumference, + outerRadius: outerRadius, + innerRadius: innerRadius, + label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + } + }); + + var model = arc._model; + + // Resets the visual styles + var custom = arc.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var elementOpts = this.chart.options.elements.arc; + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); + + // Set correct angles if not resetting + if (!reset || !animationOpts.animateRotate) { + if (index === 0) { + model.startAngle = opts.rotation; + } else { + model.startAngle = me.getMeta().data[index - 1]._model.endAngle; + } + + model.endAngle = model.startAngle + model.circumference; + } + + arc.pivot(); + }, + + calculateTotal: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var total = 0; + var value; + + helpers.each(meta.data, function(element, index) { + value = dataset.data[index]; + if (!isNaN(value) && !element.hidden) { + total += Math.abs(value); + } + }); + + /* if (total === 0) { + total = NaN; + }*/ + + return total; + }, + + calculateCircumference: function(value) { + var total = this.getMeta().total; + if (total > 0 && !isNaN(value)) { + return (Math.PI * 2.0) * (Math.abs(value) / total); + } + return 0; + }, + + // gets the max border or hover width to properly scale pie charts + getMaxBorderWidth: function(arcs) { + var max = 0; + var index = this.index; + var length = arcs.length; + var borderWidth; + var hoverWidth; + + for (var i = 0; i < length; i++) { + borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; + hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; + + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; + } + return max; + } + }); +}; + +},{"26":26,"41":41,"46":46}],18:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('line', { + showLines: true, + spanGaps: false, + + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + id: 'x-axis-0' + }], + yAxes: [{ + type: 'linear', + id: 'y-axis-0' + }] + } +}); + +module.exports = function(Chart) { + + function lineEnabled(dataset, options) { + return helpers.valueOrDefault(dataset.showLine, options.showLines); + } + + Chart.controllers.line = Chart.DatasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var options = me.chart.options; + var lineElementOptions = options.elements.line; + var scale = me.getScaleForId(meta.yAxisID); + var i, ilen, custom; + var dataset = me.getDataset(); + var showLine = lineEnabled(dataset, options); + + // Update Line + if (showLine) { + custom = line.custom || {}; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } + + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + // Model + line._model = { + // Appearance + // The default behavior of lines is to break at null values, according + // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 + // This option gives lines the ability to span gaps + spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), + borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), + borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), + borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), + borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), + borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), + borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), + fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), + steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), + cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), + }; + + line.pivot(); + } + + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } + + if (showLine && line._model.tension !== 0) { + me.updateBezierControlPoints(); + } + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, + + getPointBackgroundColor: function(point, index) { + var backgroundColor = this.chart.options.elements.point.backgroundColor; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (custom.backgroundColor) { + backgroundColor = custom.backgroundColor; + } else if (dataset.pointBackgroundColor) { + backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); + } else if (dataset.backgroundColor) { + backgroundColor = dataset.backgroundColor; + } + + return backgroundColor; + }, + + getPointBorderColor: function(point, index) { + var borderColor = this.chart.options.elements.point.borderColor; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (custom.borderColor) { + borderColor = custom.borderColor; + } else if (dataset.pointBorderColor) { + borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); + } else if (dataset.borderColor) { + borderColor = dataset.borderColor; + } + + return borderColor; + }, + + getPointBorderWidth: function(point, index) { + var borderWidth = this.chart.options.elements.point.borderWidth; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (!isNaN(custom.borderWidth)) { + borderWidth = custom.borderWidth; + } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { + borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); + } else if (!isNaN(dataset.borderWidth)) { + borderWidth = dataset.borderWidth; + } + + return borderWidth; + }, + + getPointRotation: function(point, index) { + var pointRotation = this.chart.options.elements.point.rotation; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (!isNaN(custom.rotation)) { + pointRotation = custom.rotation; + } else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) { + pointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation); + } + return pointRotation; + }, + + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var dataset = me.getDataset(); + var datasetIndex = me.index; + var value = dataset.data[index]; + var yScale = me.getScaleForId(meta.yAxisID); + var xScale = me.getScaleForId(meta.xAxisID); + var pointOptions = me.chart.options.elements.point; + var x, y; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; + } + if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { + dataset.pointHitRadius = dataset.hitRadius; + } + + x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); + y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); + + // Utility + point._xScale = xScale; + point._yScale = yScale; + point._datasetIndex = datasetIndex; + point._index = index; + + // Desired view properties + point._model = { + x: x, + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), + pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), + rotation: me.getPointRotation(point, index), + backgroundColor: me.getPointBackgroundColor(point, index), + borderColor: me.getPointBorderColor(point, index), + borderWidth: me.getPointBorderWidth(point, index), + tension: meta.dataset._model ? meta.dataset._model.tension : 0, + steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, + // Tooltip + hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) + }; + }, + + calculatePointY: function(value, index, datasetIndex) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var yScale = me.getScaleForId(meta.yAxisID); + var sumPos = 0; + var sumNeg = 0; + var i, ds, dsMeta; + + if (yScale.options.stacked) { + for (i = 0; i < datasetIndex; i++) { + ds = chart.data.datasets[i]; + dsMeta = chart.getDatasetMeta(i); + if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { + var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); + if (stackedRightValue < 0) { + sumNeg += stackedRightValue || 0; + } else { + sumPos += stackedRightValue || 0; + } + } + } + + var rightValue = Number(yScale.getRightValue(value)); + if (rightValue < 0) { + return yScale.getPixelForValue(sumNeg + rightValue); + } + return yScale.getPixelForValue(sumPos + rightValue); + } + + return yScale.getPixelForValue(value); + }, + + updateBezierControlPoints: function() { + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = (meta.data || []); + var i, ilen, point, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (meta.dataset._model.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } + + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + if (meta.dataset._model.cubicInterpolationMode === 'monotone') { + helpers.splineCurveMonotone(points); + } else { + for (i = 0, ilen = points.length; i < ilen; ++i) { + point = points[i]; + model = point._model; + controlPoints = helpers.splineCurve( + helpers.previousItem(points, i)._model, + model, + helpers.nextItem(points, i)._model, + meta.dataset._model.tension + ); + model.controlPointPreviousX = controlPoints.previous.x; + model.controlPointPreviousY = controlPoints.previous.y; + model.controlPointNextX = controlPoints.next.x; + model.controlPointNextY = controlPoints.next.y; + } + } + + if (me.chart.options.elements.line.capBezierPoints) { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); + model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); + model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); + model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); + } + } + }, + + draw: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var points = meta.data || []; + var area = chart.chartArea; + var ilen = points.length; + var halfBorderWidth; + var i = 0; + + if (lineEnabled(me.getDataset(), chart.options)) { + halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; + + helpers.canvas.clipArea(chart.ctx, { + left: area.left, + right: area.right, + top: area.top - halfBorderWidth, + bottom: area.bottom + halfBorderWidth + }); + + meta.dataset.draw(); + + helpers.canvas.unclipArea(chart.ctx); + } + + // Draw the points + for (; i < ilen; ++i) { + points[i].draw(area); + } + }, + + setHoverStyle: function(element) { + // Point + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var model = element._model; + + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); + model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); + }, + }); +}; + +},{"26":26,"41":41,"46":46}],19:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('polarArea', { + scale: { + type: 'radialLinear', + angleLines: { + display: false + }, + gridLines: { + circular: true + }, + pointLabels: { + display: false + }, + ticks: { + beginAtZero: true + } + }, + + // Boolean - Whether to animate the rotation of the chart + animation: { + animateRotate: true, + animateScale: true + }, + + startAngle: -0.5 * Math.PI, + legendCallback: function(chart) { + var text = []; + text.push('
    '); + + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('
  • '); + if (labels[i]) { + text.push(labels[i]); + } + text.push('
  • '); + } + } + + text.push('
'); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc.custom || {}; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var arcOpts = chart.options.elements.arc; + var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); + var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); + var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); + + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + meta.data[index].hidden = !meta.data[index].hidden; + } + + chart.update(); + } + }, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(item, data) { + return data.labels[item.index] + ': ' + item.yLabel; + } + } + } +}); + +module.exports = function(Chart) { + + Chart.controllers.polarArea = Chart.DatasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers.noop, + + update: function(reset) { + var me = this; + var dataset = me.getDataset(); + var meta = me.getMeta(); + var start = me.chart.options.startAngle || 0; + var starts = me._starts = []; + var angles = me._angles = []; + var i, ilen, angle; + + me._updateRadius(); + + meta.count = me.countVisibleElements(); + + for (i = 0, ilen = dataset.data.length; i < ilen; i++) { + starts[i] = start; + angle = me._computeAngle(i); + angles[i] = angle; + start += angle; + } + + helpers.each(meta.data, function(arc, index) { + me.updateElement(arc, index, reset); + }); + }, + + /** + * @private + */ + _updateRadius: function() { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var arcOpts = opts.elements.arc; + var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); + + chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); + chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); + me.innerRadius = me.outerRadius - chart.radiusLength; + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var opts = chart.options; + var animationOpts = opts.animation; + var scale = chart.scale; + var labels = chart.data.labels; + + var centerX = scale.xCenter; + var centerY = scale.yCenter; + + // var negHalfPI = -0.5 * Math.PI; + var datasetStartAngle = opts.startAngle; + var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var startAngle = me._starts[index]; + var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); + + var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + + helpers.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, + + // Desired view properties + _model: { + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius: reset ? resetRadius : distance, + startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, + endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, + label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) + } + }); + + // Apply border and fill style + var elementOpts = this.chart.options.elements.arc; + var custom = arc.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var model = arc._model; + + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); + + arc.pivot(); + }, + + countVisibleElements: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var count = 0; + + helpers.each(meta.data, function(element, index) { + if (!isNaN(dataset.data[index]) && !element.hidden) { + count++; + } + }); + + return count; + }, + + /** + * @private + */ + _computeAngle: function(index) { + var me = this; + var count = this.getMeta().count; + var dataset = me.getDataset(); + var meta = me.getMeta(); + + if (isNaN(dataset.data[index]) || meta.data[index].hidden) { + return 0; + } + + // Scriptable options + var context = { + chart: me.chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + return helpers.options.resolve([ + me.chart.options.elements.arc.angle, + (2 * Math.PI) / count + ], context, index); + } + }); +}; + +},{"26":26,"41":41,"46":46}],20:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('radar', { + scale: { + type: 'radialLinear' + }, + elements: { + line: { + tension: 0 // no bezier in radar + } + } +}); + +module.exports = function(Chart) { + + Chart.controllers.radar = Chart.DatasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + linkScales: helpers.noop, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data; + var custom = line.custom || {}; + var dataset = me.getDataset(); + var lineElementOptions = me.chart.options.elements.line; + var scale = me.chart.scale; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } + + helpers.extend(meta.dataset, { + // Utility + _datasetIndex: me.index, + _scale: scale, + // Data + _children: points, + _loop: true, + // Model + _model: { + // Appearance + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), + borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), + borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), + fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), + borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), + borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), + borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), + borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), + } + }); + + meta.dataset.pivot(); + + // Update Points + helpers.each(points, function(point, index) { + me.updateElement(point, index, reset); + }, me); + + // Update bezier control points + me.updateBezierControlPoints(); + }, + updateElement: function(point, index, reset) { + var me = this; + var custom = point.custom || {}; + var dataset = me.getDataset(); + var scale = me.chart.scale; + var pointElementOptions = me.chart.options.elements.point; + var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; + } + if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { + dataset.pointHitRadius = dataset.hitRadius; + } + + helpers.extend(point, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, + + // Desired view properties + _model: { + x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales + y: reset ? scale.yCenter : pointPosition.y, + + // Appearance + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), + radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), + pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), + rotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation), + + // Tooltip + hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) + } + }); + + point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); + }, + updateBezierControlPoints: function() { + var chartArea = this.chart.chartArea; + var meta = this.getMeta(); + + helpers.each(meta.data, function(point, index) { + var model = point._model; + var controlPoints = helpers.splineCurve( + helpers.previousItem(meta.data, index, true)._model, + model, + helpers.nextItem(meta.data, index, true)._model, + model.tension + ); + + // Prevent the bezier going outside of the bounds of the graph + model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); + model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); + + model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); + model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); + + // Now pivot the point for animation + point.pivot(); + }); + }, + + setHoverStyle: function(point) { + // Point + var dataset = this.chart.data.datasets[point._datasetIndex]; + var custom = point.custom || {}; + var index = point._index; + var model = point._model; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); + }, + }); +}; + +},{"26":26,"41":41,"46":46}],21:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); + +defaults._set('scatter', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + id: 'x-axis-1', // need an ID so datasets can reference the scale + type: 'linear', // scatter should not use a category axis + position: 'bottom' + }], + yAxes: [{ + id: 'y-axis-1', + type: 'linear', + position: 'left' + }] + }, + + showLines: false, + + tooltips: { + callbacks: { + title: function() { + return ''; // doesn't make sense for scatter since data are formatted as a point + }, + label: function(item) { + return '(' + item.xLabel + ', ' + item.yLabel + ')'; + } + } + } +}); + +module.exports = function(Chart) { + + // Scatter charts use line controllers + Chart.controllers.scatter = Chart.controllers.line; + +}; + +},{"26":26}],22:[function(require,module,exports){ +'use strict'; + +var Element = require(27); + +var exports = module.exports = Element.extend({ + chart: null, // the animation associated chart instance + currentStep: 0, // the current animation step + numSteps: 60, // default number of steps + easing: '', // the easing to use for this animation + render: null, // render function used by the animation service + + onAnimationProgress: null, // user specified callback to fire on each step of the animation + onAnimationComplete: null, // user specified callback to fire when the animation finishes +}); + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.Animation instead + * @prop Chart.Animation#animationObject + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports.prototype, 'animationObject', { + get: function() { + return this; + } +}); + +/** + * Provided for backward compatibility, use Chart.Animation#chart instead + * @prop Chart.Animation#chartInstance + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports.prototype, 'chartInstance', { + get: function() { + return this.chart; + }, + set: function(value) { + this.chart = value; + } +}); + +},{"27":27}],23:[function(require,module,exports){ +/* global window: false */ +'use strict'; + +var defaults = require(26); +var helpers = require(46); + +defaults._set('global', { + animation: { + duration: 1000, + easing: 'easeOutQuart', + onProgress: helpers.noop, + onComplete: helpers.noop + } +}); + +module.exports = { + frameDuration: 17, + animations: [], + dropFrames: 0, + request: null, + + /** + * @param {Chart} chart - The chart to animate. + * @param {Chart.Animation} animation - The animation that we will animate. + * @param {Number} duration - The animation duration in ms. + * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions + */ + addAnimation: function(chart, animation, duration, lazy) { + var animations = this.animations; + var i, ilen; + + animation.chart = chart; + + if (!lazy) { + chart.animating = true; + } + + for (i = 0, ilen = animations.length; i < ilen; ++i) { + if (animations[i].chart === chart) { + animations[i] = animation; + return; + } + } + + animations.push(animation); + + // If there are no animations queued, manually kickstart a digest, for lack of a better word + if (animations.length === 1) { + this.requestAnimationFrame(); + } + }, + + cancelAnimation: function(chart) { + var index = helpers.findIndex(this.animations, function(animation) { + return animation.chart === chart; + }); + + if (index !== -1) { + this.animations.splice(index, 1); + chart.animating = false; + } + }, + + requestAnimationFrame: function() { + var me = this; + if (me.request === null) { + // Skip animation frame requests until the active one is executed. + // This can happen when processing mouse events, e.g. 'mousemove' + // and 'mouseout' events will trigger multiple renders. + me.request = helpers.requestAnimFrame.call(window, function() { + me.request = null; + me.startDigest(); + }); + } + }, + + /** + * @private + */ + startDigest: function() { + var me = this; + var startTime = Date.now(); + var framesToDrop = 0; + + if (me.dropFrames > 1) { + framesToDrop = Math.floor(me.dropFrames); + me.dropFrames = me.dropFrames % 1; + } + + me.advance(1 + framesToDrop); + + var endTime = Date.now(); + + me.dropFrames += (endTime - startTime) / me.frameDuration; + + // Do we have more stuff to animate? + if (me.animations.length > 0) { + me.requestAnimationFrame(); + } + }, + + /** + * @private + */ + advance: function(count) { + var animations = this.animations; + var animation, chart; + var i = 0; + + while (i < animations.length) { + animation = animations[i]; + chart = animation.chart; + + animation.currentStep = (animation.currentStep || 0) + count; + animation.currentStep = Math.min(animation.currentStep, animation.numSteps); + + helpers.callback(animation.render, [chart, animation], chart); + helpers.callback(animation.onAnimationProgress, [animation], chart); + + if (animation.currentStep >= animation.numSteps) { + helpers.callback(animation.onAnimationComplete, [animation], chart); + chart.animating = false; + animations.splice(i, 1); + } else { + ++i; + } + } + } +}; + +},{"26":26,"46":46}],24:[function(require,module,exports){ +'use strict'; + +var Animation = require(22); +var animations = require(23); +var defaults = require(26); +var helpers = require(46); +var Interaction = require(29); +var layouts = require(31); +var platform = require(49); +var plugins = require(32); +var scaleService = require(34); +var Tooltip = require(36); + +module.exports = function(Chart) { + + // Create a dictionary of chart types, to allow for extension of existing types + Chart.types = {}; + + // Store a reference to each instance - allowing us to globally resize chart instances on window resize. + // Destroy method on the chart will remove the instance of the chart from this reference. + Chart.instances = {}; + + // Controllers available for dataset visualization eg. bar, line, slice, etc. + Chart.controllers = {}; + + /** + * Initializes the given config with global and chart default values. + */ + function initConfig(config) { + config = config || {}; + + // Do NOT use configMerge() for the data object because this method merges arrays + // and so would change references to labels and datasets, preventing data updates. + var data = config.data = config.data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; + + config.options = helpers.configMerge( + defaults.global, + defaults[config.type], + config.options || {}); + + return config; + } + + /** + * Updates the config of the chart + * @param chart {Chart} chart to update the options for + */ + function updateConfig(chart) { + var newOptions = chart.options; + + helpers.each(chart.scales, function(scale) { + layouts.removeBox(chart, scale); + }); + + newOptions = helpers.configMerge( + Chart.defaults.global, + Chart.defaults[chart.config.type], + newOptions); + + chart.options = chart.config.options = newOptions; + chart.ensureScalesHaveIDs(); + chart.buildOrUpdateScales(); + // Tooltip + chart.tooltip._options = newOptions.tooltips; + chart.tooltip.initialize(); + } + + function positionIsHorizontal(position) { + return position === 'top' || position === 'bottom'; + } + + helpers.extend(Chart.prototype, /** @lends Chart */ { + /** + * @private + */ + construct: function(item, config) { + var me = this; + + config = initConfig(config); + + var context = platform.acquireContext(item, config); + var canvas = context && context.canvas; + var height = canvas && canvas.height; + var width = canvas && canvas.width; + + me.id = helpers.uid(); + me.ctx = context; + me.canvas = canvas; + me.config = config; + me.width = width; + me.height = height; + me.aspectRatio = height ? width / height : null; + me.options = config.options; + me._bufferedRender = false; + + /** + * Provided for backward compatibility, Chart and Chart.Controller have been merged, + * the "instance" still need to be defined since it might be called from plugins. + * @prop Chart#chart + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + me.chart = me; + me.controller = me; // chart.chart.controller #inception + + // Add the chart instance to the global namespace + Chart.instances[me.id] = me; + + // Define alias to the config data: `chart.data === chart.config.data` + Object.defineProperty(me, 'data', { + get: function() { + return me.config.data; + }, + set: function(value) { + me.config.data = value; + } + }); + + if (!context || !canvas) { + // The given item is not a compatible context2d element, let's return before finalizing + // the chart initialization but after setting basic chart / controller properties that + // can help to figure out that the chart is not valid (e.g chart.canvas !== null); + // https://github.com/chartjs/Chart.js/issues/2807 + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } + + me.initialize(); + me.update(); + }, + + /** + * @private + */ + initialize: function() { + var me = this; + + // Before init plugin notification + plugins.notify(me, 'beforeInit'); + + helpers.retinaScale(me, me.options.devicePixelRatio); + + me.bindEvents(); + + if (me.options.responsive) { + // Initial resize before chart draws (must be silent to preserve initial animations). + me.resize(true); + } + + // Make sure scales have IDs and are built before we build any controllers. + me.ensureScalesHaveIDs(); + me.buildOrUpdateScales(); + me.initToolTip(); + + // After init plugin notification + plugins.notify(me, 'afterInit'); + + return me; + }, + + clear: function() { + helpers.canvas.clear(this); + return this; + }, + + stop: function() { + // Stops any current animation loop occurring + animations.cancelAnimation(this); + return this; + }, + + resize: function(silent) { + var me = this; + var options = me.options; + var canvas = me.canvas; + var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; + + // the canvas render width and height will be casted to integers so make sure that + // the canvas display style uses the same integer values to avoid blurring effect. + + // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed + var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); + var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); + + if (me.width === newWidth && me.height === newHeight) { + return; + } + + canvas.width = me.width = newWidth; + canvas.height = me.height = newHeight; + canvas.style.width = newWidth + 'px'; + canvas.style.height = newHeight + 'px'; + + helpers.retinaScale(me, options.devicePixelRatio); + + if (!silent) { + // Notify any plugins about the resize + var newSize = {width: newWidth, height: newHeight}; + plugins.notify(me, 'resize', [newSize]); + + // Notify of resize + if (me.options.onResize) { + me.options.onResize(me, newSize); + } + + me.stop(); + me.update({ + duration: me.options.responsiveAnimationDuration + }); + } + }, + + ensureScalesHaveIDs: function() { + var options = this.options; + var scalesOptions = options.scales || {}; + var scaleOptions = options.scale; + + helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { + xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); + }); + + helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { + yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); + }); + + if (scaleOptions) { + scaleOptions.id = scaleOptions.id || 'scale'; + } + }, + + /** + * Builds a map of scale ID to scale object for future lookup. + */ + buildOrUpdateScales: function() { + var me = this; + var options = me.options; + var scales = me.scales || {}; + var items = []; + var updated = Object.keys(scales).reduce(function(obj, id) { + obj[id] = false; + return obj; + }, {}); + + if (options.scales) { + items = items.concat( + (options.scales.xAxes || []).map(function(xAxisOptions) { + return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; + }), + (options.scales.yAxes || []).map(function(yAxisOptions) { + return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; + }) + ); + } + + if (options.scale) { + items.push({ + options: options.scale, + dtype: 'radialLinear', + isDefault: true, + dposition: 'chartArea' + }); + } + + helpers.each(items, function(item) { + var scaleOptions = item.options; + var id = scaleOptions.id; + var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); + + if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } + + updated[id] = true; + var scale = null; + if (id in scales && scales[id].type === scaleType) { + scale = scales[id]; + scale.options = scaleOptions; + scale.ctx = me.ctx; + scale.chart = me; + } else { + var scaleClass = scaleService.getScaleConstructor(scaleType); + if (!scaleClass) { + return; + } + scale = new scaleClass({ + id: id, + type: scaleType, + options: scaleOptions, + ctx: me.ctx, + chart: me + }); + scales[scale.id] = scale; + } + + scale.mergeTicksOptions(); + + // TODO(SB): I think we should be able to remove this custom case (options.scale) + // and consider it as a regular scale part of the "scales"" map only! This would + // make the logic easier and remove some useless? custom code. + if (item.isDefault) { + me.scale = scale; + } + }); + // clear up discarded scales + helpers.each(updated, function(hasUpdated, id) { + if (!hasUpdated) { + delete scales[id]; + } + }); + + me.scales = scales; + + scaleService.addScalesToLayout(this); + }, + + buildOrUpdateControllers: function() { + var me = this; + var types = []; + var newControllers = []; + + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + var meta = me.getDatasetMeta(datasetIndex); + var type = dataset.type || me.config.type; + + if (meta.type && meta.type !== type) { + me.destroyDatasetMeta(datasetIndex); + meta = me.getDatasetMeta(datasetIndex); + } + meta.type = type; + + types.push(meta.type); + + if (meta.controller) { + meta.controller.updateIndex(datasetIndex); + meta.controller.linkScales(); + } else { + var ControllerClass = Chart.controllers[meta.type]; + if (ControllerClass === undefined) { + throw new Error('"' + meta.type + '" is not a chart type.'); + } + + meta.controller = new ControllerClass(me, datasetIndex); + newControllers.push(meta.controller); + } + }, me); + + return newControllers; + }, + + /** + * Reset the elements of all datasets + * @private + */ + resetElements: function() { + var me = this; + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.reset(); + }, me); + }, + + /** + * Resets the chart back to it's state before the initial animation + */ + reset: function() { + this.resetElements(); + this.tooltip.initialize(); + }, + + update: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } + + updateConfig(me); + + // plugins options references might have change, let's invalidate the cache + // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + plugins._invalidate(me); + + if (plugins.notify(me, 'beforeUpdate') === false) { + return; + } + + // In case the entire data object changed + me.tooltip._data = me.data; + + // Make sure dataset controllers are updated and new controllers are reset + var newControllers = me.buildOrUpdateControllers(); + + // Make sure all dataset controllers have correct meta data counts + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); + }, me); + + me.updateLayout(); + + // Can only reset the new controllers after the scales have been updated + if (me.options.animation && me.options.animation.duration) { + helpers.each(newControllers, function(controller) { + controller.reset(); + }); + } + + me.updateDatasets(); + + // Need to reset tooltip in case it is displayed with elements that are removed + // after update. + me.tooltip.initialize(); + + // Last active contains items that were previously in the tooltip. + // When we reset the tooltip, we need to clear it + me.lastActive = []; + + // Do this before render so that any plugins that need final scale updates can use it + plugins.notify(me, 'afterUpdate'); + + if (me._bufferedRender) { + me._bufferedRequest = { + duration: config.duration, + easing: config.easing, + lazy: config.lazy + }; + } else { + me.render(config); + } + }, + + /** + * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` + * hook, in which case, plugins will not be called on `afterLayout`. + * @private + */ + updateLayout: function() { + var me = this; + + if (plugins.notify(me, 'beforeLayout') === false) { + return; + } + + layouts.update(this, this.width, this.height); + + /** + * Provided for backward compatibility, use `afterLayout` instead. + * @method IPlugin#afterScaleUpdate + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ + plugins.notify(me, 'afterScaleUpdate'); + plugins.notify(me, 'afterLayout'); + }, + + /** + * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` + * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. + * @private + */ + updateDatasets: function() { + var me = this; + + if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { + return; + } + + for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.updateDataset(i); + } + + plugins.notify(me, 'afterDatasetsUpdate'); + }, + + /** + * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` + * hook, in which case, plugins will not be called on `afterDatasetUpdate`. + * @private + */ + updateDataset: function(index) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index + }; + + if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { + return; + } + + meta.controller.update(); + + plugins.notify(me, 'afterDatasetUpdate', [args]); + }, + + render: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } + + var duration = config.duration; + var lazy = config.lazy; + + if (plugins.notify(me, 'beforeRender') === false) { + return; + } + + var animationOptions = me.options.animation; + var onComplete = function(animation) { + plugins.notify(me, 'afterRender'); + helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); + }; + + if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { + var animation = new Animation({ + numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps + easing: config.easing || animationOptions.easing, + + render: function(chart, animationObject) { + var easingFunction = helpers.easing.effects[animationObject.easing]; + var currentStep = animationObject.currentStep; + var stepDecimal = currentStep / animationObject.numSteps; + + chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); + }, + + onAnimationProgress: animationOptions.onProgress, + onAnimationComplete: onComplete + }); + + animations.addAnimation(me, animation, duration, lazy); + } else { + me.draw(); + + // See https://github.com/chartjs/Chart.js/issues/3781 + onComplete(new Animation({numSteps: 0, chart: me})); + } + + return me; + }, + + draw: function(easingValue) { + var me = this; + + me.clear(); + + if (helpers.isNullOrUndef(easingValue)) { + easingValue = 1; + } + + me.transition(easingValue); + + if (me.width <= 0 || me.height <= 0) { + return; + } + + if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { + return; + } + + // Draw all the scales + helpers.each(me.boxes, function(box) { + box.draw(me.chartArea); + }, me); + + if (me.scale) { + me.scale.draw(); + } + + me.drawDatasets(easingValue); + me._drawTooltip(easingValue); + + plugins.notify(me, 'afterDraw', [easingValue]); + }, + + /** + * @private + */ + transition: function(easingValue) { + var me = this; + + for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { + if (me.isDatasetVisible(i)) { + me.getDatasetMeta(i).controller.transition(easingValue); + } + } + + me.tooltip.transition(easingValue); + }, + + /** + * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` + * hook, in which case, plugins will not be called on `afterDatasetsDraw`. + * @private + */ + drawDatasets: function(easingValue) { + var me = this; + + if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { + return; + } + + // Draw datasets reversed to support proper line stacking + for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { + if (me.isDatasetVisible(i)) { + me.drawDataset(i, easingValue); + } + } + + plugins.notify(me, 'afterDatasetsDraw', [easingValue]); + }, + + /** + * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` + * hook, in which case, plugins will not be called on `afterDatasetDraw`. + * @private + */ + drawDataset: function(index, easingValue) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index, + easingValue: easingValue + }; + + if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { + return; + } + + meta.controller.draw(easingValue); + + plugins.notify(me, 'afterDatasetDraw', [args]); + }, + + /** + * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` + * hook, in which case, plugins will not be called on `afterTooltipDraw`. + * @private + */ + _drawTooltip: function(easingValue) { + var me = this; + var tooltip = me.tooltip; + var args = { + tooltip: tooltip, + easingValue: easingValue + }; + + if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { + return; + } + + tooltip.draw(); + + plugins.notify(me, 'afterTooltipDraw', [args]); + }, + + // Get the single element that was clicked on + // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw + getElementAtEvent: function(e) { + return Interaction.modes.single(this, e); + }, + + getElementsAtEvent: function(e) { + return Interaction.modes.label(this, e, {intersect: true}); + }, + + getElementsAtXAxis: function(e) { + return Interaction.modes['x-axis'](this, e, {intersect: true}); + }, + + getElementsAtEventForMode: function(e, mode, options) { + var method = Interaction.modes[mode]; + if (typeof method === 'function') { + return method(this, e, options); + } + + return []; + }, + + getDatasetAtEvent: function(e) { + return Interaction.modes.dataset(this, e, {intersect: true}); + }, + + getDatasetMeta: function(datasetIndex) { + var me = this; + var dataset = me.data.datasets[datasetIndex]; + if (!dataset._meta) { + dataset._meta = {}; + } + + var meta = dataset._meta[me.id]; + if (!meta) { + meta = dataset._meta[me.id] = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, // See isDatasetVisible() comment + xAxisID: null, + yAxisID: null + }; + } + + return meta; + }, + + getVisibleDatasetCount: function() { + var count = 0; + for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + if (this.isDatasetVisible(i)) { + count++; + } + } + return count; + }, + + isDatasetVisible: function(datasetIndex) { + var meta = this.getDatasetMeta(datasetIndex); + + // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, + // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. + return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; + }, + + generateLegend: function() { + return this.options.legendCallback(this); + }, + + /** + * @private + */ + destroyDatasetMeta: function(datasetIndex) { + var id = this.id; + var dataset = this.data.datasets[datasetIndex]; + var meta = dataset._meta && dataset._meta[id]; + + if (meta) { + meta.controller.destroy(); + delete dataset._meta[id]; + } + }, + + destroy: function() { + var me = this; + var canvas = me.canvas; + var i, ilen; + + me.stop(); + + // dataset controllers need to cleanup associated data + for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.destroyDatasetMeta(i); + } + + if (canvas) { + me.unbindEvents(); + helpers.canvas.clear(me); + platform.releaseContext(me.ctx); + me.canvas = null; + me.ctx = null; + } + + plugins.notify(me, 'destroy'); + + delete Chart.instances[me.id]; + }, + + toBase64Image: function() { + return this.canvas.toDataURL.apply(this.canvas, arguments); + }, + + initToolTip: function() { + var me = this; + me.tooltip = new Tooltip({ + _chart: me, + _chartInstance: me, // deprecated, backward compatibility + _data: me.data, + _options: me.options.tooltips + }, me); + }, + + /** + * @private + */ + bindEvents: function() { + var me = this; + var listeners = me._listeners = {}; + var listener = function() { + me.eventHandler.apply(me, arguments); + }; + + helpers.each(me.options.events, function(type) { + platform.addEventListener(me, type, listener); + listeners[type] = listener; + }); + + // Elements used to detect size change should not be injected for non responsive charts. + // See https://github.com/chartjs/Chart.js/issues/2210 + if (me.options.responsive) { + listener = function() { + me.resize(); + }; + + platform.addEventListener(me, 'resize', listener); + listeners.resize = listener; + } + }, + + /** + * @private + */ + unbindEvents: function() { + var me = this; + var listeners = me._listeners; + if (!listeners) { + return; + } + + delete me._listeners; + helpers.each(listeners, function(listener, type) { + platform.removeEventListener(me, type, listener); + }); + }, + + updateHoverStyle: function(elements, mode, enabled) { + var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; + var element, i, ilen; + + for (i = 0, ilen = elements.length; i < ilen; ++i) { + element = elements[i]; + if (element) { + this.getDatasetMeta(element._datasetIndex).controller[method](element); + } + } + }, + + /** + * @private + */ + eventHandler: function(e) { + var me = this; + var tooltip = me.tooltip; + + if (plugins.notify(me, 'beforeEvent', [e]) === false) { + return; + } + + // Buffer any update calls so that renders do not occur + me._bufferedRender = true; + me._bufferedRequest = null; + + var changed = me.handleEvent(e); + // for smooth tooltip animations issue #4989 + // the tooltip should be the source of change + // Animation check workaround: + // tooltip._start will be null when tooltip isn't animating + if (tooltip) { + changed = tooltip._start + ? tooltip.handleEvent(e) + : changed | tooltip.handleEvent(e); + } + + plugins.notify(me, 'afterEvent', [e]); + + var bufferedRequest = me._bufferedRequest; + if (bufferedRequest) { + // If we have an update that was triggered, we need to do a normal render + me.render(bufferedRequest); + } else if (changed && !me.animating) { + // If entering, leaving, or changing elements, animate the change via pivot + me.stop(); + + // We only need to render at this point. Updating will cause scales to be + // recomputed generating flicker & using more memory than necessary. + me.render({ + duration: me.options.hover.animationDuration, + lazy: true + }); + } + + me._bufferedRender = false; + me._bufferedRequest = null; + + return me; + }, + + /** + * Handle an event + * @private + * @param {IEvent} event the event to handle + * @return {Boolean} true if the chart needs to re-render + */ + handleEvent: function(e) { + var me = this; + var options = me.options || {}; + var hoverOptions = options.hover; + var changed = false; + + me.lastActive = me.lastActive || []; + + // Find Active Elements for hover and tooltips + if (e.type === 'mouseout') { + me.active = []; + } else { + me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); + } + + // Invoke onHover hook + // Need to call with native event here to not break backwards compatibility + helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); + + if (e.type === 'mouseup' || e.type === 'click') { + if (options.onClick) { + // Use e.native here for backwards compatibility + options.onClick.call(me, e.native, me.active); + } + } + + // Remove styling for last active (even if it may still be active) + if (me.lastActive.length) { + me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); + } + + // Built in hover styling + if (me.active.length && hoverOptions.mode) { + me.updateHoverStyle(me.active, hoverOptions.mode, true); + } + + changed = !helpers.arrayEquals(me.active, me.lastActive); + + // Remember Last Actives + me.lastActive = me.active; + + return changed; + } + }); + + /** + * Provided for backward compatibility, use Chart instead. + * @class Chart.Controller + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + Chart.Controller = Chart; +}; + +},{"22":22,"23":23,"26":26,"29":29,"31":31,"32":32,"34":34,"36":36,"46":46,"49":49}],25:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); + +module.exports = function(Chart) { + + var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; + + /** + * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', + * 'unshift') and notify the listener AFTER the array has been altered. Listeners are + * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + */ + function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } + + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] + } + }); + + arrayEvents.forEach(function(key) { + var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); + var base = array[key]; + + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value: function() { + var args = Array.prototype.slice.call(arguments); + var res = base.apply(this, args); + + helpers.each(array._chartjs.listeners, function(object) { + if (typeof object[method] === 'function') { + object[method].apply(object, args); + } + }); + + return res; + } + }); + }); + } + + /** + * Removes the given array event listener and cleanup extra attached properties (such as + * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + */ + function unlistenArrayEvents(array, listener) { + var stub = array._chartjs; + if (!stub) { + return; + } + + var listeners = stub.listeners; + var index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } + + if (listeners.length > 0) { + return; + } + + arrayEvents.forEach(function(key) { + delete array[key]; + }); + + delete array._chartjs; + } + + // Base class for all dataset controllers (line, bar, etc) + Chart.DatasetController = function(chart, datasetIndex) { + this.initialize(chart, datasetIndex); + }; + + helpers.extend(Chart.DatasetController.prototype, { + + /** + * Element type used to generate a meta dataset (e.g. Chart.element.Line). + * @type {Chart.core.element} + */ + datasetElementType: null, + + /** + * Element type used to generate a meta data (e.g. Chart.element.Point). + * @type {Chart.core.element} + */ + dataElementType: null, + + initialize: function(chart, datasetIndex) { + var me = this; + me.chart = chart; + me.index = datasetIndex; + me.linkScales(); + me.addElements(); + }, + + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, + + linkScales: function() { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); + + if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { + meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; + } + if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { + meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; + } + }, + + getDataset: function() { + return this.chart.data.datasets[this.index]; + }, + + getMeta: function() { + return this.chart.getDatasetMeta(this.index); + }, + + getScaleForId: function(scaleID) { + return this.chart.scales[scaleID]; + }, + + reset: function() { + this.update(true); + }, + + /** + * @private + */ + destroy: function() { + if (this._data) { + unlistenArrayEvents(this._data, this); + } + }, + + createMetaDataset: function() { + var me = this; + var type = me.datasetElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index + }); + }, + + createMetaData: function(index) { + var me = this; + var type = me.dataElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index, + _index: index + }); + }, + + addElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data || []; + var metaData = meta.data; + var i, ilen; + + for (i = 0, ilen = data.length; i < ilen; ++i) { + metaData[i] = metaData[i] || me.createMetaData(i); + } + + meta.dataset = meta.dataset || me.createMetaDataset(); + }, + + addElementAndReset: function(index) { + var element = this.createMetaData(index); + this.getMeta().data.splice(index, 0, element); + this.updateElement(element, index, true); + }, + + buildOrUpdateElements: function() { + var me = this; + var dataset = me.getDataset(); + var data = dataset.data || (dataset.data = []); + + // In order to correctly handle data addition/deletion animation (an thus simulate + // real-time charts), we need to monitor these data modifications and synchronize + // the internal meta data accordingly. + if (me._data !== data) { + if (me._data) { + // This case happens when the user replaced the data array instance. + unlistenArrayEvents(me._data, me); + } + + listenArrayEvents(data, me); + me._data = data; + } + + // Re-sync meta data in case the user replaced the data array or if we missed + // any updates and so make sure that we handle number of datapoints changing. + me.resyncElements(); + }, + + update: helpers.noop, + + transition: function(easingValue) { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + for (; i < ilen; ++i) { + elements[i].transition(easingValue); + } + + if (meta.dataset) { + meta.dataset.transition(easingValue); + } + }, + + draw: function() { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + if (meta.dataset) { + meta.dataset.draw(); + } + + for (; i < ilen; ++i) { + elements[i].draw(); + } + }, + + removeHoverStyle: function(element) { + helpers.merge(element._model, element.$previousStyle || {}); + delete element.$previousStyle; + }, + + setHoverStyle: function(element) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var getHoverColor = helpers.getHoverColor; + var model = element._model; + + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth + }; + + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); + }, + + /** + * @private + */ + resyncElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data; + var numMeta = meta.data.length; + var numData = data.length; + + if (numData < numMeta) { + meta.data.splice(numData, numMeta - numData); + } else if (numData > numMeta) { + me.insertElements(numMeta, numData - numMeta); + } + }, + + /** + * @private + */ + insertElements: function(start, count) { + for (var i = 0; i < count; ++i) { + this.addElementAndReset(start + i); + } + }, + + /** + * @private + */ + onDataPush: function() { + this.insertElements(this.getDataset().data.length - 1, arguments.length); + }, + + /** + * @private + */ + onDataPop: function() { + this.getMeta().data.pop(); + }, + + /** + * @private + */ + onDataShift: function() { + this.getMeta().data.shift(); + }, + + /** + * @private + */ + onDataSplice: function(start, count) { + this.getMeta().data.splice(start, count); + this.insertElements(start, arguments.length - 2); + }, + + /** + * @private + */ + onDataUnshift: function() { + this.insertElements(0, arguments.length); + } + }); + + Chart.DatasetController.extend = helpers.inherits; +}; + +},{"46":46}],26:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); + +module.exports = { + /** + * @private + */ + _set: function(scope, values) { + return helpers.merge(this[scope] || (this[scope] = {}), values); + } +}; + +},{"46":46}],27:[function(require,module,exports){ +'use strict'; + +var color = require(2); +var helpers = require(46); + +function interpolate(start, view, model, ease) { + var keys = Object.keys(model); + var i, ilen, key, actual, origin, target, type, c0, c1; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + + target = model[key]; + + // if a value is added to the model after pivot() has been called, the view + // doesn't contain it, so let's initialize the view to the target value. + if (!view.hasOwnProperty(key)) { + view[key] = target; + } + + actual = view[key]; + + if (actual === target || key[0] === '_') { + continue; + } + + if (!start.hasOwnProperty(key)) { + start[key] = actual; + } + + origin = start[key]; + + type = typeof target; + + if (type === typeof origin) { + if (type === 'string') { + c0 = color(origin); + if (c0.valid) { + c1 = color(target); + if (c1.valid) { + view[key] = c1.mix(c0, ease).rgbString(); + continue; + } + } + } else if (type === 'number' && isFinite(origin) && isFinite(target)) { + view[key] = origin + (target - origin) * ease; + continue; + } + } + + view[key] = target; + } +} + +var Element = function(configuration) { + helpers.extend(this, configuration); + this.initialize.apply(this, arguments); +}; + +helpers.extend(Element.prototype, { + + initialize: function() { + this.hidden = false; + }, + + pivot: function() { + var me = this; + if (!me._view) { + me._view = helpers.clone(me._model); + } + me._start = {}; + return me; + }, + + transition: function(ease) { + var me = this; + var model = me._model; + var start = me._start; + var view = me._view; + + // No animation -> No Transition + if (!model || ease === 1) { + me._view = model; + me._start = null; + return me; + } + + if (!view) { + view = me._view = {}; + } + + if (!start) { + start = me._start = {}; + } + + interpolate(start, view, model, ease); + + return me; + }, + + tooltipPosition: function() { + return { + x: this._model.x, + y: this._model.y + }; + }, + + hasValue: function() { + return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); + } +}); + +Element.extend = helpers.inherits; + +module.exports = Element; + +},{"2":2,"46":46}],28:[function(require,module,exports){ +/* global window: false */ +/* global document: false */ +'use strict'; + +var color = require(2); +var defaults = require(26); +var helpers = require(46); +var scaleService = require(34); + +module.exports = function() { + + // -- Basic js utility methods + + helpers.configMerge = function(/* objects ... */) { + return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { + merger: function(key, target, source, options) { + var tval = target[key] || {}; + var sval = source[key]; + + if (key === 'scales') { + // scale config merging is complex. Add our own function here for that + target[key] = helpers.scaleMerge(tval, sval); + } else if (key === 'scale') { + // used in polar area & radar charts since there is only one scale + target[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]); + } else { + helpers._merger(key, target, source, options); + } + } + }); + }; + + helpers.scaleMerge = function(/* objects ... */) { + return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { + merger: function(key, target, source, options) { + if (key === 'xAxes' || key === 'yAxes') { + var slen = source[key].length; + var i, type, scale; + + if (!target[key]) { + target[key] = []; + } + + for (i = 0; i < slen; ++i) { + scale = source[key][i]; + type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); + + if (i >= target[key].length) { + target[key].push({}); + } + + if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { + // new/untyped scale or type changed: let's apply the new defaults + // then merge source scale to correctly overwrite the defaults. + helpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]); + } else { + // scales type are the same + helpers.merge(target[key][i], scale); + } + } + } else { + helpers._merger(key, target, source, options); + } + } + }); + }; + + helpers.where = function(collection, filterCallback) { + if (helpers.isArray(collection) && Array.prototype.filter) { + return collection.filter(filterCallback); + } + var filtered = []; + + helpers.each(collection, function(item) { + if (filterCallback(item)) { + filtered.push(item); + } + }); + + return filtered; + }; + helpers.findIndex = Array.prototype.findIndex ? + function(array, callback, scope) { + return array.findIndex(callback, scope); + } : + function(array, callback, scope) { + scope = scope === undefined ? array : scope; + for (var i = 0, ilen = array.length; i < ilen; ++i) { + if (callback.call(scope, array[i], i, array)) { + return i; + } + } + return -1; + }; + helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to start of the array + if (helpers.isNullOrUndef(startIndex)) { + startIndex = -1; + } + for (var i = startIndex + 1; i < arrayToSearch.length; i++) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to end of the array + if (helpers.isNullOrUndef(startIndex)) { + startIndex = arrayToSearch.length; + } + for (var i = startIndex - 1; i >= 0; i--) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + + // -- Math methods + helpers.isNumber = function(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + }; + helpers.almostEquals = function(x, y, epsilon) { + return Math.abs(x - y) < epsilon; + }; + helpers.almostWhole = function(x, epsilon) { + var rounded = Math.round(x); + return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); + }; + helpers.max = function(array) { + return array.reduce(function(max, value) { + if (!isNaN(value)) { + return Math.max(max, value); + } + return max; + }, Number.NEGATIVE_INFINITY); + }; + helpers.min = function(array) { + return array.reduce(function(min, value) { + if (!isNaN(value)) { + return Math.min(min, value); + } + return min; + }, Number.POSITIVE_INFINITY); + }; + helpers.sign = Math.sign ? + function(x) { + return Math.sign(x); + } : + function(x) { + x = +x; // convert to a number + if (x === 0 || isNaN(x)) { + return x; + } + return x > 0 ? 1 : -1; + }; + helpers.log10 = Math.log10 ? + function(x) { + return Math.log10(x); + } : + function(x) { + var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. + // Check for whole powers of 10, + // which due to floating point rounding error should be corrected. + var powerOf10 = Math.round(exponent); + var isPowerOf10 = x === Math.pow(10, powerOf10); + + return isPowerOf10 ? powerOf10 : exponent; + }; + helpers.toRadians = function(degrees) { + return degrees * (Math.PI / 180); + }; + helpers.toDegrees = function(radians) { + return radians * (180 / Math.PI); + }; + // Gets the angle from vertical upright to the point about a centre. + helpers.getAngleFromPoint = function(centrePoint, anglePoint) { + var distanceFromXCenter = anglePoint.x - centrePoint.x; + var distanceFromYCenter = anglePoint.y - centrePoint.y; + var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + + var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + + if (angle < (-0.5 * Math.PI)) { + angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] + } + + return { + angle: angle, + distance: radialDistanceFromCenter + }; + }; + helpers.distanceBetweenPoints = function(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); + }; + helpers.aliasPixel = function(pixelWidth) { + return (pixelWidth % 2 === 0) ? 0 : 0.5; + }; + helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { + // Props to Rob Spencer at scaled innovation for his post on splining between points + // http://scaledinnovation.com/analytics/splines/aboutSplines.html + + // This function must also respect "skipped" points + + var previous = firstPoint.skip ? middlePoint : firstPoint; + var current = middlePoint; + var next = afterPoint.skip ? middlePoint : afterPoint; + + var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); + var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); + + var s01 = d01 / (d01 + d12); + var s12 = d12 / (d01 + d12); + + // If all points are the same, s01 & s02 will be inf + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; + + var fa = t * s01; // scaling factor for triangle Ta + var fb = t * s12; + + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) + } + }; + }; + helpers.EPSILON = Number.EPSILON || 1e-14; + helpers.splineCurveMonotone = function(points) { + // This function calculates Bézier control points in a similar way than |splineCurve|, + // but preserves monotonicity of the provided data and ensures no local extremums are added + // between the dataset discrete points due to the interpolation. + // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation + + var pointsWithTangents = (points || []).map(function(point) { + return { + model: point._model, + deltaK: 0, + mK: 0 + }; + }); + + // Calculate slopes (deltaK) and initialize tangents (mK) + var pointsLen = pointsWithTangents.length; + var i, pointBefore, pointCurrent, pointAfter; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } + + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointAfter && !pointAfter.model.skip) { + var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); + + // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 + pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; + } + + if (!pointBefore || pointBefore.model.skip) { + pointCurrent.mK = pointCurrent.deltaK; + } else if (!pointAfter || pointAfter.model.skip) { + pointCurrent.mK = pointBefore.deltaK; + } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { + pointCurrent.mK = 0; + } else { + pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; + } + } + + // Adjust tangents to ensure monotonic properties + var alphaK, betaK, tauK, squaredMagnitude; + for (i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointsWithTangents[i]; + pointAfter = pointsWithTangents[i + 1]; + if (pointCurrent.model.skip || pointAfter.model.skip) { + continue; + } + + if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { + pointCurrent.mK = pointAfter.mK = 0; + continue; + } + + alphaK = pointCurrent.mK / pointCurrent.deltaK; + betaK = pointAfter.mK / pointCurrent.deltaK; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } + + tauK = 3 / Math.sqrt(squaredMagnitude); + pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; + pointAfter.mK = betaK * tauK * pointCurrent.deltaK; + } + + // Compute control points + var deltaX; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } + + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointBefore && !pointBefore.model.skip) { + deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; + pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; + pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; + } + if (pointAfter && !pointAfter.model.skip) { + deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; + pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; + pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + } + } + }; + helpers.nextItem = function(collection, index, loop) { + if (loop) { + return index >= collection.length - 1 ? collection[0] : collection[index + 1]; + } + return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; + }; + helpers.previousItem = function(collection, index, loop) { + if (loop) { + return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; + } + return index <= 0 ? collection[0] : collection[index - 1]; + }; + // Implementation of the nice number algorithm used in determining where axis labels will go + helpers.niceNum = function(range, round) { + var exponent = Math.floor(helpers.log10(range)); + var fraction = range / Math.pow(10, exponent); + var niceFraction; + + if (round) { + if (fraction < 1.5) { + niceFraction = 1; + } else if (fraction < 3) { + niceFraction = 2; + } else if (fraction < 7) { + niceFraction = 5; + } else { + niceFraction = 10; + } + } else if (fraction <= 1.0) { + niceFraction = 1; + } else if (fraction <= 2) { + niceFraction = 2; + } else if (fraction <= 5) { + niceFraction = 5; + } else { + niceFraction = 10; + } + + return niceFraction * Math.pow(10, exponent); + }; + // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ + helpers.requestAnimFrame = (function() { + if (typeof window === 'undefined') { + return function(callback) { + callback(); + }; + } + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + return window.setTimeout(callback, 1000 / 60); + }; + }()); + // -- DOM methods + helpers.getRelativePosition = function(evt, chart) { + var mouseX, mouseY; + var e = evt.originalEvent || evt; + var canvas = evt.target || evt.srcElement; + var boundingRect = canvas.getBoundingClientRect(); + + var touches = e.touches; + if (touches && touches.length > 0) { + mouseX = touches[0].clientX; + mouseY = touches[0].clientY; + + } else { + mouseX = e.clientX; + mouseY = e.clientY; + } + + // Scale mouse coordinates into canvas coordinates + // by following the pattern laid out by 'jerryj' in the comments of + // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ + var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); + var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); + var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); + var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); + var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; + var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; + + // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However + // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here + mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); + mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); + + return { + x: mouseX, + y: mouseY + }; + + }; + + // Private helper function to convert max-width/max-height values that may be percentages into a number + function parseMaxStyle(styleValue, node, parentProperty) { + var valueInPixels; + if (typeof styleValue === 'string') { + valueInPixels = parseInt(styleValue, 10); + + if (styleValue.indexOf('%') !== -1) { + // percentage * size in dimension + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + } + } else { + valueInPixels = styleValue; + } + + return valueInPixels; + } + + /** + * Returns if the given value contains an effective constraint. + * @private + */ + function isConstrainedValue(value) { + return value !== undefined && value !== null && value !== 'none'; + } + + // Private helper to get a constraint dimension + // @param domNode : the node to check the constraint on + // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) + // @param percentageProperty : property of parent to use when calculating width as a percentage + // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser + function getConstraintDimension(domNode, maxStyle, percentageProperty) { + var view = document.defaultView; + var parentNode = helpers._getParentNode(domNode); + var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; + var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; + var hasCNode = isConstrainedValue(constrainedNode); + var hasCContainer = isConstrainedValue(constrainedContainer); + var infinity = Number.POSITIVE_INFINITY; + + if (hasCNode || hasCContainer) { + return Math.min( + hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, + hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); + } + + return 'none'; + } + // returns Number or undefined if no constraint + helpers.getConstraintWidth = function(domNode) { + return getConstraintDimension(domNode, 'max-width', 'clientWidth'); + }; + // returns Number or undefined if no constraint + helpers.getConstraintHeight = function(domNode) { + return getConstraintDimension(domNode, 'max-height', 'clientHeight'); + }; + /** + * @private + */ + helpers._calculatePadding = function(container, padding, parentDimension) { + padding = helpers.getStyle(container, padding); + + return padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10); + }; + /** + * @private + */ + helpers._getParentNode = function(domNode) { + var parent = domNode.parentNode; + if (parent && parent.host) { + parent = parent.host; + } + return parent; + }; + helpers.getMaximumWidth = function(domNode) { + var container = helpers._getParentNode(domNode); + if (!container) { + return domNode.clientWidth; + } + + var clientWidth = container.clientWidth; + var paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth); + var paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth); + + var w = clientWidth - paddingLeft - paddingRight; + var cw = helpers.getConstraintWidth(domNode); + return isNaN(cw) ? w : Math.min(w, cw); + }; + helpers.getMaximumHeight = function(domNode) { + var container = helpers._getParentNode(domNode); + if (!container) { + return domNode.clientHeight; + } + + var clientHeight = container.clientHeight; + var paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight); + var paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight); + + var h = clientHeight - paddingTop - paddingBottom; + var ch = helpers.getConstraintHeight(domNode); + return isNaN(ch) ? h : Math.min(h, ch); + }; + helpers.getStyle = function(el, property) { + return el.currentStyle ? + el.currentStyle[property] : + document.defaultView.getComputedStyle(el, null).getPropertyValue(property); + }; + helpers.retinaScale = function(chart, forceRatio) { + var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; + if (pixelRatio === 1) { + return; + } + + var canvas = chart.canvas; + var height = chart.height; + var width = chart.width; + + canvas.height = height * pixelRatio; + canvas.width = width * pixelRatio; + chart.ctx.scale(pixelRatio, pixelRatio); + + // If no style has been set on the canvas, the render size is used as display size, + // making the chart visually bigger, so let's enforce it to the "correct" values. + // See https://github.com/chartjs/Chart.js/issues/3575 + if (!canvas.style.height && !canvas.style.width) { + canvas.style.height = height + 'px'; + canvas.style.width = width + 'px'; + } + }; + // -- Canvas methods + helpers.fontString = function(pixelSize, fontStyle, fontFamily) { + return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; + }; + helpers.longestText = function(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + var data = cache.data = cache.data || {}; + var gc = cache.garbageCollect = cache.garbageCollect || []; + + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } + + ctx.font = font; + var longest = 0; + helpers.each(arrayOfThings, function(thing) { + // Undefined strings and arrays should not be measured + if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { + longest = helpers.measureText(ctx, data, gc, longest, thing); + } else if (helpers.isArray(thing)) { + // if it is an array lets measure each element + // to do maybe simplify this function a bit so we can do this more recursively? + helpers.each(thing, function(nestedThing) { + // Undefined strings and arrays should not be measured + if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { + longest = helpers.measureText(ctx, data, gc, longest, nestedThing); + } + }); + } + }); + + var gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (var i = 0; i < gcLen; i++) { + delete data[gc[i]]; + } + gc.splice(0, gcLen); + } + return longest; + }; + helpers.measureText = function(ctx, data, gc, longest, string) { + var textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; + }; + helpers.numberOfLabelLines = function(arrayOfThings) { + var numberOfLines = 1; + helpers.each(arrayOfThings, function(thing) { + if (helpers.isArray(thing)) { + if (thing.length > numberOfLines) { + numberOfLines = thing.length; + } + } + }); + return numberOfLines; + }; + + helpers.color = !color ? + function(value) { + console.error('Color.js not found!'); + return value; + } : + function(value) { + /* global CanvasGradient */ + if (value instanceof CanvasGradient) { + value = defaults.global.defaultColor; + } + + return color(value); + }; + + helpers.getHoverColor = function(colorValue) { + /* global CanvasPattern */ + return (colorValue instanceof CanvasPattern) ? + colorValue : + helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); + }; +}; + +},{"2":2,"26":26,"34":34,"46":46}],29:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); + +/** + * Helper function to get relative position for an event + * @param {Event|IEvent} event - The event to get the position for + * @param {Chart} chart - The chart + * @returns {Point} the event position + */ +function getRelativePosition(e, chart) { + if (e.native) { + return { + x: e.x, + y: e.y + }; + } + + return helpers.getRelativePosition(e, chart); +} + +/** + * Helper function to traverse all of the visible elements in the chart + * @param chart {chart} the chart + * @param handler {Function} the callback to execute for each visible item + */ +function parseVisibleItems(chart, handler) { + var datasets = chart.data.datasets; + var meta, i, j, ilen, jlen; + + for (i = 0, ilen = datasets.length; i < ilen; ++i) { + if (!chart.isDatasetVisible(i)) { + continue; + } + + meta = chart.getDatasetMeta(i); + for (j = 0, jlen = meta.data.length; j < jlen; ++j) { + var element = meta.data[j]; + if (!element._view.skip) { + handler(element); + } + } + } +} + +/** + * Helper function to get the items that intersect the event position + * @param items {ChartElement[]} elements to filter + * @param position {Point} the point to be nearest to + * @return {ChartElement[]} the nearest items + */ +function getIntersectItems(chart, position) { + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + } + }); + + return elements; +} + +/** + * Helper function to get the items nearest to the event position considering all visible items in teh chart + * @param chart {Chart} the chart to look at elements from + * @param position {Point} the point to be nearest to + * @param intersect {Boolean} if true, only consider items that intersect the position + * @param distanceMetric {Function} function to provide the distance between points + * @return {ChartElement[]} the nearest items + */ +function getNearestItems(chart, position, intersect, distanceMetric) { + var minDistance = Number.POSITIVE_INFINITY; + var nearestItems = []; + + parseVisibleItems(chart, function(element) { + if (intersect && !element.inRange(position.x, position.y)) { + return; + } + + var center = element.getCenterPoint(); + var distance = distanceMetric(position, center); + + if (distance < minDistance) { + nearestItems = [element]; + minDistance = distance; + } else if (distance === minDistance) { + // Can have multiple items at the same distance in which case we sort by size + nearestItems.push(element); + } + }); + + return nearestItems; +} + +/** + * Get a distance metric function for two points based on the + * axis mode setting + * @param {String} axis the axis mode. x|y|xy + */ +function getDistanceMetricForAxis(axis) { + var useX = axis.indexOf('x') !== -1; + var useY = axis.indexOf('y') !== -1; + + return function(pt1, pt2) { + var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} + +function indexMode(chart, e, options) { + var position = getRelativePosition(e, chart); + // Default axis for index mode is 'x' to match old behaviour + options.axis = options.axis || 'x'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var elements = []; + + if (!items.length) { + return []; + } + + chart.data.datasets.forEach(function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + var element = meta.data[items[0]._index]; + + // don't count items that are skipped (null data) + if (element && !element._view.skip) { + elements.push(element); + } + } + }); + + return elements; +} + +/** + * @interface IInteractionOptions + */ +/** + * If true, only consider items that intersect the point + * @name IInterfaceOptions#boolean + * @type Boolean + */ + +/** + * Contains interaction related functions + * @namespace Chart.Interaction + */ +module.exports = { + // Helper function for different modes + modes: { + single: function(chart, e) { + var position = getRelativePosition(e, chart); + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + return elements; + } + }); + + return elements.slice(0, 1); + }, + + /** + * @function Chart.Interaction.modes.label + * @deprecated since version 2.4.0 + * @todo remove at version 3 + * @private + */ + label: indexMode, + + /** + * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item + * @function Chart.Interaction.modes.index + * @since v2.4.0 + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + index: indexMode, + + /** + * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect is false, we find the nearest item and return the items in that dataset + * @function Chart.Interaction.modes.dataset + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + dataset: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + + if (items.length > 0) { + items = chart.getDatasetMeta(items[0]._datasetIndex).data; + } + + return items; + }, + + /** + * @function Chart.Interaction.modes.x-axis + * @deprecated since version 2.4.0. Use index mode and intersect == true + * @todo remove at version 3 + * @private + */ + 'x-axis': function(chart, e) { + return indexMode(chart, e, {intersect: false}); + }, + + /** + * Point mode returns all elements that hit test based on the event position + * of the event + * @function Chart.Interaction.modes.intersect + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + point: function(chart, e) { + var position = getRelativePosition(e, chart); + return getIntersectItems(chart, position); + }, + + /** + * nearest mode returns the element closest to the point + * @function Chart.Interaction.modes.intersect + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + nearest: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); + + // We have multiple items at the same distance from the event. Now sort by smallest + if (nearestItems.length > 1) { + nearestItems.sort(function(a, b) { + var sizeA = a.getArea(); + var sizeB = b.getArea(); + var ret = sizeA - sizeB; + + if (ret === 0) { + // if equal sort by dataset index + ret = a._datasetIndex - b._datasetIndex; + } + + return ret; + }); + } + + // Return only 1 item + return nearestItems.slice(0, 1); + }, + + /** + * x mode returns the elements that hit-test at the current x coordinate + * @function Chart.Interaction.modes.x + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + x: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inXRange(position.x)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + }, + + /** + * y mode returns the elements that hit-test at the current y coordinate + * @function Chart.Interaction.modes.y + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + y: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inYRange(position.y)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + } + } +}; + +},{"46":46}],30:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); + +defaults._set('global', { + responsive: true, + responsiveAnimationDuration: 0, + maintainAspectRatio: true, + events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], + hover: { + onHover: null, + mode: 'nearest', + intersect: true, + animationDuration: 400 + }, + onClick: null, + defaultColor: 'rgba(0,0,0,0.1)', + defaultFontColor: '#666', + defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + defaultFontSize: 12, + defaultFontStyle: 'normal', + showLines: true, + + // Element defaults defined in element extensions + elements: {}, + + // Layout options such as padding + layout: { + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } +}); + +module.exports = function() { + + // Occupy the global variable of Chart, and create a simple base class + var Chart = function(item, config) { + this.construct(item, config); + return this; + }; + + Chart.Chart = Chart; + + return Chart; +}; + +},{"26":26}],31:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); + +function filterByPosition(array, position) { + return helpers.where(array, function(v) { + return v.position === position; + }); +} + +function sortByWeight(array, reverse) { + array.forEach(function(v, i) { + v._tmpIndex_ = i; + return v; + }); + array.sort(function(a, b) { + var v0 = reverse ? b : a; + var v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0._tmpIndex_ - v1._tmpIndex_ : + v0.weight - v1.weight; + }); + array.forEach(function(v) { + delete v._tmpIndex_; + }); +} + +/** + * @interface ILayoutItem + * @prop {String} position - The position of the item in the chart layout. Possible values are + * 'left', 'top', 'right', 'bottom', and 'chartArea' + * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area + * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down + * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) + * @prop {Function} update - Takes two parameters: width and height. Returns size of item + * @prop {Function} getPadding - Returns an object with padding on the edges + * @prop {Number} width - Width of item. Must be valid after update() + * @prop {Number} height - Height of item. Must be valid after update() + * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update + * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update + * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update + * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update + */ + +// The layout service is very self explanatory. It's responsible for the layout within a chart. +// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need +// It is this service's responsibility of carrying out that layout. +module.exports = { + defaults: {}, + + /** + * Register a box to a chart. + * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. + * @param {Chart} chart - the chart to use + * @param {ILayoutItem} item - the item to add to be layed out + */ + addBox: function(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } + + // initialize item with default values + item.fullWidth = item.fullWidth || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; + + chart.boxes.push(item); + }, + + /** + * Remove a layoutItem from a chart + * @param {Chart} chart - the chart to remove the box from + * @param {Object} layoutItem - the item to remove from the layout + */ + removeBox: function(chart, layoutItem) { + var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index !== -1) { + chart.boxes.splice(index, 1); + } + }, + + /** + * Sets (or updates) options on the given `item`. + * @param {Chart} chart - the chart in which the item lives (or will be added to) + * @param {Object} item - the item to configure with the given options + * @param {Object} options - the new item options. + */ + configure: function(chart, item, options) { + var props = ['fullWidth', 'position', 'weight']; + var ilen = props.length; + var i = 0; + var prop; + + for (; i < ilen; ++i) { + prop = props[i]; + if (options.hasOwnProperty(prop)) { + item[prop] = options[prop]; + } + } + }, + + /** + * Fits boxes of the given chart into the given size by having each box measure itself + * then running a fitting algorithm + * @param {Chart} chart - the chart + * @param {Number} width - the width to fit into + * @param {Number} height - the height to fit into + */ + update: function(chart, width, height) { + if (!chart) { + return; + } + + var layoutOptions = chart.options.layout || {}; + var padding = helpers.options.toPadding(layoutOptions.padding); + var leftPadding = padding.left; + var rightPadding = padding.right; + var topPadding = padding.top; + var bottomPadding = padding.bottom; + + var leftBoxes = filterByPosition(chart.boxes, 'left'); + var rightBoxes = filterByPosition(chart.boxes, 'right'); + var topBoxes = filterByPosition(chart.boxes, 'top'); + var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); + var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); + + // Sort boxes by weight. A higher weight is further away from the chart area + sortByWeight(leftBoxes, true); + sortByWeight(rightBoxes, false); + sortByWeight(topBoxes, true); + sortByWeight(bottomBoxes, false); + + // Essentially we now have any number of boxes on each of the 4 sides. + // Our canvas looks like the following. + // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and + // B1 is the bottom axis + // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays + // These locations are single-box locations only, when trying to register a chartArea location that is already taken, + // an error will be thrown. + // + // |----------------------------------------------------| + // | T1 (Full Width) | + // |----------------------------------------------------| + // | | | T2 | | + // | |----|-------------------------------------|----| + // | | | C1 | | C2 | | + // | | |----| |----| | + // | | | | | + // | L1 | L2 | ChartArea (C0) | R1 | + // | | | | | + // | | |----| |----| | + // | | | C3 | | C4 | | + // | |----|-------------------------------------|----| + // | | | B1 | | + // |----------------------------------------------------| + // | B2 (Full Width) | + // |----------------------------------------------------| + // + // What we do to find the best sizing, we do the following + // 1. Determine the minimum size of the chart area. + // 2. Split the remaining width equally between each vertical axis + // 3. Split the remaining height equally between each horizontal axis + // 4. Give each layout the maximum size it can be. The layout will return it's minimum size + // 5. Adjust the sizes of each axis based on it's minimum reported size. + // 6. Refit each axis + // 7. Position each axis in the final location + // 8. Tell the chart the final location of the chart area + // 9. Tell any axes that overlay the chart area the positions of the chart area + + // Step 1 + var chartWidth = width - leftPadding - rightPadding; + var chartHeight = height - topPadding - bottomPadding; + var chartAreaWidth = chartWidth / 2; // min 50% + var chartAreaHeight = chartHeight / 2; // min 50% + + // Step 2 + var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); + + // Step 3 + var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); + + // Step 4 + var maxChartAreaWidth = chartWidth; + var maxChartAreaHeight = chartHeight; + var minBoxSizes = []; + + function getMinimumBoxSize(box) { + var minSize; + var isHorizontal = box.isHorizontal(); + + if (isHorizontal) { + minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); + maxChartAreaHeight -= minSize.height; + } else { + minSize = box.update(verticalBoxWidth, maxChartAreaHeight); + maxChartAreaWidth -= minSize.width; + } + + minBoxSizes.push({ + horizontal: isHorizontal, + minSize: minSize, + box: box, + }); + } + + helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); + + // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) + var maxHorizontalLeftPadding = 0; + var maxHorizontalRightPadding = 0; + var maxVerticalTopPadding = 0; + var maxVerticalBottomPadding = 0; + + helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { + if (horizontalBox.getPadding) { + var boxPadding = horizontalBox.getPadding(); + maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); + maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); + } + }); + + helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { + if (verticalBox.getPadding) { + var boxPadding = verticalBox.getPadding(); + maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); + maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); + } + }); + + // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could + // be if the axes are drawn at their minimum sizes. + // Steps 5 & 6 + var totalLeftBoxesWidth = leftPadding; + var totalRightBoxesWidth = rightPadding; + var totalTopBoxesHeight = topPadding; + var totalBottomBoxesHeight = bottomPadding; + + // Function to fit a box + function fitBox(box) { + var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { + return minBox.box === box; + }); + + if (minBoxSize) { + if (box.isHorizontal()) { + var scaleMargin = { + left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), + right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), + top: 0, + bottom: 0 + }; + + // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends + // on the margin. Sometimes they need to increase in size slightly + box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); + } else { + box.update(minBoxSize.minSize.width, maxChartAreaHeight); + } + } + } + + // Update, and calculate the left and right margins for the horizontal boxes + helpers.each(leftBoxes.concat(rightBoxes), fitBox); + + helpers.each(leftBoxes, function(box) { + totalLeftBoxesWidth += box.width; + }); + + helpers.each(rightBoxes, function(box) { + totalRightBoxesWidth += box.width; + }); + + // Set the Left and Right margins for the horizontal boxes + helpers.each(topBoxes.concat(bottomBoxes), fitBox); + + // Figure out how much margin is on the top and bottom of the vertical boxes + helpers.each(topBoxes, function(box) { + totalTopBoxesHeight += box.height; + }); + + helpers.each(bottomBoxes, function(box) { + totalBottomBoxesHeight += box.height; + }); + + function finalFitVerticalBox(box) { + var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { + return minSize.box === box; + }); + + var scaleMargin = { + left: 0, + right: 0, + top: totalTopBoxesHeight, + bottom: totalBottomBoxesHeight + }; + + if (minBoxSize) { + box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); + } + } + + // Let the left layout know the final margin + helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); + + // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) + totalLeftBoxesWidth = leftPadding; + totalRightBoxesWidth = rightPadding; + totalTopBoxesHeight = topPadding; + totalBottomBoxesHeight = bottomPadding; + + helpers.each(leftBoxes, function(box) { + totalLeftBoxesWidth += box.width; + }); + + helpers.each(rightBoxes, function(box) { + totalRightBoxesWidth += box.width; + }); + + helpers.each(topBoxes, function(box) { + totalTopBoxesHeight += box.height; + }); + helpers.each(bottomBoxes, function(box) { + totalBottomBoxesHeight += box.height; + }); + + // We may be adding some padding to account for rotated x axis labels + var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); + totalLeftBoxesWidth += leftPaddingAddition; + totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); + + var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); + totalTopBoxesHeight += topPaddingAddition; + totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); + + // Figure out if our chart area changed. This would occur if the dataset layout label rotation + // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do + // without calling `fit` again + var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; + var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; + + if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { + helpers.each(leftBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers.each(rightBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers.each(topBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; + } + }); + + helpers.each(bottomBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; + } + }); + + maxChartAreaHeight = newMaxChartAreaHeight; + maxChartAreaWidth = newMaxChartAreaWidth; + } + + // Step 7 - Position the boxes + var left = leftPadding + leftPaddingAddition; + var top = topPadding + topPaddingAddition; + + function placeBox(box) { + if (box.isHorizontal()) { + box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; + box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; + box.top = top; + box.bottom = top + box.height; + + // Move to next point + top = box.bottom; + + } else { + + box.left = left; + box.right = left + box.width; + box.top = totalTopBoxesHeight; + box.bottom = totalTopBoxesHeight + maxChartAreaHeight; + + // Move to next point + left = box.right; + } + } + + helpers.each(leftBoxes.concat(topBoxes), placeBox); + + // Account for chart width and height + left += maxChartAreaWidth; + top += maxChartAreaHeight; + + helpers.each(rightBoxes, placeBox); + helpers.each(bottomBoxes, placeBox); + + // Step 8 + chart.chartArea = { + left: totalLeftBoxesWidth, + top: totalTopBoxesHeight, + right: totalLeftBoxesWidth + maxChartAreaWidth, + bottom: totalTopBoxesHeight + maxChartAreaHeight + }; + + // Step 9 + helpers.each(chartAreaBoxes, function(box) { + box.left = chart.chartArea.left; + box.top = chart.chartArea.top; + box.right = chart.chartArea.right; + box.bottom = chart.chartArea.bottom; + + box.update(maxChartAreaWidth, maxChartAreaHeight); + }); + } +}; + +},{"46":46}],32:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var helpers = require(46); + +defaults._set('global', { + plugins: {} +}); + +/** + * The plugin service singleton + * @namespace Chart.plugins + * @since 2.1.0 + */ +module.exports = { + /** + * Globally registered plugins. + * @private + */ + _plugins: [], + + /** + * This identifier is used to invalidate the descriptors cache attached to each chart + * when a global plugin is registered or unregistered. In this case, the cache ID is + * incremented and descriptors are regenerated during following API calls. + * @private + */ + _cacheId: 0, + + /** + * Registers the given plugin(s) if not already registered. + * @param {Array|Object} plugins plugin instance(s). + */ + register: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + if (p.indexOf(plugin) === -1) { + p.push(plugin); + } + }); + + this._cacheId++; + }, + + /** + * Unregisters the given plugin(s) only if registered. + * @param {Array|Object} plugins plugin instance(s). + */ + unregister: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + var idx = p.indexOf(plugin); + if (idx !== -1) { + p.splice(idx, 1); + } + }); + + this._cacheId++; + }, + + /** + * Remove all registered plugins. + * @since 2.1.5 + */ + clear: function() { + this._plugins = []; + this._cacheId++; + }, + + /** + * Returns the number of registered plugins? + * @returns {Number} + * @since 2.1.5 + */ + count: function() { + return this._plugins.length; + }, + + /** + * Returns all registered plugin instances. + * @returns {Array} array of plugin objects. + * @since 2.1.5 + */ + getAll: function() { + return this._plugins; + }, + + /** + * Calls enabled plugins for `chart` on the specified hook and with the given args. + * This method immediately returns as soon as a plugin explicitly returns false. The + * returned value can be used, for instance, to interrupt the current action. + * @param {Object} chart - The chart instance for which plugins should be called. + * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). + * @param {Array} [args] - Extra arguments to apply to the hook call. + * @returns {Boolean} false if any of the plugins return false, else returns true. + */ + notify: function(chart, hook, args) { + var descriptors = this.descriptors(chart); + var ilen = descriptors.length; + var i, descriptor, plugin, params, method; + + for (i = 0; i < ilen; ++i) { + descriptor = descriptors[i]; + plugin = descriptor.plugin; + method = plugin[hook]; + if (typeof method === 'function') { + params = [chart].concat(args || []); + params.push(descriptor.options); + if (method.apply(plugin, params) === false) { + return false; + } + } + } + + return true; + }, + + /** + * Returns descriptors of enabled plugins for the given chart. + * @returns {Array} [{ plugin, options }] + * @private + */ + descriptors: function(chart) { + var cache = chart.$plugins || (chart.$plugins = {}); + if (cache.id === this._cacheId) { + return cache.descriptors; + } + + var plugins = []; + var descriptors = []; + var config = (chart && chart.config) || {}; + var options = (config.options && config.options.plugins) || {}; + + this._plugins.concat(config.plugins || []).forEach(function(plugin) { + var idx = plugins.indexOf(plugin); + if (idx !== -1) { + return; + } + + var id = plugin.id; + var opts = options[id]; + if (opts === false) { + return; + } + + if (opts === true) { + opts = helpers.clone(defaults.global.plugins[id]); + } + + plugins.push(plugin); + descriptors.push({ + plugin: plugin, + options: opts || {} + }); + }); + + cache.descriptors = descriptors; + cache.id = this._cacheId; + return descriptors; + }, + + /** + * Invalidates cache for the given chart: descriptors hold a reference on plugin option, + * but in some cases, this reference can be changed by the user when updating options. + * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + * @private + */ + _invalidate: function(chart) { + delete chart.$plugins; + } +}; + +/** + * Plugin extension hooks. + * @interface IPlugin + * @since 2.1.0 + */ +/** + * @method IPlugin#beforeInit + * @desc Called before initializing `chart`. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#afterInit + * @desc Called after `chart` has been initialized and before the first update. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeUpdate + * @desc Called before updating `chart`. If any plugin returns `false`, the update + * is cancelled (and thus subsequent render(s)) until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart update. + */ +/** + * @method IPlugin#afterUpdate + * @desc Called after `chart` has been updated and before rendering. Note that this + * hook will not be called if the chart update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDatasetsUpdate + * @desc Called before updating the `chart` datasets. If any plugin returns `false`, + * the datasets update is cancelled until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} false to cancel the datasets update. + * @since version 2.1.5 +*/ +/** + * @method IPlugin#afterDatasetsUpdate + * @desc Called after the `chart` datasets have been updated. Note that this hook + * will not be called if the datasets update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @since version 2.1.5 + */ +/** + * @method IPlugin#beforeDatasetUpdate + * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin + * returns `false`, the datasets update is cancelled until another `update` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ +/** + * @method IPlugin#afterDatasetUpdate + * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note + * that this hook will not be called if the datasets update has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeLayout + * @desc Called before laying out `chart`. If any plugin returns `false`, + * the layout update is cancelled until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart layout. + */ +/** + * @method IPlugin#afterLayout + * @desc Called after the `chart` has been layed out. Note that this hook will not + * be called if the layout update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeRender + * @desc Called before rendering `chart`. If any plugin returns `false`, + * the rendering is cancelled until another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart rendering. + */ +/** + * @method IPlugin#afterRender + * @desc Called after the `chart` has been fully rendered (and animation completed). Note + * that this hook will not be called if the rendering has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDraw + * @desc Called before drawing `chart` at every animation frame specified by the given + * easing value. If any plugin returns `false`, the frame drawing is cancelled until + * another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart drawing. + */ +/** + * @method IPlugin#afterDraw + * @desc Called after the `chart` has been drawn for the specific easing value. Note + * that this hook will not be called if the drawing has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDatasetsDraw + * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, + * the datasets drawing is cancelled until another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ +/** + * @method IPlugin#afterDatasetsDraw + * @desc Called after the `chart` datasets have been drawn. Note that this hook + * will not be called if the datasets drawing has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDatasetDraw + * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets + * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing + * is cancelled until another `render` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ +/** + * @method IPlugin#afterDatasetDraw + * @desc Called after the `chart` datasets at the given `args.index` have been drawn + * (datasets are drawn in the reverse order). Note that this hook will not be called + * if the datasets drawing has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeTooltipDraw + * @desc Called before drawing the `tooltip`. If any plugin returns `false`, + * the tooltip drawing is cancelled until another `render` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Object} args.tooltip - The tooltip. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart tooltip drawing. + */ +/** + * @method IPlugin#afterTooltipDraw + * @desc Called after drawing the `tooltip`. Note that this hook will not + * be called if the tooltip drawing has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Object} args.tooltip - The tooltip. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeEvent + * @desc Called before processing the specified `event`. If any plugin returns `false`, + * the event will be discarded. + * @param {Chart.Controller} chart - The chart instance. + * @param {IEvent} event - The event object. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#afterEvent + * @desc Called after the `event` has been consumed. Note that this hook + * will not be called if the `event` has been previously discarded. + * @param {Chart.Controller} chart - The chart instance. + * @param {IEvent} event - The event object. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#resize + * @desc Called after the chart as been resized. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} size - The new canvas display size (eq. canvas.style width & height). + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#destroy + * @desc Called after the chart as been destroyed. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + +},{"26":26,"46":46}],33:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); +var Ticks = require(35); + +defaults._set('scale', { + display: true, + position: 'left', + offset: false, + + // grid line settings + gridLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1, + drawBorder: true, + drawOnChartArea: true, + drawTicks: true, + tickMarkLength: 10, + zeroLineWidth: 1, + zeroLineColor: 'rgba(0,0,0,0.25)', + zeroLineBorderDash: [], + zeroLineBorderDashOffset: 0.0, + offsetGridLines: false, + borderDash: [], + borderDashOffset: 0.0 + }, + + // scale label + scaleLabel: { + // display property + display: false, + + // actual label + labelString: '', + + // line height + lineHeight: 1.2, + + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } + }, + + // label settings + ticks: { + beginAtZero: false, + minRotation: 0, + maxRotation: 50, + mirror: false, + padding: 0, + reverse: false, + display: true, + autoSkip: true, + autoSkipPadding: 0, + labelOffset: 0, + // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. + callback: Ticks.formatters.values, + minor: {}, + major: {} + } +}); + +function labelsFromTicks(ticks) { + var labels = []; + var i, ilen; + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(ticks[i].label); + } + + return labels; +} + +function getLineValue(scale, index, offsetGridLines) { + var lineValue = scale.getPixelForTick(index); + + if (offsetGridLines) { + if (index === 0) { + lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; + } else { + lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; + } + } + return lineValue; +} + +function computeTextSize(context, tick, font) { + return helpers.isArray(tick) ? + helpers.longestText(context, font, tick) : + context.measureText(tick).width; +} + +function parseFontOptions(options) { + var valueOrDefault = helpers.valueOrDefault; + var globalDefaults = defaults.global; + var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); + var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); + var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); + + return { + size: size, + style: style, + family: family, + font: helpers.fontString(size, style, family) + }; +} + +function parseLineHeight(options) { + return helpers.options.toLineHeight( + helpers.valueOrDefault(options.lineHeight, 1.2), + helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); +} + +module.exports = Element.extend({ + /** + * Get the padding needed for the scale + * @method getPadding + * @private + * @returns {Padding} the necessary padding + */ + getPadding: function() { + var me = this; + return { + left: me.paddingLeft || 0, + top: me.paddingTop || 0, + right: me.paddingRight || 0, + bottom: me.paddingBottom || 0 + }; + }, + + /** + * Returns the scale tick objects ({label, major}) + * @since 2.7 + */ + getTicks: function() { + return this._ticks; + }, + + // These methods are ordered by lifecyle. Utilities then follow. + // Any function defined here is inherited by all scale types. + // Any function can be extended by the scale type + + mergeTicksOptions: function() { + var ticks = this.options.ticks; + if (ticks.minor === false) { + ticks.minor = { + display: false + }; + } + if (ticks.major === false) { + ticks.major = { + display: false + }; + } + for (var key in ticks) { + if (key !== 'major' && key !== 'minor') { + if (typeof ticks.minor[key] === 'undefined') { + ticks.minor[key] = ticks[key]; + } + if (typeof ticks.major[key] === 'undefined') { + ticks.major[key] = ticks[key]; + } + } + } + }, + beforeUpdate: function() { + helpers.callback(this.options.beforeUpdate, [this]); + }, + + update: function(maxWidth, maxHeight, margins) { + var me = this; + var i, ilen, labels, label, ticks, tick; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = helpers.extend({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + me.longestTextCache = me.longestTextCache || {}; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + + // Data min/max + me.beforeDataLimits(); + me.determineDataLimits(); + me.afterDataLimits(); + + // Ticks - `this.ticks` is now DEPRECATED! + // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member + // and must not be accessed directly from outside this class. `this.ticks` being + // around for long time and not marked as private, we can't change its structure + // without unexpected breaking changes. If you need to access the scale ticks, + // use scale.getTicks() instead. + + me.beforeBuildTicks(); + + // New implementations should return an array of objects but for BACKWARD COMPAT, + // we still support no return (`this.ticks` internally set by calling this method). + ticks = me.buildTicks() || []; + + me.afterBuildTicks(); + + me.beforeTickToLabelConversion(); + + // New implementations should return the formatted tick labels but for BACKWARD + // COMPAT, we still support no return (`this.ticks` internally changed by calling + // this method and supposed to contain only string values). + labels = me.convertTicksToLabels(ticks) || me.ticks; + + me.afterTickToLabelConversion(); + + me.ticks = labels; // BACKWARD COMPATIBILITY + + // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! + + // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) + for (i = 0, ilen = labels.length; i < ilen; ++i) { + label = labels[i]; + tick = ticks[i]; + if (!tick) { + ticks.push(tick = { + label: label, + major: false + }); + } else { + tick.label = label; + } + } + + me._ticks = ticks; + + // Tick Rotation + me.beforeCalculateTickRotation(); + me.calculateTickRotation(); + me.afterCalculateTickRotation(); + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + + }, + afterUpdate: function() { + helpers.callback(this.options.afterUpdate, [this]); + }, + + // + + beforeSetDimensions: function() { + helpers.callback(this.options.beforeSetDimensions, [this]); + }, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + }, + afterSetDimensions: function() { + helpers.callback(this.options.afterSetDimensions, [this]); + }, + + // Data limits + beforeDataLimits: function() { + helpers.callback(this.options.beforeDataLimits, [this]); + }, + determineDataLimits: helpers.noop, + afterDataLimits: function() { + helpers.callback(this.options.afterDataLimits, [this]); + }, + + // + beforeBuildTicks: function() { + helpers.callback(this.options.beforeBuildTicks, [this]); + }, + buildTicks: helpers.noop, + afterBuildTicks: function() { + helpers.callback(this.options.afterBuildTicks, [this]); + }, + + beforeTickToLabelConversion: function() { + helpers.callback(this.options.beforeTickToLabelConversion, [this]); + }, + convertTicksToLabels: function() { + var me = this; + // Convert ticks to strings + var tickOpts = me.options.ticks; + me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); + }, + afterTickToLabelConversion: function() { + helpers.callback(this.options.afterTickToLabelConversion, [this]); + }, + + // + + beforeCalculateTickRotation: function() { + helpers.callback(this.options.beforeCalculateTickRotation, [this]); + }, + calculateTickRotation: function() { + var me = this; + var context = me.ctx; + var tickOpts = me.options.ticks; + var labels = labelsFromTicks(me._ticks); + + // Get the width of each grid by calculating the difference + // between x offsets between 0 and 1. + var tickFont = parseFontOptions(tickOpts); + context.font = tickFont.font; + + var labelRotation = tickOpts.minRotation || 0; + + if (labels.length && me.options.display && me.isHorizontal()) { + var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); + var labelWidth = originalLabelWidth; + var cosRotation, sinRotation; + + // Allow 3 pixels x2 padding either side for label readability + var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; + + // Max label rotation can be set or default to 90 - also act as a loop counter + while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { + var angleRadians = helpers.toRadians(labelRotation); + cosRotation = Math.cos(angleRadians); + sinRotation = Math.sin(angleRadians); + + if (sinRotation * originalLabelWidth > me.maxHeight) { + // go back one step + labelRotation--; + break; + } + + labelRotation++; + labelWidth = cosRotation * originalLabelWidth; + } + } + + me.labelRotation = labelRotation; + }, + afterCalculateTickRotation: function() { + helpers.callback(this.options.afterCalculateTickRotation, [this]); + }, + + // + + beforeFit: function() { + helpers.callback(this.options.beforeFit, [this]); + }, + fit: function() { + var me = this; + // Reset + var minSize = me.minSize = { + width: 0, + height: 0 + }; + + var labels = labelsFromTicks(me._ticks); + + var opts = me.options; + var tickOpts = opts.ticks; + var scaleLabelOpts = opts.scaleLabel; + var gridLineOpts = opts.gridLines; + var display = opts.display; + var isHorizontal = me.isHorizontal(); + + var tickFont = parseFontOptions(tickOpts); + var tickMarkLength = opts.gridLines.tickMarkLength; + + // Width + if (isHorizontal) { + // subtract the margins to line up with the chartArea if we are a full width scale + minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; + } else { + minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } + + // height + if (isHorizontal) { + minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } else { + minSize.height = me.maxHeight; // fill all the height + } + + // Are we showing a title for the scale? + if (scaleLabelOpts.display && display) { + var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); + var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); + var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; + + if (isHorizontal) { + minSize.height += deltaHeight; + } else { + minSize.width += deltaHeight; + } + } + + // Don't bother fitting the ticks if we are not showing them + if (tickOpts.display && display) { + var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); + var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); + var lineSpace = tickFont.size * 0.5; + var tickPadding = me.options.ticks.padding; + + if (isHorizontal) { + // A horizontal axis is more constrained by the height. + me.longestLabelWidth = largestTextWidth; + + var angleRadians = helpers.toRadians(me.labelRotation); + var cosRotation = Math.cos(angleRadians); + var sinRotation = Math.sin(angleRadians); + + // TODO - improve this calculation + var labelHeight = (sinRotation * largestTextWidth) + + (tickFont.size * tallestLabelHeightInLines) + + (lineSpace * (tallestLabelHeightInLines - 1)) + + lineSpace; // padding + + minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); + + me.ctx.font = tickFont.font; + var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); + var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); + + // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned + // which means that the right padding is dominated by the font height + if (me.labelRotation !== 0) { + me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges + me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; + } else { + me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges + me.paddingRight = lastLabelWidth / 2 + 3; + } + } else { + // A vertical axis is more constrained by the width. Labels are the + // dominant factor here, so get that length first and account for padding + if (tickOpts.mirror) { + largestTextWidth = 0; + } else { + // use lineSpace for consistency with horizontal axis + // tickPadding is not implemented for horizontal + largestTextWidth += tickPadding + lineSpace; + } + + minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + + me.paddingTop = tickFont.size / 2; + me.paddingBottom = tickFont.size / 2; + } + } + + me.handleMargins(); + + me.width = minSize.width; + me.height = minSize.height; + }, + + /** + * Handle margins and padding interactions + * @private + */ + handleMargins: function() { + var me = this; + if (me.margins) { + me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); + me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); + me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); + me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); + } + }, + + afterFit: function() { + helpers.callback(this.options.afterFit, [this]); + }, + + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + isFullWidth: function() { + return (this.options.fullWidth); + }, + + // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not + getRightValue: function(rawValue) { + // Null and undefined values first + if (helpers.isNullOrUndef(rawValue)) { + return NaN; + } + // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values + if (typeof rawValue === 'number' && !isFinite(rawValue)) { + return NaN; + } + // If it is in fact an object, dive in one more level + if (rawValue) { + if (this.isHorizontal()) { + if (rawValue.x !== undefined) { + return this.getRightValue(rawValue.x); + } + } else if (rawValue.y !== undefined) { + return this.getRightValue(rawValue.y); + } + } + + // Value is good, return it + return rawValue; + }, + + /** + * Used to get the value to display in the tooltip for the data at the given index + * @param index + * @param datasetIndex + */ + getLabelForIndex: helpers.noop, + + /** + * Returns the location of the given data point. Value can either be an index or a numerical value + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param value + * @param index + * @param datasetIndex + */ + getPixelForValue: helpers.noop, + + /** + * Used to get the data value from a given pixel. This is the inverse of getPixelForValue + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param pixel + */ + getValueForPixel: helpers.noop, + + /** + * Returns the location of the tick at the given index + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForTick: function(index) { + var me = this; + var offset = me.options.offset; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var pixel = (tickWidth * index) + me.paddingLeft; + + if (offset) { + pixel += tickWidth / 2; + } + + var finalVal = me.left + Math.round(pixel); + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; + } + var innerHeight = me.height - (me.paddingTop + me.paddingBottom); + return me.top + (index * (innerHeight / (me._ticks.length - 1))); + }, + + /** + * Utility for getting the pixel location of a percentage of scale + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForDecimal: function(decimal) { + var me = this; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var valueOffset = (innerWidth * decimal) + me.paddingLeft; + + var finalVal = me.left + Math.round(valueOffset); + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; + } + return me.top + (decimal * me.height); + }, + + /** + * Returns the pixel for the minimum chart value + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getBasePixel: function() { + return this.getPixelForValue(this.getBaseValue()); + }, + + getBaseValue: function() { + var me = this; + var min = me.min; + var max = me.max; + + return me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0; + }, + + /** + * Returns a subset of ticks to be plotted to avoid overlapping labels. + * @private + */ + _autoSkip: function(ticks) { + var skipRatio; + var me = this; + var isHorizontal = me.isHorizontal(); + var optionTicks = me.options.ticks.minor; + var tickCount = ticks.length; + var labelRotationRadians = helpers.toRadians(me.labelRotation); + var cosRotation = Math.cos(labelRotationRadians); + var longestRotatedLabel = me.longestLabelWidth * cosRotation; + var result = []; + var i, tick, shouldSkip; + + // figure out the maximum number of gridlines to show + var maxTicks; + if (optionTicks.maxTicksLimit) { + maxTicks = optionTicks.maxTicksLimit; + } + + if (isHorizontal) { + skipRatio = false; + + if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { + skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); + } + + // if they defined a max number of optionTicks, + // increase skipRatio until that number is met + if (maxTicks && tickCount > maxTicks) { + skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); + } + } + + for (i = 0; i < tickCount; i++) { + tick = ticks[i]; + + // Since we always show the last tick,we need may need to hide the last shown one before + shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); + if (shouldSkip && i !== tickCount - 1) { + // leave tick in place but make sure it's not displayed (#4635) + delete tick.label; + } + result.push(tick); + } + return result; + }, + + // Actually draw the scale on the canvas + // @param {rectangle} chartArea : the area of the chart to draw full grid lines on + draw: function(chartArea) { + var me = this; + var options = me.options; + if (!options.display) { + return; + } + + var context = me.ctx; + var globalDefaults = defaults.global; + var optionTicks = options.ticks.minor; + var optionMajorTicks = options.ticks.major || optionTicks; + var gridLines = options.gridLines; + var scaleLabel = options.scaleLabel; + + var isRotated = me.labelRotation !== 0; + var isHorizontal = me.isHorizontal(); + + var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); + var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); + var tickFont = parseFontOptions(optionTicks); + var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); + var majorTickFont = parseFontOptions(optionMajorTicks); + + var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; + + var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); + var scaleLabelFont = parseFontOptions(scaleLabel); + var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); + var labelRotationRadians = helpers.toRadians(me.labelRotation); + + var itemsToDraw = []; + + var axisWidth = me.options.gridLines.lineWidth; + var xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl; + var xTickEnd = options.position === 'right' ? me.left + tl : me.right; + var yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth; + var yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth; + + helpers.each(ticks, function(tick, index) { + // autoskipper skipped this tick (#4635) + if (helpers.isNullOrUndef(tick.label)) { + return; + } + + var label = tick.label; + var lineWidth, lineColor, borderDash, borderDashOffset; + if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { + // Draw the first index specially + lineWidth = gridLines.zeroLineWidth; + lineColor = gridLines.zeroLineColor; + borderDash = gridLines.zeroLineBorderDash; + borderDashOffset = gridLines.zeroLineBorderDashOffset; + } else { + lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); + lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); + borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); + borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); + } + + // Common properties + var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; + var textAlign = 'middle'; + var textBaseline = 'middle'; + var tickPadding = optionTicks.padding; + + if (isHorizontal) { + var labelYOffset = tl + tickPadding; + + if (options.position === 'bottom') { + // bottom + textBaseline = !isRotated ? 'top' : 'middle'; + textAlign = !isRotated ? 'center' : 'right'; + labelY = me.top + labelYOffset; + } else { + // top + textBaseline = !isRotated ? 'bottom' : 'middle'; + textAlign = !isRotated ? 'center' : 'left'; + labelY = me.bottom - labelYOffset; + } + + var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); + if (xLineValue < me.left) { + lineColor = 'rgba(0,0,0,0)'; + } + xLineValue += helpers.aliasPixel(lineWidth); + + labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) + + tx1 = tx2 = x1 = x2 = xLineValue; + ty1 = yTickStart; + ty2 = yTickEnd; + y1 = chartArea.top; + y2 = chartArea.bottom + axisWidth; + } else { + var isLeft = options.position === 'left'; + var labelXOffset; + + if (optionTicks.mirror) { + textAlign = isLeft ? 'left' : 'right'; + labelXOffset = tickPadding; + } else { + textAlign = isLeft ? 'right' : 'left'; + labelXOffset = tl + tickPadding; + } + + labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; + + var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); + if (yLineValue < me.top) { + lineColor = 'rgba(0,0,0,0)'; + } + yLineValue += helpers.aliasPixel(lineWidth); + + labelY = me.getPixelForTick(index) + optionTicks.labelOffset; + + tx1 = xTickStart; + tx2 = xTickEnd; + x1 = chartArea.left; + x2 = chartArea.right + axisWidth; + ty1 = ty2 = y1 = y2 = yLineValue; + } + + itemsToDraw.push({ + tx1: tx1, + ty1: ty1, + tx2: tx2, + ty2: ty2, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + labelX: labelX, + labelY: labelY, + glWidth: lineWidth, + glColor: lineColor, + glBorderDash: borderDash, + glBorderDashOffset: borderDashOffset, + rotation: -1 * labelRotationRadians, + label: label, + major: tick.major, + textBaseline: textBaseline, + textAlign: textAlign + }); + }); + + // Draw all of the tick labels, tick marks, and grid lines at the correct places + helpers.each(itemsToDraw, function(itemToDraw) { + if (gridLines.display) { + context.save(); + context.lineWidth = itemToDraw.glWidth; + context.strokeStyle = itemToDraw.glColor; + if (context.setLineDash) { + context.setLineDash(itemToDraw.glBorderDash); + context.lineDashOffset = itemToDraw.glBorderDashOffset; + } + + context.beginPath(); + + if (gridLines.drawTicks) { + context.moveTo(itemToDraw.tx1, itemToDraw.ty1); + context.lineTo(itemToDraw.tx2, itemToDraw.ty2); + } + + if (gridLines.drawOnChartArea) { + context.moveTo(itemToDraw.x1, itemToDraw.y1); + context.lineTo(itemToDraw.x2, itemToDraw.y2); + } + + context.stroke(); + context.restore(); + } + + if (optionTicks.display) { + // Make sure we draw text in the correct color and font + context.save(); + context.translate(itemToDraw.labelX, itemToDraw.labelY); + context.rotate(itemToDraw.rotation); + context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; + context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; + context.textBaseline = itemToDraw.textBaseline; + context.textAlign = itemToDraw.textAlign; + + var label = itemToDraw.label; + if (helpers.isArray(label)) { + var lineCount = label.length; + var lineHeight = tickFont.size * 1.5; + var y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2; + + for (var i = 0; i < lineCount; ++i) { + // We just make sure the multiline element is a string here.. + context.fillText('' + label[i], 0, y); + // apply same lineSpacing as calculated @ L#320 + y += lineHeight; + } + } else { + context.fillText(label, 0, 0); + } + context.restore(); + } + }); + + if (scaleLabel.display) { + // Draw the scale label + var scaleLabelX; + var scaleLabelY; + var rotation = 0; + var halfLineHeight = parseLineHeight(scaleLabel) / 2; + + if (isHorizontal) { + scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width + scaleLabelY = options.position === 'bottom' + ? me.bottom - halfLineHeight - scaleLabelPadding.bottom + : me.top + halfLineHeight + scaleLabelPadding.top; + } else { + var isLeft = options.position === 'left'; + scaleLabelX = isLeft + ? me.left + halfLineHeight + scaleLabelPadding.top + : me.right - halfLineHeight - scaleLabelPadding.top; + scaleLabelY = me.top + ((me.bottom - me.top) / 2); + rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; + } + + context.save(); + context.translate(scaleLabelX, scaleLabelY); + context.rotate(rotation); + context.textAlign = 'center'; + context.textBaseline = 'middle'; + context.fillStyle = scaleLabelFontColor; // render in correct colour + context.font = scaleLabelFont.font; + context.fillText(scaleLabel.labelString, 0, 0); + context.restore(); + } + + if (gridLines.drawBorder) { + // Draw the line at the edge of the axis + context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); + context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); + var x1 = me.left; + var x2 = me.right + axisWidth; + var y1 = me.top; + var y2 = me.bottom + axisWidth; + + var aliasPixel = helpers.aliasPixel(context.lineWidth); + if (isHorizontal) { + y1 = y2 = options.position === 'top' ? me.bottom : me.top; + y1 += aliasPixel; + y2 += aliasPixel; + } else { + x1 = x2 = options.position === 'left' ? me.right : me.left; + x1 += aliasPixel; + x2 += aliasPixel; + } + + context.beginPath(); + context.moveTo(x1, y1); + context.lineTo(x2, y2); + context.stroke(); + } + } +}); + +},{"26":26,"27":27,"35":35,"46":46}],34:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var helpers = require(46); +var layouts = require(31); + +module.exports = { + // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then + // use the new chart options to grab the correct scale + constructors: {}, + // Use a registration function so that we can move to an ES6 map when we no longer need to support + // old browsers + + // Scale config defaults + defaults: {}, + registerScaleType: function(type, scaleConstructor, scaleDefaults) { + this.constructors[type] = scaleConstructor; + this.defaults[type] = helpers.clone(scaleDefaults); + }, + getScaleConstructor: function(type) { + return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; + }, + getScaleDefaults: function(type) { + // Return the scale defaults merged with the global settings so that we always use the latest ones + return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; + }, + updateScaleDefaults: function(type, additions) { + var me = this; + if (me.defaults.hasOwnProperty(type)) { + me.defaults[type] = helpers.extend(me.defaults[type], additions); + } + }, + addScalesToLayout: function(chart) { + // Adds each scale to the chart.boxes array to be sized accordingly + helpers.each(chart.scales, function(scale) { + // Set ILayoutItem parameters for backwards compatibility + scale.fullWidth = scale.options.fullWidth; + scale.position = scale.options.position; + scale.weight = scale.options.weight; + layouts.addBox(chart, scale); + }); + } +}; + +},{"26":26,"31":31,"46":46}],35:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); + +/** + * Namespace to hold static tick generation functions + * @namespace Chart.Ticks + */ +module.exports = { + /** + * Namespace to hold formatters for different types of ticks + * @namespace Chart.Ticks.formatters + */ + formatters: { + /** + * Formatter for value labels + * @method Chart.Ticks.formatters.values + * @param value the value to display + * @return {String|Array} the label to display + */ + values: function(value) { + return helpers.isArray(value) ? value : '' + value; + }, + + /** + * Formatter for linear numeric ticks + * @method Chart.Ticks.formatters.linear + * @param tickValue {Number} the value to be formatted + * @param index {Number} the position of the tickValue parameter in the ticks array + * @param ticks {Array} the list of ticks being converted + * @return {String} string representation of the tickValue parameter + */ + linear: function(tickValue, index, ticks) { + // If we have lots of ticks, don't use the ones + var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; + + // If we have a number like 2.5 as the delta, figure out how many decimal places we need + if (Math.abs(delta) > 1) { + if (tickValue !== Math.floor(tickValue)) { + // not an integer + delta = tickValue - Math.floor(tickValue); + } + } + + var logDelta = helpers.log10(Math.abs(delta)); + var tickString = ''; + + if (tickValue !== 0) { + var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); + if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation + var logTick = helpers.log10(Math.abs(tickValue)); + tickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta)); + } else { + var numDecimal = -1 * Math.floor(logDelta); + numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places + tickString = tickValue.toFixed(numDecimal); + } + } else { + tickString = '0'; // never show decimal places for 0 + } + + return tickString; + }, + + logarithmic: function(tickValue, index, ticks) { + var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); + + if (tickValue === 0) { + return '0'; + } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { + return tickValue.toExponential(); + } + return ''; + } + } +}; + +},{"46":46}],36:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); + +defaults._set('global', { + tooltips: { + enabled: true, + custom: null, + mode: 'nearest', + position: 'average', + intersect: true, + backgroundColor: 'rgba(0,0,0,0.8)', + titleFontStyle: 'bold', + titleSpacing: 2, + titleMarginBottom: 6, + titleFontColor: '#fff', + titleAlign: 'left', + bodySpacing: 2, + bodyFontColor: '#fff', + bodyAlign: 'left', + footerFontStyle: 'bold', + footerSpacing: 2, + footerMarginTop: 6, + footerFontColor: '#fff', + footerAlign: 'left', + yPadding: 6, + xPadding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + multiKeyBackground: '#fff', + displayColors: true, + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + callbacks: { + // Args are: (tooltipItems, data) + beforeTitle: helpers.noop, + title: function(tooltipItems, data) { + // Pick first xLabel for now + var title = ''; + var labels = data.labels; + var labelCount = labels ? labels.length : 0; + + if (tooltipItems.length > 0) { + var item = tooltipItems[0]; + + if (item.xLabel) { + title = item.xLabel; + } else if (labelCount > 0 && item.index < labelCount) { + title = labels[item.index]; + } + } + + return title; + }, + afterTitle: helpers.noop, + + // Args are: (tooltipItems, data) + beforeBody: helpers.noop, + + // Args are: (tooltipItem, data) + beforeLabel: helpers.noop, + label: function(tooltipItem, data) { + var label = data.datasets[tooltipItem.datasetIndex].label || ''; + + if (label) { + label += ': '; + } + label += tooltipItem.yLabel; + return label; + }, + labelColor: function(tooltipItem, chart) { + var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); + var activeElement = meta.data[tooltipItem.index]; + var view = activeElement._view; + return { + borderColor: view.borderColor, + backgroundColor: view.backgroundColor + }; + }, + labelTextColor: function() { + return this._options.bodyFontColor; + }, + afterLabel: helpers.noop, + + // Args are: (tooltipItems, data) + afterBody: helpers.noop, + + // Args are: (tooltipItems, data) + beforeFooter: helpers.noop, + footer: helpers.noop, + afterFooter: helpers.noop + } + } +}); + +var positioners = { + /** + * Average mode places the tooltip at the average position of the elements shown + * @function Chart.Tooltip.positioners.average + * @param elements {ChartElement[]} the elements being displayed in the tooltip + * @returns {Point} tooltip position + */ + average: function(elements) { + if (!elements.length) { + return false; + } + + var i, len; + var x = 0; + var y = 0; + var count = 0; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var pos = el.tooltipPosition(); + x += pos.x; + y += pos.y; + ++count; + } + } + + return { + x: Math.round(x / count), + y: Math.round(y / count) + }; + }, + + /** + * Gets the tooltip position nearest of the item nearest to the event position + * @function Chart.Tooltip.positioners.nearest + * @param elements {Chart.Element[]} the tooltip elements + * @param eventPosition {Point} the position of the event in canvas coordinates + * @returns {Point} the tooltip position + */ + nearest: function(elements, eventPosition) { + var x = eventPosition.x; + var y = eventPosition.y; + var minDistance = Number.POSITIVE_INFINITY; + var i, len, nearestElement; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var center = el.getCenterPoint(); + var d = helpers.distanceBetweenPoints(eventPosition, center); + + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } + + if (nearestElement) { + var tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } + + return { + x: x, + y: y + }; + } +}; + +/** + * Helper method to merge the opacity into a color + */ +function mergeOpacity(colorString, opacity) { + var color = helpers.color(colorString); + return color.alpha(opacity * color.alpha()).rgbaString(); +} + +// Helper to push or concat based on if the 2nd parameter is an array or not +function pushOrConcat(base, toPush) { + if (toPush) { + if (helpers.isArray(toPush)) { + // base = base.concat(toPush); + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } + + return base; +} + +/** + * Returns array of strings split by newline + * @param {String} value - The value to split by newline. + * @returns {Array} value if newline present - Returned from String split() method + * @function + */ +function splitNewlines(str) { + if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { + return str.split('\n'); + } + return str; +} + + +// Private helper to create a tooltip item model +// @param element : the chart element (point, arc, bar) to create the tooltip item for +// @return : new tooltip item +function createTooltipItem(element) { + var xScale = element._xScale; + var yScale = element._yScale || element._scale; // handle radar || polarArea charts + var index = element._index; + var datasetIndex = element._datasetIndex; + + return { + xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', + yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', + index: index, + datasetIndex: datasetIndex, + x: element._model.x, + y: element._model.y + }; +} + +/** + * Helper to get the reset model for the tooltip + * @param tooltipOpts {Object} the tooltip options + */ +function getBaseModel(tooltipOpts) { + var globalDefaults = defaults.global; + var valueOrDefault = helpers.valueOrDefault; + + return { + // Positioning + xPadding: tooltipOpts.xPadding, + yPadding: tooltipOpts.yPadding, + xAlign: tooltipOpts.xAlign, + yAlign: tooltipOpts.yAlign, + + // Body + bodyFontColor: tooltipOpts.bodyFontColor, + _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), + _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), + _bodyAlign: tooltipOpts.bodyAlign, + bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), + bodySpacing: tooltipOpts.bodySpacing, + + // Title + titleFontColor: tooltipOpts.titleFontColor, + _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), + _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), + titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), + _titleAlign: tooltipOpts.titleAlign, + titleSpacing: tooltipOpts.titleSpacing, + titleMarginBottom: tooltipOpts.titleMarginBottom, + + // Footer + footerFontColor: tooltipOpts.footerFontColor, + _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), + _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), + footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), + _footerAlign: tooltipOpts.footerAlign, + footerSpacing: tooltipOpts.footerSpacing, + footerMarginTop: tooltipOpts.footerMarginTop, + + // Appearance + caretSize: tooltipOpts.caretSize, + cornerRadius: tooltipOpts.cornerRadius, + backgroundColor: tooltipOpts.backgroundColor, + opacity: 0, + legendColorBackground: tooltipOpts.multiKeyBackground, + displayColors: tooltipOpts.displayColors, + borderColor: tooltipOpts.borderColor, + borderWidth: tooltipOpts.borderWidth + }; +} + +/** + * Get the size of the tooltip + */ +function getTooltipSize(tooltip, model) { + var ctx = tooltip._chart.ctx; + + var height = model.yPadding * 2; // Tooltip Padding + var width = 0; + + // Count of all lines in the body + var body = model.body; + var combinedBodyLength = body.reduce(function(count, bodyItem) { + return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; + }, 0); + combinedBodyLength += model.beforeBody.length + model.afterBody.length; + + var titleLineCount = model.title.length; + var footerLineCount = model.footer.length; + var titleFontSize = model.titleFontSize; + var bodyFontSize = model.bodyFontSize; + var footerFontSize = model.footerFontSize; + + height += titleLineCount * titleFontSize; // Title Lines + height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing + height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin + height += combinedBodyLength * bodyFontSize; // Body Lines + height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing + height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin + height += footerLineCount * (footerFontSize); // Footer Lines + height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing + + // Title width + var widthPadding = 0; + var maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); + }; + + ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); + helpers.each(model.title, maxLineWidth); + + // Body width + ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); + helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); + + // Body lines may include some extra width due to the color box + widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; + helpers.each(body, function(bodyItem) { + helpers.each(bodyItem.before, maxLineWidth); + helpers.each(bodyItem.lines, maxLineWidth); + helpers.each(bodyItem.after, maxLineWidth); + }); + + // Reset back to 0 + widthPadding = 0; + + // Footer width + ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); + helpers.each(model.footer, maxLineWidth); + + // Add padding + width += 2 * model.xPadding; + + return { + width: width, + height: height + }; +} + +/** + * Helper to get the alignment of a tooltip given the size + */ +function determineAlignment(tooltip, size) { + var model = tooltip._model; + var chart = tooltip._chart; + var chartArea = tooltip._chart.chartArea; + var xAlign = 'center'; + var yAlign = 'center'; + + if (model.y < size.height) { + yAlign = 'top'; + } else if (model.y > (chart.height - size.height)) { + yAlign = 'bottom'; + } + + var lf, rf; // functions to determine left, right alignment + var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart + var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges + var midX = (chartArea.left + chartArea.right) / 2; + var midY = (chartArea.top + chartArea.bottom) / 2; + + if (yAlign === 'center') { + lf = function(x) { + return x <= midX; + }; + rf = function(x) { + return x > midX; + }; + } else { + lf = function(x) { + return x <= (size.width / 2); + }; + rf = function(x) { + return x >= (chart.width - (size.width / 2)); + }; + } + + olf = function(x) { + return x + size.width + model.caretSize + model.caretPadding > chart.width; + }; + orf = function(x) { + return x - size.width - model.caretSize - model.caretPadding < 0; + }; + yf = function(y) { + return y <= midY ? 'top' : 'bottom'; + }; + + if (lf(model.x)) { + xAlign = 'left'; + + // Is tooltip too wide and goes over the right side of the chart.? + if (olf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } else if (rf(model.x)) { + xAlign = 'right'; + + // Is tooltip too wide and goes outside left edge of canvas? + if (orf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } + + var opts = tooltip._options; + return { + xAlign: opts.xAlign ? opts.xAlign : xAlign, + yAlign: opts.yAlign ? opts.yAlign : yAlign + }; +} + +/** + * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment + */ +function getBackgroundPoint(vm, size, alignment, chart) { + // Background Position + var x = vm.x; + var y = vm.y; + + var caretSize = vm.caretSize; + var caretPadding = vm.caretPadding; + var cornerRadius = vm.cornerRadius; + var xAlign = alignment.xAlign; + var yAlign = alignment.yAlign; + var paddingAndSize = caretSize + caretPadding; + var radiusAndPadding = cornerRadius + caretPadding; + + if (xAlign === 'right') { + x -= size.width; + } else if (xAlign === 'center') { + x -= (size.width / 2); + if (x + size.width > chart.width) { + x = chart.width - size.width; + } + if (x < 0) { + x = 0; + } + } + + if (yAlign === 'top') { + y += paddingAndSize; + } else if (yAlign === 'bottom') { + y -= size.height + paddingAndSize; + } else { + y -= (size.height / 2); + } + + if (yAlign === 'center') { + if (xAlign === 'left') { + x += paddingAndSize; + } else if (xAlign === 'right') { + x -= paddingAndSize; + } + } else if (xAlign === 'left') { + x -= radiusAndPadding; + } else if (xAlign === 'right') { + x += radiusAndPadding; + } + + return { + x: x, + y: y + }; +} + +/** + * Helper to build before and after body lines + */ +function getBeforeAfterBodyLines(callback) { + return pushOrConcat([], splitNewlines(callback)); +} + +var exports = module.exports = Element.extend({ + initialize: function() { + this._model = getBaseModel(this._options); + this._lastActive = []; + }, + + // Get the title + // Args are: (tooltipItem, data) + getTitle: function() { + var me = this; + var opts = me._options; + var callbacks = opts.callbacks; + + var beforeTitle = callbacks.beforeTitle.apply(me, arguments); + var title = callbacks.title.apply(me, arguments); + var afterTitle = callbacks.afterTitle.apply(me, arguments); + + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeTitle)); + lines = pushOrConcat(lines, splitNewlines(title)); + lines = pushOrConcat(lines, splitNewlines(afterTitle)); + + return lines; + }, + + // Args are: (tooltipItem, data) + getBeforeBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); + }, + + // Args are: (tooltipItem, data) + getBody: function(tooltipItems, data) { + var me = this; + var callbacks = me._options.callbacks; + var bodyItems = []; + + helpers.each(tooltipItems, function(tooltipItem) { + var bodyItem = { + before: [], + lines: [], + after: [] + }; + pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); + pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); + pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); + + bodyItems.push(bodyItem); + }); + + return bodyItems; + }, + + // Args are: (tooltipItem, data) + getAfterBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); + }, + + // Get the footer and beforeFooter and afterFooter lines + // Args are: (tooltipItem, data) + getFooter: function() { + var me = this; + var callbacks = me._options.callbacks; + + var beforeFooter = callbacks.beforeFooter.apply(me, arguments); + var footer = callbacks.footer.apply(me, arguments); + var afterFooter = callbacks.afterFooter.apply(me, arguments); + + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeFooter)); + lines = pushOrConcat(lines, splitNewlines(footer)); + lines = pushOrConcat(lines, splitNewlines(afterFooter)); + + return lines; + }, + + update: function(changed) { + var me = this; + var opts = me._options; + + // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition + // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time + // which breaks any animations. + var existingModel = me._model; + var model = me._model = getBaseModel(opts); + var active = me._active; + + var data = me._data; + + // In the case where active.length === 0 we need to keep these at existing values for good animations + var alignment = { + xAlign: existingModel.xAlign, + yAlign: existingModel.yAlign + }; + var backgroundPoint = { + x: existingModel.x, + y: existingModel.y + }; + var tooltipSize = { + width: existingModel.width, + height: existingModel.height + }; + var tooltipPosition = { + x: existingModel.caretX, + y: existingModel.caretY + }; + + var i, len; + + if (active.length) { + model.opacity = 1; + + var labelColors = []; + var labelTextColors = []; + tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); + + var tooltipItems = []; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(active[i])); + } + + // If the user provided a filter function, use it to modify the tooltip items + if (opts.filter) { + tooltipItems = tooltipItems.filter(function(a) { + return opts.filter(a, data); + }); + } + + // If the user provided a sorting function, use it to modify the tooltip items + if (opts.itemSort) { + tooltipItems = tooltipItems.sort(function(a, b) { + return opts.itemSort(a, b, data); + }); + } + + // Determine colors for boxes + helpers.each(tooltipItems, function(tooltipItem) { + labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); + labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); + }); + + + // Build the Text Lines + model.title = me.getTitle(tooltipItems, data); + model.beforeBody = me.getBeforeBody(tooltipItems, data); + model.body = me.getBody(tooltipItems, data); + model.afterBody = me.getAfterBody(tooltipItems, data); + model.footer = me.getFooter(tooltipItems, data); + + // Initial positioning and colors + model.x = Math.round(tooltipPosition.x); + model.y = Math.round(tooltipPosition.y); + model.caretPadding = opts.caretPadding; + model.labelColors = labelColors; + model.labelTextColors = labelTextColors; + + // data points + model.dataPoints = tooltipItems; + + // We need to determine alignment of the tooltip + tooltipSize = getTooltipSize(this, model); + alignment = determineAlignment(this, tooltipSize); + // Final Size and Position + backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); + } else { + model.opacity = 0; + } + + model.xAlign = alignment.xAlign; + model.yAlign = alignment.yAlign; + model.x = backgroundPoint.x; + model.y = backgroundPoint.y; + model.width = tooltipSize.width; + model.height = tooltipSize.height; + + // Point where the caret on the tooltip points to + model.caretX = tooltipPosition.x; + model.caretY = tooltipPosition.y; + + me._model = model; + + if (changed && opts.custom) { + opts.custom.call(me, model); + } + + return me; + }, + + drawCaret: function(tooltipPoint, size) { + var ctx = this._chart.ctx; + var vm = this._view; + var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); + + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); + }, + getCaretPosition: function(tooltipPoint, size, vm) { + var x1, x2, x3, y1, y2, y3; + var caretSize = vm.caretSize; + var cornerRadius = vm.cornerRadius; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var ptX = tooltipPoint.x; + var ptY = tooltipPoint.y; + var width = size.width; + var height = size.height; + + if (yAlign === 'center') { + y2 = ptY + (height / 2); + + if (xAlign === 'left') { + x1 = ptX; + x2 = x1 - caretSize; + x3 = x1; + + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + x3 = x1; + + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + } else { + if (xAlign === 'left') { + x2 = ptX + cornerRadius + (caretSize); + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else if (xAlign === 'right') { + x2 = ptX + width - cornerRadius - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + x2 = vm.caretX; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } + if (yAlign === 'top') { + y1 = ptY; + y2 = y1 - caretSize; + y3 = y1; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + y3 = y1; + // invert drawing order + var tmp = x3; + x3 = x1; + x1 = tmp; + } + } + return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; + }, + + drawTitle: function(pt, vm, ctx, opacity) { + var title = vm.title; + + if (title.length) { + ctx.textAlign = vm._titleAlign; + ctx.textBaseline = 'top'; + + var titleFontSize = vm.titleFontSize; + var titleSpacing = vm.titleSpacing; + + ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); + ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); + + var i, len; + for (i = 0, len = title.length; i < len; ++i) { + ctx.fillText(title[i], pt.x, pt.y); + pt.y += titleFontSize + titleSpacing; // Line Height and spacing + + if (i + 1 === title.length) { + pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing + } + } + } + }, + + drawBody: function(pt, vm, ctx, opacity) { + var bodyFontSize = vm.bodyFontSize; + var bodySpacing = vm.bodySpacing; + var body = vm.body; + + ctx.textAlign = vm._bodyAlign; + ctx.textBaseline = 'top'; + ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); + + // Before Body + var xLinePadding = 0; + var fillLineOfText = function(line) { + ctx.fillText(line, pt.x + xLinePadding, pt.y); + pt.y += bodyFontSize + bodySpacing; + }; + + // Before body lines + ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity); + helpers.each(vm.beforeBody, fillLineOfText); + + var drawColorBoxes = vm.displayColors; + xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; + + // Draw body lines now + helpers.each(body, function(bodyItem, i) { + var textColor = mergeOpacity(vm.labelTextColors[i], opacity); + ctx.fillStyle = textColor; + helpers.each(bodyItem.before, fillLineOfText); + + helpers.each(bodyItem.lines, function(line) { + // Draw Legend-like boxes if needed + if (drawColorBoxes) { + // Fill a white rect so that colours merge nicely if the opacity is < 1 + ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); + ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); + + // Border + ctx.lineWidth = 1; + ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); + ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); + + // Inner square + ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); + ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); + ctx.fillStyle = textColor; + } + + fillLineOfText(line); + }); + + helpers.each(bodyItem.after, fillLineOfText); + }); + + // Reset back to 0 for after body + xLinePadding = 0; + + // After body lines + helpers.each(vm.afterBody, fillLineOfText); + pt.y -= bodySpacing; // Remove last body spacing + }, + + drawFooter: function(pt, vm, ctx, opacity) { + var footer = vm.footer; + + if (footer.length) { + pt.y += vm.footerMarginTop; + + ctx.textAlign = vm._footerAlign; + ctx.textBaseline = 'top'; + + ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); + ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); + + helpers.each(footer, function(line) { + ctx.fillText(line, pt.x, pt.y); + pt.y += vm.footerFontSize + vm.footerSpacing; + }); + } + }, + + drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { + ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); + ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); + ctx.lineWidth = vm.borderWidth; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var x = pt.x; + var y = pt.y; + var width = tooltipSize.width; + var height = tooltipSize.height; + var radius = vm.cornerRadius; + + ctx.beginPath(); + ctx.moveTo(x + radius, y); + if (yAlign === 'top') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + if (yAlign === 'center' && xAlign === 'right') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + if (yAlign === 'bottom') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + if (yAlign === 'center' && xAlign === 'left') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); + + ctx.fill(); + + if (vm.borderWidth > 0) { + ctx.stroke(); + } + }, + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + + if (vm.opacity === 0) { + return; + } + + var tooltipSize = { + width: vm.width, + height: vm.height + }; + var pt = { + x: vm.x, + y: vm.y + }; + + // IE11/Edge does not like very small opacities, so snap to 0 + var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; + + // Truthy/falsey value for empty tooltip + var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; + + if (this._options.enabled && hasTooltipContent) { + // Draw Background + this.drawBackground(pt, vm, ctx, tooltipSize, opacity); + + // Draw Title, Body, and Footer + pt.x += vm.xPadding; + pt.y += vm.yPadding; + + // Titles + this.drawTitle(pt, vm, ctx, opacity); + + // Body + this.drawBody(pt, vm, ctx, opacity); + + // Footer + this.drawFooter(pt, vm, ctx, opacity); + } + }, + + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @returns {Boolean} true if the tooltip changed + */ + handleEvent: function(e) { + var me = this; + var options = me._options; + var changed = false; + + me._lastActive = me._lastActive || []; + + // Find Active Elements for tooltips + if (e.type === 'mouseout') { + me._active = []; + } else { + me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); + } + + // Remember Last Actives + changed = !helpers.arrayEquals(me._active, me._lastActive); + + // Only handle target event on tooltip change + if (changed) { + me._lastActive = me._active; + + if (options.enabled || options.custom) { + me._eventPosition = { + x: e.x, + y: e.y + }; + + me.update(true); + me.pivot(); + } + } + + return changed; + } +}); + +/** + * @namespace Chart.Tooltip.positioners + */ +exports.positioners = positioners; + + +},{"26":26,"27":27,"46":46}],37:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); + +defaults._set('global', { + elements: { + arc: { + backgroundColor: defaults.global.defaultColor, + borderColor: '#fff', + borderWidth: 2 + } + } +}); + +module.exports = Element.extend({ + inLabelRange: function(mouseX) { + var vm = this._view; + + if (vm) { + return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); + } + return false; + }, + + inRange: function(chartX, chartY) { + var vm = this._view; + + if (vm) { + var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); + var angle = pointRelativePosition.angle; + var distance = pointRelativePosition.distance; + + // Sanitise angle range + var startAngle = vm.startAngle; + var endAngle = vm.endAngle; + while (endAngle < startAngle) { + endAngle += 2.0 * Math.PI; + } + while (angle > endAngle) { + angle -= 2.0 * Math.PI; + } + while (angle < startAngle) { + angle += 2.0 * Math.PI; + } + + // Check if within the range of the open/close angle + var betweenAngles = (angle >= startAngle && angle <= endAngle); + var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); + + return (betweenAngles && withinRadius); + } + return false; + }, + + getCenterPoint: function() { + var vm = this._view; + var halfAngle = (vm.startAngle + vm.endAngle) / 2; + var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; + return { + x: vm.x + Math.cos(halfAngle) * halfRadius, + y: vm.y + Math.sin(halfAngle) * halfRadius + }; + }, + + getArea: function() { + var vm = this._view; + return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); + }, + + tooltipPosition: function() { + var vm = this._view; + var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); + var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; + + return { + x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), + y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) + }; + }, + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var sA = vm.startAngle; + var eA = vm.endAngle; + + ctx.beginPath(); + + ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); + ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + + ctx.closePath(); + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = vm.borderWidth; + + ctx.fillStyle = vm.backgroundColor; + + ctx.fill(); + ctx.lineJoin = 'bevel'; + + if (vm.borderWidth) { + ctx.stroke(); + } + } +}); + +},{"26":26,"27":27,"46":46}],38:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); + +var globalDefaults = defaults.global; + +defaults._set('global', { + elements: { + line: { + tension: 0.4, + backgroundColor: globalDefaults.defaultColor, + borderWidth: 3, + borderColor: globalDefaults.defaultColor, + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + capBezierPoints: true, + fill: true, // do we fill in the area between the line and its base axis + } + } +}); + +module.exports = Element.extend({ + draw: function() { + var me = this; + var vm = me._view; + var ctx = me._chart.ctx; + var spanGaps = vm.spanGaps; + var points = me._children.slice(); // clone array + var globalOptionLineElements = globalDefaults.elements.line; + var lastDrawnIndex = -1; + var index, current, previous, currentVM; + + // If we are looping, adding the first point again + if (me._loop && points.length) { + points.push(points[0]); + } + + ctx.save(); + + // Stroke Line Options + ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; + + // IE 9 and 10 do not support line dash + if (ctx.setLineDash) { + ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); + } + + ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; + ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; + ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; + ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + + // Stroke Line + ctx.beginPath(); + lastDrawnIndex = -1; + + for (index = 0; index < points.length; ++index) { + current = points[index]; + previous = helpers.previousItem(points, index); + currentVM = current._view; + + // First point moves to it's starting position no matter what + if (index === 0) { + if (!currentVM.skip) { + ctx.moveTo(currentVM.x, currentVM.y); + lastDrawnIndex = index; + } + } else { + previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; + + if (!currentVM.skip) { + if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { + // There was a gap and this is the first point after the gap + ctx.moveTo(currentVM.x, currentVM.y); + } else { + // Line to next point + helpers.canvas.lineTo(ctx, previous._view, current._view); + } + lastDrawnIndex = index; + } + } + } + + ctx.stroke(); + ctx.restore(); + } +}); + +},{"26":26,"27":27,"46":46}],39:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); + +var defaultColor = defaults.global.defaultColor; + +defaults._set('global', { + elements: { + point: { + radius: 3, + pointStyle: 'circle', + backgroundColor: defaultColor, + borderColor: defaultColor, + borderWidth: 1, + // Hover + hitRadius: 1, + hoverRadius: 4, + hoverBorderWidth: 1 + } + } +}); + +function xRange(mouseX) { + var vm = this._view; + return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; +} + +function yRange(mouseY) { + var vm = this._view; + return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; +} + +module.exports = Element.extend({ + inRange: function(mouseX, mouseY) { + var vm = this._view; + return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; + }, + + inLabelRange: xRange, + inXRange: xRange, + inYRange: yRange, + + getCenterPoint: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + }, + + getArea: function() { + return Math.PI * Math.pow(this._view.radius, 2); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y, + padding: vm.radius + vm.borderWidth + }; + }, + + draw: function(chartArea) { + var vm = this._view; + var model = this._model; + var ctx = this._chart.ctx; + var pointStyle = vm.pointStyle; + var rotation = vm.rotation; + var radius = vm.radius; + var x = vm.x; + var y = vm.y; + var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) + + if (vm.skip) { + return; + } + + // Clipping for Points. + if (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) { + ctx.strokeStyle = vm.borderColor || defaultColor; + ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); + ctx.fillStyle = vm.backgroundColor || defaultColor; + helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); + } + } +}); + +},{"26":26,"27":27,"46":46}],40:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); + +defaults._set('global', { + elements: { + rectangle: { + backgroundColor: defaults.global.defaultColor, + borderColor: defaults.global.defaultColor, + borderSkipped: 'bottom', + borderWidth: 0 + } + } +}); + +function isVertical(bar) { + return bar._view.width !== undefined; +} + +/** + * Helper function to get the bounds of the bar regardless of the orientation + * @param bar {Chart.Element.Rectangle} the bar + * @return {Bounds} bounds of the bar + * @private + */ +function getBarBounds(bar) { + var vm = bar._view; + var x1, x2, y1, y2; + + if (isVertical(bar)) { + // vertical + var halfWidth = vm.width / 2; + x1 = vm.x - halfWidth; + x2 = vm.x + halfWidth; + y1 = Math.min(vm.y, vm.base); + y2 = Math.max(vm.y, vm.base); + } else { + // horizontal bar + var halfHeight = vm.height / 2; + x1 = Math.min(vm.x, vm.base); + x2 = Math.max(vm.x, vm.base); + y1 = vm.y - halfHeight; + y2 = vm.y + halfHeight; + } + + return { + left: x1, + top: y1, + right: x2, + bottom: y2 + }; +} + +module.exports = Element.extend({ + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var left, right, top, bottom, signX, signY, borderSkipped; + var borderWidth = vm.borderWidth; + + if (!vm.horizontal) { + // bar + left = vm.x - vm.width / 2; + right = vm.x + vm.width / 2; + top = vm.y; + bottom = vm.base; + signX = 1; + signY = bottom > top ? 1 : -1; + borderSkipped = vm.borderSkipped || 'bottom'; + } else { + // horizontal bar + left = vm.base; + right = vm.x; + top = vm.y - vm.height / 2; + bottom = vm.y + vm.height / 2; + signX = right > left ? 1 : -1; + signY = 1; + borderSkipped = vm.borderSkipped || 'left'; + } + + // Canvas doesn't allow us to stroke inside the width so we can + // adjust the sizes to fit if we're setting a stroke on the line + if (borderWidth) { + // borderWidth shold be less than bar width and bar height. + var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); + borderWidth = borderWidth > barSize ? barSize : borderWidth; + var halfStroke = borderWidth / 2; + // Adjust borderWidth when bar top position is near vm.base(zero). + var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); + var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); + var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); + var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); + // not become a vertical line? + if (borderLeft !== borderRight) { + top = borderTop; + bottom = borderBottom; + } + // not become a horizontal line? + if (borderTop !== borderBottom) { + left = borderLeft; + right = borderRight; + } + } + + ctx.beginPath(); + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = borderWidth; + + // Corner points, from bottom-left to bottom-right clockwise + // | 1 2 | + // | 0 3 | + var corners = [ + [left, bottom], + [left, top], + [right, top], + [right, bottom] + ]; + + // Find first (starting) corner with fallback to 'bottom' + var borders = ['bottom', 'left', 'top', 'right']; + var startCorner = borders.indexOf(borderSkipped, 0); + if (startCorner === -1) { + startCorner = 0; + } + + function cornerAt(index) { + return corners[(startCorner + index) % 4]; + } + + // Draw rectangle from 'startCorner' + var corner = cornerAt(0); + ctx.moveTo(corner[0], corner[1]); + + for (var i = 1; i < 4; i++) { + corner = cornerAt(i); + ctx.lineTo(corner[0], corner[1]); + } + + ctx.fill(); + if (borderWidth) { + ctx.stroke(); + } + }, + + height: function() { + var vm = this._view; + return vm.base - vm.y; + }, + + inRange: function(mouseX, mouseY) { + var inRange = false; + + if (this._view) { + var bounds = getBarBounds(this); + inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; + } + + return inRange; + }, + + inLabelRange: function(mouseX, mouseY) { + var me = this; + if (!me._view) { + return false; + } + + var inRange = false; + var bounds = getBarBounds(me); + + if (isVertical(me)) { + inRange = mouseX >= bounds.left && mouseX <= bounds.right; + } else { + inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; + } + + return inRange; + }, + + inXRange: function(mouseX) { + var bounds = getBarBounds(this); + return mouseX >= bounds.left && mouseX <= bounds.right; + }, + + inYRange: function(mouseY) { + var bounds = getBarBounds(this); + return mouseY >= bounds.top && mouseY <= bounds.bottom; + }, + + getCenterPoint: function() { + var vm = this._view; + var x, y; + if (isVertical(this)) { + x = vm.x; + y = (vm.y + vm.base) / 2; + } else { + x = (vm.x + vm.base) / 2; + y = vm.y; + } + + return {x: x, y: y}; + }, + + getArea: function() { + var vm = this._view; + return vm.width * Math.abs(vm.y - vm.base); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + } +}); + +},{"26":26,"27":27}],41:[function(require,module,exports){ +'use strict'; + +module.exports = {}; +module.exports.Arc = require(37); +module.exports.Line = require(38); +module.exports.Point = require(39); +module.exports.Rectangle = require(40); + +},{"37":37,"38":38,"39":39,"40":40}],42:[function(require,module,exports){ +'use strict'; + +var helpers = require(43); + +/** + * @namespace Chart.helpers.canvas + */ +var exports = module.exports = { + /** + * Clears the entire canvas associated to the given `chart`. + * @param {Chart} chart - The chart for which to clear the canvas. + */ + clear: function(chart) { + chart.ctx.clearRect(0, 0, chart.width, chart.height); + }, + + /** + * Creates a "path" for a rectangle with rounded corners at position (x, y) with a + * given size (width, height) and the same `radius` for all corners. + * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. + * @param {Number} x - The x axis of the coordinate for the rectangle starting point. + * @param {Number} y - The y axis of the coordinate for the rectangle starting point. + * @param {Number} width - The rectangle's width. + * @param {Number} height - The rectangle's height. + * @param {Number} radius - The rounded amount (in pixels) for the four corners. + * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? + */ + roundedRect: function(ctx, x, y, width, height, radius) { + if (radius) { + // NOTE(SB) `epsilon` helps to prevent minor artifacts appearing + // on Chrome when `r` is exactly half the height or the width. + var epsilon = 0.0000001; + var r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon); + + ctx.moveTo(x + r, y); + ctx.lineTo(x + width - r, y); + ctx.arcTo(x + width, y, x + width, y + r, r); + ctx.lineTo(x + width, y + height - r); + ctx.arcTo(x + width, y + height, x + width - r, y + height, r); + ctx.lineTo(x + r, y + height); + ctx.arcTo(x, y + height, x, y + height - r, r); + ctx.lineTo(x, y + r); + ctx.arcTo(x, y, x + r, y, r); + ctx.closePath(); + ctx.moveTo(x, y); + } else { + ctx.rect(x, y, width, height); + } + }, + + drawPoint: function(ctx, style, radius, x, y, rotation) { + var type, edgeLength, xOffset, yOffset, height, size; + rotation = rotation || 0; + + if (style && typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); + return; + } + } + + if (isNaN(radius) || radius <= 0) { + return; + } + + ctx.save(); + ctx.translate(x, y); + ctx.rotate(rotation * Math.PI / 180); + ctx.beginPath(); + + switch (style) { + // Default includes circle + default: + ctx.arc(0, 0, radius, 0, Math.PI * 2); + ctx.closePath(); + break; + case 'triangle': + edgeLength = 3 * radius / Math.sqrt(3); + height = edgeLength * Math.sqrt(3) / 2; + ctx.moveTo(-edgeLength / 2, height / 3); + ctx.lineTo(edgeLength / 2, height / 3); + ctx.lineTo(0, -2 * height / 3); + ctx.closePath(); + break; + case 'rect': + size = 1 / Math.SQRT2 * radius; + ctx.rect(-size, -size, 2 * size, 2 * size); + break; + case 'rectRounded': + var offset = radius / Math.SQRT2; + var leftX = -offset; + var topY = -offset; + var sideSize = Math.SQRT2 * radius; + + // NOTE(SB) the rounded rect implementation changed to use `arcTo` + // instead of `quadraticCurveTo` since it generates better results + // when rect is almost a circle. 0.425 (instead of 0.5) produces + // results visually closer to the previous impl. + this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425); + break; + case 'rectRot': + size = 1 / Math.SQRT2 * radius; + ctx.moveTo(-size, 0); + ctx.lineTo(0, size); + ctx.lineTo(size, 0); + ctx.lineTo(0, -size); + ctx.closePath(); + break; + case 'cross': + ctx.moveTo(0, radius); + ctx.lineTo(0, -radius); + ctx.moveTo(-radius, 0); + ctx.lineTo(radius, 0); + break; + case 'crossRot': + xOffset = Math.cos(Math.PI / 4) * radius; + yOffset = Math.sin(Math.PI / 4) * radius; + ctx.moveTo(-xOffset, -yOffset); + ctx.lineTo(xOffset, yOffset); + ctx.moveTo(-xOffset, yOffset); + ctx.lineTo(xOffset, -yOffset); + break; + case 'star': + ctx.moveTo(0, radius); + ctx.lineTo(0, -radius); + ctx.moveTo(-radius, 0); + ctx.lineTo(radius, 0); + xOffset = Math.cos(Math.PI / 4) * radius; + yOffset = Math.sin(Math.PI / 4) * radius; + ctx.moveTo(-xOffset, -yOffset); + ctx.lineTo(xOffset, yOffset); + ctx.moveTo(-xOffset, yOffset); + ctx.lineTo(xOffset, -yOffset); + break; + case 'line': + ctx.moveTo(-radius, 0); + ctx.lineTo(radius, 0); + break; + case 'dash': + ctx.moveTo(0, 0); + ctx.lineTo(radius, 0); + break; + } + + ctx.fill(); + ctx.stroke(); + ctx.restore(); + }, + + clipArea: function(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); + }, + + unclipArea: function(ctx) { + ctx.restore(); + }, + + lineTo: function(ctx, previous, target, flip) { + if (target.steppedLine) { + if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); + return; + } + + if (!target.tension) { + ctx.lineTo(target.x, target.y); + return; + } + + ctx.bezierCurveTo( + flip ? previous.controlPointPreviousX : previous.controlPointNextX, + flip ? previous.controlPointPreviousY : previous.controlPointNextY, + flip ? target.controlPointNextX : target.controlPointPreviousX, + flip ? target.controlPointNextY : target.controlPointPreviousY, + target.x, + target.y); + } +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. + * @namespace Chart.helpers.clear + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.clear = exports.clear; + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. + * @namespace Chart.helpers.drawRoundedRectangle + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.drawRoundedRectangle = function(ctx) { + ctx.beginPath(); + exports.roundedRect.apply(exports, arguments); +}; + +},{"43":43}],43:[function(require,module,exports){ +'use strict'; + +/** + * @namespace Chart.helpers + */ +var helpers = { + /** + * An empty function that can be used, for example, for optional callback. + */ + noop: function() {}, + + /** + * Returns a unique id, sequentially generated from a global variable. + * @returns {Number} + * @function + */ + uid: (function() { + var id = 0; + return function() { + return id++; + }; + }()), + + /** + * Returns true if `value` is neither null nor undefined, else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @since 2.7.0 + */ + isNullOrUndef: function(value) { + return value === null || typeof value === 'undefined'; + }, + + /** + * Returns true if `value` is an array, else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @function + */ + isArray: Array.isArray ? Array.isArray : function(value) { + return Object.prototype.toString.call(value) === '[object Array]'; + }, + + /** + * Returns true if `value` is an object (excluding null), else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @since 2.7.0 + */ + isObject: function(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; + }, + + /** + * Returns `value` if defined, else returns `defaultValue`. + * @param {*} value - The value to return if defined. + * @param {*} defaultValue - The value to return if `value` is undefined. + * @returns {*} + */ + valueOrDefault: function(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; + }, + + /** + * Returns value at the given `index` in array if defined, else returns `defaultValue`. + * @param {Array} value - The array to lookup for value at `index`. + * @param {Number} index - The index in `value` to lookup for value. + * @param {*} defaultValue - The value to return if `value[index]` is undefined. + * @returns {*} + */ + valueAtIndexOrDefault: function(value, index, defaultValue) { + return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); + }, + + /** + * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the + * value returned by `fn`. If `fn` is not a function, this method returns undefined. + * @param {Function} fn - The function to call. + * @param {Array|undefined|null} args - The arguments with which `fn` should be called. + * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. + * @returns {*} + */ + callback: function(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } + }, + + /** + * Note(SB) for performance sake, this method should only be used when loopable type + * is unknown or in none intensive code (not called often and small loopable). Else + * it's preferable to use a regular for() loop and save extra function calls. + * @param {Object|Array} loopable - The object or array to be iterated. + * @param {Function} fn - The function to call for each item. + * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. + * @param {Boolean} [reverse] - If true, iterates backward on the loopable. + */ + each: function(loopable, fn, thisArg, reverse) { + var i, len, keys; + if (helpers.isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (helpers.isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } + }, + + /** + * Returns true if the `a0` and `a1` arrays have the same content, else returns false. + * @see http://stackoverflow.com/a/14853974 + * @param {Array} a0 - The array to compare + * @param {Array} a1 - The array to compare + * @returns {Boolean} + */ + arrayEquals: function(a0, a1) { + var i, ilen, v0, v1; + + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + + if (v0 instanceof Array && v1 instanceof Array) { + if (!helpers.arrayEquals(v0, v1)) { + return false; + } + } else if (v0 !== v1) { + // NOTE: two different object instances will never be equal: {x:20} != {x:20} + return false; + } + } + + return true; + }, + + /** + * Returns a deep copy of `source` without keeping references on objects and arrays. + * @param {*} source - The value to clone. + * @returns {*} + */ + clone: function(source) { + if (helpers.isArray(source)) { + return source.map(helpers.clone); + } + + if (helpers.isObject(source)) { + var target = {}; + var keys = Object.keys(source); + var klen = keys.length; + var k = 0; + + for (; k < klen; ++k) { + target[keys[k]] = helpers.clone(source[keys[k]]); + } + + return target; + } + + return source; + }, + + /** + * The default merger when Chart.helpers.merge is called without merger option. + * Note(SB): this method is also used by configMerge and scaleMerge as fallback. + * @private + */ + _merger: function(key, target, source, options) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.merge(tval, sval, options); + } else { + target[key] = helpers.clone(sval); + } + }, + + /** + * Merges source[key] in target[key] only if target[key] is undefined. + * @private + */ + _mergerIf: function(key, target, source) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.mergeIf(tval, sval); + } else if (!target.hasOwnProperty(key)) { + target[key] = helpers.clone(sval); + } + }, + + /** + * Recursively deep copies `source` properties into `target` with the given `options`. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {Object} target - The target object in which all sources are merged into. + * @param {Object|Array(Object)} source - Object(s) to merge into `target`. + * @param {Object} [options] - Merging options: + * @param {Function} [options.merger] - The merge method (key, target, source, options) + * @returns {Object} The `target` object. + */ + merge: function(target, source, options) { + var sources = helpers.isArray(source) ? source : [source]; + var ilen = sources.length; + var merge, i, keys, klen, k; + + if (!helpers.isObject(target)) { + return target; + } + + options = options || {}; + merge = options.merger || helpers._merger; + + for (i = 0; i < ilen; ++i) { + source = sources[i]; + if (!helpers.isObject(source)) { + continue; + } + + keys = Object.keys(source); + for (k = 0, klen = keys.length; k < klen; ++k) { + merge(keys[k], target, source, options); + } + } + + return target; + }, + + /** + * Recursively deep copies `source` properties into `target` *only* if not defined in target. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {Object} target - The target object in which all sources are merged into. + * @param {Object|Array(Object)} source - Object(s) to merge into `target`. + * @returns {Object} The `target` object. + */ + mergeIf: function(target, source) { + return helpers.merge(target, source, {merger: helpers._mergerIf}); + }, + + /** + * Applies the contents of two or more objects together into the first object. + * @param {Object} target - The target object in which all objects are merged into. + * @param {Object} arg1 - Object containing additional properties to merge in target. + * @param {Object} argN - Additional objects containing properties to merge in target. + * @returns {Object} The `target` object. + */ + extend: function(target) { + var setFn = function(value, key) { + target[key] = value; + }; + for (var i = 1, ilen = arguments.length; i < ilen; ++i) { + helpers.each(arguments[i], setFn); + } + return target; + }, + + /** + * Basic javascript inheritance based on the model created in Backbone.js + */ + inherits: function(extensions) { + var me = this; + var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { + return me.apply(this, arguments); + }; + + var Surrogate = function() { + this.constructor = ChartElement; + }; + + Surrogate.prototype = me.prototype; + ChartElement.prototype = new Surrogate(); + ChartElement.extend = helpers.inherits; + + if (extensions) { + helpers.extend(ChartElement.prototype, extensions); + } + + ChartElement.__super__ = me.prototype; + return ChartElement; + } +}; + +module.exports = helpers; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.callback instead. + * @function Chart.helpers.callCallback + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +helpers.callCallback = helpers.callback; + +/** + * Provided for backward compatibility, use Array.prototype.indexOf instead. + * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ + * @function Chart.helpers.indexOf + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.indexOf = function(array, item, fromIndex) { + return Array.prototype.indexOf.call(array, item, fromIndex); +}; + +/** + * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. + * @function Chart.helpers.getValueOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueOrDefault = helpers.valueOrDefault; + +/** + * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. + * @function Chart.helpers.getValueAtIndexOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + +},{}],44:[function(require,module,exports){ +'use strict'; + +var helpers = require(43); + +/** + * Easing functions adapted from Robert Penner's easing equations. + * @namespace Chart.helpers.easingEffects + * @see http://www.robertpenner.com/easing/ + */ +var effects = { + linear: function(t) { + return t; + }, + + easeInQuad: function(t) { + return t * t; + }, + + easeOutQuad: function(t) { + return -t * (t - 2); + }, + + easeInOutQuad: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t; + } + return -0.5 * ((--t) * (t - 2) - 1); + }, + + easeInCubic: function(t) { + return t * t * t; + }, + + easeOutCubic: function(t) { + return (t = t - 1) * t * t + 1; + }, + + easeInOutCubic: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t; + } + return 0.5 * ((t -= 2) * t * t + 2); + }, + + easeInQuart: function(t) { + return t * t * t * t; + }, + + easeOutQuart: function(t) { + return -((t = t - 1) * t * t * t - 1); + }, + + easeInOutQuart: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t; + } + return -0.5 * ((t -= 2) * t * t * t - 2); + }, + + easeInQuint: function(t) { + return t * t * t * t * t; + }, + + easeOutQuint: function(t) { + return (t = t - 1) * t * t * t * t + 1; + }, + + easeInOutQuint: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t * t; + } + return 0.5 * ((t -= 2) * t * t * t * t + 2); + }, + + easeInSine: function(t) { + return -Math.cos(t * (Math.PI / 2)) + 1; + }, + + easeOutSine: function(t) { + return Math.sin(t * (Math.PI / 2)); + }, + + easeInOutSine: function(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); + }, + + easeInExpo: function(t) { + return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); + }, + + easeOutExpo: function(t) { + return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; + }, + + easeInOutExpo: function(t) { + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if ((t /= 0.5) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }, + + easeInCirc: function(t) { + if (t >= 1) { + return t; + } + return -(Math.sqrt(1 - t * t) - 1); + }, + + easeOutCirc: function(t) { + return Math.sqrt(1 - (t = t - 1) * t); + }, + + easeInOutCirc: function(t) { + if ((t /= 0.5) < 1) { + return -0.5 * (Math.sqrt(1 - t * t) - 1); + } + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }, + + easeInElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + }, + + easeOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; + }, + + easeInOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if ((t /= 0.5) === 2) { + return 1; + } + if (!p) { + p = 0.45; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + if (t < 1) { + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; + }, + easeInBack: function(t) { + var s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + + easeOutBack: function(t) { + var s = 1.70158; + return (t = t - 1) * t * ((s + 1) * t + s) + 1; + }, + + easeInOutBack: function(t) { + var s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }, + + easeInBounce: function(t) { + return 1 - effects.easeOutBounce(1 - t); + }, + + easeOutBounce: function(t) { + if (t < (1 / 2.75)) { + return 7.5625 * t * t; + } + if (t < (2 / 2.75)) { + return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; + } + if (t < (2.5 / 2.75)) { + return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + } + return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; + }, + + easeInOutBounce: function(t) { + if (t < 0.5) { + return effects.easeInBounce(t * 2) * 0.5; + } + return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; + } +}; + +module.exports = { + effects: effects +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.easing.effects instead. + * @function Chart.helpers.easingEffects + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.easingEffects = effects; + +},{"43":43}],45:[function(require,module,exports){ +'use strict'; + +var helpers = require(43); + +/** + * @alias Chart.helpers.options + * @namespace + */ +module.exports = { + /** + * Converts the given line height `value` in pixels for a specific font `size`. + * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). + * @param {Number} size - The font size (in pixels) used to resolve relative `value`. + * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height + * @since 2.7.0 + */ + toLineHeight: function(value, size) { + var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } + + value = +matches[2]; + + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + default: + break; + } + + return size * value; + }, + + /** + * Converts the given value into a padding object with pre-computed width/height. + * @param {Number|Object} value - If a number, set the value to all TRBL component, + * else, if and object, use defined properties and sets undefined ones to 0. + * @returns {Object} The padding values (top, right, bottom, left, width, height) + * @since 2.7.0 + */ + toPadding: function(value) { + var t, r, b, l; + + if (helpers.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + top: t, + right: r, + bottom: b, + left: l, + height: t + b, + width: l + r + }; + }, + + /** + * Evaluates the given `inputs` sequentially and returns the first defined value. + * @param {Array[]} inputs - An array of values, falling back to the last value. + * @param {Object} [context] - If defined and the current value is a function, the value + * is called with `context` as first argument and the result becomes the new input. + * @param {Number} [index] - If defined and the current value is an array, the value + * at `index` become the new input. + * @since 2.7.0 + */ + resolve: function(inputs, context, index) { + var i, ilen, value; + + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + } + if (index !== undefined && helpers.isArray(value)) { + value = value[index]; + } + if (value !== undefined) { + return value; + } + } + } +}; + +},{"43":43}],46:[function(require,module,exports){ +'use strict'; + +module.exports = require(43); +module.exports.easing = require(44); +module.exports.canvas = require(42); +module.exports.options = require(45); + +},{"42":42,"43":43,"44":44,"45":45}],47:[function(require,module,exports){ +/** + * Platform fallback implementation (minimal). + * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 + */ + +module.exports = { + acquireContext: function(item) { + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + return item && item.getContext('2d') || null; + } +}; + +},{}],48:[function(require,module,exports){ +/** + * Chart.Platform implementation for targeting a web browser + */ + +'use strict'; + +var helpers = require(46); + +var EXPANDO_KEY = '$chartjs'; +var CSS_PREFIX = 'chartjs-'; +var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; +var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; +var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; + +/** + * DOM event types -> Chart.js event types. + * Note: only events with different types are mapped. + * @see https://developer.mozilla.org/en-US/docs/Web/Events + */ +var EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; + +/** + * The "used" size is the final value of a dimension property after all calculations have + * been performed. This method uses the computed style of `element` but returns undefined + * if the computed style is not expressed in pixels. That can happen in some cases where + * `element` has a size relative to its parent and this last one is not yet displayed, + * for example because of `display: none` on a parent node. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * @returns {Number} Size in pixels or undefined if unknown. + */ +function readUsedSize(element, property) { + var value = helpers.getStyle(element, property); + var matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? Number(matches[1]) : undefined; +} + +/** + * Initializes the canvas style and render size without modifying the canvas display size, + * since responsiveness is handled by the controller.resize() method. The config is used + * to determine the aspect ratio to apply in case no explicit height has been specified. + */ +function initCanvas(canvas, config) { + var style = canvas.style; + + // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it + // returns null or '' if no explicit value has been set to the canvas attribute. + var renderHeight = canvas.getAttribute('height'); + var renderWidth = canvas.getAttribute('width'); + + // Chart.js modifies some canvas values that we want to restore on destroy + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; + + // Force canvas to display as block to avoid extra space caused by inline + // elements, which would interfere with the responsive resize process. + // https://github.com/chartjs/Chart.js/issues/2538 + style.display = style.display || 'block'; + + if (renderWidth === null || renderWidth === '') { + var displayWidth = readUsedSize(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } + } + + if (renderHeight === null || renderHeight === '') { + if (canvas.style.height === '') { + // If no explicit render height and style height, let's apply the aspect ratio, + // which one can be specified by the user but also by charts as default option + // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. + canvas.height = canvas.width / (config.options.aspectRatio || 2); + } else { + var displayHeight = readUsedSize(canvas, 'height'); + if (displayWidth !== undefined) { + canvas.height = displayHeight; + } + } + } + + return canvas; +} + +/** + * Detects support for options object argument in addEventListener. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * @private + */ +var supportsEventListenerOptions = (function() { + var supports = false; + try { + var options = Object.defineProperty({}, 'passive', { + get: function() { + supports = true; + } + }); + window.addEventListener('e', null, options); + } catch (e) { + // continue regardless of error + } + return supports; +}()); + +// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. +// https://github.com/chartjs/Chart.js/issues/4287 +var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; + +function addEventListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); +} + +function removeEventListener(node, type, listener) { + node.removeEventListener(type, listener, eventListenerOptions); +} + +function createEvent(type, chart, x, y, nativeEvent) { + return { + type: type, + chart: chart, + native: nativeEvent || null, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; +} + +function fromNativeEvent(event, chart) { + var type = EVENT_TYPES[event.type] || event.type; + var pos = helpers.getRelativePosition(event, chart); + return createEvent(type, chart, pos.x, pos.y, event); +} + +function throttled(fn, thisArg) { + var ticking = false; + var args = []; + + return function() { + args = Array.prototype.slice.call(arguments); + thisArg = thisArg || this; + + if (!ticking) { + ticking = true; + helpers.requestAnimFrame.call(window, function() { + ticking = false; + fn.apply(thisArg, args); + }); + } + }; +} + +// Implementation based on https://github.com/marcj/css-element-queries +function createResizer(handler) { + var resizer = document.createElement('div'); + var cls = CSS_PREFIX + 'size-monitor'; + var maxSize = 1000000; + var style = + 'position:absolute;' + + 'left:0;' + + 'top:0;' + + 'right:0;' + + 'bottom:0;' + + 'overflow:hidden;' + + 'pointer-events:none;' + + 'visibility:hidden;' + + 'z-index:-1;'; + + resizer.style.cssText = style; + resizer.className = cls; + resizer.innerHTML = + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
'; + + var expand = resizer.childNodes[0]; + var shrink = resizer.childNodes[1]; + + resizer._reset = function() { + expand.scrollLeft = maxSize; + expand.scrollTop = maxSize; + shrink.scrollLeft = maxSize; + shrink.scrollTop = maxSize; + }; + var onScroll = function() { + resizer._reset(); + handler(); + }; + + addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); + addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); + + return resizer; +} + +// https://davidwalsh.name/detect-node-insertion +function watchForRender(node, handler) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + var proxy = expando.renderProxy = function(e) { + if (e.animationName === CSS_RENDER_ANIMATION) { + handler(); + } + }; + + helpers.each(ANIMATION_START_EVENTS, function(type) { + addEventListener(node, type, proxy); + }); + + // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class + // is removed then added back immediately (same animation frame?). Accessing the + // `offsetParent` property will force a reflow and re-evaluate the CSS animation. + // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics + // https://github.com/chartjs/Chart.js/issues/4737 + expando.reflow = !!node.offsetParent; + + node.classList.add(CSS_RENDER_MONITOR); +} + +function unwatchForRender(node) { + var expando = node[EXPANDO_KEY] || {}; + var proxy = expando.renderProxy; + + if (proxy) { + helpers.each(ANIMATION_START_EVENTS, function(type) { + removeEventListener(node, type, proxy); + }); + + delete expando.renderProxy; + } + + node.classList.remove(CSS_RENDER_MONITOR); +} + +function addResizeListener(node, listener, chart) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + + // Let's keep track of this added resizer and thus avoid DOM query when removing it. + var resizer = expando.resizer = createResizer(throttled(function() { + if (expando.resizer) { + return listener(createEvent('resize', chart)); + } + })); + + // The resizer needs to be attached to the node parent, so we first need to be + // sure that `node` is attached to the DOM before injecting the resizer element. + watchForRender(node, function() { + if (expando.resizer) { + var container = node.parentNode; + if (container && container !== resizer.parentNode) { + container.insertBefore(resizer, container.firstChild); + } + + // The container size might have changed, let's reset the resizer state. + resizer._reset(); + } + }); +} + +function removeResizeListener(node) { + var expando = node[EXPANDO_KEY] || {}; + var resizer = expando.resizer; + + delete expando.resizer; + unwatchForRender(node); + + if (resizer && resizer.parentNode) { + resizer.parentNode.removeChild(resizer); + } +} + +function injectCSS(platform, css) { + // http://stackoverflow.com/q/3922139 + var style = platform._style || document.createElement('style'); + if (!platform._style) { + platform._style = style; + css = '/* Chart.js */\n' + css; + style.setAttribute('type', 'text/css'); + document.getElementsByTagName('head')[0].appendChild(style); + } + + style.appendChild(document.createTextNode(css)); +} + +module.exports = { + /** + * This property holds whether this platform is enabled for the current environment. + * Currently used by platform.js to select the proper implementation. + * @private + */ + _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', + + initialize: function() { + var keyframes = 'from{opacity:0.99}to{opacity:1}'; + + injectCSS(this, + // DOM rendering detection + // https://davidwalsh.name/detect-node-insertion + '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + + '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + + '.' + CSS_RENDER_MONITOR + '{' + + '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + + 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + + '}' + ); + }, + + acquireContext: function(item, config) { + if (typeof item === 'string') { + item = document.getElementById(item); + } else if (item.length) { + // Support for array based queries (such as jQuery) + item = item[0]; + } + + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + // To prevent canvas fingerprinting, some add-ons undefine the getContext + // method, for example: https://github.com/kkapsner/CanvasBlocker + // https://github.com/chartjs/Chart.js/issues/2807 + var context = item && item.getContext && item.getContext('2d'); + + // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is + // inside an iframe or when running in a protected environment. We could guess the + // types from their toString() value but let's keep things flexible and assume it's + // a sufficient condition if the item has a context2D which has item as `canvas`. + // https://github.com/chartjs/Chart.js/issues/3887 + // https://github.com/chartjs/Chart.js/issues/4102 + // https://github.com/chartjs/Chart.js/issues/4152 + if (context && context.canvas === item) { + initCanvas(item, config); + return context; + } + + return null; + }, + + releaseContext: function(context) { + var canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { + return; + } + + var initial = canvas[EXPANDO_KEY].initial; + ['height', 'width'].forEach(function(prop) { + var value = initial[prop]; + if (helpers.isNullOrUndef(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); + + helpers.each(initial.style || {}, function(value, key) { + canvas.style[key] = value; + }); + + // The canvas render size might have been changed (and thus the state stack discarded), + // we can't use save() and restore() to restore the initial state. So make sure that at + // least the canvas context is reset to the default state by setting the canvas width. + // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html + canvas.width = canvas.width; + + delete canvas[EXPANDO_KEY]; + }, + + addEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + addResizeListener(canvas, listener, chart); + return; + } + + var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); + var proxies = expando.proxies || (expando.proxies = {}); + var proxy = proxies[chart.id + '_' + type] = function(event) { + listener(fromNativeEvent(event, chart)); + }; + + addEventListener(canvas, type, proxy); + }, + + removeEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + removeResizeListener(canvas, listener); + return; + } + + var expando = listener[EXPANDO_KEY] || {}; + var proxies = expando.proxies || {}; + var proxy = proxies[chart.id + '_' + type]; + if (!proxy) { + return; + } + + removeEventListener(canvas, type, proxy); + } +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use EventTarget.addEventListener instead. + * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + * @function Chart.helpers.addEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.addEvent = addEventListener; + +/** + * Provided for backward compatibility, use EventTarget.removeEventListener instead. + * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener + * @function Chart.helpers.removeEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.removeEvent = removeEventListener; + +},{"46":46}],49:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); +var basic = require(47); +var dom = require(48); + +// @TODO Make possible to select another platform at build time. +var implementation = dom._enabled ? dom : basic; + +/** + * @namespace Chart.platform + * @see https://chartjs.gitbooks.io/proposals/content/Platform.html + * @since 2.4.0 + */ +module.exports = helpers.extend({ + /** + * @since 2.7.0 + */ + initialize: function() {}, + + /** + * Called at chart construction time, returns a context2d instance implementing + * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. + * @param {*} item - The native item from which to acquire context (platform specific) + * @param {Object} options - The chart options + * @returns {CanvasRenderingContext2D} context2d instance + */ + acquireContext: function() {}, + + /** + * Called at chart destruction time, releases any resources associated to the context + * previously returned by the acquireContext() method. + * @param {CanvasRenderingContext2D} context - The context2d instance + * @returns {Boolean} true if the method succeeded, else false + */ + releaseContext: function() {}, + + /** + * Registers the specified listener on the given chart. + * @param {Chart} chart - Chart from which to listen for event + * @param {String} type - The ({@link IEvent}) type to listen for + * @param {Function} listener - Receives a notification (an object that implements + * the {@link IEvent} interface) when an event of the specified type occurs. + */ + addEventListener: function() {}, + + /** + * Removes the specified listener previously registered with addEventListener. + * @param {Chart} chart -Chart from which to remove the listener + * @param {String} type - The ({@link IEvent}) type to remove + * @param {Function} listener - The listener function to remove from the event target. + */ + removeEventListener: function() {} + +}, implementation); + +/** + * @interface IPlatform + * Allows abstracting platform dependencies away from the chart + * @borrows Chart.platform.acquireContext as acquireContext + * @borrows Chart.platform.releaseContext as releaseContext + * @borrows Chart.platform.addEventListener as addEventListener + * @borrows Chart.platform.removeEventListener as removeEventListener + */ + +/** + * @interface IEvent + * @prop {String} type - The event type name, possible values are: + * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', + * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' + * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') + * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) + * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) + */ + +},{"46":46,"47":47,"48":48}],50:[function(require,module,exports){ +'use strict'; + +module.exports = {}; +module.exports.filler = require(51); +module.exports.legend = require(52); +module.exports.title = require(53); + +},{"51":51,"52":52,"53":53}],51:[function(require,module,exports){ +/** + * Plugin based on discussion from the following Chart.js issues: + * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 + * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 + */ + +'use strict'; + +var defaults = require(26); +var elements = require(41); +var helpers = require(46); + +defaults._set('global', { + plugins: { + filler: { + propagate: true + } + } +}); + +var mappers = { + dataset: function(source) { + var index = source.fill; + var chart = source.chart; + var meta = chart.getDatasetMeta(index); + var visible = meta && chart.isDatasetVisible(index); + var points = (visible && meta.dataset._children) || []; + var length = points.length || 0; + + return !length ? null : function(point, i) { + return (i < length && points[i]._view) || null; + }; + }, + + boundary: function(source) { + var boundary = source.boundary; + var x = boundary ? boundary.x : null; + var y = boundary ? boundary.y : null; + + return function(point) { + return { + x: x === null ? point.x : x, + y: y === null ? point.y : y, + }; + }; + } +}; + +// @todo if (fill[0] === '#') +function decodeFill(el, index, count) { + var model = el._model || {}; + var fill = model.fill; + var target; + + if (fill === undefined) { + fill = !!model.backgroundColor; + } + + if (fill === false || fill === null) { + return false; + } + + if (fill === true) { + return 'origin'; + } + + target = parseFloat(fill, 10); + if (isFinite(target) && Math.floor(target) === target) { + if (fill[0] === '-' || fill[0] === '+') { + target = index + target; + } + + if (target === index || target < 0 || target >= count) { + return false; + } + + return target; + } + + switch (fill) { + // compatibility + case 'bottom': + return 'start'; + case 'top': + return 'end'; + case 'zero': + return 'origin'; + // supported boundaries + case 'origin': + case 'start': + case 'end': + return fill; + // invalid fill values + default: + return false; + } +} + +function computeBoundary(source) { + var model = source.el._model || {}; + var scale = source.el._scale || {}; + var fill = source.fill; + var target = null; + var horizontal; + + if (isFinite(fill)) { + return null; + } + + // Backward compatibility: until v3, we still need to support boundary values set on + // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and + // controllers might still use it (e.g. the Smith chart). + + if (fill === 'start') { + target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; + } else if (fill === 'end') { + target = model.scaleTop === undefined ? scale.top : model.scaleTop; + } else if (model.scaleZero !== undefined) { + target = model.scaleZero; + } else if (scale.getBasePosition) { + target = scale.getBasePosition(); + } else if (scale.getBasePixel) { + target = scale.getBasePixel(); + } + + if (target !== undefined && target !== null) { + if (target.x !== undefined && target.y !== undefined) { + return target; + } + + if (typeof target === 'number' && isFinite(target)) { + horizontal = scale.isHorizontal(); + return { + x: horizontal ? target : null, + y: horizontal ? null : target + }; + } + } + + return null; +} + +function resolveTarget(sources, index, propagate) { + var source = sources[index]; + var fill = source.fill; + var visited = [index]; + var target; + + if (!propagate) { + return fill; + } + + while (fill !== false && visited.indexOf(fill) === -1) { + if (!isFinite(fill)) { + return fill; + } + + target = sources[fill]; + if (!target) { + return false; + } + + if (target.visible) { + return fill; + } + + visited.push(fill); + fill = target.fill; + } + + return false; +} + +function createMapper(source) { + var fill = source.fill; + var type = 'dataset'; + + if (fill === false) { + return null; + } + + if (!isFinite(fill)) { + type = 'boundary'; + } + + return mappers[type](source); +} + +function isDrawable(point) { + return point && !point.skip; +} + +function drawArea(ctx, curve0, curve1, len0, len1) { + var i; + + if (!len0 || !len1) { + return; + } + + // building first area curve (normal) + ctx.moveTo(curve0[0].x, curve0[0].y); + for (i = 1; i < len0; ++i) { + helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); + } + + // joining the two area curves + ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); + + // building opposite area curve (reverse) + for (i = len1 - 1; i > 0; --i) { + helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); + } +} + +function doFill(ctx, points, mapper, view, color, loop) { + var count = points.length; + var span = view.spanGaps; + var curve0 = []; + var curve1 = []; + var len0 = 0; + var len1 = 0; + var i, ilen, index, p0, p1, d0, d1; + + ctx.beginPath(); + + for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { + index = i % count; + p0 = points[index]._view; + p1 = mapper(p0, index, view); + d0 = isDrawable(p0); + d1 = isDrawable(p1); + + if (d0 && d1) { + len0 = curve0.push(p0); + len1 = curve1.push(p1); + } else if (len0 && len1) { + if (!span) { + drawArea(ctx, curve0, curve1, len0, len1); + len0 = len1 = 0; + curve0 = []; + curve1 = []; + } else { + if (d0) { + curve0.push(p0); + } + if (d1) { + curve1.push(p1); + } + } + } + } + + drawArea(ctx, curve0, curve1, len0, len1); + + ctx.closePath(); + ctx.fillStyle = color; + ctx.fill(); +} + +module.exports = { + id: 'filler', + + afterDatasetsUpdate: function(chart, options) { + var count = (chart.data.datasets || []).length; + var propagate = options.propagate; + var sources = []; + var meta, i, el, source; + + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + el = meta.dataset; + source = null; + + if (el && el._model && el instanceof elements.Line) { + source = { + visible: chart.isDatasetVisible(i), + fill: decodeFill(el, i, count), + chart: chart, + el: el + }; + } + + meta.$filler = source; + sources.push(source); + } + + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source) { + continue; + } + + source.fill = resolveTarget(sources, i, propagate); + source.boundary = computeBoundary(source); + source.mapper = createMapper(source); + } + }, + + beforeDatasetDraw: function(chart, args) { + var meta = args.meta.$filler; + if (!meta) { + return; + } + + var ctx = chart.ctx; + var el = meta.el; + var view = el._view; + var points = el._children || []; + var mapper = meta.mapper; + var color = view.backgroundColor || defaults.global.defaultColor; + + if (mapper && color && points.length) { + helpers.canvas.clipArea(ctx, chart.chartArea); + doFill(ctx, points, mapper, view, color, el._loop); + helpers.canvas.unclipArea(ctx); + } + } +}; + +},{"26":26,"41":41,"46":46}],52:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); +var layouts = require(31); + +var noop = helpers.noop; + +defaults._set('global', { + legend: { + display: true, + position: 'top', + fullWidth: true, + reverse: false, + weight: 1000, + + // a callback that will handle + onClick: function(e, legendItem) { + var index = legendItem.datasetIndex; + var ci = this.chart; + var meta = ci.getDatasetMeta(index); + + // See controller.isDatasetVisible comment + meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; + + // We hid a dataset ... rerender the chart + ci.update(); + }, + + onHover: null, + + labels: { + boxWidth: 40, + padding: 10, + // Generates labels shown in the legend + // Valid properties to return: + // text : text to display + // fillStyle : fill of coloured box + // strokeStyle: stroke of coloured box + // hidden : if this legend item refers to a hidden item + // lineCap : cap style for line + // lineDash + // lineDashOffset : + // lineJoin : + // lineWidth : + generateLabels: function(chart) { + var data = chart.data; + return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { + return { + text: dataset.label, + fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), + hidden: !chart.isDatasetVisible(i), + lineCap: dataset.borderCapStyle, + lineDash: dataset.borderDash, + lineDashOffset: dataset.borderDashOffset, + lineJoin: dataset.borderJoinStyle, + lineWidth: dataset.borderWidth, + strokeStyle: dataset.borderColor, + pointStyle: dataset.pointStyle, + + // Below is extra data used for toggling the datasets + datasetIndex: i + }; + }, this) : []; + } + } + }, + + legendCallback: function(chart) { + var text = []; + text.push('
    '); + for (var i = 0; i < chart.data.datasets.length; i++) { + text.push('
  • '); + if (chart.data.datasets[i].label) { + text.push(chart.data.datasets[i].label); + } + text.push('
  • '); + } + text.push('
'); + return text.join(''); + } +}); + +/** + * Helper function to get the box width based on the usePointStyle option + * @param labelopts {Object} the label options on the legend + * @param fontSize {Number} the label font size + * @return {Number} width of the color box area + */ +function getBoxWidth(labelOpts, fontSize) { + return labelOpts.usePointStyle ? + fontSize * Math.SQRT2 : + labelOpts.boxWidth; +} + +/** + * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! + */ +var Legend = Element.extend({ + + initialize: function(config) { + helpers.extend(this, config); + + // Contains hit boxes for each dataset (in dataset order) + this.legendHitBoxes = []; + + // Are we in doughnut mode which has a different data type + this.doughnutMode = false; + }, + + // These methods are ordered by lifecycle. Utilities then follow. + // Any function defined here is inherited by all legend types. + // Any function can be extended by the legend type + + beforeUpdate: noop, + update: function(maxWidth, maxHeight, margins) { + var me = this; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); + + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + }, + afterUpdate: noop, + + // + + beforeSetDimensions: noop, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop, + + // + + beforeBuildLabels: noop, + buildLabels: function() { + var me = this; + var labelOpts = me.options.labels || {}; + var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || []; + + if (labelOpts.filter) { + legendItems = legendItems.filter(function(item) { + return labelOpts.filter(item, me.chart.data); + }); + } + + if (me.options.reverse) { + legendItems.reverse(); + } + + me.legendItems = legendItems; + }, + afterBuildLabels: noop, + + // + + beforeFit: noop, + fit: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var display = opts.display; + + var ctx = me.ctx; + + var globalDefault = defaults.global; + var valueOrDefault = helpers.valueOrDefault; + var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); + var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); + var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); + var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); + + // Reset hit boxes + var hitboxes = me.legendHitBoxes = []; + + var minSize = me.minSize; + var isHorizontal = me.isHorizontal(); + + if (isHorizontal) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = display ? 10 : 0; + } else { + minSize.width = display ? 10 : 0; + minSize.height = me.maxHeight; // fill all the height + } + + // Increase sizes here + if (display) { + ctx.font = labelFont; + + if (isHorizontal) { + // Labels + + // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one + var lineWidths = me.lineWidths = [0]; + var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0; + + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; + + helpers.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) { + totalHeight += fontSize + (labelOpts.padding); + lineWidths[lineWidths.length] = me.left; + } + + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: width, + height: fontSize + }; + + lineWidths[lineWidths.length - 1] += width + labelOpts.padding; + }); + + minSize.height += totalHeight; + + } else { + var vPadding = labelOpts.padding; + var columnWidths = me.columnWidths = []; + var totalWidth = labelOpts.padding; + var currentColWidth = 0; + var currentColHeight = 0; + var itemHeight = fontSize + vPadding; + + helpers.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + // If too tall, go to new column + if (currentColHeight + itemHeight > minSize.height) { + totalWidth += currentColWidth + labelOpts.padding; + columnWidths.push(currentColWidth); // previous column width + + currentColWidth = 0; + currentColHeight = 0; + } + + // Get max width + currentColWidth = Math.max(currentColWidth, itemWidth); + currentColHeight += itemHeight; + + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: itemWidth, + height: fontSize + }; + }); + + totalWidth += currentColWidth; + columnWidths.push(currentColWidth); + minSize.width += totalWidth; + } + } + + me.width = minSize.width; + me.height = minSize.height; + }, + afterFit: noop, + + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + + // Actually draw the legend on the canvas + draw: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var globalDefault = defaults.global; + var lineDefault = globalDefault.elements.line; + var legendWidth = me.width; + var lineWidths = me.lineWidths; + + if (opts.display) { + var ctx = me.ctx; + var valueOrDefault = helpers.valueOrDefault; + var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor); + var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); + var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); + var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); + var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); + var cursor; + + // Canvas setup + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + ctx.lineWidth = 0.5; + ctx.strokeStyle = fontColor; // for strikethrough effect + ctx.fillStyle = fontColor; // render in correct colour + ctx.font = labelFont; + + var boxWidth = getBoxWidth(labelOpts, fontSize); + var hitboxes = me.legendHitBoxes; + + // current position + var drawLegendBox = function(x, y, legendItem) { + if (isNaN(boxWidth) || boxWidth <= 0) { + return; + } + + // Set the ctx for the box + ctx.save(); + + ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor); + ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle); + ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset); + ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle); + ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth); + ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor); + var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0); + + if (ctx.setLineDash) { + // IE 9 and 10 do not support line dash + ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash)); + } + + if (opts.labels && opts.labels.usePointStyle) { + // Recalculate x and y for drawPoint() because its expecting + // x and y to be center of figure (instead of top left) + var radius = fontSize * Math.SQRT2 / 2; + var offSet = radius / Math.SQRT2; + var centerX = x + offSet; + var centerY = y + offSet; + + // Draw pointStyle as legend symbol + helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); + } else { + // Draw box as legend symbol + if (!isLineWidthZero) { + ctx.strokeRect(x, y, boxWidth, fontSize); + } + ctx.fillRect(x, y, boxWidth, fontSize); + } + + ctx.restore(); + }; + var fillText = function(x, y, legendItem, textWidth) { + var halfFontSize = fontSize / 2; + var xLeft = boxWidth + halfFontSize + x; + var yMiddle = y + halfFontSize; + + ctx.fillText(legendItem.text, xLeft, yMiddle); + + if (legendItem.hidden) { + // Strikethrough the text if hidden + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.moveTo(xLeft, yMiddle); + ctx.lineTo(xLeft + textWidth, yMiddle); + ctx.stroke(); + } + }; + + // Horizontal + var isHorizontal = me.isHorizontal(); + if (isHorizontal) { + cursor = { + x: me.left + ((legendWidth - lineWidths[0]) / 2), + y: me.top + labelOpts.padding, + line: 0 + }; + } else { + cursor = { + x: me.left + labelOpts.padding, + y: me.top + labelOpts.padding, + line: 0 + }; + } + + var itemHeight = fontSize + labelOpts.padding; + helpers.each(me.legendItems, function(legendItem, i) { + var textWidth = ctx.measureText(legendItem.text).width; + var width = boxWidth + (fontSize / 2) + textWidth; + var x = cursor.x; + var y = cursor.y; + + if (isHorizontal) { + if (x + width >= legendWidth) { + y = cursor.y += itemHeight; + cursor.line++; + x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2); + } + } else if (y + itemHeight > me.bottom) { + x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; + y = cursor.y = me.top + labelOpts.padding; + cursor.line++; + } + + drawLegendBox(x, y, legendItem); + + hitboxes[i].left = x; + hitboxes[i].top = y; + + // Fill the actual label + fillText(x, y, legendItem, textWidth); + + if (isHorizontal) { + cursor.x += width + (labelOpts.padding); + } else { + cursor.y += itemHeight; + } + + }); + } + }, + + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @return {Boolean} true if a change occured + */ + handleEvent: function(e) { + var me = this; + var opts = me.options; + var type = e.type === 'mouseup' ? 'click' : e.type; + var changed = false; + + if (type === 'mousemove') { + if (!opts.onHover) { + return; + } + } else if (type === 'click') { + if (!opts.onClick) { + return; + } + } else { + return; + } + + // Chart event already has relative position in it + var x = e.x; + var y = e.y; + + if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { + // See if we are touching one of the dataset boxes + var lh = me.legendHitBoxes; + for (var i = 0; i < lh.length; ++i) { + var hitBox = lh[i]; + + if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { + // Touching an element + if (type === 'click') { + // use e.native for backwards compatibility + opts.onClick.call(me, e.native, me.legendItems[i]); + changed = true; + break; + } else if (type === 'mousemove') { + // use e.native for backwards compatibility + opts.onHover.call(me, e.native, me.legendItems[i]); + changed = true; + break; + } + } + } + } + + return changed; + } +}); + +function createNewLegendAndAttach(chart, legendOpts) { + var legend = new Legend({ + ctx: chart.ctx, + options: legendOpts, + chart: chart + }); + + layouts.configure(chart, legend, legendOpts); + layouts.addBox(chart, legend); + chart.legend = legend; +} + +module.exports = { + id: 'legend', + + /** + * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making + * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of + * the plugin, which one will be re-exposed in the chart.js file. + * https://github.com/chartjs/Chart.js/pull/2640 + * @private + */ + _element: Legend, + + beforeInit: function(chart) { + var legendOpts = chart.options.legend; + + if (legendOpts) { + createNewLegendAndAttach(chart, legendOpts); + } + }, + + beforeUpdate: function(chart) { + var legendOpts = chart.options.legend; + var legend = chart.legend; + + if (legendOpts) { + helpers.mergeIf(legendOpts, defaults.global.legend); + + if (legend) { + layouts.configure(chart, legend, legendOpts); + legend.options = legendOpts; + } else { + createNewLegendAndAttach(chart, legendOpts); + } + } else if (legend) { + layouts.removeBox(chart, legend); + delete chart.legend; + } + }, + + afterEvent: function(chart, e) { + var legend = chart.legend; + if (legend) { + legend.handleEvent(e); + } + } +}; + +},{"26":26,"27":27,"31":31,"46":46}],53:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var Element = require(27); +var helpers = require(46); +var layouts = require(31); + +var noop = helpers.noop; + +defaults._set('global', { + title: { + display: false, + fontStyle: 'bold', + fullWidth: true, + lineHeight: 1.2, + padding: 10, + position: 'top', + text: '', + weight: 2000 // by default greater than legend (1000) to be above + } +}); + +/** + * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! + */ +var Title = Element.extend({ + initialize: function(config) { + var me = this; + helpers.extend(me, config); + + // Contains hit boxes for each dataset (in dataset order) + me.legendHitBoxes = []; + }, + + // These methods are ordered by lifecycle. Utilities then follow. + + beforeUpdate: noop, + update: function(maxWidth, maxHeight, margins) { + var me = this; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); + + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + + }, + afterUpdate: noop, + + // + + beforeSetDimensions: noop, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop, + + // + + beforeBuildLabels: noop, + buildLabels: noop, + afterBuildLabels: noop, + + // + + beforeFit: noop, + fit: function() { + var me = this; + var valueOrDefault = helpers.valueOrDefault; + var opts = me.options; + var display = opts.display; + var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize); + var minSize = me.minSize; + var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1; + var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); + var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0; + + if (me.isHorizontal()) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = textSize; + } else { + minSize.width = textSize; + minSize.height = me.maxHeight; // fill all the height + } + + me.width = minSize.width; + me.height = minSize.height; + + }, + afterFit: noop, + + // Shared Methods + isHorizontal: function() { + var pos = this.options.position; + return pos === 'top' || pos === 'bottom'; + }, + + // Actually draw the title block on the canvas + draw: function() { + var me = this; + var ctx = me.ctx; + var valueOrDefault = helpers.valueOrDefault; + var opts = me.options; + var globalDefaults = defaults.global; + + if (opts.display) { + var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize); + var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle); + var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily); + var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily); + var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); + var offset = lineHeight / 2 + opts.padding; + var rotation = 0; + var top = me.top; + var left = me.left; + var bottom = me.bottom; + var right = me.right; + var maxWidth, titleX, titleY; + + ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour + ctx.font = titleFont; + + // Horizontal + if (me.isHorizontal()) { + titleX = left + ((right - left) / 2); // midpoint of the width + titleY = top + offset; + maxWidth = right - left; + } else { + titleX = opts.position === 'left' ? left + offset : right - offset; + titleY = top + ((bottom - top) / 2); + maxWidth = bottom - top; + rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); + } + + ctx.save(); + ctx.translate(titleX, titleY); + ctx.rotate(rotation); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + + var text = opts.text; + if (helpers.isArray(text)) { + var y = 0; + for (var i = 0; i < text.length; ++i) { + ctx.fillText(text[i], 0, y, maxWidth); + y += lineHeight; + } + } else { + ctx.fillText(text, 0, 0, maxWidth); + } + + ctx.restore(); + } + } +}); + +function createNewTitleBlockAndAttach(chart, titleOpts) { + var title = new Title({ + ctx: chart.ctx, + options: titleOpts, + chart: chart + }); + + layouts.configure(chart, title, titleOpts); + layouts.addBox(chart, title); + chart.titleBlock = title; +} + +module.exports = { + id: 'title', + + /** + * Backward compatibility: since 2.1.5, the title is registered as a plugin, making + * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of + * the plugin, which one will be re-exposed in the chart.js file. + * https://github.com/chartjs/Chart.js/pull/2640 + * @private + */ + _element: Title, + + beforeInit: function(chart) { + var titleOpts = chart.options.title; + + if (titleOpts) { + createNewTitleBlockAndAttach(chart, titleOpts); + } + }, + + beforeUpdate: function(chart) { + var titleOpts = chart.options.title; + var titleBlock = chart.titleBlock; + + if (titleOpts) { + helpers.mergeIf(titleOpts, defaults.global.title); + + if (titleBlock) { + layouts.configure(chart, titleBlock, titleOpts); + titleBlock.options = titleOpts; + } else { + createNewTitleBlockAndAttach(chart, titleOpts); + } + } else if (titleBlock) { + layouts.removeBox(chart, titleBlock); + delete chart.titleBlock; + } + } +}; + +},{"26":26,"27":27,"31":31,"46":46}],54:[function(require,module,exports){ +'use strict'; + +var Scale = require(33); +var scaleService = require(34); + +module.exports = function() { + + // Default config for a category scale + var defaultConfig = { + position: 'bottom' + }; + + var DatasetScale = Scale.extend({ + /** + * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those + * else fall back to data.labels + * @private + */ + getLabels: function() { + var data = this.chart.data; + return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; + }, + + determineDataLimits: function() { + var me = this; + var labels = me.getLabels(); + me.minIndex = 0; + me.maxIndex = labels.length - 1; + var findIndex; + + if (me.options.ticks.min !== undefined) { + // user specified min value + findIndex = labels.indexOf(me.options.ticks.min); + me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; + } + + if (me.options.ticks.max !== undefined) { + // user specified max value + findIndex = labels.indexOf(me.options.ticks.max); + me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; + } + + me.min = labels[me.minIndex]; + me.max = labels[me.maxIndex]; + }, + + buildTicks: function() { + var me = this; + var labels = me.getLabels(); + // If we are viewing some subset of labels, slice the original array + me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var data = me.chart.data; + var isHorizontal = me.isHorizontal(); + + if (data.yLabels && !isHorizontal) { + return me.getRightValue(data.datasets[datasetIndex].data[index]); + } + return me.ticks[index - me.minIndex]; + }, + + // Used to get data value locations. Value can either be an index or a numerical value + getPixelForValue: function(value, index) { + var me = this; + var offset = me.options.offset; + // 1 is added because we need the length but we have the indexes + var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); + + // If value is a data object, then index is the index in the data array, + // not the index of the scale. We need to change that. + var valueCategory; + if (value !== undefined && value !== null) { + valueCategory = me.isHorizontal() ? value.x : value.y; + } + if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { + var labels = me.getLabels(); + value = valueCategory || value; + var idx = labels.indexOf(value); + index = idx !== -1 ? idx : index; + } + + if (me.isHorizontal()) { + var valueWidth = me.width / offsetAmt; + var widthOffset = (valueWidth * (index - me.minIndex)); + + if (offset) { + widthOffset += (valueWidth / 2); + } + + return me.left + Math.round(widthOffset); + } + var valueHeight = me.height / offsetAmt; + var heightOffset = (valueHeight * (index - me.minIndex)); + + if (offset) { + heightOffset += (valueHeight / 2); + } + + return me.top + Math.round(heightOffset); + }, + getPixelForTick: function(index) { + return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); + }, + getValueForPixel: function(pixel) { + var me = this; + var offset = me.options.offset; + var value; + var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var horz = me.isHorizontal(); + var valueDimension = (horz ? me.width : me.height) / offsetAmt; + + pixel -= horz ? me.left : me.top; + + if (offset) { + pixel -= (valueDimension / 2); + } + + if (pixel <= 0) { + value = 0; + } else { + value = Math.round(pixel / valueDimension); + } + + return value + me.minIndex; + }, + getBasePixel: function() { + return this.bottom; + } + }); + + scaleService.registerScaleType('category', DatasetScale, defaultConfig); +}; + +},{"33":33,"34":34}],55:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var helpers = require(46); +var scaleService = require(34); +var Ticks = require(35); + +module.exports = function(Chart) { + + var defaultConfig = { + position: 'left', + ticks: { + callback: Ticks.formatters.linear + } + }; + + var LinearScale = Chart.LinearScaleBase.extend({ + + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var data = chart.data; + var datasets = data.datasets; + var isHorizontal = me.isHorizontal(); + var DEFAULT_MIN = 0; + var DEFAULT_MAX = 1; + + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + + // First Calculate the range + me.min = null; + me.max = null; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + helpers.each(datasets, function(dataset, datasetIndex) { + if (hasStacks) { + return; + } + + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + } + }); + } + + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; + + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = { + positiveValues: [], + negativeValues: [] + }; + } + + // Store these per type + var positiveValues = valuesPerStack[key].positiveValues; + var negativeValues = valuesPerStack[key].negativeValues; + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + positiveValues[index] = positiveValues[index] || 0; + negativeValues[index] = negativeValues[index] || 0; + + if (opts.relativePoints) { + positiveValues[index] = 100; + } else if (value < 0) { + negativeValues[index] += value; + } else { + positiveValues[index] += value; + } + }); + } + }); + + helpers.each(valuesPerStack, function(valuesForType) { + var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); + var minVal = helpers.min(values); + var maxVal = helpers.max(values); + me.min = me.min === null ? minVal : Math.min(me.min, minVal); + me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); + }); + + } else { + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + if (me.min === null) { + me.min = value; + } else if (value < me.min) { + me.min = value; + } + + if (me.max === null) { + me.max = value; + } else if (value > me.max) { + me.max = value; + } + }); + } + }); + } + + me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; + me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; + + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + this.handleTickRangeOptions(); + }, + getTickLimit: function() { + var maxTicks; + var me = this; + var tickOpts = me.options.ticks; + + if (me.isHorizontal()) { + maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50)); + } else { + // The factor of 2 used to scale the font size has been experimentally determined. + var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize); + maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize))); + } + + return maxTicks; + }, + // Called after the ticks are built. We need + handleDirectionalChanges: function() { + if (!this.isHorizontal()) { + // We are in a vertical orientation. The top value is the highest. So reverse the array + this.ticks.reverse(); + } + }, + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + // Utils + getPixelForValue: function(value) { + // This must be called after fit has been run so that + // this.left, this.top, this.right, and this.bottom have been defined + var me = this; + var start = me.start; + + var rightValue = +me.getRightValue(value); + var pixel; + var range = me.end - start; + + if (me.isHorizontal()) { + pixel = me.left + (me.width / range * (rightValue - start)); + } else { + pixel = me.bottom - (me.height / range * (rightValue - start)); + } + return pixel; + }, + getValueForPixel: function(pixel) { + var me = this; + var isHorizontal = me.isHorizontal(); + var innerDimension = isHorizontal ? me.width : me.height; + var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; + return me.start + ((me.end - me.start) * offset); + }, + getPixelForTick: function(index) { + return this.getPixelForValue(this.ticksAsNumbers[index]); + } + }); + + scaleService.registerScaleType('linear', LinearScale, defaultConfig); +}; + +},{"26":26,"34":34,"35":35,"46":46}],56:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); +var Scale = require(33); + +/** + * Generate a set of linear ticks + * @param generationOptions the options used to generate the ticks + * @param dataRange the range of the data + * @returns {Array} array of tick values + */ +function generateTicks(generationOptions, dataRange) { + var ticks = []; + // To get a "nice" value for the tick spacing, we will use the appropriately named + // "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks + // for details. + + var factor; + var precision; + var spacing; + + if (generationOptions.stepSize && generationOptions.stepSize > 0) { + spacing = generationOptions.stepSize; + } else { + var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false); + spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true); + + precision = generationOptions.precision; + if (precision !== undefined) { + // If the user specified a precision, round to that number of decimal places + factor = Math.pow(10, precision); + spacing = Math.ceil(spacing * factor) / factor; + } + } + var niceMin = Math.floor(dataRange.min / spacing) * spacing; + var niceMax = Math.ceil(dataRange.max / spacing) * spacing; + + // If min, max and stepSize is set and they make an evenly spaced scale use it. + if (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) { + // If very close to our whole number, use it. + if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) { + niceMin = generationOptions.min; + niceMax = generationOptions.max; + } + } + + var numSpaces = (niceMax - niceMin) / spacing; + // If very close to our rounded value, use it. + if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { + numSpaces = Math.round(numSpaces); + } else { + numSpaces = Math.ceil(numSpaces); + } + + precision = 1; + if (spacing < 1) { + precision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing))); + niceMin = Math.round(niceMin * precision) / precision; + niceMax = Math.round(niceMax * precision) / precision; + } + ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin); + for (var j = 1; j < numSpaces; ++j) { + ticks.push(Math.round((niceMin + j * spacing) * precision) / precision); + } + ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax); + + return ticks; +} + +module.exports = function(Chart) { + + var noop = helpers.noop; + + Chart.LinearScaleBase = Scale.extend({ + getRightValue: function(value) { + if (typeof value === 'string') { + return +value; + } + return Scale.prototype.getRightValue.call(this, value); + }, + + handleTickRangeOptions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, + // do nothing since that would make the chart weird. If the user really wants a weird chart + // axis, they can manually override it + if (tickOpts.beginAtZero) { + var minSign = helpers.sign(me.min); + var maxSign = helpers.sign(me.max); + + if (minSign < 0 && maxSign < 0) { + // move the top up to 0 + me.max = 0; + } else if (minSign > 0 && maxSign > 0) { + // move the bottom down to 0 + me.min = 0; + } + } + + var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; + var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; + + if (tickOpts.min !== undefined) { + me.min = tickOpts.min; + } else if (tickOpts.suggestedMin !== undefined) { + if (me.min === null) { + me.min = tickOpts.suggestedMin; + } else { + me.min = Math.min(me.min, tickOpts.suggestedMin); + } + } + + if (tickOpts.max !== undefined) { + me.max = tickOpts.max; + } else if (tickOpts.suggestedMax !== undefined) { + if (me.max === null) { + me.max = tickOpts.suggestedMax; + } else { + me.max = Math.max(me.max, tickOpts.suggestedMax); + } + } + + if (setMin !== setMax) { + // We set the min or the max but not both. + // So ensure that our range is good + // Inverted or 0 length range can happen when + // ticks.min is set, and no datasets are visible + if (me.min >= me.max) { + if (setMin) { + me.max = me.min + 1; + } else { + me.min = me.max - 1; + } + } + } + + if (me.min === me.max) { + me.max++; + + if (!tickOpts.beginAtZero) { + me.min--; + } + } + }, + getTickLimit: noop, + handleDirectionalChanges: noop, + + buildTicks: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // Figure out what the max number of ticks we can support it is based on the size of + // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 + // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on + // the graph. Make sure we always have at least 2 ticks + var maxTicks = me.getTickLimit(); + maxTicks = Math.max(2, maxTicks); + + var numericGeneratorOptions = { + maxTicks: maxTicks, + min: tickOpts.min, + max: tickOpts.max, + precision: tickOpts.precision, + stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) + }; + var ticks = me.ticks = generateTicks(numericGeneratorOptions, me); + + me.handleDirectionalChanges(); + + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers.max(ticks); + me.min = helpers.min(ticks); + + if (tickOpts.reverse) { + ticks.reverse(); + + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + }, + convertTicksToLabels: function() { + var me = this; + me.ticksAsNumbers = me.ticks.slice(); + me.zeroLineIndex = me.ticks.indexOf(0); + + Scale.prototype.convertTicksToLabels.call(me); + } + }); +}; + +},{"33":33,"46":46}],57:[function(require,module,exports){ +'use strict'; + +var helpers = require(46); +var Scale = require(33); +var scaleService = require(34); +var Ticks = require(35); + +/** + * Generate a set of logarithmic ticks + * @param generationOptions the options used to generate the ticks + * @param dataRange the range of the data + * @returns {Array} array of tick values + */ +function generateTicks(generationOptions, dataRange) { + var ticks = []; + var valueOrDefault = helpers.valueOrDefault; + + // Figure out what the max number of ticks we can support it is based on the size of + // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 + // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on + // the graph + var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min)))); + + var endExp = Math.floor(helpers.log10(dataRange.max)); + var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); + var exp, significand; + + if (tickVal === 0) { + exp = Math.floor(helpers.log10(dataRange.minNotZero)); + significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); + + ticks.push(tickVal); + tickVal = significand * Math.pow(10, exp); + } else { + exp = Math.floor(helpers.log10(tickVal)); + significand = Math.floor(tickVal / Math.pow(10, exp)); + } + var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; + + do { + ticks.push(tickVal); + + ++significand; + if (significand === 10) { + significand = 1; + ++exp; + precision = exp >= 0 ? 1 : precision; + } + + tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; + } while (exp < endExp || (exp === endExp && significand < endSignificand)); + + var lastTick = valueOrDefault(generationOptions.max, tickVal); + ticks.push(lastTick); + + return ticks; +} + + +module.exports = function(Chart) { + + var defaultConfig = { + position: 'left', + + // label settings + ticks: { + callback: Ticks.formatters.logarithmic + } + }; + + var LogarithmicScale = Scale.extend({ + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var data = chart.data; + var datasets = data.datasets; + var isHorizontal = me.isHorizontal(); + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + + // Calculate Range + me.min = null; + me.max = null; + me.minNotZero = null; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + helpers.each(datasets, function(dataset, datasetIndex) { + if (hasStacks) { + return; + } + + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + } + }); + } + + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; + + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = []; + } + + helpers.each(dataset.data, function(rawValue, index) { + var values = valuesPerStack[key]; + var value = +me.getRightValue(rawValue); + // invalid, hidden and negative values are ignored + if (isNaN(value) || meta.data[index].hidden || value < 0) { + return; + } + values[index] = values[index] || 0; + values[index] += value; + }); + } + }); + + helpers.each(valuesPerStack, function(valuesForType) { + if (valuesForType.length > 0) { + var minVal = helpers.min(valuesForType); + var maxVal = helpers.max(valuesForType); + me.min = me.min === null ? minVal : Math.min(me.min, minVal); + me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); + } + }); + + } else { + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + // invalid, hidden and negative values are ignored + if (isNaN(value) || meta.data[index].hidden || value < 0) { + return; + } + + if (me.min === null) { + me.min = value; + } else if (value < me.min) { + me.min = value; + } + + if (me.max === null) { + me.max = value; + } else if (value > me.max) { + me.max = value; + } + + if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { + me.minNotZero = value; + } + }); + } + }); + } + + // Common base implementation to handle ticks.min, ticks.max + this.handleTickRangeOptions(); + }, + handleTickRangeOptions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + var valueOrDefault = helpers.valueOrDefault; + var DEFAULT_MIN = 1; + var DEFAULT_MAX = 10; + + me.min = valueOrDefault(tickOpts.min, me.min); + me.max = valueOrDefault(tickOpts.max, me.max); + + if (me.min === me.max) { + if (me.min !== 0 && me.min !== null) { + me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1); + me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1); + } else { + me.min = DEFAULT_MIN; + me.max = DEFAULT_MAX; + } + } + if (me.min === null) { + me.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1); + } + if (me.max === null) { + me.max = me.min !== 0 + ? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1) + : DEFAULT_MAX; + } + if (me.minNotZero === null) { + if (me.min > 0) { + me.minNotZero = me.min; + } else if (me.max < 1) { + me.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max))); + } else { + me.minNotZero = DEFAULT_MIN; + } + } + }, + buildTicks: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + var reverse = !me.isHorizontal(); + + var generationOptions = { + min: tickOpts.min, + max: tickOpts.max + }; + var ticks = me.ticks = generateTicks(generationOptions, me); + + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers.max(ticks); + me.min = helpers.min(ticks); + + if (tickOpts.reverse) { + reverse = !reverse; + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + if (reverse) { + ticks.reverse(); + } + }, + convertTicksToLabels: function() { + this.tickValues = this.ticks.slice(); + + Scale.prototype.convertTicksToLabels.call(this); + }, + // Get the correct tooltip label + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + getPixelForTick: function(index) { + return this.getPixelForValue(this.tickValues[index]); + }, + /** + * Returns the value of the first tick. + * @param {Number} value - The minimum not zero value. + * @return {Number} The first tick value. + * @private + */ + _getFirstTickValue: function(value) { + var exp = Math.floor(helpers.log10(value)); + var significand = Math.floor(value / Math.pow(10, exp)); + + return significand * Math.pow(10, exp); + }, + getPixelForValue: function(value) { + var me = this; + var reverse = me.options.ticks.reverse; + var log10 = helpers.log10; + var firstTickValue = me._getFirstTickValue(me.minNotZero); + var offset = 0; + var innerDimension, pixel, start, end, sign; + + value = +me.getRightValue(value); + if (reverse) { + start = me.end; + end = me.start; + sign = -1; + } else { + start = me.start; + end = me.end; + sign = 1; + } + if (me.isHorizontal()) { + innerDimension = me.width; + pixel = reverse ? me.right : me.left; + } else { + innerDimension = me.height; + sign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0) + pixel = reverse ? me.top : me.bottom; + } + if (value !== start) { + if (start === 0) { // include zero tick + offset = helpers.getValueOrDefault( + me.options.ticks.fontSize, + Chart.defaults.global.defaultFontSize + ); + innerDimension -= offset; + start = firstTickValue; + } + if (value !== 0) { + offset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start)); + } + pixel += sign * offset; + } + return pixel; + }, + getValueForPixel: function(pixel) { + var me = this; + var reverse = me.options.ticks.reverse; + var log10 = helpers.log10; + var firstTickValue = me._getFirstTickValue(me.minNotZero); + var innerDimension, start, end, value; + + if (reverse) { + start = me.end; + end = me.start; + } else { + start = me.start; + end = me.end; + } + if (me.isHorizontal()) { + innerDimension = me.width; + value = reverse ? me.right - pixel : pixel - me.left; + } else { + innerDimension = me.height; + value = reverse ? pixel - me.top : me.bottom - pixel; + } + if (value !== start) { + if (start === 0) { // include zero tick + var offset = helpers.getValueOrDefault( + me.options.ticks.fontSize, + Chart.defaults.global.defaultFontSize + ); + value -= offset; + innerDimension -= offset; + start = firstTickValue; + } + value *= log10(end) - log10(start); + value /= innerDimension; + value = Math.pow(10, log10(start) + value); + } + return value; + } + }); + + scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig); +}; + +},{"33":33,"34":34,"35":35,"46":46}],58:[function(require,module,exports){ +'use strict'; + +var defaults = require(26); +var helpers = require(46); +var scaleService = require(34); +var Ticks = require(35); + +module.exports = function(Chart) { + + var globalDefaults = defaults.global; + + var defaultConfig = { + display: true, + + // Boolean - Whether to animate scaling the chart from the centre + animate: true, + position: 'chartArea', + + angleLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1 + }, + + gridLines: { + circular: false + }, + + // label settings + ticks: { + // Boolean - Show a backdrop to the scale label + showLabelBackdrop: true, + + // String - The colour of the label backdrop + backdropColor: 'rgba(255,255,255,0.75)', + + // Number - The backdrop padding above & below the label in pixels + backdropPaddingY: 2, + + // Number - The backdrop padding to the side of the label in pixels + backdropPaddingX: 2, + + callback: Ticks.formatters.linear + }, + + pointLabels: { + // Boolean - if true, show point labels + display: true, + + // Number - Point label font size in pixels + fontSize: 10, + + // Function - Used to convert point labels + callback: function(label) { + return label; + } + } + }; + + function getValueCount(scale) { + var opts = scale.options; + return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; + } + + function getPointLabelFontOptions(scale) { + var pointLabelOptions = scale.options.pointLabels; + var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize); + var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle); + var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily); + var font = helpers.fontString(fontSize, fontStyle, fontFamily); + + return { + size: fontSize, + style: fontStyle, + family: fontFamily, + font: font + }; + } + + function measureLabelSize(ctx, fontSize, label) { + if (helpers.isArray(label)) { + return { + w: helpers.longestText(ctx, ctx.font, label), + h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize) + }; + } + + return { + w: ctx.measureText(label).width, + h: fontSize + }; + } + + function determineLimits(angle, pos, size, min, max) { + if (angle === min || angle === max) { + return { + start: pos - (size / 2), + end: pos + (size / 2) + }; + } else if (angle < min || angle > max) { + return { + start: pos - size - 5, + end: pos + }; + } + + return { + start: pos, + end: pos + size + 5 + }; + } + + /** + * Helper function to fit a radial linear scale with point labels + */ + function fitWithPointLabels(scale) { + /* + * Right, this is really confusing and there is a lot of maths going on here + * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 + * + * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif + * + * Solution: + * + * We assume the radius of the polygon is half the size of the canvas at first + * at each index we check if the text overlaps. + * + * Where it does, we store that angle and that index. + * + * After finding the largest index and angle we calculate how much we need to remove + * from the shape radius to move the point inwards by that x. + * + * We average the left and right distances to get the maximum shape radius that can fit in the box + * along with labels. + * + * Once we have that, we can find the centre point for the chart, by taking the x text protrusion + * on each side, removing that from the size, halving it and adding the left x protrusion width. + * + * This will mean we have a shape fitted to the canvas, as large as it can be with the labels + * and position it in the most space efficient manner + * + * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif + */ + + var plFont = getPointLabelFontOptions(scale); + + // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. + // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points + var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); + var furthestLimits = { + r: scale.width, + l: 0, + t: scale.height, + b: 0 + }; + var furthestAngles = {}; + var i, textSize, pointPosition; + + scale.ctx.font = plFont.font; + scale._pointLabelSizes = []; + + var valueCount = getValueCount(scale); + for (i = 0; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, largestPossibleRadius); + textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || ''); + scale._pointLabelSizes[i] = textSize; + + // Add quarter circle to make degree 0 mean top of circle + var angleRadians = scale.getIndexAngle(i); + var angle = helpers.toDegrees(angleRadians) % 360; + var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); + var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); + + if (hLimits.start < furthestLimits.l) { + furthestLimits.l = hLimits.start; + furthestAngles.l = angleRadians; + } + + if (hLimits.end > furthestLimits.r) { + furthestLimits.r = hLimits.end; + furthestAngles.r = angleRadians; + } + + if (vLimits.start < furthestLimits.t) { + furthestLimits.t = vLimits.start; + furthestAngles.t = angleRadians; + } + + if (vLimits.end > furthestLimits.b) { + furthestLimits.b = vLimits.end; + furthestAngles.b = angleRadians; + } + } + + scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles); + } + + /** + * Helper function to fit a radial linear scale with no point labels + */ + function fit(scale) { + var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); + scale.drawingArea = Math.round(largestPossibleRadius); + scale.setCenterPoint(0, 0, 0, 0); + } + + function getTextAlignForAngle(angle) { + if (angle === 0 || angle === 180) { + return 'center'; + } else if (angle < 180) { + return 'left'; + } + + return 'right'; + } + + function fillText(ctx, text, position, fontSize) { + if (helpers.isArray(text)) { + var y = position.y; + var spacing = 1.5 * fontSize; + + for (var i = 0; i < text.length; ++i) { + ctx.fillText(text[i], position.x, y); + y += spacing; + } + } else { + ctx.fillText(text, position.x, position.y); + } + } + + function adjustPointPositionForLabelHeight(angle, textSize, position) { + if (angle === 90 || angle === 270) { + position.y -= (textSize.h / 2); + } else if (angle > 270 || angle < 90) { + position.y -= textSize.h; + } + } + + function drawPointLabels(scale) { + var ctx = scale.ctx; + var opts = scale.options; + var angleLineOpts = opts.angleLines; + var pointLabelOpts = opts.pointLabels; + + ctx.lineWidth = angleLineOpts.lineWidth; + ctx.strokeStyle = angleLineOpts.color; + + var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); + + // Point Label Font + var plFont = getPointLabelFontOptions(scale); + + ctx.textBaseline = 'top'; + + for (var i = getValueCount(scale) - 1; i >= 0; i--) { + if (angleLineOpts.display) { + var outerPosition = scale.getPointPosition(i, outerDistance); + ctx.beginPath(); + ctx.moveTo(scale.xCenter, scale.yCenter); + ctx.lineTo(outerPosition.x, outerPosition.y); + ctx.stroke(); + ctx.closePath(); + } + + if (pointLabelOpts.display) { + // Extra 3px out for some label spacing + var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5); + + // Keep this in loop since we may support array properties here + var pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor); + ctx.font = plFont.font; + ctx.fillStyle = pointLabelFontColor; + + var angleRadians = scale.getIndexAngle(i); + var angle = helpers.toDegrees(angleRadians); + ctx.textAlign = getTextAlignForAngle(angle); + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + } + } + } + + function drawRadiusLine(scale, gridLineOpts, radius, index) { + var ctx = scale.ctx; + ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1); + ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1); + + if (scale.options.gridLines.circular) { + // Draw circular arcs between the points + ctx.beginPath(); + ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); + ctx.closePath(); + ctx.stroke(); + } else { + // Draw straight lines connecting each index + var valueCount = getValueCount(scale); + + if (valueCount === 0) { + return; + } + + ctx.beginPath(); + var pointPosition = scale.getPointPosition(0, radius); + ctx.moveTo(pointPosition.x, pointPosition.y); + + for (var i = 1; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, radius); + ctx.lineTo(pointPosition.x, pointPosition.y); + } + + ctx.closePath(); + ctx.stroke(); + } + } + + function numberOrZero(param) { + return helpers.isNumber(param) ? param : 0; + } + + var LinearRadialScale = Chart.LinearScaleBase.extend({ + setDimensions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + // Set the unconstrained dimension before label rotation + me.width = me.maxWidth; + me.height = me.maxHeight; + me.xCenter = Math.round(me.width / 2); + me.yCenter = Math.round(me.height / 2); + + var minSize = helpers.min([me.height, me.width]); + var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); + me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2); + }, + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var min = Number.POSITIVE_INFINITY; + var max = Number.NEGATIVE_INFINITY; + + helpers.each(chart.data.datasets, function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + min = Math.min(value, min); + max = Math.max(value, max); + }); + } + }); + + me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); + me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); + + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + me.handleTickRangeOptions(); + }, + getTickLimit: function() { + var tickOpts = this.options.ticks; + var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); + return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize))); + }, + convertTicksToLabels: function() { + var me = this; + + Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me); + + // Point labels + me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); + }, + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + fit: function() { + if (this.options.pointLabels.display) { + fitWithPointLabels(this); + } else { + fit(this); + } + }, + /** + * Set radius reductions and determine new radius and center point + * @private + */ + setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { + var me = this; + var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); + var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); + var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); + var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b); + + radiusReductionLeft = numberOrZero(radiusReductionLeft); + radiusReductionRight = numberOrZero(radiusReductionRight); + radiusReductionTop = numberOrZero(radiusReductionTop); + radiusReductionBottom = numberOrZero(radiusReductionBottom); + + me.drawingArea = Math.min( + Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), + Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); + me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); + }, + setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { + var me = this; + var maxRight = me.width - rightMovement - me.drawingArea; + var maxLeft = leftMovement + me.drawingArea; + var maxTop = topMovement + me.drawingArea; + var maxBottom = me.height - bottomMovement - me.drawingArea; + + me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left); + me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top); + }, + + getIndexAngle: function(index) { + var angleMultiplier = (Math.PI * 2) / getValueCount(this); + var startAngle = this.chart.options && this.chart.options.startAngle ? + this.chart.options.startAngle : + 0; + + var startAngleRadians = startAngle * Math.PI * 2 / 360; + + // Start from the top instead of right, so remove a quarter of the circle + return index * angleMultiplier + startAngleRadians; + }, + getDistanceFromCenterForValue: function(value) { + var me = this; + + if (value === null) { + return 0; // null always in center + } + + // Take into account half font size + the yPadding of the top value + var scalingFactor = me.drawingArea / (me.max - me.min); + if (me.options.ticks.reverse) { + return (me.max - value) * scalingFactor; + } + return (value - me.min) * scalingFactor; + }, + getPointPosition: function(index, distanceFromCenter) { + var me = this; + var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); + return { + x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter, + y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter + }; + }, + getPointPositionForValue: function(index, value) { + return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); + }, + + getBasePosition: function() { + var me = this; + var min = me.min; + var max = me.max; + + return me.getPointPositionForValue(0, + me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0); + }, + + draw: function() { + var me = this; + var opts = me.options; + var gridLineOpts = opts.gridLines; + var tickOpts = opts.ticks; + var valueOrDefault = helpers.valueOrDefault; + + if (opts.display) { + var ctx = me.ctx; + var startAngle = this.getIndexAngle(0); + + // Tick Font + var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); + var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle); + var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily); + var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily); + + helpers.each(me.ticks, function(label, index) { + // Don't draw a centre value (if it is minimum) + if (index > 0 || tickOpts.reverse) { + var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); + + // Draw circular lines around the scale + if (gridLineOpts.display && index !== 0) { + drawRadiusLine(me, gridLineOpts, yCenterOffset, index); + } + + if (tickOpts.display) { + var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor); + ctx.font = tickLabelFont; + + ctx.save(); + ctx.translate(me.xCenter, me.yCenter); + ctx.rotate(startAngle); + + if (tickOpts.showLabelBackdrop) { + var labelWidth = ctx.measureText(label).width; + ctx.fillStyle = tickOpts.backdropColor; + ctx.fillRect( + -labelWidth / 2 - tickOpts.backdropPaddingX, + -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY, + labelWidth + tickOpts.backdropPaddingX * 2, + tickFontSize + tickOpts.backdropPaddingY * 2 + ); + } + + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = tickFontColor; + ctx.fillText(label, 0, -yCenterOffset); + ctx.restore(); + } + } + }); + + if (opts.angleLines.display || opts.pointLabels.display) { + drawPointLabels(me); + } + } + } + }); + + scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig); +}; + +},{"26":26,"34":34,"35":35,"46":46}],59:[function(require,module,exports){ +/* global window: false */ +'use strict'; + +var moment = require(6); +moment = typeof moment === 'function' ? moment : window.moment; + +var defaults = require(26); +var helpers = require(46); +var Scale = require(33); +var scaleService = require(34); + +// Integer constants are from the ES6 spec. +var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; +var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + +var INTERVALS = { + millisecond: { + common: true, + size: 1, + steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] + }, + second: { + common: true, + size: 1000, + steps: [1, 2, 5, 10, 15, 30] + }, + minute: { + common: true, + size: 60000, + steps: [1, 2, 5, 10, 15, 30] + }, + hour: { + common: true, + size: 3600000, + steps: [1, 2, 3, 6, 12] + }, + day: { + common: true, + size: 86400000, + steps: [1, 2, 5] + }, + week: { + common: false, + size: 604800000, + steps: [1, 2, 3, 4] + }, + month: { + common: true, + size: 2.628e9, + steps: [1, 2, 3] + }, + quarter: { + common: false, + size: 7.884e9, + steps: [1, 2, 3, 4] + }, + year: { + common: true, + size: 3.154e10 + } +}; + +var UNITS = Object.keys(INTERVALS); + +function sorter(a, b) { + return a - b; +} + +function arrayUnique(items) { + var hash = {}; + var out = []; + var i, ilen, item; + + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + if (!hash[item]) { + hash[item] = true; + out.push(item); + } + } + + return out; +} + +/** + * Returns an array of {time, pos} objects used to interpolate a specific `time` or position + * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is + * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other + * extremity (left + width or top + height). Note that it would be more optimized to directly + * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need + * to create the lookup table. The table ALWAYS contains at least two items: min and max. + * + * @param {Number[]} timestamps - timestamps sorted from lowest to highest. + * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min + * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. + * If 'series', timestamps will be positioned at the same distance from each other. In this + * case, only timestamps that break the time linearity are registered, meaning that in the + * best case, all timestamps are linear, the table contains only min and max. + */ +function buildLookupTable(timestamps, min, max, distribution) { + if (distribution === 'linear' || !timestamps.length) { + return [ + {time: min, pos: 0}, + {time: max, pos: 1} + ]; + } + + var table = []; + var items = [min]; + var i, ilen, prev, curr, next; + + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + curr = timestamps[i]; + if (curr > min && curr < max) { + items.push(curr); + } + } + + items.push(max); + + for (i = 0, ilen = items.length; i < ilen; ++i) { + next = items[i + 1]; + prev = items[i - 1]; + curr = items[i]; + + // only add points that breaks the scale linearity + if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { + table.push({time: curr, pos: i / (ilen - 1)}); + } + } + + return table; +} + +// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ +function lookup(table, key, value) { + var lo = 0; + var hi = table.length - 1; + var mid, i0, i1; + + while (lo >= 0 && lo <= hi) { + mid = (lo + hi) >> 1; + i0 = table[mid - 1] || null; + i1 = table[mid]; + + if (!i0) { + // given value is outside table (before first item) + return {lo: null, hi: i1}; + } else if (i1[key] < value) { + lo = mid + 1; + } else if (i0[key] > value) { + hi = mid - 1; + } else { + return {lo: i0, hi: i1}; + } + } + + // given value is outside table (after last item) + return {lo: i1, hi: null}; +} + +/** + * Linearly interpolates the given source `value` using the table items `skey` values and + * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') + * returns the position for a timestamp equal to 42. If value is out of bounds, values at + * index [0, 1] or [n - 1, n] are used for the interpolation. + */ +function interpolate(table, skey, sval, tkey) { + var range = lookup(table, skey, sval); + + // Note: the lookup table ALWAYS contains at least 2 items (min and max) + var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; + var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; + + var span = next[skey] - prev[skey]; + var ratio = span ? (sval - prev[skey]) / span : 0; + var offset = (next[tkey] - prev[tkey]) * ratio; + + return prev[tkey] + offset; +} + +/** + * Convert the given value to a moment object using the given time options. + * @see http://momentjs.com/docs/#/parsing/ + */ +function momentify(value, options) { + var parser = options.parser; + var format = options.parser || options.format; + + if (typeof parser === 'function') { + return parser(value); + } + + if (typeof value === 'string' && typeof format === 'string') { + return moment(value, format); + } + + if (!(value instanceof moment)) { + value = moment(value); + } + + if (value.isValid()) { + return value; + } + + // Labels are in an incompatible moment format and no `parser` has been provided. + // The user might still use the deprecated `format` option to convert his inputs. + if (typeof format === 'function') { + return format(value); + } + + return value; +} + +function parse(input, scale) { + if (helpers.isNullOrUndef(input)) { + return null; + } + + var options = scale.options.time; + var value = momentify(scale.getRightValue(input), options); + if (!value.isValid()) { + return null; + } + + if (options.round) { + value.startOf(options.round); + } + + return value.valueOf(); +} + +/** + * Returns the number of unit to skip to be able to display up to `capacity` number of ticks + * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. + */ +function determineStepSize(min, max, unit, capacity) { + var range = max - min; + var interval = INTERVALS[unit]; + var milliseconds = interval.size; + var steps = interval.steps; + var i, ilen, factor; + + if (!steps) { + return Math.ceil(range / (capacity * milliseconds)); + } + + for (i = 0, ilen = steps.length; i < ilen; ++i) { + factor = steps[i]; + if (Math.ceil(range / (milliseconds * factor)) <= capacity) { + break; + } + } + + return factor; +} + +/** + * Figures out what unit results in an appropriate number of auto-generated ticks + */ +function determineUnitForAutoTicks(minUnit, min, max, capacity) { + var ilen = UNITS.length; + var i, interval, factor; + + for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { + interval = INTERVALS[UNITS[i]]; + factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; + + if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { + return UNITS[i]; + } + } + + return UNITS[ilen - 1]; +} + +/** + * Figures out what unit to format a set of ticks with + */ +function determineUnitForFormatting(ticks, minUnit, min, max) { + var duration = moment.duration(moment(max).diff(moment(min))); + var ilen = UNITS.length; + var i, unit; + + for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { + unit = UNITS[i]; + if (INTERVALS[unit].common && duration.as(unit) >= ticks.length) { + return unit; + } + } + + return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; +} + +function determineMajorUnit(unit) { + for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { + if (INTERVALS[UNITS[i]].common) { + return UNITS[i]; + } + } +} + +/** + * Generates a maximum of `capacity` timestamps between min and max, rounded to the + * `minor` unit, aligned on the `major` unit and using the given scale time `options`. + * Important: this method can return ticks outside the min and max range, it's the + * responsibility of the calling code to clamp values if needed. + */ +function generate(min, max, capacity, options) { + var timeOpts = options.time; + var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); + var major = determineMajorUnit(minor); + var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize); + var weekday = minor === 'week' ? timeOpts.isoWeekday : false; + var majorTicksEnabled = options.ticks.major.enabled; + var interval = INTERVALS[minor]; + var first = moment(min); + var last = moment(max); + var ticks = []; + var time; + + if (!stepSize) { + stepSize = determineStepSize(min, max, minor, capacity); + } + + // For 'week' unit, handle the first day of week option + if (weekday) { + first = first.isoWeekday(weekday); + last = last.isoWeekday(weekday); + } + + // Align first/last ticks on unit + first = first.startOf(weekday ? 'day' : minor); + last = last.startOf(weekday ? 'day' : minor); + + // Make sure that the last tick include max + if (last < max) { + last.add(1, minor); + } + + time = moment(first); + + if (majorTicksEnabled && major && !weekday && !timeOpts.round) { + // Align the first tick on the previous `minor` unit aligned on the `major` unit: + // we first aligned time on the previous `major` unit then add the number of full + // stepSize there is between first and the previous major time. + time.startOf(major); + time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor); + } + + for (; time < last; time.add(stepSize, minor)) { + ticks.push(+time); + } + + ticks.push(+time); + + return ticks; +} + +/** + * Returns the right and left offsets from edges in the form of {left, right}. + * Offsets are added when the `offset` option is true. + */ +function computeOffsets(table, ticks, min, max, options) { + var left = 0; + var right = 0; + var upper, lower; + + if (options.offset && ticks.length) { + if (!options.time.min) { + upper = ticks.length > 1 ? ticks[1] : max; + lower = ticks[0]; + left = ( + interpolate(table, 'time', upper, 'pos') - + interpolate(table, 'time', lower, 'pos') + ) / 2; + } + if (!options.time.max) { + upper = ticks[ticks.length - 1]; + lower = ticks.length > 1 ? ticks[ticks.length - 2] : min; + right = ( + interpolate(table, 'time', upper, 'pos') - + interpolate(table, 'time', lower, 'pos') + ) / 2; + } + } + + return {left: left, right: right}; +} + +function ticksFromTimestamps(values, majorUnit) { + var ticks = []; + var i, ilen, value, major; + + for (i = 0, ilen = values.length; i < ilen; ++i) { + value = values[i]; + major = majorUnit ? value === +moment(value).startOf(majorUnit) : false; + + ticks.push({ + value: value, + major: major + }); + } + + return ticks; +} + +function determineLabelFormat(data, timeOpts) { + var i, momentDate, hasTime; + var ilen = data.length; + + // find the label with the most parts (milliseconds, minutes, etc.) + // format all labels with the same level of detail as the most specific label + for (i = 0; i < ilen; i++) { + momentDate = momentify(data[i], timeOpts); + if (momentDate.millisecond() !== 0) { + return 'MMM D, YYYY h:mm:ss.SSS a'; + } + if (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) { + hasTime = true; + } + } + if (hasTime) { + return 'MMM D, YYYY h:mm:ss a'; + } + return 'MMM D, YYYY'; +} + +module.exports = function() { + + var defaultConfig = { + position: 'bottom', + + /** + * Data distribution along the scale: + * - 'linear': data are spread according to their time (distances can vary), + * - 'series': data are spread at the same distance from each other. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + distribution: 'linear', + + /** + * Scale boundary strategy (bypassed by min/max time options) + * - `data`: make sure data are fully visible, ticks outside are removed + * - `ticks`: make sure ticks are fully visible, data outside are truncated + * @see https://github.com/chartjs/Chart.js/pull/4556 + * @since 2.7.0 + */ + bounds: 'data', + + time: { + parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment + format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/ + unit: false, // false == automatic or override with week, month, year, etc. + round: false, // none, or override with week, month, year, etc. + displayFormat: false, // DEPRECATED + isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/ + minUnit: 'millisecond', + + // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/ + displayFormats: { + millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM, + second: 'h:mm:ss a', // 11:20:01 AM + minute: 'h:mm a', // 11:20 AM + hour: 'hA', // 5PM + day: 'MMM D', // Sep 4 + week: 'll', // Week 46, or maybe "[W]WW - YYYY" ? + month: 'MMM YYYY', // Sept 2015 + quarter: '[Q]Q - YYYY', // Q3 + year: 'YYYY' // 2015 + }, + }, + ticks: { + autoSkip: false, + + /** + * Ticks generation input values: + * - 'auto': generates "optimal" ticks based on scale size and time options. + * - 'data': generates ticks from data (including labels from data {t|x|y} objects). + * - 'labels': generates ticks from user given `data.labels` values ONLY. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + source: 'auto', + + major: { + enabled: false + } + } + }; + + var TimeScale = Scale.extend({ + initialize: function() { + if (!moment) { + throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com'); + } + + this.mergeTicksOptions(); + + Scale.prototype.initialize.call(this); + }, + + update: function() { + var me = this; + var options = me.options; + + // DEPRECATIONS: output a message only one time per update + if (options.time && options.time.format) { + console.warn('options.time.format is deprecated and replaced by options.time.parser.'); + } + + return Scale.prototype.update.apply(me, arguments); + }, + + /** + * Allows data to be referenced via 't' attribute + */ + getRightValue: function(rawValue) { + if (rawValue && rawValue.t !== undefined) { + rawValue = rawValue.t; + } + return Scale.prototype.getRightValue.call(this, rawValue); + }, + + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var timeOpts = me.options.time; + var unit = timeOpts.unit || 'day'; + var min = MAX_INTEGER; + var max = MIN_INTEGER; + var timestamps = []; + var datasets = []; + var labels = []; + var i, j, ilen, jlen, data, timestamp; + + // Convert labels to timestamps + for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) { + labels.push(parse(chart.data.labels[i], me)); + } + + // Convert data to timestamps + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + data = chart.data.datasets[i].data; + + // Let's consider that all data have the same format. + if (helpers.isObject(data[0])) { + datasets[i] = []; + + for (j = 0, jlen = data.length; j < jlen; ++j) { + timestamp = parse(data[j], me); + timestamps.push(timestamp); + datasets[i][j] = timestamp; + } + } else { + timestamps.push.apply(timestamps, labels); + datasets[i] = labels.slice(0); + } + } else { + datasets[i] = []; + } + } + + if (labels.length) { + // Sort labels **after** data have been converted + labels = arrayUnique(labels).sort(sorter); + min = Math.min(min, labels[0]); + max = Math.max(max, labels[labels.length - 1]); + } + + if (timestamps.length) { + timestamps = arrayUnique(timestamps).sort(sorter); + min = Math.min(min, timestamps[0]); + max = Math.max(max, timestamps[timestamps.length - 1]); + } + + min = parse(timeOpts.min, me) || min; + max = parse(timeOpts.max, me) || max; + + // In case there is no valid min/max, set limits based on unit time option + min = min === MAX_INTEGER ? +moment().startOf(unit) : min; + max = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max; + + // Make sure that max is strictly higher than min (required by the lookup table) + me.min = Math.min(min, max); + me.max = Math.max(min + 1, max); + + // PRIVATE + me._horizontal = me.isHorizontal(); + me._table = []; + me._timestamps = { + data: timestamps, + datasets: datasets, + labels: labels + }; + }, + + buildTicks: function() { + var me = this; + var min = me.min; + var max = me.max; + var options = me.options; + var timeOpts = options.time; + var timestamps = []; + var ticks = []; + var i, ilen, timestamp; + + switch (options.ticks.source) { + case 'data': + timestamps = me._timestamps.data; + break; + case 'labels': + timestamps = me._timestamps.labels; + break; + case 'auto': + default: + timestamps = generate(min, max, me.getLabelCapacity(min), options); + } + + if (options.bounds === 'ticks' && timestamps.length) { + min = timestamps[0]; + max = timestamps[timestamps.length - 1]; + } + + // Enforce limits with user min/max options + min = parse(timeOpts.min, me) || min; + max = parse(timeOpts.max, me) || max; + + // Remove ticks outside the min/max range + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + timestamp = timestamps[i]; + if (timestamp >= min && timestamp <= max) { + ticks.push(timestamp); + } + } + + me.min = min; + me.max = max; + + // PRIVATE + me._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max); + me._majorUnit = determineMajorUnit(me._unit); + me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); + me._offsets = computeOffsets(me._table, ticks, min, max, options); + me._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts); + + return ticksFromTimestamps(ticks, me._majorUnit); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var data = me.chart.data; + var timeOpts = me.options.time; + var label = data.labels && index < data.labels.length ? data.labels[index] : ''; + var value = data.datasets[datasetIndex].data[index]; + + if (helpers.isObject(value)) { + label = me.getRightValue(value); + } + if (timeOpts.tooltipFormat) { + return momentify(label, timeOpts).format(timeOpts.tooltipFormat); + } + if (typeof label === 'string') { + return label; + } + + return momentify(label, timeOpts).format(me._labelFormat); + }, + + /** + * Function to format an individual tick mark + * @private + */ + tickFormatFunction: function(tick, index, ticks, formatOverride) { + var me = this; + var options = me.options; + var time = tick.valueOf(); + var formats = options.time.displayFormats; + var minorFormat = formats[me._unit]; + var majorUnit = me._majorUnit; + var majorFormat = formats[majorUnit]; + var majorTime = tick.clone().startOf(majorUnit).valueOf(); + var majorTickOpts = options.ticks.major; + var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; + var label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat); + var tickOpts = major ? majorTickOpts : options.ticks.minor; + var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback); + + return formatter ? formatter(label, index, ticks) : label; + }, + + convertTicksToLabels: function(ticks) { + var labels = []; + var i, ilen; + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks)); + } + + return labels; + }, + + /** + * @private + */ + getPixelForOffset: function(time) { + var me = this; + var size = me._horizontal ? me.width : me.height; + var start = me._horizontal ? me.left : me.top; + var pos = interpolate(me._table, 'time', time, 'pos'); + + return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right); + }, + + getPixelForValue: function(value, index, datasetIndex) { + var me = this; + var time = null; + + if (index !== undefined && datasetIndex !== undefined) { + time = me._timestamps.datasets[datasetIndex][index]; + } + + if (time === null) { + time = parse(value, me); + } + + if (time !== null) { + return me.getPixelForOffset(time); + } + }, + + getPixelForTick: function(index) { + var ticks = this.getTicks(); + return index >= 0 && index < ticks.length ? + this.getPixelForOffset(ticks[index].value) : + null; + }, + + getValueForPixel: function(pixel) { + var me = this; + var size = me._horizontal ? me.width : me.height; + var start = me._horizontal ? me.left : me.top; + var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right; + var time = interpolate(me._table, 'pos', pos, 'time'); + + return moment(time); + }, + + /** + * Crude approximation of what the label width might be + * @private + */ + getLabelWidth: function(label) { + var me = this; + var ticksOpts = me.options.ticks; + var tickLabelWidth = me.ctx.measureText(label).width; + var angle = helpers.toRadians(ticksOpts.maxRotation); + var cosRotation = Math.cos(angle); + var sinRotation = Math.sin(angle); + var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize); + + return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); + }, + + /** + * @private + */ + getLabelCapacity: function(exampleTime) { + var me = this; + + var formatOverride = me.options.time.displayFormats.millisecond; // Pick the longest format for guestimation + + var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride); + var tickLabelWidth = me.getLabelWidth(exampleLabel); + var innerWidth = me.isHorizontal() ? me.width : me.height; + + var capacity = Math.floor(innerWidth / tickLabelWidth); + return capacity > 0 ? capacity : 1; + } + }); + + scaleService.registerScaleType('time', TimeScale, defaultConfig); +}; + +},{"26":26,"33":33,"34":34,"46":46,"6":6}]},{},[7])(7) +}); \ No newline at end of file diff --git a/assets/admin/js/apply.js b/assets/admin/js/apply.js new file mode 100644 index 0000000..c5081ba --- /dev/null +++ b/assets/admin/js/apply.js @@ -0,0 +1,186 @@ +//全选 +function check_all() { + var ischecked = $("#check_all").prop('checked'); + if (ischecked == true) { + $('[name="link-check"]').prop('checked', true); + } else { + $('[name="link-check"]').prop('checked', false); + } +} +//获取选中状态 +function get_check() { + var chk_value = []; + $('input[name="link-check"]:checked').each(function () { + chk_value.push($(this).val()); + }); + return chk_value; +} + + + +// 审核 +function checked_status(status) { + if (get_check().length == 0) { + layer.msg('未选择链接'); + return false; + } + lightyear.loading('show'); + $.ajax({ + url: "ajax_apply.php?set=status", + method: "POST", + data: { + id: get_check(), + status: status + }, + dataType: "json", + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + $("#applylist").load(location.href + " #applylist>*", ""); + } else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//选中删除 +function checked_del(id) { + var link_id = []; + link_id.push(id); + link_id = id ? link_id : get_check(); + if (link_id.length == 0) { + layer.msg('未选择链接'); + return false; + } + + $.alert({ + title: '警告', + content: '确定要删除吗?删除后不可恢复', + buttons: { + confirm: { + text: '删除', + btnClass: 'btn-danger', + action: function () { + lightyear.loading('show'); + $.ajax({ + url: "ajax_apply.php?set=delete", + method: "POST", + data: { + id: link_id + }, + dataType: "json", + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + $("#applylist").load(location.href + " #applylist>*", ""); + } else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); + } + }, + cancel: { + text: '取消' + } + } + }); +} + +//审核状态 +function status(id, status) { + $.ajax({ + url: "ajax_apply.php?set=status", + type: "POST", + dataType: "json", + data: { + id: id, + status: status + }, + dataType: "json", + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + $("#applylist").load(location.href + " #applylist>*", ""); + } else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); + +} + +function deletes(id) { + $.alert({ + title: '警告', + content: '确定要删除吗?删除后不可恢复', + buttons: { + confirm: { + text: '删除', + btnClass: 'btn-danger', + action: function () { + lightyear.loading('show'); + $.ajax({ + url: "ajax_apply.php?set=delete", + method: "POST", + data: { + id: id + }, + dataType: "json", + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + $("#applylist").load(location.href + " #applylist>*", ""); + } else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + + lightyear.loading('hide'); + layer.msg('服务器错误'); + return false; + } + }); + } + }, + cancel: { + text: '取消' + } + } + }); + +} +$("img.lazy").lazyload({ + threshold: 100 +}); +$(document).ready(function () { + $(".lazys").click(function () { + $(this).attr('src', '/assets/admin/loading.gif'); + $(this).lazyload(); + }); +}); \ No newline at end of file diff --git a/assets/admin/js/bootstrap-notify.min.js b/assets/admin/js/bootstrap-notify.min.js new file mode 100644 index 0000000..f5ad385 --- /dev/null +++ b/assets/admin/js/bootstrap-notify.min.js @@ -0,0 +1,2 @@ +/* Project: Bootstrap Growl = v3.1.3 | Description: Turns standard Bootstrap alerts into "Growl-like" notifications. | Author: Mouse0270 aka Robert McIntosh | License: MIT License | Website: https://github.com/mouse0270/bootstrap-growl */ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function e(e,i,n){var i={content:{message:"object"==typeof i?i.message:i,title:i.title?i.title:"",icon:i.icon?i.icon:"",url:i.url?i.url:"#",target:i.target?i.target:"-"}};n=t.extend(!0,{},i,n),this.settings=t.extend(!0,{},s,n),this._defaults=s,"-"==this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),this.init()}var s={element:"body",position:null,type:"info",allow_dismiss:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:'
'};String.format=function(){for(var t=arguments[0],e=1;e .progress-bar').removeClass("progress-bar-"+t.settings.type),t.settings.type=i[e],this.$ele.addClass("alert-"+i[e]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[e]);break;case"icon":var n=this.$ele.find('[data-notify="icon"]');"class"==t.settings.icon_type.toLowerCase()?n.removeClass(t.settings.content.icon).addClass(i[e]):(n.is("img")||n.find("img"),n.attr("src",i[e]));break;case"progress":var a=t.settings.delay-t.settings.delay*(i[e]/100);this.$ele.data("notify-delay",a),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[e]).css("width",i[e]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[e]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[e]);break;default:this.$ele.find('[data-notify="'+e+'"]').html(i[e])}var o=this.$ele.outerHeight()+parseInt(t.settings.spacing)+parseInt(t.settings.offset.y);t.reposition(o)},close:function(){t.close()}}},buildNotify:function(){var e=this.settings.content;this.$ele=t(String.format(this.settings.template,this.settings.type,e.title,e.message,e.url,e.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"==this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:"0px",position:"absolute",top:"0px",width:"100%",zIndex:this.settings.z_index+1}),this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},placement:function(){var e=this,s=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},n=!1,a=this.settings;switch(t('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){return s=Math.max(s,parseInt(t(this).css(a.placement.from))+parseInt(t(this).outerHeight())+parseInt(a.spacing))}),1==this.settings.newest_on_top&&(s=this.settings.offset.y),i[this.settings.placement.from]=s+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),t.each(Array("webkit","moz","o","ms",""),function(t,s){e.$ele[0].style[s+"AnimationIterationCount"]=1}),t(this.settings.element).append(this.$ele),1==this.settings.newest_on_top&&(s=parseInt(s)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(s)),t.isFunction(e.settings.onShow)&&e.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){n=!0}).one(this.animations.end,function(){t.isFunction(e.settings.onShown)&&e.settings.onShown.call(this)}),setTimeout(function(){n||t.isFunction(e.settings.onShown)&&e.settings.onShown.call(this)},600)},bind:function(){var e=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){e.close()}),this.$ele.mouseover(function(){t(this).data("data-hover","true")}).mouseout(function(){t(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){e.$ele.data("notify-delay",e.settings.delay);var s=setInterval(function(){var t=parseInt(e.$ele.data("notify-delay"))-e.settings.timer;if("false"===e.$ele.data("data-hover")&&"pause"==e.settings.mouse_over||"pause"!=e.settings.mouse_over){var i=(e.settings.delay-t)/e.settings.delay*100;e.$ele.data("notify-delay",t),e.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}t<=-e.settings.timer&&(clearInterval(s),e.close())},e.settings.timer)}},close:function(){var e=this,s=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.data("closing","true").addClass(this.settings.animate.exit),e.reposition(s),t.isFunction(e.settings.onClose)&&e.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){t(this).remove(),t.isFunction(e.settings.onClosed)&&e.settings.onClosed.call(this)}),setTimeout(function(){i||(e.$ele.remove(),e.settings.onClosed&&e.settings.onClosed(e.$ele))},600)},reposition:function(e){var s=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',n=this.$ele.nextAll(i);1==this.settings.newest_on_top&&(n=this.$ele.prevAll(i)),n.each(function(){t(this).css(s.settings.placement.from,e),e=parseInt(e)+parseInt(s.settings.spacing)+t(this).outerHeight()})}}),t.notify=function(t,s){var i=new e(this,t,s);return i.notify},t.notifyDefaults=function(e){return s=t.extend(!0,{},s,e)},t.notifyClose=function(e){"undefined"==typeof e||"all"==e?t("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t('[data-notify-position="'+e+'"]').find('[data-notify="dismiss"]').trigger("click")}}); \ No newline at end of file diff --git a/assets/admin/js/bootstrap.min.js b/assets/admin/js/bootstrap.min.js new file mode 100644 index 0000000..9bcd2fc --- /dev/null +++ b/assets/admin/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/assets/admin/js/coloris.min.js b/assets/admin/js/coloris.min.js new file mode 100644 index 0000000..4aa480b --- /dev/null +++ b/assets/admin/js/coloris.min.js @@ -0,0 +1,6 @@ +/*! + * Copyright (c) 2021 Momo Bassit. + * Licensed under the MIT License (MIT) + * https://github.com/mdbassit/Coloris + */ +!function(u,d,s){var f,h,v,i,o,y,c,r,p,g,b,m,a=d.createElement("canvas").getContext("2d"),w={r:0,g:0,b:0,a:1},k={el:"[data-coloris]",parent:null,theme:"light",wrap:!0,margin:2,format:"hex",swatches:[],a11y:{open:"Open color picker",close:"Close color picker",marker:"Saturation: {s}. Brightness: {v}.",hueSlider:"Hue slider",alphaSlider:"Opacity slider",input:"Color value field",swatch:"Color swatch",instruction:"Saturation and brightness selector. Use up, down, left and right arrow keys to select."}};function n(e){if("object"==typeof e)for(var t in e)switch(t){case"el":x(e.el),!1!==e.wrap&&E(e.el);break;case"parent":k.parent=d.querySelector(e.parent),k.parent&&k.parent.appendChild(f);break;case"theme":f.setAttribute("class","clr-picker clr-"+e.theme);break;case"margin":e.margin*=1,k.margin=(isNaN(e.margin)?k:e).margin;break;case"wrap":e.el&&e.wrap&&E(e.el);break;case"format":k.format=e.format;break;case"swatches":Array.isArray(e.swatches)&&function(){var a=[];e.swatches.forEach(function(e,t){a.push('")}),a.length&&(N("clr-swatches").innerHTML="
"+a.join("")+"
")}();break;case"a11y":var a,r,l=e.a11y,n=!1;if("object"==typeof l)for(var i in l)l[i]&&k.a11y[i]&&(k.a11y[i]=l[i],n=!0);n&&(a=N("clr-open-label"),r=N("clr-swatch-label"),a.innerHTML=k.a11y.open,r.innerHTML=k.a11y.swatch,o.setAttribute("aria-label",k.a11y.close),c.setAttribute("aria-label",k.a11y.hueSlider),p.setAttribute("aria-label",k.a11y.alphaSlider),y.setAttribute("aria-label",k.a11y.input),h.setAttribute("aria-label",k.a11y.instruction))}}function x(e){D(d,"click",e,function(e){var t=k.parent,a=e.target.getBoundingClientRect(),r=u.scrollY,l={left:!1,top:!1},n={x:0,y:0},i=a.x,o=r+a.y+a.height+k.margin;b=e.target,m=b.value,f.classList.add("clr-open");var c,s=f.offsetWidth,p=f.offsetHeight;t?(c=u.getComputedStyle(t),e=parseFloat(c.marginTop),c=parseFloat(c.borderTopWidth),(n=t.getBoundingClientRect()).y+=c+r,i-=n.x,o-=n.y,i+s>t.clientWidth&&(i+=a.width-s,l.left=!0),o+p>t.clientHeight-e&&(o-=a.height+p+2*k.margin,l.top=!0),o+=t.scrollTop):(i+s>d.documentElement.clientWidth&&(i+=a.width-s,l.left=!0),o+p-r>d.documentElement.clientHeight&&(o=r+a.y-p-k.margin,l.top=!0)),f.style.left=i+"px",f.style.top=o+"px",v={width:h.offsetWidth,height:h.offsetHeight,x:f.offsetLeft+n.x,y:f.offsetTop+n.y},f.classList.toggle("clr-left",l.left),f.classList.toggle("clr-top",l.top),S(b.value),y.focus({preventScroll:!0})}),D(d,"input",e,function(e){var t=e.target.parentNode;t.classList.contains("clr-field")&&(t.style.color=e.target.value)})}function E(e){d.querySelectorAll(e).forEach(function(e){var t,a=e.parentNode;a.classList.contains("clr-field")||((t=d.createElement("div")).innerHTML='',a.insertBefore(t,e),t.setAttribute("class","clr-field"),t.style.color=e.value,t.appendChild(e))})}function L(e){b&&(e&&m!==b.value&&b.dispatchEvent(new Event("change",{bubbles:!0})),f.classList.remove("clr-open"),b.focus({preventScroll:!0}),b=null)}function S(e){var t=function(e){a.fillStyle="#000",a.fillStyle=e,e=(e=/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i.exec(a.fillStyle))?{r:+e[3],g:+e[4],b:+e[5],a:+e[6]}:(e=a.fillStyle.replace("#","").match(/.{2}/g).map(function(e){return parseInt(e,16)}),{r:e[0],g:e[1],b:e[2],a:1});return e}(e),e=function(e){var t=e.r/255,a=e.g/255,r=e.b/255,l=s.max(t,a,r),n=s.min(t,a,r),i=l-n,o=l,c=0,n=0;i&&(l===t&&(c=(a-r)/i),l===a&&(c=2+(r-t)/i),l===r&&(c=4+(t-a)/i),l&&(n=i/l));return{h:(c=s.floor(60*c))<0?c+360:c,s:s.round(100*n),v:s.round(100*o),a:e.a}}(t);T(e.s,e.v),C(t),c.value=e.h,f.style.color="hsl("+e.h+", 100%, 50%)",r.style.left=e.h/360*100+"%",i.style.left=v.width*e.s/100+"px",i.style.top=100-v.height*e.v/100+"px",p.value=100*e.a,g.style.left=100*e.a+"%"}function l(){b&&(b.value=y.value,b.dispatchEvent(new Event("input",{bubbles:!0})))}function A(e,t){e={h:+c.value,s:e/v.width*100,v:100-t/v.height*100,a:p.value/100},t=function(e){var t=e.s/100,a=e.v/100,r=t*a,l=e.h/60,n=r*(1-s.abs(l%2-1)),i=a-r;r+=i,n+=i;t=s.floor(l)%6,a=[r,n,i,i,n,r][t],l=[n,r,r,n,i,i][t],t=[i,i,n,r,r,n][t];return{r:s.round(255*a),g:s.round(255*l),b:s.round(255*t),a:e.a}}(e);T(e.s,e.v),C(t),l()}function T(e,t){var a=k.a11y.marker;e=+e.toFixed(1),t=+t.toFixed(1),a=(a=a.replace("{s}",e)).replace("{v}",t),i.setAttribute("aria-label",a)}function t(e){var t={pageX:((a=e).changedTouches?a.changedTouches[0]:a).pageX,pageY:(a.changedTouches?a.changedTouches[0]:a).pageY},a=t.pageX-v.x,t=t.pageY-v.y;k.parent&&(t+=k.parent.scrollTop),a=a<0?0:a>v.width?v.width:a,t=t<0?0:t>v.height?v.height:t,i.style.left=a+"px",i.style.top=t+"px",A(a,t),e.preventDefault(),e.stopPropagation()}function C(e){for(var t in e)w[t]=e[t];var a,r=function(e){var t=e.r.toString(16),a=e.g.toString(16),r=e.b.toString(16),l="";e.r<16&&(t="0"+t);e.g<16&&(a="0"+a);e.b<16&&(r="0"+r);e.a<1&&(e=255*e.a|0,l=e.toString(16),e<16&&(l="0"+l));return"#"+t+a+r+l}(w),l=r.substring(0,7),n=1===(a=w).a?"rgb("+a.r+","+a.g+","+a.b+")":"rgba("+a.r+","+a.g+","+a.b+","+a.a+")";switch(i.style.color=l,g.parentNode.style.color=l,g.style.color=r,o.style.color=r,y.value=r,h.style.display="none",h.offsetHeight,h.style.display="",g.nextElementSibling.style.display="none",g.nextElementSibling.offsetHeight,g.nextElementSibling.style.display="",k.format){case"mixed":if(1===w.a)break;case"rgb":y.value=n}}function e(){var e=+c.value,t=+i.style.left.replace("px",""),a=+i.style.top.replace("px","");f.style.color="hsl("+e+", 100%, 50%)",r.style.left=e/360*100+"%",A(t,a)}function H(){var e=p.value/100;g.style.left=100*e+"%",C({a:e}),l()}function N(e){return d.getElementById(e)}function D(e,t,a,r){var l=Element.prototype.matches||Element.prototype.msMatchesSelector;"string"==typeof a?e.addEventListener(t,function(e){l.call(e.target,a)&&r.call(e.target,e)}):(r=a,e.addEventListener(t,r))}function M(e,t){t=void 0!==t?t:[],"loading"!==d.readyState?e.apply(void 0,t):d.addEventListener("DOMContentLoaded",function(){e.apply(void 0,t)})}void 0!==NodeList&&NodeList.prototype&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),u.Coloris=function(){var l={set:n,wrap:E,close:L};function e(e){M(function(){e&&("string"==typeof e?x:n)(e)})}for(var t in l)!function(r){e[r]=function(){for(var e=arguments.length,t=new Array(e),a=0;a
",d.body.appendChild(f),h=N("clr-color-area"),i=N("clr-color-marker"),o=N("clr-color-preview"),y=N("clr-color-value"),c=N("clr-hue-slider"),r=N("clr-hue-marker"),p=N("clr-alpha-slider"),g=N("clr-alpha-marker"),x(k.el),E(k.el),D(f,"mousedown",function(e){f.classList.remove("clr-keyboard-nav"),e.stopPropagation()}),D(h,"mousedown",function(e){D(d,"mousemove",t)}),D(h,"touchstart",function(e){d.addEventListener("touchmove",t,{passive:!1})}),D(i,"mousedown",function(e){D(d,"mousemove",t)}),D(i,"touchstart",function(e){d.addEventListener("touchmove",t,{passive:!1})}),D(y,"change",function(e){S(y.value),l()}),D(o,"click",function(e){L(!0)}),D(f,"click",".clr-swatches button",function(e){S(e.target.style.color),l()}),D(d,"mouseup",function(e){d.removeEventListener("mousemove",t)}),D(d,"touchend",function(e){d.removeEventListener("touchmove",t)}),D(d,"mousedown",function(e){f.classList.remove("clr-keyboard-nav"),L(!0)}),D(d,"keydown",function(e){"Escape"===e.key?L(!0):"Tab"===e.key&&f.classList.add("clr-keyboard-nav")}),D(d,"click",".clr-field button",function(e){e.target.nextElementSibling.dispatchEvent(new Event("click",{bubbles:!0}))}),D(i,"keydown",function(e){var t={ArrowUp:[0,-1],ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0]};-1!==Object.keys(t).indexOf(e.key)&&(!function(e,t){e=+i.style.left.replace("px","")+e,t=+i.style.top.replace("px","")+t,i.style.left=e+"px",i.style.top=t+"px",A(e,t)}.apply(void 0,t[e.key]),e.preventDefault())}),D(h,"click",t),D(c,"input",e),D(p,"input",H)})}(window,document,Math); \ No newline at end of file diff --git a/assets/admin/js/group.js b/assets/admin/js/group.js new file mode 100644 index 0000000..7e1b1dd --- /dev/null +++ b/assets/admin/js/group.js @@ -0,0 +1,146 @@ +function listTable(query) { + var url = window.document.location.href.toString(); + var queryString = url.split("?")[1]; + query = query || queryString; + layer.closeAll(); + var ii = layer.load(2, { shade: [0.1, '#fff'] }); + $.ajax({ + type: 'GET', + url: 'table_group.php?' + query, + dataType: 'html', + cache: false, + success: function (data) { + layer.close(ii); + $("#listTable").html(data); + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//载入页面 +$(document).ready(function () { + if ($("#listTable").length > 0) { + listTable() + } +}); +$(document).on('click', '.sort-up', function () { + //上移 + if ($(this).parents('tr').prevAll().length > 0) { + $(this).parents('tr').prev().before($(this).parents('tr').prop('outerHTML')); + $(this).parents('tr').remove(); + save_order(); + } +}).on('click', '.sort-down', function () { + //下移 + if ($(this).parents('tr').nextAll().length > 0) { + $(this).parents('tr').next().after($(this).parents('tr').prop('outerHTML')); + $(this).parents('tr').remove(); + save_order(); + } +}); +//保存排序 +function save_order() { + var groups = []; + var $inputArr = $('input[name="group_id"]'); + $inputArr.each(function () { + groups.push($(this).val()); + }); + + lightyear.loading('show'); + $.ajax({ + url: "group.php?set=sort", + method: "POST", + data: { groups: groups }, + success: function (data) { + lightyear.loading('hide'); + lightyear.notify('操作成功!', 'success', 1000); + listTable(); + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//启用分组 +function on_group(id) { + lightyear.loading('show'); + $.ajax({ + url: "group.php?set=on", + method: "POST", + data: { group_id: id }, + success: function (data) { + lightyear.loading('hide'); + lightyear.notify('操作成功!', 'success', 1000); + listTable(); + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} +//禁用分组 +function off_group(id) { + lightyear.loading('show'); + $.ajax({ + url: "group.php?set=off", + method: "POST", + data: { group_id: id }, + success: function (data) { + lightyear.loading('hide'); + lightyear.notify('操作成功!', 'success', 1000); + listTable(); + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//删除分组 +function del_group(id) { + $.confirm({ + title: '警告', + content: '删除分组会同时删除该分组下的所有链接,该操作不可逆!
是否继续?', + type: 'red', + typeAnimated: true, + buttons: { + tryAgain: { + text: '确定', + btnClass: 'btn-red', + action: function () { + lightyear.loading('show'); + $.ajax({ + url: "group.php?set=del", + method: "POST", + data: { + group_id: id + }, + success: function (data) { + lightyear.loading('hide'); + lightyear.notify('操作成功!', 'success', 1000); + listTable(); + return true; + } + }); + } + }, + close: { + text: '取消' + } + } + }); +} \ No newline at end of file diff --git a/assets/admin/js/jquery-confirm.min.css b/assets/admin/js/jquery-confirm.min.css new file mode 100644 index 0000000..c50503a --- /dev/null +++ b/assets/admin/js/jquery-confirm.min.css @@ -0,0 +1,9 @@ +/*! + * jquery-confirm v3.3.0 (http://craftpip.github.io/jquery-confirm/) + * Author: boniface pereira + * Website: www.craftpip.com + * Contact: hey@craftpip.com + * + * Copyright 2013-2017 jquery-confirm + * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) + */@-webkit-keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body[class*=jconfirm-no-scroll-]{overflow:hidden!important}.jconfirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.jconfirm .jconfirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .4s;transition:opacity .4s}.jconfirm .jconfirm-bg.jconfirm-bg-h{opacity:0!important}.jconfirm .jconfirm-scrollpane{-webkit-perspective:500px;perspective:500px;-webkit-perspective-origin:center;perspective-origin:center;display:table;width:100%;height:100%}.jconfirm .jconfirm-row{display:table-row;width:100%}.jconfirm .jconfirm-cell{display:table-cell;vertical-align:middle}.jconfirm .jconfirm-holder{max-height:100%;padding:50px 0}.jconfirm .jconfirm-box-container{-webkit-transition:-webkit-transform;transition:-webkit-transform;transition:transform;transition:transform,-webkit-transform}.jconfirm .jconfirm-box-container.jconfirm-no-transition{-webkit-transition:none!important;transition:none!important}.jconfirm .jconfirm-box{background:white;border-radius:4px;position:relative;outline:0;padding:15px 15px 0;overflow:hidden;margin-left:auto;margin-right:auto}@-webkit-keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@-webkit-keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@-webkit-keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@-webkit-keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@-webkit-keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@-webkit-keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}@keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}.jconfirm .jconfirm-box.jconfirm-type-animated{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jconfirm .jconfirm-box.jconfirm-type-blue{border-top:solid 7px #3498db;-webkit-animation-name:type-blue;animation-name:type-blue}.jconfirm .jconfirm-box.jconfirm-type-green{border-top:solid 7px #2ecc71;-webkit-animation-name:type-green;animation-name:type-green}.jconfirm .jconfirm-box.jconfirm-type-red{border-top:solid 7px #e74c3c;-webkit-animation-name:type-red;animation-name:type-red}.jconfirm .jconfirm-box.jconfirm-type-orange{border-top:solid 7px #f1c40f;-webkit-animation-name:type-orange;animation-name:type-orange}.jconfirm .jconfirm-box.jconfirm-type-purple{border-top:solid 7px #9b59b6;-webkit-animation-name:type-purple;animation-name:type-purple}.jconfirm .jconfirm-box.jconfirm-type-dark{border-top:solid 7px #34495e;-webkit-animation-name:type-dark;animation-name:type-dark}.jconfirm .jconfirm-box.loading{height:120px}.jconfirm .jconfirm-box.loading:before{content:'';position:absolute;left:0;background:white;right:0;top:0;bottom:0;border-radius:10px;z-index:1}.jconfirm .jconfirm-box.loading:after{opacity:.6;content:'';height:30px;width:30px;border:solid 3px transparent;position:absolute;left:50%;margin-left:-15px;border-radius:50%;-webkit-animation:jconfirm-spin 1s infinite linear;animation:jconfirm-spin 1s infinite linear;border-bottom-color:dodgerblue;top:50%;margin-top:-15px;z-index:2}.jconfirm .jconfirm-box div.jconfirm-closeIcon{height:20px;width:20px;position:absolute;top:10px;right:10px;cursor:pointer;opacity:.6;text-align:center;font-size:27px!important;line-height:14px!important;display:none;z-index:1}.jconfirm .jconfirm-box div.jconfirm-closeIcon:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-closeIcon .fa{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .glyphicon{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .zmdi{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{opacity:1}.jconfirm .jconfirm-box div.jconfirm-title-c{display:block;font-size:22px;line-height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;padding-bottom:15px}.jconfirm .jconfirm-box div.jconfirm-title-c.jconfirm-hand{cursor:move}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{font-size:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i{vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:inherit;font-family:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-content-pane{margin-bottom:15px;height:auto;-webkit-transition:height .4s ease-in;transition:height .4s ease-in;display:inline-block;width:100%;position:relative;overflow-x:hidden;overflow-y:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane.no-scroll{overflow-y:hidden}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar{width:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-track{background:rgba(0,0,0,0.1)}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-thumb{background:#666;border-radius:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content img{max-width:100%;height:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content:empty{display:none}.jconfirm .jconfirm-box .jconfirm-buttons{padding-bottom:11px}.jconfirm .jconfirm-box .jconfirm-buttons>button{margin-bottom:4px;margin-left:2px;margin-right:2px}.jconfirm .jconfirm-box .jconfirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease,-webkit-box-shadow .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#e74c3c!important}.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:#3498db!important}.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#2ecc71!important}.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c{color:#9b59b6!important}.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#f1c40f!important}.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c{color:#34495e!important}.jconfirm .jconfirm-clear{clear:both}.jconfirm.jconfirm-rtl{direction:rtl}.jconfirm.jconfirm-rtl div.jconfirm-closeIcon{left:5px;right:auto}.jconfirm.jconfirm-white .jconfirm-bg,.jconfirm.jconfirm-light .jconfirm-bg{background-color:#444;opacity:.2}.jconfirm.jconfirm-white .jconfirm-box,.jconfirm.jconfirm-light .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#333}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#ddd}.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-black .jconfirm-bg,.jconfirm.jconfirm-dark .jconfirm-bg{background-color:darkslategray;opacity:.4}.jconfirm.jconfirm-black .jconfirm-box,.jconfirm.jconfirm-dark .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#666}.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake{-webkit-animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow{-webkit-animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@-webkit-keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}@keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}.jconfirm{-webkit-perspective:400px;perspective:400px}.jconfirm .jconfirm-box{opacity:1;-webkit-transition-property:all;transition-property:all}.jconfirm .jconfirm-box.jconfirm-animation-top,.jconfirm .jconfirm-box.jconfirm-animation-left,.jconfirm .jconfirm-box.jconfirm-animation-right,.jconfirm .jconfirm-box.jconfirm-animation-bottom,.jconfirm .jconfirm-box.jconfirm-animation-opacity,.jconfirm .jconfirm-box.jconfirm-animation-zoom,.jconfirm .jconfirm-box.jconfirm-animation-scale,.jconfirm .jconfirm-box.jconfirm-animation-none,.jconfirm .jconfirm-box.jconfirm-animation-rotate,.jconfirm .jconfirm-box.jconfirm-animation-rotatex,.jconfirm .jconfirm-box.jconfirm-animation-rotatey,.jconfirm .jconfirm-box.jconfirm-animation-scaley,.jconfirm .jconfirm-box.jconfirm-animation-scalex{opacity:0}.jconfirm .jconfirm-box.jconfirm-animation-rotate{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.jconfirm .jconfirm-box.jconfirm-animation-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatexr{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatey{-webkit-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotateyr{-webkit-transform:rotatey(-90deg);transform:rotatey(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scaley{-webkit-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scalex{-webkit-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-top{-webkit-transform:translate(0px,-100px);transform:translate(0px,-100px)}.jconfirm .jconfirm-box.jconfirm-animation-left{-webkit-transform:translate(-100px,0px);transform:translate(-100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-right{-webkit-transform:translate(100px,0px);transform:translate(100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-bottom{-webkit-transform:translate(0px,100px);transform:translate(0px,100px)}.jconfirm .jconfirm-box.jconfirm-animation-zoom{-webkit-transform:scale(1.2);transform:scale(1.2)}.jconfirm .jconfirm-box.jconfirm-animation-scale{-webkit-transform:scale(0.5);transform:scale(0.5)}.jconfirm .jconfirm-box.jconfirm-animation-none{visibility:hidden}.jconfirm.jconfirm-supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.jconfirm-supervan .jconfirm-box{background-color:transparent}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark{border:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon{color:white}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c>*{padding-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane{margin-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content{text-align:center;color:white}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-material .jconfirm-bg{background-color:rgba(0,0,0,0.67)}.jconfirm.jconfirm-material .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons{text-align:right}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-weight:500}.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-bootstrap .jconfirm-bg{background-color:rgba(0,0,0,0.21)}.jconfirm.jconfirm-bootstrap .jconfirm-box{background-color:white;-webkit-box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87);padding:0 15px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons{text-align:right;padding:10px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button{font-weight:500}.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-modern .jconfirm-bg{background-color:slategray;opacity:.6}.jconfirm.jconfirm-modern .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 30px 15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87);top:15px;right:15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;-webkit-transform:scale(0);transform:scale(0);display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content{text-align:center;font-size:15px;color:#777;margin-bottom:25px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button{font-weight:bold;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button+button{margin-left:4px}.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transform:scale(1);transform:scale(1)} \ No newline at end of file diff --git a/assets/admin/js/jquery-confirm.min.js b/assets/admin/js/jquery-confirm.min.js new file mode 100644 index 0000000..fa23549 --- /dev/null +++ b/assets/admin/js/jquery-confirm.min.js @@ -0,0 +1,10 @@ +/*! + * jquery-confirm v3.3.0 (http://craftpip.github.io/jquery-confirm/) + * Author: Boniface Pereira + * Website: www.craftpip.com + * Contact: hey@craftpip.com + * + * Copyright 2013-2017 jquery-confirm + * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) + */ +if(typeof jQuery==="undefined"){throw new Error("jquery-confirm requires jQuery");}var jconfirm,Jconfirm;(function($,window){$.fn.confirm=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}$(this).each(function(){var $this=$(this);if($this.attr("jc-attached")){console.warn("jConfirm has already been attached to this element ",$this[0]);return;}$this.on("click",function(e){e.preventDefault();var jcOption=$.extend({},options);if($this.attr("data-title")){jcOption.title=$this.attr("data-title");}if($this.attr("data-content")){jcOption.content=$this.attr("data-content");}if(typeof jcOption.buttons=="undefined"){jcOption.buttons={};}jcOption["$target"]=$this;if($this.attr("href")&&Object.keys(jcOption.buttons).length==0){var buttons=$.extend(true,{},jconfirm.pluginDefaults.defaultButtons,(jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];jcOption.buttons=buttons;jcOption.buttons[firstBtn].action=function(){location.href=$this.attr("href");};}jcOption.closeIcon=false;var instance=$.confirm(jcOption);});$this.attr("jc-attached",true);});return $(this);};$.confirm=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}if(typeof options.buttons!="object"){options.buttons={};}if(Object.keys(options.buttons).length==0){var buttons=$.extend(true,{},jconfirm.pluginDefaults.defaultButtons,(jconfirm.defaults||{}).defaultButtons||{});options.buttons=buttons;}return jconfirm(options);};$.alert=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}if(typeof options.buttons!="object"){options.buttons={};}if(Object.keys(options.buttons).length==0){var buttons=$.extend(true,{},jconfirm.pluginDefaults.defaultButtons,(jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];options.buttons[firstBtn]=buttons[firstBtn];}return jconfirm(options);};$.dialog=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false,closeIcon:function(){}};}options.buttons={};if(typeof options.closeIcon=="undefined"){options.closeIcon=function(){};}options.confirmKeys=[13];return jconfirm(options);};jconfirm=function(options){if(typeof options==="undefined"){options={};}var pluginOptions=$.extend(true,{},jconfirm.pluginDefaults);if(jconfirm.defaults){pluginOptions=$.extend(true,pluginOptions,jconfirm.defaults);}pluginOptions=$.extend(true,{},pluginOptions,options);var instance=new Jconfirm(pluginOptions);jconfirm.instances.push(instance);return instance;};Jconfirm=function(options){$.extend(this,options);this._init();};Jconfirm.prototype={_init:function(){var that=this;if(!jconfirm.instances.length){jconfirm.lastFocused=$("body").find(":focus");}this._id=Math.round(Math.random()*99999);this.contentParsed=$(document.createElement("div"));if(!this.lazyOpen){setTimeout(function(){that.open();},0);}},_buildHTML:function(){var that=this;this._parseAnimation(this.animation,"o");this._parseAnimation(this.closeAnimation,"c");this._parseBgDismissAnimation(this.backgroundDismissAnimation);this._parseColumnClass(this.columnClass);this._parseTheme(this.theme);this._parseType(this.type);var template=$(this.template);template.find(".jconfirm-box").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed);if(this.typeAnimated){template.find(".jconfirm-box").addClass("jconfirm-type-animated");}if(this.useBootstrap){template.find(".jc-bs3-row").addClass(this.bootstrapClasses.row);template.find(".jc-bs3-row").addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center");template.find(".jconfirm-box-container").addClass(this.columnClassParsed);if(this.containerFluid){template.find(".jc-bs3-container").addClass(this.bootstrapClasses.containerFluid);}else{template.find(".jc-bs3-container").addClass(this.bootstrapClasses.container);}}else{template.find(".jconfirm-box").css("width",this.boxWidth);}if(this.titleClass){template.find(".jconfirm-title-c").addClass(this.titleClass);}template.addClass(this.themeParsed);var ariaLabel="jconfirm-box"+this._id;template.find(".jconfirm-box").attr("aria-labelledby",ariaLabel).attr("tabindex",-1);template.find(".jconfirm-content").attr("id",ariaLabel);if(this.bgOpacity!==null){template.find(".jconfirm-bg").css("opacity",this.bgOpacity);}if(this.rtl){template.addClass("jconfirm-rtl");}this.$el=template.appendTo(this.container);this.$jconfirmBoxContainer=this.$el.find(".jconfirm-box-container");this.$jconfirmBox=this.$body=this.$el.find(".jconfirm-box");this.$jconfirmBg=this.$el.find(".jconfirm-bg");this.$title=this.$el.find(".jconfirm-title");this.$titleContainer=this.$el.find(".jconfirm-title-c");this.$content=this.$el.find("div.jconfirm-content");this.$contentPane=this.$el.find(".jconfirm-content-pane");this.$icon=this.$el.find(".jconfirm-icon-c");this.$closeIcon=this.$el.find(".jconfirm-closeIcon");this.$holder=this.$el.find(".jconfirm-holder");this.$btnc=this.$el.find(".jconfirm-buttons");this.$scrollPane=this.$el.find(".jconfirm-scrollpane");that.setStartingPoint();this._contentReady=$.Deferred();this._modalReady=$.Deferred();this.$holder.css({"padding-top":this.offsetTop,"padding-bottom":this.offsetBottom,});this.setTitle();this.setIcon();this._setButtons();this._parseContent();this.initDraggable();if(this.isAjax){this.showLoading(false);}$.when(this._contentReady,this._modalReady).then(function(){if(that.isAjaxLoading){setTimeout(function(){that.isAjaxLoading=false;that.setContent();that.setTitle();that.setIcon();setTimeout(function(){that.hideLoading(false);that._updateContentMaxHeight();},100);if(typeof that.onContentReady==="function"){that.onContentReady();}},50);}else{that._updateContentMaxHeight();that.setTitle();that.setIcon();if(typeof that.onContentReady==="function"){that.onContentReady();}}if(that.autoClose){that._startCountDown();}});this._watchContent();if(this.animation==="none"){this.animationSpeed=1;this.animationBounce=1;}this.$body.css(this._getCSS(this.animationSpeed,this.animationBounce));this.$contentPane.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBg.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBoxContainer.css(this._getCSS(this.animationSpeed,1));},_typePrefix:"jconfirm-type-",typeParsed:"",_parseType:function(type){this.typeParsed=this._typePrefix+type;},setType:function(type){var oldClass=this.typeParsed;this._parseType(type);this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed);},themeParsed:"",_themePrefix:"jconfirm-",setTheme:function(theme){var previous=this.theme;this.theme=theme||this.theme;this._parseTheme(this.theme);if(previous){this.$el.removeClass(previous);}this.$el.addClass(this.themeParsed);this.theme=theme;},_parseTheme:function(theme){var that=this;theme=theme.split(",");$.each(theme,function(k,a){if(a.indexOf(that._themePrefix)===-1){theme[k]=that._themePrefix+$.trim(a);}});this.themeParsed=theme.join(" ").toLowerCase();},backgroundDismissAnimationParsed:"",_bgDismissPrefix:"jconfirm-hilight-",_parseBgDismissAnimation:function(bgDismissAnimation){var animation=bgDismissAnimation.split(",");var that=this;$.each(animation,function(k,a){if(a.indexOf(that._bgDismissPrefix)===-1){animation[k]=that._bgDismissPrefix+$.trim(a);}});this.backgroundDismissAnimationParsed=animation.join(" ").toLowerCase();},animationParsed:"",closeAnimationParsed:"",_animationPrefix:"jconfirm-animation-",setAnimation:function(animation){this.animation=animation||this.animation;this._parseAnimation(this.animation,"o");},_parseAnimation:function(animation,which){which=which||"o";var animations=animation.split(",");var that=this;$.each(animations,function(k,a){if(a.indexOf(that._animationPrefix)===-1){animations[k]=that._animationPrefix+$.trim(a);}});var a_string=animations.join(" ").toLowerCase();if(which==="o"){this.animationParsed=a_string;}else{this.closeAnimationParsed=a_string;}return a_string;},setCloseAnimation:function(closeAnimation){this.closeAnimation=closeAnimation||this.closeAnimation;this._parseAnimation(this.closeAnimation,"c");},setAnimationSpeed:function(speed){this.animationSpeed=speed||this.animationSpeed;},columnClassParsed:"",setColumnClass:function(colClass){if(!this.useBootstrap){console.warn("cannot set columnClass, useBootstrap is set to false");return;}this.columnClass=colClass||this.columnClass;this._parseColumnClass(this.columnClass);this.$jconfirmBoxContainer.addClass(this.columnClassParsed);},_updateContentMaxHeight:function(){var height=$(window).height()-(this.$jconfirmBox.outerHeight()-this.$contentPane.outerHeight())-(this.offsetTop+this.offsetBottom);this.$contentPane.css({"max-height":height+"px"});},setBoxWidth:function(width){if(this.useBootstrap){console.warn("cannot set boxWidth, useBootstrap is set to true");return;}this.boxWidth=width;this.$jconfirmBox.css("width",width);},_parseColumnClass:function(colClass){colClass=colClass.toLowerCase();var p;switch(colClass){case"xl":case"xlarge":p="col-md-12";break;case"l":case"large":p="col-md-8 col-md-offset-2";break;case"m":case"medium":p="col-md-6 col-md-offset-3";break;case"s":case"small":p="col-md-4 col-md-offset-4";break;case"xs":case"xsmall":p="col-md-2 col-md-offset-5";break;default:p=colClass;}this.columnClassParsed=p;},initDraggable:function(){var that=this;var $t=this.$titleContainer;this.resetDrag();if(this.draggable){$t.on("mousedown",function(e){$t.addClass("jconfirm-hand");that.mouseX=e.clientX;that.mouseY=e.clientY;that.isDrag=true;});$(window).on("mousemove."+this._id,function(e){if(that.isDrag){that.movingX=e.clientX-that.mouseX+that.initialX;that.movingY=e.clientY-that.mouseY+that.initialY;that.setDrag();}});$(window).on("mouseup."+this._id,function(){$t.removeClass("jconfirm-hand");if(that.isDrag){that.isDrag=false;that.initialX=that.movingX;that.initialY=that.movingY;}});}},resetDrag:function(){this.isDrag=false;this.initialX=0;this.initialY=0;this.movingX=0;this.movingY=0;this.mouseX=0;this.mouseY=0;this.$jconfirmBoxContainer.css("transform","translate("+0+"px, "+0+"px)");},setDrag:function(){if(!this.draggable){return;}this.alignMiddle=false;var boxWidth=this.$jconfirmBox.outerWidth();var boxHeight=this.$jconfirmBox.outerHeight();var windowWidth=$(window).width();var windowHeight=$(window).height();var that=this;var dragUpdate=1;if(that.movingX%dragUpdate===0||that.movingY%dragUpdate===0){if(that.dragWindowBorder){var leftDistance=(windowWidth/2)-boxWidth/2;var topDistance=(windowHeight/2)-boxHeight/2;topDistance-=that.dragWindowGap;leftDistance-=that.dragWindowGap;if(leftDistance+that.movingX<0){that.movingX=-leftDistance;}else{if(leftDistance-that.movingX<0){that.movingX=leftDistance;}}if(topDistance+that.movingY<0){that.movingY=-topDistance;}else{if(topDistance-that.movingY<0){that.movingY=topDistance;}}}that.$jconfirmBoxContainer.css("transform","translate("+that.movingX+"px, "+that.movingY+"px)");}},_scrollTop:function(){if(typeof pageYOffset!=="undefined"){return pageYOffset;}else{var B=document.body;var D=document.documentElement;D=(D.clientHeight)?D:B;return D.scrollTop;}},_watchContent:function(){var that=this;if(this._timer){clearInterval(this._timer);}var prevContentHeight=0;this._timer=setInterval(function(){if(that.smoothContent){var contentHeight=that.$content.outerHeight()||0;if(contentHeight!==prevContentHeight){that.$contentPane.css({height:contentHeight}).scrollTop(0);prevContentHeight=contentHeight;}var wh=$(window).height();var total=that.offsetTop+that.offsetBottom+that.$jconfirmBox.height()-that.$contentPane.height()+that.$content.height();if(total').html(that.buttons[key].text).addClass(that.buttons[key].btnClass).prop("disabled",that.buttons[key].isDisabled).css("display",that.buttons[key].isHidden?"none":"").click(function(e){e.preventDefault();var res=that.buttons[key].action.apply(that,[that.buttons[key]]);that.onAction.apply(that,[key,that.buttons[key]]);that._stopCountDown();if(typeof res==="undefined"||res){that.close();}});that.buttons[key].el=button_element;that.buttons[key].setText=function(text){button_element.html(text);};that.buttons[key].addClass=function(className){button_element.addClass(className);};that.buttons[key].removeClass=function(className){button_element.removeClass(className);};that.buttons[key].disable=function(){that.buttons[key].isDisabled=true;button_element.prop("disabled",true);};that.buttons[key].enable=function(){that.buttons[key].isDisabled=false;button_element.prop("disabled",false);};that.buttons[key].show=function(){that.buttons[key].isHidden=false;button_element.css("display","");};that.buttons[key].hide=function(){that.buttons[key].isHidden=true;button_element.css("display","none");};that["$_"+key]=that["$$"+key]=button_element;that.$btnc.append(button_element);});if(total_buttons===0){this.$btnc.hide();}if(this.closeIcon===null&&total_buttons===0){this.closeIcon=true;}if(this.closeIcon){if(this.closeIconClass){var closeHtml='';this.$closeIcon.html(closeHtml);}this.$closeIcon.click(function(e){e.preventDefault();var buttonName=false;var shouldClose=false;var str;if(typeof that.closeIcon=="function"){str=that.closeIcon();}else{str=that.closeIcon;}if(typeof str=="string"&&typeof that.buttons[str]!="undefined"){buttonName=str;shouldClose=false;}else{if(typeof str=="undefined"||!!(str)==true){shouldClose=true;}else{shouldClose=false;}}if(buttonName){var btnResponse=that.buttons[buttonName].action.apply(that);shouldClose=(typeof btnResponse=="undefined")||!!(btnResponse);}if(shouldClose){that.close();}});this.$closeIcon.show();}else{this.$closeIcon.hide();}},setTitle:function(string,force){force=force||false;if(typeof string!=="undefined"){if(typeof string=="string"){this.title=string;}else{if(typeof string=="function"){if(typeof string.promise=="function"){console.error("Promise was returned from title function, this is not supported.");}var response=string();if(typeof response=="string"){this.title=response;}else{this.title=false;}}else{this.title=false;}}}if(this.isAjaxLoading&&!force){return;}this.$title.html(this.title||"");this.updateTitleContainer();},setIcon:function(iconClass,force){force=force||false;if(typeof iconClass!=="undefined"){if(typeof iconClass=="string"){this.icon=iconClass;}else{if(typeof iconClass==="function"){var response=iconClass();if(typeof response=="string"){this.icon=response;}else{this.icon=false;}}else{this.icon=false;}}}if(this.isAjaxLoading&&!force){return;}this.$icon.html(this.icon?'':"");this.updateTitleContainer();},updateTitleContainer:function(){if(!this.title&&!this.icon){this.$titleContainer.hide();}else{this.$titleContainer.show();}},setContentPrepend:function(content,force){if(!content){return;}this.contentParsed.prepend(content);},setContentAppend:function(content){if(!content){return;}this.contentParsed.append(content);},setContent:function(content,force){force=!!force;var that=this;if(content){this.contentParsed.html("").append(content);}if(this.isAjaxLoading&&!force){return;}this.$content.html("");this.$content.append(this.contentParsed);setTimeout(function(){that.$body.find("input[autofocus]:visible:first").focus();},100);},loadingSpinner:false,showLoading:function(disableButtons){this.loadingSpinner=true;this.$jconfirmBox.addClass("loading");if(disableButtons){this.$btnc.find("button").prop("disabled",true);}},hideLoading:function(enableButtons){this.loadingSpinner=false;this.$jconfirmBox.removeClass("loading");if(enableButtons){this.$btnc.find("button").prop("disabled",false);}},ajaxResponse:false,contentParsed:"",isAjax:false,isAjaxLoading:false,_parseContent:function(){var that=this;var e=" ";if(typeof this.content=="function"){var res=this.content.apply(this);if(typeof res=="string"){this.content=res;}else{if(typeof res=="object"&&typeof res.always=="function"){this.isAjax=true;this.isAjaxLoading=true;res.always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded=="function"){that.contentLoaded(data,status,xhr);}});this.content=e;}else{this.content=e;}}}if(typeof this.content=="string"&&this.content.substr(0,4).toLowerCase()==="url:"){this.isAjax=true;this.isAjaxLoading=true;var u=this.content.substring(4,this.content.length);$.get(u).done(function(html){that.contentParsed.html(html);}).always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded=="function"){that.contentLoaded(data,status,xhr);}});}if(!this.content){this.content=e;}if(!this.isAjax){this.contentParsed.html(this.content);this.setContent();that._contentReady.resolve();}},_stopCountDown:function(){clearInterval(this.autoCloseInterval);if(this.$cd){this.$cd.remove();}},_startCountDown:function(){var that=this;var opt=this.autoClose.split("|");if(opt.length!==2){console.error("Invalid option for autoClose. example 'close|10000'");return false;}var button_key=opt[0];var time=parseInt(opt[1]);if(typeof this.buttons[button_key]==="undefined"){console.error("Invalid button key '"+button_key+"' for autoClose");return false;}var seconds=Math.ceil(time/1000);this.$cd=$(' ('+seconds+")").appendTo(this["$_"+button_key]);this.autoCloseInterval=setInterval(function(){that.$cd.html(" ("+(seconds-=1)+") ");if(seconds<=0){that["$$"+button_key].trigger("click");that._stopCountDown();}},1000);},_getKey:function(key){switch(key){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc";case 32:return"space";}var initial=String.fromCharCode(key);if(/^[A-z0-9]+$/.test(initial)){return initial.toLowerCase();}else{return false;}},reactOnKey:function(e){var that=this;var a=$(".jconfirm");if(a.eq(a.length-1)[0]!==this.$el[0]){return false;}var key=e.which;if(this.$content.find(":input").is(":focus")&&/13|32/.test(key)){return false;}var keyChar=this._getKey(key);if(keyChar==="esc"&&this.escapeKey){if(this.escapeKey===true){this.$scrollPane.trigger("click");}else{if(typeof this.escapeKey==="string"||typeof this.escapeKey==="function"){var buttonKey;if(typeof this.escapeKey==="function"){buttonKey=this.escapeKey();}else{buttonKey=this.escapeKey;}if(buttonKey){if(typeof this.buttons[buttonKey]==="undefined"){console.warn("Invalid escapeKey, no buttons found with key "+buttonKey);}else{this["$_"+buttonKey].trigger("click");}}}}}$.each(this.buttons,function(key,button){if(button.keys.indexOf(keyChar)!=-1){that["$_"+key].trigger("click");}});},setDialogCenter:function(){console.info("setDialogCenter is deprecated, dialogs are centered with CSS3 tables");},_unwatchContent:function(){clearInterval(this._timer);},close:function(){var that=this;if(typeof this.onClose==="function"){this.onClose();}this._unwatchContent();$(window).unbind("resize."+this._id);$(window).unbind("keyup."+this._id);$(window).unbind("jcKeyDown."+this._id);if(this.draggable){$(window).unbind("mousemove."+this._id);$(window).unbind("mouseup."+this._id);this.$titleContainer.unbind("mousedown");}that.$el.removeClass(that.loadedClass);$("body").removeClass("jconfirm-no-scroll-"+that._id);that.$jconfirmBoxContainer.removeClass("jconfirm-no-transition");setTimeout(function(){that.$body.addClass(that.closeAnimationParsed);that.$jconfirmBg.addClass("jconfirm-bg-h");var closeTimer=(that.closeAnimation==="none")?1:that.animationSpeed;setTimeout(function(){that.$el.remove();var l=jconfirm.instances;var i=jconfirm.instances.length-1;for(i;i>=0;i--){if(jconfirm.instances[i]._id===that._id){jconfirm.instances.splice(i,1);}}if(!jconfirm.instances.length){if(that.scrollToPreviousElement&&jconfirm.lastFocused&&jconfirm.lastFocused.length&&$.contains(document,jconfirm.lastFocused[0])){var $lf=jconfirm.lastFocused;if(that.scrollToPreviousElementAnimate){var st=$(window).scrollTop();var ot=jconfirm.lastFocused.offset().top;var wh=$(window).height();if(!(ot>st&&ot<(st+wh))){var scrollTo=(ot-Math.round((wh/3)));$("html, body").animate({scrollTop:scrollTo},that.animationSpeed,"swing",function(){$lf.focus();});}else{$lf.focus();}}else{$lf.focus();}jconfirm.lastFocused=false;}}if(typeof that.onDestroy==="function"){that.onDestroy();}},closeTimer*0.4);},50);return true;},open:function(){if(this.isOpen()){return false;}this._buildHTML();this._bindEvents();this._open();return true;},setStartingPoint:function(){var el=false;if(this.animateFromElement!==true&&this.animateFromElement){el=this.animateFromElement;jconfirm.lastClicked=false;}else{if(jconfirm.lastClicked&&this.animateFromElement===true){el=jconfirm.lastClicked;jconfirm.lastClicked=false;}else{return false;}}if(!el){return false;}var offset=el.offset();var iTop=el.outerHeight()/2;var iLeft=el.outerWidth()/2;iTop-=this.$jconfirmBox.outerHeight()/2;iLeft-=this.$jconfirmBox.outerWidth()/2;var sourceTop=offset.top+iTop;sourceTop=sourceTop-this._scrollTop();var sourceLeft=offset.left+iLeft;var wh=$(window).height()/2;var ww=$(window).width()/2;var targetH=wh-this.$jconfirmBox.outerHeight()/2;var targetW=ww-this.$jconfirmBox.outerWidth()/2;sourceTop-=targetH;sourceLeft-=targetW;if(Math.abs(sourceTop)>wh||Math.abs(sourceLeft)>ww){return false;}this.$jconfirmBoxContainer.css("transform","translate("+sourceLeft+"px, "+sourceTop+"px)");},_open:function(){var that=this;if(typeof that.onOpenBefore==="function"){that.onOpenBefore();}this.$body.removeClass(this.animationParsed);this.$jconfirmBg.removeClass("jconfirm-bg-h");this.$body.focus();that.$jconfirmBoxContainer.css("transform","translate("+0+"px, "+0+"px)");setTimeout(function(){that.$body.css(that._getCSS(that.animationSpeed,1));that.$body.css({"transition-property":that.$body.css("transition-property")+", margin"});that.$jconfirmBoxContainer.addClass("jconfirm-no-transition");that._modalReady.resolve();if(typeof that.onOpen==="function"){that.onOpen();}that.$el.addClass(that.loadedClass);},this.animationSpeed);},loadedClass:"jconfirm-open",isClosed:function(){return !this.$el||this.$el.css("display")==="";},isOpen:function(){return !this.isClosed();},toggle:function(){if(!this.isOpen()){this.open();}else{this.close();}}};jconfirm.instances=[];jconfirm.lastFocused=false;jconfirm.pluginDefaults={template:'
',title:"Hello",titleClass:"",type:"default",typeAnimated:true,draggable:true,dragWindowGap:15,dragWindowBorder:true,animateFromElement:true,alignMiddle:true,smoothContent:true,content:"Are you sure to continue?",buttons:{},defaultButtons:{ok:{action:function(){}},close:{action:function(){}}},contentLoaded:function(){},icon:"",lazyOpen:false,bgOpacity:null,theme:"light",animation:"scale",closeAnimation:"scale",animationSpeed:400,animationBounce:1,escapeKey:true,rtl:false,container:"body",containerFluid:false,backgroundDismiss:false,backgroundDismissAnimation:"shake",autoClose:false,closeIcon:null,closeIconClass:false,watchInterval:100,columnClass:"col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",boxWidth:"50%",scrollToPreviousElement:true,scrollToPreviousElementAnimate:true,useBootstrap:true,offsetTop:40,offsetBottom:40,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onContentReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}};var keyDown=false;$(window).on("keydown",function(e){if(!keyDown){var $target=$(e.target);var pass=false;if($target.closest(".jconfirm-box").length){pass=true;}if(pass){$(window).trigger("jcKeyDown");}keyDown=true;}});$(window).on("keyup",function(){keyDown=false;});jconfirm.lastClicked=false;$(document).on("mousedown","button, a",function(){jconfirm.lastClicked=$(this);});})(jQuery,window); \ No newline at end of file diff --git a/assets/admin/js/jquery.dragsort-0.5.2.min.js b/assets/admin/js/jquery.dragsort-0.5.2.min.js new file mode 100644 index 0000000..5007cc3 --- /dev/null +++ b/assets/admin/js/jquery.dragsort-0.5.2.min.js @@ -0,0 +1,3 @@ +// jQuery List DragSort v0.5.2 +// License: http://dragsort.codeplex.com/license +(function(e){e.fn.dragsort=function(t){if(t=="destroy"){e(this.selector).trigger("dragsort-uninit");return}var n=e.extend({},e.fn.dragsort.defaults,t);var r=[];var i=null,s=null;this.each(function(t,o){if(e(o).is("table")&&e(o).children().size()==1&&e(o).children().is("tbody"))o=e(o).children().get(0);var u={draggedItem:null,placeHolderItem:null,pos:null,offset:null,offsetLimit:null,scroll:null,container:o,init:function(){n.tagName=e(this.container).children().size()==0?"li":e(this.container).children().get(0).tagName.toLowerCase();if(n.itemSelector=="")n.itemSelector=n.tagName;if(n.dragSelector=="")n.dragSelector=n.tagName;if(n.placeHolderTemplate=="")n.placeHolderTemplate="<"+n.tagName+"> ";e(this.container).attr("data-listidx",t).mousedown(this.grabItem).bind("dragsort-uninit",this.uninit);this.styleDragHandlers(true)},uninit:function(){var t=r[e(this).attr("data-listidx")];e(t.container).unbind("mousedown",t.grabItem).unbind("dragsort-uninit");t.styleDragHandlers(false)},getItems:function(){return e(this.container).children(n.itemSelector)},styleDragHandlers:function(t){this.getItems().map(function(){return e(this).is(n.dragSelector)?this:e(this).find(n.dragSelector).get()}).css("cursor",t?"pointer":"")},grabItem:function(t){var i=r[e(this).attr("data-listidx")];var s=e(t.target).closest("[data-listidx] > "+n.tagName).get(0);var o=i.getItems().filter(function(){return this==s}).size()>0;if(t.which!=1||e(t.target).is(n.dragSelectorExclude)||e(t.target).closest(n.dragSelectorExclude).size()>0||!o)return;t.preventDefault();var u=t.target;while(!e(u).is(n.dragSelector)){if(u==this)return;u=u.parentNode}e(u).attr("data-cursor",e(u).css("cursor"));e(u).css("cursor","move");var a=this;var f=function(){i.dragStart.call(a,t);e(i.container).unbind("mousemove",f)};e(i.container).mousemove(f).mouseup(function(){e(i.container).unbind("mousemove",f);e(u).css("cursor",e(u).attr("data-cursor"))})},dragStart:function(t){if(i!=null&&i.draggedItem!=null)i.dropItem();i=r[e(this).attr("data-listidx")];i.draggedItem=e(t.target).closest("[data-listidx] > "+n.tagName);i.draggedItem.attr("data-origpos",e(this).attr("data-listidx")+"-"+e(i.container).children().index(i.draggedItem));var s=parseInt(i.draggedItem.css("marginTop"));var o=parseInt(i.draggedItem.css("marginLeft"));i.offset=i.draggedItem.offset();i.offset.top=t.pageY-i.offset.top+(isNaN(s)?0:s)-1;i.offset.left=t.pageX-i.offset.left+(isNaN(o)?0:o)-1;if(!n.dragBetween){var u=e(i.container).outerHeight()==0?Math.max(1,Math.round(.5+i.getItems().size()*i.draggedItem.outerWidth()/e(i.container).outerWidth()))*i.draggedItem.outerHeight():e(i.container).outerHeight();i.offsetLimit=e(i.container).offset();i.offsetLimit.right=i.offsetLimit.left+e(i.container).outerWidth()-i.draggedItem.outerWidth();i.offsetLimit.bottom=i.offsetLimit.top+u-i.draggedItem.outerHeight()}var a=i.draggedItem.height();var f=i.draggedItem.width();if(n.tagName=="tr"){i.draggedItem.children().each(function(){e(this).width(e(this).width())});i.placeHolderItem=i.draggedItem.clone().attr("data-placeholder",true);i.draggedItem.after(i.placeHolderItem);i.placeHolderItem.children().each(function(){e(this).css({borderWidth:0,width:e(this).width()+1,height:e(this).height()+1}).html(" ")})}else{i.draggedItem.after(n.placeHolderTemplate);i.placeHolderItem=i.draggedItem.next().css({height:a,width:f}).attr("data-placeholder",true)}if(n.tagName=="td"){var l=i.draggedItem.closest("table").get(0);e("
").appendTo("body").children().append(i.draggedItem)}var c=i.draggedItem.attr("style");i.draggedItem.attr("data-origstyle",c?c:"");i.draggedItem.css({position:"absolute",opacity:.8,"z-index":999,height:a,width:f});i.scroll={moveX:0,moveY:0,maxX:e(document).width()-e(window).width(),maxY:e(document).height()-e(window).height()};i.scroll.scrollY=window.setInterval(function(){if(n.scrollContainer!=window){e(n.scrollContainer).scrollTop(e(n.scrollContainer).scrollTop()+i.scroll.moveY);return}var t=e(n.scrollContainer).scrollTop();if(i.scroll.moveY>0&&t0){e(n.scrollContainer).scrollTop(t+i.scroll.moveY);i.draggedItem.css("top",i.draggedItem.offset().top+i.scroll.moveY+1)}},10);i.scroll.scrollX=window.setInterval(function(){if(n.scrollContainer!=window){e(n.scrollContainer).scrollLeft(e(n.scrollContainer).scrollLeft()+i.scroll.moveX);return}var t=e(n.scrollContainer).scrollLeft();if(i.scroll.moveX>0&&t0){e(n.scrollContainer).scrollLeft(t+i.scroll.moveX);i.draggedItem.css("left",i.draggedItem.offset().left+i.scroll.moveX+1)}},10);e(r).each(function(e,t){t.createDropTargets();t.buildPositionTable()});i.setPos(t.pageX,t.pageY);e(document).bind("mousemove",i.swapItems);e(document).bind("mouseup",i.dropItem);if(n.scrollContainer!=window)e(window).bind("wheel",i.wheel)},setPos:function(t,r){var s=r-this.offset.top;var o=t-this.offset.left;if(!n.dragBetween){s=Math.min(this.offsetLimit.bottom,Math.max(s,this.offsetLimit.top));o=Math.min(this.offsetLimit.right,Math.max(o,this.offsetLimit.left))}var u=this.draggedItem.offsetParent().not("body").offset();if(u!=null){s-=u.top;o-=u.left}if(n.scrollContainer==window){r-=e(window).scrollTop();t-=e(window).scrollLeft();r=Math.max(0,r-e(window).height()+5)+Math.min(0,r-5);t=Math.max(0,t-e(window).width()+5)+Math.min(0,t-5)}else{var a=e(n.scrollContainer);var f=a.offset();r=Math.max(0,r-a.height()-f.top)+Math.min(0,r-f.top);t=Math.max(0,t-a.width()-f.left)+Math.min(0,t-f.left)}i.scroll.moveX=t==0?0:t*n.scrollSpeed/Math.abs(t);i.scroll.moveY=r==0?0:r*n.scrollSpeed/Math.abs(r);this.draggedItem.css({top:s,left:o})},wheel:function(t){if(i&&n.scrollContainer!=window){var r=e(n.scrollContainer);var s=r.offset();t=t.originalEvent;if(t.clientX>s.left&&t.clientXs.top&&t.clientY0)o.before(i.draggedItem);else if(s[1]==0)e(r[s[0]].container).prepend(i.draggedItem);else e(r[s[0]].container).append(i.draggedItem)}i.draggedItem.removeAttr("data-origpos");i.draggedItem=null;e(document).unbind("mousemove",i.swapItems);e(document).unbind("mouseup",i.dropItem);if(n.scrollContainer!=window)e(window).unbind("wheel",i.wheel);return false},swapItems:function(t){if(i.draggedItem==null)return false;i.setPos(t.pageX,t.pageY);var o=i.findPos(t.pageX,t.pageY);var u=i;for(var a=0;o==-1&&n.dragBetween&&ai.draggedItem.offset().top||s.left>i.draggedItem.offset().left)e(u.pos[o].elm).before(i.placeHolderItem);else e(u.pos[o].elm).after(i.placeHolderItem);l.each(function(){var t=f().eq(this.idx).get(0);if(this!=t&&f().index(this)e&&this.pos[n].topt)return n}return-1},createDropTargets:function(){if(!n.dragBetween)return;e(r).each(function(){var t=e(this.container).find("[data-placeholder]");var r=e(this.container).find("[data-droptarget]");if(t.size()>0&&r.size()>0)r.remove();else if(t.size()==0&&r.size()==0){if(n.tagName=="td")e(n.placeHolderTemplate).attr("data-droptarget",true).appendTo(this.container);else e(this.container).append(i.placeHolderItem.removeAttr("data-placeholder").clone().attr("data-droptarget",true));i.placeHolderItem.attr("data-placeholder",true)}})}};u.init();r.push(u)});return this};e.fn.dragsort.defaults={itemSelector:"",dragSelector:"",dragSelectorExclude:"input, textarea",dragEnd:function(){},dragBetween:false,placeHolderTemplate:"",scrollContainer:window,scrollSpeed:5}})(jQuery) diff --git a/assets/admin/js/jquery.lazyload.min.js b/assets/admin/js/jquery.lazyload.min.js new file mode 100644 index 0000000..b94a83a --- /dev/null +++ b/assets/admin/js/jquery.lazyload.min.js @@ -0,0 +1,2 @@ +/*! Lazy Load 1.9.1 - MIT license - Copyright 2010-2013 Mika Tuupola */ +!function(a,b,c,d){var e=a(b);a.fn.lazyload=function(f){function g(){var b=0;i.each(function(){var c=a(this);if(!j.skip_invisible||c.is(":visible"))if(a.abovethetop(this,j)||a.leftofbegin(this,j));else if(a.belowthefold(this,j)||a.rightoffold(this,j)){if(++b>j.failure_limit)return!1}else c.trigger("appear"),b=0})}var h,i=this,j={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:b,data_attribute:"original",skip_invisible:!0,appear:null,load:null,placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"};return f&&(d!==f.failurelimit&&(f.failure_limit=f.failurelimit,delete f.failurelimit),d!==f.effectspeed&&(f.effect_speed=f.effectspeed,delete f.effectspeed),a.extend(j,f)),h=j.container===d||j.container===b?e:a(j.container),0===j.event.indexOf("scroll")&&h.bind(j.event,function(){return g()}),this.each(function(){var b=this,c=a(b);b.loaded=!1,(c.attr("src")===d||c.attr("src")===!1)&&c.is("img")&&c.attr("src",j.placeholder),c.one("appear",function(){if(!this.loaded){if(j.appear){var d=i.length;j.appear.call(b,d,j)}a("").bind("load",function(){var d=c.attr("data-"+j.data_attribute);c.hide(),c.is("img")?c.attr("src",d):c.css("background-image","url('"+d+"')"),c[j.effect](j.effect_speed),b.loaded=!0;var e=a.grep(i,function(a){return!a.loaded});if(i=a(e),j.load){var f=i.length;j.load.call(b,f,j)}}).attr("src",c.attr("data-"+j.data_attribute))}}),0!==j.event.indexOf("scroll")&&c.bind(j.event,function(){b.loaded||c.trigger("appear")})}),e.bind("resize",function(){g()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&e.bind("pageshow",function(b){b.originalEvent&&b.originalEvent.persisted&&i.each(function(){a(this).trigger("appear")})}),a(c).ready(function(){g()}),this},a.belowthefold=function(c,f){var g;return g=f.container===d||f.container===b?(b.innerHeight?b.innerHeight:e.height())+e.scrollTop():a(f.container).offset().top+a(f.container).height(),g<=a(c).offset().top-f.threshold},a.rightoffold=function(c,f){var g;return g=f.container===d||f.container===b?e.width()+e.scrollLeft():a(f.container).offset().left+a(f.container).width(),g<=a(c).offset().left-f.threshold},a.abovethetop=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollTop():a(f.container).offset().top,g>=a(c).offset().top+f.threshold+a(c).height()},a.leftofbegin=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollLeft():a(f.container).offset().left,g>=a(c).offset().left+f.threshold+a(c).width()},a.inviewport=function(b,c){return!(a.rightoffold(b,c)||a.leftofbegin(b,c)||a.belowthefold(b,c)||a.abovethetop(b,c))},a.extend(a.expr[":"],{"below-the-fold":function(b){return a.belowthefold(b,{threshold:0})},"above-the-top":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-screen":function(b){return a.rightoffold(b,{threshold:0})},"left-of-screen":function(b){return!a.rightoffold(b,{threshold:0})},"in-viewport":function(b){return a.inviewport(b,{threshold:0})},"above-the-fold":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-fold":function(b){return a.rightoffold(b,{threshold:0})},"left-of-fold":function(b){return!a.rightoffold(b,{threshold:0})}})}(jQuery,window,document); \ No newline at end of file diff --git a/assets/admin/js/jquery.min.js b/assets/admin/js/jquery.min.js new file mode 100644 index 0000000..fc356ee --- /dev/null +++ b/assets/admin/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("';break;case 3:delete a.title,delete a.closeBtn,-1===a.icon&&a.icon,g.closeAll("loading");break;case 4:s||(a.content=[a.content,"body"]),a.follow=a.content[1],a.content=a.content[0]+'',delete a.title,a.tips="object"==typeof a.tips?a.tips:[a.tips,!0],a.tipsMore||g.closeAll("tips")}n.vessel(s,function(e,t,i){r.append(e[0]),s?2==a.type||4==a.type?m("body").append(e[1]):l.parents("."+c[0])[0]||(l.data("display",l.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+c[0]+o).find("."+c[5]).before(t)):r.append(e[1]),m(".layui-layer-move")[0]||r.append(d.moveElem=i),n.layero=m("#"+c[0]+o),a.scrollbar||c.html.css("overflow","hidden").attr("layer-full",o)}).auto(o),m("#layui-layer-shade"+n.index).css({"background-color":a.shade[1]||"#000",opacity:a.shade[0]||a.shade}),2==a.type&&6==g.ie&&n.layero.find("iframe").attr("src",l[0]),4==a.type?n.tips():n.offset(),a.fixed&&f.on("resize",function(){n.offset(),(/^\d+%$/.test(a.area[0])||/^\d+%$/.test(a.area[1]))&&n.auto(o),4==a.type&&n.tips()}),a.time<=0||setTimeout(function(){g.close(n.index)},a.time),n.move().callback(),c.anim[a.anim]&&(e="layer-anim "+c.anim[a.anim],n.layero.addClass(e).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(e)})),a.isOutAnim&&n.layero.data("isOutAnim",!0)}},t.pt.auto=function(e){var t=this.config,i=m("#"+c[0]+e);""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth));function n(e){(e=i.find(e)).height(a[1]-o-s-2*(0|parseFloat(e.css("padding-top"))))}var a=[i.innerWidth(),i.innerHeight()],o=i.find(c[1]).outerHeight()||0,s=i.find("."+c[6]).outerHeight()||0;switch(t.type){case 2:n("iframe");break;default:""===t.area[1]?0t.maxHeight?(a[1]=t.maxHeight,n("."+c[5])):t.fixed&&a[1]>=f.height()&&(a[1]=f.height(),n("."+c[5])):n("."+c[5])}return this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(f.height()-n[1])/2,e.offsetLeft=(f.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=f.width()-n[0]:"b"===t.offset?e.offsetTop=f.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=f.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=f.width()-n[0]):"rb"===t.offset?(e.offsetTop=f.height()-n[1],e.offsetLeft=f.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?f.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?f.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=f.scrollTop(),e.offsetLeft+=f.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=f.height()-(i.find(c[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow);n[0]||(n=m("body"));var a={width:n.outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),s=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0"+(i.value||"")+"":'',s=i.success;return delete i.success,g.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:f.width(),success:function(e){(a=e.find(".layui-layer-input")).focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();""===t?a.focus():t.length>(i.maxlength||500)?g.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},g.tab=function(a){var n=(a=a||{}).tab||{},o="layui-this",i=a.success;return delete a.success,g.open(m.extend({type:1,skin:"layui-layer-tab"+x("tab"),resize:!1,title:function(){var e=n.length,t=1,i="";if(0'+n[0].title+"";t"+n[t].title+"";return i}(),content:'
    '+function(){var e=n.length,t=1,i="";if(0'+(n[0].content||"no content")+"";t'+(n[t].content||"no content")+"";return i}()+"
",success:function(e){var t=e.find(".layui-layer-title").children(),n=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var t=m(this),i=t.index();t.addClass(o).siblings().removeClass(o),n.eq(i).show().siblings().hide(),"function"==typeof a.change&&a.change(i)}),"function"==typeof i&&i(e)}},a))},g.photos=function(a,e,o){var t,i,n,s,r={};if((a=a||{}).photos){var l=a.photos.constructor===Object,c=l?a.photos:{},f=c.data||[],d=c.start||0;r.imgIndex=1+(0|d),a.img=a.img||"img";var u=a.success;if(delete a.success,l){if(0===f.length)return g.msg("没有图片")}else{var y=m(a.photos),p=function(){f=[],y.find(a.img).each(function(e){var t=m(this);t.attr("layer-index",e),f.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(p(),0===f.length)return;if(e||y.on("click",a.img,function(){var e=m(this).attr("layer-index");g.photos(m.extend(a,{photos:{start:e,data:f,tab:a.tab},full:a.full}),!0),p()}),!e)return}r.imgprev=function(e){r.imgIndex--,r.imgIndex<1&&(r.imgIndex=f.length),r.tabimg(e)},r.imgnext=function(e,t){r.imgIndex++,r.imgIndex>f.length&&(r.imgIndex=1,t)||r.tabimg(e)},r.keyup=function(e){var t;r.end||(t=e.keyCode,e.preventDefault(),37===t?r.imgprev(!0):39===t?r.imgnext(!0):27===t&&g.close(r.index))},r.tabimg=function(e){if(!(f.length<=1))return c.start=r.imgIndex-1,g.close(r.index),g.photos(a,!0,e)},r.event=function(){r.bigimg.hover(function(){r.imgsee.show()},function(){r.imgsee.hide()}),r.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),r.imgprev()}),r.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),r.imgnext()}),m(document).on("keyup",r.keyup)},r.loadi=g.load(1,{shade:!("shade"in a)&&.9,scrollbar:!1}),t=f[d].src,i=function(e){var t,i,n;g.close(r.loadi),r.index=g.open(m.extend({type:1,id:"layui-layer-photos",area:(i=[e.width,e.height],n=[m(h).width()-100,m(h).height()-100],!a.full&&(i[0]>n[0]||i[1]>n[1])&&((t=[i[0]/n[0],i[1]/n[1]])[1]'+(f[d].alt||
'+(1':"")+'
'+(f[d].alt||"")+""+r.imgIndex+"/"+f.length+"
",success:function(e,t){r.bigimg=e.find(".layui-layer-phimg"),r.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),r.event(e),a.tab&&a.tab(f[d],e),"function"==typeof u&&u(e)},end:function(){r.end=!0,m(document).off("keyup",r.keyup)}},a))},n=function(){g.close(r.loadi),g.msg("当前图片地址异常
是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1
Loading...
'); + } + } else if ($mode === 'hide') { + if ($loadingEl.length) { + $loadingEl.fadeOut(250); + } + } + return false; + }; + + /** + * 页面小提示 + * @param $msg 提示信息 + * @param $type 提示类型:'info', 'success', 'warning', 'danger' + * @param $delay 毫秒数,例如:1000 + * @param $icon 图标,例如:'fa fa-user' 或 'glyphicon glyphicon-warning-sign' + * @param $from 'top' 或 'bottom' + * @param $align 'left', 'right', 'center' + * @param $url 跳转链接 例如: https://www.xxxx.com + * @author CaiWeiMing <314013107@qq.com> + */ + var tips = function ($msg, $type, $delay, $icon, $from, $align, $url) { + $type = $type || 'info'; + $delay = $delay || 1000; + $from = $from || 'top'; + $align = $align || 'center'; + $enter = $type == 'danger' ? 'animated shake' : 'animated fadeInUp'; + $url = $url || url; + jQuery.notify({ + icon: $icon, + message: $msg + }, + { + element: 'body', + type: $type, + allow_dismiss: true, + newest_on_top: true, + showProgressbar: false, + placement: { + from: $from, + align: $align + }, + offset: 20, + spacing: 10, + z_index: 10800, + delay: $delay, + //timer: 1000, + animate: { + enter: $enter, + exit: 'animated fadeOutDown' + } + }); + if($url!=''){ + setTimeout(function(){ + window.location.href=$url; + },$delay); + } + + }; + + var url = ''; + + return { + // 页面小提示 + notify : function ($msg, $type, $delay, $icon, $from, $align, $url) { + tips($msg, $type, $delay, $icon, $from, $align, $url); + }, + url : function ($url){ + url=$url; + }, + // 页面加载动画 + loading : function ($mode) { + pageLoader($mode); + } + }; +}(); \ No newline at end of file diff --git a/assets/admin/js/link.js b/assets/admin/js/link.js new file mode 100644 index 0000000..00b956e --- /dev/null +++ b/assets/admin/js/link.js @@ -0,0 +1,448 @@ +//请求页面 +function listTable(query) { + var url = window.document.location.href.toString(); + var queryString = url.split("?")[1]; + query = query || queryString; + layer.closeAll(); + var ii = layer.load(2, { shade: [0.1, '#fff'] }); + $.ajax({ + type: 'GET', + url: 'table_link.php?' + query, + dataType: 'html', + cache: false, + success: function (data) { + layer.close(ii); + $("#listTable").html(data); + $("#link").dragsort({ + dragBetween: true, + dragSelector: "td.lylme", + dragEnd: showbutton, + placeHolderTemplate: "", + }); + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//载入页面 +$(document).ready(function () { + if ($("#listTable").length > 0) { + listTable() + } +}); + +//获取选中 +function get_check() { + var chk_value = []; + $('input[name="link-check"]:checked').each(function () { + chk_value.push($(this).val()); + }); + return chk_value; +} + +//多选启用 +function on_link() { + if (get_check().length == 0) { + $.alert("未选择链接"); + return false; + } + lightyear.loading('show'); + $.ajax({ + url: "ajax_link.php?submit=on", + method: "POST", + data: { links: get_check() }, + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + listTable(); + } + else { + lightyear.notify(data.msg, 'danger', 1000); + } + + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//多选禁用 +function off_link() { + if (get_check().length == 0) { + $.alert("未选择链接"); + return false; + } + lightyear.loading('show'); + $.ajax({ + url: "ajax_link.php?submit=off", + method: "POST", + data: { links: get_check() }, + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + listTable(); + } + else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} +//获取网站信息 +function geturl() { + var url = $("input[name=\'url\']").val(); + if (!url) { + layer.msg('链接地址不能为空'); + return false; + } + $('#loading').css("display", "flex"); + if (!/^http[s]?:\/\/+/.test(url) && url != "") { + var url = "http://" + url; + $("input[name=\'url\']").val(url); + } + + $.ajax({ + url: "ajax_link.php?submit=geturl", + type: "GET", + dataType: "json", + data: { url: url }, + success: function (data) { + $("input[name=\'name\']").val(data.title); + if (!data.title && !data.icon) { + layer.msg('获取失败,请手动填写'); + } + else if (!data.icon) { + layer.msg('未获取到网站图标'); + } + layer.msg('正则抓取目标网站图标...'); + downloadimg(data.icon, url); + $('#loading').css("display", "none"); + return true; + }, + error: function (data) { + layer.msg('获取失败,目标网站无法访问或防火墙限制!'); + $('#loading').css("display", "none"); + return false; + } + }); +} +//抓取网站图标 +function downloadimg(url, referer) { + $.ajax({ + url: "/include/file.php", + type: "POST", + dataType: "json", + data: { url: url, referer: referer }, + success: function (data) { + if (data.code == '200') { + layer.msg(data.msg); + $("textarea[name=\'icon\']").val(data.url); + return true; + } + else { + layer.msg(data.msg); + return false; + } + }, + error: function (data) { + layer.msg('服务器错误'); + return false; + } + }); +} +//上传图标 +function uploadimg(e) { + var formData = new FormData(); + formData.append("file", $("#file")[0].files[0]); + $.ajax({ + method: 'POST', + url: '/include/file.php', + data: formData, + timeout: 20000, + cache: false, + processData: false, + contentType: false, + dataType: "JSON", + success: function (data) { + if (data.code == '200') { + layer.msg(data.msg); + $("textarea[name=\'icon\']").val(data.url); + return true; + } + else { + layer.msg(data.msg); + return false; + } + }, + error: function (data) { + layer.msg('服务器错误'); + return false; + } + }); +} +//多选删除 +function del_link(id) { + var link_id = []; + link_id.push(id); + link_id = id ? link_id : get_check(); + if (link_id.length == 0) { + $.alert("未选择链接"); + return false; + } + $.alert({ + title: '警告', + content: '确定要删除吗?删除后不可恢复', + buttons: { + confirm: { + text: '删除', + btnClass: 'btn-danger', + action: function () { + lightyear.loading('show'); + $.ajax({ + url: "ajax_link.php?submit=del", + method: "POST", + data: { + links: link_id + }, + success: function (data) { + lightyear.loading('hide'); + + console.log(data.msg); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + listTable(); + } + else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + } + }); + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }, + cancel: { + text: '取消' + } + } + }); +} + +//全选 +function check_all() { + var ischecked = $("#check_all").prop('checked'); + if (ischecked == true) { + $('[name="link-check"]').prop('checked', true); + } else { + $('[name="link-check"]').prop('checked', false); + } +} + +//拖拽排序 +$(document).ready(function () { + $("#link").dragsort({ + itemSelector: "tr", + dragEnd: showbutton, + dragBetween: true, dragSelector: "tr", placeHolderTemplate: "" + }); +}); + +//显示保存 +function showbutton() { + $("#save_order").show(); +} + +//保存拖拽排序 +function save_order() { + var link_array = []; + var $inputArr = $('input[name="link-check"]'); + $inputArr.each(function () { + link_array.push($(this).val()); + }); + + lightyear.loading('show'); + $.ajax({ + url: "ajax_link.php?submit=allorder", + method: "POST", + data: { link_array: link_array }, + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + listTable(); + } + else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + lightyear.loading('hide'); + return false; + } + }); +} + +//点击排序 +$(document).on('click', '.sort-up', function () { + //上移一行 + if ($(this).parents('tr').prevAll().length > 0) { + $(this).parents('tr').prev().before($(this).parents('tr').prop('outerHTML')); + $(this).parents('tr').remove(); + save_order(); + } +}).on('click', '.sort-down', function () { + //下移一行 + if ($(this).parents('tr').nextAll().length > 0) { + $(this).parents('tr').next().after($(this).parents('tr').prop('outerHTML')); + $(this).parents('tr').remove(); + save_order(); + } +}).on('click', '.sort-goup', function () { + //移到顶部 + if ($(this).parents('tr').prevAll().length > 0) { + $(this).parents('tbody').children("tr:first-child").before($(this).parents('tr').prop('outerHTML')); + $(this).parents('tr').remove(); + save_order(); + } +}).on('click', '.sort-godown', function () { + //移到底部 + if ($(this).parents('tr').nextAll().length > 0) { + $(this).parents('tbody').children("tr:last-child").after($(this).parents('tr').prop('outerHTML')); + $(this).parents('tr').remove(); + save_order(); + } +}) + +//移到分组 +function edit_group(mv_group) { + if (get_check().length == 0) { + $.alert("未选择链接"); + return false; + } + $.confirm({ + title: '移动分组', + content: mv_group, + buttons: { + formSubmit: { + text: '移动', + btnClass: 'btn-blue', + action: function () { + var group_id = this.$content.find('.group_id').val(); + if (!group_id) { + $.alert('请选择要移动到的分组'); + return false; + } + lightyear.loading('show'); + $.ajax({ + url: "ajax_link.php?submit=set_group", + method: "POST", + data: { links: get_check(), group_id: group_id }, + success: function (data) { + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + listTable(); + } + else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + return false; + } + }); + } + }, + cancel: { + text: '取消' + }, + } + }); +}; + +//链接加密 +function pwd_link(pwd_list) { + if (get_check().length == 0) { + $.alert("未选择链接"); + return false; + } + $.confirm({ + title: '加密链接', + content: pwd_list, + buttons: { + formSubmit: { + text: '加密', + btnClass: 'btn-blue', + action: function () { + var pwd_id = this.$content.find('.pwd_id').val(); + if (!pwd_id) { + $.alert('请选择添加到的加密组'); + return false; + } + lightyear.loading('show'); + $.ajax({ + url: "ajax_link.php?submit=pwd_link", + method: "POST", + data: { links: get_check(), pwd_id: pwd_id }, + success: function (data) { + + lightyear.loading('hide'); + if (data.code == 200) { + lightyear.notify(data.msg, 'success', 1000); + listTable(); + } + else { + lightyear.notify(data.msg, 'danger', 1000); + } + return true; + }, + error: function (data) { + layer.msg('服务器错误'); + return false; + } + }); + } + }, + cancel: { + text: '取消' + }, + } + }); +}; + +function pwd_links() { + $.alert({ + title: '分组已加密', + content: '当前分组已设置为加密,若想单独设置链接加密,请先删除该分组的加密', + }); +} +$(document).on('click', '.tips', function () { + $.alert({ + title: '提示', + content: '

拖动排序

  • 在电脑端可以拖拽链接的名称进行排序,拖拽完成后点击“保存排序”即可生效

  • 链接加密

  • 加密后的链接地址在本页面显示为粉色,以便标识
  • 加密分组后该分组下的链接单独设置的加密将失效,删除分组的加密后即可恢复
  • 加密后链接只能使用密码登录后方可查看
  • ', + }); +}); \ No newline at end of file diff --git a/assets/admin/js/main.min.js b/assets/admin/js/main.min.js new file mode 100644 index 0000000..a0fd389 --- /dev/null +++ b/assets/admin/js/main.min.js @@ -0,0 +1,161 @@ +; + +jQuery( function() { + $("body").on('click','[data-stopPropagation]',function (e) { + e.stopPropagation(); + }); + + // 滚动条 + const ps = new PerfectScrollbar('.lyear-layout-sidebar-scroll', { + swipeEasing: false, + suppressScrollX: true + }); + + // 侧边栏 + $(document).on('click', '.lyear-aside-toggler', function() { + $('.lyear-layout-sidebar').toggleClass('lyear-aside-open'); + $("body").toggleClass('lyear-layout-sidebar-close'); + + if ($('.lyear-mask-modal').length == 0) { + $('
    ').prependTo('body'); + } else { + $( '.lyear-mask-modal' ).remove(); + } + }); + + // 遮罩层 + $(document).on('click', '.lyear-mask-modal', function() { + $( this ).remove(); + $('.lyear-layout-sidebar').toggleClass('lyear-aside-open'); + $('body').toggleClass('lyear-layout-sidebar-close'); + }); + + // 侧边栏导航 + $(document).on('click', '.nav-item-has-subnav > a', function() { + $subnavToggle = jQuery( this ); + $navHasSubnav = $subnavToggle.parent(); + $topHasSubNav = $subnavToggle.parents('.nav-item-has-subnav').last(); + $subnav = $navHasSubnav.find('.nav-subnav').first(); + $viSubHeight = $navHasSubnav.siblings().find('.nav-subnav:visible').outerHeight(); + $scrollBox = $('.lyear-layout-sidebar-scroll'); + $navHasSubnav.siblings().find('.nav-subnav:visible').slideUp(500).parent().removeClass('open'); + $subnav.slideToggle( 300, function() { + $navHasSubnav.toggleClass( 'open' ); + + // 新增滚动条处理 + var scrollHeight = 0; + pervTotal = $topHasSubNav.prevAll().length, + boxHeight = $scrollBox.outerHeight(), + innerHeight = $('.sidebar-main').outerHeight(), + thisScroll = $scrollBox.scrollTop(), + thisSubHeight = $(this).outerHeight(), + footHeight = 121; + + if (footHeight + innerHeight - boxHeight >= (pervTotal * 48)) { + scrollHeight = pervTotal * 48; + } + if ($subnavToggle.parents('.nav-item-has-subnav').length == 1) { + $scrollBox.animate({scrollTop: scrollHeight}, 300); + } else { + // 子菜单操作 + if (typeof($viSubHeight) != 'undefined' && $viSubHeight != null) { + scrollHeight = thisScroll + thisSubHeight - $viSubHeight; + $scrollBox.animate({scrollTop: scrollHeight}, 300); + } else { + if ((thisScroll + boxHeight - $scrollBox[0].scrollHeight) == 0) { + scrollHeight = thisScroll - thisSubHeight; + $scrollBox.animate({scrollTop: scrollHeight}, 300); + } + } + } + }); + }); + + // 提示 + if($('[data-toggle="tooltip"]')[0]) { + $('[data-toggle="tooltip"]').tooltip({ + "container" : 'body', + }); + } + + // 弹出框 + if($('[data-toggle="popover"]')[0]) { + $('[data-toggle="popover"]').popover(); + } + + // 标签 + $('.js-tags-input').each(function() { + var $this = $(this); + $this.tagsInput({ + height: $this.data('height') ? $this.data('height') : '38px', + width: '100%', + defaultText: $this.attr("placeholder"), + removeWithBackspace: true, + delimiter: [','] + }); + }); + + // 时间选择 + jQuery('.js-datetimepicker').each(function() { + var $input = jQuery(this); + $input.datetimepicker({ + format: $input.data('format') ? $input.data('format') : false, + useCurrent: $input.data('use-current') ? $input.data('use-current') : false, + locale: moment.locale('' + ($input.data('locale') ? $input.data('locale') : '') + ''), + showTodayButton: $input.data('show-today-button') ? $input.data('show-today-button') : false, + showClear: $input.data('show-clear') ? $input.data('show-clear') : false, + showClose: $input.data('show-close') ? $input.data('show-close') : false, + sideBySide: $input.data('side-by-side') ? $input.data('side-by-side') : false, + inline: $input.data('inline') ? $input.data('inline') : false, + }); + }); + + // 日期选择 + jQuery('.js-datepicker').each(function() { + var options = { + weekStart: 1, + autoclose: typeof($(this).data('auto-close')) != 'undefined' ? $(this).data('auto-close') : true, + language: 'zh-CN', // 默认简体中文 + multidateSeparator: ', ', // 默认多个日期用,分隔 + format: $(this).data('date-format') ? $(this).data('date-format') : 'yyyy-mm-dd', + }; + + if ( $(this).prop("tagName") != 'INPUT' ) { + options.inputs = [$(this).find('input:first'), $(this).find('input:last')]; + } + + $(this).datepicker(options); + }); + + // 颜色选取 + jQuery('.js-colorpicker').each(function() { + var $colorpicker = jQuery(this); + var $colorpickerMode = $colorpicker.data('colorpicker-mode') ? $colorpicker.data('colorpicker-mode') : 'hex'; + var $colorpickerinline = $colorpicker.data('colorpicker-inline') ? true: false; + $colorpicker.colorpicker({ + 'format': $colorpickerMode, + 'inline': $colorpickerinline + }); + }); + + // 复选框全选 + $("#check-all").change(function () { + if ($boxname = $(this).data('name')) { + $(this).closest('table').find("input[name='" + $boxname + "']").prop('checked', $(this).prop("checked")); + } else { + $(this).closest('table').find(".lyear-checkbox input[type='checkbox']").prop('checked', $(this).prop("checked")); + } + }); + + // 设置主题配色 + setTheme = function(input_name, data_name) { + $("input[name='"+input_name+"']").click(function(){ + $('body').attr(data_name, $(this).val()); + }); + } + setTheme('site_theme', 'data-theme'); + setTheme('logo_bg', 'data-logobg'); + setTheme('header_bg', 'data-headerbg'); + setTheme('sidebar_bg', 'data-sidebarbg'); + +}); \ No newline at end of file diff --git a/assets/admin/js/perfect-scrollbar.min.js b/assets/admin/js/perfect-scrollbar.min.js new file mode 100644 index 0000000..21feaba --- /dev/null +++ b/assets/admin/js/perfect-scrollbar.min.js @@ -0,0 +1,6 @@ +/*! + * perfect-scrollbar v1.4.0 + * (c) 2018 Hyunje Jun + * @license MIT + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()}(this,function(){"use strict";function t(t){return getComputedStyle(t)}function e(t,e){for(var i in e){var r=e[i];"number"==typeof r&&(r+="px"),t.style[i]=r}return t}function i(t){var e=document.createElement("div");return e.className=t,e}function r(t,e){if(!v)throw new Error("No element matching method supported");return v.call(t,e)}function l(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function n(t,e){return Array.prototype.filter.call(t.children,function(t){return r(t,e)})}function o(t,e){var i=t.element.classList,r=m.state.scrolling(e);i.contains(r)?clearTimeout(Y[e]):i.add(r)}function s(t,e){Y[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))},t.settings.scrollingThreshold)}function a(t,e){o(t,e),s(t,e)}function c(t){if("function"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent("CustomEvent");return e.initCustomEvent(t,!1,!1,void 0),e}function h(t,e,i,r,l){var n=i[0],o=i[1],s=i[2],h=i[3],u=i[4],d=i[5];void 0===r&&(r=!0),void 0===l&&(l=!1);var f=t.element;t.reach[h]=null,f[s]<1&&(t.reach[h]="start"),f[s]>t[n]-t[o]-1&&(t.reach[h]="end"),e&&(f.dispatchEvent(c("ps-scroll-"+h)),e<0?f.dispatchEvent(c("ps-scroll-"+u)):e>0&&f.dispatchEvent(c("ps-scroll-"+d)),r&&a(t,h)),t.reach[h]&&(e||l)&&f.dispatchEvent(c("ps-"+h+"-reach-"+t.reach[h]))}function u(t){return parseInt(t,10)||0}function d(t){return r(t,"input,[contenteditable]")||r(t,"select,[contenteditable]")||r(t,"textarea,[contenteditable]")||r(t,"button,[contenteditable]")}function f(e){var i=t(e);return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)}function p(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function b(t,i){var r={width:i.railXWidth},l=Math.floor(t.scrollTop);i.isRtl?r.left=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:r.left=t.scrollLeft,i.isScrollbarXUsingBottom?r.bottom=i.scrollbarXBottom-l:r.top=i.scrollbarXTop+l,e(i.scrollbarXRail,r);var n={top:l,height:i.railYHeight};i.isScrollbarYUsingRight?i.isRtl?n.right=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:n.right=i.scrollbarYRight-t.scrollLeft:i.isRtl?n.left=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:n.left=i.scrollbarYLeft+t.scrollLeft,e(i.scrollbarYRail,n),e(i.scrollbarX,{left:i.scrollbarXLeft,width:i.scrollbarXWidth-i.railBorderXWidth}),e(i.scrollbarY,{top:i.scrollbarYTop,height:i.scrollbarYHeight-i.railBorderYWidth})}function g(t,e){function i(e){b[d]=g+Y*(e[a]-v),o(t,f),R(t),e.stopPropagation(),e.preventDefault()}function r(){s(t,f),t[p].classList.remove(m.state.clicking),t.event.unbind(t.ownerDocument,"mousemove",i)}var l=e[0],n=e[1],a=e[2],c=e[3],h=e[4],u=e[5],d=e[6],f=e[7],p=e[8],b=t.element,g=null,v=null,Y=null;t.event.bind(t[h],"mousedown",function(e){g=b[d],v=e[a],Y=(t[n]-t[l])/(t[c]-t[u]),t.event.bind(t.ownerDocument,"mousemove",i),t.event.once(t.ownerDocument,"mouseup",r),t[p].classList.add(m.state.clicking),e.stopPropagation(),e.preventDefault()})}var v="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector),m={main:"ps",element:{thumb:function(t){return"ps__thumb-"+t},rail:function(t){return"ps__rail-"+t},consuming:"ps__child--consume"},state:{focus:"ps--focus",clicking:"ps--clicking",active:function(t){return"ps--active-"+t},scrolling:function(t){return"ps--scrolling-"+t}}},Y={x:null,y:null},X=function(t){this.element=t,this.handlers={}},w={isEmpty:{configurable:!0}};X.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},X.prototype.unbind=function(t,e){var i=this;this.handlers[t]=this.handlers[t].filter(function(r){return!(!e||r===e)||(i.element.removeEventListener(t,r,!1),!1)})},X.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},w.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(X.prototype,w);var y=function(){this.eventElements=[]};y.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new X(t),this.eventElements.push(e)),e},y.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},y.prototype.unbind=function(t,e,i){var r=this.eventElement(t);r.unbind(e,i),r.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(r),1)},y.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},y.prototype.once=function(t,e,i){var r=this.eventElement(t),l=function(t){r.unbind(e,l),i(t)};r.bind(e,l)};var W=function(t,e,i,r,l){void 0===r&&(r=!0),void 0===l&&(l=!1);var n;if("top"===e)n=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==e)throw new Error("A proper axis should be provided");n=["contentWidth","containerWidth","scrollLeft","x","left","right"]}h(t,i,n,r,l)},L={isWebKit:"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)},R=function(t){var e=t.element,i=Math.floor(e.scrollTop);t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(n(e,m.element.rail("x")).forEach(function(t){return l(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(n(e,m.element.rail("y")).forEach(function(t){return l(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),b(e,t),t.scrollbarXActive?e.classList.add(m.state.active("x")):(e.classList.remove(m.state.active("x")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(m.state.active("y")):(e.classList.remove(m.state.active("y")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},T={"click-rail":function(t){t.event.bind(t.scrollbarY,"mousedown",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,"mousedown",function(e){var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,R(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,"mousedown",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,"mousedown",function(e){var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,R(t),e.stopPropagation()})},"drag-thumb":function(t){g(t,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x","scrollbarXRail"]),g(t,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y","scrollbarYRail"])},keyboard:function(t){function e(e,r){var l=Math.floor(i.scrollTop);if(0===e){if(!t.scrollbarYActive)return!1;if(0===l&&r>0||l>=t.contentHeight-t.containerHeight&&r<0)return!t.settings.wheelPropagation}var n=i.scrollLeft;if(0===r){if(!t.scrollbarXActive)return!1;if(0===n&&e<0||n>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var i=t.element,l=function(){return r(i,":hover")},n=function(){return r(t.scrollbarX,":focus")||r(t.scrollbarY,":focus")};t.event.bind(t.ownerDocument,"keydown",function(r){if(!(r.isDefaultPrevented&&r.isDefaultPrevented()||r.defaultPrevented)&&(l()||n())){var o=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(o){if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var s=0,a=0;switch(r.which){case 37:s=r.metaKey?-t.contentWidth:r.altKey?-t.containerWidth:-30;break;case 38:a=r.metaKey?t.contentHeight:r.altKey?t.containerHeight:30;break;case 39:s=r.metaKey?t.contentWidth:r.altKey?t.containerWidth:30;break;case 40:a=r.metaKey?-t.contentHeight:r.altKey?-t.containerHeight:-30;break;case 32:a=r.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a,i.scrollLeft+=s,R(t),e(s,a)&&r.preventDefault())}})},wheel:function(e){function i(t,i){var r=Math.floor(o.scrollTop),l=0===o.scrollTop,n=r+o.offsetHeight===o.scrollHeight,s=0===o.scrollLeft,a=o.scrollLeft+o.offsetWidth===o.scrollWidth;return!(Math.abs(i)>Math.abs(t)?l||n:s||a)||!e.settings.wheelPropagation}function r(t){var e=t.deltaX,i=-1*t.deltaY;return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6,i=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,i*=10),e!==e&&i!==i&&(e=0,i=t.wheelDelta),t.shiftKey?[-i,-e]:[e,i]}function l(e,i,r){if(!L.isWebKit&&o.querySelector("select:focus"))return!0;if(!o.contains(e))return!1;for(var l=e;l&&l!==o;){if(l.classList.contains(m.element.consuming))return!0;var n=t(l);if([n.overflow,n.overflowX,n.overflowY].join("").match(/(scroll|auto)/)){var s=l.scrollHeight-l.clientHeight;if(s>0&&!(0===l.scrollTop&&r>0||l.scrollTop===s&&r<0))return!0;var a=l.scrollWidth-l.clientWidth;if(a>0&&!(0===l.scrollLeft&&i<0||l.scrollLeft===a&&i>0))return!0}l=l.parentNode}return!1}function n(t){var n=r(t),s=n[0],a=n[1];if(!l(t.target,s,a)){var c=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed:o.scrollTop+=s*e.settings.wheelSpeed,c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed,c=!0):(o.scrollTop-=a*e.settings.wheelSpeed,o.scrollLeft+=s*e.settings.wheelSpeed),R(e),(c=c||i(s,a))&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault())}}var o=e.element;void 0!==window.onwheel?e.event.bind(o,"wheel",n):void 0!==window.onmousewheel&&e.event.bind(o,"mousewheel",n)},touch:function(e){function i(t,i){var r=Math.floor(h.scrollTop),l=h.scrollLeft,n=Math.abs(t),o=Math.abs(i);if(o>n){if(i<0&&r===e.contentHeight-e.containerHeight||i>0&&0===r)return 0===window.scrollY&&i>0&&L.isChrome}else if(n>o&&(t<0&&l===e.contentWidth-e.containerWidth||t>0&&0===l))return!0;return!0}function r(t,i){h.scrollTop-=i,h.scrollLeft-=t,R(e)}function l(t){return t.targetTouches?t.targetTouches[0]:t}function n(t){return!(t.pointerType&&"pen"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||"mouse"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function o(t){if(n(t)){var e=l(t);u.pageX=e.pageX,u.pageY=e.pageY,d=(new Date).getTime(),null!==p&&clearInterval(p)}}function s(e,i,r){if(!h.contains(e))return!1;for(var l=e;l&&l!==h;){if(l.classList.contains(m.element.consuming))return!0;var n=t(l);if([n.overflow,n.overflowX,n.overflowY].join("").match(/(scroll|auto)/)){var o=l.scrollHeight-l.clientHeight;if(o>0&&!(0===l.scrollTop&&r>0||l.scrollTop===o&&r<0))return!0;var s=l.scrollLeft-l.clientWidth;if(s>0&&!(0===l.scrollLeft&&i<0||l.scrollLeft===s&&i>0))return!0}l=l.parentNode}return!1}function a(t){if(n(t)){var e=l(t),o={pageX:e.pageX,pageY:e.pageY},a=o.pageX-u.pageX,c=o.pageY-u.pageY;if(s(t.target,a,c))return;r(a,c),u=o;var h=(new Date).getTime(),p=h-d;p>0&&(f.x=a/p,f.y=c/p,d=h),i(a,c)&&t.preventDefault()}}function c(){e.settings.swipeEasing&&(clearInterval(p),p=setInterval(function(){e.isInitialized?clearInterval(p):f.x||f.y?Math.abs(f.x)<.01&&Math.abs(f.y)<.01?clearInterval(p):(r(30*f.x,30*f.y),f.x*=.8,f.y*=.8):clearInterval(p)},10))}if(L.supportsTouch||L.supportsIePointer){var h=e.element,u={},d=0,f={},p=null;L.supportsTouch?(e.event.bind(h,"touchstart",o),e.event.bind(h,"touchmove",a),e.event.bind(h,"touchend",c)):L.supportsIePointer&&(window.PointerEvent?(e.event.bind(h,"pointerdown",o),e.event.bind(h,"pointermove",a),e.event.bind(h,"pointerup",c)):window.MSPointerEvent&&(e.event.bind(h,"MSPointerDown",o),e.event.bind(h,"MSPointerMove",a),e.event.bind(h,"MSPointerUp",c)))}}},H=function(r,l){var n=this;if(void 0===l&&(l={}),"string"==typeof r&&(r=document.querySelector(r)),!r||!r.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");this.element=r,r.classList.add(m.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1};for(var o in l)n.settings[o]=l[o];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return r.classList.add(m.state.focus)},a=function(){return r.classList.remove(m.state.focus)};this.isRtl="rtl"===t(r).direction,this.isNegativeScroll=function(){var t=r.scrollLeft,e=null;return r.scrollLeft=-1,e=r.scrollLeft<0,r.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?r.scrollWidth-r.clientWidth:0,this.event=new y,this.ownerDocument=r.ownerDocument||document,this.scrollbarXRail=i(m.element.rail("x")),r.appendChild(this.scrollbarXRail),this.scrollbarX=i(m.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",s),this.event.bind(this.scrollbarX,"blur",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=t(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth),e(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight),e(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=i(m.element.rail("y")),r.appendChild(this.scrollbarYRail),this.scrollbarY=i(m.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",s),this.event.bind(this.scrollbarY,"blur",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=t(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=u(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?f(this.scrollbarY):null,this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth),e(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom),e(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:r.scrollLeft<=0?"start":r.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:r.scrollTop<=0?"start":r.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return T[t](n)}),this.lastScrollTop=Math.floor(r.scrollTop),this.lastScrollLeft=r.scrollLeft,this.event.bind(this.element,"scroll",function(t){return n.onScroll(t)}),R(this)};return H.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,e(this.scrollbarXRail,{display:"block"}),e(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight),this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom),e(this.scrollbarXRail,{display:"none"}),e(this.scrollbarYRail,{display:"none"}),R(this),W(this,"top",0,!1,!0),W(this,"left",0,!1,!0),e(this.scrollbarXRail,{display:""}),e(this.scrollbarYRail,{display:""}))},H.prototype.onScroll=function(t){this.isAlive&&(R(this),W(this,"top",this.element.scrollTop-this.lastScrollTop),W(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=Math.floor(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},H.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),l(this.scrollbarX),l(this.scrollbarY),l(this.scrollbarXRail),l(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},H.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(" ")},H}); \ No newline at end of file diff --git a/assets/admin/js/theme_setting.js b/assets/admin/js/theme_setting.js new file mode 100644 index 0000000..89dbae9 --- /dev/null +++ b/assets/admin/js/theme_setting.js @@ -0,0 +1,125 @@ +layui.use(['form'], function() { + var form = layui.form, + layer = layui.layer, + $ = layui.$; + //监听提交 + form.on('submit(saveBtn)', function(data) { + if (data.form.method == 'get') { + + } else if (data.form.method == 'post') { + $.post( + data.form.action, + data.field, + function(res) { + if (res.code != 200) { + layer.alert(res.msg || '失败', { + icon: 2 + }) + } else { + layer.msg(res.msg, { + icon: 1, + }, function() { + //do something + //parent.window.location.reload(); //打开注释可以重载页面 + }); + } + }, + "json" + ) + return false; + } + }); + +}); + +layui.use(['layer', 'upload', 'element'], function() { + var layer = layui.layer, + $ = layui.$; + + function generateRdStr() { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (var i = 0; i < 10; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; + } + + var upload = layui.upload, + element = layui.element; + $("input[input_type='file']").parent().append("
      "); + $('ul.upload_box').each(function(i) { + $('ul.upload_box').eq(i).append($('ul.upload_box').eq(i).siblings("input[input_type='file']")); + }); + $("input[input_type='file']").wrap("
    • ") + $('ul.upload_box li').each(function(i) { + var upload_item = $('ul.upload_box li').eq(i), + id_name = generateRdStr(); + upload_item.attr('id', id_name); + upload_item.append("
      +
      ") + upload_item.append("
      ") + upload_item.append("
      " + + "
      " + + "
      "); + upload_item.append("
      X
      "); + $('#' + id_name + ' .remove').hide(); + $('#' + id_name + ' .preview').hide(); + $('#' + id_name + ' .layui-progress').hide(); + $('#' + id_name + ' .remove').on('click', function() { + $('#' + id_name + ' .remove').hide(); + $('#' + id_name + ' .preview').hide(); + $('#' + id_name + ' .layui-progress').hide(); + $('#' + id_name + ' .layui-progress').find('.layui-progress-bar').removeClass('layui-bg-red'); + }) + var init_val = $('#' + id_name).find("input[type='text']").hide().val() || ''; + if (init_val.length > 0) { + $('#' + id_name + ' .remove').show(); + $('#' + id_name + ' .preview').css({ + 'background': 'url(' + init_val + ')', + 'background-repeat': 'no-repeat', + 'background-size': '100% 100%', + }).show(); + } + var uploadIns = upload.render({ + elem: '#' + id_name + ' .add', + url: '../include/file.php?crop=no', + field: 'file', + method: 'post', + before: function(obj) { + + }, + choose: function(obj) { + $('#' + id_name + ' .remove').show(); + $('#' + id_name + ' .layui-progress').show(); + obj.preview(function(index, file, result) { + $('#' + id_name + ' .preview').css({ + 'background': 'url(' + result + ')', + 'background-repeat': 'no-repeat', + 'background-size': '100% 100%', + }).show(); + }); + }, + progress: function(n, elem) { + var percent = n + '%' //获取进度百分比 + element.progress(id_name + '_process', percent); //可配合 layui 进度条元素使用 + }, + done: function(res) { + if (res.code != 200) { + layer.alert(res.msg || '接口出错') + } else { + $('#' + id_name).find("input[type='text']").attr({ + value: res.url || '' + }); + layer.msg(res.msg || '上传成功', { + icon: 1, + time: 2000 //2秒关闭(如果不配置,默认是3秒) + }); + } + }, + error: function() { + layer.alert('接口出错') + $('#' + id_name + ' .layui-progress').find('.layui-progress-bar').addClass('layui-bg-red'); + } + }); + }) +}); \ No newline at end of file diff --git a/assets/admin/loading.gif b/assets/admin/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bb90fd6a49107a321c35b9cee4a7b810314b51f GIT binary patch literal 1787 zcmZXTYfw{X9>&iJhvXcHF*h)T1OnEW1i^?zgDfop1p?usL*#PMGT;HQkSO{q6FlJyb$PWkPf|h*eTST}7h8z$}MF(XD(aQ)ZLZ zM?v0rT<1C4XHn<6PbNA{XL@>1^)apdD_@tcYDrW#m`k#MmslI7p^P;Az74wGs`!SI zLs$GEZHsafXsu1i-WleMzAL(yw$-LK{0hv;6hrx8kx!!4$``dAyBnY9Jz&DqJo2$A z!(L$H=KqBeY~CF_viHPz^tTglc?D97CqEBjzUwH}7GI zapg8YZM~>2Wk%E$d&r@9ly9b4Q zJpM7T@}r63I(OExUlG%Xcjz3MU+9U^r!SkpjNThDtaP)7>j6L5z%o5|^hlVOyI*uY zt^UU6NTuY?(Lb4ZIU2Zb5Vz}Pb7KF%ivf&j^CL>$cDz?rMNTQQ|NqDVD7mhghUp%h zhIA{gi{S8y9YhIIbSv$`B!JiPi!0#4#Jge0)p&YVPHchWcyAn zQhvb8ggXGXs9;k`u9Uq*YB>O+Q3Rq=2hlLFcG{Q3ORH_}JnY8C+r%@}6|%ySP%bWG zV~mA;?P`Q2L_Ss})nrJ{$TmeA9Tt*4=}X5x%RioM@_?ZsKSEST-f+GBv~Ya)xX3O{ z8!d=YthI-13OI;RN~`>|6u5L{z20oBp%9MIj)n$!Aw{Wpq&Rtr4~*_74Gjo@3el>B zz(Rk;;>2lp73<2;d=r*8z%WkdsG=vRuG_fvxO#uN^El|+5Qoz^X!2MfxJ3m}vyi?> zMLLDi8+${Z6YbUg?8GNR>-+SwHKdFyr%HqWcs|X_l*-DAC^bG&KCqWg7-_`UlwQ`EdOp_LJkr`L$mHHs75uP?fSgVfsDjuE#ft2b8HDt0yFt!+;C zEgL=)G9ZFt4wa+N3Xg7FGc0~`&EEt6_%7tyzmnb9B_h1~7~GD4V-Bhx7~QKRkF>&aT>(-!Us@aJxAY@8E?HW$G8g zSz@7Jcp>iCp;lU1ieF6n7!oAa-1E!rS0 zF1lBFVS%G#ZO}b@*+bIk+7@Q|iG60vIDVpV%4tW8rKyzwRo_<25;8*Ky@n z-sX>W*b;M){5lB_Edc@m1`VHy0@dg$PTR9uE$O2&a?KAe?xRlCj&Z$iZYwimg{height:auto;margin:15px auto;max-width:90%!important;width:auto}.viewer-footer{bottom:0;left:0;overflow:hidden;position:absolute;right:0;text-align:center}.viewer-navbar{background-color:rgba(0,0,0,.5);overflow:hidden}.viewer-list{box-sizing:content-box;height:50px;margin:0;overflow:hidden;padding:1px 0}.viewer-list>li{color:transparent;cursor:pointer;float:left;font-size:0;height:50px;line-height:0;opacity:.5;overflow:hidden;transition:opacity .15s;width:30px}.viewer-list>li:focus,.viewer-list>li:hover{opacity:.75}.viewer-list>li:focus{outline:0}.viewer-list>li+li{margin-left:1px}.viewer-list>.viewer-loading{position:relative}.viewer-list>.viewer-loading:after{border-width:2px;height:20px;margin-left:-10px;margin-top:-10px;width:20px}.viewer-list>.viewer-active,.viewer-list>.viewer-active:focus,.viewer-list>.viewer-active:hover{opacity:1}.viewer-player{background-color:#000;bottom:0;cursor:none;display:none;right:0;z-index:1}.viewer-player,.viewer-player>img{left:0;position:absolute;top:0}.viewer-toolbar>ul{display:inline-block;margin:0 auto 5px;overflow:hidden;padding:6px 3px}.viewer-toolbar>ul>li{background-color:rgba(0,0,0,.5);border-radius:50%;cursor:pointer;float:left;height:24px;overflow:hidden;transition:background-color .15s;width:24px}.viewer-toolbar>ul>li:focus,.viewer-toolbar>ul>li:hover{background-color:rgba(0,0,0,.8)}.viewer-toolbar>ul>li:focus{box-shadow:0 0 3px #fff;outline:0;position:relative;z-index:1}.viewer-toolbar>ul>li:before{margin:2px}.viewer-toolbar>ul>li+li{margin-left:1px}.viewer-toolbar>ul>.viewer-small{height:18px;margin-bottom:3px;margin-top:3px;width:18px}.viewer-toolbar>ul>.viewer-small:before{margin:-1px}.viewer-toolbar>ul>.viewer-large{height:30px;margin-bottom:-3px;margin-top:-3px;width:30px}.viewer-toolbar>ul>.viewer-large:before{margin:5px}.viewer-tooltip{background-color:rgba(0,0,0,.8);border-radius:10px;color:#fff;display:none;font-size:12px;height:20px;left:50%;line-height:20px;margin-left:-25px;margin-top:-10px;position:absolute;text-align:center;top:50%;width:50px}.viewer-title{color:#ccc;display:inline-block;font-size:12px;line-height:1.2;margin:0 5% 5px;max-width:90%;opacity:.8;overflow:hidden;text-overflow:ellipsis;transition:opacity .15s;white-space:nowrap}.viewer-title:hover{opacity:1}.viewer-button{background-color:rgba(0,0,0,.5);border-radius:50%;cursor:pointer;height:80px;overflow:hidden;position:absolute;right:-40px;top:-40px;transition:background-color .15s;width:80px}.viewer-button:focus,.viewer-button:hover{background-color:rgba(0,0,0,.8)}.viewer-button:focus{box-shadow:0 0 3px #fff;outline:0}.viewer-button:before{bottom:15px;left:15px;position:absolute}.viewer-fixed{position:fixed}.viewer-open{overflow:hidden}.viewer-show{display:block}.viewer-hide{display:none}.viewer-backdrop{background-color:rgba(0,0,0,.5)}.viewer-invisible{visibility:hidden}.viewer-move{cursor:move;cursor:-webkit-grab;cursor:grab}.viewer-fade{opacity:0}.viewer-in{opacity:1}.viewer-transition{transition:all .3s}@-webkit-keyframes viewer-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes viewer-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.viewer-loading:after{-webkit-animation:viewer-spinner 1s linear infinite;animation:viewer-spinner 1s linear infinite;border:4px solid hsla(0,0%,100%,.1);border-left-color:hsla(0,0%,100%,.5);border-radius:50%;content:"";display:inline-block;height:40px;left:50%;margin-left:-20px;margin-top:-20px;position:absolute;top:50%;width:40px;z-index:1}@media (max-width:767px){.viewer-hide-xs-down{display:none}}@media (max-width:991px){.viewer-hide-sm-down{display:none}}@media (max-width:1199px){.viewer-hide-md-down{display:none}} \ No newline at end of file diff --git a/assets/img/bing.php b/assets/img/bing.php index e4e6837..48d8f95 100644 --- a/assets/img/bing.php +++ b/assets/img/bing.php @@ -1,21 +1,67 @@ (.+?)<\/url>/is",$str,$matches)){ -$imgurl='http://cn.bing.com'.$matches[1]; +$str = get_curl('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1'); +if (preg_match("/(.+?)<\/url>/is", $str, $matches)) { + $imgurl = 'http://cn.bing.com' . $matches[1]; } -if($imgurl){ -header('Content-Type: image/JPEG'); -@ob_end_clean(); -@readfile($imgurl); -@flush(); @ob_flush(); -exit(); -}else{ -exit('error'); +if (!empty($imgurl)) { + $currentHour = date('H'); // 获取当前小时 + $tenAMTimestamp = strtotime(date('Y-m-d 10:00:00')); + $currentTimestamp = strtotime(date('Y-m-d H:i:s')); + // 如果当前时间已经超过了10点,则计算下一个10点的时间戳 + if ($currentHour >= 10) { + $tenAMTimestamp = strtotime('+1 day 10:00:00'); + } + $expiresSeconds = $tenAMTimestamp - $currentTimestamp; + $expires = gmdate('D, d M Y H:i:s', $currentTimestamp + $expiresSeconds) . ' GMT'; + $lastModified = gmdate('D, d M Y H:i:s', $currentTimestamp) . ' GMT'; + header('Last-Modified: ' . $lastModified); + header('Expires: ' . $expires); + header('Cache-Control: public, max-age=86400'); + header('Content-Type: image/jpeg'); + ob_clean(); + readfile($imgurl); + flush(); + exit(); +} else { + // 如果 $imgurl 无效,输出错误信息 + header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); + header('Content-Type: text/plain'); + echo 'Error: Invalid image URL.'; + exit(); +} +function get_curl($url) +{ + $curl = curl_init(); + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_SSL_VERIFYHOST => false, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 Edg/101.0.1210.39 Lylme/11.24' + ), + )); + $contents = curl_exec($curl); + $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + if ($httpCode == 404) { + return $httpCode; + } + return $contents; } -?> \ No newline at end of file diff --git a/assets/img/cron.php b/assets/img/cron.php index 1cacc92..605e6f5 100644 --- a/assets/img/cron.php +++ b/assets/img/cron.php @@ -1,7 +1,7 @@ + 请求示例:http://' . $_SERVER['HTTP_HOST'] . '/assets/img/cron.php?key=秘钥'); +} else if (empty($pass)) { + //密钥为空 + exit('错误:未配置CRON密钥,请在cron.php文件配置密钥'); +} else if ($pass != $_GET['key']) { + //密钥错误 + exit('错误:传入参数key与密钥不匹配'); } -else if (empty($_GET['key'])) { - //未传入key - exit('错误:密钥为空,请传入包含参数key的GET请求
      - 请求示例:http://'.$_SERVER['HTTP_HOST'].'/assets/img/cron.php?key=秘钥'); -} -else if($pass != $_GET['key']){ - //密钥错误 - exit('错误:传入参数key与密钥不匹配'); -} -else { - //密钥正确,执行下面代码 +//密钥正确,执行下面代码 -/** - * PHP获取bing每日壁纸 - * bing每日壁纸更新时间为UTC+8 16:00 - */ -if($_GET['idx']==null){ -$str=file_get_contents('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1'); -// - -} -else{ - $str=file_get_contents('http://cn.bing.com/HPImageArchive.aspx?idx='.$_GET['idx'].'&n=1'); +if (empty($_GET['idx'])) { + $str = get_curl('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1'); +} else { + $str = get_curl('http://cn.bing.com/HPImageArchive.aspx?idx=' . $_GET['idx'] . '&n=1'); } -if(preg_match("/(.+?)<\/url>/is",$str,$matches)){ - -if(preg_match("/(.+?)<\/fullstartdate>/is",$str,$cdata)){ - +if (preg_match("/(.+?)<\/url>/is", $str, $matches)) { + preg_match("/(.+?)<\/fullstartdate>/is", $str, $cdata); + $crdate = date('Y年m月d日 H:i', strtotime($cdata[1])); + $imgurl = 'http://cn.bing.com' . $matches[1]; + echo "壁纸地址:" . $imgurl . "
      "; + echo "发布时间:" . $crdate . "
      "; } -$crdate = date('Y年m月d日 H:i', strtotime($cdata[1])); -$imgurl = 'http://cn.bing.com'.$matches[1]; - - echo "壁纸地址:" . $imgurl."
      "; - echo "发布时间:" . $crdate."
      "; - -} - - /** * 将bing每日壁纸保存到 当前目录/background.jpg */ -function GrabImage($imgurl, $dir, $filename='/background.jpg'){ - if(empty($imgurl)){ +function GrabImage($imgurl, $dir, $filename = '/background.jpg') +{ + if (empty($imgurl)) { return false; } $ext = strrchr($imgurl, '.'); - if($ext == '.js' && $ext == ".html" && $ext == ".php"){ + if ($ext == '.js' && $ext == ".html" && $ext == ".php") { echo "Format not supported!"; return false; } - $dir = realpath($dir); - - $filename = $dir . $filename; + ob_start(); + readfile($imgurl); + $img = ob_get_contents(); + ob_end_clean(); + $size = strlen($img); - ob_start(); - readfile($imgurl); - $img = ob_get_contents(); - ob_end_clean(); - $size = strlen($img); - - $fp2 = fopen($filename , "w"); - if(fwrite($fp2, $img)==true){ - echo "壁纸大小:" . round($size / 1024) .'KB
      '; - - echo "

      成功:当前壁纸已与Bing同步!

      "; - - } - else{ - echo "

      错误: 保存文件 ". $filename." 失败,请检查目录权限

      "; + $fp2 = fopen($filename, "w"); + if (fwrite($fp2, $img) == true) { + echo "壁纸大小:" . round($size / 1024) . 'KB
      '; + echo "

      成功:当前壁纸已与Bing同步!

      "; + } else { + echo "

      错误: 保存文件 " . $filename . " 失败,请检查目录权限

      "; } - fclose($fp2); - -// echo "保存路径:" . $filename."
      "; - - return $filename; + fclose($fp2); + return $filename; } -GrabImage($imgurl,dirname(__FILE__)); +GrabImage($imgurl, dirname(__FILE__)); -/** - * 返回bing每日壁纸 - */ -// if($imgurl){ -// header('Content-Type: image/JPEG'); -// @ob_end_clean(); -// @readfile($imgurl); -// @flush(); @ob_flush(); -// exit(); -// }else{ -// exit('error'); -// } +function get_curl($url) +{ + $curl = curl_init(); + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_SSL_VERIFYHOST => false, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 Edg/101.0.1210.39 Lylme/11.24' + ), + )); + $contents = curl_exec($curl); + $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + if ($httpCode == 404) { + return $httpCode; + } + return $contents; } -?> \ No newline at end of file diff --git a/assets/js/bootstrap.bundle.min.js b/assets/js/bootstrap.bundle.min.js new file mode 100644 index 0000000..3af2dc3 --- /dev/null +++ b/assets/js/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};u.jQueryDetection(),i.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return i.default(this).one(u.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||u.triggerTransitionEnd(e)}),t),this},i.default.event.special[u.TRANSITION_END]={bindType:l,delegateType:l,handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var f="bs.alert",d=i.default.fn.alert,c=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,f),this._element=null},e._getRootElement=function(t){var e=u.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=u.getTransitionDurationFromElement(t);i.default(t).one(u.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(f);o||(o=new t(this),n.data(f,o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',c._handleDismiss(new c)),i.default.fn.alert=c._jQueryInterface,i.default.fn.alert.Constructor=c,i.default.fn.alert.noConflict=function(){return i.default.fn.alert=d,c._jQueryInterface};var h="bs.button",p=i.default.fn.button,m="active",g='[data-toggle^="button"]',_='input:not([type="hidden"])',v=".btn",b=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector(_);if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains(m))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass(m)}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains(m)),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(m)),t&&i.default(this._element).toggleClass(m))},e.dispose=function(){i.default.removeData(this._element,h),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data(h);r||(r=new t(this),o.data(h,r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();i.default(document).on("click.bs.button.data-api",g,(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(v)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector(_);if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||b._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",g,(function(t){var e=i.default(t.target).closest(v)[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(C)},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(S)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(u.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(D);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one(N,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?C:S;this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(".bs.carousel"),i.default.removeData(this._element,E),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},A,t),u.typeCheckConfig(y,t,k),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===C,i=t===S,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(t===S?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(D)),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass(T);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass(T)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(D);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(D),l=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if(t===C?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass(T))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),this._activeElement=f;var h=i.default.Event(N,{relatedTarget:f,direction:r,from:l,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),u.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=u.getTransitionDurationFromElement(s);i.default(s).one(u.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass(T),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else i.default(s).removeClass(T),i.default(f).addClass(T),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(E),o=a({},A,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data(E,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=u.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data(E).to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return A}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",O._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass(P)?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!(this._isTransitioning||i.default(this._element).hasClass(P)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=i.default(e).not(this._selector).data(j))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data(j,null));var a=this._getDimension();i.default(this._element).removeClass(F).addClass(R),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass(H).attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,(function(){i.default(o._element).removeClass(R).addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass(P)){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",u.reflow(this._element),i.default(this._element).addClass(R).removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}(),Y=U&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),V))}};function z(t){return t&&"[object Function]"==={}.toString.call(t)}function K(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function X(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function G(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=K(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:G(X(t))}function $(t){return t&&t.referenceNode?t.referenceNode:t}var J=U&&!(!window.MSInputMethodContext||!document.documentMode),Z=U&&/MSIE 10/.test(navigator.userAgent);function tt(t){return 11===t?J:10===t?Z:J||Z}function et(t){if(!t)return document.documentElement;for(var e=tt(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===K(n,"position")?et(n):n:t?t.ownerDocument.documentElement:document.documentElement}function nt(t){return null!==t.parentNode?nt(t.parentNode):t}function it(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&et(a.firstElementChild)!==a?et(l):l;var u=nt(t);return u.host?it(u.host,e):it(t,nt(e).host)}function ot(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function rt(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=ot(e,"top"),o=ot(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function at(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function st(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],tt(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function lt(t){var e=t.body,n=t.documentElement,i=tt(10)&&getComputedStyle(n);return{height:st("Height",e,n,i),width:st("Width",e,n,i)}}var ut=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},ft=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=tt(10),o="HTML"===e.nodeName,r=pt(t),a=pt(e),s=G(t),l=K(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=ht({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=rt(d,e)),d}function gt(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=mt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:ot(n),s=e?0:ot(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return ht(l)}function _t(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===K(t,"position"))return!0;var n=X(t);return!!n&&_t(n)}function vt(t){if(!t||!t.parentElement||tt())return document.documentElement;for(var e=t.parentElement;e&&"none"===K(e,"transform");)e=e.parentElement;return e||document.documentElement}function bt(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?vt(t):it(t,$(e));if("viewport"===i)r=gt(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=G(X(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=mt(s,a,o);if("HTML"!==s.nodeName||_t(a))r=l;else{var u=lt(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function yt(t){return t.width*t.height}function Et(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=bt(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return ct({key:t},s[t],{area:yt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function wt(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?vt(e):it(e,$(n));return mt(n,o,i)}function Tt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function Ct(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function St(t,e,n){n=n.split("-")[0];var i=Tt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[Ct(s)],o}function Nt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Dt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t.name===n}));var i=Nt(t,(function(t){return t.name===n}));return t.indexOf(i)}(t,0,n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&z(n)&&(e.offsets.popper=ht(e.offsets.popper),e.offsets.reference=ht(e.offsets.reference),e=n(e,t))})),e}function At(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=wt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=Et(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=St(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Dt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function kt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function It(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Qt.indexOf(t),i=Qt.slice(n+1).concat(Qt.slice(0,n));return e?i.reverse():i}var Ut={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:dt({},l,r[l]),end:dt({},l,r[l]+r[u]-a[u])};t.offsets.popper=ct({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,i=e.offset,o=t.placement,r=t.offsets,a=r.popper,s=r.reference,l=o.split("-")[0];return n=Rt(+i)?[+i,0]:function(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(Nt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];return r?0===a.indexOf("%")?ht("%p"===a?n:i)[e]/100*r:"vh"===a||"vw"===a?("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r:r:t}(t,o,e,n)}))})),u.forEach((function(t,e){t.forEach((function(n,i){Rt(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}(i,a,s,l),"left"===l?(a.top+=n[0],a.left-=n[1]):"right"===l?(a.top+=n[0],a.left+=n[1]):"top"===l?(a.left+=n[0],a.top-=n[1]):"bottom"===l&&(a.left+=n[0],a.top+=n[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||et(t.instance.popper);t.instance.reference===n&&(n=et(n));var i=It("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=bt(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),dt({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=ct({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!qt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=Tt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=ht(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=K(t.instance.popper),_=parseFloat(g["margin"+f]),v=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-_-v;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(dt(n={},d,Math.round(b)),dt(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(kt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=bt(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=Ct(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case"flip":a=[i,o];break;case"clockwise":a=Wt(i);break;case"counterclockwise":a=Wt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=Ct(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),_="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,v=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(v&&"start"===r&&h||v&&"end"===r&&p||!v&&"start"===r&&m||!v&&"end"===r&&g),y=!!e.flipVariationsByContent&&(v&&"start"===r&&p||v&&"end"===r&&h||!v&&"start"===r&&g||!v&&"end"===r&&m),E=b||y;(c||_||E)&&(t.flipped=!0,(c||_)&&(i=a[l+1]),E&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=ct({},t.offsets.popper,St(t.instance.popper,t.offsets.reference,t.placement)),t=Dt(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=Ct(e),t.offsets.popper=ht(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!qt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Nt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};ut(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=Y(this.update.bind(this)),this.options=ct({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ct({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=ct({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return ct({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&z(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return ft(t,[{key:"update",value:function(){return At.call(this)}},{key:"destroy",value:function(){return Ot.call(this)}},{key:"enableEventListeners",value:function(){return Pt.call(this)}},{key:"disableEventListeners",value:function(){return Ft.call(this)}}]),t}();Vt.Utils=("undefined"!=typeof window?window:global).PopperUtils,Vt.placements=Bt,Vt.Defaults=Ut;var Yt=Vt,zt="dropdown",Kt="bs.dropdown",Xt=i.default.fn[zt],Gt=new RegExp("38|40|27"),$t="disabled",Jt="show",Zt="dropdown-menu-right",te="hide.bs.dropdown",ee="hidden.bs.dropdown",ne="click.bs.dropdown.data-api",ie="keydown.bs.dropdown.data-api",oe='[data-toggle="dropdown"]',re=".dropdown-menu",ae={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},se={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},le=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)){var e=i.default(this._menu).hasClass(Jt);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass($t)||i.default(this._menu).hasClass(Jt))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var a=this._element;"parent"===this._config.reference?a=r:u.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new Yt(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass(Jt),i.default(r).toggleClass(Jt).trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)&&i.default(this._menu).hasClass(Jt)){var e={relatedTarget:this._element},n=i.default.Event(te,e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass(Jt),i.default(o).toggleClass(Jt).trigger(i.default.Event(ee,e)))}},e.dispose=function(){i.default.removeData(this._element,Kt),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),u.typeCheckConfig(zt,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(re))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass(Zt)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass(Zt)&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(Kt);if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data(Kt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(oe)),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(pe);var o=u.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(u.TRANSITION_END),i.default(this._element).one(u.TRANSITION_END,(function(){t._element.classList.remove(pe),n||i.default(t._element).one(u.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass(ce),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&u.reflow(this._element),i.default(this._element).addClass(he),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=u.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(u.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off(_e).on(_e,(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on(ye,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off(ye)},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on(ve,(function(e){return t.handleUpdate(e)})):i.default(window).off(ve)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass(de),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger(me)}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass(ce)?ce:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on(be,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&u.reflow(this._backdrop),i.default(this._backdrop).addClass(he),!t)return;if(!n)return void t();var o=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass(he);var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass(ce)){var a=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
      ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},We={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Ve=function(){function t(t,e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=u.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=u.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass(Pe);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,l=this._getAttachment(s);this.addAttachmentClass(l);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Yt(this.element,r,this._getPopperConfig(l)),i.default(r).addClass(Fe),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),e===He&&t._leave(null,t)};if(i.default(this.tip).hasClass(Pe)){var c=u.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(u.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==Re&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass(Fe),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass(Pe)){var a=u.getTransitionDurationFromElement(n);i.default(n).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=ke(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:u.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return Be[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Me?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o=e===Me?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?qe:Me]=!0),i.default(e.getTipElement()).hasClass(Fe)||e._hoverState===Re?e._hoverState=Re:(clearTimeout(e._timeout),e._hoverState=Re,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===Re&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?qe:Me]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===He&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Le.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),u.typeCheckConfig(Ie,t,this.constructor.DefaultType),t.sanitize&&(t.template=ke(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(je);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass(Pe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(Oe),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data(Oe,o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return Ie}},{key:"DATA_KEY",get:function(){return Oe}},{key:"Event",get:function(){return Ue}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return We}}]),t}();i.default.fn.tooltip=Ve._jQueryInterface,i.default.fn.tooltip.Constructor=Ve,i.default.fn.tooltip.noConflict=function(){return i.default.fn.tooltip=xe,Ve._jQueryInterface};var Ye="bs.popover",ze=i.default.fn.popover,Ke=new RegExp("(^|\\s)bs-popover\\S+","g"),Xe=a({},Ve.Default,{placement:"right",trigger:"click",content:"",template:''}),Ge=a({},Ve.DefaultType,{content:"(string|element|function)"}),$e={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Je=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,s(e,n);var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Ke);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data(Ye),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data(Ye,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Xe}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return $e}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ge}}]),o}(Ve);i.default.fn.popover=Je._jQueryInterface,i.default.fn.popover.Constructor=Je,i.default.fn.popover.noConflict=function(){return i.default.fn.popover=ze,Je._jQueryInterface};var Ze="scrollspy",tn="bs.scrollspy",en=i.default.fn[Ze],nn="active",on="position",rn=".nav, .list-group",an={offset:10,method:"auto",target:""},sn={offset:"number",method:"string",target:"(string|element)"},ln=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":on,n="auto"===this._config.method?e:this._config.method,o=n===on?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=u.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,tn),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},an,"object"==typeof t&&t?t:{})).target&&u.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=u.getUID(Ze),i.default(t.target).attr("id",e)),t.target="#"+e}return u.typeCheckConfig(Ze,t,sn),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",gn=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&i.default(this._element).hasClass(dn)||i.default(this._element).hasClass("disabled"))){var e,n,o=i.default(this._element).closest(".nav, .list-group")[0],r=u.getSelectorFromElement(this._element);if(o){var a="UL"===o.nodeName||"OL"===o.nodeName?mn:pn;n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,un),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(pn):i.default(e).find(mn))[0],a=n&&r&&i.default(r).hasClass(cn),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var l=u.getTransitionDurationFromElement(r);i.default(r).removeClass(hn).one(u.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass(dn);var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass(dn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}i.default(t).addClass(dn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u.reflow(t),t.classList.contains(cn)&&t.classList.add(hn);var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&i.default(r).hasClass("dropdown-menu")){var a=i.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));i.default(s).addClass(dn)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(un);if(o||(o=new t(this),n.data(un,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),gn._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=gn._jQueryInterface,i.default.fn.tab.Constructor=gn,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=fn,gn._jQueryInterface};var _n="bs.toast",vn=i.default.fn.toast,bn="hide",yn="show",En="showing",wn="click.dismiss.bs.toast",Tn={animation:!0,autohide:!0,delay:500},Cn={animation:"boolean",autohide:"boolean",delay:"number"},Sn=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(En),t._element.classList.add(yn),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(bn),u.reflow(this._element),this._element.classList.add(En),this._config.animation){var o=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains(yn)){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(yn)&&this._element.classList.remove(yn),i.default(this._element).off(wn),i.default.removeData(this._element,_n),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},Tn,i.default(this._element).data(),"object"==typeof t&&t?t:{}),u.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on(wn,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(bn),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(yn),this._config.animation){var n=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(_n);if(o||(o=new t(this,"object"==typeof e&&e),n.data(_n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return Cn}},{key:"Default",get:function(){return Tn}}]),t}();i.default.fn.toast=Sn._jQueryInterface,i.default.fn.toast.Constructor=Sn,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=vn,Sn._jQueryInterface},t.Alert=c,t.Button=b,t.Carousel=O,t.Collapse=W,t.Dropdown=le,t.Modal=Se,t.Popover=Je,t.Scrollspy=ln,t.Tab=gn,t.Toast=Sn,t.Tooltip=Ve,t.Util=u,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/assets/js/layui/css/layui.css b/assets/js/layui/css/layui.css new file mode 100644 index 0000000..1ab7647 --- /dev/null +++ b/assets/js/layui/css/layui.css @@ -0,0 +1 @@ +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none;border-bottom:1px solid #eee;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}hr.layui-border-black,hr.layui-border-blue,hr.layui-border-cyan,hr.layui-border-green,hr.layui-border-orange,hr.layui-border-purple,hr.layui-border-red{border-width:0 0 1px}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input.layui-form-danger:focus+.layui-input-split{border-color:#ff5722}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-wrap .layui-input-suffix.layui-input-split{border-width:0;border-left-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-input-wrap .layui-input[type=number].layui-input-number-out-of-range{color:#ff5722}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-form-checkbox[lay-skin=none] *,.layui-form-radio[lay-skin=none] *{box-sizing:border-box}.layui-form-checkbox[lay-skin=none],.layui-form-radio[lay-skin=none]{position:relative;min-height:20px;margin:0;padding:0;height:auto;line-height:normal}.layui-form-checkbox[lay-skin=none]>div,.layui-form-radio[lay-skin=none]>div{position:relative;top:0;left:0;cursor:pointer;z-index:10;color:inherit;background-color:inherit}.layui-form-checkbox[lay-skin=none]>i,.layui-form-radio[lay-skin=none]>i{display:none}.layui-form-checkbox[lay-skin=none].layui-checkbox-disabled>div,.layui-form-radio[lay-skin=none].layui-radio-disabled>div{cursor:not-allowed}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}.layui-table-main>.layui-table>tbody>tr:last-child>td>.layui-table-cell-c{bottom:0}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:0 0 1px;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform:rotate(180deg)}.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform:rotate(-180deg)}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;background:0 0;background-color:rgba(0,0,0,.3);box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child,.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left:11px;background:0 0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover,.layui-rate-hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark,.layui-code-theme-dark>.layui-code-header{border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f}.layui-code-theme-dark{border-width:1px;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-full .layui-code-item-preview{overflow:auto}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list{display:table}.layui-laydate .laydate-time-list>li{display:table-cell;height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate .laydate-time-list-hide-1 ol li{padding-left:53px}.layui-laydate .laydate-time-list-hide-2 ol li{padding-left:117px}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate .layui-this.laydate-disabled,.layui-laydate .layui-this.laydate-disabled>div{background-color:#eee!important}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left:49px}.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left:107px}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{opacity:0;transition:opacity .35s cubic-bezier(.34,.69,.1,1);top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s} \ No newline at end of file diff --git a/assets/js/layui/font/iconfont.eot b/assets/js/layui/font/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..3f5e98bb584b80ae0ce0d39b598fb37423ea8220 GIT binary patch literal 54172 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

      ?x(Azz|<-o<;&g<&wtZdwT(dKbDA!{34 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

      N=BJJ zhh3IV8%{={-E~n>9d!9{#0nFQz5qlt!R&R>=fp&;hpMWYba^e9f(~1*h;tuB4LK#_ z10A8T(`_(H^e5bv4r-5{SVC0iyS$L(6xbJVassOKx#*X~Xk9n$5b_XFM5{U|&g+vU4PacvMw^Qqi zTW&++6NP@o(*wh=r&{XHE-81cUH|>{YdgwIvfZVs$8ArEMz?#Q)R`HDhtc>KmoLk= zj$)h109ZK5DgE5mz2)L9VEenvtwzb{Hl~|$v!`E}nc{L8&hz^n-oWC8<6}3j-@9=g z-&(hBx*FvUmrW<;< z_VjGMY-?{wbh{+clV7%eSw6okABz~>vJsn(IL~nh`!$<}ri6Q84D$UB&~c-C&d^&l z7GmZ*GROK6%oTT3;3qcAC5HXo9eIX2N>S!5;?$iiR8KYow^;hUIG8yFhk3uZC`gCq z95Q}87rAW9y4BZnE%)`S*Zuv}Ty*NPaJ|Eks!N9&gBE|nPg@2OCQn@wv)31ODS2}k zo6S%u1jash2~^~JKP)= z)nA(;O;K+)=Au7V|14$)n*-Tc(5ILTKM{Sglq1;M6jKUi7EER$#&{teHUEYMvu*zR z{?-^Q)f^|jiayPOZ*D@bwqdt!1vn8LTPnd-&5)&Zk6AD{+#7_?PwM8Um_VSE6Cg1u zx#;#Yh+h5_t9^}`#TjgU!zpBIR+{Ni*&xFy0UK!PJ&Gc^W%a>(|Kc$SCiatQ^<$IC z`A1FPzq#v9T3oQ`(qn?1@&keeMGC*?3g^rp!KXk|OhHl}hIU#})H~_NM8V+w)9bId zKb=>n>*(|OkAD&$i#GfP=O~%^+5Fgj#hEJ<PSLV8%#G3cO&|dl-!h< z*K2|La(?+nz92R($9cWxiW&d8_{@oTE*BSqaq#54AC9nlz&CsbH&_*%y7T3r|6q@W zL_dp5@aTWl_T}-Blx6;T->T}W?&|wK(&;Om&Yg5RolY{DTyqc1#oQN6Cg~hAnIw~g zVHlW04qXL7QB)2Y1q4M@L`6iF0Tx+zMS%reMG^dX?0O%duBMCM_o?p8glm_7emSb& zs(RnI-+Jpkp7Z zV72>2Nd%%vxTC42B4Lw65w^CHNr2BKkc@zEXmL9*=PF(H>T8;E>GkpS#+*?GCEC2E zKC-H@xwf;a+G%sff>E-(t%XU9Xo%FfEGi@{YDK83rp0D8RVYf(VfA|>b{`qd2%_qY zS^a)k8JTRdl5i=$fPvfHaz(k3?OV69H>WB~f}+9Zty@`L6>kYh*r|X;Z0kCC-66MK zZMMnI$|bGK)-MHwsTEk^P%bE;mhh59-FUkd6h}+nmRmRf>l!~0f6O7Qd9vh(35VjX z=8o-_qvRh{+(vT$OVlJJz>Ul^qUaxG@q> zEUC2FO@Jro(VkTswloayjVkcxRZ-qZ^z zURF_8*Hu?n@x~86)wrw?f2W)JoA9TdDW0N!TAQB~z74wo!h{LJB4iWfP7C$P3;2w0 zy@Cx4Tw}6FXiJg6HxUCF59@MW9O1&97Km@CZ80Gxvx#tRZD(z57_6!t;-mW)ovNz# z0oB6c(f5$aAa!6*x0wp=R>7+D&>r9LEx}?G1fHXl!tMmSgD0igT?{8J0a z#0rjy1x4WS!ucXWmg;lN{a9DUttfD(``PZkay@npD?Q>Kj|ixe)Bn0 zk9S$C!&dE9He?G|TdM_jH_mN1&s)oJt{sQf-QCvm8f4LKrmWTMJ#V?N@ZHY|Ulr8SX%gsHe^keTiGt{PHU*zl43`+t4o)5;!=6anquq{ zb^_OsW;@w#%AV5x=`9z^7{%KYjrSmJR&o%ghz(Wp-Dk zr9F`Fw_6i#t*>`~8}GQV(;D+_zxY^7eMUNeNo_?WWCq z$?7)v9MP(Md*bzgPKJIWyT#|?4$sz3(du?sJnWwbjmANX+vXQd4cb2(fq;Wa4JOfV zb89a(Za=s)&9^OYT3!L0#`7C3Ay+arI?>d-RN>xoC+z7xt2eL50_>!kn-W2nNA(8d z2UdvqUS^0^hWkVDa)UeM;>3#S>(MRHt?z{uO&`Tv!JHv|&jR)9h5Hud>AKp3-Z5@t zThSq|iuV5y;$pPZ+eW`~Uu>a#5h8_JG?(C*x%gwT| zQ8oh@qA)3~?e5(uL44M+YT5Lahhy=TohC)vaD1&W|AJtuZd}`?*hNWh>CV>Sdf#B1 z*=pu9Y+LQ6%hp|)s!mn)E?c+aL{03(U3+A+S>C&K%L(nHTRxHN2nY(oZbU9y(LcRx zd3)!3FNsTp_!BsM(>8WT^?0o8378Xn`N$EzrZDfe zeOKso+vdMzb^nncw7K`wS5YxsEZUM6fK`ZlAT6!iS{1t6g$C=7xJ=f{++wr^Ed(m#x5=Og(^zS6Qk^R_c*TOHp$R2p{#TDj|{66hZgzFB82BeYRsfPbf)c~5AzLNPGPIcnN>M^b$bx8N4i0`~jp38M@>@&<-z;ORsq9I9 z$=7MoKbBZO)DNWr{@zJ$t(8^vR`ZWrUaE+kO@ydG3T?Gxe|QAzbQjV_pvJnuw?rX( zpmtLn%6`a;&xfv;bZuuFcCLv+$!8VQA`St5agWwbAK?h3`~G0bJ7*GkE(aM*V#|c? zb5(Iudul~Zdky{dIKr{8BbiCw*%oPtMiJLyOOwSL@S4pySl9(|cexvXclxa^o6Tj- zIp~MKR#8*4q^9P><$4|3PaR>qJ?wy>QG3dVN}|zg%w9{Wnu{RqM;*)yA9=Uc`X>|6 zr%Z5q#a@X?e+J_i01_aIF||tup0sA_d@m2u-aNE@OS;A8wRN`d+b{HD%gv;>Y#*XK z(}Nea!w^_sJ8&4~|GlvP0Rfi;TO`5Jjp}`nlBG*>_B7!G@Lbe~rsDta^ilXE9r^wZ z#Sc3EeIWztFUowOQP6cQOGz95e^^r4iOdD6d9KY)bTLp|^v39z1dz*u3wXo%f_>_n z2jA#>rVjP=_xBu{V&X!Idz?^L)1h!S^$s3`!pl@tn_nnetfa6NPD{O1iFSsL=hD=d zG@njl9X^S*r3vG4`TsJXKp)c6y-Br{a3!mN6M!`X5b3#Ot`!IaiFfv=yke@TJ(^;M zh13;4);ID#^kfCCX z{93SJtVE1Wa z4%*0(t%tdi*#;I*z#mgzcEHJ$fQ2(LLWa^&F58nhdXT>6}j8<7{~ z!fUcw^;JQIN;dv3chpzSert2t0{%Eedp%Z!G${846j4-~;0ft;_Q2sZ?hj%=|Cd{D z=G(iMxVdC@#;xToyAWLp9_|ip&}p15iGD543vJ;WFi_!~TAs4MlC1aBtvHo0yfA_DcGE+S(?BkY!u zk-}Zz6UBZ=39^~(JD&wQY!(b*Ke3NwboeTPjB&;TOT++KGxmS(>(^-PTwCN5xO8H@nUYk6dN`cSh=vz5Osm|m>P)oB-7NS zqOq(#Y!+@wbd^{u_C48Ul^dFy8)U0X&X$Kl<;>Kyi_j}J*Voq8ZzhC_T}_RJ-#c59 zm6=L@C0%HkJ2}@td9o||ukT+`KDU!fZyq20>FB{NRN>CK!>_J)B7Y@7yo&4AKZF7P zH~73XLi4{DEv}L!&oIM=PhX#gloVZi$aU3XGeK2MZ~9FYM``~J)f`?uyK{0;d)Xqv^2GBItpB4i%`CQX0RNpdr^o^FVlyb zes~naE{2_#WH-90GhSL9BT9<;#!;NEc%!=Vn`I#OM+f<0F5oBWD?v&)eZAzjr)oR; zRzD3~JeTG4FIF#YsfyS`;&nJJe5u!%NiM6+8MLqN+QrT@wAJ*+YS@`AORKBu0%7e8 zl-1gqa(_)CwQ@7kkZf_IJ+tf>;B4h1a9=Xf9*MmN1MeAb0JY}=wLseJL>4HLcssC5 zfS)T;*@Tp$OTJ7_ri=Rh$MTJh_}jd;5f;W5HLY!IY=?E{+AlVKk)0maUWHMbIr+<9 zCcpMI?bYX=d*KCU{^c*VSCjhJ(E)mqhrzj%e=bJNSt~O#7R4Z!^Z^d^4jRw8<3_hnKzpK`ds|JaGyZYxCvVg2s=PUCo&)76LcQdhZwZvME(&M zk$^0h(mI^)lWg$7=%(DVj!oO!_pffaM|u%yk>vKK>h^%Hn>z!1l_K6NVYaUY_U$o>_6rEA zqLD25Ly)ypPDg;n{MWriA(A9fM{#^1_|4gL9U(W8!{*tH36y+eRSAL!SrpQP9Pmi? z2Cyhn0f4^H!+Ah32(ex1L>E06ZZunWtyev9Hj8-j&BaCSc-6{s_~a#bP*8v!eupF7-|ydH3c5_&%U8l(*Ja!h z&@Tpd7=t)T4i2sf29w)OhS*~Uw;BfUD~7E8?*z%+I5CI zLT>I0Ssz_|zwgbZ?+AxbH!5}o(T@K9w8MdRAb`P+P?%LCXuys@e;=F!(GKL;o(u-p z?jJ<6i^CnhOTz2$o2|gw-VZt)5;1+o1FlP-?^yAQ+jS8_f?&(_UuXsO`-x=f0^p|- zDOrU@Q6d>D-hXS!#*?Y4 z`(rIlH?Pbj5}Es3uDmjTF5j{~?>8_;0;?`fRb{TcvgPWX?+x_!!GjaUo0^*3y*pRN z_a4|2zds39VpT5+qlQEx|Awsh2KssftME*u!zkKl_^|I0YTFD&kChgJCtxmtuH%Ug z!BGmYpi^mhyP(WEm{59;`gY#K$U_IDVDUv3w>{)6MyJfAU8Nnp3I)M^>$^MB5NeD( z^r3a@KK#&A4}Cb5Or}2k(8$@a3_V*T;c#SY&+R+EW{_;IP({_2npni^giu*F8886s zzF;g_*K}TIP1tIH+!+Xzv7-G(koAMl$|RG4lj}b8(0BE(*thpz_wM`fI^p4kFb+Li z=MEp9-PW_L@Bkb=Z5}vynmxdM$4fV=4%KFHS)C?x7-&^y#V8YuNjga;9HqZf{}B(M zLK2X`d{_c|x-vZ9Sr|=$Q0YJm(}m=s>$LEIztZm#?$Sag0>WEJ3op<2(i|7g;P@1! z3Y4-4Ws9!Q|CugvJ!1ikBAw~CpDJCWD~$F~+B(aMpC^kSh0^8HY3XcXT)gGE7PmjO z=vm%P8j7U1e=bWwZ#qBM@Z$5n)Ad58m{l*Dcz&^IaJ$`I@*t?tcZ*$-G#KJ2F0Ac%$c zoYEdSsdb-XeJ6$f-ue07UP0{DX#k1?d>HbF7;H~#pf^p!?{yNTb-~;Mu?@&@V*Sb4 zpF{!J;|+-%u;Wm@{!f^kNdkr>H6h>)-;yG_T^E6pc&|90NXSvF3`5bw+P*=?HgqVz z8Nx%scsn)~<0b4BEwcEZciWwo&sm(;I4$>>U6&P0ScJ!@uoGw$^oaxiZ~U8G=7%U$ z3=Th}`t(YLrpV2adm?Nu^6g^gMaTK|R9x^`obxD;)T~||K@8~c^Gm`ru=A%Fj%8#L z`Bt~Ww^QNsva_t%`~pvQ{Llhc?++Ie!bW1&&gRe)^QQ@<_iPqDL1T;LI>ok>A?ig! z=jcerM!|M;s2$h4Zyh_6*)g`GwH1fVBk!uE>|}OFD=U@CvS;3XyJ>vB23z!goi>NE zBL%KAN4l{EDIgTx5=j|!3sN#h1iH#OTT+2nE%W}5to+TpJXN>4u5R_VHFZq;ho>W= zpVh@Wyzt_dTjwssjobuqygt zBYy@GP76sqK_O76P3*WV1(VO5PhiJ;?Dh5*JM1ryv+c(V-&%J$7jX@j>h0Q=%h{IW z+KQ(xU%-{!%^%a{dbA6j2mIs__>sRCG6JmBx`2;{J!EQ_F^gvh=2Zz*1NUj7C28X1 zvQQkx<)p4+S(rC&LkbKZ-NUpyYoAN(G3u|%EMk}GoTlai`%LHjd2I)F(|g@c5H6)^#1LpfY* zenkhV9F8@Yg(*dcW!UB3=M06M+9j?adr)B7B@k>e_CEM<1st8EoWY@%^A5<%{7w^H zFgg9Tz!u~DKV|9lGO7vj9B_R5^uk*EB-UCh{PwYSWr1X?tD9(TT{IbVRtgXpDcHr) z0qDH&7=&QGctE)}cx3rX2XLxhA9Cvl-QR$H<~P4lTB518wp6r5*+mg+A$Qri_u%;} zmyJhAQi~+6O(d@6sf2dpn)2S$doFd|uutD_9u=O$e$z<3-UPcB6(YujjX`j% zOCvCYL*!T!puq6?k1<=<+Kd6(H*%=!a5C3i6Q6gn2?ocurs_z$_z?#6SE7JQ6;!cY0WwefDat zi@%~}9>h=M*T4RC_7o0Kjvj#K#geDVML_|W%_e+ZBB zSFx`i#5aSdC#JeB*Rq7tvOz9tOfky5KGLG9FP|!&6 zWQ2`j1|Ur)tZNT@o%Vo9=<$FwuV}5R4Z8rgS{=<~>J)%KswNmx$`-RMnH*JN=ZY#a zwIr_6u8K9@R831yRV8x6^6=`>V3jwK7#Y5B|Fx#5ucE6t;H|Itg=%)hb@|CjUCvKF z;(g$b7Hi5DYtURe8?4JQ&+W?yDnzVK7GknC@;(D+=zT{m##^^TWf=6{Fh=c3#fyLC zofH^Pzjag8p48%GOUz!fneH{=&sLJ{-@{+PK2b!2?ZZxye_Q$sf@N7pho)#OdZa`= zg4cuH0t6SZ^gv6IM9l#sw&MB^fF?)*}0=UsblWRBB}j+;eR6u(~?W z^8x49t*`z5kH`O9{(E`te>F4p1*wXF|1@O3R#gwku-tPM0Z{cLw^xAv1il)p-O z;sfz7SAD_VQO(FFNe0dKal|3JTOXsovM8wE7P73AK&LFGW0K%+^pIT(!i2Mkm}e6b zF$=;+=U;I8{Z644$HGVX&ca>K+;tb7Bm#kP2R{7%aZmyHVBZD@T|44;@^4Uy!b;Eu z?4b5hc93nL+{m)%c=_FTqrF5M|1LW7#TvnlrbUAtqdje$o6Df7(??tf-e{^B7d@;f1EjH2IbG*yU-RkJ&S6!u#F4?1e z1eMWLDCq^Ub`amzscYc3mR(ZzA?)}%wU;Xb`gyWC9SBW276_dQgLyVB5lIN%iH}=& zjWAEcQju`vS~AcBVnUF%-VNVa$O%X|0x#vFq7XAg7Yjo;jgGaI0Q!ie6k^zvbagn% zo+3K5vyNCR{L1g_MU=9_j4!biWMIg(H16lu2Ca@>M{xe5y}kT-yHq$yJAr}Y<6ti| zT}&waXRN8Iuc;~O@WKAr$F8ogEcXML)b8-PEgsQt^#_}~Vgbpl@J7Ir`3rxK`|E*x zs=8Uw9;y(c0ca3`T6sNt&Q&4%;;8@&I<j)uX$^(_XNC?Mksy?{;qNmT5dHSN= zAFQgGZ^BN6QU{jy_AWi37w=&YjW%pt-!S|P1K{BLjSZv3AnCG6;om`H+d)UAA!*)P zHh{54*7*pmh~?Geh58}^{2s#K&^K8uw`XssL8TNkv{DAjQnda^k=T+nAIJ*F02iuC z%K{ePh1(Z~(_!mI%U)&;rz^UUJMt%w4y(eti6pQ555y%R6I^ zdCp=hFS+)TmGQ@-(dc6=vUK#=Xjer%oaqd_-}_0%0-c%g&C}B^Ppq*q=5c+eas8gu z^NGZ>oTqlLZ~QHL^f8CYYESmpRCce9XtxQ%(v_<(TaCX}OWB58&aU0h+b%!Q({tc* zgy@B&1^d!Bg(i47<-qBYex7`IHvm&=JN75g#jwLa`~OB}?+v05+P)Y5F%^jd&6WP& zDJ|T2SNu%;2eG>WENT?i;Ryb1{(cUt;=5x%z^%Ikp-_41)cmPaKRtCyi@!C+|I(rV zSd4{klf`1g?}C%zc(VA42*=6VhXZ)8T&_iyjZZ>u25p=k zJMo=Tv_)fqE=uv`1RNhQYk{f(w`qY2>b{52se!-o$>g8v!$n!RZ^!If$9tXYUdUt$ z<)M2lLZlWJ%~n;k$rV|fWQF?wZBmj|j?`N2Q69YG?*`Fja@4hDo$SRs)Ufe5`+mhy z6Gsg4=1MWzoD}R?Lv8sJnFso{i4_Qn$1VnX@)O!a-QA}?{&Du-z9;RqA;AvUbE8#q zv|$1KUsA~UugNE_ebpd(+FFw)hevzqIwMy+BnC z0iYR+ssVVS=#!SFF?fyzKe3`212l%T6M*L+HW{Ai1Vqnt_jGdF5q{ADV8p|_@9gSW zvTI^s%O;@msLKk^!Ct8`7JI4q!H)Q1F*-dwaAB?^)39Of=A}x7v1`kk4UHL;-+wwa z+UBz&N|G-(f>k!$+T42e4OeHFZ6~4pcD0##Q&qCN_q^tYy7~+D4_A=g_Z$A0 zkD!2eZe88iP-EGksv9gd4SlP(>curB-eeS_ZSMu8oM%)VN&yJB~Q_eSgMqw~KJ+$){QKq3*yDZ!?uU|}c!zSq6HwsyJOOG^pH z>JLHR*OcPKLVgY5*jef%MjSA#@6nHom(UazOyNj%dEusT3V{q?uo@qbe`d010A+#% ztKAj4?KZx>q3~L`x;o4sEw7eL56J7S#-~EA!Z-<~*h??oYXyUXAN~yg0j+82_aY10m~_R!vCb8e?9fj33+)D--h4*5UkH@FpWHlHh~^jg4dOYf zpxD;AeNd6y&_tLNdMIg370e|ZC=Y#NM!}?-6yWp^sUO~f4z5L0jWQ5M7FlMa7b<{n zL3ZJ!<;#*eXq!GENr?`zJ1WF>j1!m)z(KWGr4GM^TEHTqIY{VVP7-~6#^NgFD>WEr z_`_h(t05*CDFXiT(g*#M)ZPQ03768ruzrmqM__D*g4dL_fGi*$#5$`ZSEGoU0ay4zX)&L{aELpbL>`8-g0Z2zx zWQG=l+zi)ACF$}7y>Wl({drB)w|R_x{|RaCrG^Jm(2A0iO3L%Z9w8ye0- zIPCiK(HEFj`W*VQ@GYSS5!hPbAHD{2h;&H0E{QfEopm9r5-=`cYl?djO_H;wYhXr- zMxE!3?R3cx3^;E;;i>SRpzv=eycHfjamTR(!%MrnmkuBJ%Yl)u?(VLU1IG?77}0%y z@2=Kdt`*jF?AArayj~ks#6I2AHGJT&W5r@)e?2hV)ieKj%6_(-o}lN_H(}wuLQIcE z+@N!5WjO}~`dGHWcag>!pCz$87_}-F7G~1m0F@f<6`W>IH=@l$=}+FA@KMaA9`eU{ zbD;2mFCO>trG>}i&Gpfr{?t>^f-pZ%vqyW!8xliTO=T^{u5Ha77gk4h&hBqgjjiX0 z11p?^gU)q)rT=4JiZ{gr&GEvCNJF54e>$N3`n*d|ZZ<7D+S_z~op!AM;NdmKu7mA0 z{Z)r=yG<{qug`xGz9K}iK3C{S%Fsxph_`f|RqZ7+q<)1xKlXpD(-05Du!aja#2U2I zSKgA!vED{L+0a*Te((x58LloEA~5g&P`H}^Pc{EobhJHHxU;dZuaW(%@x*9#_{i_P z(Lzm4m@U&D4nyTuMz$@lKL{P%Hds#8fSOqWdS*B9N~g;%MHHR)mwlq_Q)Ty-eWmQ7 zvd7APTK3zrzcK}6Ujm`PvaE|OV;k6ZmS^K^j$O{KWH+$8*%#T@*%?H(dWOBoe#ZX9 z{sDD|nS0>vRKr{NGQNTD;S+q8ALsAmALh64&+yOlukkbd-}rO z7?C4?B>WiTHb+ag4~rrKv&dC4Xd$Q?3@IdZi7iQcb1A@$N8mT#f)vs{v>-!-n*#*} z)q}y80~re^vIMdrjWsrv1M%gPO&LZTTUjE1V(ov2E{TqJ?EBSt0c zhG0r4dthkU!{S+kC)bv1&EXR%LU;xFm_u+tFD?OeATE2r|D)x&pTI7ShsE>AaZe5{ z!dGQe9#|+M$T2c|FtMRe_K;z0HU|&cHhht;m_ZU3WV&U;)&qei_9EOyRi2#OhTcH= zoTm*sjVjbb{h1K3AEJBEBBDf*D@WZ(Pila^F@*vKU$zasjJ`!1bntJKK%bx~-c0d> zy16PvFUdy$5(e}iUCJ6@Pz`lZ8)C-Lo67<_Oz*Z#t_3wzq1zet3mS!9rtd(%;v7{Z z&^}0B(DC>hx(OgIA8sNKT7hrS4+4lW0~(V`S0yAjx)iHjT*h`QgJy5i=>qg0YQ(p; zw8q^TdNo9uW5D5Q0e6XBkr#-}Om;zdlkuFrmP3d}3_-A20Lg00A#z?((DQCGOU-Fe zG5F4GYaK%sWT9A;1+}KUXhnk54rpK|j<*hxMqEZL9rQa00cX@)_D1wPS`@WpZnRt^T);pdPEx{i)a-;4pv^2=Rg+Va{9@877z~C$zywrK z5BG?!7|=Ov@G|wlMy@+`VFss2A{;Z!uQ@%6xL55C9GZn@q;co_1aVe*%Av+iy@!EQCi9UBQ5heN~X{Y9*6_XCujy z14fks9Jb+d{RaW~vOujix(X*8K1k_RMYhTY$-te}mAlrtBt=H3E>Niga|Bcb7}9P5 zHiE!^At_v~v=**l_9*{a;Uw%sF}y^k@Da3dzXAt$#b&lEm2N;2t16cv?FA?T+WT-J z2+SMC0BgdX{5l8hc5tU2QQj=c^AxXGS*LhaQAk4Y3WpLV25y!87U@SArZUIq6fqGb zSO}VY;wn+F+r@~{1Ry``e^JTKS;EeE3}Yz8ZFS5hv9xj-AhjrTHg&y-YXf+EFdQXc0rq)|xf#<#Xvj`u3L)+SvkN9SlN|iZ9IU9#Z>a>zR<(^OH{svO6%O+p7Gi=W z$ObBms#xLWtIWU=wqvz1W9l+jP-1vO)h$(8@#>*5<20(jq*cTDX5T&&rvM^ZdTCN?1sSlJD zO!i2!Rr?8Nm3D(9Y2SeySLekZ5}t%j2idu0A;&Iz_qJ{V3I0jB)LLag#6xV|lp<*Z z2p!T1(B_-s{8DgD;JStnyf!vMNa`bF$AGodmLombiwmGT6IP$oUExo8fK2Iix+{Hn z`b0S8ig;YrYD8Fu@?(D)D^^rY%zu`^dQicln)tBY>-5Lqa>%uRu^Pi`drTIGV6n#3 zQ2EJ9yGK>4Oc6YHQJ(z>|0?t~{u_ z-B!s%H<^sqfWymJoy7rkr<-o;)2?SzeJ8XjcKw#zRAkC~h2IT#u&mpEg%_te;>RG6 zdN1Fl+n7bsVz`*4K@wqZfqHDsWspuI4fzeA)mwZ_IL{O|0bSx2Qw5w^)2fP7?Peq^ zOl*il7P@dAR#kY}nOMG*zbGFQuHff`_XAFXu3m>E3xp?hqj;$pT^A@mhf(_^1kZMZ z_Hm=bhwWJVB7L$!8t5OV`_$y3e)ci&`ZT_3b&MWewEQM^{%tj4LhP(DAedy%&PKw~ zo#RNedg*~(J6f~Z)*ZW^+r1-`&1QD&KA_#b=k(W4@7;^T9-)VD`vKrzj9#K6`Okj? z`FH;Z^0&1iKN783cGaHKd-j}ukPdpAzb!lfoQe~`TD!LFCK?|_NjJCx(B+M~+zte% zo+e8>l8Djpf%r^Mlgy6J={mW{&^eK^ppNx4QJqE7R+sJRR49?YAa(ULeFvRWKJvnW zPr$ioiSUyyD$5|u1xW8lS6Tzmql!u`7WarLqIRfJ)$a6TyYX4;tv-ALfXrWE>QHgl z#Fbhjh!30FypkN%-%{8ddDn%ty-gdNnl@fYho-UebbGp7Kd^`YzkTIf+xy0c{qIt9 z(55exmzq-yPl9bK3_WC?cTl;r73hiiFZ)p%Ku^jilehX;q}e6W3wCXa zRz-L0h+(ioZt^7LYrAw$%F>u4eoY^v#eoWTo%kwZt%@9$Ck9@d7B`GJ{ZD87Fu>jV zikQk0Y7!W1>MV>?il^b@r;V@)f-)GD^`J(LQD?#;IYE5& zWYc{nkEB#MC4=3FjSuVp>tB;H!pgG!WlutM*JRH2h`t_3?d2Zcq}q%=NK7JPE+QgI zi%pF6fTj`8Uh~)x>IBeXLX%~2F;l`ONNGVfS}jgbxu?y)$&0w}U>sx#J2BWAgwe(0 zg3*Dn*ow#xKCjn{u&P!oApJnrfz*K074m?VVTu|vs(zp9F`Ixkh&30HrJ*&qfLoaV zCq&Lg2_s6NBjJ+<3f*aq#zG!nz~}e5eTX>;8b>f$T|&xg2Cg{pJZx6CFXHP8?DE4+ z64K zpx@3XX?i7zD)PJ=7S@qwvM$v z>xKzl8%*(lzJUTEgmOhS#r5i8w43NMzb;RHd%BEltVq|Ggvl>2yA<@%(xo7jUR_9l zuK11SF8&v83co$ps{kj{{`3ulv?|R2}f&9ZD zrT&B~D0V68+~h(ZdSYi&XzOTkQy%>@8AZ`%est=hy}9=G+}?|RvTqM1_Uy~!C3#0r zjCu%cod=J7>{yT+v}dPaJulG9Sq;epwY?kt=D*D3MilHt)*t|mB?s|n?E z)xiV$zI#UaGiY7nD5^l4rGdUr4%0rwcLCs77)i_sgxH0`9U&!>x_A@4opU*{>!zxN zpFrGT)cUk#E(=s|CWNol1haO2m@wR+dSuU@WP}}b|Zq%Hys%HRYV|vO60Bw8W3UOPD;d}!RdKgq%5EsbS;u`ZfbQyiH6sQAb zj(&YxR8pwgh?ad5#hxJl{;Y1q1UCbw9bK5lx{;$kpJxXL+LtV89~k_vg~Y70@`V@h zw_sJNljWGYu(K4#Iw|MSzK+h$j(tN^q_c47`;`Ct=uTRkV3&F?SsyWUCX9T1!kLD` z%i7-?2%eaqY|zSBpk8}W2VA24{biv{sDRA|S>l0+0sjKajZC(RW&!2_C>XLTV*@pw;2&tc3Tg>hc1F-C~!q!`d!`G*L8F z)WmH*W0m%^>YR|>l;f@Z7Zp}>Dl)c-l%qDE3UzO|t~_D4+Tb?q@y9D_&5BfKk9xx) zi_6m5eX#IHmboCy)0=_#pzGoOS-2NIR6eXjfO2!4o5W~6Sr9CBT3b;AFbJLjx@8-f>a+OqfX z{)=**owJhtuf*xM>-^H9Sl`|BJq^+F(6bRosmm5U@$e`BX+mbFhem z0V>cDu!H0PYhAQPqE)r10Dwlwqg%6*f0IzJJ*Pd#>i_!Jzy0kRd*i`f)o%ADPy~TQ zTveB;w$*+3`an~a-(qy6KXLE9d{5y=*Imc{T=>@U<2IYa-$JliY$Jbmi8iCnEMXVCDIdmVj`5#$ zXouN#9om-`QxY4fhe0F0kho1^EGYm3 z5%(3qZfqlS$~O3c5L6$OnZ?oI=D+iM9zEl4tM^FBPrJ;H>d=q(nGu4(yzj@M zYKPhN>7?ZG2DH~?!*@+y$knU4>0TKw9;V;eRgo_hHTo_-_lP(v&%=UYe3j*0m5wVz5h%!O)gR6#QyW%Ry z+*QLha&cKe-#&rZmP>V-r4R4x?bfTel`yzKzk%HI09yuQ4gE=mZn(l;2W&D?B?uco zT8zOsddcB|y}6E#+}?p#V6q1C>Qw*Fa~u=46uFC zK*6T{QTwCfu`3KI#qPl;q^>yE{)kVzhd-<*Y+hOW17)_;uoG%s+vI_#YOiq%tcmltJmmMS|Zi3`~VIi>@!5R#o`ji3D8gM+9 z7E0N6QT|=U{DmL9C0nrwEfsjDXTZa*(D`*>{QVzDW^dY@$lHzixVU@Erpw}$mGR3q zZFykxrpprexop$sJ!1>PqGuNp-}vdq53|;dJ%Cl*wE2N88!wM1klaY6kQ7#ui0MBT zWKDXaaQqc20)c56y@Rnh;(BqEy23Dy_6QX3A^*UQku|pE54nGo z(uOiObClAivTZC`N~>j6?AWsD{J?B}D7yb>bZl^PVt8_5c6{LI+*kvhU63D{8y}cH zci~)WTYh?GY;q!+ZfrhxaaDdIKfO@h%*7)uv$Mm|;pxdk(Uqt-KR!MgotmCJkRP0F z9G#t=>TGJF@1yIDgOi8QA=7Y|8URQ}9-*3}VBL@6I0l!XNrVj@){nD*HyyzBIb3fz zd+!327{N8VH~qFb-mcU(l$r)8$CzGo6lU;^m?&?Ta}{z<=(*qAx*34IkHE}n7Qe%2 z?J#PbL`aM%0#8$`=~>3{JBce(`n?0VGKlMqWutnjDHswp;dkNr7Vwc44=ssmSL^1x@p7q*Uma%KDq=JI7_i>^{`&n z$NJeaww$eCE7>Zxnyq1L*?H`IwvMf58`ws+iCw@pvn^~Z+XjoB9l+7u#dfnjY%jZz zUBvdW0k)qFvLV>=46_k7%Es6MxCD)}Lu`UgvMF|$O|uy`3p<~S*%9FJ9%YxZW9%|m z{Tv69=Sg-7n7~)S0_ZAsHG3~Sk^hOkpM8K`!>(l?WY@9l*@xJNVIA}l_EB~t`xyH; z`vkj*-OO%bx3W*N+Yr^`Q@~iio!!CiWS?Po!HVd!>~riM_IY+M`vNSAzQpchUuO5S zuduJOudxSUVe}yT278EolReD-nLPq~qet0e?C~-&KQxjT$MXZjhT+Naq5QO3{Aie* z%1=lmW3&0Z0msp~{mRhT%)tKf{E&EPa&kh-Pft%y%QJI>gZY^m4m9G@IK zDCCdkE%rEEQ&~j`08oXC=RpwRcU-| zWOP)=7#p`t z=ZEG7^9_Sz(`bz{J3TNlGn~h><)<$m8_X*MLqlWqZ0gM1e%u_Sv|(m^44oxSO^;2? z8uFJ+O-|2>gOlSk>dfGDK0nbgJU2dWEv2XNpp(;iBdswFqXXl^COtJXi8@3|8V9kM zOpQ)Xw-PjzMr3+7P6cz$@+I5RPMWO#f4okZ_KoS2-=8)oto zW0TWoYe>tbxs`9#98q zOw5d-s=T6q$>8)+Q}Npljg6ztbJG{+kBU?Ux@d4fe=kFm<5>FTp|OEOlM_RR>HO^6 z^aQG+8jHh@29t%prvZJ9CmI+R>6?r*vjfw`9O$cy#fkhSvxd2;@yUT9wfNC6G(9jP zQnwp0e)A3cjadDs@X{t`jl&pZdSRIgj7^LfOP>vC3F8OHsR5J}(Je=%i!pR2WenUQ zbe44SB=zddR32|++DJRgOv6xq+*C}B&K_Dw(zq}eug=U)Pfm;&<|fARish-XK|Cd9 zF;2|qI;dg4c>uF%qG1p%#KbP1=;OguOw(|Xi#5)bKF7q_f&DXv;#`oX@hp?l%;*4W z&tn!C(6Bs)OMU{QGjGN?q*tVmcu7BzP#P~6?=^2J^;)qiRUZblX=5DB&5n)B=n2fl z8I^i_Vea8YOro2{ReILaMd=6%O^ZV~N+_eRP}E2I%7H~`0JCB)Z#_GO@ERua;_&43 zA(38_X?A*SU}6OCYx-Pr2m>AsKV+hJQ*59Wb&nltz)~?mug+dPEj|O)Bf!%`8rY8} ztHoRTq!1}TpPMojD?#yDg{r0n4&N~_Jvb^4Pmkp%hGwJ@Jlm9MIzKgjRKIULl%JT> zQ?^AfjaqLmy;1#91Uw&J?aVCZBo@n=yzN}0^$dLSpg5WzpAuf#@Q6HWa dX;j-59%`XS2gfI8@+SRQY{}%o(yg+x{|EK~lo0>` literal 0 HcmV?d00001 diff --git a/assets/js/layui/font/iconfont.svg b/assets/js/layui/font/iconfont.svg new file mode 100644 index 0000000..4f1920d --- /dev/null +++ b/assets/js/layui/font/iconfont.svg @@ -0,0 +1,405 @@ + + + + Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/js/layui/font/iconfont.ttf b/assets/js/layui/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6e84a89e031247509801ae5d65cc8d20323cb766 GIT binary patch literal 53996 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 literal 0 HcmV?d00001 diff --git a/assets/js/layui/font/iconfont.woff b/assets/js/layui/font/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..acd7ed6082729ae968e44aa9f676cd50a37e8eb6 GIT binary patch literal 34624 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 H6c%@&y~x6W literal 0 HcmV?d00001 diff --git a/assets/js/layui/font/iconfont.woff2 b/assets/js/layui/font/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5badd6e38ec077cd5b50da3d41f029f7534be086 GIT binary patch literal 29736 zcmV(>K-j-`Pew8T0RR910CXq-3jhEB0MhIL0CUv<0RR9100000000000000000000 z0000SR0d!GnOF*f>R^JU9|1N3Bm;&B3xfs#1Rw>3e+Q2^8{@4t0} z!N!3geqb0y2?vE_|NluxWsL2M?MFb>tRj-rtg0urDkL_IPgCIG!X07VDV|t?ab9}LVVqHGfB*=UKfP0HX7}qxcl>6?wgLr# zq2+LC863N`yO(sC{UiNKzaz;ISgSrm{UibL&<_Zi61N4HmFuRVr3J#F9Os$X7t_Vsce-2s`G4o?b7A$S$exoX42&qcYU6&T!0ccx zta^Xi-}LuN+9D%OQ-RTN%{N;`;+3w`nmE`0K2p$0=U<2EYy(2L=FZ7Xz5CQXVs=D5Rq)oa~N~4^{_=WFL zsZ`3|%b02U|KEYSe+Q8G2U5ZTDg;T%I6&gV9aM0D6th`obF2LhAZ;8ZId>rC0F(>h zO1hG1wQO0Yyo?^bj9JE3_a*C+G5Zp#>O^{L0E=CXEI7yN_d5IA_!6PsMAN+EUmoSy zl;#$?${fAP2#ruNlG-&+pt7vA#O!N(*aDOcaeM!aHQxudYk zwtCEq)<3aH88`%Sz$)PX)}R4Saw$QSyQv(HaFKmGjN^SjUAJ^yRWs7MRP zWaH3g%w`8Xd}&|x=?>?8lj8v(egsu|+e;p&k5_WVzU9USD4|SukAA-7oBqDS{r`vu zKp!|_feJ+mfu7W|7*2 ziKB*^GZp^}+GwDmM(U`mhH9!Pud^!+ zw7N(qQ3|QVh&4c*c$x%JY6}-BvrrDf0tInu%q4(D6IM-?){I>}_2p%gQa}9(Wi*#v z3)Qs}p{+c+3R6|I^fKtKI7t_RfCXUfXh6intNH-(L)!SdEsTHA0sIFD;15FZ7h&)V z;qV&~@Dq{n4N>p|(eNEH@D;J}1#$2h@$eK0@BxYN5lQd~$?zU2P!Fl_4r%ZP>F^dA z@Cupm8d*>d+3*rMPzH_Q1scP1G=XPm3Qy1s9-}!tLJN3^TzG&yxQl#ffR=C%1yBX8 z;64hW5?Vt6w1HD-3#ZWzj-Wm4f(~#79pNlG!8vq>^XLK>&=oGC2ri)*E~6V2LoU|41}X7fs-hO<0yj@D2HRHfWxSSZ7>K9 zVKD5+5IBILa1fWl9vB8YU^wiB5wIIZ!cG_k+hH{9gE6oX#=<73I#h}S*Z|eA8pa>G zN&r{_6JaS#f_YE_%V07rhbgcCE{BCM6{f;8mfkDa3dtaE=YmhPyu@&0ro-!+yrrOGsM6x5DT|L zB-{owU>`)meu#$KAp{Pvnv4*@Tr47@;&<`4r$c8Ce11;m0;9dd`!3JQTkrFa-^p+p#Yph6g3p>`Ny z&@mWQp$Qn#&{Kf)c!?PqXbAw_;ngq{$LpVlgk}JAc;obk5CA>^Xd@HZEEGLd8;+aV zwR}ZONHk;;fjy8ebdOeaSQBVCH_M=93a^$olUT7KiHoGXpR}T(u~ZUHU(G1vKvwj_ zNz|Z>8YuZ}h&r-Hl{Z+u-XM90ktE_Z)r<~#tC=b^Kym>|CDc6UiB@kwW4tHjs>eWC zkTQWl>0v{p65|MKG00b3$`P#Q0k3HjXrPt6ShRZE`3E@L)X~hhsur6M`#NpCc4tx>nevez_+jET!*Wk=*`cG$E|I;F0YPs zEyhoY!Zb=w^8qdp*EdK4JBQ9qPn&RgT&;joBx6!HsiY*mH;B1mMfPG&hMwcnIsYPTE-4A&?dE5=f#J%{S)!R|vtPb;f)xw%#Nb@I!z96&TwjacQ?-!#nBF>9Y8EZ2#mNPPllo?O+ya{)xizCx2zgGvnX`Z zEXJ8xe6Vd!y-0jJOUUhZz0DmT-i(VgA|P%%?j`+cK0KjNLsY%QILxqkfc2YKJ@Pr& z5e+`gMf-%z6KL5Z>S93TF#ZOOQ4RSh=I<}+P$}xr<=Ev;Rx5NhzPeP{)>97UdfT%g zrAXYwk;k}#>c2|}>tTR3{uvoM;T_jmxbdFc@`y|2uIAi`AEf}*(UEtJwzD%+Bz8nK zWeKfi?6Sz@=d;}@G!v-GR93?echyWC{$wE(&Gi@GYAq%L4wF(9Gh#|8=291{2Ehof z41<8bM&rl@z0}+g^Eq-(lIpn9RZ;7}H~t68)VL>~NsqXg4VWLA$qJK)PGBkcWypL! z&{uY;l6~dMKn{$2sdSP5;MHq4LAd+y%YBP+*Uf>MHRsY#?L6NO<6ci2(sO`8To7f! z^%SGXZ9lo0X^C@e4@)tC9IIU(JkupU7EjwssSEgt{y@J-m-)Z{5pMsp9lW4e^vyU~l$Qjt$zw4hPr)(+1H++d6a76_k4! z>1L&HaAp|$U15Yy4i5q?Bu|nSWwd(339ncB!-$WKWQI4>48$ul$U>#t`Nvbxe?A!u zc*u+p7hign0oBQTN7c|uDut6g|J?6g_!;osvKFTH8D%EVus7w&QDla<YD;c_3!$&-Wby%O zGhZ+=-aRdwS$~t}?!M87csZ!Eee>P_xECG6!{E{TD$N+r#7Z}NyGR-bRyun{YxrZmr z=tY4R);(=_XhQ*!^g7GqloL|nBakNvjo^zu#+rokLgJP|jz#&C9!j z0?);c3$Hz1MKHrI2EGej@IAW-mk17lAdG{4Ifxu#7Ta+DPO{!He)PDn^r^s?!ir43 z(X+qzWBo5)v-gK2<80^o*qNP`vska3&rJ2EdqxvX0Hd}n zW#fc=x^H|-Y3~9nrAjx*z!Q4$tY1{)MmFVL}t4ms^^Qd*<7S|C7&l zTy*|kYT%R?yBK{FRc0uslJhI;4kn~KK4T=D%a#Rm0bU>MB5A^tT^w#Fx0Hu&p@FYp>A0G@&_`|J64s^&Z{dmW zo3AZA1=?Q%Du%7>ojX!r3W1*mhVj<1|^$zjMSyDVWilJEb& zy-evuYh@vRQA6{bhYL4wZAVx%fL*s zTNyvN7$HU4#n4_jaX_-f%!lB=6s1DCeHa&zRsTj24Wo$32BD9zZl&Yxk8Q_6i<}Uj z)^wwdtZAQTM-KHS_fhi2(vOm$!`ui;aLlu_$F=;x&7p@yf}I(A+>@V6Skp;Pp_wjD zcE{A31R@$pCR}LEVm;;s-zBn=SDb(l;81u_D;rK3ECrS)rBA0v=QFUB5-y(80*zce zrCC8oCg3K@1s~P)^jsS2W1haPC(FCk>ttbQW*}D*#FB$|3qIU{*yAL)C}{1;Edqvcv_ zbBTZ?O&pts5as=YRcasL68AS)iJqL=OWH$bi|Mai?_JXaq;L%J8T8Ie;+9{+t2mOC zE79bNaGw$t&<94iJ8{d5_RsfGmLploL=SV~(7SPla|_*S{p(b`|;L z&OtIFgi^dQ8W{Yj-6KGw02F=||DD$t`w71W=fth1=@;O;YiVHOQMLNRnTItH@CSdT z4hzb@b&i)NuFLvarQ!2(w>ISiHTl-PgenH3SR0J*t1GHQBO`cEA>0HpPHkK}m{kCv zST3RJS0~KvK#xcV65(yDp*mr>d!d;nJhxUAGV4J(slexdl}MfWt6EhaA8jCn29MHf z$JY)-i`IQe5O2#|5u-CrVFd~Vvi8hBthf~M+H|O){X5~PnNsrD5ln>x*Q07Zh!gce z5^vypzEpPzLrjQT7y3`{s*WoaQR-cH%O>0H;Xs8Ck~lqo%MDwpBrdPXED)Gut3iQe z^PM^!KWbFGMHxLAYqOUOc3VjYD&)a=LtKqrfW(W`Lq{rdW;izQM<4{w+H&S_z$7Xh zxumSfrUw4=%PdLsP;k)eSeR9h4X$FCvv+TuxuNWUpsLjsPliqqf}lvHCq z9iB;Fh9ig)O0xv({oGNa$senogvAqhu^eCc{Ju+#Bobp#wM4NyQ$Co7Z95ZC6CCr*n!OJu)jf?G?*pRB z{O4E!u_&uEPA;YAHz*#G=fWu%LG9HIzgEpDDe-RMCV>5GF~{TnIceSf@a@$p`E0k^ zUjF@Ev(qzl6LoiX?o?u`S}r%7ywb%8pH47aJc)k^-WD;3g6T{Vx!sF-S1~k-s1(I;S{I8POOhiV+mwsS<@wc6Os0BR2_5q9Q+CTf+O*4iWtPO0LJT6NPpiO$-vDI76&tyJgIBVlsUQSe|asw-i>;F8YZhaZtmmI{Id~V|zI&LDLy{MH^7oZQDIg4osc8b!cqw zj>3u$a=V6yy{9$T4UX>FzJ8J;Sm9Tj($;S_Cov*gG)X=ZG$X`qKmRIqA$&5RMOIl3 z4yR{?PdxP`1Pf!|h4m!Hn)nl7ba@vAm)azQ|2MzHgq>_({lW<>D<9Mg8R=zJN?%w; z$}N3s3PoE=gBRp?$wp+|((}i$tloI3xTA`a2nsp4)j8(5|J2H4nl-Z1T^xL%a==%a zjGFBF=hclN1F)d&SFwPUEde3uJHX9w+!o!ik=_Nx?by`M-8{)@yUfzQ1fo;EXa3VMk1Is~Yd)(h3L z+6*8qGix=TSV4^LF2fJ z9*f1e`pz408g`Z^Mhje9^W=8Ni5>qx;DEOT5ZohKv6gO;-nQK#BE<6bJf~CA-A$#j z$ced^`C_O>Hx`EjsRr?x_ud5|yo3T;6IGPo3jeM9#P5U!ND#kNa1s_qrFo$7{s~Qz zBMSDNXUhpW+pmuHSn0x->e*y^^OBoQm$RkR_@PTLPA2|j1)kn{b^^Sh%VA?WIo68= z%Ognx>Y0Sqg9)`nU11nfmh;qBxq47K;;ZT|Z&rC$VTzWTNoD$I62GU~ssf+r&lVQ; zUfK1a*VW4N!n>|6pOMez@GaY{)hkIE-&@+d$CLYba;%iiY+25IXe8JI&-G>cN^mLV zj7!DmKh!AoZGP;B&TPZPQR}#Q!ajE7-WZuH`x7VUtcBC&na(1f`m9%^&bBTzXu7Ph z^N@R!-RL-tMg>@%iK-?s0iTajBOwK309q&j7z8G7%SVg3gn=Igk`~WgohiiRFwTr-M0OS@Eu zfZ)3Isq({0ZpC;|~wM z+=a5HK# z9{O3?aA?eAgN8E2z>sWI%CAG_&w8I>#siADCBw2b7W(0U%+;!FINDQ{d?d#GT1k#= z)cXhQ_`Bpb5v&ZS7-_6eDS3)ZPO(opi0fHec;_B|3k-6 zWHVe3a!q_fYl0*sHW9SP z5|xI;7b7ieO8ae68^dp<>=*Yc;a7CCz-x8atT+C644((YHRZCq8dha?F=?a-{3 z^<*}AgEyqOb3*RjzC)(+WCK*ge3G-&Mn>bV`e$z^W%9vi9>G_$)Kz-=!ntrd@wKYS za;TvAyPM+gZ;!vd(ZDQ3c~c}rMM8BzMC?Uns+2at##w!oOgdyP-~q%UPn~ge?jHwI z30_kf)K&Z}@vbyWD>`*(S&+oLJI({C#_M(-Cb6P4XucC1giY183F`o3b@CohJEv!& ztb*Xmk|5GmZ$|8RnejiW1ynZR0xnzy1Mo3h(N`f(b3u=~YUROjaqthpycckB8{JrP z0}m+EGGqB4KK_3^Y!;+hPA6DKdmQe|B^ZeFkCto^G4FeZR^>;8ME$_S@PK%aZu-tn zmr~0}Wzn{fxq_pM-bOFEQ@6O;qUH2$Hgg`PWF-bUmrzADL`RM`n$J)N)rJPSkw)H0 zC>a#$NJ&OVdeVC0DgI*5jBxVp7qlk+ZqPh8K&Zs0O?p*xEF~5a>#|-0=@o3i{ukvebd`!0}bO0JnTuYz> z{#c<$ODl0te{*n0LsJ^_#j0SKU&`x{Q0;W~C32twSH=f|y}2k~?_y8wLKtQJ1rOsi z*jXl~pm*pN?VQod1sbb`1{Q|LzOrIw$v&5rvc6E}Y%=uW7lkydTi!c?&GrEvc0J_9 za|De8#3c$J(GNDAzI$$gQ~8w{EVGMxw>^Ihxv5}I0g(?LAeEUYT9EYaFJOn^G-8=K zzAywJygPSvs*K#J<#|=fFC3qd;pp$jZdEI)Z3~wqE0_Q)kD9)D(0kcjdNPIBt2T+P zS^7|j!5s3)uy^|cDz7R?RyApPa8%&q`l+=l_*g%{YawHpb%&n-lv5QIA0k4 zhx89B)2qK{6^d`3CF7?K5m9Hm@5*%I;*ToSN;6ol{H~?zP&zN+G=H}3c24bID{R<) z3oAfQ88g6MI>X6HEq$mr}HGH#K3Pyjzk|mc@TcF&BB;Fm#$hcU! zQUC40eWDOJZXNfIyXHCP2+YH+B--xB{WM(-yGRU)uue~as987#oDUgEJa!3MJT4~2 zJ%QS^*vk_ui;_#=gz}{^uz+}%kyQy8O)F1mG=`i%p3)zux}?@hW0n~QC@A|T*|~y2 zZb>~iW67HESf;4jl3AJJj;yYgd_SjL3VQd4u*)p7LcB8dD*^V6*r~CSCdfuCN~I4p zsV%H%ze8t|V@WmBm%;cSNwpW6P_zBnK9=F#1zK7ErM7SN5FOjH0b@E=K}`akB%gUl zb<_HN31h7ONkBj3ylKvkV@_Wx>jxHqghPvaFquHIx;cwNWauX@RzcHsJ?Ts<8 zqygOLeX?4r3mwuM_x)9ZsN_R)&>S1gJ_@eaz!TnSLO6Hdih#mvGcD)wYu3C!V-+Q2<89-Q%nzOS}m&6_OKPO#gNJgXSkp@N~{q7(!!Pu1ESPk zQo;_+J2Il#2hdJffE-P}uyzrL(7-)m1AcZ9dCAT*fy5kWydiPVJOYv^U$UG5&{m@G4q{{%bn+~#1%Tq5F=Z{9b`ClF{-)q z2xPWBM6fL%S$hwZB{iWMX&^^{Q;0s4 zn;||lEi5J#9b#n?@+IGH%z+?@hanhV&Qzg{DH?>xBm^>)bo{bN)JG8c^aEVYzx=1n z-%si_!ap$h%>%C3{OJ}~D1n>=~& zEkxJyvv^%C#282s7$9IIoHY?TqtseoxyL2wB}sgsXZ)M+;ndJ*?r}G z)m%B}%8pCPsb2D+Lb)Jeta;bwUMm2p#(+qh@< zlCj4&9B}&C96oYUfuLUtx?0}ahz~I{|55xi`-K4V_p1{XR^FCLO7pj9?Z!T*{RnQF7cLzzWEJ1YcLWqB5F1^xLX0*Tli`*3{s9aU4;^&GQwsUeTIGZaEo2PoM*xiRg zS%JK(cBp^?DHX8(_T!{X!CK7GN#o>ARtYY13+e5*B}L4R3*MpN%C|5c(kUZ`NFK-% zqoQ_oMmW7TAZRRkx))sg9$p*K&f%?=_v0PRxguUXGFIw9u95CTff;0MTzP}j3*D7B zlKFj!<{HhHk0m;_G|AVh@2RB1zjh)v9bVvu=Q##gzlArFx37?6c!AU9lu*gbf1V!b zk)i-bN>K+C>o6eZ)|0(3KYjG^;d941AzJRiPoTel}SvWrlD4leMWG- zhcWm=6F9x+s>2-RK*D9NLmif#>S@wvcIbR=#2}!{7MV^8^edhN%`pL*yCs$n=N{JU z%JwfqkPz7kP*QrIMnp(Nf4Yaa@nCs zQBe&H3%`r93p~j;1rE@a5(9=lz?nwCPzDv)+-ianR_$Sf#T86S;175T)4O1z`%k2s z)Y*-oRdJqIGlSgKa3%%5OV%n{iV$e2pcPimQXtre*`16trmP4y(zIbN2#IbCOev^X z3qCb?e##c)NJ!7;F`2-1LD~z&>7*xeP}!SF`5H;iD5I53EkO5Da1Iy+Pnz%Sq+3u` zmK@$(i8(FvW|0m%(xrL;OB`ne70$4?zU_g+rL*}`0ct|-YPcp%DBgrWPZ8(kcL))|rsm%4}O<;-gvpAy( zNa9s@B8Y@7l8{j@mf&2oRyxAv8@ykTr=RO_oU&~oiCf^S7G*g}XpNJmRNAS&ai+Uk zGR1)bl&Lc>ok(kviC!dL6BfW6Xd<7>NmQHYSON^7f*fVl0CR6Tb13(?F~lY51zGa) zZ1zVeln9Jto;^*|Tul{6r`uRKIz9-~H32HLvB1dsPzxIGXdi*NWJLw)HAN`D)ax-5 z3`m^GUsb~jh6ae3rlg!pZY=7GCd$`Mi`9N%1~v(0zc_?o%-1ik#h`=L9{rro9Z5MN z2#E_!<%0Z7P@=O39;sNoxK%2-P1Z>B7M67LgK6C#ay2hIT=^ zL!EpJ?L^H~J^6nP+0})kWm(0mNITvXmo^28jD}eZ2$QRO8qmWSgtx~2GKqVItA&6C z?N1!)#WNvNoLlIEM?}OjsSMvLtE|&)!ag_pfwdB2;)5|K%*&j1QC?jEmMF}^A;ml# z$EATytU^1S2G!~CDObagLYl;>Y;i|-C{mg(ug12BDwpyEDXWA2PY;NKt|ZAkcrrUx z;oXNrI>KQWswrNZ{4}cxf_!z*cz99*YO8SlTx^^F8e7-&TZM)zJr=M!?AY2E14HN2 zQ}m<8i@Uk1qD(Nks!b-$;+m{3haJB6LH;M+PD3AzA(KRti2)PYfv9oGPHjBh&3{mP zr@ljFaNWrajk6T7eOJ^vjehWjVzd$iD!X?Rd?j6bk4>{q;oCl1YmBx;mN3 zM-5V{W@uF5UvmuNmpv=PU@c*BeONPjW56P_Zu%a{sR3PMR~+!?6nEFhsr!^451fu zS|NKc8R@{oU9qK|#STomaQr#SBO|}iZj2jr#<|AK0?ZeNA`ADl4{*+}s4)K&?xA@2P7UXD;koD`HNwVe|LqsJp>-r*5=ai5w;GJnY+khOj>Ue5G$NgCh^h5PFlUP?u0XCdPqDEd#xnUe-}TEbbn2h> z!D+^lxEB(I*~O3K%jy8NEj_quf(=gsfrI50NyhKA@O|iPb~j2bGD!1h9rluw@4pbo z7SDB7Pvc*F$Hsy4?}>g9PIuetOjpOVaB>TOBr{14xa=X>#uOD~;+iHlZ@% zuN+%BBB44c zKfl@T@5-Z^A-|C1ulEfW-naNJ#C5sJ>YQI3vrF^RMPqMvLemY?yWX@r2=Yp^J9(8Z!r98b64X|W1sFba(*GW!32A;TcnE}W zH%EetQ!mCOZvgP%%eTTZxl`-yQc1q%Fy4)GE?%2t<-wnuW1RPl#Yhzhm?D~i62!O= zu^t)n*r3d>DQs&SGgezT3#=^e$WXPnmqM}|R4Auj5-6)tfy|@?7B^*;5m8Vm42mL; zRbLni3L>J%9U*}r#MKCbAz`7hz2Pf7YzK?wpO-P4l=u*-o>n2H_? z+uqY}P;X63{uhgvU;x ze@0JWooI2lBZJtBqM&`&VJCq$V;sk}vQ=#5+m?HbmATu3dhC>?s|6|E6Iy-LinK0p zw@;tb<~#!ej+$0}{pqvzp!R3aMxV8|19;jhD<7t#UUER-#5kr{901Es~YwV~(^)`*G^9NK!R%(NC*`LE+F(ImP5(a0T22 zyD2ncF~pd#@iGBW5NAN^3pzRqbZEm~c?$Fg^!yCy8o#a7Qo`5umsD@7v{)4sQ*WYG zQK?ll)8}lXR##ClGwK6IQdJ3AN3Ez$<{M*^RROE_Z`$HzT^65xDmQPRW8T7*IqtU{ zJRjikWmo&QdjH=uG}kxeUA6IG6|U`oPvt3k<=V(t?<9Qyd=bthnw}Uu^b=0Q(VuB+ zThlg2z=8moP8)FS#RQc|fA}4FELCw2o%YX=MVS_Nja+Qv?tc?YihXl5#`C*%cMa1b zi~7VL{lHZLhG4a(R81tROEuF1K6^D$Q##GX)s!pRFU`$KNc#J`zLLa)egzGjS2Xu+hk+0sI&8BojwDsUDYC3J^;E)eudD&gIO+-#!W# zvN+Mvf_k<+&z@@rHD2itg9pP?9PQ+Qv%07f+cAtX-mQvbhV}ci(M|N7C_l9i_Kz778 zCMI_CRvnP)DaYeRP81~`rA=HqiB45w7Hr;LE1O@l*@%07&Xoqr*)N`c9B1=mWMW2j z>N0`(v?df}-f-0M0Wc zh=}_Qs%*8ZOOJC!c2JpDXh8{oYv>?~O>Na7 zOnD=Qh%QnmSgcw`=E6NRLQV)&C5kvDMu>A9{jflz17OS_ENy0$Ln=$6gK>$EocM-M zgD02UO{W%cn_qD46OEMYplv8AzVqQIm3MP|Ya`5PEBwA5c4Mmzf{ZVFG-g75kWKM- z+%4Sz?M%u`*~LO293EStI7oaufN3@gLVDW_`PGHCsE6z%i7UrZuAUYL4Nj>blPX-g z-4!GXL4lry08G3}@fsOreur~4)y611(kh+|dP=IAi%&(r?Q>J#^aB_$q3|G#C|em` zdhLOlywt6zVqk#VZb=K)8qKsCw%;ZzZ*DFhk)pPl+xFr{p8U(3Wj3~-R%0}4wBu=? zr(9#{bTdPOQQt23Yj0Qzm#ETLZ2PNVffpoU(9LFgnM{deD7rImhocJk;vxO`u9hjQ}erU7FXmc@$xQFa%}Iu^)QcdT7E)}?rFMzMO$38h80bic%+ zd`99u8yLL>J4tK$6570&Q;5iZW<)JR5r4aJSO%Na)dZGzYs|NMmt%6 zZ+gb?==ppmZB31gnwEC2>9ekL&4+s$NB$d_e{dg?KR3)_JoK5@J;!m{o6ITCCoDo7 zI2od>p=Q=}>a8diNV)cWz_JskJ1;~5af}y;4A_i-awIvU-LPEs%E}%Di?ODXz_`ni z07Z&;yU?(+us+XDm2bLydB(;4y`=uGg=zYg-y3~ck)m) zAA}c^tg`S##(abqAwa^4H^@BA1vLd92XH0@7ZJnvK^QTsf{e7eZvr6WDqb`~fQ>2Y zNC|5tc9#4LRSUtRN5ZsZL6{YRqDb*wy;ZQ-tjLvwjF}phm?$~kbONFgNt39I*75F0 zkxO^kTyGsEwRqpV8CnHww7x0$$~0dDz!B1-fy`oHvFrxJAYyF3^CI zhUt_#ca%73FlRGCJO%)|B`C>YAxWW{Vv>Uc8;(Q{Q%AX)IdG>wfFqI}tH>1<9Q%4jW0-xsM&K@CLyvMQkEWaL0cQt&(rlB?Nca$S-OBHT(= z^;9C9lnQ@{6v_-x*LgYVEoqub%xCXiZJx%ERINNhFmM*R4?lp>Y{a5xG^HC&S(EDL!9}FV1p8dSsVnc?rgr`8sBg5*VwnQ=;;Eic?z``I&_kN`T zT&W&xs={2E8WaTleptR*aTF(;m7T`Q&&ciV$zoC~i9g>uFQSw_*%ar#jCR>V>X-6sP^B0AMfns>nVxClv2aS< zLSn$8nL-(=jCNkbqvd?5t(k>ja$IR}(eXmXrF8qh$_d*o%IOc6ib zBWbUmgs0o%6A;#oJ9jiJw;SEDv(XNju(!Vy zS0*grx}go!4>x3`0g#cvkOT&{BS-2bqY}T_0Ka6Q(J*%h^uhF@iRi6pa0=a*jvWS= zDKr6d5K{=|F6$V#89MOv+?7()aC-KGI*f$E30jResT_-v?b+|MGygf1~SdQ1tpM z>xVcaW>Y%xU-~B-fMY%W-)L#*+Kil^?fZpW`f%XCfl~Uf85{-nR~@Ys@O}M4?6gEU zz>d1}+)bW70f779Ztk^G>tDxCy|&1?tADbD896C<0dmtv`KG@eGjT&5_}7%h`^&K@ zV$xdOTKFv?74Ox0U1YrGN^HW0Pqa@P=o>%MK5i7v4x{@>eQ3}CXvBYGe2{uo<$nRQ z((6Ep=7{qQRcxe%Ia|tGD}(J(xEayrY+Dj)l#1-ebQ6nR{bajJ@iLUBMni6%Ck=&4 z>vL^Ip4h$DaHdeCgN2}1DE?>*Pv7^g^k17uiZdw(sfU)6Eg}4yv1DSRv9(Am*fmYb zCT35J4XxfYtXBqK$(4}>o%pX4)Ev-dFyG?BKc5;0K7Y>pD`sDk?b;I>TXf(0WJiWF zcG=%qChZ9+PG!p2(EC}&q=Sdxmy1v_RSM#fu>geP0E#KmIv3c*9TqqazNs*+D12*`9S0OY3K~C&c6DbzhVRtb z#90**7ubO;pwwHv))wq0DiAVe)>aecyL-W>Iy1RG%{wRD-x^GsnbGfRgc+?XPtKI| zmL1gOry^MHj-7YKr4M5_35SodjtvVp#V(bKukKHD&xDfmHG9f>OE|CVeSo)+?M@^z zX!!QWOVI4nicA3Jv*x{d(dpt&FY7aLQ4L35fFVvC?!39_>@q-3aT85G@!5o5smSrtSHNJj4!ihN-VL9ROF%*Yv1WeOlSIOAJ|Fv=ODu zS66|6mKy>fNTfiCl?~QZ#1xI7gUi(F-c>=BlKkh(#vV&h4NUZanNG6=f!iuZA&}cp zX{O3kvVdWp4)Y19beJWE=t%>hY!=fNtN_ux9Ag}7)0tU#n7OIm#ERNW{3Bc9X>L22-_3{3nE@h5MWh-bl2wpR zRz~u$`s5gTKf;g){W6`}z&yXyDrzN#TyVdQ#`9-ZUkaZ-Io@{tuz#d&`&*YLF z-1_j$=?xozd~D9FgI0g;+v)b6a=JyxJ7a!n(!7I$ygSp|$qGxqa7N*3iJ7Hvh-H*Y zT(&JM62k{sN_L8wa;XK9Fj~Fa=MpR?%6KN*>m7-)3Z)}^c*}#rpdlNInu=-wzZN1y z@FN1^d;*2&N1%Fxo<3!S@Ki_ucno+`9!gXZpeiaM148uQ7DwRo7G4bx@Vqd^8wg8; zLii>3#@Shdf#4OBe0V_BWcR}R;dnBG*+`g=0b%j9(*!&X3>;7@&J-1VFsilLFwI$B zLw~N#)a4{?w;9onYWr;nshnhOPTe`%fg)TjD*9BZ43zto%3H-n-wY(#Oigi88^zCa z{X97@`fLZ10_@P&<(x(d^6}5Aow4cPt~pgy_=!>h_!TRP?PKkUR&M;s0i1GCyHx_- zeM+doITi^h9A!1ySi2w*?>hC$tRh@nRiTF}e?Slx{>8nZz%L9x^wkOiX5F)?Y16`f ztA62d_*Np-c1sb&x6}&oA8mN>VA7OZl?Ixl(5t{RSGs;h@K|Q%Sn!9ete%{nFlr~z zq7n?dqi8ej;yBK?ns%xTp_m-JFcz5ZhcKdNuTr9Vz1}#4>PT1*u364C=4Hz|^xxAc zZP~7mUfA(IYz{?TgG!WCfnng?uadscF;dW#wNdu5;(UE@{rL#2?3k# zUd^gBlWHiwsNB(XP7=|a9o38N6GR>_OYr!pyw5pkAmO%QeYv(dqf znLYD(@9z8SZP!W5a>|olD+TJrZDpk*{LZYpI0kl?$S5)H7W(W@A;QX(GY)jbdsQcU zM`Q33vRQ1Iooo638At`^GJ_vZR7vVH*EW{*&1NeRzTT!nzOv=iO(m5hTosVR5^k5m z75{Eff4r^VS~;W^Xr`Cj)2JrAOji`-^%=OE9-F)seHgra{It3vuuZx*o%N2yq=v0z ztJu~omMaN%7cVX;1MVd*iYhnuR4)R2xP??I^TL80v=p3)Skr@+qU$xQnxfRsIgyH0 z=~4an)tTnH%uDumI$fzvz!FJHEI5ORh2^7?24J2;Y7CG2@M>c-(WxnW!+p9@yZQ#= zEu0V|LdKo065Gn!3U~VKjNZ}?^18AlQi0VCB$}DQmYM1brS`+PET}61Jqm3%DDoGW zo$mX#?VMe^q7=I;06t3b!ed*1gAZmq2z4MN1^)yAE?vDt-yUi&{jn7->%?}O-8; z^n0V&6GN&W9&L$~hv5^H*GIRkV(u)oe0S>!8<3C*S$6$6hgLmJWsXR@AuG7bMG zsfL+P13d5pOJ&{c3};5*Lf4^j`$UDJQ+I4S?zb12#f$G(yof;b<+@Eg2;7Xb{*4nn zy(dOl67>K2Tii5r#%!_0Y0T%T%g;C5jCZ!SbmK}^yhwC7nDNVqe@s_nZ&(!I3j))L za-HyS%CV5Mzz>UnKk73bxSFE*Edq71B}WpGax(!(&!8>FOhzst%Y@S4qf?5o zWo4O%cl9xj`DVQqH@fbnzn03r7(;Y9DY(rG&&c0qZ2{NoAnF4?H3ZRff9H)*a zaIo@9@jW?oJ@cZ?K?vX*x5=vDaMWFxmI8=i@qkJR!I57}4%G@b`NjcAU=CT@WetiY`4=en73w&~VraKDAI|`+Uf89%(&&`>Cg?#fB_I0Z1J|aF``+mIH z(m4*8z{M3X9dcIaLpldHk&w~49XD@kX`!`~j$TO%cdF@lp&W}nl?XUo%ky1*Nxlpb z2iGUuD_q>0_qUDs#2~=4`lNzt$PCQ;aS0W@B`s9Mng8$_J-wcw<{mP3OU@z!af3~ijR75X?X?o}(w1|2Tu04w z@((d0g_~A?o)A-*Kj)9zM|}J+o3m&>8`WY4Id2Nfr}{4D(sJ_swL* zg*zjl_BN{ez+`3aHXA#l=)v6)Y>UdhVaE@Z7yh52?pnXf=kU;Ejlp2YC>Du8($KVE zH7wSu0&ghxA{+P;tTOGr5}$TzA*ZlO@Gf70d@uWl{PRH);5o=$>h96?)5!7EWn*Kz zmUtd^9Z6eKq9y4L2)IjIq9YyP^0RZ0sh`HiI;dK-1Mv_Z)TiD1+oE(ud3n>Ez?Hyr z8P!a!m~y~<{%BHC<{2eqy?uLTlwyw2J(}_3AM-uP+4j`?N6^!@JrhCiibl`dW6Dsn zPgpno+4sM%E^VCcH8LFg-6CQCCh4nJe>bM-MMre8n+u+`Fh#G=jhzGeZ>a2IWSBDh z6Qf1%f_f%wr_o35lM^seZnO5^Fs456ZV+gzH*ELKBEy{zmsrg=rjq4h^O0qK$lUu8 zFAPQrg+ClS^|puKH88vM&EMaj(L+ZB$9*=Mf-%jH8V_PSBpg`4o+e2j8vGpbjhzcR zw<>RM^QP;0xwFQT5C1p(--<2yxsB_uZziR7rpyM-(%4oa-vpW5npXonu`oWg-EI3O zJ_<&Lis%4O+2WHA_LpB_mHwmh13#ZKa?5#OEY7(#O>!R?xxuV36PQPs!gj4 zs8RBQD_~fL9l&c932upQ{NiIOV{b5LTlES0XLu4nm1g}lAA0bvBswPe)(6#syvs0|>mZtngX7R1d zdQe7YV`l&8>#}~~zKi5yr*@@V{FusR8&d0P!{HhGC?y4>QelD(BgM+XjXTU)8EM9V z;dCkcFssB37;4$e_cE49BZAdfaQz9Sk~V#V1WVqP5mIEPgY&dd85$;!I5+9SgIb9~ z=~g)o%C>pqk`tn?9@-0m$V(b%@=Ad_6g7^r7Ci}^`M&X_{d{j8R~3yNcM#ZTzE#RW zZfZd8ok$c+(cF(s@?nCH+Un=Fo zNEGPU#DMluL71ey#lbw8#|4YMVjiE0^wBpC6@uZ#bi_DKkbjCwwd;P~zWQ$g4f*M; zJMD;oh?jZW0Jt2A_%^K_;?;(+ zlzetA)8$~fIadYjVY+$=XL$^Zg-X7Wr7N%C7T@D3mRJfUdX|=3iBqVCtG!ecrMi-8 zqk446$(qbK&QW_H`tBEIIy{a+Yvh_!-+5B1M9arY^~ z?@#ZzyKdL|o(XXXMZc@;;4CNt?fu~9)|-RK8Pn-7Y4!x-nw;FRkB(k8`=1r^WWy8n zc|>UC_saqufrxITP^;^xRUg>Ps4A*D*#LE1p*-mB3c?_ecZ<0kN6S)TJ$VCrC9_&kO;sOle$i|u!&d&TbeH4{ zl*&~+S55Bf&>t!=4!Oem8xQ0=o{6-`g4{@swf<^-$X~gbNPcV-KCdOS(WB)<2=25+ z@YN6NcO+FKTq(<_E4bkszCM44d(*|n!vg|c1*$Rbm4ib4jzeaWx6+!;|GC{eUtE$i z8$M2~VoN>0zV~volZZ~P+l=9l>nj(O!C|`=Q9;UI9WQ9CPh#O*&)96TZ&>rA^F8pvj`ZQ0{<{97?7|J6 z-QB@$bDIXw@P4<|o-KSUcvql1``ns;aIkr9U%$;0(e=MTiTYhb3pQ757cw&g!9Q%~ zY!=GFRel&uz1lMvylpdiTN)dIuXJR?_66$+>xHC5m+Q9mVVkQuP*&F8E=z=AK02tp z3;@j6j{zE!oY_jHuD9YFTS|U?K&qq*F&z=`so>jXQG5r&*5?E z9b%yW$Lh?F%@3{*rxy&ewfJNWlG<)rfq>QAxAaV9{KS*^C~O-j&&yFuUrkhV6)iSJ zSAKtr$+#%2vLb1?=hmOb`lS4w&gCL~>~*HE>HPaU@9@D1v9!vj;~Ls(36dlxAyPBr z-^8UQBr|i~HOfUQAt}@5qO=qS$RH_B8i!hsAc;-DGg6SL)`|NRm4L(KlMp6d5mc>`9~U!w=NHOj zjn*j3S8pOA%VkyBLv6ZAnA(oMbzhxhEmNUuKV0-KAkv>MuIDmY_C391M1@S6=6A4r zlyMWJ2@Iq!-UnRM-&U^fEAV3L7opWkX9)IB&OU|ao)6^$RgT01ZyF)K$TUE^IN zP>q#L#ioc%gJN3P!Q>Nr;mU^)0?>_Z=*`+gz}+>uHS#Zn}D?;7g(uj{k# zA<#IGF*2AFJKk(>kurtMvJ<|@wfW;I{dsGV(dTx=fA62XMKNt1t@F>?#PT2d&J5Sh zFauuT?M94>*8j%vJ+fmUvY%QBWI@10kJ?~7tw$WBI2sO#6v-^HXh(W8%foQmSPu3D z0q4PRvOLXclo*Uk#(*L5Ms=blK{O9g&- z=sq-o&|O9NN}>Kf-??X9Qn+Qt5`UE^BQY_ znO#~PHOZ+W)End(Tde=t>91v0$5Kx@omxh4y5)G&%jq(>=0sR_?9abqjN?{-*xqj3 ze(#^CocI}*Yx){ zu3w(i$hJh%KIlt8&nUjW(wnI#(TH%D0Ljt+`DsV1lV3KUshK6c>fLIh&?G;l_58Hl zF(B$C+H??&gFnebShZnut$0tTa^+l6fX$ z2?=AVq7?KKiU36CE>4J7`g5vHtIP3u%9S?z1o#@p6pH@V%zh}s66_=!r))Ind;IsB zu@5kC;ymo+`&|;3)upF$)>D3A8*v-Q&(QqZSP%rq)4kvnr)NvnFIw4QbeSo&N%cqsbFVB303U|LYwkPkdzc!x z0{?p|^-pwB*1E(z#MDn;Gj~9thn>SVwoK0_V=zLWu5mKpy5zE4P6;^|0CHoBnS{?N zsY3!yPyd-r;5}pL3KBT5p06l*w0oT!}QLr^20p>bczoL1dBh)$nuv!xnAd^^Q+{Z^pc3jYJcN=4whP($| z6Jfy1QZAjtphFuZvve%rjz3GJ5he&UqLXBDeLDin#}1M*+I;0s_br}nrw`Ms7x4d? zQj<(24vRG%toks4=cvJFfgYo0DK-H&eL`#jzBDHS{11kUExqWvCP`E*j!K$d2>9%y z;wH%pZe{HA^!$^QDsCJ+=LVPqU}V}|WVbV;K!S*AZ(x3N4f>s7*x8@Y_rtOakAat? zYyYXqrgi^aovOeRNScyTtqs7$re&!}@fbvtqRqlyQ<}zUXhOn_sbP)AczZjIw$uiK zM$(W3xX_@rwSO8M3{+zM$l=-=n`LN-e>i-urUtkrJ4io7Z>J5@FW)e&{V_Z{4i`b~ zkO+Pd&WADi@OY3&-$V65?4di_B3lG35lQt%28Og&_#k75hNB*23})!#XhV~>Fw`Il zhNB{p9wOc~Md^?L8Ah2Ram5P?NtZ3{uE~!(VIp9E&P%74bu2W&T4g1mGl!kqE-Gnr zusv43}uvVv8B`l4R+EjQV|uDWDT-`rI_&1t~5+wV|L)tAvHwA%W}^^Oae;`WX3QQUGJhkNuN zu#2X2H(9v|G<I2unQtb{leXz{SfwX0_6iHuL@A@dUxLJ8hM6(k1lSumR2!)zwR%%mms`1TRFw$Su zV(ZUQ;IcP+L6W`?_hZjqjLs;OUCZ??>hN~PQ5rB_H^DfO-Ai|e z#52aEJk}BGDo5U`WcgQG2L#q%Hc_BRo2wL1S84ybjlF`k19sRs0|q;ZwFmat3G9m( zY5}6SlvIiwquF^gy_XNGllECsiv%Qg_(8JYXCG+)IV7MK0hZKaA{CKH$tY^PEyG4C zNp~qOOH$jcK~`W?#}qJuj7&i8t3b-P-w{4NEK+Qlr9zC^qRP5ceN(8*4Bc;e5$=&soSUg0E;if68GwM6UF{s->HD@c_Q3(_;Q6Y{m9Fogbr+l-d zS)Y4RYr%z-9RRxKGfOb{Zx$YLQO$_COx`Bn9X#fmr7I4h6jG%}-Fpe-5dme_A;=@S zv{FYQH~kKQ71Jwc8od4CIE-vU(Mt>=eMzT*2|*#Mfga6r0b9~)@{UG=_s@Z0<`w9V zTEB*fWB|s(hM~)#NbK_=Z$5v9=v?>a@%Lcou(P<}A}$YZ7B*pb;e2=mOaz~Wi(m)6 zc)aUgeBO+McZ-w{>l;%WzbyA1&kprMbTl83cJqkjh<*KoEq{ZelrIuXl=|c~W)YVg zL|f}S_xaxkhA&>TebMveh+_UA$?d83e#BG7{5B#3b9QK7^jsUhR62fsu;bHPwYYda zd|#3z9rS=VxZ&W;y4ub=TkckD>^C`N^zQYWfWRkjBAp+(g}By^oWE#y`js?#wMJ3J zI(M|}!(vHRfPjo=NnQqyu9oB_x4U=vo?5>r$*IL>!5NERlB>EHrX6G^KPi;;(*Bzh z(VqA?B;{-$!9BOYD)N$RNgN%|;IuL{WN8&yM>Hq-MfMjg@r|@3h1gV)DN=^U+K)Va zX;8sIHH3_S;3 zfT=MDsT4oiow3{9Dfcs7Mto;7e9I6)?G9!i>c^aRyiyLGGl>fv7M4= zR-PBmkK`XUz09xNT6_Am?s)|6D)wq0eVD#!34!+dm;3R~2S<02fZ*$EkNAo5Rx4G$13xh?b4s$+}lbsx6YD^9z$c&R!SOp(` zvv}{&i=W5Z`F*4vYjb@CtvJHY8{vc-D2lWw9EgQAZV?JOSzsG%rK7Z8RD@7W&)kzZ zef>vbiBq`|F`(0HyX zc_zwx+8Yz^s&#NYg#3-WtP|G!1nf1B?V znDyo>{*~{)w*h;58MH6_9b=h2l=i)`^)p;D3_)~F-G29)3w@8>04tb$LiO-yD2xTA zL1u6i1olBr(4e<4EiPyf_MbC-g$-8R1R(=pX^23G(o;YI!*>@@L2XdL1MVs)H$7Hb zEe1b;Mm<@(Qn|c}v@+5rXd4A;W|1l@-tikg905bGa{s`_9{vyNs#gIH{M9=gM}k9F zeNKClNdX5rfayvcil1&sB$9nX<2Ax+6NpY&d>o2^SuqWtg=gUfF|OON4b8`&kT%1Z5#{=K@b{>ZX*!L1ns?f{_c(IVdrr$286>h5R9!DxENLi%RxNE z@&8x{--Zr$jf2hq0n39=Ex|5BJ%F-6pm-#};g-w5un7_jf{k;kU{*ZE@uD(6_${m) z8AhPP_6lJAcvln_3Fl(z5FLqEcqRxFpvlo-c(dsfl#K@z_nHxVWq{EMMuhh$0jqMz z;3P*TV~jPSvJ1_Dp%M15U!d2&hCsvUgQ9m(`jIbDQKXCia;Y_HR@S?pKHnA7>t)5{ zS&PzN!O%>YC(WQK5rZ5aJ69G3eIM0>(6M!U{AROb}CKdLo- zUk;a^QpD`N40{Q4Dft}Ph-6<4f}W1L+=K1eLRTvL>GEW`z1e7-+p(z_f^j3WWON#a z0siHA1A-+1!A4;&x2cQ41I=6^BshRhi0NBJiIjoMA;b$WtjlEx=78wq!qPiAb`Y4O z5(EX=uN{Vw;pc1YC)1}TqU(YeNc2IL-9-VM2&Bj!3m7CoV-AiR(6^kZOPkoTU;KxbvcW%rB;BeT_>8uyFUmX9neaTMGxMBUk zo>*l?r^-#_1!j~b^_e&>V#WHHtF_pQ*cwheA!q+?`>*2{+pnzj%)I5y`Q#`?>TAoF zU=(xx6##;VoLOToFN#B6#PiztLtK=TF%($RGe0())U`n56N-x58_`hCkRsdkPGe#Z zwBHgK!8^EHd26`%Q*bRjV`=GXzQOi?vg;q{5j9#3KF3KEDeqUNDOS< zjYajF^@BrZhqAIK&HF%Kt8^WPRO-vl_6q?0=KWb&0Ejh3_htd?H5r-AD@cku5?K^e zRRCOidH;EfWQ4pdSPWB~@yIl+pGmxH()i6IX z#l3k~^0+!vHvf>qN|wACc*lIE#9eRpiOv%DO;njrF7`beT6^&A{`cl3s05{1AjN@{ zW!BR2wj+yfZe2U{EYrZeYGQqWruDw(Xff;ohv0Et{f!!b{@UvT!+ZaBj-nox<*MCW z$I?*u=bFBQ_ri~O1v=n##WDp-iV6l-Fi)}Gw3{Xvl%f=Q>t&`g0fj0v$tXj~QTpw1 zAtmY(qN-H8SHR$a&g~slsuH5z`$kkMzbKhcA}xD1Zd2~qR$&A(DxcU9w{4(Y2{e}* zcrh-F@wJ-FN~nMC0kHX7D~6-Ubntf9hYqszcxN0;vMxcuO>AanUe7yxsG?bDa&46! z3@MD3836^XeAP9)u(zUbBJX~zRdF__ST)8*ML=}Q*9AOmGNO^e&i*!AQX>6@!8rJe zdcJj|7Yk5PlC4)ReRP2#ITD)EYs9&$rt0$dP`F-&rWA#T0B;o?R}u@OMz^l|=>bk7 z@Ea{Q!hheM+-Oc97GRVnC>l+>F4~(`-xdQRi?`uh25Zx&mreD2l$K`$Bw)nbnM3aTydds_owzG+ac?Qu7U|Z*K2W><`ZF%Pd1$(ibwEc+qPf(*RP5-pVM3( zf&whgDN=yJHIt0nKnh3**icZmJ|aFYQ*b^C{67z?x_fU${Z%(y24$iX*;KF5Bu~4=?dC7nIZ>2Bi_VfSd7deQ!>UIRo z#%|M-bD#%2xs{1ab5)C{xw-XspL{pX(;a=+GmYbRb9#J`<-5$*M06w4ufSiqmCwpi z_uJp7ink`ScK>bKA*()b`5}5JvjTjV;%bM7*cVd$C1QLEOu#RmG>@hl({L-?Yb=o4ye@th-WAN8hZ`jf zM;Dmkz*CAIJv4{jQglG>Lg$uKTu102Gw{%CeE)O zMJT{1lp}}<{Cm>9T;TuKUz&Wf75wyc@`>%m+svPOgejnJQ7%WfoOm@YypDave1!#9 zv6*h?$@Mi5xVai+^)XD{9?SU0%`>BBD+X@Lq5$7Sm38xyLHFb7pOXWyBI;|H?dN;B zT(7|Yz$c4a@8x~N4-m&Y9zg)LnOv`zyTNS48o}K=f;(Tc{4OX4YnZbzAURj8g2Fan z^p9HN760YqzuM)Prtnx3t2gi9!hPtESK8;TIqsOcRr>S!55D|(Jh=v~M;ZrizTIK` zGP6S!(1c1U%ml|MjG%NV)(vRcsT0}DYVL7Km=}h>{W3-k(;jx<3`P3+d9i7oj1qrL ztecTRJ)6E5bYBDAMRV*a)g@yksI!srIZIYs83~r!cD|2S=j8Wh7VKvX1#YEe3+WLf}BJla;Z#?2@jz1S{(TY z5{}7_Ik2*R4{qp`azG+V4vnY6XP=}pmrz{+lk4j?bi|p~Ma2NmQNFKK9Q}-bN?&dM zOcGjrZ_i%-C{#H3h@1B1nMWRv&KMvxSO|^se_JfU(@;s>DDF5~b#>LIXne5|;ZO6v zBS&;H|BLQ_`Oj8rFNYXs=4$C#`K*V!zh=t9e~IrixBk?;FYzFJ(;gr<$HHm z81*jnDg&1{Ka$+oa^@>mSqeFHFssOAxLgQ8u`&QI++&5C?O-w;Z1)v;n9c*baOJt& z>2PSwcq`%)s(Optzc2-WOOh>EBW7UmGV{ z`{L+TH_3OX!N)pqQS4lO=rwL@^S@_LYX;N0#p0S(xRuNQ@jD;v^8=b^29)kWCMDD_ zqzB*wpA}WgAE)xR8KX%fQOkW*8q`sTlnLsog+h_+us9F%i3EpblS4y5UhR^2*G=^TC1Q(%8W~&H2XKo zkgrO%-VALZu5OR*lLE7A--xoM;0Q-##Wa-4qPJ&gDXZ{uaW_=4?k%IDQr%zm9Uu)r zsercfrfK~U)HNGqcg8-DtRSe@f6EFW-BN(^+bjpD4Zg_=%3F3pebwkTs19g2XWCW9 zfMLn9OFRmzV0azSbU;;&stUL#Zpfw|bU}<)?}?&3+H&RQIar9uDF^NArj{-McF2RUBrwKYrrE zyiPL}^Hki&E)&9&PFKaQGG#FlW}T&1?K+_rKzE2okp1KlE=2RH#)f&UVN6=yq_rbV z#hQw5QtZ@MIARCLHv$oSCi945HeUTBqd%MAM3cJ7Un_u)IOGi8uubhr>2W`Wy0>kl zOt#6TGFFt~Amt%RO@r>C&Ih;htA*yi+1->&wdyZ5tq;dcoAbIlX|qqam{>a3ucZyW ze%D}jP;;4GJE_zTR(dY5VM^^RE*+G!x3t&xkC4%H`n;Ib={C`ZdWnX)^tSGk znE`~qw=jpaRMp?!Ar{njCzJ$`W11+xJK3~sAHN2(l-fztYe!~D9MdK+m)vTzu&^Xg z+f(Ou(FJvzM0P?G?mqL*YV3fc%G)wNx^|7JzRteOv!;rTa6gVOSZ0}%vnXt8`d}6? zci1MI|2LcX9`&Vv2&8Vk=jz{m+yTV_WHE8v!2}c4G)=j?{D1p*%b4@}^uH>&*f#>N z1Mslo?}dYgd+W^KFgd}F0BPnw`IBCjbs5yR-rm!L4*}>Xr5~+k;xCnbi|k*T+@qmb zd40kGnpVAE_IT{5|F-HA4eQXoN%(%%!DCbXtM5L`;xpRlw?y}2$g;RYem zbO(^Z1gB0T!nQg=5XZ3;Rb1c~BUJp=nZZA2v1_@GKS;G!AMF>ppf?O|dAJO9C8>@5 zqvs)3^Nz6(kmqhJ^o^n!CvwMePU(8X6{S}uy2XmZ74n=)<$?TJ#{~HpD;F3E>qgjf66IRJy z4b!SkbYh-F9Fav;nETaKjE}Lba+)~Z4FYDA6y)Y=@`fT=VJz2Orsjgtu}^pNpA!Nq zKrmpzfd{%)wMHO7ga-aAtJw`8!h|v|q|(MZA7YYbc~Mq%({}wZPV=&E`*B|P^M3y^ zi~p|5imK^`Y1xkJ`9T=PNt)$F*=V-foo?0Z4~C=hWIC(oi{)y)+3xm-;3rxAOs^Qh7%-3Gc3moq9iM-rW>YZJFe#kVH786mKSAJH*MDs<1{bpwjbwpKkxVF z&DT-74nf%w81zV_QebPxFxLw;Ms^^zig5J%6u8k{P(o3y5zW*_?c0Xdrh5+)XRU#C zdk*-6SE9_hesW`ZoAW~3vt6`dHojUW775nUL=ccI$roI3*GK04@K}1|Ef}A8$ryd2_}gXs(7?$dMDtV_`&9oe!_Kb_R%ChgOUmY}103b?2IQ@Leao?Ee3ja_4Rb z`P3V%(ut{2YhP+*7Ca2?$mfCj?@bTm`pja>TvxpeR5Ih?vsV3j2t5(%;U>eXj-;rp zrrdfQ84kG?*rOddkscP_FoM>mf^o;avEz+sL)LDWaYGptJ{itS$T9fqT0Z4`42SkY zO*lyqd@-6qxu<5t4TGHbP}GosP8hAw9Eh@_7gHZP!G4yKgux@u!bxiGQewTu*bgE?;`;c?ZhPL{dlX7~&%zCHCzl*-ysH^_jSqg8cZog6lrh>U@m21mq&6977ZOi5nN_m_Vh${ zY$mPVa)2ysS@N^}OwfW`j_Rg$PrVA)=h%4jZU~P9ZbN5_dAWJvy=Fjl*a}Qja4j$B z#WiYkce-W{M)#H`gTkXwVU2o_Az)!o0Rl(Dx^u-1Qd>MXa3Mx;RNP1q%z#&mvAq%2 zQNV?E>h3Hf(~ov$J74;>^Z*tWed;Zgwk1hHwjCoGqm~w1e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,o,r,c,u,a,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,o=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},r=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(s-t.offsetWidth)/2:"right"===n.align&&(u=u-s+t.offsetWidth),(u=u+s+c>r("width")?r("width")-s-c:u)r()&&(i.top>f+c&&i.top<=r()?a=i.top-f-2*c:n.allowBottomOut||(a=r()-f-2*c)<0&&(a=0)),(s=n.position)&&(e.style.position=s),e.style.left=u+("fixed"===s?0:o(1))+"px",e.style.top=a+("fixed"===s?0:o())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,o,r=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.distanceY=0,n.direction="none",r.onTouchStart)&&r.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t...');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1...'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[0],'',e[1]+'",""].join("")};return['

      ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
      "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,D){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){T.path&&i.lay&&lay.layui&&lay.layui.link(T.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",o="layui-"+a+"-id",T={v:"5.6.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+T.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},C="layui-this",M="laydate-disabled",h=[100,2e5],v="layui-laydate-static",b="layui-laydate-list",d="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",L=".laydate-btns-confirm",E="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",w="layui-laydate-shade",k=function(e){var t,a=this,n=(a.index=++T.index,a.config=lay.extend({},a.config,T.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
      \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
      ","
      \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
      Please re-select",invalidDate:"Invalid date",formatError:["The date format error
      Must be followed\uff1a
      ","
      It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},k.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},k.prototype.init=function(){var r=this,d=r.config,e="static"===d.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};d.elem=lay(d.elem),d.eventElem=lay(d.eventElem),d.elem[0]&&("array"!==layui.type(d.theme)&&(d.theme=[d.theme]),d.fullPanel&&("datetime"!==d.type||d.range)&&delete d.fullPanel,r.rangeStr=d.range?"string"==typeof d.range?d.range:"-":"",r.rangeLinked=!(!d.range||!d.rangeLinked||"date"!==d.type&&"datetime"!==d.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=d.range&&("date"===d.type||"datetime"===d.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===d.rangeLinked,"array"===layui.type(d.range)&&(r.rangeElem=[lay(d.range[0]),lay(d.range[1])]),t[d.type]||(i.console&&console.error&&console.error("laydate type error:'"+d.type+"' is not supported"),d.type="date"),d.format===t.date&&(d.format=t[d.type]||t.date),r.format=s.formatArr(d.format),d.weekStart&&!/^[0-6]$/.test(d.weekStart)&&(t=r.lang(),d.weekStart=t.weeks.indexOf(d.weekStart),-1===d.weekStart)&&(d.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(u).test(t)?"\\d{"+(new RegExp(u).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(d.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(d.elem[0])||"focus"===d.trigger&&(d.trigger="click"),d.elem.attr("lay-key",r.index),d.eventElem.attr("lay-key",r.index),d.elem.attr(o,d.id),d.mark=lay.extend({},d.calendar&&"cn"===d.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},d.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof d[t])var i=d[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof d[t])a=(d[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(d[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof d[t])return d[t];d[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+d.elem.attr("lay-key"),(d.show||e)&&r.render(),e||r.events(),d.value)&&d.isInitValue&&("date"===layui.type(d.value)?r.setValue(r.parse(0,r.systemDate(d.value))):r.setValue(d.value))},k.prototype.render=function(){var a,n,i,l,r=this,d=r.config,o=r.lang(),s="static"===d.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",d.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+v:"",d.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(d.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],u=r.elemHeader=[],c=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),p=(d.zIndex&&(y.style.zIndex=d.zIndex),lay.each(new Array(2),function(e){if(!d.range&&0'+o.timeTips+""),(d.range||"datetime"!==d.type||d.fullPanel)&&p.push(''),lay.each(d.btns,function(e,t){var a=o.tools[t]||"btn";d.range&&"now"===t||(s&&"clear"===t&&(a="cn"===d.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),p.push('"),p.join(""))),d.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(d.shortcuts,function(e,t){i.push('
    • '+t.text+"
    • ")}),i.join(""))).find("li").on("click",function(e){var t=d.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),d.type),t=(lay.each(t,function(e,t){var a=[d.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+I).removeClass(M));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(C),"static"!==d.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),d.showBottom&&y.appendChild(e),lay.elem("style")),f=[],g=!0,t=(lay.each(d.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),f.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==d.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&f.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),d.shortcuts&&d.range&&f.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),f.length&&(f=f.join(""),"styleSheet"in p?(p.setAttribute("type","text/css"),p.styleSheet.cssText=f):p.innerHTML=f,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(p)),r.remove(k.thisElemDate),T.thisId=d.id,s?d.elem.append(y):(D.body.appendChild(y),r.position()),d.shade?'
      ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),k.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof d.ready&&d.ready(lay.extend({},d.dateTime,{month:d.dateTime.month+1})),r.preview()},k.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(v)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete T.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+w).remove()),t},k.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},k.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},k.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],d=!0),11t)&&(e.date=t,d=!0)},c=function(n,i,l){var r=["startTime","endTime"];i=(i.match(o.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(o[r[l]]=o[r[l]]||{}),lay.each(o.format,function(e,t){var a=parseFloat(i[e]);i[e].lengtho.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):o.getDateTime(r)o.getDateTime(s.max))&&(o.endDate=lay.extend({},s.max),i=!0),o.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},o.endTime={hours:o.endDate.hours,minutes:o.endDate.minutes,seconds:o.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,o.endDate.date=1),i&&m&&(o.setValue(o.parse()),o.hint("value "+l.invalidDate+l.formatError[1])),o.startDate=o.startDate||m&&lay.extend({},s.dateTime),o.autoCalendarModel.auto&&o.autoCalendarModel(),o.endState=!s.range||!o.rangeLinked||!(!o.startDate||!o.endDate),e&&e()),o},k.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},k.prototype.holidays=function(r,d){var e=this.config,o=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(l,e){lay.each(e,function(e,t){var a,n,i;t=t,a=r.attr("lay-ymd"),n=t.split("-"),i=a.split("-"),lay.each(n,function(e,t){n[e]=parseInt(t,10)}),lay.each(i,function(e,t){i[e]=parseInt(t,10)}),n.join("-")===i.join("-")&&r.find("div").html('"+d[2]+"")})}),this},k.prototype.startOfYear=function(e){e=new Date(e);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e},k.prototype.endOfYear=function(e){var e=new Date(e),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e},k.prototype.startOfMonth=function(e){e=new Date(e);return e.setDate(1),e.setHours(0,0,0,0),e},k.prototype.endOfMonth=function(e){var e=new Date(e),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e},k.prototype.addDays=function(e,t){e=new Date(e);return t&&e.setDate(e.getDate()+t),e},k.prototype.isDisabledYearOrMonth=function(e,t,a){for(var n=this,i=n.config,l="year"===t?n.startOfYear(e):n.startOfMonth(e),t="year"===t?n.endOfYear(e):n.endOfMonth(e),r=Math.floor((t.getTime()-l.getTime())/864e5)+1,d=0,o=0;o(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(s.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},s)),n.setFullYear(s.year,s.month,1),l=(n.getDay()+(7-a.weekStart))%7,r=T.getEndDate(s.month||12,s.year),d=T.getEndDate(s.month+1,s.year),lay.each(u,function(e,t){var a,n=[s.year,s.month];(t=lay(t)).removeAttr("class"),e"+n[2]+""),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e,rangeType:i,disabledType:"date"})}),lay(c[0]).attr("lay-ym",s.year+"-"+(s.month+1)),lay(c[1]).attr("lay-ym",s.year+"-"+(s.month+1)),"cn"===a.lang?(lay(c[0]).attr("lay-type","year").html(s.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(s.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[s.month]),lay(c[1]).attr("lay-type","year").html(s.year)),m&&(a.range?!e&&"init"===t||(o.listYM=[[(o.startDate||a.dateTime).year,(o.startDate||a.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(a.type,0).list(a.type,1),"time"===a.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[s.year,s.month+1]],o.list(a.type,0))),a.range&&"init"===t&&(o.rangeLinked?(n=o.getAsYM(s.year,s.month,i?"sub":null),o.calendar(lay.extend({},s,{year:n[0],month:n[1]}),1-i)):o.calendar(null,1-i)),a.range||(u=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(a.type)?new Date:null),index:0,time:u,disabledType:"datetime"}),o.limit({elem:lay(o.footer).find(L),index:0,time:u,disabledType:"datetime"})),o.setBtnStatus(),lay(o.shortcut).find("li."+C).removeClass(C),a.range&&!m&&"init"!==t&&o.stampRange(),o},k.prototype.list=function(n,i){var l,r,e,a,d,o,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],u=s.lang(),c=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":b+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),p=s.elemHeader[i],f=lay(p[2]).find("span"),g=s.elemCont[i||0],D=lay(g).find("."+b)[0],T="cn"===y.lang,v=T?"\u5e74":"",x=s.listYM[i]||{},w=["hours","minutes","seconds"],k=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==x[0]&&lay(t).addClass(C),t.innerHTML=l+v,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),l++}),lay(f[T?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+v+" - "+(l-1)+v)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(C),t.innerHTML=u.month[e]+(T?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"})}),lay(f[T?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+v)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[k].hours,minutes:e},{hours:s[k].hours,minutes:s[k].minutes,seconds:e}][a],index:i,rangeType:i,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(L),date:s[k],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},y.range?s[k]||(s[k]="startTime"===k?m:s.endDate):s[k]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

      "+u.time[t]+"

        "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
      ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),f=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,d=0,lay.each([e,f,t],function(e,t){t||(a[e].className+=" layui-hide",d++)}),h.className+=" laydate-time-list-hide-"+d),D&&g.removeChild(D),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(M)||(s.rangeLinked?lay.extend(m,{year:"year"===n?e:x[0],month:"year"===n?x[1]-1:e}):m[n]=e,"year"===y.type||"month"===y.type?(lay(h).find("."+C).removeClass(C),lay(this).addClass(C),"month"===y.type&&"year"===n&&(s.listYM[i][0]=e,c&&((i?s.endDate:m).year=e),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(M))})):(f=lay.elem("span",{"class":E}),o=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[k][w[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(M))return a.scrollTop=30*(e-2),!0})})},t=lay(p[2]).find("."+E),o(),f.innerHTML=y.range?[u.startTime,u.endTime][i]:u.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),p[2].appendChild(f),(D=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(M)||(y.range?s[k][w[t]]=e:m[w[t]]=e,lay(a).find("."+C).removeClass(C),lay(this).addClass(C),r(),o(),(s.endDate||"time"===y.type||"datetime"===y.type&&y.fullPanel)&&s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&D.css({overflowY:"auto",touchAction:"pan-y"})),s},k.prototype.listYM=[],k.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+b).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+E).remove()},k.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(L),d="datetime"===i.type||"time"===i.type?["hours","minutes","seconds"]:undefined;i.range&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t,disabledType:"datetime",time:d,rangeType:0})||n.limit({date:a,disabledType:"datetime",time:d,rangeType:1})?r.addClass(M):r[i?"addClass":"removeClass"](M),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},k.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=T.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},k.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},k.prototype.getDateTime=function(e){return this.newDate(e).getTime()},k.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},k.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},k.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},k.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(L).addClass(M),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(d+" "+C),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?d:C),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.rangeLinked?n.startDate:n.thisDateTime(1-a),disabledType:"date"})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(d=n.startTime,n.startTime=n.endTime,n.endTime=d),d=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},d,n.endTime)),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(d=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:d[0],month:d[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},k.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,d={datetime:function(){lay(t).hasClass(M)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(M))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(M))return("time"===n.type?a.startTime&&a.endTime&&a.newDate(a.startTime)>a.newDate(a.endTime):a.startDate&&a.endDate&&a.newDate(lay.extend({},a.startDate,a.startTime||{}))>a.newDate(lay.extend({},a.endDate,a.endTime||{})))?a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout):a.hint(i.invalidDate)}else if(lay(t).hasClass(M))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};d[e]&&d[e]()},k.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),d=l.range&&("year"===l.type||"month"===l.type),o=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(o).find(".laydate-year-list")[0],a=lay(o).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),d&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(L),date:{year:s[0]},disabledType:"datetime"})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(o).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(o).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(o).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(o).find("td.layui-this"),n):i.done(null,"change")))}}},k.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+I).addClass(M))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},k.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},k.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){T.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(o),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(D).on("mousedown",function(e){var t,a;T.thisId&&(t=s.getThis(T.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;T.thisId&&(t=s.getThis(T.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===k.thisElemDate&&(e.preventDefault(),n(t.footer).find(L)[0].click())}),n(i).on("resize",function(){if(T.thisId){var e=s.getThis(T.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},T.render=function(e){e=new k(e);return s.call(e)},T.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},T.getInst=function(e){e=s.getThis(e);if(e)return e.inst},T.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},T.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},T.close=function(e){e=s.getThis(e||T.thisId);if(e)return e.remove()},T.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},T.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(T.ready(),layui.define("lay",function(e){T.path=layui.cache.dir,l.run(lay),e(a,T)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),T}):(T.ready(),l.run(i.lay),i.laydate=T)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
      a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
      ","
      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:y.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
      t
      ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
      a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"":"";return a.zIndex=o,t([a.shade?'
      ':"",'
      '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
      ':''):"")+((1!=a.type||!e)&&a.content||"")+'
      '+(n=[],r&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
      "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
      '+e+"
      "}():"")+(a.resize?'':"")+""],s,m('
      ')),this},t.pt.creat=function(){var e,t,i,n,a=this,o=a.config,s=a.index,r="object"==typeof(f=o.content),l=m("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(t)}))};if(o.id&&m("."+u[0]).find("#"+o.id)[0])e=m("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:d.btn[0],v.closeAll("dialog");break;case 2:var f=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+s).find("."+u[5]).before(t)):l.append(e[1]),m("#"+u.MOVE)[0]||l.append(d.moveElem=i),a.layero=m("#"+u[0]+s),a.shadeo=m("#"+u.SHADE+s),o.scrollbar||d.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",f[0]),4==o.type?a.tips():(a.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||d.events.resize[a.index]||(d.events.resize[a.index]=function(){a.resize()},g.on("resize",d.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=g.height()&&(n[1]=g.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(g.height()-n[1])/2,e.offsetLeft=(g.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0g.width()&&(o=g.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||d.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),d.restScrollbar(e),c.hide())},v.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?d.restScrollbar(e):d.setScrollbar(e),r!==h&&(n.removeData(l),(o===d.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){m("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(o,s){var r,e,t,l=(i=m("."+u[0]).children("#"+o).closest("."+u[0]))[0]?(o=i.attr("times"),i):m("#"+u[0]+o),c=l.attr("type"),i=l.data("config")||{},f=i.id&&i.hideOnClose;l[0]&&(r={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[i.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return l.removeClass("layer-anim "+r),l.hide();if(c===d.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof d.end[o]&&d.end[o](),delete d.end[o],"function"==typeof s&&s(),d.events.resize[o]&&(g.off("resize",d.events.resize[o]),delete d.events.resize[o])},t=m("#"+u.SHADE+o),v.ie&&v.ie<10||!i.isOutAnim?t[f?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[f?"hide":"remove"]()},350)),i.isOutAnim&&l.addClass("layer-anim "+r),6==v.ie&&d.reselect(),d.restScrollbar(o),"string"==typeof l.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!i.isOutAnim?e():setTimeout(function(){e()},200))},v.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=m.isArray(i);m("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=m(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(m.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(m.extend({type:1,skin:"layui-layer-tab"+x("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
        '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
      ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},v.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");v.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":v.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=v.load(1,{shade:!("shade"in n)&&[.9,h,"unset"],scrollbar:!1});var t=o[r].src,d=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
      '],1','','',"
      "].join("")),n.toolbar&&t.push(['
      ','','','','','','',"
      "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
      \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
    • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,T=function(e){var i=this;i.index=++f.index,i.config=c.extend({},i.config,f.config,e),i.init()};T.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},T.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},T.prototype.init=function(e,i){var t,n=this,l=n.config,a=c(l.elem);return 1');return 0\u6682\u65e0\u6570\u636e
    • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+a+"":a,n?'
      '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
      ":'
      '+t+"
      "),""].join(""))).data("item",i),n&&(l=c('
      '),t=c("
        "),"parent"===o?(l.append(u(t,i[s.children])),a.append(l)):a.append(u(t,i[s.children]))),r.append(a))}),r},l=['
        ',"
        "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(a.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&a.elemView.length?a.elemView.html(d.content||n()):(a.elemView=c(l),a.elemView.append(d.content||n()),d.className&&a.elemView.addClass(d.className),d.style&&a.elemView.attr("style",d.style),f.thisId=d.id,a.remove(),t.append(a.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
        ':"",a.elemView.before(e),"mouseenter"===d.trigger&&a.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){a.delayRemove()})),a.position(),(h.prevElem=a.elemView).data("prevElem",d.elem),a.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),a.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.open=function(e){e=h.getThis(e);return e?(e.render(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new T(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var x=layui.$,b=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=x.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",T="layui-slider-bar",w="layui-slider-wrap",M="layui-slider-wrap-btn",L="layui-slider-tips",E="layui-slider-input-txt",Y="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=x.extend({},t.config,m.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.precision=function(){var e=this.config,e=x.map([e.min,e.max,e.step],function(e,t){e=String(e).split(".");return e[1]?e[1].length:0});return Math.max.apply(null,e)},t.prototype.render=function(){var n=this,a=n.config,e=x(a.elem);if(1a.max&&(a.value=a.max),l=(a.value-a.min)/(a.max-a.min)*100+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
        '+(a.tips?'
        ":"")+'
        '+(a.range?'
        ':"")+"
        ",l=x(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=x(i),a.range?(n.elemTemp.find("."+w).eq(0).data("value",a.value[0]),n.elemTemp.find("."+w).eq(1).data("value",a.value[1])):n.elemTemp.find("."+w).data("value",a.value),l.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var c=100*u/o;c<100&&(r+='
        ')}n.elemTemp.append(r)}function d(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+L).html(e)}function p(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+w);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function v(e){"vertical"===a.type?n.elemTemp.find("."+L).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+L).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=x('
        '),l.css("position","relative"),l.append(e),l.find("."+E).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(f),n.elemTemp.find("."+M).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(d(s=n.elemTemp.find("."+M)),v(p(s))):n.elemTemp.find("."+M).on("mouseover",function(){d(x(this));var e=p(x(this));clearTimeout(t),t=setTimeout(function(){v(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+L).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,c=u.config,d=u.elemTemp,p=function(){return"vertical"===c.type?c.height:d[0].offsetWidth},v=d.find("."+w),o=d.next(".layui-slider-input"),r=o.children("."+E).children("input").val(),m=100/((c.max-c.min)/c.step),f=u.precision(),h=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=c.range?n:l,c.change&&c.change(u.value),"done"===i&&c.done&&c.done(u.value)},y=function(e){var t=e/p()*100/m,i=Math.round(t)*m;return i=e==p()?Math.ceil(t)*m:i},g=x(['
        p()?p():t)/p()*100/m;h(t,o),r.addClass(Y),d.find("."+L).show(),e.preventDefault()},n=function(e){r.removeClass(Y),c.tipsAlways||setTimeout(function(){d.find("."+L).hide()},e)},a=function(){n&&n(b.touchEventsSupported()?1e3:0),g.remove(),c.done&&c.done(u.value),b.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},x("#LAY-slider-moving")[0]||x("body").append(g),g.on("mousemove",i),g.on("mouseup",a).on("mouseleave",a),b.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),d.on("click",function(e){var t=x("."+M),i=x(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===c.type?p()-e.clientY+i.offset().top-x(window).scrollTop():e.clientX-i.offset().left-x(window).scrollLeft())<0?0:t)>p()?p():t)/p()*100/m,t=c.range?"vertical"===c.type?Math.abs(t-parseInt(x(v[0]).css("bottom")))>Math.abs(t-parseInt(x(v[1]).css("bottom")))?1:0:Math.abs(t-v[0].offsetLeft)>Math.abs(t-v[1].offsetLeft)?1:0:0,h(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){x(this).on("click",function(){r=o.children("."+E).children("input").val();var e=((r=1==t?r-c.stepc.max?c.max:Number(r)+c.step)-c.min)/(c.max-c.min)*100/m;h(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)c.max?c.max:e,((this.value=e)-c.min)/(c.max-c.min)*100/m);h(e,0,"done")};o.children("."+E).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},m.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
        "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],r=e.elemPicker=k(['
        ','
        ','
        ','
        ','
        ','
        ',"
        ",'
        ','
        ',"
        ","
        ",'
        ','
        ','
        ',"
        ","
        ",i.predefine?(o=['
        '],layui.each(i.colors,function(e,i){o.push(['
        ','
        ',"
        "].join(""))}),o.push("
        "),o.join("")):"",'
        ','
        ','',"
        ",'
        ','','',"","
        "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(r)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+M),r=o[0].style.backgroundColor;r?(e=Y(F(r)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(r):"rgba"===o?(o=F(r),3===(r.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(r),r=280*r.slice(r.lastIndexOf(",")+1,r.length-1),i.elemPicker.find("."+D).css("left",r)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),t=n.elemPicker.find("."+E),u=n.elemPicker.find("."+T),f=n.elemPicker.find("."+D),p=e[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,y=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),m=function(e,i,o,t){n.select(e,i,o);var r=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");y.addClass(x).removeClass(P),c[0].style.background="rgb("+r.r+", "+r.g+", "+r.b+")","torgb"===a?i.val("rgb("+r.r+", "+r.g+", "+r.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+r.r+", "+r.g+", "+r.b+", "+t+")"),c[0].style.background="rgba("+r.r+", "+r.g+", "+r.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+r.r+", "+r.g+", "+r.b+", 0), rgb("+r.r+", "+r.g+", "+r.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
        '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var t=this.offsetTop,r=e.clientY;b(function(e){var i=t+(e.clientY-r),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;m(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+L.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;m(p=i,g,h,v),e.preventDefault()}),t.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),b(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight-3,r=d[0].offsetWidth-3,r=((o=r<(o=o<-3?-3:o)?r:o)+3)/260*100,o=100-((i=t<(i=i<-3?-3:i)?t:i)+3)/180*100;m(p,g=r,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top-3+L.scrollTop(),o=e.clientX-k(this).offset().left-3+L.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;m(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger(e,"mousedown")}),f.on("mousedown",function(e){var t=this.offsetLeft,r=e.clientX;b(function(e){var i=t+(e.clientX-r),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);m(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);m(p,g,h,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,m(i.h,i.s,i.b,o)})}),r.touchEventsSupported()&&layui.each([{elem:s,eventType:"click"},{elem:u,eventType:"click"},{elem:d,eventType:"mousedown"}],function(e,t){r.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var r=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+r,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,r,n,l=k.trim(d.val());-1>16,g:(65280&r)>>8,b:255&r},t=Y(n),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),L.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(t,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
        '+(i.content||"")+"
        "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
        '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
        ',"
        "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
        ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
        \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var T=layui.$,h=layui.layer,f=layui.util,l=layui.hint(),N=(layui.device(),"form"),u=".layui-form",$="layui-this",_="layui-hide",F="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return T.extend(!0,this.config,e),this},t.prototype.verify=function(e){return T.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return T(u+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,N,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=T(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;T(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=T(u+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!T(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),0===s?a=parseInt(a):0'),e=layui.isArray(i.value)?i.value:[i.value],e=T((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
        '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");T(this).hasClass(F)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,N,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(T(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var m,u="\u8bf7\u9009\u62e9",g="layui-form-select",b="layui-select-title",x="layui-select-none",k="layui-select-create-option",C="",e=e||a.find("select"),w=function(e,t){T(e.target).parent().hasClass(b)&&!t||((e=T("."+g)).removeClass(g+"ed "+g+"up"),e.hasClass("layui-select-creatable")&&e.children("dl").children("."+k).remove(),m&&C&&m.val(C)),m=null},d=function(a,e,t,c){var s,u,n,i,o,d,l,r=T(this),f=a.find("."+b),h=f.find("input"),y=a.find("dl"),v=(y.children("dd"),y.children("dt")),p=this.selectedIndex;e||(u=r.attr("lay-search"),n=!(!lay.ie||"10"!==lay.ie&&"11"!==lay.ie||!h.attr("placeholder")),i=function(){var e=a.offset().top+a.outerHeight()+5-A.scrollTop(),t=y.outerHeight(),i=y.children("dd");p=r[0].selectedIndex,a.addClass(g+"ed"),i.removeClass(_),v.removeClass(_),s=null,i.removeClass($),0<=p&&i.eq(p).addClass($),e+t>A.height()&&t<=e&&a.addClass(g+"up"),d(),n&&y.off("mousedown.select.ieph").on("mousedown.select.ieph",function(){h[0].__ieph=!0,setTimeout(function(){h[0].__ieph=!1},60)})},o=function(e){a.removeClass(g+"ed "+g+"up"),h.blur(),s=null,c&&y.children("."+k).remove(),e||l(h.val(),function(e){var t=r[0].selectedIndex;e&&(C=T(r[0].options[t]).html(),0===t&&C===h.attr("placeholder")&&(C=""),h.val(C||""))})},d=function(){var e,t,i=y.children("dd."+$);i[0]&&(e=i.position().top,t=y.height(),i=i.height(),t"+a+"
        ").text(),(i=y.children("."+k))[0]?(i.attr("lay-value",a),i.text(t)):y.append('
        '+t+"
        ")):e?y.find("."+x)[0]||y.append('

        \u65e0\u5339\u914d\u9879

        '):y.find("."+x).remove()},"keyup"),""===a&&(r.val(""),y.find("."+$).removeClass($),(r[0].options[0]||{}).value||y.children("dd:eq(0)").addClass($),y.find("."+x).remove(),c)&&y.children("."+k).remove(),void d()))},50)).on("blur",function(e){var t=r[0].selectedIndex;m=h,C=T(r[0].options[t]).text(),0===t&&C===h.attr("placeholder")&&(C=""),setTimeout(function(){l(h.val(),function(e){C||h.val("")},"blur")},200)}),y.on("click","dd",function(){var e=T(this),t=e.attr("lay-value"),i=r.attr("lay-filter");return e.hasClass(F)||(e.hasClass("layui-select-tips")?h.val(""):(h.val(e.text()),e.addClass($)),c&&e.hasClass(k)&&(e.removeClass(k),r.append('")),e.siblings().removeClass($),r.val(t).removeClass("layui-form-danger"),layui.event.call(this,N,"select("+i+")",{elem:r[0],value:t,othis:a}),o(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),T(document).off("click",w).on("click",w))};e.each(function(e,t){var i=T(this),a=i.next("."+g),n=this.disabled,l=t.value,r=T(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),c="string"==typeof i.attr("lay-creatable")&&o,t=t&&!t.value&&t.innerHTML||u,r=T(['
        ','
        ','','
        ','
        ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
        "+t.label+"
        ":'
        '+T.trim(t.innerHTML)+"
        "):s.push('
        '+T.trim(t.innerHTML||u)+"
        ")}),0===s.length&&s.push('
        \u6ca1\u6709\u9009\u9879
        '),s.join("")+"
        "),"
        "].join(""));a[0]&&a.remove(),i.after(r),d.call(this,r,n,o,c)})},checkbox:function(e){var c={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=T(this),a=i.attr("lay-skin")||"primary",n=f.escape(T.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=c[a]||c.checkbox,s=i.next("."+r[0]),o=(s[0]&&s.remove(),[]);if(i.next("[lay-checkbox]")[0]&&(s=i.next(),n=s.html()||"",1",(s={checkbox:[n[0]?"
        "+n[0]+"
        ":"primary"===a?"":"
        ",''].join(""),"switch":"
        "+((t.checked?n[0]:n[1])||"")+"
        "})[a]||s.checkbox,"
        "].join(""));i.after(l),function(a,n){var l=T(this);a.on("click",function(){var e=T(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+c.SUBTRA).removeClass(c.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],N,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var o="layui-form-radio",c=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=T(this),a=i.next("."+o),n=this.disabled,l=i.attr("lay-skin");if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();var a=f.escape(t.title||""),r=[],s=(i.next("[lay-radio]")[0]&&(a=(s=i.next()).html()||"",1",'',"
        "+a+"
        ",""].join("")));i.after(s),function(a){var n=T(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(u),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=T(this).next("."+o);this.checked=!1,e.removeClass(o+"ed"),e.children(".layui-icon").removeClass(l+" "+c[0]).addClass(c[1])}),n[0].checked=!0,a.addClass(o+"ed"),a.children(".layui-icon").addClass(l+" "+c[0]),layui.event.call(n[0],N,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,s)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?T(e).is(u)?(a=T(e),t()):e.each(function(e,t){var i=T(t);i.closest(u).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=T(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=T(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=T.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=T(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(u).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,N,"submit("+e+")",l))}),r=new t,t=T(document),A=T(window);T(function(){r.render()}),t.on("reset",u,function(){var e=T(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",u,i).on("click","*[lay-submit]",i),e(N,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,O=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,x=layui.hint(),b=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=f.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return r(e).html()}catch(t){return e}}(t)||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
        "+i+"
        ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",u=".layui-table-fixed-r",z=".layui-table-pageview",E=".layui-table-sort",A="layui-table-checked",_="layui-table-edit",M="layui-table-hover",I="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
        ','
        ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
        ","
        "].join("")},a=['',"","
        "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
        ','
        ','
        ',"
        ","{{# } }}",'
        ',"{{# if(d.data.loading){ }}",'
        ','',"
        ","{{# } }}","{{# var left, right; }}",'
        ',e(),"
        ",'
        ',a,"
        ","{{# if(left){ }}",'
        ','
        ',e({fixed:!0}),"
        ",'
        ',a,"
        ","
        ","{{# }; }}","{{# if(right){ }}",'
        ','
        ',e({fixed:"right"}),'
        ',"
        ",'
        ',a,"
        ","
        ","{{# }; }}","
        ","{{# if(d.data.totalRow){ }}",'
        ','','',"
        ","
        ","{{# } }}",'
        ','
        ',"
        "].join(""),d=f(window),F=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+D),n=t.elem=f("
        ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(b.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
        ','
        ','
        '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
        ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
        ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+I)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(z).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return x.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
        "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
        "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+A+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(z)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
        "+l+"
        ").text()}),['','
        "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
        "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){v.render(a.find(t))})},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),d=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=f(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=f.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,r=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=r(t[l.checkName]),(e=d.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](A),"radio"===i.type&&e.siblings().removeClass(A)):"radio"===i.type&&delete t[l.checkName])}),d.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(R)?t.first():t).prop("checked",r(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(E);t.layHeader.find("th").find(E).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){x.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
        ','',"
        "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
        ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),p.close(c.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],c.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
      • "+(t.fieldTitle||t.title||t.field)+"").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">
      • ')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=c.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,c.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&c.setParentCol(!t,e),c.resize(),layui.event.call(this,N,"colToggled("+u+")",{col:i,config:s}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});b.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
      • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
      • ','
      • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
      • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(c,s.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(c.layHeader.html());r.append(c.layMain.find("table").html()),r.append(c.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!f(t).children("."+I).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+u+")",f.extend({event:t,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,N,"colTool("+u+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+u+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(d.allowResize=!1,o.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||s.cellMinWidth,d.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(E),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(E+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),a=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):(c.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+u+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+u+")",r.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+u+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+_)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+_,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+u+")",l)}).on("blur","."+_,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||0'))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),d=i.children(y),i="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=p.tips(['
        ',d.html(),"
        ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:b.ios||b.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(r[t.field]=!0)}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
        '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
        ',a[H]?o.flexIconOpen:o.flexIconClose,"
        ",o.showIcon?'
        '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
        ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}),V("renderTreeTable2-"+d,function(){x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t,a,i,l,n,d=P(e);d&&(n=(t=d.getOptions()).tree,a=j.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,B.config.indexName,null),B.cache[e]=a,d.initData(a),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
        '+i.text.none+"
        "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
        ','
        ','
        ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
        ",s.edit?(a={add:'',update:'',del:''},n=['
        '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
        "):void 0):"","
        "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
        '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
        ','
        ','","
        ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
          ',"
          "].join("")},p=['
          ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
          ','",'","
          ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
          "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
        • ",'',"
        • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

          '+(t||"")+"

          ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
            ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
          "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
            "),n=1;n<=a.length;n++){var o='
          • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
          • ":i+=o}i+="
          "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(o){"use strict";var v=layui.$,e=function(o){};e.prototype.load=function(o){var i,n,r,e,c,m,l,a,s,u,f,p,t,d,y=this,h=0,g=v((o=o||{}).elem);if(g[0])return c=v(o.scrollElem||document),m="mb"in o?o.mb:50,l=!("isAuto"in o)||o.isAuto,a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",s="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=v('"),g.find(".layui-flow-more")[0]||g[s?"prepend":"append"](p),t=function(o,e){var l=u?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=v(o),p[s?"after":"before"](o),(e=0==e||null)?p.html(a):p.find("a").html(f),n=e,i=null,r&&r(),s&&(o=u?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1
          '),"function"==typeof o.done&&o.done(++h,t)})(),p.find("a").on("click",function(){v(this);n||i||d()}),o.isLazyimg&&(r=y.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),l&&c.on("scroll",function(){var l=v(this),t=l.scrollTop();e&&clearTimeout(e),!n&&g.width()&&(e=setTimeout(function(){var o=(u?l:v(window)).height(),e=u?l.prop("scrollHeight"):document.documentElement.scrollHeight;(s?t<=m:e-t-o<=m)&&!i&&d()},100))}),y},e.prototype.lazyimg=function(o){var e,m=this,a=0,s=v((o=o||{}).scrollElem||document),u=o.elem||"img",n="top"===(o.direction||"bottom"),f=o.scrollElem&&o.scrollElem!==document,p=function(e,o){var l,t=s.scrollTop(),o=t+o,i=f?e.offset().top-s.offset().top+t:e.offset().top;(n?i+e.height():i)>=t&&i<=o&&e.attr("lay-src")&&(l=e.attr("lay-src"),layui.img(l,function(){var o=m.lazyimg.elem.eq(a);e.attr("src",l).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);e.removeAttr("lay-src")}))},r=function(o,e){var l=(f?e||s:v(window)).height(),t=s.scrollTop(),i=t+l;if(m.lazyimg.elem=v(u),o)p(o,l);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
          ',D.digit(t+1)+".","
          "].join(""):"",'
          ',e||" ","
          ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
          '),C=x('
          '),r=x('
          '),_=x('
          '),u=x('
          '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
        • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
          '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
        • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
          '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file diff --git a/assets/js/sweetalert.min.js b/assets/js/sweetalert.min.js new file mode 100644 index 0000000..dc8f5e7 --- /dev/null +++ b/assets/js/sweetalert.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
          ',e.titleMarkup='\n
          \n',e.textMarkup='\n
          ',e.footerMarkup='\n
          \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n
          ',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='
          \n
          ';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n
          \n \n \n
          \n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
          \n
          \n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n
          \n\n
          \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n
          \n\n \n\n
          \n
          \n
          \n
          \n
          \n\n
          \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e=this.length||this.viewed&&t===this.index)return this;if(!this.isShown)return this.index=t,this.show();this.viewing&&this.viewing.abort();var e=this.element,n=this.options,l=this.title,o=this.canvas,s=this.items[t],a=s.querySelector("img"),r=pt(a,"originalUrl"),c=a.getAttribute("alt"),h=document.createElement("img");if(z(n.inheritedAttributes,function(t){var e=a.getAttribute(t);null!==e&&h.setAttribute(t,e)}),h.src=r,h.alt=c,k(n.view)&&T(e,"view",n.view,{once:!0}),!1===D(e,"view",{originalImage:this.images[t],index:t,image:h})||!this.isShown||this.hiding||this.played)return this;function u(){var t=i.imageData,e=Array.isArray(n.title)?n.title[1]:n.title;l.innerHTML=ot(e=k(e)?e.call(i,h,t):"".concat(c," (").concat(t.naturalWidth," × ").concat(t.naturalHeight,")"))?e.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">"):e}var d,m,r=this.items[this.index];r&&(v(r,b),r.removeAttribute("aria-selected")),f(s,b),s.setAttribute("aria-selected",!0),n.focus&&s.focus(),this.image=h,this.viewed=!1,this.index=t,this.imageData={},f(h,R),n.loading&&f(o,F),o.innerHTML="",o.appendChild(h),this.renderList(),l.innerHTML="";return T(e,Q,u,{once:!0}),this.viewing={abort:function(){p(e,Q,u),h.complete?i.imageRendering?i.imageRendering.abort():i.imageInitializing&&i.imageInitializing.abort():(h.src="",p(h,H,d),i.timeout&&clearTimeout(i.timeout))}},h.complete?this.load():(T(h,H,d=function(){p(h,B,m),i.load()},{once:!0}),T(h,B,m=function(){p(h,H,d),i.timeout&&(clearTimeout(i.timeout),i.timeout=!1),v(h,R),n.loading&&v(i.canvas,F)},{once:!0}),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(function(){v(h,R),i.timeout=!1},1e3)),this},prev:function(){var t=this.index-1;return t<0&&(t=0Math.abs(r)&&(this.pointers={},1
          ',h=(i=h.querySelector(".".concat(g,"-container"))).querySelector(".".concat(g,"-title")),n=i.querySelector(".".concat(g,"-toolbar")),l=i.querySelector(".".concat(g,"-navbar")),o=i.querySelector(".".concat(g,"-button")),a=i.querySelector(".".concat(g,"-canvas")),this.parent=e,this.viewer=i,this.title=h,this.toolbar=n,this.navbar=l,this.button=o,this.canvas=a,this.footer=i.querySelector(".".concat(g,"-footer")),this.tooltipBox=i.querySelector(".".concat(g,"-tooltip")),this.player=i.querySelector(".".concat(g,"-player")),this.list=i.querySelector(".".concat(g,"-list")),i.id="".concat(g).concat(this.id),h.id="".concat(g,"Title").concat(this.id),f(h,s.title?Dt(Array.isArray(s.title)?s.title[0]:s.title):A),f(l,s.navbar?Dt(s.navbar):A),gt(o,A,!s.button),s.keyboard&&o.setAttribute("tabindex",0),s.backdrop&&(f(i,"".concat(g,"-backdrop")),s.inline||"static"===s.backdrop||bt(a,et,"hide")),ot(s.className)&&s.className&&s.className.split(it).forEach(function(t){f(i,t)}),s.toolbar?(c=document.createElement("ul"),r=lt(s.toolbar),u=nt.slice(0,3),d=nt.slice(7,9),m=nt.slice(9),r||f(n,Dt(s.toolbar)),z(r?s.toolbar:nt,function(t,e){var i,n=r&<(t),e=r?vt(e):t,o=n&&!at(t.show)?t.show:t;!o||!s.zoomable&&-1!==u.indexOf(e)||!s.rotatable&&-1!==d.indexOf(e)||!s.scalable&&-1!==m.indexOf(e)||(i=n&&!at(t.size)?t.size:t,n=n&&!at(t.click)?t.click:t,t=document.createElement("li"),s.keyboard&&t.setAttribute("tabindex",0),t.setAttribute("role","button"),f(t,"".concat(g,"-").concat(e)),k(n)||bt(t,et,e),x(o)&&f(t,Dt(o)),-1!==["small","large"].indexOf(i)?f(t,"".concat(g,"-").concat(i)):"play"===e&&f(t,"".concat(g,"-large")),k(n)&&T(t,M,n),c.appendChild(t))}),n.appendChild(c)):f(n,A),s.rotatable||(f(h=n.querySelectorAll('li[class*="rotate"]'),R),z(h,function(t){n.appendChild(t)})),s.inline?(f(o,I),dt(i,{zIndex:s.zIndexInline}),"static"===window.getComputedStyle(e).position&&dt(e,{position:"relative"}),e.insertBefore(i,t.nextSibling)):(f(o,w),f(i,E),f(i,y),f(i,A),dt(i,{zIndex:s.zIndex}),(l=(l=ot(l=s.container)?t.ownerDocument.querySelector(l):l)||this.body).appendChild(i)),s.inline&&(this.render(),this.bind(),this.isShown=!0),this.ready=!0,k(s.ready)&&T(t,G,s.ready,{once:!0}),!1!==D(t,G)?this.ready&&s.inline&&this.view(this.index):this.ready=!1)}}])&&n(t.prototype,e),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),o}();return ct(o.prototype,r,t,At,St,Ot),o}); \ No newline at end of file