diff --git a/CONTRIBUTED.md b/CONTRIBUTED.md
index 68a22e0463..b321c917b5 100644
--- a/CONTRIBUTED.md
+++ b/CONTRIBUTED.md
@@ -42,7 +42,8 @@ luci-theme-Butterfly source: [Leo-Jo-My/luci-theme-Butterfly](https://github.com
lua-maxminddb source: [jerrykuku/lua-maxminddb](https://github.com/jerrykuku/lua-maxminddb).
package openwrt-mwol: [Mleaf/openwrt-mwol](https://github.com/Mleaf/openwrt-mwol).
package gargoyle: [ericpaulbishop/gargoyle](https://github.com/ericpaulbishop/gargoyle).
-luci-app-qos-gargoyle source: [kuoruan/luci-app-qos-gargoyle](https://github.com/kuoruan/luci-app-qos-gargoyle).
+luci-app-qos-gargoyle source: [kuoruan/luci-app-qos-gargoyle](https://github.com/kuoruan/luci-app-qos-gargoyle).
+luci-theme-rosy source: [rosywrt/luci-theme-rosy](https://github.com/rosywrt/luci-theme-rosy).
## License
### Depending on their own License.
diff --git a/package/ctcgfw/luci-theme-rosy/Makefile b/package/ctcgfw/luci-theme-rosy/Makefile
new file mode 100644
index 0000000000..29a23345f0
--- /dev/null
+++ b/package/ctcgfw/luci-theme-rosy/Makefile
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Rosy Theme
+LUCI_DEPENDS:=
+
+include $(TOPDIR)/feeds/luci/luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/cascade.css b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/cascade.css
new file mode 100644
index 0000000000..c0d96d6ecd
--- /dev/null
+++ b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/cascade.css
@@ -0,0 +1,2352 @@
+/**
+ * Rosy is a theme for LuCI. It is based on luci-theme-bootstrap
+ *
+ * luci-theme-rosy
+ * Copyright 2018 Rosy Song
+ * Copyright 2018 Yan Lan Shen
+ * Copyright 2019 TsLenMo
+ *
+ * Have a bug? Please create an issue here on GitHub!
+ * https://github.com/rosywrt/luci-theme-rosy/issues
+ *
+ * luci-theme-bootstrap:
+ * Copyright 2008 Steven Barth
+ * Copyright 2008 Jo-Philipp Wich
+ * Copyright 2012 David Menting
+ *
+ * Licensed to the public under the Apache License 2.0
+ */
+
+/*
+ * Font generate by Icomoon
+ */
+ @font-face {
+ font-family: 'icomoon';
+ src: url('fonts/font.eot');
+ src: url('fonts/font.eot') format('embedded-opentype'),
+ url('fonts/font.ttf') format('truetype'),
+ url('fonts/font.woff') format('woff'),
+ url('fonts/font.svg') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.table { display: table; position: relative; }
+.tr { display: table-row; }
+.thead { display: table-header-group; }
+.tbody { display: table-row-group; }
+.tfoot { display: table-footer-group; }
+.td, .th {
+ line-height: normal;
+ vertical-align: middle;
+ text-align: center;
+ word-break:break-all;
+ word-wrap:break-word;
+ display: table-cell;
+ padding: .8em;
+ border-bottom: 1px solid #eee;
+}
+
+
+
+.th {
+ font-weight: bold;
+}
+
+.tr.placeholder {
+ height: 4em;
+}
+
+.tr.placeholder > .td {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ text-align: center;
+ line-height: 3em;
+ background: inherit;
+}
+
+.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
+.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
+
+.col-1 { flex: 1 1 30px !important; -webkit-flex: 1 1 30px !important; }
+.col-2 { flex: 2 2 60px !important; -webkit-flex: 2 2 60px !important; }
+.col-3 { flex: 3 3 90px !important; -webkit-flex: 3 3 90px !important; }
+.col-4 { flex: 4 4 120px !important; -webkit-flex: 4 4 120px !important; }
+.col-5 { flex: 5 5 150px !important; -webkit-flex: 5 5 150px !important; }
+.col-6 { flex: 6 6 180px !important; -webkit-flex: 6 6 180px !important; }
+.col-7 { flex: 7 7 210px !important; -webkit-flex: 7 7 210px !important; }
+.col-8 { flex: 8 8 240px !important; -webkit-flex: 8 8 240px !important; }
+.col-9 { flex: 9 9 270px !important; -webkit-flex: 9 9 270px !important; }
+.col-10 { flex: 10 10 300px !important; width: 60%; -webkit-flex: 10 10 300px !important; }
+
+.cbi-button-up,
+.cbi-button-down,
+.cbi-value-helpicon,
+.showSide,
+.loading > span {
+ font-family: 'icomoon' !important;
+ speak: none;
+ font-style: normal !important;
+ font-weight: normal !important;
+ font-variant: normal !important;
+ text-transform: none !important;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
+ font-family: inherit;
+ font-weight: 400;
+ line-height: 1.1;
+ color: inherit;
+}
+
+strong {
+ font-weight: 100;
+}
+
+html {
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ font-size: 0.8rem;
+}
+
+html, body {
+ margin: 0px;
+ padding: 0px;
+ min-height: 100%;
+ font-family: Microsoft Yahei, WenQuanYi Micro Hei, sans-serif, "Helvetica Neue", Helvetica, Hiragino Sans GB;
+}
+
+.main {
+ height: 100%;
+}
+
+textarea {
+ resize: none;
+ border-radius: 20px;
+}
+
+a {
+ text-decoration: none;
+}
+
+select {
+ padding: 0.36rem 0.8rem;
+ color: #555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+}
+
+select,
+input,
+.cbi-dropdown {
+ background-color: transparent;
+ color: rgba(0, 0, 0, .87);
+ border: none;
+ border-bottom: 2px solid #eee;
+ outline: 0;
+ padding: 0;
+ box-shadow: none;
+ border-radius: 0;
+ background-image: none;
+ height: 1.8rem;
+ font-size: 0.8rem;
+}
+
+select[multiple="multiple"] {
+ height: auto;
+}
+
+code {
+ color: #0099CC;
+}
+
+abbr {
+ color: #005470;
+ text-decoration: underline;
+ cursor: help;
+}
+
+hr {
+ margin: 1rem 0;
+ border-color: #EEE;
+ opacity: 0.1;
+}
+
+header, .main {
+ width: 100%;
+ position: absolute;
+}
+
+header {
+ height: 3rem;
+ z-index: 1000;
+}
+
+footer {
+ text-align: right;
+ padding: 1rem;
+ color: #aaa;
+ font-size: 0.8rem;
+ text-shadow: 0px 0px 2px #BBB;
+}
+
+footer > a {
+ color: #aaa;
+ text-decoration: none;
+}
+
+.loading {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ z-index: 1000;
+ display: block;
+ background-color: #354057;
+ top: 0;
+ z-index: 3000;
+}
+
+.loading > span {
+ display: block;
+ text-align: center;
+ margin-top: 2rem;
+ color: #888;
+ font-size: 1.2rem;
+}
+
+.loading > span > .loading-img {
+ animation: anim-rotate 2s infinite linear;
+ margin-right: 0.2rem;
+ display: inline-block;
+}
+
+@keyframes anim-rotate {
+ 0% {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ transform: rotate(360deg)
+ }
+}
+
+.PC-hide {
+ display: none;
+}
+
+.main-left {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 10px;
+ width: 15%;
+ background-color: #7F8BA5;
+ z-index: 2000;
+ border-radius: 20px;
+ text-align: left;
+}
+
+.main-right {
+ height: 100%;
+}
+
+.pull-right {
+ float: right;
+}
+
+.pull-left {
+ float: left;
+}
+
+header {
+ display: none;
+}
+
+header .container {
+ padding: 0.5rem;
+}
+
+.danger {
+ background-color: #FA8072 !important;
+}
+
+.warning {
+ background-color: #ffffff !important;
+}
+
+.success {
+ background-color: #F24C7C !important;
+}
+
+.alert-message {
+ margin: 2rem 0 0 0;
+ padding: 1rem;
+ border: 0;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ font-family: inherit;
+ min-width: inherit;
+ overflow: auto;
+ border-radius: 20px;
+ background-color: #FFF;
+}
+
+.error {
+ color: red;
+}
+
+.alert-message > h4 {
+ margin: 0;
+ font-size: 18px;
+ display: inline-block;
+ padding: 6px 0 0 34px;
+ background: url(./no-pwd.png) no-repeat left top / 28px;
+}
+
+.alert-message > * {
+ margin: .5rem 0;
+}
+
+#maincontent > .container > div:nth-child(1).alert-message.warning > a {
+ font: inherit;
+ overflow: visible;
+ text-transform: none;
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: 400;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-image: none;
+ min-width: 6rem;
+ padding: 0.5rem 1rem;
+ font-size: 0.9rem;
+ line-height: 1.42857143;
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+ margin-top: 2rem;
+ text-decoration: inherit;
+}
+
+.main > .main-left .nav {
+ margin-top: 0.5rem;
+}
+
+.main > .main-left .nav > li a {
+ color: #fff;
+ display: block;
+}
+
+.main > .main-left .nav > li {
+ padding: 0.5rem 1rem;
+ cursor: pointer;
+}
+
+.main > .main-left .nav > .slide {
+ padding: 0;
+}
+
+.main > .main-left .nav > .slide > ul {
+ display: none;
+}
+
+.main > .main-left .nav > .slide > .menu {
+ display: block;
+ padding: 0.5rem 1rem;
+ text-decoration: none;
+ cursor: default;
+ font-size: 1.15rem;
+}
+
+.main > .main-left .nav > .slide > .menu {
+ background-color: transparent;
+ border-radius: 0 20px 20px 0;
+ width: 90%;
+}
+
+.main > .main-left .nav > .slide > .menu.active,
+.main > .main-left .nav > .slide > .menu:hover {
+ background-color: #485267;
+}
+
+.main > .main-left .nav > .slide > .slide-menu > li {
+ margin: 8px 0;
+ padding: 0.5rem 2rem;
+ width: 90%;
+ border-radius: 0 20px 20px 0;
+}
+
+.main > .main-left .nav > .slide > .slide-menu > .active {
+ background-color: #F24C7C;
+}
+
+.main > .main-left .nav > .slide > .slide-menu > li > a {
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+.main > .main-left .nav > .slide > .slide-menu > .active > a {
+ color: white;
+}
+
+.main > .main-left .nav > .slide > .slide-menu > li:hover {
+ background-color: #F24C7C;
+}
+
+.main > .main-left .nav > .slide > .slide-menu > .active:hover {
+ background-color: #F24C7C;
+ cursor: hand;
+}
+
+li {
+ list-style-type: none;
+}
+
+h1 {
+ font-size: 2rem;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #eee;
+}
+
+h2 {
+ margin: 2rem 0 0 0;
+ font-size: 1.8rem;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #eee;
+}
+
+h3 {
+ margin: 2rem 0 0 0;
+ font-size: 1.4rem;
+ padding-bottom: 10px;
+}
+
+h4 {
+ margin: 2rem 0 0 0;
+ font-size: 1.2rem;
+ padding-bottom: 10px;
+}
+
+.cbi-section {
+ margin: 1rem 0 0 0;
+ padding: 2rem;
+ border: 0;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ font-family: inherit;
+ min-width: inherit;
+ border-radius: 20px;
+ background-color: #FFF;
+
+ -webkit-overflow-scrolling: touch;
+}
+
+.cbi-section .tr:last-child .td:first-child {
+ border-bottom-left-radius: 20px;
+}
+
+.cbi-section .tr:last-child .td:last-child {
+ border-bottom-right-radius: 20px;
+}
+
+.cbi-map-descr + fieldset {
+ margin-top: 1rem;
+}
+
+.cbi-section > legend {
+ display: none !important;
+}
+
+fieldset > fieldset {
+ margin: 0;
+ padding: 0;
+ border: none;
+ box-shadow: none;
+}
+
+.cbi-section > h3:first-child,
+.panel-title {
+ width: 100%;
+ display: block;
+ line-height: 1;
+ color: #404040;
+ font-size: 1.4rem;
+ padding-bottom: 1rem;
+ margin: 0;
+}
+
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+table, .table {
+ width: 100%;
+ border: 1px solid #eee;
+ border-bottom: none;
+ border-radius: 20px;
+ background-color: #fff;
+ overflow: hidden;
+}
+
+table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th,
+.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: .5rem;
+ border-top: 1px solid #ddd;
+ white-space: nowrap;
+}
+
+.cbi-section-table-cell {
+ white-space: nowrap;
+ align-self: flex-end;
+ flex: 1 1 auto;
+}
+
+.cbi-section-table-row {
+ text-align: center;
+ margin-bottom: 1rem;
+}
+
+.cbi-section-table-row:last-child {
+ margin-bottom: 0;
+}
+
+.cbi-section-table-row > .cbi-value-field .cbi-input-select,
+.cbi-section-table-row > .cbi-value-field .cbi-input-text,
+.cbi-section-table-row > .cbi-value-field .cbi-input-password,
+.cbi-section-table-row > .cbi-value-field .cbi-dropdown {
+ width: 100%;
+}
+
+.cbi-section-table-row > .cbi-value-field [data-dynlist] > input,
+.cbi-section-table-row > .cbi-value-field input.cbi-input-password {
+ width: calc(100% - 1.5rem);
+}
+
+div > table > tbody > tr:nth-of-type(2n),
+div > .table > .tbody > .tr:nth-of-type(2n) {
+ background-color: #f9f9f9;
+}
+
+div > table > tbody > tr:nth-of-type(2n),
+div > .table > .tbody > .tr:nth-of-type(2n) {
+ background-color: #f9f9f9;
+}
+
+/* fix progress bar */
+#swaptotal > div,
+#swapfree > div,
+#memfree > div,
+#membuff > div,
+#conns > div,
+#memtotal > div {
+ width: 100% !important;
+ height: 1.2rem !important;
+ background-color: #adcdd7;
+ border: none !important;
+ border-radius: 20px;
+ overflow: hidden;
+}
+
+#swaptotal > div > div,
+#swapfree > div > div,
+#memfree > div > div,
+#membuff > div > div,
+#conns > div > div,
+#memtotal > div > div {
+ height: 100% !important;
+ border-radius: 20px;
+ background-color: #468ea4 !important;
+}
+
+#swaptotal > div > div > div,
+#swapfree > div > div > div,
+#memfree > div > div > div,
+#membuff > div > div > div,
+#conns > div > div > div,
+#memtotal > div > div > div {
+ height: 1.2rem !important;
+}
+
+#swaptotal small,
+#swapfree small,
+#memfree small,
+#membuff small,
+#conns small,
+#memtotal small {
+ color: #fff
+}
+
+/* fix multiple table */
+
+table table,
+.table .table {
+ border: none;
+}
+
+.cbi-value-field table,
+.cbi-value-field .table {
+ border: none;
+}
+
+td > table > tbody > tr > td,
+.td > .table > .tbody > .tr > .td {
+ border: none;
+}
+
+.cbi-value-field > table > tbody > tr > td,
+.cbi-value-field > .table > .tbody > .tr > .td {
+ border: none;
+}
+
+/* button style */
+
+.btn, .cbi-button {
+ -webkit-appearance: none;
+ color: rgba(0, 0, 0, 0.87);
+ background-color: #F0F0F0;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ padding: 0 0.8rem;
+ border: none;
+ border-radius: 20px;
+ cursor: pointer;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background-image: none;
+ text-align: center;
+ vertical-align: middle;
+ white-space: nowrap;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ font-size: 0.8rem;
+ width: auto;
+ display: inline-block;
+ text-decoration: none;
+}
+
+.btn:disabled,
+.cbi-button:disabled {
+ cursor: not-allowed;
+ pointer-events: none;
+ opacity: 0.60;
+ box-shadow: none;
+}
+
+.cbi-page-actions .cbi-button-apply,
+.cbi-section-actions .cbi-button-edit,
+.cbi-button-edit.important,
+.cbi-button-apply.important,
+.cbi-button-reload.important,
+.cbi-button-action.important {
+ color: #fff;
+ background-color: #F24C7C;
+}
+
+.cbi-page-actions .cbi-button-save,
+.cbi-button-add.important,
+.cbi-button-save.important,
+.cbi-button-positive.important {
+ color: #fff;
+ background-color: #468ea4;
+}
+
+.cbi-button-remove.important,
+.cbi-button-reset.important,
+.cbi-button-negative.important {
+ color: #fff;
+ background-color: #d9534f;
+}
+
+.cbi-button-find,
+.cbi-button-link,
+.cbi-button-up,
+.cbi-button-down,
+.cbi-button-neutral {
+ border: 1px solid #468ea4;
+ background-color: transparent;
+ color: #468ea4;
+}
+
+.cbi-button-edit,
+.cbi-button-apply,
+.cbi-button-reload,
+.cbi-button-action {
+ color: #F24C7C;
+ border: 1px solid #F24C7C;
+ background-color: transparent;
+}
+
+.cbi-page-actions .cbi-button-apply + .cbi-button-save,
+.cbi-button-add,
+.cbi-button-save,
+.cbi-button-positive {
+ color: #468ea4;
+ border: 1px solid #468ea4;
+ background-color: transparent;
+}
+
+.cbi-section-remove > .cbi-button,
+.cbi-button-remove,
+.cbi-button-reset,
+.cbi-button-negative {
+ color: #354057;
+ border: 1px solid #354057;
+ background-color: transparent;
+}
+
+.cbi-page-actions .cbi-button-link:first-child {
+ float: left;
+}
+
+.a-to-btn {
+ text-decoration: none;
+}
+
+/* table */
+
+.cbi-tabmenu {
+ border: 1px solid #D4D4D4;
+ border-bottom: none;
+ border-radius: 10px 10px 0 0;
+ background-color: #D4D4D4;
+}
+
+.cbi-tabmenu li {
+ display: inline-block;
+ padding: .5rem .8rem;
+ border-radius: 10px 10px 0 0;
+}
+
+.cbi-tabmenu li.cbi-tab,
+.cbi-tabmenu li.cbi-tab:hover {
+ background-color: #fff;
+}
+
+.cbi-tabmenu li:hover {
+ background-color: #f5f5f5;
+}
+
+.cbi-tabmenu li a {
+ color: #333;
+}
+
+.cbi-tabmenu + div,
+.cbi-tabmenu + embed,
+.cbi-tabmenu + form {
+ margin-top: 0;
+ border-radius: 0 0 10px 10px !important;
+ border: 1px solid #d4d4d4;
+ border-top: none;
+}
+
+.cbi-tabmenu + div > div,
+.cbi-tabmenu + form .cbi-section {
+ margin-top: 0;
+ border-radius: 0 0 10px 10px !important;
+}
+
+.tabs {
+ border-radius: 20px;
+ background-color: #fff;
+ margin-top: 1rem;
+}
+
+.tabs > li {
+ margin-right: .8rem;
+ padding: .5rem 4px;
+ position: relative;
+ display: inline-block;
+ text-align: center;
+}
+
+.tabs > li a {
+ color: #468EA4;
+ font-size: 14px;
+ position: relative;
+ z-index: 1;
+}
+.tabs > li::after {
+ content: '';
+ background-color: #cccccc82;
+ position: absolute;
+ width: 0;
+ height: 100%;
+ bottom: 0;
+ border-radius: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.tabs > li:hover::after {
+ transition: width .35s;
+ width: calc(100% + 4px);
+}
+
+.tabs > li.active::after {
+ width: calc(100% + 4px);
+ background-color: #468ea473;
+}
+
+.cbi-section-node-tabbed {
+ padding: 0;
+ margin-top: 0;
+ /*border-bottom: 1px solid #D4D4D4;
+ border-left: 1px solid #D4D4D4;
+ border-right: 1px solid #D4D4D4;*/
+}
+
+#cbi-dropbear-_dummy .table {
+ border: none;
+}
+
+#cbi-dropbear-_dummy .table .td {
+ border: none;
+}
+
+.cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
+ background-color: #f9f9f9;
+}
+
+.cbi-value-field,
+.cbi-value-description {
+ display: table-cell;
+ line-height: 1.25;
+}
+
+.cbi-value-helpicon > img {
+ display: none;
+}
+
+.cbi-value-helpicon:before {
+ content: "\f059";
+}
+
+.cbi-value-description {
+ font-size: small;
+ opacity: 0.5;
+ padding: 0.5rem 0 0 0;
+}
+
+.cbi-value-title {
+ word-wrap: break-word;
+ padding-top: 0.6rem;
+ width: 23rem;
+ float: left;
+ text-align: right;
+ padding-right: 2rem;
+ display: table-cell;
+}
+
+.cbi-value {
+ padding: 0.3rem 1rem;
+ display: inline-block;
+ width: 100%;
+}
+
+.cbi-section-table-descr > .cbi-section-table-cell {
+ border: none;
+}
+
+.td[data-title]::before {
+ content: attr(data-title) ":\20";
+ font-weight: bold;
+ text-align: left;
+ display: none;
+ padding: .25rem 0;
+ white-space: nowrap;
+}
+
+.tr.placeholder .td[data-title]::before {
+ display: none;
+}
+
+.tr[data-title]::before,
+.tr.cbi-section-table-titles.named::before {
+ content: attr(data-title) "\20";
+ font-weight: bold;
+ text-align: center;
+ display: table-cell;
+ align-self: center;
+ flex: 1 1 5%;
+ padding: .25rem;
+ white-space: normal;
+ word-wrap: break-word;
+ vertical-align: middle;
+ border-bottom: 1px solid #eee;
+}
+
+.tr[data-title]:last-child::before {
+ border-bottom-left-radius: 20px;
+}
+
+.tr[data-title]:last-child .td:first-child {
+ border-radius: 0;
+}
+
+.cbi-rowstyle-1 {
+ background-color: #f9f9f9;
+}
+
+.cbi-rowstyle-2 .cbi-button-up,
+.cbi-rowstyle-2 .cbi-button-down {
+ background-color: #FFF !important;
+}
+
+.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
+ width: auto !important;
+}
+
+.td.cbi-section-actions {
+ text-align: right;
+ vertical-align: middle;
+}
+
+.td.cbi-section-actions > * {
+ display: flex;
+}
+
+.td.cbi-section-actions > * > *,
+.td.cbi-section-actions > * > form > * {
+ flex: 1 1 4em;
+ margin: 0 1px;
+}
+
+.td.cbi-section-actions > * > form {
+ display: inline-flex;
+ margin: 0;
+}
+
+/* desc */
+.cbi-section-descr,
+.cbi-map-descr {
+ padding: 0.5rem;
+ color: #999;
+ font-size: small;
+}
+
+
+.cbi-dropdown {
+ display: inline-flex;
+ cursor: pointer;
+ position: relative;
+ padding: 0;
+ height: auto;
+}
+
+.cbi-dropdown:focus {
+ outline: 2px solid #4b6e9b;
+}
+
+.cbi-dropdown > ul {
+ margin: 0 !important;
+ padding: 0;
+ list-style: none;
+ overflow-x: hidden;
+ overflow-y: auto;
+ display: flex;
+ width: 100%;
+}
+
+.cbi-dropdown > ul.preview {
+ display: none;
+}
+
+.cbi-dropdown > .open {
+ border: 1px solid #eee;
+ flex-basis: 15px;
+ background-color: #f5f5f5;
+ color: #333;
+}
+
+.cbi-dropdown > .open,
+.cbi-dropdown > .more {
+ flex-grow: 0;
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ text-align: center;
+ line-height: 2em;
+ padding: 0 .25em;
+}
+
+.cbi-dropdown > .more,
+.cbi-dropdown > ul > li[placeholder] {
+ color: #777;
+ font-weight: bold;
+ text-shadow: 1px 1px 0px #fff;
+ display: none;
+}
+
+.cbi-dropdown > ul > li {
+ display: none;
+ padding: .25em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ flex-shrink: 1;
+ flex-grow: 1;
+ align-items: center;
+ align-self: center;
+ min-height: 20px;
+}
+
+.cbi-dropdown > ul > li .hide-open { display: initial; }
+.cbi-dropdown > ul > li .hide-close { display: none; }
+
+.cbi-dropdown > ul > li[display]:not([display="0"]) {
+ border-left: 1px solid #ccc;
+}
+
+.cbi-dropdown[empty] > ul {
+ max-width: 1px;
+}
+
+.cbi-dropdown > ul > li > form {
+ display: none;
+ margin: 0;
+ padding: 0;
+ pointer-events: none;
+}
+
+.cbi-dropdown > ul > li img {
+ vertical-align: middle;
+ margin-right: .25em;
+}
+
+.cbi-dropdown > ul > li > form > input[type="checkbox"] {
+ margin: 0;
+ height: auto;
+}
+
+.cbi-dropdown > ul > li input[type="text"] {
+ height: 20px;
+}
+
+.cbi-dropdown[open] {
+ position: relative;
+}
+
+.cbi-dropdown[open] > ul.dropdown {
+ display: block;
+ background: #f6f6f5;
+ border: 1px solid #918e8c;
+ box-shadow: 0 0 4px #918e8c;
+ position: absolute;
+ z-index: 1000;
+ max-width: none;
+ min-width: 100%;
+ width: auto;
+}
+
+.cbi-dropdown > ul > li[display],
+.cbi-dropdown[open] > ul.preview,
+.cbi-dropdown[open] > ul.dropdown > li,
+.cbi-dropdown[multiple] > ul > li > label,
+.cbi-dropdown[multiple][open] > ul.dropdown > li,
+.cbi-dropdown[multiple][more] > .more,
+.cbi-dropdown[multiple][empty] > .more {
+ flex-grow: 1;
+ display: flex;
+ align-items: center;
+}
+
+.cbi-dropdown[empty] > ul > li,
+.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
+.cbi-dropdown[multiple][open] > ul.dropdown > li > form {
+ display: block;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
+.cbi-dropdown[open] > ul.dropdown > li .hide-close { display: initial; }
+
+.cbi-dropdown[open] > ul.dropdown > li {
+ border-bottom: 1px solid #ccc;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[selected] {
+ background: #b0d0f0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li.focus {
+ background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
+}
+
+.cbi-dropdown[open] > ul.dropdown > li:last-child {
+ margin-bottom: 0;
+ border-bottom: none;
+}
+
+.cbi-dropdown[disabled] {
+ pointer-events: none;
+ opacity: .6;
+}
+
+.cbi-dropdown .zonebadge {
+ width: 100%;
+}
+
+.cbi-dropdown[open] .zonebadge {
+ width: auto;
+}
+
+
+/* luci */
+
+.hidden {
+ display: none
+}
+
+.left, .left::before {
+ text-align: left !important;
+}
+
+.right, .right::before {
+ text-align: right !important;
+}
+
+.center, .center::before {
+ text-align: center !important;
+}
+
+.top {
+ align-self: flex-start !important;
+ vertical-align: top !important;
+}
+
+.bottom {
+ align-self: flex-end !important;
+ vertical-align: bottom !important;
+}
+
+.inline {
+ display: inline;
+}
+
+.cbi-page-actions {
+ text-align: right;
+}
+
+/* input */
+.cbi-value input[type="password"],
+.cbi-value input[type="text"] {
+ min-width: 15rem;
+}
+
+/* select */
+.cbi-value-field .cbi-dropdown {
+ min-width: 15rem;
+}
+
+.cbi-value-field .cbi-input-select {
+ width: 15rem;
+}
+
+.th[data-type="button"], .td[data-type="button"],
+.th[data-type="fvalue"], .td[data-type="fvalue"] {
+ flex: 1 1 2em;
+ text-align: center;
+}
+
+.ifacebadge {
+ display: inline-flex;
+ border: 1px solid #CCCCCC;
+ padding: 0.5rem 1rem;
+ background: #fff;
+ border-radius: 20px;
+}
+
+td > .ifacebadge,
+.td > .ifacebadge {
+ background-color: #F0F0F0;
+ font-size: 0.9rem;
+}
+
+.ifacebadge > em,
+.ifacebadge > img {
+ display: inline-block;
+ margin: 0 .2rem;
+ align-self: flex-start;
+}
+
+.ifacebadge > img + img {
+ margin: 0 .2rem 0 0;
+}
+
+.network-status-table {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox {
+ margin: .5em;
+ flex-grow: 1;
+}
+
+.network-status-table .ifacebox-body {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.network-status-table .ifacebox-body > span {
+ flex: 10 10;
+}
+
+.network-status-table .ifacebox-body > div {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox-body .ifacebadge {
+ flex: 1 1 auto;
+ margin: .5em .25em 0 .25em;
+ padding: .5em;
+ min-width: 220px;
+ background-color: #fff;
+ align-items: center;
+ border-radius: 20px;
+}
+
+/*textarea*/
+
+.cbi-input-textarea {
+ width: 100%;
+ min-height: 14rem;
+ padding: 0.8rem;
+ font-size: 0.8rem;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ color: black;
+}
+
+#syslog {
+ width: 100%;
+ min-height: 15rem;
+ padding: 1rem;
+ font-size: small;
+ color: #5F5F5F;
+ margin-bottom: 20px;
+ background-color: #FFF;
+ border: none;
+}
+
+/* change */
+
+.uci-change-list {
+ font-family: monospace;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+ text-decoration: none;
+ border: 1px solid #00FF00;
+ background-color: #CCFFCC;
+ display: block;
+ padding: 2px;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+ text-decoration: none;
+ border: 1px solid #FF0000;
+ background-color: #FFCCCC;
+ display: block;
+ font-style: normal;
+ padding: 2px;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+ text-decoration: none;
+ border: 1px solid #CCCCCC;
+ background-color: #EEEEEE;
+ display: block;
+ font-style: normal;
+ padding: 2px;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+ border: none;
+ white-space: pre;
+ font-style: normal;
+ padding: 0px;
+}
+
+.uci-change-legend {
+ padding: 5px;
+}
+
+.uci-change-legend-label {
+ width: 150px;
+ float: left;
+}
+
+.uci-change-legend-label > ins,
+.uci-change-legend-label > del,
+.uci-change-legend-label > var {
+ float: left;
+ margin-right: 4px;
+ width: 10px;
+ height: 10px;
+ display: block;
+}
+
+.uci-change-legend-label var ins,
+.uci-change-legend-label var del {
+ line-height: 6px;
+ border: none;
+}
+
+.uci-change-list var,
+.uci-change-list del,
+.uci-change-list ins {
+ padding: 0.5rem;
+}
+
+/* other fix */
+#iwsvg,
+#iwsvg2,
+#bwsvg {
+ border: 1px solid #D4D4D4 !important;
+ border-top: none;
+ border-radius: 20px;
+}
+
+.ifacebox {
+ background-color: #f5f5f5;
+ display: inline-flex;
+ flex-direction: column;
+ line-height: 1.2em;
+ min-width: 100px;
+ border-radius: 20px;
+ border: 1px solid #ccc;
+}
+
+.ifacebox-head {
+ padding: .5em;
+ background: #eee;
+ border-radius: 20px 20px 0 0;
+}
+
+.ifacebox-head.active {
+ background: #90c0e0;
+}
+
+.ifacebox-body {
+ padding: .25em;
+}
+
+.cbi-image-button {
+ margin-left: 0.5rem;
+}
+
+.zonebadge {
+ padding: 0.2rem 0.5rem;
+ display: inline-block;
+ border-radius: 20px;
+}
+
+.zonebadge .ifacebadge {
+ padding: .2rem .3rem;
+ margin: 0.1rem 0.2rem;
+ border: 1px solid #6C6C6C;
+}
+
+.zonebadge > input[type="text"] {
+ padding: 0.16rem 1rem;
+ min-width: 10rem;
+ margin-top: 0.3rem;
+}
+
+.zonebadge > em,
+.zonebadge > strong {
+ margin: 0 0.2rem;
+ display: inline-block;
+}
+
+.cbi-value-field .cbi-input-checkbox,
+.cbi-value-field .cbi-input-radio {
+ margin-top: 0.5rem;
+ height: 1rem;
+}
+
+.td .cbi-input-checkbox,
+.td .cbi-input-radio {
+ margin-top: 0;
+}
+
+.cbi-value-field > input + .cbi-value-description {
+ padding: 0;
+}
+
+.cbi-value-field > ul > li {
+ display: flex;
+}
+
+.cbi-value-field > ul > li > label {
+ margin-top: 0.5rem;
+}
+
+.cbi-value-field > ul > li .ifacebadge {
+ background-color: #eee;
+ margin-left: 0.4rem;
+ margin-top: -0.5rem;
+}
+
+.cbi-section-table-row > .cbi-value-field .cbi-dropdown {
+ min-width: 7rem;
+}
+
+.cbi-section-create {
+ margin: .5rem -3px;
+ display: inline-flex;
+ align-items: center;
+}
+
+.cbi-section-create > * {
+ margin: 0.5rem;
+}
+
+.cbi-section-remove {
+ padding: 0.5rem;
+}
+
+div.cbi-value var, td.cbi-value-field var, .td.cbi-value-field var {
+ font-style: italic;
+ color: #0069D6;
+}
+
+small {
+ font-size: 90%;
+ white-space: normal;
+ line-height: 1.42857143;
+}
+
+.cbi-button-up,
+.cbi-button-down {
+ display: inline-block;
+ min-width: 0;
+ padding: 0.2rem 0.3rem;
+ font-size: 1.2rem;
+}
+
+.cbi-optionals {
+ padding: 1rem 1rem 0 1rem;
+ border-top: 1px solid #CCC;
+}
+
+.cbi-dropdown-container {
+ position: relative;
+}
+
+.cbi-tooltip-container {
+ cursor: help;
+}
+
+.cbi-tooltip {
+ position: absolute;
+ z-index: 1000;
+ left: -1000px;
+ opacity: 0;
+ transition: opacity .25s ease-out;
+ pointer-events: none;
+ box-shadow: 0 0 2px #444;
+ border-radius: 20px;
+}
+
+.cbi-tooltip-container:hover .cbi-tooltip {
+ left: auto;
+ opacity: 1;
+ transition: opacity .25s ease-in;
+}
+
+.zonebadge .cbi-tooltip {
+ padding: .25rem;
+ background: inherit;
+ margin: -1.5rem 0 0 -.5rem;
+}
+
+.zonebadge-empty {
+ background: repeating-linear-gradient(45deg,rgba(204,204,204,0.5),rgba(204,204,204,0.5) 5px,rgba(255,255,255,0.5) 5px,rgba(255,255,255,0.5) 10px);
+ color: #404040;
+}
+
+.zone-forwards {
+ display: flex;
+ min-width: 10rem;
+}
+
+.zone-forwards > * {
+ flex: 1 1 45%;
+}
+
+.zone-forwards > span {
+ flex-basis: 10%;
+ text-align: center;
+ padding: 0 .25rem;
+}
+
+.zone-forwards .zone-src,
+.zone-forwards .zone-dest {
+ display: flex;
+ flex-direction: column;
+}
+
+#diag-rc-output > pre {
+ background-color: #f5f5f5;
+ display: block;
+ padding: 8.5px;
+ margin: 0 0 18px;
+ line-height: 1.5rem;
+ -moz-border-radius: 3px;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ font-size: 1.4rem;
+ color: #404040;
+}
+
+input[name="ping"],
+input[name="traceroute"],
+input[name="nslookup"] {
+ width: 80%;
+}
+
+header > .container > .pull-right > * {
+ position: relative;
+ top: 0.45rem;
+ cursor: pointer;
+}
+
+#xhr_poll_status > .label.success {
+ background-color: #14CE14;
+}
+
+.label {
+ padding: 0.3rem 0.8rem;
+ font-size: 0.8rem;
+ color: #ffffff !important;
+ white-space: nowrap;
+ background-color: #bfbfbf;
+ -webkit-border-radius: 20px;
+ -moz-border-radius: 20px;
+ border-radius: 20px;
+ text-decoration: none;
+}
+
+.logout {
+ background-color: #354057;
+}
+
+.logout a {
+ color: #fff;
+}
+
+.notice {
+ background-color: #468EA4;
+}
+
+.showSide {
+ display: none;
+}
+
+.darkMask {
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ background-color: rgba(0, 0, 0, 0.56);
+ content: "";
+ z-index: 99;
+ display: none;
+}
+
+/* fix Main Login*/
+.login {
+ background: #fff url(./loginBG.png) no-repeat center center / cover;
+}
+
+.login > .main > .main-left {
+ display: none;
+}
+
+.login > .main > .main-right {
+ padding-top: 5rem;
+ width: 100%;
+}
+
+.login .main-right .logoImg > .brand {
+ display: block;
+ padding: 1rem 0;
+ font-size: 24px;
+ color: #fff;
+}
+
+.login > .main fieldset {
+ padding: 0.5rem;
+ margin-bottom: 1rem;
+ display: inline;
+ background: none;
+ border: none;
+ box-shadow: none;
+ overflow: hidden;
+}
+
+.login > .main .cbi-value-title {
+ width: 7rem;
+}
+
+.login > .main #maincontent {
+
+ text-align: center;
+}
+
+.login > .main .container {
+ margin: 2rem auto 0;
+ width: 30%;
+ max-width: 600px;
+ min-width: 500px;
+}
+
+.login .alert-message {
+ margin: 0;
+ padding: 2rem;
+ background: #3E4A62 !important;
+ border: 1px solid #4A5368;
+ border-radius: 20px;
+ color: #fff;
+ font-size: 14px;
+}
+
+.login .alert-message p {
+ line-height: 24px;
+}
+
+.login .alert-message a {
+ background: transparent;
+ color: #fff;
+ border: 1px solid #fff;
+ font-size: 16px;
+ padding: 8px 18px;
+ border-radius: 20px;
+}
+
+.login .main-right h2 {
+ color: #fff;
+ border: none;
+}
+.login .main-right .cbi-map-descr {
+ padding-top: 0;
+}
+
+.login .main-right .cbi-section {
+ margin: 0;
+ padding: 0;
+ background-color: transparent;
+}
+
+.login > .main .cbi-value {
+ padding: 0;
+ display: block;
+}
+
+.login > .main .cbi-value > .cbi-value-title {
+ display: none;
+}
+
+.login > .main .cbi-value .cbi-value-field {
+ display: block;
+ position: relative;
+}
+
+.login > .main .cbi-value-last .cbi-value-field > div {
+ height: 24px;
+ width: 24px;
+ display: inline-block;
+ background: url(./op-eye.png) no-repeat center center / cover;
+ position: absolute;
+ top: 8px;
+ right: 12px;
+}
+
+.login > .main .cbi-value-last .cbi-value-field.op-eye > div {
+ background-image: url(./cl-eye.png);
+}
+
+.login > .main .cbi-value .cbi-input-text {
+ margin: 0 0 16px;
+ padding-left: 36px;
+ width: 100%;
+ height: 42px;
+ border: 1px solid #556270;
+ border-radius: 20px;
+ background: #fff no-repeat 11px center / 19px;
+}
+
+.login > .main .cbi-value .cbi-input-text {
+ background-image: url(./user.png);
+}
+
+.login > .main .cbi-value-last .cbi-input-text {
+ background-image: url(./pwd.png);
+}
+
+.login > .main form > .cbi-page-actions {
+ width: 100%;
+}
+
+.login > .main form > .cbi-page-actions input {
+ width: 50%;
+ border: none;
+ height: 38px;
+ color: #fff;
+}
+
+.login > .main form > .cbi-page-actions .cbi-button-apply {
+ border-radius:20px 0 0 20px;
+}
+
+.login > .main form > .cbi-page-actions .cbi-button-reset {
+ margin-left: -4px;
+ border-radius: 0 20px 20px 0;
+ background-color: #8A4568;
+}
+
+.login footer {
+ bottom: 0;
+ position: absolute;
+ width: 100%;
+}
+
+/* logged in */
+.logged-in header {
+ display: block;
+ position: fixed;
+ top: 1rem;
+ right: 1rem;
+ border: 1px solid #ddd;
+ background-color: #fff;
+ border-radius: 20px;
+ width: calc(85% - 20px - 2rem);
+}
+
+.logged-in header .container {
+ height: 100%;
+}
+
+.logged-in .main {
+ height: auto;
+ text-align: right;
+ background-color: #EBF1F6;
+ min-height: 100%;
+}
+
+.logged-in .main-left .nav-container {
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ bottom: 10px;
+ background-color: #354057;
+ width: 100%;
+ border-radius: 20px;
+}
+
+.logged-in .main-left .nav-container .brand {
+ padding: 24px 0;
+ margin: 0 16px 10px;
+ display: block;
+ color: #fff;
+ font-size: 18px;
+ border-bottom: 1px solid #fff;
+ text-align: center;
+}
+
+.logged-in .main-left .nav-container .navbar-container {
+ position: absolute;
+ overflow: hidden;
+ bottom: 10px;
+ top: 82px;
+ width: 100%;
+ height: calc(100% - 92px);
+}
+
+.logged-in .main-right {
+ padding: 4rem 1rem 0;
+ width: calc(85% - 20px);
+ display: inline-block;
+ text-align: left;
+}
+
+.logged-in .main-right .logoImg {
+ display: none;
+}
+
+.logged-in .main-right .alert-message h4,
+.logged-in .main-right .alert-message > * {
+ margin: .8rem 0;
+}
+
+.logged-in .main-right .alert-message a {
+ background-color: #468EA4;
+ color: #fff;
+ padding: .5rem .8rem;
+ font-size: 16px;
+}
+
+.logged-in .main-right .cbi-page-actions {
+ margin-top: 1rem;
+}
+
+/* fix status overview */
+
+.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2) {
+ white-space: normal;
+}
+
+/* fix status processes */
+
+.node-status-processes > .main .table .tr .td:nth-child(3) {
+ white-space: normal;
+}
+
+.node-status-iptables > .main div > .cbi-map > form {
+ margin: 2rem 2rem 0 0;
+}
+
+/* fix system reboot */
+
+.node-system-reboot > .main > .main-right p,
+.node-system-reboot > .main > .main-right h3 {
+ padding-left: 2rem;
+}
+
+/* fix Services Network Shares*/
+.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title {
+ margin-bottom: 1rem;
+ width: auto;
+}
+
+.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field {
+ display: list-item;
+}
+
+.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description {
+ padding-top: 1rem;
+}
+
+/* fix System Software*/
+.node-system-packages > .main table tr td:nth-child(1) {
+ width: auto !important;
+}
+
+.node-system-packages > .main table tr td:nth-last-child(1) {
+ white-space: normal;
+ font-size: small;
+ color: #404040;
+}
+
+.node-system-packages > .main .cbi-value > pre {
+ background-color: #eee;
+ padding: 0.5rem;
+ overflow: auto;
+}
+
+.node-status-iptables fieldset,
+.node-system-packages fieldset,
+.node-system-flashops fieldset {
+ margin-top: 0;
+}
+
+.node-system-flashops form.inline + form.inline {
+ margin-left: 0;
+}
+
+#cbi-firewall-redirect table *,
+#cbi-network-switch_vlan table *,
+#cbi-firewall-zone table * {
+ font-size: small;
+}
+
+#cbi-firewall-redirect table input[type="text"],
+#cbi-network-switch_vlan table input[type="text"],
+#cbi-firewall-zone table input[type="text"] {
+ width: 5rem;
+}
+
+#cbi-firewall-redirect table select,
+#cbi-network-switch_vlan table select,
+#cbi-firewall-zone table select {
+ min-width: 3.5rem;
+}
+
+#cbi-network-switch_vlan .th,
+#cbi-network-switch_vlan .td {
+ flex-basis: 12%;
+}
+
+/* language fix */
+body.lang_pl.login .cbi-value-title {
+ width: 12rem;
+}
+
+/* applyreboot fix */
+
+#applyreboot-container {
+ margin: 2rem;
+}
+
+#applyreboot-section {
+ margin: 2rem;
+ line-height: 300%;
+}
+
+@media screen and (max-width: 1440px) {
+ .main-left {
+ min-width: 230px;
+ }
+ .logged-in .main-right {
+ width: calc(100% - 250px);
+ }
+ .logged-in header {
+ width: calc(100% - 250px - 2rem);
+ }
+}
+
+@media screen and (max-width: 992px) {
+ .login {
+ background: #354057;
+ }
+
+ .logged-in .main-left {
+ width: 0;
+ position: fixed;
+ width: 0;
+ background-color: #00000082;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ border-radius: 0;
+ min-width: 0;
+ overflow: hidden;
+ }
+
+ .logged-in .main-left .nav-container {
+ width: 50%;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ border-radius: 0;
+ }
+
+ .logged-in .main-right {
+ width: 100%;
+ }
+
+ .logged-in header {
+ width: calc(100% - 2rem);
+ }
+
+ .showSide {
+ padding: 0.1rem;
+ margin-right: 0.5rem;
+ display: inline-block;
+ }
+
+ .showSide:before {
+ content: "";
+ height: 20px;
+ width: 26px;
+ background: url(./menu-logo.png) no-repeat center center / cover;
+ display: inline-block;
+ }
+
+ .login .showSide {
+ display: none !important;
+ }
+
+ .cbi-value-title {
+ width: 9rem;
+ padding-right: 1rem;
+ }
+
+ .node-network-diagnostics > .main .cbi-map fieldset > div * {
+ width: 100% !important;
+ }
+
+ .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] {
+ margin: 3rem 0 0 0 !important;
+ }
+
+ .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] {
+ margin: 0 !important;
+ }
+
+ .node-network-diagnostics > .main .cbi-map fieldset > div select,
+ .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] {
+ margin: 1rem 0 0 0;
+ }
+
+ .node-network-diagnostics > .main .cbi-map fieldset > div {
+ width: 100% !important;
+ }
+
+ #diag-rc-output > pre {
+ font-size: 1rem;
+ }
+
+ .login > .main .cbi-value-title {
+ text-align: left;
+ }
+
+ .cbi-section {
+ padding: 1rem;
+ }
+
+ table, .table {
+ border-bottom: 1px solid #eee;
+ }
+
+ .tr {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ border-bottom: 1px solid #eee;
+ }
+
+ .tr:last-child {
+ border-bottom: none;
+ }
+
+ .th, .td {
+ flex: 2 2 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-wrap: break-word;
+ display: inline-block;
+ border: none;
+ }
+
+ .cbi-section .tr:last-child .td:first-child,
+ .cbi-section .tr:last-child .td:last-child {
+ border-radius: 0;
+ }
+
+ .td select,
+ .td input[type="text"] {
+ word-wrap: normal;
+ width: 100%;
+ }
+
+ .td [data-dynlist] > input,
+ .td input.cbi-input-password {
+ width: calc(100% - 1.5rem);
+ }
+
+ .td[data-type="button"],
+ .td[data-type="fvalue"] {
+ flex: 1 1 12.5%;
+ text-align: left;
+ }
+
+ .th.cbi-value-field,
+ .td.cbi-value-field,
+ .th.cbi-section-table-cell,
+ .td.cbi-section-table-cell {
+ flex-basis: auto;
+ }
+
+ .cbi-section-table-row {
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row;
+ justify-content: space-between;
+ }
+
+ .td.cbi-value-field,
+ .cbi-section-table-cell {
+ text-align: center;
+ display: inline-block;
+ flex: 10 10 auto;
+ }
+
+ .td.cbi-section-actions {
+ text-align: right;
+ align-self: flex-end;
+ vertical-align: bottom;
+ }
+
+ .tr.table-titles,
+ .tr.cbi-section-table-titles,
+ .tr.cbi-section-table-descr {
+ display: none;
+ }
+
+ .tr[data-title]::before,
+ .tr.cbi-section-table-titles.named::before {
+ display: block;
+ flex: 1 1 100%;
+ background: #eef;
+ font-size: .9rem;
+ border-bottom: 1px solid rgba(0, 0, 0, .26);
+ }
+
+ .td[data-title] {
+ text-align: left;
+ }
+
+ .td[data-title]::before {
+ display: block;
+ }
+
+ .hide-sm,
+ .hide-xs {
+ display: none;
+ }
+
+ /* The scroll bar of the navigation bar is compatible with each browser. */
+ /* Google */
+ .main-left .navbar-container::-webkit-scrollbar {
+ width: 6px;
+ background: transparent;
+ }
+
+ .main-left .navbar-container::-webkit-scrollbar-button {
+ display: none;
+ }
+
+ .main-left .navbar-container::-webkit-scrollbar-thumb {
+ background-color: #ffffff61;
+ border-radius: 10px;
+ }
+
+ .main-left .navbar-container::-webkit-scrollbar-thumb {
+ background-color: #839dd67a;
+ border-radius: 10px;
+ }
+
+ .main-left .navbar-container:hover::-webkit-scrollbar-thumb {
+ background-color: #839dd67a;
+ }
+
+ /* IE */
+ .main-left .navbar-container {
+ scrollbar-track-color: transparent;
+ scrollbar-face-color: #839dd67a;
+ scrollbar-arrow-color: transparent;
+ scrollbar-3dlight-color: transparent;
+ scrollbar-highlight-color: transparent;
+ scrollbar-shadow-color: transparent;
+ scrollbar-darkshadow-color: transparent;
+ scrollbar-base-color: transparent;
+ }
+
+ .main-left .navbar-container:hover {
+ scrollbar-face-color: #839dd67a;
+ }
+
+ .mobile-hide {
+ display: none;
+ }
+
+ .logged-in .main-left .nav-container .navbar-container {
+ overflow-y: scroll;
+ }
+}
+
+@media screen and (max-width: 480px) {
+ .logged-in .main-left .nav-container {
+ width: 80%;
+ }
+
+ fieldset {
+ padding: 1rem;
+ margin: 1rem 0 0 0;
+ }
+
+ .tabs {
+ margin: 0 -1rem;
+ }
+
+ .login #maincontent > .container {
+ margin: 0 1rem 1.5rem 1rem;
+ }
+
+ .login > .main .container {
+ margin: 0 auto;
+ min-width: auto;
+ width: 90%;
+ }
+
+ .main > .main-left .nav > .slide > .menu {
+ font-size: 1.3rem;
+ }
+
+ .main > .main-left .nav > .slide > .slide-menu > li > a {
+ font-size: 1.1rem;
+ }
+
+ .cbi-value-title {
+ width: 100%;
+ min-width: 0rem !important;
+ display: block;
+ margin-top: 1rem;
+ margin-bottom: 0.5rem;
+ text-align: left;
+ }
+
+ .cbi-value-field, .cbi-value-description {
+ width: 100%;
+ }
+
+ .cbi-value > .cbi-value-field {
+ display: inline-block;
+ }
+
+ .cbi-tabmenu > li, .tabs > li {
+ padding: 0.6rem 0rem;
+ }
+
+ .cbi-tabmenu > li > a, .tabs > li > a {
+ padding: 0.2rem 0.3rem;
+ font-size: 0.9rem;
+ }
+
+ .cbi-page-actions > div > input {
+ display: none;
+ }
+
+ .login > .main .container {
+ padding: 0.5rem 1rem 2rem 1rem;
+ }
+
+ .login > .main .cbi-value {
+ padding: 0;
+ }
+
+ .login > .main form > div:nth-last-child(1) {
+ margin-top: 2rem;
+ }
+
+ .login > .main .cbi-value-title {
+ width: 100% !important;
+ font-size: 1.2rem;
+ }
+
+ .login > .main fieldset {
+ margin: 0;
+ padding: 0.5rem;
+ }
+
+ .login .alert-message a {
+ white-space: normal;
+ }
+
+ h2 {
+ font-size: 2rem;
+ }
+
+ .tabs > li > a {
+ font-size: 0.9rem;
+ }
+
+ select,
+ input {
+ font-size: 0.9rem;
+ }
+
+ .panel-title {
+ font-size: 1.4rem;
+ padding-bottom: 1rem;
+ }
+
+ .node-system-packages > .main .cbi-value.cbi-value-last > div {
+ width: 100% !important;
+ }
+
+ .node-system-packages > .main .cbi-value .cbi-value-field input {
+ width: 100%;
+ }
+
+ .node-status-iptables > .main div > .cbi-map > form {
+ position: static !important;
+ margin: 0 0 2rem 0;
+ padding: 2rem;
+ border: 0;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ font-family: inherit;
+ min-width: inherit;
+ border-radius: 0;
+ background-color: #FFF;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+ -webkit-overflow-scrolling: touch;
+ }
+
+ .node-status-iptables > .main div > .cbi-map > form input[type="submit"] {
+ width: 100% !important;
+ margin: 0;
+ }
+
+ .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"] {
+ margin-top: 1rem;
+ }
+
+ .th, .td {
+ flex-basis: 50%;
+ }
+
+ .td.cbi-value-field {
+ flex-basis: 100%;
+ }
+
+ .td.cbi-value-field[data-type="dvalue"] {
+ flex-basis: 50%;
+ }
+
+ .td.cbi-value-field[data-type="button"],
+ .td.cbi-value-field[data-type="fvalue"] {
+ flex-basis: 25%;
+ text-align: left;
+ }
+
+ .tr[data-title]::before,
+ .tr.cbi-section-table-titles.named::before {
+ font-size: 1rem;
+ }
+
+ .hide-xs {
+ display: none;
+ }
+}
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png
new file mode 100644
index 0000000000..d218348712
Binary files /dev/null and b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png differ
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico
new file mode 100644
index 0000000000..3d7de7bbd0
Binary files /dev/null and b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico differ
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot
new file mode 100644
index 0000000000..9e6ffc9b82
Binary files /dev/null and b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot differ
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.svg b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.svg
new file mode 100644
index 0000000000..d38d057da3
--- /dev/null
+++ b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.svg
@@ -0,0 +1,16 @@
+
+
+
\ No newline at end of file
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf
new file mode 100644
index 0000000000..84669323e9
Binary files /dev/null and b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf differ
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff
new file mode 100644
index 0000000000..00cf84ea03
Binary files /dev/null and b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff differ
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/js/ScrollY.js b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/js/ScrollY.js
new file mode 100644
index 0000000000..38d82d103e
--- /dev/null
+++ b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/js/ScrollY.js
@@ -0,0 +1 @@
+!function(win,dom){function MyScrollBar(o){this.init(o)}function getStyle(obj,name){return win.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name]}function setStyle(obj,oStyle){for(var i in oStyle)obj.style[i]=oStyle[i]}function getOffsetSize(obj){var sDisplay=getStyle(obj,"display"),res={};if("none"!=sDisplay)res.width=obj.offsetWidth,res.height=obj.offsetHeight;else{var oldStyle={position:getStyle(obj,"position"),visibility:getStyle(obj,"visibility"),display:sDisplay},newStyle;setStyle(obj,{position:"absolute",visibility:"hidden",display:"inline-block"}),res.width=obj.offsetWidth,res.height=obj.offsetHeight,setStyle(obj,oldStyle)}return res}function getClientSize(obj){var iTopW=parseInt(getStyle(obj,"borderTopWidth")),iRightW=parseInt(getStyle(obj,"borderRightWidth")),iBottomW=parseInt(getStyle(obj,"borderBottomWidth")),iLeftW=parseInt(getStyle(obj,"borderLeftWidth")),oOffset=getOffsetSize(obj);return{width:oOffset.width<=0?oOffset.width:oOffset.width-iLeftW-iRightW,height:oOffset.height<=0?oOffset.height:oOffset.height-iTopW-iBottomW}}function canSelectText(bCan){bCan?(dom.body.style.mozUserSelect="text",dom.body.style.webkitUserSelect="text",dom.body.style.msUserSelect="text",dom.body.style.khtmlUserSelect="text",dom.body.style.userSelect="text"):(dom.body.style.mozUserSelect="none",dom.body.style.webkitUserSelect="none",dom.body.style.msUserSelect="none",dom.body.style.khtmlUserSelect="none",dom.body.style.userSelect="none")}function getPosition(obj,goal){var oPos={top:obj.offsetTop,left:obj.offsetLeft};if(obj.parentNode==goal)return oPos;var obj=getPosition(obj.parentNode,goal);oPos.top+=obj.top,oPos.left+=obj.left}MyScrollBar.prototype.init=function(o){this.bYBar=!1,this.iScrollTop=0,this.iScrollLeft=0,this.bYShow=!1,this.oWrapper=dom.getElementById(o.selId),this.oScroll=this.oWrapper.firstElementChild,this.setParam(o),this.addScrollBar(),this.initState(),this.initEvent()},MyScrollBar.prototype.initState=function(){var sWPosition;"static"==getStyle(this.oWrapper,"position")&&setStyle(this.oWrapper,{position:"relative"}),setStyle(this.oScroll,{position:"relative"}),this.bYBar&&(setStyle(this.oYBox,{display:this.enterShow?"none":"block",position:"absolute",top:0,right:0,zIndex:10,width:this.width+"px",height:"100%",backgroundColor:this.bgColor}),setStyle(this.oYBar,{position:"absolute",top:0,left:0,width:"100%",backgroundColor:this.barColor,borderRadius:this.borderRadius+"px",transition:"all "+this.time+"ms"})),this.setSize()},MyScrollBar.prototype.initEvent=function(){var _this=this,sUserAgent;-1!=win.navigator.userAgent.toLowerCase().indexOf("firefox")?this.oWrapper.addEventListener("DOMMouseScroll",function(e){_this.bYBar&&_this.bYShow&&(e.preventDefault(),_this.iScrollTop+=e.detail>0?60:-60,_this.iScrollTop=_this.iScrollTop<=0?0:_this.iScrollTop>=_this.iScrollH-_this.iWrapperH?_this.iScrollH-_this.iWrapperH:_this.iScrollTop,_this.setTransLate(),_this.setYTop(_this.iScrollTop/_this.iScrollH*_this.iYBoxH))}):this.oWrapper.onmousewheel=function(evt){if(_this.bYBar&&_this.bYShow){var e=evt||win.event;evt?e.preventDefault():e.returnValue=!1,_this.iScrollTop+=e.wheelDelta<0?60:-60,_this.iScrollTop=_this.iScrollTop<=0?0:_this.iScrollTop>=_this.iScrollH-_this.iWrapperH?_this.iScrollH-_this.iWrapperH:_this.iScrollTop,_this.setTransLate(),_this.setYTop(_this.iScrollTop/_this.iScrollH*_this.iYBoxH)}};var isInWrapper=!1;this.oWrapper.onmouseenter=function(){isInWrapper=!0,_this.enterShow&&_this.bYBar&&_this.bYShow&&setStyle(_this.oYBox,{display:"block"})},this.oWrapper.onmouseleave=function(){isInWrapper=!1,_this.enterShow&&_this.bYBar&&!bYDown&&_this.bYShow&&setStyle(_this.oYBox,{display:"none"})};var bYDown=!1,bYLeave=!0,iDownPageY=0,iYBarTop=0;this.bYBar&&(this.enterColor&&(this.oYBar.onmouseenter=function(){bYLeave=!1,setStyle(this,{backgroundColor:_this.enterColor})},this.oYBar.onmouseleave=function(){bYLeave=!0,bYDown||setStyle(this,{backgroundColor:_this.barColor})}),this.oYBar.onmousedown=function(e){_this.bYShow&&(bYDown=!0,iDownPageY=e.clientY+dom.documentElement.scrollTop||dom.body.scrollTop,iYBarTop=parseInt(getStyle(this,"top")),_this.setYTime(0),canSelectText(!1))},dom.addEventListener("mouseup",function(){bYDown&&_this.bYShow&&(bYDown=!1,_this.setYTime(_this.time),canSelectText(!0),!isInWrapper&&_this.enterShow&&setStyle(_this.oYBox,{display:"none"})),!bYDown&&bYLeave&&setStyle(_this.oYBar,{backgroundColor:_this.barColor})}),dom.addEventListener("mousemove",function(e){if(bYDown&&_this.bYShow){var iNowPageY=e.clientY+dom.documentElement.scrollTop||dom.body.scrollTop,iNowTop=iYBarTop+iNowPageY-iDownPageY;iNowTop=iNowTop<=0?0:iNowTop>=_this.iYBoxH-_this.iYBarH?_this.iYBoxH-_this.iYBarH:iNowTop,_this.iScrollTop=iNowTop/_this.iYBoxH*_this.iScrollH,_this.setTransLate(),_this.setYTop(iNowTop)}}),this.oYBar.ondrag=function(e){var e=evt||win.event;evt?e.preventDefault():e.returnValue=!1})},MyScrollBar.prototype.setParam=function(o){this.width=o.width?o.width:10,this.bgColor=o.bgColor?o.bgColor:"#eaeaea",this.barColor=o.barColor?o.barColor:"#ccc",this.enterColor=o.enterColor||!1,this.enterShow=!1!==o.enterShow,this.hasY=!1!==o.hasY,this.borderRadius=o.borderRadius>=0?o.borderRadius:this.width/2,this.time=o.time||0},MyScrollBar.prototype.addScrollBar=function(){this.getSize(),this.hasY&&(this.bYBar=!0,this.oYBox=dom.createElement("div"),this.oYBar=dom.createElement("div"),this.oYBox.appendChild(this.oYBar),this.oWrapper.insertBefore(this.oYBox,this.oScroll))},MyScrollBar.prototype.getSize=function(){var oWrapperSize=getClientSize(this.oWrapper),oScrollSize=getClientSize(this.oScroll);this.iWrapperClientH=oWrapperSize.height,this.iPaddingT=parseInt(getStyle(this.oWrapper,"paddingTop")),this.iPaddingR=parseInt(getStyle(this.oWrapper,"paddingRight")),this.iPaddingB=parseInt(getStyle(this.oWrapper,"paddingBottom")),this.iPaddingL=parseInt(getStyle(this.oWrapper,"paddingLeft")),this.iWrapperH=oWrapperSize.height-this.iPaddingT-this.iPaddingB,this.iScrollH=oScrollSize.height,this.bYBar&&(this.iYBoxH=oWrapperSize.height,this.iYBarH=this.iWrapperH/this.iScrollH*this.iYBoxH)},MyScrollBar.prototype.setSize=function(time){var _this=this;time=time||100,setTimeout(function(){_this.getSize(),_this.iScrollTop>=_this.iScrollH-_this.iWrapperH&&(_this.iScrollTop=_this.iScrollH-_this.iWrapperH),_this.bYBar&&(_this.iWrapperH>=_this.iScrollH?(setStyle(_this.oYBox,{display:"none"}),_this.bYShow=!1):(_this.enterShow||setStyle(_this.oYBox,{display:"block"}),setStyle(_this.oYBar,{height:_this.iYBarH+"px",top:_this.iScrollTop/_this.iScrollH*_this.iYBoxH+"px"},0),_this.bYShow=!0))},time)},MyScrollBar.prototype.setTransLate=function(iTime){var sTranslate="translate(-"+this.iScrollLeft+"px, -"+this.iScrollTop+"px)";setStyle(this.oScroll,{transition:"all "+(iTime>=0?iTime:this.time)+"ms",transform:sTranslate,msTransform:sTranslate,mozTransform:sTranslate,webkitTransform:sTranslate,oTransform:sTranslate})},MyScrollBar.prototype.setYTime=function(iTime){setStyle(this.oYBar,{transition:"all "+(iTime>=0?iTime:this.time)+"ms"})},MyScrollBar.prototype.setYTop=function(iTop){setStyle(this.oYBar,{top:iTop+"px"})},MyScrollBar.prototype.jump=function(o){o=o||{};var oPos={top:0,left:0},iTop=0,iBottome=this.iScrollH-this.iWrapperClientH+this.iPaddingT+this.iPaddingB>0?this.iScrollH-this.iWrapperClientH+this.iPaddingT+this.iPaddingB:0,iLeft=0,iRight=this.iScrollW-this.iWrapperClientW+this.iPaddingL+this.iPaddingR>0?this.iScrollW-this.iWrapperClientW+this.iPaddingL+this.iPaddingR:0,obj;if(o.id)oPos=getPosition(document.getElementById(o.id),this.oScroll),this.bYBar&&(oPos.top+=this.iPaddingT);else if(o.pos)if("string"==typeof o.pos)switch(o.pos){case"top":oPos.top=0;break;case"bottom":oPos.top=iBottome;break;case"left":oPos.left=0;break;case"right":oPos.left=iRight}else"object"==typeof o.pos&&(oPos=o.pos);oPos.top=oPos.top>iBottome?iBottome:oPos.top>=0?oPos.top:0,this.iScrollTop=oPos.top,this.setTransLate(o.time),this.bYBar&&(this.setYTime(o.time),this.setYTop(this.iScrollTop/this.iScrollH*this.iYBoxH))},"function"==typeof define&&define.amd&&define([],function(){return MyScrollBar}),win.MyScrollBar=MyScrollBar}(window,document);
\ No newline at end of file
diff --git a/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/js/jquery.min.js b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/js/jquery.min.js
new file mode 100644
index 0000000000..4d9b3a2587
--- /dev/null
+++ b/package/ctcgfw/luci-theme-rosy/htdocs/luci-static/rosy/js/jquery.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/
+
+
+