\r\n","export default \"/* ========================================================================\\n Component: layout\\n ========================================================================== */\\nbody, .wrapper .section-container {\\n background-color: #f5f7fa;\\n}\\n.wrapper .aside-container {\\n background-color: #fff;\\n}\\n/* ========================================================================\\n Component: top-navbar\\n ========================================================================== */\\n.topnavbar {\\n background-color: #23b7e5;\\n background-image: linear-gradient(to right, #23b7e5 0%, #51c6ea 100%);\\n background-repeat: repeat-x;\\n}\\n@media (min-width: 992px) {\\n .topnavbar .navbar-nav > .nav-item.show > .nav-link, .topnavbar .navbar-nav > .nav-item.show > .nav-link:hover, .topnavbar .navbar-nav > .nav-item.show > .nav-link:focus {\\n box-shadow: 0 -3px 0 #19a5d1 inset;\\n }\\n}\\n.topnavbar .navbar-nav > .nav-item > .navbar-text {\\n color: #fff;\\n}\\n.topnavbar .navbar-nav > .nav-item > .nav-link,\\n.topnavbar .navbar-nav > .nav-item.show > .nav-link {\\n color: #fff;\\n}\\n.topnavbar .navbar-nav > .nav-item > .nav-link:hover, .topnavbar .navbar-nav > .nav-item > .nav-link:focus,\\n.topnavbar .navbar-nav > .nav-item.show > .nav-link:hover,\\n.topnavbar .navbar-nav > .nav-item.show > .nav-link:focus {\\n color: #117391;\\n}\\n.topnavbar .dropdown-item.active, .topnavbar .dropdown-item:active {\\n background-color: #23b7e5;\\n}\\n/* ========================================================================\\n Component: sidebar\\n ========================================================================== */\\n.sidebar {\\n background-color: #fff;\\n}\\n.sidebar .nav-heading {\\n color: #919DA8;\\n}\\n.sidebar-nav > li > a, .sidebar-nav > li > .nav-item {\\n color: #515253;\\n}\\n.sidebar-nav > li > a:focus, .sidebar-nav > li > a:hover, .sidebar-nav > li > .nav-item:focus, .sidebar-nav > li > .nav-item:hover {\\n color: #23b7e5;\\n}\\n.sidebar-nav > li > a > em, .sidebar-nav > li > .nav-item > em {\\n color: inherits;\\n}\\n.sidebar-nav > li.active, .sidebar-nav > li.active > a, .sidebar-nav > li.active > .nav-item, .sidebar-nav > li.active .sidebar-nav, .sidebar-nav > li.open, .sidebar-nav > li.open > a, .sidebar-nav > li.open > .nav-item, .sidebar-nav > li.open .sidebar-nav {\\n background-color: #fcfcfc;\\n color: #23b7e5;\\n}\\n.sidebar-nav > li.active > .nav-item > em, .sidebar-nav > li.active > a > em, .sidebar-nav > li.open > .nav-item > em, .sidebar-nav > li.open > a > em {\\n color: #23b7e5;\\n}\\n.sidebar-nav > li.active {\\n border-left-color: #23b7e5;\\n}\\n.sidebar-subnav {\\n background-color: #fff;\\n}\\n.sidebar-subnav > .sidebar-subnav-header {\\n color: #515253;\\n}\\n.sidebar-subnav > li > a, .sidebar-subnav > li > .nav-item {\\n color: #515253;\\n}\\n.sidebar-subnav > li > a:focus, .sidebar-subnav > li > a:hover, .sidebar-subnav > li > .nav-item:focus, .sidebar-subnav > li > .nav-item:hover {\\n color: #23b7e5;\\n}\\n.sidebar-subnav > li.active > a, .sidebar-subnav > li.active > .nav-item {\\n color: #23b7e5;\\n}\\n.sidebar-subnav > li.active > a:after, .sidebar-subnav > li.active > .nav-item:after {\\n border-color: #23b7e5;\\n background-color: #23b7e5;\\n}\\n/* ========================================================================\\n Component: offsidebar\\n ========================================================================== */\\n.offsidebar {\\n border-left: 1px solid greyscale(#cccccc);\\n background-color: #fff;\\n color: #656565;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL3N0eWxlL3RoZW1lL3RoZW1lLWEuc2NzcyIsInNyYy9hcHAvc2hhcmVkL3N0eWxlL2FwcC92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL3N0eWxlL2Jvb3RzdHJhcC9taXhpbnMvX2dyYWRpZW50cy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvc3R5bGUvYm9vdHN0cmFwL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4Q0E7OzZFQUFBO0FBR0E7RUFDSSx5QkF6QzRCO0FBSmhDO0FBZ0RBO0VBQ0ksc0JBNUM0QjtBQURoQztBQWdEQTs7NkVBQUE7QUFHQTtFQUNJLHlCQzNDb0I7RUNKdEIscUVBQUE7RUFDQSwyQkFBQTtBRkdGO0FHMENJO0VITVE7SUFDSSxrQ0FBQTtFQTdDZDtBQUNGO0FBaURJO0VBQ0ksV0F0RHdCO0FBT2hDO0FBa0RJOztFQUVJLFdBM0R3QjtBQVdoQztBQWlEUTs7O0VBQ0ksY0E1RG9CO0FBZWhDO0FBaURJO0VBQ0kseUJDbkVnQjtBRG9CeEI7QUFtREE7OzZFQUFBO0FBR0E7RUFDSSxzQkFuRjRCO0FBbUNoQztBQWtESTtFQUNJLGNBNUQwQjtBQVlsQztBQXVEUTtFQUNJLGNBOUVzQjtBQTBCbEM7QUFzRFk7RUFDSSxjQ3pGUTtBRHFDeEI7QUF3RFk7RUFDSSxlQWxGa0I7QUE0QmxDO0FBNkRZO0VBQ0kseUJBNUZrQjtFQTZGbEIsY0N2R1E7QUQ0Q3hCO0FBOERZO0VBQ0ksY0MzR1E7QUQrQ3hCO0FBaUVRO0VBQ0ksMEJDakhZO0FEa0R4QjtBQXNFQTtFQUNJLHNCQWpJNEI7QUE4RGhDO0FBcUVJO0VBQ0ksY0FwSDBCO0FBaURsQztBQXVFUTtFQUNJLGNBekhzQjtBQW9EbEM7QUF1RVk7RUFDSSxjQ3BJUTtBRCtEeEI7QUEyRVk7RUFDSSxjQzNJUTtBRGtFeEI7QUEyRWdCO0VBQ0kscUJDOUlJO0VEK0lKLHlCQy9JSTtBRHNFeEI7QUFvRkE7OzZFQUFBO0FBR0E7RUFDSSx5Q0FBQTtFQUNBLHNCQXhJc0I7RUF5SXRCLGNDckN3QjtBRDVDNUIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvc3R5bGUvdGhlbWUvdGhlbWUtYS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQm9vdHN0cmFwXHJcbkBpbXBvcnQgXCIuLi9ib290c3RyYXAvZnVuY3Rpb25zXCI7XHJcbkBpbXBvcnQgXCIuLi9ib290c3RyYXAvdmFyaWFibGVzXCI7XHJcbkBpbXBvcnQgXCIuLi9ib290c3RyYXAvbWl4aW5zXCI7XHJcbkBpbXBvcnQgJy4uL2FwcC92YXJpYWJsZXMnO1xyXG5cclxuXHJcbi8vIExBWU9VVFxyXG5cclxuJGNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgICAgICAjZjVmN2ZhO1xyXG4kYXNpZGUtYmc6ICAgICAgICAgICAgICAgICAgICAgICNmZmY7XHJcblxyXG4vLyBOQVZCQVIgVE9QXHJcblxyXG4kbmF2LXRvcC1iZzogICAgICAgICAgICAgICAgICAgICRpbmZvO1xyXG4kbmF2LXRvcC1iZy1zdGFydDogICAgICAgICAgICAgICRuYXYtdG9wLWJnO1xyXG4kbmF2LXRvcC1iZy1lbmQ6ICAgICAgICAgICAgICAgICRpbmZvLWxpZ2h0O1xyXG4kbmF2LWhlYWRlci1iZzogICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50O1xyXG5cclxuJG5hdi10b3AtaXRlbTogICAgICAgICAgICAgICAgICAjZmZmO1xyXG4kbmF2LXRvcC1pdGVtLWFjdGl2ZTogICAgICAgICAgIGRhcmtlbigkbmF2LXRvcC1iZywgMjAlKTtcclxuXHJcbi8vIFNJREVCQVJcclxuXHJcbiRzaWRlYmFyLWJnOiAgICAgICAgICAgICAgICAgICAgICAkYXNpZGUtYmc7XHJcblxyXG4kc2lkZWJhci1pdGVtLWNvbG9yOiAgICAgICAgICAgICAgIzUxNTI1MztcclxuJHNpZGViYXItaXRlbS1jb2xvci1hY3RpdmU6ICAgICAgICRuYXYtdG9wLWJnO1xyXG4kc2lkZWJhci1pdGVtLWJnLWFjdGl2ZTogICAgICAgICAgZGFya2VuKCRzaWRlYmFyLWJnLCAxJSk7XHJcblxyXG4kc2lkZWJhci1pY29uLWNvbG9yOiAgICAgICAgICAgICAgaW5oZXJpdHM7XHJcbiRzaWRlYmFyLWljb24tY29sb3ItYWN0aXZlOiAgICAgICAkbmF2LXRvcC1iZztcclxuXHJcbiRzaWRlYmFyLWJ1bGxldC1jb2xvcjogICAgICAgICAgICByZ2JhKDAsMCwwLC4yNSk7XHJcbiRzaWRlYmFyLWJ1bGxldC1jb2xvci1hY3RpdmU6ICAgICAkc2lkZWJhci1pY29uLWNvbG9yLWFjdGl2ZTtcclxuXHJcbiRzaWRlYmFyLWhlYWRpbmctY29sb3I6ICAgICAgICAgICAjOTE5REE4O1xyXG4kc2lkZWJhci1sYWJlbC1jb2xvcjogICAgICAgICAgICAgJHNpZGViYXItaXRlbS1jb2xvcjtcclxuXHJcbi8vIE9GRlNJREVCQVJcclxuXHJcbiRvZmZzaWRlYmFyLWJnOiAgICAgICAgICAgI2ZmZjtcclxuJG9mZnNpZGViYXItYm9yZGVyLWNvbG9yOiBncmV5c2NhbGUoZGFya2VuKCRvZmZzaWRlYmFyLWJnLCAyMCUpKTtcclxuJG9mZnNpZGViYXItY29sb3I6ICAgICAgICAkYm9keS1jb2xvcjtcclxuXHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29tcG9uZW50OiBsYXlvdXRcclxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbmJvZHksIC53cmFwcGVyIC5zZWN0aW9uLWNvbnRhaW5lciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29udGVudC1iZztcclxufVxyXG5cclxuLndyYXBwZXIgLmFzaWRlLWNvbnRhaW5lciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXNpZGUtYmc7XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb21wb25lbnQ6IHRvcC1uYXZiYXJcclxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbi50b3BuYXZiYXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10b3AtYmc7XHJcbiAgICBAaW5jbHVkZSBncmFkaWVudC14KCRuYXYtdG9wLWJnLXN0YXJ0LCAkbmF2LXRvcC1iZy1lbmQpO1xyXG5cclxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcclxuICAgICAgICAubmF2YmFyLW5hdiA+IC5uYXYtaXRlbS5zaG93ID4gLm5hdi1saW5rIHtcclxuICAgICAgICAgICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIC0zcHggMCBkYXJrZW4oJG5hdi10b3AtYmcsIDYlKSBpbnNldDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubmF2YmFyLW5hdiA+IC5uYXYtaXRlbSA+IC5uYXZiYXItdGV4dCB7XHJcbiAgICAgICAgY29sb3I6ICRuYXYtdG9wLWl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLm5hdmJhci1uYXYgPiAubmF2LWl0ZW0gPiAubmF2LWxpbmssXHJcbiAgICAubmF2YmFyLW5hdiA+IC5uYXYtaXRlbS5zaG93ID4gLm5hdi1saW5rIHtcclxuICAgICAgICBjb2xvcjogJG5hdi10b3AtaXRlbTtcclxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgICAgY29sb3I6ICRuYXYtdG9wLWl0ZW0tYWN0aXZlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10b3AtYmc7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb21wb25lbnQ6IHNpZGViYXJcclxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbi5zaWRlYmFyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRzaWRlYmFyLWJnO1xyXG5cclxuICAgIC5uYXYtaGVhZGluZyB7XHJcbiAgICAgICAgY29sb3I6ICRzaWRlYmFyLWhlYWRpbmctY29sb3I7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIEl0ZW1zXHJcbi5zaWRlYmFyLW5hdiB7XHJcbiAgICA+IGxpIHtcclxuICAgICAgICA+IGEsID4gLm5hdi1pdGVtIHtcclxuICAgICAgICAgICAgY29sb3I6ICRzaWRlYmFyLWl0ZW0tY29sb3I7XHJcblxyXG4gICAgICAgICAgICAmOmZvY3VzLCAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZWJhci1pdGVtLWNvbG9yLWFjdGl2ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gSXRlbSBpY29uXHJcbiAgICAgICAgICAgID4gZW0ge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICRzaWRlYmFyLWljb24tY29sb3I7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBY3RpdmUgaXRlbSBzdGF0ZVxyXG4gICAgICAgICYuYWN0aXZlLCAmLm9wZW4ge1xyXG4gICAgICAgICAgICAmLCA+IGEsID4gLm5hdi1pdGVtLCAuc2lkZWJhci1uYXYge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGViYXItaXRlbS1iZy1hY3RpdmU7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNpZGViYXItaXRlbS1jb2xvci1hY3RpdmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgID4gLm5hdi1pdGVtID4gZW0sID4gYSA+IGVtIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZWJhci1pY29uLWNvbG9yLWFjdGl2ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRzaWRlYmFyLWl0ZW0tY29sb3ItYWN0aXZlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4uc2lkZWJhci1zdWJuYXYge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGViYXItYmc7XHJcblxyXG4gICAgPiAuc2lkZWJhci1zdWJuYXYtaGVhZGVyIHtcclxuICAgICAgICBjb2xvcjogJHNpZGViYXItaXRlbS1jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICA+IGxpIHtcclxuICAgICAgICA+IGEsID4gLm5hdi1pdGVtIHtcclxuICAgICAgICAgICAgY29sb3I6ICRzaWRlYmFyLWl0ZW0tY29sb3I7XHJcblxyXG4gICAgICAgICAgICAmOmZvY3VzLCAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZWJhci1pdGVtLWNvbG9yLWFjdGl2ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICAgICAgPiBhLCA+IC5uYXYtaXRlbSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNpZGViYXItaWNvbi1jb2xvci1hY3RpdmU7XHJcblxyXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkc2lkZWJhci1idWxsZXQtY29sb3ItYWN0aXZlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzaWRlYmFyLWJ1bGxldC1jb2xvci1hY3RpdmU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29tcG9uZW50OiBvZmZzaWRlYmFyXHJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4ub2Zmc2lkZWJhciB7XHJcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRvZmZzaWRlYmFyLWJvcmRlci1jb2xvcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmZzaWRlYmFyLWJnO1xyXG4gICAgY29sb3I6ICRvZmZzaWRlYmFyLWNvbG9yO1xyXG59XHJcbiIsIlxyXG4vLyBDdXRvbXMgR3JheSBjb2xvcnMgZm9yIHRoZW1lXHJcbiRncmF5LWRhcmtlcjogICAgICAgICAgICMyMzI3MzU7XHJcbiRncmF5LWRhcms6ICAgICAgICAgICAgICMzYTNmNTE7XHJcbiRncmF5OiAgICAgICAgICAgICAgICAgICNkZGU2ZTk7XHJcbiRncmF5LWxpZ2h0OiAgICAgICAgICAgICNlNGVhZWM7XHJcbiRncmF5LWxpZ2h0ZXI6ICAgICAgICAgICNlZGYxZjI7XHJcblxyXG4vLyBDdXN0b20gYnJhbmQgY29sb3JzIGZvciB0aGVtZVxyXG4kaW52ZXJzZTogICAgICAgICAgICAgICAjMTMxZTI2O1xyXG4kcHVycGxlOiAgICAgICAgICAgICAgICAjNzI2NmJhO1xyXG4kcGluazogICAgICAgICAgICAgICAgICAjZjUzMmU1O1xyXG4keWVsbG93OiAgICAgICAgICAgICAgICAjZmFkNzMyO1xyXG4kZ3JlZW46ICAgICAgICAgICAgICAgICAjMzdiYzliO1xyXG5cclxuJHByaW1hcnk6ICAgICAgICAgICAgICAgIzVkOWNlYztcclxuJHNlY29uZGFyeTogICAgICAgICAgICAgI2ZmZjtcclxuJHN1Y2Nlc3M6ICAgICAgICAgICAgICAgIzI3YzI0YztcclxuJGluZm86ICAgICAgICAgICAgICAgICAgIzIzYjdlNTtcclxuJHdhcm5pbmc6ICAgICAgICAgICAgICAgI2ZmOTAyYjtcclxuJGRhbmdlcjogICAgICAgICAgICAgICAgI2YwNTA1MDtcclxuJGRhcms6ICAgICAgICAgICAgICAgICAgIzNhM2Y1MTtcclxuXHJcbi8vIEN1c3RvbSBjb2xvciB2YXJpYW50c1xyXG4kYW1vdW50T2ZMaWdodDogMTAlO1xyXG5cclxuJHByaW1hcnktbGlnaHQ6ICAgICAgICAgbGlnaHRlbigkcHJpbWFyeSwgJGFtb3VudE9mTGlnaHQpO1xyXG4kc3VjY2Vzcy1saWdodDogICAgICAgICBsaWdodGVuKCRzdWNjZXNzLCAkYW1vdW50T2ZMaWdodCk7XHJcbiRpbmZvLWxpZ2h0OiAgICAgICAgICAgIGxpZ2h0ZW4oJGluZm8sICRhbW91bnRPZkxpZ2h0KTtcclxuJHdhcm5pbmctbGlnaHQ6ICAgICAgICAgbGlnaHRlbigkd2FybmluZywgJGFtb3VudE9mTGlnaHQpO1xyXG4kZGFuZ2VyLWxpZ2h0OiAgICAgICAgICBsaWdodGVuKCRkYW5nZXIsICRhbW91bnRPZkxpZ2h0KTtcclxuJGludmVyc2UtbGlnaHQ6ICAgICAgICAgbGlnaHRlbigkaW52ZXJzZSwgJGFtb3VudE9mTGlnaHQpO1xyXG4kZ3JlZW4tbGlnaHQ6ICAgICAgICAgICBsaWdodGVuKCRncmVlbiwgJGFtb3VudE9mTGlnaHQpO1xyXG4kcGluay1saWdodDogICAgICAgICAgICBsaWdodGVuKCRwaW5rLCAkYW1vdW50T2ZMaWdodCk7XHJcbiRwdXJwbGUtbGlnaHQ6ICAgICAgICAgIGxpZ2h0ZW4oJHB1cnBsZSwgJGFtb3VudE9mTGlnaHQpO1xyXG4keWVsbG93LWxpZ2h0OiAgICAgICAgICBsaWdodGVuKCR5ZWxsb3csICRhbW91bnRPZkxpZ2h0KTtcclxuJHByaW1hcnktZGFyazogICAgICAgICAgZGFya2VuKCRwcmltYXJ5LCAkYW1vdW50T2ZMaWdodCk7XHJcbiRzdWNjZXNzLWRhcms6ICAgICAgICAgIGRhcmtlbigkc3VjY2VzcywgJGFtb3VudE9mTGlnaHQpO1xyXG4kaW5mby1kYXJrOiAgICAgICAgICAgICBkYXJrZW4oJGluZm8sICRhbW91bnRPZkxpZ2h0KTtcclxuJHdhcm5pbmctZGFyazogICAgICAgICAgZGFya2VuKCR3YXJuaW5nLCAkYW1vdW50T2ZMaWdodCk7XHJcbiRkYW5nZXItZGFyazogICAgICAgICAgIGRhcmtlbigkZGFuZ2VyLCAkYW1vdW50T2ZMaWdodCk7XHJcbiRpbnZlcnNlLWRhcms6ICAgICAgICAgIGRhcmtlbigkaW52ZXJzZSwgJGFtb3VudE9mTGlnaHQpO1xyXG4kZ3JlZW4tZGFyazogICAgICAgICAgICBkYXJrZW4oJGdyZWVuLCAkYW1vdW50T2ZMaWdodCk7XHJcbiRwaW5rLWRhcms6ICAgICAgICAgICAgIGRhcmtlbigkcGluaywgJGFtb3VudE9mTGlnaHQpO1xyXG4kcHVycGxlLWRhcms6ICAgICAgICAgICBkYXJrZW4oJHB1cnBsZSwgJGFtb3VudE9mTGlnaHQpO1xyXG4keWVsbG93LWRhcms6ICAgICAgICAgICBkYXJrZW4oJHllbGxvdywgJGFtb3VudE9mTGlnaHQpO1xyXG5cclxuLy8gVGhlbWUgdmFyaWFibGVzXHJcblxyXG4vLyB1c2VkIGZvciBzaWRlYmFycyBhbmQgY29udGVudCBzcGFjaW5nXHJcbiRuYXZiYXItaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgNTVweDtcclxuXHJcbi8vIEJ1dHRvbiBzZWNvbmRhcnkgcmVkZWZpbml0aW9uIHN0eWxlIGZvciB0aGVtZVxyXG4kYnRuLXNlY29uZGFyeS1jb2xvcjogICAgICAgICAgICAgICMzMzM7XHJcbiRidG4tc2Vjb25kYXJ5LWJnOiAgICAgICAgICAgICAgICAgI2ZmZjtcclxuJGJ0bi1zZWNvbmRhcnktYm9yZGVyOiAgICAgICAgICAgICAjZWFlYWVhO1xyXG5cclxuLy8gVG9wIEJvcmRlciBjb2xvciBmb3IgY3VzdG9tIGRlZmF1bHQgY2FyZHMgKC5jYXJkLWRlZmF1bHQpXHJcbiRjYXJkLWRlZmF1bHQtYm9yZGVyLWNvbG9yOiAgICAgICAgI2NmZGJlMjtcclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gVXRpbGl0aWVzIHZhcmlhYmxlc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiR0ZXh0LWFscGhhOiAgICAgICAgICAgIHJnYmEoMjU1LDI1NSwyNTUsLjUpO1xyXG4kdGV4dC1hbHBoYS1pbnZlcnNlOiAgICByZ2JhKDAsMCwwLC41KTtcclxuXHJcbiRmb250LXNpemUtYmFzZTogICAgICAgIDFyZW07XHJcbiR0ZXh0LXNtOiAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDAuNzQzNzU7XHJcbiR0ZXh0LW1kOiAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNjYyNTtcclxuJHRleHQtbGc6ICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMi42MjU7XHJcblxyXG4kYm9yZGVyLWNvbG9yOiAgICAgICAgICByZ2JhKDAsMCwwLC4xMik7XHJcblxyXG4kd2QteHhzOiAgICAgICAgICAgICAgICA2MHB4O1xyXG4kd2QteHM6ICAgICAgICAgICAgICAgICA5MHB4O1xyXG4kd2Qtc206ICAgICAgICAgICAgICAgICAxNTBweDtcclxuJHdkLXNkOiAgICAgICAgICAgICAgICAgMjAwcHg7IC8vIHNkID09IHN0YW5kYXJkXHJcbiR3ZC1tZDogICAgICAgICAgICAgICAgIDI0MHB4O1xyXG4kd2QtbGc6ICAgICAgICAgICAgICAgICAyODBweDtcclxuJHdkLXhsOiAgICAgICAgICAgICAgICAgMzIwcHg7XHJcbiR3ZC14eGw6ICAgICAgICAgICAgICAgIDM2MHB4O1xyXG4kd2Qtd2lkZTogICAgICAgICAgICAgICAxMDAlO1xyXG4kd2QtYXV0bzogICAgICAgICAgICAgICBhdXRvO1xyXG4kd2QtemVybzogICAgICAgICAgICAgICAwO1xyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyBCb290c3RyYXAgNCBWYXJpYWJsZXMgT3ZlcnJpZGVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4vLyBDb2xvciBzeXN0ZW1cclxuXHJcbiRjb2xvcnM6IChcclxuICAgIFwicHVycGxlXCI6ICAgICAkcHVycGxlLFxyXG4gICAgXCJwaW5rXCI6ICAgICAgICRwaW5rLFxyXG4gICAgXCJ5ZWxsb3dcIjogICAgICR5ZWxsb3csXHJcbiAgICBcImdyZWVuXCI6ICAgICAgJGdyZWVuLFxyXG4gICAgXCJwcmltYXJ5XCI6ICAgICRwcmltYXJ5LFxyXG4gICAgXCJzdWNjZXNzXCI6ICAgICRzdWNjZXNzLFxyXG4gICAgXCJpbmZvXCI6ICAgICAgICRpbmZvLFxyXG4gICAgXCJ3YXJuaW5nXCI6ICAgICR3YXJuaW5nLFxyXG4gICAgXCJkYW5nZXJcIjogICAgICRkYW5nZXIsXHJcbiAgICAnaW52ZXJzZSc6ICAgICRpbnZlcnNlLFxyXG5cclxuICAgICdwcmltYXJ5LWxpZ2h0JzogJHByaW1hcnktbGlnaHQsXHJcbiAgICAncHJpbWFyeS1kYXJrJzogICRwcmltYXJ5LWRhcmssXHJcbiAgICAnc3VjY2Vzcy1saWdodCc6ICRzdWNjZXNzLWxpZ2h0LFxyXG4gICAgJ3N1Y2Nlc3MtZGFyayc6ICAkc3VjY2Vzcy1kYXJrLFxyXG4gICAgJ2luZm8tbGlnaHQnOiAgICAkaW5mby1saWdodCxcclxuICAgICdpbmZvLWRhcmsnOiAgICAgJGluZm8tZGFyayxcclxuICAgICd3YXJuaW5nLWxpZ2h0JzogJHdhcm5pbmctbGlnaHQsXHJcbiAgICAnd2FybmluZy1kYXJrJzogICR3YXJuaW5nLWRhcmssXHJcbiAgICAnZGFuZ2VyLWxpZ2h0JzogICRkYW5nZXItbGlnaHQsXHJcbiAgICAnZGFuZ2VyLWRhcmsnOiAgICRkYW5nZXItZGFyayxcclxuICAgICdncmVlbi1saWdodCc6ICAgJGdyZWVuLWxpZ2h0LFxyXG4gICAgJ2dyZWVuLWRhcmsnOiAgICAkZ3JlZW4tZGFyayxcclxuICAgICdwaW5rLWxpZ2h0JzogICAgJHBpbmstbGlnaHQsXHJcbiAgICAncGluay1kYXJrJzogICAgICRwaW5rLWRhcmssXHJcbiAgICAncHVycGxlLWxpZ2h0JzogICRwdXJwbGUtbGlnaHQsXHJcbiAgICAncHVycGxlLWRhcmsnOiAgICRwdXJwbGUtZGFyayxcclxuICAgICdpbnZlcnNlLWxpZ2h0JzogJGludmVyc2UtbGlnaHQsXHJcbiAgICAnaW52ZXJzZS1kYXJrJzogICRpbnZlcnNlLWRhcmssXHJcbiAgICAneWVsbG93LWxpZ2h0JzogICR5ZWxsb3ctbGlnaHQsXHJcbiAgICAneWVsbG93LWRhcmsnOiAgICR5ZWxsb3ctZGFyayxcclxuKTtcclxuXHJcblxyXG4kdGhlbWUtY29sb3JzOiAoXHJcbiAgXCJwcmltYXJ5XCI6ICAgICRwcmltYXJ5LFxyXG4gIFwic2Vjb25kYXJ5XCI6ICAkc2Vjb25kYXJ5LFxyXG4gIFwic3VjY2Vzc1wiOiAgICAkc3VjY2VzcyxcclxuICBcImluZm9cIjogICAgICAgJGluZm8sXHJcbiAgXCJ3YXJuaW5nXCI6ICAgICR3YXJuaW5nLFxyXG4gIFwiZGFuZ2VyXCI6ICAgICAkZGFuZ2VyXHJcbik7XHJcblxyXG4vLyBCb2R5XHJcblxyXG4kYm9keS1iZzogICAgICAgICAgICAgICAgICAgI2Y1ZjdmYTtcclxuJGJvZHktY29sb3I6ICAgICAgICAgICAgICAgICM2NTY1NjU7XHJcblxyXG4kYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAuMjVyZW07XHJcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgIC4zNzVyZW07XHJcblxyXG4kbGluZS1oZWlnaHQtYmFzZTogICAgICAgICAgICAxLjUyODU3MTQyOTtcclxuXHJcbiRoZWFkaW5ncy1saW5lLWhlaWdodDogICAgICAgIDEuMTtcclxuXHJcbiR0ZXh0LW11dGVkOiAgICAgICAgICAgICAgICAgICM5MDlGQTc7XHJcblxyXG4vLyBUYWJsZXNcclxuXHJcbiR0YWJsZS1hY2NlbnQtYmc6ICAgICAgICAgICAgICNmYWZiZmM7XHJcbiR0YWJsZS1ob3Zlci1iZzogICAgICAgICAgICAgICNmYWZiZmM7XHJcblxyXG4kdGFibGUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAjZWVlO1xyXG5cclxuLy8gQnV0dG9ucyArIEZvcm1zXHJcblxyXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgICAuMzc1cmVtO1xyXG4kaW5wdXQtYnRuLXBhZGRpbmcteDogICAgICAgICAxcmVtO1xyXG5cclxuJGlucHV0LWJ0bi1wYWRkaW5nLXktc206ICAgICAgLjMxMjVyZW07XHJcbiRpbnB1dC1idG4tcGFkZGluZy14LXNtOiAgICAgIC42MjVyZW07XHJcblxyXG4kaW5wdXQtYnRuLXBhZGRpbmcteS1sZzogICAgICAuNjI1cmVtO1xyXG4kaW5wdXQtYnRuLXBhZGRpbmcteC1sZzogICAgICAxLjI1cmVtO1xyXG5cclxuJGlucHV0LWhlaWdodDogICAgICAgICAgICAgICAgMi4xODc1cmVtOyAvLyAzNXB4XHJcblxyXG4vLyBGb3Jtc1xyXG5cclxuJGlucHV0LWRpc2FibGVkLWJnOiAgICAgICAgICAgICAgICAgICAgICRncmF5LWxpZ2h0ZXI7XHJcbiRpbnB1dC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAkZ3JheTtcclxuJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICM2NmFmZTk7XHJcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogICAgICAgICAgICAgICAjYjdiYWM5O1xyXG5cclxuJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZDogICAgICAgICAgICAgIG5vbmU7XHJcbiRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZDogICAgICAgICAgICBub25lO1xyXG5cclxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc6ICAgIGxpZ2h0ZW4oJHByaW1hcnksIDI1JSk7XHJcblxyXG4vLyBEcm9wZG93bnNcclxuXHJcbiRkcm9wZG93bi1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICNlMWUxZTE7XHJcblxyXG4vLyBOYXZzXHJcblxyXG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAjZmZmO1xyXG5cclxuLy8gSnVtYm90cm9uXHJcblxyXG4kanVtYm90cm9uLWJnOiAgICAgICAgICAgICAgICAgICAgICAjZmNmY2ZjO1xyXG5cclxuLy8gTGlzdCBncm91cFxyXG5cclxuJGxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgI2U0ZWFlYztcclxuXHJcbi8vIEltYWdlIHRodW1ibmFpbHNcclxuXHJcbiR0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgICAgICAgIC4xMjVyZW07XHJcblxyXG5cclxuLy8gQnJlYWRjcnVtYnNcclxuXHJcbiRicmVhZGNydW1iLWJnOiAgICAgICAgICAgICAgICAgICAgICNmYWZhZmE7XHJcbiRicmVhZGNydW1iLWRpdmlkZXItY29sb3I6ICAgICAgICAgICNjMWMyYzM7XHJcbiRicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRib2R5LWNvbG9yO1xyXG4iLCIvLyBHcmFkaWVudHNcclxuXHJcbkBtaXhpbiBncmFkaWVudC1iZygkY29sb3IpIHtcclxuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIG1peCgkYm9keS1iZywgJGNvbG9yLCAxNSUpLCAkY29sb3IpIHJlcGVhdC14O1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuLy8gSG9yaXpvbnRhbCBncmFkaWVudCwgZnJvbSBsZWZ0IHRvIHJpZ2h0XHJcbi8vXHJcbi8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuXHJcbkBtaXhpbiBncmFkaWVudC14KCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcclxuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XHJcbn1cclxuXHJcbi8vIFZlcnRpY2FsIGdyYWRpZW50LCBmcm9tIHRvcCB0byBib3R0b21cclxuLy9cclxuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cclxuQG1peGluIGdyYWRpZW50LXkoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJHN0YXJ0LXBlcmNlbnQ6IDAlLCAkZW5kLXBlcmNlbnQ6IDEwMCUpIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcclxuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XHJcbn1cclxuXHJcbkBtaXhpbiBncmFkaWVudC1kaXJlY3Rpb25hbCgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkZGVnOiA0NWRlZykge1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkZGVnLCAkc3RhcnQtY29sb3IsICRlbmQtY29sb3IpO1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcclxufVxyXG5AbWl4aW4gZ3JhZGllbnQteC10aHJlZS1jb2xvcnMoJHN0YXJ0LWNvbG9yOiAkYmx1ZSwgJG1pZC1jb2xvcjogJHB1cnBsZSwgJGNvbG9yLXN0b3A6IDUwJSwgJGVuZC1jb2xvcjogJHJlZCkge1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHN0YXJ0LWNvbG9yLCAkbWlkLWNvbG9yICRjb2xvci1zdG9wLCAkZW5kLWNvbG9yKTtcclxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG59XHJcbkBtaXhpbiBncmFkaWVudC15LXRocmVlLWNvbG9ycygkc3RhcnQtY29sb3I6ICRibHVlLCAkbWlkLWNvbG9yOiAkcHVycGxlLCAkY29sb3Itc3RvcDogNTAlLCAkZW5kLWNvbG9yOiAkcmVkKSB7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxufVxyXG5AbWl4aW4gZ3JhZGllbnQtcmFkaWFsKCRpbm5lci1jb2xvcjogJGdyYXktNzAwLCAkb3V0ZXItY29sb3I6ICRncmF5LTgwMCkge1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICRpbm5lci1jb2xvciwgJG91dGVyLWNvbG9yKTtcclxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG59XHJcbkBtaXhpbiBncmFkaWVudC1zdHJpcGVkKCRjb2xvcjogcmdiYSgkd2hpdGUsIC4xNSksICRhbmdsZTogNDVkZWcpIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGFuZ2xlLCAkY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgJGNvbG9yIDUwJSwgJGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7XHJcbn1cclxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cclxuLy9cclxuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxyXG4vL1xyXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXHJcbi8vXHJcbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cclxuXHJcbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cclxuLy9cclxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxyXG4vLyAgICBtZFxyXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXHJcbi8vICAgIG1kXHJcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCkpXHJcbi8vICAgIG1kXHJcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XHJcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XHJcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XHJcbn1cclxuXHJcbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cclxuLy9cclxuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXHJcbi8vICAgIDU3NnB4XHJcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xyXG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XHJcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xyXG59XHJcblxyXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxyXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxyXG4vLyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2YgYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxyXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XHJcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cclxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcclxuLy9cclxuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXHJcbi8vICAgIDc2Ny45OHB4XHJcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xyXG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XHJcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAuMDIsIG51bGwpO1xyXG59XHJcblxyXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxyXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cclxuLy9cclxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcclxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXHJcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXHJcbi8vICAgIFwiLXNtXCJcclxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcclxuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xyXG59XHJcblxyXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXHJcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXHJcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XHJcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XHJcbiAgQGlmICRtaW4ge1xyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXHJcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXHJcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcclxuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcclxuICBAaWYgJG1heCB7XHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cclxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXHJcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcclxuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XHJcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xyXG5cclxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxyXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cclxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxyXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XHJcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XHJcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XHJcblxyXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XHJcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\";","export default \"/* ========================================================================\\n Component: layout\\n ========================================================================== */\\nbody, .wrapper .section-container {\\n background-color: #f5f7fa;\\n}\\n.wrapper .aside-container {\\n background-color: #fff;\\n}\\n/* ========================================================================\\n Component: top-navbar\\n ========================================================================== */\\n.topnavbar {\\n background-color: #7266ba;\\n background-image: linear-gradient(to right, #7266ba 0%, #9289ca 100%);\\n background-repeat: repeat-x;\\n}\\n@media (min-width: 992px) {\\n .topnavbar .navbar-nav > .nav-item.show > .nav-link, .topnavbar .navbar-nav > .nav-item.show > .nav-link:hover, .topnavbar .navbar-nav > .nav-item.show > .nav-link:focus {\\n box-shadow: 0 -3px 0 #5f51b0 inset;\\n }\\n}\\n.topnavbar .navbar-nav > .nav-item > .navbar-text {\\n color: #fff;\\n}\\n.topnavbar .navbar-nav > .nav-item > .nav-link,\\n.topnavbar .navbar-nav > .nav-item.show > .nav-link {\\n color: #fff;\\n}\\n.topnavbar .navbar-nav > .nav-item > .nav-link:hover, .topnavbar .navbar-nav > .nav-item > .nav-link:focus,\\n.topnavbar .navbar-nav > .nav-item.show > .nav-link:hover,\\n.topnavbar .navbar-nav > .nav-item.show > .nav-link:focus {\\n color: #443a80;\\n}\\n.topnavbar .dropdown-item.active, .topnavbar .dropdown-item:active {\\n background-color: #7266ba;\\n}\\n/* ========================================================================\\n Component: sidebar\\n ========================================================================== */\\n.sidebar {\\n background-color: #fff;\\n}\\n.sidebar .nav-heading {\\n color: #919DA8;\\n}\\n.sidebar-nav > li > a, .sidebar-nav > li > .nav-item {\\n color: #515253;\\n}\\n.sidebar-nav > li > a:focus, .sidebar-nav > li > a:hover, .sidebar-nav > li > .nav-item:focus, .sidebar-nav > li > .nav-item:hover {\\n color: #7266ba;\\n}\\n.sidebar-nav > li > a > em, .sidebar-nav > li > .nav-item > em {\\n color: inherits;\\n}\\n.sidebar-nav > li.active, .sidebar-nav > li.active > a, .sidebar-nav > li.active > .nav-item, .sidebar-nav > li.active .sidebar-nav, .sidebar-nav > li.open, .sidebar-nav > li.open > a, .sidebar-nav > li.open > .nav-item, .sidebar-nav > li.open .sidebar-nav {\\n background-color: #fcfcfc;\\n color: #7266ba;\\n}\\n.sidebar-nav > li.active > .nav-item > em, .sidebar-nav > li.active > a > em, .sidebar-nav > li.open > .nav-item > em, .sidebar-nav > li.open > a > em {\\n color: #7266ba;\\n}\\n.sidebar-nav > li.active {\\n border-left-color: #7266ba;\\n}\\n.sidebar-subnav {\\n background-color: #fff;\\n}\\n.sidebar-subnav > .sidebar-subnav-header {\\n color: #515253;\\n}\\n.sidebar-subnav > li > a, .sidebar-subnav > li > .nav-item {\\n color: #515253;\\n}\\n.sidebar-subnav > li > a:focus, .sidebar-subnav > li > a:hover, .sidebar-subnav > li > .nav-item:focus, .sidebar-subnav > li > .nav-item:hover {\\n color: #7266ba;\\n}\\n.sidebar-subnav > li.active > a, .sidebar-subnav > li.active > .nav-item {\\n color: #7266ba;\\n}\\n.sidebar-subnav > li.active > a:after, .sidebar-subnav > li.active > .nav-item:after {\\n border-color: #7266ba;\\n background-color: #7266ba;\\n}\\n/* ========================================================================\\n Component: offsidebar\\n ========================================================================== */\\n.offsidebar {\\n border-left: 1px solid greyscale(#cccccc);\\n background-color: #fff;\\n color: #656565;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL3N0eWxlL3RoZW1lL3RoZW1lLWMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL3N0eWxlL2FwcC92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL3N0eWxlL2Jvb3RzdHJhcC9taXhpbnMvX2dyYWRpZW50cy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvc3R5bGUvYm9vdHN0cmFwL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4Q0E7OzZFQUFBO0FBR0E7RUFDSSx5QkF6QzRCO0FBSmhDO0FBZ0RBO0VBQ0ksc0JBNUM0QjtBQURoQztBQWdEQTs7NkVBQUE7QUFHQTtFQUNJLHlCQ25Eb0I7RUNJdEIscUVBQUE7RUFDQSwyQkFBQTtBRkdGO0FHMENJO0VITVE7SUFDSSxrQ0FBQTtFQTdDZDtBQUNGO0FBaURJO0VBQ0ksV0F0RHdCO0FBT2hDO0FBa0RJOztFQUVJLFdBM0R3QjtBQVdoQztBQWlEUTs7O0VBQ0ksY0E1RG9CO0FBZWhDO0FBaURJO0VBQ0kseUJDM0VnQjtBRDRCeEI7QUFtREE7OzZFQUFBO0FBR0E7RUFDSSxzQkFuRjRCO0FBbUNoQztBQWtESTtFQUNJLGNBNUQwQjtBQVlsQztBQXVEUTtFQUNJLGNBOUVzQjtBQTBCbEM7QUFzRFk7RUFDSSxjQ2pHUTtBRDZDeEI7QUF3RFk7RUFDSSxlQWxGa0I7QUE0QmxDO0FBNkRZO0VBQ0kseUJBNUZrQjtFQTZGbEIsY0MvR1E7QURvRHhCO0FBOERZO0VBQ0ksY0NuSFE7QUR1RHhCO0FBaUVRO0VBQ0ksMEJDekhZO0FEMER4QjtBQXNFQTtFQUNJLHNCQWpJNEI7QUE4RGhDO0FBcUVJO0VBQ0ksY0FwSDBCO0FBaURsQztBQXVFUTtFQUNJLGNBekhzQjtBQW9EbEM7QUF1RVk7RUFDSSxjQzVJUTtBRHVFeEI7QUEyRVk7RUFDSSxjQ25KUTtBRDBFeEI7QUEyRWdCO0VBQ0kscUJDdEpJO0VEdUpKLHlCQ3ZKSTtBRDhFeEI7QUFvRkE7OzZFQUFBO0FBR0E7RUFDSSx5Q0FBQTtFQUNBLHNCQXhJc0I7RUF5SXRCLGNDckN3QjtBRDVDNUIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvc3R5bGUvdGhlbWUvdGhlbWUtYy5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQm9vdHN0cmFwXHJcbkBpbXBvcnQgXCIuLi9ib290c3RyYXAvZnVuY3Rpb25zXCI7XHJcbkBpbXBvcnQgXCIuLi9ib290c3RyYXAvdmFyaWFibGVzXCI7XHJcbkBpbXBvcnQgXCIuLi9ib290c3RyYXAvbWl4aW5zXCI7XHJcbkBpbXBvcnQgJy4uL2FwcC92YXJpYWJsZXMnO1xyXG5cclxuXHJcbi8vIExBWU9VVFxyXG5cclxuJGNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgICAgICAjZjVmN2ZhO1xyXG4kYXNpZGUtYmc6ICAgICAgICAgICAgICAgICAgICAgICNmZmY7XHJcblxyXG4vLyBOQVZCQVIgVE9QXHJcblxyXG4kbmF2LXRvcC1iZzogICAgICAgICAgICAgICAgICAgICRwdXJwbGU7XHJcbiRuYXYtdG9wLWJnLXN0YXJ0OiAgICAgICAgICAgICAgJG5hdi10b3AtYmc7XHJcbiRuYXYtdG9wLWJnLWVuZDogICAgICAgICAgICAgICAgJHB1cnBsZS1saWdodDtcclxuJG5hdi1oZWFkZXItYmc6ICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudDtcclxuXHJcbiRuYXYtdG9wLWl0ZW06ICAgICAgICAgICAgICAgICAgI2ZmZjtcclxuJG5hdi10b3AtaXRlbS1hY3RpdmU6ICAgICAgICAgICBkYXJrZW4oJG5hdi10b3AtYmcsIDIwJSk7XHJcblxyXG4vLyBTSURFQkFSXHJcblxyXG4kc2lkZWJhci1iZzogICAgICAgICAgICAgICAgICAgICAgJGFzaWRlLWJnO1xyXG5cclxuJHNpZGViYXItaXRlbS1jb2xvcjogICAgICAgICAgICAgICM1MTUyNTM7XHJcbiRzaWRlYmFyLWl0ZW0tY29sb3ItYWN0aXZlOiAgICAgICAkbmF2LXRvcC1iZztcclxuJHNpZGViYXItaXRlbS1iZy1hY3RpdmU6ICAgICAgICAgIGRhcmtlbigkc2lkZWJhci1iZywgMSUpO1xyXG5cclxuJHNpZGViYXItaWNvbi1jb2xvcjogICAgICAgICAgICAgIGluaGVyaXRzO1xyXG4kc2lkZWJhci1pY29uLWNvbG9yLWFjdGl2ZTogICAgICAgJG5hdi10b3AtYmc7XHJcblxyXG4kc2lkZWJhci1idWxsZXQtY29sb3I6ICAgICAgICAgICAgcmdiYSgwLDAsMCwuMjUpO1xyXG4kc2lkZWJhci1idWxsZXQtY29sb3ItYWN0aXZlOiAgICAgJHNpZGViYXItaWNvbi1jb2xvci1hY3RpdmU7XHJcblxyXG4kc2lkZWJhci1oZWFkaW5nLWNvbG9yOiAgICAgICAgICAgIzkxOURBODtcclxuJHNpZGViYXItbGFiZWwtY29sb3I6ICAgICAgICAgICAgICRzaWRlYmFyLWl0ZW0tY29sb3I7XHJcblxyXG4vLyBPRkZTSURFQkFSXHJcblxyXG4kb2Zmc2lkZWJhci1iZzogICAgICAgICAgICNmZmY7XHJcbiRvZmZzaWRlYmFyLWJvcmRlci1jb2xvcjogZ3JleXNjYWxlKGRhcmtlbigkb2Zmc2lkZWJhci1iZywgMjAlKSk7XHJcbiRvZmZzaWRlYmFyLWNvbG9yOiAgICAgICAgJGJvZHktY29sb3I7XHJcblxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvbXBvbmVudDogbGF5b3V0XHJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5ib2R5LCAud3JhcHBlciAuc2VjdGlvbi1jb250YWluZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbnRlbnQtYmc7XHJcbn1cclxuXHJcbi53cmFwcGVyIC5hc2lkZS1jb250YWluZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFzaWRlLWJnO1xyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29tcG9uZW50OiB0b3AtbmF2YmFyXHJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4udG9wbmF2YmFyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXYtdG9wLWJnO1xyXG4gICAgQGluY2x1ZGUgZ3JhZGllbnQteCgkbmF2LXRvcC1iZy1zdGFydCwgJG5hdi10b3AtYmctZW5kKTtcclxuXHJcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XHJcbiAgICAgICAgLm5hdmJhci1uYXYgPiAubmF2LWl0ZW0uc2hvdyA+IC5uYXYtbGluayB7XHJcbiAgICAgICAgICAgICYsICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAtM3B4IDAgZGFya2VuKCRuYXYtdG9wLWJnLCA2JSkgaW5zZXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm5hdmJhci1uYXYgPiAubmF2LWl0ZW0gPiAubmF2YmFyLXRleHQge1xyXG4gICAgICAgIGNvbG9yOiAkbmF2LXRvcC1pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5uYXZiYXItbmF2ID4gLm5hdi1pdGVtID4gLm5hdi1saW5rLFxyXG4gICAgLm5hdmJhci1uYXYgPiAubmF2LWl0ZW0uc2hvdyA+IC5uYXYtbGluayB7XHJcbiAgICAgICAgY29sb3I6ICRuYXYtdG9wLWl0ZW07XHJcbiAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2LXRvcC1pdGVtLWFjdGl2ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmRyb3Bkb3duLWl0ZW0uYWN0aXZlLCAuZHJvcGRvd24taXRlbTphY3RpdmUge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXYtdG9wLWJnO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29tcG9uZW50OiBzaWRlYmFyXHJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4uc2lkZWJhciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZWJhci1iZztcclxuXHJcbiAgICAubmF2LWhlYWRpbmcge1xyXG4gICAgICAgIGNvbG9yOiAkc2lkZWJhci1oZWFkaW5nLWNvbG9yO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyBJdGVtc1xyXG4uc2lkZWJhci1uYXYge1xyXG4gICAgPiBsaSB7XHJcbiAgICAgICAgPiBhLCA+IC5uYXYtaXRlbSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkc2lkZWJhci1pdGVtLWNvbG9yO1xyXG5cclxuICAgICAgICAgICAgJjpmb2N1cywgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNpZGViYXItaXRlbS1jb2xvci1hY3RpdmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEl0ZW0gaWNvblxyXG4gICAgICAgICAgICA+IGVtIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZWJhci1pY29uLWNvbG9yO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWN0aXZlIGl0ZW0gc3RhdGVcclxuICAgICAgICAmLmFjdGl2ZSwgJi5vcGVuIHtcclxuICAgICAgICAgICAgJiwgPiBhLCA+IC5uYXYtaXRlbSwgLnNpZGViYXItbmF2IHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzaWRlYmFyLWl0ZW0tYmctYWN0aXZlO1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICRzaWRlYmFyLWl0ZW0tY29sb3ItYWN0aXZlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA+IC5uYXYtaXRlbSA+IGVtLCA+IGEgPiBlbSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNpZGViYXItaWNvbi1jb2xvci1hY3RpdmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkc2lkZWJhci1pdGVtLWNvbG9yLWFjdGl2ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuLnNpZGViYXItc3VibmF2IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRzaWRlYmFyLWJnO1xyXG5cclxuICAgID4gLnNpZGViYXItc3VibmF2LWhlYWRlciB7XHJcbiAgICAgICAgY29sb3I6ICRzaWRlYmFyLWl0ZW0tY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgPiBsaSB7XHJcbiAgICAgICAgPiBhLCA+IC5uYXYtaXRlbSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkc2lkZWJhci1pdGVtLWNvbG9yO1xyXG5cclxuICAgICAgICAgICAgJjpmb2N1cywgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNpZGViYXItaXRlbS1jb2xvci1hY3RpdmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgICAgID4gYSwgPiAubmF2LWl0ZW0ge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICRzaWRlYmFyLWljb24tY29sb3ItYWN0aXZlO1xyXG5cclxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHNpZGViYXItYnVsbGV0LWNvbG9yLWFjdGl2ZTtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZWJhci1idWxsZXQtY29sb3ItYWN0aXZlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvbXBvbmVudDogb2Zmc2lkZWJhclxyXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLm9mZnNpZGViYXIge1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkb2Zmc2lkZWJhci1ib3JkZXItY29sb3I7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2Zmc2lkZWJhci1iZztcclxuICAgIGNvbG9yOiAkb2Zmc2lkZWJhci1jb2xvcjtcclxufVxyXG4iLCJcclxuLy8gQ3V0b21zIEdyYXkgY29sb3JzIGZvciB0aGVtZVxyXG4kZ3JheS1kYXJrZXI6ICAgICAgICAgICAjMjMyNzM1O1xyXG4kZ3JheS1kYXJrOiAgICAgICAgICAgICAjM2EzZjUxO1xyXG4kZ3JheTogICAgICAgICAgICAgICAgICAjZGRlNmU5O1xyXG4kZ3JheS1saWdodDogICAgICAgICAgICAjZTRlYWVjO1xyXG4kZ3JheS1saWdodGVyOiAgICAgICAgICAjZWRmMWYyO1xyXG5cclxuLy8gQ3VzdG9tIGJyYW5kIGNvbG9ycyBmb3IgdGhlbWVcclxuJGludmVyc2U6ICAgICAgICAgICAgICAgIzEzMWUyNjtcclxuJHB1cnBsZTogICAgICAgICAgICAgICAgIzcyNjZiYTtcclxuJHBpbms6ICAgICAgICAgICAgICAgICAgI2Y1MzJlNTtcclxuJHllbGxvdzogICAgICAgICAgICAgICAgI2ZhZDczMjtcclxuJGdyZWVuOiAgICAgICAgICAgICAgICAgIzM3YmM5YjtcclxuXHJcbiRwcmltYXJ5OiAgICAgICAgICAgICAgICM1ZDljZWM7XHJcbiRzZWNvbmRhcnk6ICAgICAgICAgICAgICNmZmY7XHJcbiRzdWNjZXNzOiAgICAgICAgICAgICAgICMyN2MyNGM7XHJcbiRpbmZvOiAgICAgICAgICAgICAgICAgICMyM2I3ZTU7XHJcbiR3YXJuaW5nOiAgICAgICAgICAgICAgICNmZjkwMmI7XHJcbiRkYW5nZXI6ICAgICAgICAgICAgICAgICNmMDUwNTA7XHJcbiRkYXJrOiAgICAgICAgICAgICAgICAgICMzYTNmNTE7XHJcblxyXG4vLyBDdXN0b20gY29sb3IgdmFyaWFudHNcclxuJGFtb3VudE9mTGlnaHQ6IDEwJTtcclxuXHJcbiRwcmltYXJ5LWxpZ2h0OiAgICAgICAgIGxpZ2h0ZW4oJHByaW1hcnksICRhbW91bnRPZkxpZ2h0KTtcclxuJHN1Y2Nlc3MtbGlnaHQ6ICAgICAgICAgbGlnaHRlbigkc3VjY2VzcywgJGFtb3VudE9mTGlnaHQpO1xyXG4kaW5mby1saWdodDogICAgICAgICAgICBsaWdodGVuKCRpbmZvLCAkYW1vdW50T2ZMaWdodCk7XHJcbiR3YXJuaW5nLWxpZ2h0OiAgICAgICAgIGxpZ2h0ZW4oJHdhcm5pbmcsICRhbW91bnRPZkxpZ2h0KTtcclxuJGRhbmdlci1saWdodDogICAgICAgICAgbGlnaHRlbigkZGFuZ2VyLCAkYW1vdW50T2ZMaWdodCk7XHJcbiRpbnZlcnNlLWxpZ2h0OiAgICAgICAgIGxpZ2h0ZW4oJGludmVyc2UsICRhbW91bnRPZkxpZ2h0KTtcclxuJGdyZWVuLWxpZ2h0OiAgICAgICAgICAgbGlnaHRlbigkZ3JlZW4sICRhbW91bnRPZkxpZ2h0KTtcclxuJHBpbmstbGlnaHQ6ICAgICAgICAgICAgbGlnaHRlbigkcGluaywgJGFtb3VudE9mTGlnaHQpO1xyXG4kcHVycGxlLWxpZ2h0OiAgICAgICAgICBsaWdodGVuKCRwdXJwbGUsICRhbW91bnRPZkxpZ2h0KTtcclxuJHllbGxvdy1saWdodDogICAgICAgICAgbGlnaHRlbigkeWVsbG93LCAkYW1vdW50T2ZMaWdodCk7XHJcbiRwcmltYXJ5LWRhcms6ICAgICAgICAgIGRhcmtlbigkcHJpbWFyeSwgJGFtb3VudE9mTGlnaHQpO1xyXG4kc3VjY2Vzcy1kYXJrOiAgICAgICAgICBkYXJrZW4oJHN1Y2Nlc3MsICRhbW91bnRPZkxpZ2h0KTtcclxuJGluZm8tZGFyazogICAgICAgICAgICAgZGFya2VuKCRpbmZvLCAkYW1vdW50T2ZMaWdodCk7XHJcbiR3YXJuaW5nLWRhcms6ICAgICAgICAgIGRhcmtlbigkd2FybmluZywgJGFtb3VudE9mTGlnaHQpO1xyXG4kZGFuZ2VyLWRhcms6ICAgICAgICAgICBkYXJrZW4oJGRhbmdlciwgJGFtb3VudE9mTGlnaHQpO1xyXG4kaW52ZXJzZS1kYXJrOiAgICAgICAgICBkYXJrZW4oJGludmVyc2UsICRhbW91bnRPZkxpZ2h0KTtcclxuJGdyZWVuLWRhcms6ICAgICAgICAgICAgZGFya2VuKCRncmVlbiwgJGFtb3VudE9mTGlnaHQpO1xyXG4kcGluay1kYXJrOiAgICAgICAgICAgICBkYXJrZW4oJHBpbmssICRhbW91bnRPZkxpZ2h0KTtcclxuJHB1cnBsZS1kYXJrOiAgICAgICAgICAgZGFya2VuKCRwdXJwbGUsICRhbW91bnRPZkxpZ2h0KTtcclxuJHllbGxvdy1kYXJrOiAgICAgICAgICAgZGFya2VuKCR5ZWxsb3csICRhbW91bnRPZkxpZ2h0KTtcclxuXHJcbi8vIFRoZW1lIHZhcmlhYmxlc1xyXG5cclxuLy8gdXNlZCBmb3Igc2lkZWJhcnMgYW5kIGNvbnRlbnQgc3BhY2luZ1xyXG4kbmF2YmFyLWhlaWdodDogICAgICAgICAgICAgICAgICAgIDU1cHg7XHJcblxyXG4vLyBCdXR0b24gc2Vjb25kYXJ5IHJlZGVmaW5pdGlvbiBzdHlsZSBmb3IgdGhlbWVcclxuJGJ0bi1zZWNvbmRhcnktY29sb3I6ICAgICAgICAgICAgICAjMzMzO1xyXG4kYnRuLXNlY29uZGFyeS1iZzogICAgICAgICAgICAgICAgICNmZmY7XHJcbiRidG4tc2Vjb25kYXJ5LWJvcmRlcjogICAgICAgICAgICAgI2VhZWFlYTtcclxuXHJcbi8vIFRvcCBCb3JkZXIgY29sb3IgZm9yIGN1c3RvbSBkZWZhdWx0IGNhcmRzICguY2FyZC1kZWZhdWx0KVxyXG4kY2FyZC1kZWZhdWx0LWJvcmRlci1jb2xvcjogICAgICAgICNjZmRiZTI7XHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFV0aWxpdGllcyB2YXJpYWJsZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kdGV4dC1hbHBoYTogICAgICAgICAgICByZ2JhKDI1NSwyNTUsMjU1LC41KTtcclxuJHRleHQtYWxwaGEtaW52ZXJzZTogICAgcmdiYSgwLDAsMCwuNSk7XHJcblxyXG4kZm9udC1zaXplLWJhc2U6ICAgICAgICAxcmVtO1xyXG4kdGV4dC1zbTogICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAwLjc0Mzc1O1xyXG4kdGV4dC1tZDogICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjY2MjU7XHJcbiR0ZXh0LWxnOiAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDIuNjI1O1xyXG5cclxuJGJvcmRlci1jb2xvcjogICAgICAgICAgcmdiYSgwLDAsMCwuMTIpO1xyXG5cclxuJHdkLXh4czogICAgICAgICAgICAgICAgNjBweDtcclxuJHdkLXhzOiAgICAgICAgICAgICAgICAgOTBweDtcclxuJHdkLXNtOiAgICAgICAgICAgICAgICAgMTUwcHg7XHJcbiR3ZC1zZDogICAgICAgICAgICAgICAgIDIwMHB4OyAvLyBzZCA9PSBzdGFuZGFyZFxyXG4kd2QtbWQ6ICAgICAgICAgICAgICAgICAyNDBweDtcclxuJHdkLWxnOiAgICAgICAgICAgICAgICAgMjgwcHg7XHJcbiR3ZC14bDogICAgICAgICAgICAgICAgIDMyMHB4O1xyXG4kd2QteHhsOiAgICAgICAgICAgICAgICAzNjBweDtcclxuJHdkLXdpZGU6ICAgICAgICAgICAgICAgMTAwJTtcclxuJHdkLWF1dG86ICAgICAgICAgICAgICAgYXV0bztcclxuJHdkLXplcm86ICAgICAgICAgICAgICAgMDtcclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gQm9vdHN0cmFwIDQgVmFyaWFibGVzIE92ZXJyaWRlXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy8gQ29sb3Igc3lzdGVtXHJcblxyXG4kY29sb3JzOiAoXHJcbiAgICBcInB1cnBsZVwiOiAgICAgJHB1cnBsZSxcclxuICAgIFwicGlua1wiOiAgICAgICAkcGluayxcclxuICAgIFwieWVsbG93XCI6ICAgICAkeWVsbG93LFxyXG4gICAgXCJncmVlblwiOiAgICAgICRncmVlbixcclxuICAgIFwicHJpbWFyeVwiOiAgICAkcHJpbWFyeSxcclxuICAgIFwic3VjY2Vzc1wiOiAgICAkc3VjY2VzcyxcclxuICAgIFwiaW5mb1wiOiAgICAgICAkaW5mbyxcclxuICAgIFwid2FybmluZ1wiOiAgICAkd2FybmluZyxcclxuICAgIFwiZGFuZ2VyXCI6ICAgICAkZGFuZ2VyLFxyXG4gICAgJ2ludmVyc2UnOiAgICAkaW52ZXJzZSxcclxuXHJcbiAgICAncHJpbWFyeS1saWdodCc6ICRwcmltYXJ5LWxpZ2h0LFxyXG4gICAgJ3ByaW1hcnktZGFyayc6ICAkcHJpbWFyeS1kYXJrLFxyXG4gICAgJ3N1Y2Nlc3MtbGlnaHQnOiAkc3VjY2Vzcy1saWdodCxcclxuICAgICdzdWNjZXNzLWRhcmsnOiAgJHN1Y2Nlc3MtZGFyayxcclxuICAgICdpbmZvLWxpZ2h0JzogICAgJGluZm8tbGlnaHQsXHJcbiAgICAnaW5mby1kYXJrJzogICAgICRpbmZvLWRhcmssXHJcbiAgICAnd2FybmluZy1saWdodCc6ICR3YXJuaW5nLWxpZ2h0LFxyXG4gICAgJ3dhcm5pbmctZGFyayc6ICAkd2FybmluZy1kYXJrLFxyXG4gICAgJ2Rhbmdlci1saWdodCc6ICAkZGFuZ2VyLWxpZ2h0LFxyXG4gICAgJ2Rhbmdlci1kYXJrJzogICAkZGFuZ2VyLWRhcmssXHJcbiAgICAnZ3JlZW4tbGlnaHQnOiAgICRncmVlbi1saWdodCxcclxuICAgICdncmVlbi1kYXJrJzogICAgJGdyZWVuLWRhcmssXHJcbiAgICAncGluay1saWdodCc6ICAgICRwaW5rLWxpZ2h0LFxyXG4gICAgJ3BpbmstZGFyayc6ICAgICAkcGluay1kYXJrLFxyXG4gICAgJ3B1cnBsZS1saWdodCc6ICAkcHVycGxlLWxpZ2h0LFxyXG4gICAgJ3B1cnBsZS1kYXJrJzogICAkcHVycGxlLWRhcmssXHJcbiAgICAnaW52ZXJzZS1saWdodCc6ICRpbnZlcnNlLWxpZ2h0LFxyXG4gICAgJ2ludmVyc2UtZGFyayc6ICAkaW52ZXJzZS1kYXJrLFxyXG4gICAgJ3llbGxvdy1saWdodCc6ICAkeWVsbG93LWxpZ2h0LFxyXG4gICAgJ3llbGxvdy1kYXJrJzogICAkeWVsbG93LWRhcmssXHJcbik7XHJcblxyXG5cclxuJHRoZW1lLWNvbG9yczogKFxyXG4gIFwicHJpbWFyeVwiOiAgICAkcHJpbWFyeSxcclxuICBcInNlY29uZGFyeVwiOiAgJHNlY29uZGFyeSxcclxuICBcInN1Y2Nlc3NcIjogICAgJHN1Y2Nlc3MsXHJcbiAgXCJpbmZvXCI6ICAgICAgICRpbmZvLFxyXG4gIFwid2FybmluZ1wiOiAgICAkd2FybmluZyxcclxuICBcImRhbmdlclwiOiAgICAgJGRhbmdlclxyXG4pO1xyXG5cclxuLy8gQm9keVxyXG5cclxuJGJvZHktYmc6ICAgICAgICAgICAgICAgICAgICNmNWY3ZmE7XHJcbiRib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAjNjU2NTY1O1xyXG5cclxuJGJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgLjI1cmVtO1xyXG4kYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAuMzc1cmVtO1xyXG5cclxuJGxpbmUtaGVpZ2h0LWJhc2U6ICAgICAgICAgICAgMS41Mjg1NzE0Mjk7XHJcblxyXG4kaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgICAgICAxLjE7XHJcblxyXG4kdGV4dC1tdXRlZDogICAgICAgICAgICAgICAgICAjOTA5RkE3O1xyXG5cclxuLy8gVGFibGVzXHJcblxyXG4kdGFibGUtYWNjZW50LWJnOiAgICAgICAgICAgICAjZmFmYmZjO1xyXG4kdGFibGUtaG92ZXItYmc6ICAgICAgICAgICAgICAjZmFmYmZjO1xyXG5cclxuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgI2VlZTtcclxuXHJcbi8vIEJ1dHRvbnMgKyBGb3Jtc1xyXG5cclxuJGlucHV0LWJ0bi1wYWRkaW5nLXk6ICAgICAgICAgLjM3NXJlbTtcclxuJGlucHV0LWJ0bi1wYWRkaW5nLXg6ICAgICAgICAgMXJlbTtcclxuXHJcbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAgICAgIC4zMTI1cmVtO1xyXG4kaW5wdXQtYnRuLXBhZGRpbmcteC1zbTogICAgICAuNjI1cmVtO1xyXG5cclxuJGlucHV0LWJ0bi1wYWRkaW5nLXktbGc6ICAgICAgLjYyNXJlbTtcclxuJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGc6ICAgICAgMS4yNXJlbTtcclxuXHJcbiRpbnB1dC1oZWlnaHQ6ICAgICAgICAgICAgICAgIDIuMTg3NXJlbTsgLy8gMzVweFxyXG5cclxuLy8gRm9ybXNcclxuXHJcbiRpbnB1dC1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS1saWdodGVyO1xyXG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGdyYXk7XHJcbiRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAjNjZhZmU5O1xyXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICAgICAgICAgICAgICAgI2I3YmFjOTtcclxuXHJcbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQ6ICAgICAgICAgICAgICBub25lO1xyXG4kZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQ6ICAgICAgICAgICAgbm9uZTtcclxuXHJcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICBsaWdodGVuKCRwcmltYXJ5LCAyNSUpO1xyXG5cclxuLy8gRHJvcGRvd25zXHJcblxyXG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAjZTFlMWUxO1xyXG5cclxuLy8gTmF2c1xyXG5cclxuJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAgI2ZmZjtcclxuXHJcbi8vIEp1bWJvdHJvblxyXG5cclxuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgICAgI2ZjZmNmYztcclxuXHJcbi8vIExpc3QgZ3JvdXBcclxuXHJcbiRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcjogICAgICAgICAgICNlNGVhZWM7XHJcblxyXG4vLyBJbWFnZSB0aHVtYm5haWxzXHJcblxyXG4kdGh1bWJuYWlsLXBhZGRpbmc6ICAgICAgICAgICAgICAgICAuMTI1cmVtO1xyXG5cclxuXHJcbi8vIEJyZWFkY3J1bWJzXHJcblxyXG4kYnJlYWRjcnVtYi1iZzogICAgICAgICAgICAgICAgICAgICAjZmFmYWZhO1xyXG4kYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiAgICAgICAgICAjYzFjMmMzO1xyXG4kYnJlYWRjcnVtYi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkYm9keS1jb2xvcjtcclxuIiwiLy8gR3JhZGllbnRzXHJcblxyXG5AbWl4aW4gZ3JhZGllbnQtYmcoJGNvbG9yKSB7XHJcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvciBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBtaXgoJGJvZHktYmcsICRjb2xvciwgMTUlKSwgJGNvbG9yKSByZXBlYXQteDtcclxuICB9IEBlbHNlIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcclxuICB9XHJcbn1cclxuXHJcbi8vIEhvcml6b250YWwgZ3JhZGllbnQsIGZyb20gbGVmdCB0byByaWdodFxyXG4vL1xyXG4vLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLlxyXG5AbWl4aW4gZ3JhZGllbnQteCgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkc3RhcnQtcGVyY2VudDogMCUsICRlbmQtcGVyY2VudDogMTAwJSkge1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHN0YXJ0LWNvbG9yICRzdGFydC1wZXJjZW50LCAkZW5kLWNvbG9yICRlbmQtcGVyY2VudCk7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xyXG59XHJcblxyXG4vLyBWZXJ0aWNhbCBncmFkaWVudCwgZnJvbSB0b3AgdG8gYm90dG9tXHJcbi8vXHJcbi8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuXHJcbkBtaXhpbiBncmFkaWVudC15KCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJHN0YXJ0LWNvbG9yICRzdGFydC1wZXJjZW50LCAkZW5kLWNvbG9yICRlbmQtcGVyY2VudCk7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xyXG59XHJcblxyXG5AbWl4aW4gZ3JhZGllbnQtZGlyZWN0aW9uYWwoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJGRlZzogNDVkZWcpIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGRlZywgJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yKTtcclxuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XHJcbn1cclxuQG1peGluIGdyYWRpZW50LXgtdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxufVxyXG5AbWl4aW4gZ3JhZGllbnQteS10aHJlZS1jb2xvcnMoJHN0YXJ0LWNvbG9yOiAkYmx1ZSwgJG1pZC1jb2xvcjogJHB1cnBsZSwgJGNvbG9yLXN0b3A6IDUwJSwgJGVuZC1jb2xvcjogJHJlZCkge1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkc3RhcnQtY29sb3IsICRtaWQtY29sb3IgJGNvbG9yLXN0b3AsICRlbmQtY29sb3IpO1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbn1cclxuQG1peGluIGdyYWRpZW50LXJhZGlhbCgkaW5uZXItY29sb3I6ICRncmF5LTcwMCwgJG91dGVyLWNvbG9yOiAkZ3JheS04MDApIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAkaW5uZXItY29sb3IsICRvdXRlci1jb2xvcik7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxufVxyXG5AbWl4aW4gZ3JhZGllbnQtc3RyaXBlZCgkY29sb3I6IHJnYmEoJHdoaXRlLCAuMTUpLCAkYW5nbGU6IDQ1ZGVnKSB7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRhbmdsZSwgJGNvbG9yIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsICRjb2xvciA1MCUsICRjb2xvciA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO1xyXG59XHJcbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXHJcbi8vXHJcbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcclxuLy9cclxuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxyXG4vL1xyXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXHJcblxyXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXHJcbi8vXHJcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcclxuLy8gICAgbWRcclxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxyXG4vLyAgICBtZFxyXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxyXG4vLyAgICBtZFxyXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xyXG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xyXG4gIEByZXR1cm4gaWYoJG4gIT0gbnVsbCBhbmQgJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xyXG59XHJcblxyXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXHJcbi8vXHJcbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxyXG4vLyAgICA1NzZweFxyXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcclxuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xyXG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcclxufVxyXG5cclxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cclxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcclxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cclxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxyXG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXHJcbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXHJcbi8vXHJcbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxyXG4vLyAgICA3NjcuOThweFxyXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcclxuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xyXG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAyLCBudWxsKTtcclxufVxyXG5cclxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cclxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXHJcbi8vXHJcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXHJcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxyXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxyXG4vLyAgICBcIi1zbVwiXHJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XHJcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcclxufVxyXG5cclxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxyXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxyXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xyXG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xyXG4gIEBpZiAkbWluIHtcclxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxyXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxyXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XHJcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XHJcbiAgQGlmICRtYXgge1xyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXHJcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xyXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XHJcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xyXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcclxuXHJcbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcclxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cclxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXHJcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cclxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xyXG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xyXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xyXG5cclxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\";","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\n\r\nexport class ColorService {\r\n\r\n APP_COLORS = {\r\n 'primary': '#5d9cec',\r\n 'success': '#27c24c',\r\n 'info': '#23b7e5',\r\n 'warning': '#ff902b',\r\n 'danger': '#f05050',\r\n 'inverse': '#131e26',\r\n 'green': '#37bc9b',\r\n 'pink': '#f532e5',\r\n 'purple': '#7266ba',\r\n 'dark': '#3a3f51',\r\n 'yellow': '#fad732',\r\n 'gray-darker': '#232735',\r\n 'gray-dark': '#3a3f51',\r\n 'gray': '#dde6e9',\r\n 'gray-light': '#e4eaec',\r\n 'gray-lighter': '#edf1f2'\r\n };\r\n\r\n constructor() { }\r\n\r\n byName(name) {\r\n // console.log(name +' -> ' + this.APP_COLORS[name])\r\n return (this.APP_COLORS[name] || '#fff');\r\n }\r\n\r\n}\r\n","/*!\r\n * modernizr v3.3.1\r\n * Build http://modernizr.com/download?-bgpositionshorthand-bgpositionxy-bgrepeatspace_bgrepeatround-bgsizecover-borderradius-cssanimations-csscalc-csstransforms-csstransforms3d-csstransitions-flexboxtweener-fontface-inlinesvg-localstorage-multiplebgs-preserve3d-sessionstorage-smil-svg-svgasimg-svgclippaths-svgfilters-svgforeignobject-websqldatabase-setclasses-dontmin\r\n *\r\n * Copyright (c)\r\n * Faruk Ates\r\n * Paul Irish\r\n * Alex Sexton\r\n * Ryan Seddon\r\n * Patrick Kettner\r\n * Stu Cox\r\n * Richard Herrera\r\n\r\n * MIT License\r\n */\r\n\r\n/*\r\n * Modernizr tests which native CSS3 and HTML5 features are available in the\r\n * current UA and makes the results available to you in two ways: as properties on\r\n * a global `Modernizr` object, and as classes on the `` element. This\r\n * information allows you to progressively enhance your pages with a granular level\r\n * of control over the experience.\r\n*/\r\n\r\n;(function(window, document, undefined){\r\n var tests = [];\r\n \r\n\r\n /**\r\n *\r\n * ModernizrProto is the constructor for Modernizr\r\n *\r\n * @class\r\n * @access public\r\n */\r\n\r\n var ModernizrProto = {\r\n // The current version, dummy\r\n _version: '3.3.1',\r\n\r\n // Any settings that don't work as separate modules\r\n // can go in here as configuration.\r\n _config: {\r\n 'classPrefix': '',\r\n 'enableClasses': true,\r\n 'enableJSClass': true,\r\n 'usePrefixes': true\r\n },\r\n\r\n // Queue of tests\r\n _q: [],\r\n\r\n // Stub these for people who are listening\r\n on: function(test, cb) {\r\n // I don't really think people should do this, but we can\r\n // safe guard it a bit.\r\n // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.\r\n // This is in case people listen to synchronous tests. I would leave it out,\r\n // but the code to *disallow* sync tests in the real version of this\r\n // function is actually larger than this.\r\n var self = this;\r\n setTimeout(function() {\r\n cb(self[test]);\r\n }, 0);\r\n },\r\n\r\n addTest: function(name, fn, options) {\r\n tests.push({name: name, fn: fn, options: options});\r\n },\r\n\r\n addAsyncTest: function(fn) {\r\n tests.push({name: null, fn: fn});\r\n }\r\n };\r\n\r\n \r\n\r\n // Fake some of Object.create so we can force non test results to be non \"own\" properties.\r\n var Modernizr = function() {};\r\n Modernizr.prototype = ModernizrProto;\r\n\r\n // Leak modernizr globally when you `require` it rather than force it here.\r\n // Overwrite name so constructor name is nicer :D\r\n Modernizr = new Modernizr();\r\n\r\n \r\n\r\n var classes = [];\r\n \r\n\r\n /**\r\n * is returns a boolean if the typeof an obj is exactly type.\r\n *\r\n * @access private\r\n * @function is\r\n * @param {*} obj - A thing we want to check the type of\r\n * @param {string} type - A string to compare the typeof against\r\n * @returns {boolean}\r\n */\r\n\r\n function is(obj, type) {\r\n return typeof obj === type;\r\n }\r\n ;\r\n\r\n /**\r\n * Run through all tests and detect their support in the current UA.\r\n *\r\n * @access private\r\n */\r\n\r\n function testRunner() {\r\n var featureNames;\r\n var feature;\r\n var aliasIdx;\r\n var result;\r\n var nameIdx;\r\n var featureName;\r\n var featureNameSplit;\r\n\r\n for (var featureIdx in tests) {\r\n if (tests.hasOwnProperty(featureIdx)) {\r\n featureNames = [];\r\n feature = tests[featureIdx];\r\n // run the test, throw the return value into the Modernizr,\r\n // then based on that boolean, define an appropriate className\r\n // and push it into an array of classes we'll join later.\r\n //\r\n // If there is no name, it's an 'async' test that is run,\r\n // but not directly added to the object. That should\r\n // be done with a post-run addTest call.\r\n if (feature.name) {\r\n featureNames.push(feature.name.toLowerCase());\r\n\r\n if (feature.options && feature.options.aliases && feature.options.aliases.length) {\r\n // Add all the aliases into the names list\r\n for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {\r\n featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n // Run the test, or use the raw value if it's not a function\r\n result = is(feature.fn, 'function') ? feature.fn() : feature.fn;\r\n\r\n\r\n // Set each of the names on the Modernizr object\r\n for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {\r\n featureName = featureNames[nameIdx];\r\n // Support dot properties as sub tests. We don't do checking to make sure\r\n // that the implied parent tests have been added. You must call them in\r\n // order (either in the test, or make the parent test a dependency).\r\n //\r\n // Cap it to TWO to make the logic simple and because who needs that kind of subtesting\r\n // hashtag famous last words\r\n featureNameSplit = featureName.split('.');\r\n\r\n if (featureNameSplit.length === 1) {\r\n Modernizr[featureNameSplit[0]] = result;\r\n } else {\r\n // cast to a Boolean, if not one already\r\n /* jshint -W053 */\r\n if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {\r\n Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);\r\n }\r\n\r\n Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;\r\n }\r\n\r\n classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));\r\n }\r\n }\r\n }\r\n }\r\n ;\r\n\r\n /**\r\n * docElement is a convenience wrapper to grab the root element of the document\r\n *\r\n * @access private\r\n * @returns {HTMLElement|SVGElement} The root element of the document\r\n */\r\n\r\n var docElement = document.documentElement;\r\n \r\n\r\n /**\r\n * A convenience helper to check if the document we are running in is an SVG document\r\n *\r\n * @access private\r\n * @returns {boolean}\r\n */\r\n\r\n var isSVG = docElement.nodeName.toLowerCase() === 'svg';\r\n \r\n\r\n /**\r\n * setClasses takes an array of class names and adds them to the root element\r\n *\r\n * @access private\r\n * @function setClasses\r\n * @param {string[]} classes - Array of class names\r\n */\r\n\r\n // Pass in an and array of class names, e.g.:\r\n // ['no-webp', 'borderradius', ...]\r\n function setClasses(classes) {\r\n var className = docElement.className;\r\n var classPrefix = Modernizr._config.classPrefix || '';\r\n\r\n if (isSVG) {\r\n className = className.baseVal;\r\n }\r\n\r\n // Change `no-js` to `js` (independently of the `enableClasses` option)\r\n // Handle classPrefix on this too\r\n if (Modernizr._config.enableJSClass) {\r\n var reJS = new RegExp('(^|\\\\s)' + classPrefix + 'no-js(\\\\s|$)');\r\n className = className.replace(reJS, '$1' + classPrefix + 'js$2');\r\n }\r\n\r\n if (Modernizr._config.enableClasses) {\r\n // Add the new classes\r\n className += ' ' + classPrefix + classes.join(' ' + classPrefix);\r\n isSVG ? docElement.className.baseVal = className : docElement.className = className;\r\n }\r\n\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * createElement is a convenience wrapper around document.createElement. Since we\r\n * use createElement all over the place, this allows for (slightly) smaller code\r\n * as well as abstracting away issues with creating elements in contexts other than\r\n * HTML documents (e.g. SVG documents).\r\n *\r\n * @access private\r\n * @function createElement\r\n * @returns {HTMLElement|SVGElement} An HTML or SVG element\r\n */\r\n\r\n function createElement() {\r\n if (typeof document.createElement !== 'function') {\r\n // This is the case in IE7, where the type of createElement is \"object\".\r\n // For this reason, we cannot call apply() as Object is not a Function.\r\n return document.createElement(arguments[0]);\r\n } else if (isSVG) {\r\n return document.createElementNS.call(document, 'http://www.w3.org/2000/svg', arguments[0]);\r\n } else {\r\n return document.createElement.apply(document, arguments);\r\n }\r\n }\r\n\r\n ;\r\n/*!\r\n{\r\n \"name\": \"Background Position Shorthand\",\r\n \"property\": \"bgpositionshorthand\",\r\n \"tags\": [\"css\"],\r\n \"builderAliases\": [\"css_backgroundposition_shorthand\"],\r\n \"notes\": [{\r\n \"name\": \"MDN Docs\",\r\n \"href\": \"https://developer.mozilla.org/en/CSS/background-position\"\r\n }, {\r\n \"name\": \"W3 Spec\",\r\n \"href\": \"https://www.w3.org/TR/css3-background/#background-position\"\r\n }, {\r\n \"name\": \"Demo\",\r\n \"href\": \"https://jsfiddle.net/Blink/bBXvt/\"\r\n }]\r\n}\r\n!*/\r\n/* DOC\r\nDetects if you can use the shorthand method to define multiple parts of an\r\nelement's background-position simultaniously.\r\n\r\neg `background-position: right 10px bottom 10px`\r\n*/\r\n\r\n Modernizr.addTest('bgpositionshorthand', function() {\r\n var elem = createElement('a');\r\n var eStyle = elem.style;\r\n var val = 'right 10px bottom 10px';\r\n eStyle.cssText = 'background-position: ' + val + ';';\r\n return (eStyle.backgroundPosition === val);\r\n });\r\n\r\n\r\n /**\r\n * If the browsers follow the spec, then they would expose vendor-specific style as:\r\n * elem.style.WebkitBorderRadius\r\n * instead of something like the following, which would be technically incorrect:\r\n * elem.style.webkitBorderRadius\r\n\r\n * Webkit ghosts their properties in lowercase but Opera & Moz do not.\r\n * Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+\r\n * erik.eae.net/archives/2008/03/10/21.48.10/\r\n\r\n * More here: github.com/Modernizr/Modernizr/issues/issue/21\r\n *\r\n * @access private\r\n * @returns {string} The string representing the vendor-specific style properties\r\n */\r\n\r\n var omPrefixes = 'Moz O ms Webkit';\r\n \r\n\r\n var cssomPrefixes = (ModernizrProto._config.usePrefixes ? omPrefixes.split(' ') : []);\r\n ModernizrProto._cssomPrefixes = cssomPrefixes;\r\n \r\n\r\n\r\n /**\r\n * contains checks to see if a string contains another string\r\n *\r\n * @access private\r\n * @function contains\r\n * @param {string} str - The string we want to check for substrings\r\n * @param {string} substr - The substring we want to search the first string for\r\n * @returns {boolean}\r\n */\r\n\r\n function contains(str, substr) {\r\n return !!~('' + str).indexOf(substr);\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * Create our \"modernizr\" element that we do most feature tests on.\r\n *\r\n * @access private\r\n */\r\n\r\n var modElem = {\r\n elem: createElement('modernizr')\r\n };\r\n\r\n // Clean up this element\r\n Modernizr._q.push(function() {\r\n delete modElem.elem;\r\n });\r\n\r\n \r\n\r\n var mStyle = {\r\n style: modElem.elem.style\r\n };\r\n\r\n // kill ref for gc, must happen before mod.elem is removed, so we unshift on to\r\n // the front of the queue.\r\n Modernizr._q.unshift(function() {\r\n delete mStyle.style;\r\n });\r\n\r\n \r\n\r\n /**\r\n * getBody returns the body of a document, or an element that can stand in for\r\n * the body if a real body does not exist\r\n *\r\n * @access private\r\n * @function getBody\r\n * @returns {HTMLElement|SVGElement} Returns the real body of a document, or an\r\n * artificially created element that stands in for the body\r\n */\r\n\r\n function getBody() {\r\n // After page load injecting a fake body doesn't work so check if body exists\r\n var body = document.body;\r\n\r\n if (!body) {\r\n // Can't use the real body create a fake one.\r\n body = createElement(isSVG ? 'svg' : 'body');\r\n body.fake = true;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * injectElementWithStyles injects an element with style element and some CSS rules\r\n *\r\n * @access private\r\n * @function injectElementWithStyles\r\n * @param {string} rule - String representing a css rule\r\n * @param {function} callback - A function that is used to test the injected element\r\n * @param {number} [nodes] - An integer representing the number of additional nodes you want injected\r\n * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes\r\n * @returns {boolean}\r\n */\r\n\r\n function injectElementWithStyles(rule, callback, nodes, testnames) {\r\n var mod = 'modernizr';\r\n var style;\r\n var ret;\r\n var node;\r\n var docOverflow;\r\n var div = createElement('div');\r\n var body = getBody();\r\n\r\n if (parseInt(nodes, 10)) {\r\n // In order not to give false positives we create a node for each test\r\n // This also allows the method to scale for unspecified uses\r\n while (nodes--) {\r\n node = createElement('div');\r\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\r\n div.appendChild(node);\r\n }\r\n }\r\n\r\n style = createElement('style');\r\n style.type = 'text/css';\r\n style.id = 's' + mod;\r\n\r\n // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\r\n // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\r\n (!body.fake ? div : body).appendChild(style);\r\n body.appendChild(div);\r\n\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = rule;\r\n } else {\r\n style.appendChild(document.createTextNode(rule));\r\n }\r\n div.id = mod;\r\n\r\n if (body.fake) {\r\n //avoid crashing IE8, if background image is used\r\n body.style.background = '';\r\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\r\n body.style.overflow = 'hidden';\r\n docOverflow = docElement.style.overflow;\r\n docElement.style.overflow = 'hidden';\r\n docElement.appendChild(body);\r\n }\r\n\r\n ret = callback(div, rule);\r\n // If this is done after page load we don't want to remove the body so check if body exists\r\n if (body.fake) {\r\n body.parentNode.removeChild(body);\r\n docElement.style.overflow = docOverflow;\r\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\r\n docElement.offsetHeight;\r\n } else {\r\n div.parentNode.removeChild(div);\r\n }\r\n\r\n return !!ret;\r\n\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * domToCSS takes a camelCase string and converts it to kebab-case\r\n * e.g. boxSizing -> box-sizing\r\n *\r\n * @access private\r\n * @function domToCSS\r\n * @param {string} name - String name of camelCase prop we want to convert\r\n * @returns {string} The kebab-case version of the supplied name\r\n */\r\n\r\n function domToCSS(name) {\r\n return name.replace(/([A-Z])/g, function(str, m1) {\r\n return '-' + m1.toLowerCase();\r\n }).replace(/^ms-/, '-ms-');\r\n }\r\n ;\r\n\r\n /**\r\n * nativeTestProps allows for us to use native feature detection functionality if available.\r\n * some prefixed form, or false, in the case of an unsupported rule\r\n *\r\n * @access private\r\n * @function nativeTestProps\r\n * @param {array} props - An array of property names\r\n * @param {string} value - A string representing the value we want to check via @supports\r\n * @returns {boolean|undefined} A boolean when @supports exists, undefined otherwise\r\n */\r\n\r\n // Accepts a list of property names and a single value\r\n // Returns `undefined` if native detection not available\r\n function nativeTestProps(props, value) {\r\n var i = props.length;\r\n // Start with the JS API: http://www.w3.org/TR/css3-conditional/#the-css-interface\r\n if ('CSS' in window && 'supports' in window.CSS) {\r\n // Try every prefixed variant of the property\r\n while (i--) {\r\n if (window.CSS.supports(domToCSS(props[i]), value)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // Otherwise fall back to at-rule (for Opera 12.x)\r\n else if ('CSSSupportsRule' in window) {\r\n // Build a condition string for every prefixed variant\r\n var conditionText = [];\r\n while (i--) {\r\n conditionText.push('(' + domToCSS(props[i]) + ':' + value + ')');\r\n }\r\n conditionText = conditionText.join(' or ');\r\n return injectElementWithStyles('@supports (' + conditionText + ') { #modernizr { position: absolute; } }', function(node) {\r\n return getComputedStyle(node, null).position == 'absolute';\r\n });\r\n }\r\n return undefined;\r\n }\r\n ;\r\n\r\n /**\r\n * cssToDOM takes a kebab-case string and converts it to camelCase\r\n * e.g. box-sizing -> boxSizing\r\n *\r\n * @access private\r\n * @function cssToDOM\r\n * @param {string} name - String name of kebab-case prop we want to convert\r\n * @returns {string} The camelCase version of the supplied name\r\n */\r\n\r\n function cssToDOM(name) {\r\n return name.replace(/([a-z])-([a-z])/g, function(str, m1, m2) {\r\n return m1 + m2.toUpperCase();\r\n }).replace(/^-/, '');\r\n }\r\n ;\r\n\r\n // testProps is a generic CSS / DOM property test.\r\n\r\n // In testing support for a given CSS property, it's legit to test:\r\n // `elem.style[styleName] !== undefined`\r\n // If the property is supported it will return an empty string,\r\n // if unsupported it will return undefined.\r\n\r\n // We'll take advantage of this quick test and skip setting a style\r\n // on our modernizr element, but instead just testing undefined vs\r\n // empty string.\r\n\r\n // Property names can be provided in either camelCase or kebab-case.\r\n\r\n function testProps(props, prefixed, value, skipValueTest) {\r\n skipValueTest = is(skipValueTest, 'undefined') ? false : skipValueTest;\r\n\r\n // Try native detect first\r\n if (!is(value, 'undefined')) {\r\n var result = nativeTestProps(props, value);\r\n if (!is(result, 'undefined')) {\r\n return result;\r\n }\r\n }\r\n\r\n // Otherwise do it properly\r\n var afterInit, i, propsLength, prop, before;\r\n\r\n // If we don't have a style element, that means we're running async or after\r\n // the core tests, so we'll need to create our own elements to use\r\n\r\n // inside of an SVG element, in certain browsers, the `style` element is only\r\n // defined for valid tags. Therefore, if `modernizr` does not have one, we\r\n // fall back to a less used element and hope for the best.\r\n var elems = ['modernizr', 'tspan'];\r\n while (!mStyle.style) {\r\n afterInit = true;\r\n mStyle.modElem = createElement(elems.shift());\r\n mStyle.style = mStyle.modElem.style;\r\n }\r\n\r\n // Delete the objects if we created them.\r\n function cleanElems() {\r\n if (afterInit) {\r\n delete mStyle.style;\r\n delete mStyle.modElem;\r\n }\r\n }\r\n\r\n propsLength = props.length;\r\n for (i = 0; i < propsLength; i++) {\r\n prop = props[i];\r\n before = mStyle.style[prop];\r\n\r\n if (contains(prop, '-')) {\r\n prop = cssToDOM(prop);\r\n }\r\n\r\n if (mStyle.style[prop] !== undefined) {\r\n\r\n // If value to test has been passed in, do a set-and-check test.\r\n // 0 (integer) is a valid property value, so check that `value` isn't\r\n // undefined, rather than just checking it's truthy.\r\n if (!skipValueTest && !is(value, 'undefined')) {\r\n\r\n // Needs a try catch block because of old IE. This is slow, but will\r\n // be avoided in most cases because `skipValueTest` will be used.\r\n try {\r\n mStyle.style[prop] = value;\r\n } catch (e) {}\r\n\r\n // If the property value has changed, we assume the value used is\r\n // supported. If `value` is empty string, it'll fail here (because\r\n // it hasn't changed), which matches how browsers have implemented\r\n // CSS.supports()\r\n if (mStyle.style[prop] != before) {\r\n cleanElems();\r\n return prefixed == 'pfx' ? prop : true;\r\n }\r\n }\r\n // Otherwise just return true, or the property name if this is a\r\n // `prefixed()` call\r\n else {\r\n cleanElems();\r\n return prefixed == 'pfx' ? prop : true;\r\n }\r\n }\r\n }\r\n cleanElems();\r\n return false;\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * List of JavaScript DOM values used for tests\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr._domPrefixes\r\n * @optionName Modernizr._domPrefixes\r\n * @optionProp domPrefixes\r\n * @access public\r\n * @example\r\n *\r\n * Modernizr._domPrefixes is exactly the same as [_prefixes](#modernizr-_prefixes), but rather\r\n * than kebab-case properties, all properties are their Capitalized variant\r\n *\r\n * ```js\r\n * Modernizr._domPrefixes === [ \"Moz\", \"O\", \"ms\", \"Webkit\" ];\r\n * ```\r\n */\r\n\r\n var domPrefixes = (ModernizrProto._config.usePrefixes ? omPrefixes.toLowerCase().split(' ') : []);\r\n ModernizrProto._domPrefixes = domPrefixes;\r\n \r\n\r\n /**\r\n * fnBind is a super small [bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) polyfill.\r\n *\r\n * @access private\r\n * @function fnBind\r\n * @param {function} fn - a function you want to change `this` reference to\r\n * @param {object} that - the `this` you want to call the function with\r\n * @returns {function} The wrapped version of the supplied function\r\n */\r\n\r\n function fnBind(fn, that) {\r\n return function() {\r\n return fn.apply(that, arguments);\r\n };\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * testDOMProps is a generic DOM property test; if a browser supports\r\n * a certain property, it won't return undefined for it.\r\n *\r\n * @access private\r\n * @function testDOMProps\r\n * @param {array.} props - An array of properties to test for\r\n * @param {object} obj - An object or Element you want to use to test the parameters again\r\n * @param {boolean|object} elem - An Element to bind the property lookup again. Use `false` to prevent the check\r\n */\r\n function testDOMProps(props, obj, elem) {\r\n var item;\r\n\r\n for (var i in props) {\r\n if (props[i] in obj) {\r\n\r\n // return the property name as a string\r\n if (elem === false) {\r\n return props[i];\r\n }\r\n\r\n item = obj[props[i]];\r\n\r\n // let's bind a function\r\n if (is(item, 'function')) {\r\n // bind to obj unless overriden\r\n return fnBind(item, elem || obj);\r\n }\r\n\r\n // return the unbound function or obj or value\r\n return item;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * testPropsAll tests a list of DOM properties we want to check against.\r\n * We specify literally ALL possible (known and/or likely) properties on\r\n * the element including the non-vendor prefixed one, for forward-\r\n * compatibility.\r\n *\r\n * @access private\r\n * @function testPropsAll\r\n * @param {string} prop - A string of the property to test for\r\n * @param {string|object} [prefixed] - An object to check the prefixed properties on. Use a string to skip\r\n * @param {HTMLElement|SVGElement} [elem] - An element used to test the property and value against\r\n * @param {string} [value] - A string of a css value\r\n * @param {boolean} [skipValueTest] - An boolean representing if you want to test if value sticks when set\r\n */\r\n function testPropsAll(prop, prefixed, elem, value, skipValueTest) {\r\n\r\n var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\r\n props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');\r\n\r\n // did they call .prefixed('boxSizing') or are we just testing a prop?\r\n if (is(prefixed, 'string') || is(prefixed, 'undefined')) {\r\n return testProps(props, prefixed, value, skipValueTest);\r\n\r\n // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])\r\n } else {\r\n props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');\r\n return testDOMProps(props, prefixed, elem);\r\n }\r\n }\r\n\r\n // Modernizr.testAllProps() investigates whether a given style property,\r\n // or any of its vendor-prefixed variants, is recognized\r\n //\r\n // Note that the property names must be provided in the camelCase variant.\r\n // Modernizr.testAllProps('boxSizing')\r\n ModernizrProto.testAllProps = testPropsAll;\r\n\r\n \r\n\r\n /**\r\n * testAllProps determines whether a given CSS property is supported in the browser\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr.testAllProps\r\n * @optionName Modernizr.testAllProps()\r\n * @optionProp testAllProps\r\n * @access public\r\n * @function testAllProps\r\n * @param {string} prop - String naming the property to test (either camelCase or kebab-case)\r\n * @param {string} [value] - String of the value to test\r\n * @param {boolean} [skipValueTest=false] - Whether to skip testing that the value is supported when using non-native detection\r\n * @example\r\n *\r\n * testAllProps determines whether a given CSS property, in some prefixed form,\r\n * is supported by the browser.\r\n *\r\n * ```js\r\n * testAllProps('boxSizing') // true\r\n * ```\r\n *\r\n * It can optionally be given a CSS value in string form to test if a property\r\n * value is valid\r\n *\r\n * ```js\r\n * testAllProps('display', 'block') // true\r\n * testAllProps('display', 'penguin') // false\r\n * ```\r\n *\r\n * A boolean can be passed as a third parameter to skip the value check when\r\n * native detection (@supports) isn't available.\r\n *\r\n * ```js\r\n * testAllProps('shapeOutside', 'content-box', true);\r\n * ```\r\n */\r\n\r\n function testAllProps(prop, value, skipValueTest) {\r\n return testPropsAll(prop, undefined, undefined, value, skipValueTest);\r\n }\r\n ModernizrProto.testAllProps = testAllProps;\r\n \r\n/*!\r\n{\r\n \"name\": \"Background Position XY\",\r\n \"property\": \"bgpositionxy\",\r\n \"tags\": [\"css\"],\r\n \"builderAliases\": [\"css_backgroundposition_xy\"],\r\n \"authors\": [\"Allan Lei\", \"Brandom Aaron\"],\r\n \"notes\": [{\r\n \"name\": \"Demo\",\r\n \"href\": \"https://jsfiddle.net/allanlei/R8AYS/\"\r\n }, {\r\n \"name\": \"Adapted From\",\r\n \"href\": \"https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js\"\r\n }]\r\n}\r\n!*/\r\n/* DOC\r\nDetects the ability to control an element's background position using css\r\n*/\r\n\r\n Modernizr.addTest('bgpositionxy', function() {\r\n return testAllProps('backgroundPositionX', '3px', true) && testAllProps('backgroundPositionY', '5px', true);\r\n });\r\n\r\n/*!\r\n{\r\n \"name\": \"Background Repeat\",\r\n \"property\": [\"bgrepeatspace\", \"bgrepeatround\"],\r\n \"tags\": [\"css\"],\r\n \"builderAliases\": [\"css_backgroundrepeat\"],\r\n \"authors\": [\"Ryan Seddon\"],\r\n \"notes\": [{\r\n \"name\": \"MDN Docs\",\r\n \"href\": \"https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat\"\r\n }, {\r\n \"name\": \"Test Page\",\r\n \"href\": \"https://jsbin.com/uzesun/\"\r\n }, {\r\n \"name\": \"Demo\",\r\n \"href\": \"https://jsfiddle.net/ryanseddon/yMLTQ/6/\"\r\n }]\r\n}\r\n!*/\r\n/* DOC\r\nDetects the ability to use round and space as properties for background-repeat\r\n*/\r\n\r\n // Must value-test these\r\n Modernizr.addTest('bgrepeatround', testAllProps('backgroundRepeat', 'round'));\r\n Modernizr.addTest('bgrepeatspace', testAllProps('backgroundRepeat', 'space'));\r\n\r\n/*!\r\n{\r\n \"name\": \"Background Size Cover\",\r\n \"property\": \"bgsizecover\",\r\n \"tags\": [\"css\"],\r\n \"builderAliases\": [\"css_backgroundsizecover\"],\r\n \"notes\": [{\r\n \"name\" : \"MDN Docs\",\r\n \"href\": \"https://developer.mozilla.org/en/CSS/background-size\"\r\n }]\r\n}\r\n!*/\r\n\r\n // Must test value, as this specifically tests the `cover` value\r\n Modernizr.addTest('bgsizecover', testAllProps('backgroundSize', 'cover'));\r\n\r\n/*!\r\n{\r\n \"name\": \"Border Radius\",\r\n \"property\": \"borderradius\",\r\n \"caniuse\": \"border-radius\",\r\n \"polyfills\": [\"css3pie\"],\r\n \"tags\": [\"css\"],\r\n \"notes\": [{\r\n \"name\": \"Comprehensive Compat Chart\",\r\n \"href\": \"https://muddledramblings.com/table-of-css3-border-radius-compliance\"\r\n }]\r\n}\r\n!*/\r\n\r\n Modernizr.addTest('borderradius', testAllProps('borderRadius', '0px', true));\r\n\r\n/*!\r\n{\r\n \"name\": \"CSS Animations\",\r\n \"property\": \"cssanimations\",\r\n \"caniuse\": \"css-animation\",\r\n \"polyfills\": [\"transformie\", \"csssandpaper\"],\r\n \"tags\": [\"css\"],\r\n \"warnings\": [\"Android < 4 will pass this test, but can only animate a single property at a time\"],\r\n \"notes\": [{\r\n \"name\" : \"Article: 'Dispelling the Android CSS animation myths'\",\r\n \"href\": \"https://goo.gl/OGw5Gm\"\r\n }]\r\n}\r\n!*/\r\n/* DOC\r\nDetects whether or not elements can be animated using CSS\r\n*/\r\n\r\n Modernizr.addTest('cssanimations', testAllProps('animationName', 'a', true));\r\n\r\n\r\n /**\r\n * List of property values to set for css tests. See ticket #21\r\n * http://git.io/vUGl4\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr._prefixes\r\n * @optionName Modernizr._prefixes\r\n * @optionProp prefixes\r\n * @access public\r\n * @example\r\n *\r\n * Modernizr._prefixes is the internal list of prefixes that we test against\r\n * inside of things like [prefixed](#modernizr-prefixed) and [prefixedCSS](#-code-modernizr-prefixedcss). It is simply\r\n * an array of kebab-case vendor prefixes you can use within your code.\r\n *\r\n * Some common use cases include\r\n *\r\n * Generating all possible prefixed version of a CSS property\r\n * ```js\r\n * var rule = Modernizr._prefixes.join('transform: rotate(20deg); ');\r\n *\r\n * rule === 'transform: rotate(20deg); webkit-transform: rotate(20deg); moz-transform: rotate(20deg); o-transform: rotate(20deg); ms-transform: rotate(20deg);'\r\n * ```\r\n *\r\n * Generating all possible prefixed version of a CSS value\r\n * ```js\r\n * rule = 'display:' + Modernizr._prefixes.join('flex; display:') + 'flex';\r\n *\r\n * rule === 'display:flex; display:-webkit-flex; display:-moz-flex; display:-o-flex; display:-ms-flex; display:flex'\r\n * ```\r\n */\r\n\r\n var prefixes = (ModernizrProto._config.usePrefixes ? ' -webkit- -moz- -o- -ms- '.split(' ') : []);\r\n\r\n // expose these for the plugin API. Look in the source for how to join() them against your input\r\n ModernizrProto._prefixes = prefixes;\r\n\r\n \r\n/*!\r\n{\r\n \"name\": \"CSS Calc\",\r\n \"property\": \"csscalc\",\r\n \"caniuse\": \"calc\",\r\n \"tags\": [\"css\"],\r\n \"builderAliases\": [\"css_calc\"],\r\n \"authors\": [\"@calvein\"]\r\n}\r\n!*/\r\n/* DOC\r\nMethod of allowing calculated values for length units. For example:\r\n\r\n```css\r\n//lem {\r\n width: calc(100% - 3em);\r\n}\r\n```\r\n*/\r\n\r\n Modernizr.addTest('csscalc', function() {\r\n var prop = 'width:';\r\n var value = 'calc(10px);';\r\n var el = createElement('a');\r\n\r\n el.style.cssText = prop + prefixes.join(value + prop);\r\n\r\n return !!el.style.length;\r\n });\r\n\r\n/*!\r\n{\r\n \"name\": \"CSS Transforms\",\r\n \"property\": \"csstransforms\",\r\n \"caniuse\": \"transforms2d\",\r\n \"tags\": [\"css\"]\r\n}\r\n!*/\r\n\r\n Modernizr.addTest('csstransforms', function() {\r\n // Android < 3.0 is buggy, so we sniff and blacklist\r\n // http://git.io/hHzL7w\r\n return navigator.userAgent.indexOf('Android 2.') === -1 &&\r\n testAllProps('transform', 'scale(1)', true);\r\n });\r\n\r\n\r\n /**\r\n * testStyles injects an element with style element and some CSS rules\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr.testStyles\r\n * @optionName Modernizr.testStyles()\r\n * @optionProp testStyles\r\n * @access public\r\n * @function testStyles\r\n * @param {string} rule - String representing a css rule\r\n * @param {function} callback - A function that is used to test the injected element\r\n * @param {number} [nodes] - An integer representing the number of additional nodes you want injected\r\n * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes\r\n * @returns {boolean}\r\n * @example\r\n *\r\n * `Modernizr.testStyles` takes a CSS rule and injects it onto the current page\r\n * along with (possibly multiple) DOM elements. This lets you check for features\r\n * that can not be detected by simply checking the [IDL](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Interface_development_guide/IDL_interface_rules).\r\n *\r\n * ```js\r\n * Modernizr.testStyles('#modernizr { width: 9px; color: papayawhip; }', function(elem, rule) {\r\n * // elem is the first DOM node in the page (by default #modernizr)\r\n * // rule is the first argument you supplied - the CSS rule in string form\r\n *\r\n * addTest('widthworks', elem.style.width === '9px')\r\n * });\r\n * ```\r\n *\r\n * If your test requires multiple nodes, you can include a third argument\r\n * indicating how many additional div elements to include on the page. The\r\n * additional nodes are injected as children of the `elem` that is returned as\r\n * the first argument to the callback.\r\n *\r\n * ```js\r\n * Modernizr.testStyles('#modernizr {width: 1px}; #modernizr2 {width: 2px}', function(elem) {\r\n * document.getElementById('modernizr').style.width === '1px'; // true\r\n * document.getElementById('modernizr2').style.width === '2px'; // true\r\n * elem.firstChild === document.getElementById('modernizr2'); // true\r\n * }, 1);\r\n * ```\r\n *\r\n * By default, all of the additional elements have an ID of `modernizr[n]`, where\r\n * `n` is its index (e.g. the first additional, second overall is `#modernizr2`,\r\n * the second additional is `#modernizr3`, etc.).\r\n * If you want to have more meaningful IDs for your function, you can provide\r\n * them as the fourth argument, as an array of strings\r\n *\r\n * ```js\r\n * Modernizr.testStyles('#foo {width: 10px}; #bar {height: 20px}', function(elem) {\r\n * elem.firstChild === document.getElementById('foo'); // true\r\n * elem.lastChild === document.getElementById('bar'); // true\r\n * }, 2, ['foo', 'bar']);\r\n * ```\r\n *\r\n */\r\n\r\n var testStyles = ModernizrProto.testStyles = injectElementWithStyles;\r\n \r\n/*!\r\n{\r\n \"name\": \"CSS Supports\",\r\n \"property\": \"supports\",\r\n \"caniuse\": \"css-featurequeries\",\r\n \"tags\": [\"css\"],\r\n \"builderAliases\": [\"css_supports\"],\r\n \"notes\": [{\r\n \"name\": \"W3 Spec\",\r\n \"href\": \"http://dev.w3.org/csswg/css3-conditional/#at-supports\"\r\n },{\r\n \"name\": \"Related Github Issue\",\r\n \"href\": \"github.com/Modernizr/Modernizr/issues/648\"\r\n },{\r\n \"name\": \"W3 Info\",\r\n \"href\": \"http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface\"\r\n }]\r\n}\r\n!*/\r\n\r\n var newSyntax = 'CSS' in window && 'supports' in window.CSS;\r\n var oldSyntax = 'supportsCSS' in window;\r\n Modernizr.addTest('supports', newSyntax || oldSyntax);\r\n\r\n/*!\r\n{\r\n \"name\": \"CSS Transforms 3D\",\r\n \"property\": \"csstransforms3d\",\r\n \"caniuse\": \"transforms3d\",\r\n \"tags\": [\"css\"],\r\n \"warnings\": [\r\n \"Chrome may occassionally fail this test on some systems; more info: https://code.google.com/p/chromium/issues/detail?id=129004\"\r\n ]\r\n}\r\n!*/\r\n\r\n Modernizr.addTest('csstransforms3d', function() {\r\n var ret = !!testAllProps('perspective', '1px', true);\r\n var usePrefix = Modernizr._config.usePrefixes;\r\n\r\n // Webkit's 3D transforms are passed off to the browser's own graphics renderer.\r\n // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in\r\n // some conditions. As a result, Webkit typically recognizes the syntax but\r\n // will sometimes throw a false positive, thus we must do a more thorough check:\r\n if (ret && (!usePrefix || 'webkitPerspective' in docElement.style)) {\r\n var mq;\r\n var defaultStyle = '#modernizr{width:0;height:0}';\r\n // Use CSS Conditional Rules if available\r\n if (Modernizr.supports) {\r\n mq = '@supports (perspective: 1px)';\r\n } else {\r\n // Otherwise, Webkit allows this media query to succeed only if the feature is enabled.\r\n // `@media (transform-3d),(-webkit-transform-3d){ ... }`\r\n mq = '@media (transform-3d)';\r\n if (usePrefix) {\r\n mq += ',(-webkit-transform-3d)';\r\n }\r\n }\r\n\r\n mq += '{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}';\r\n\r\n testStyles(defaultStyle + mq, function(elem) {\r\n ret = elem.offsetWidth === 7 && elem.offsetHeight === 18;\r\n });\r\n }\r\n\r\n return ret;\r\n });\r\n\r\n/*!\r\n{\r\n \"name\": \"CSS Transform Style preserve-3d\",\r\n \"property\": \"preserve3d\",\r\n \"authors\": [\"edmellum\"],\r\n \"tags\": [\"css\"],\r\n \"notes\": [{\r\n \"name\": \"MDN Docs\",\r\n \"href\": \"https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style\"\r\n },{\r\n \"name\": \"Related Github Issue\",\r\n \"href\": \"https://github.com/Modernizr/Modernizr/issues/762\"\r\n }]\r\n}\r\n!*/\r\n/* DOC\r\nDetects support for `transform-style: preserve-3d`, for getting a proper 3D perspective on elements.\r\n*/\r\n\r\n Modernizr.addTest('preserve3d', testAllProps('transformStyle', 'preserve-3d'));\r\n\r\n/*!\r\n{\r\n \"name\": \"CSS Transitions\",\r\n \"property\": \"csstransitions\",\r\n \"caniuse\": \"css-transitions\",\r\n \"tags\": [\"css\"]\r\n}\r\n!*/\r\n\r\n Modernizr.addTest('csstransitions', testAllProps('transition', 'all', true));\r\n\r\n/*!\r\n{\r\n \"name\": \"Flexbox (tweener)\",\r\n \"property\": \"flexboxtweener\",\r\n \"tags\": [\"css\"],\r\n \"polyfills\": [\"flexie\"],\r\n \"notes\": [{\r\n \"name\": \"The _inbetween_ flexbox\",\r\n \"href\": \"https://www.w3.org/TR/2011/WD-css3-flexbox-20111129/\"\r\n }],\r\n \"warnings\": [\"This represents an old syntax, not the latest standard syntax.\"]\r\n}\r\n!*/\r\n\r\n Modernizr.addTest('flexboxtweener', testAllProps('flexAlign', 'end', true));\r\n\r\n/*!\r\n{\r\n \"name\": \"@font-face\",\r\n \"property\": \"fontface\",\r\n \"authors\": [\"Diego Perini\", \"Mat Marquis\"],\r\n \"tags\": [\"css\"],\r\n \"knownBugs\": [\r\n \"False Positive: WebOS https://github.com/Modernizr/Modernizr/issues/342\",\r\n \"False Postive: WP7 https://github.com/Modernizr/Modernizr/issues/538\"\r\n ],\r\n \"notes\": [{\r\n \"name\": \"@font-face detection routine by Diego Perini\",\r\n \"href\": \"http://javascript.nwbox.com/CSSSupport/\"\r\n },{\r\n \"name\": \"Filament Group @font-face compatibility research\",\r\n \"href\": \"https://docs.google.com/presentation/d/1n4NyG4uPRjAA8zn_pSQ_Ket0RhcWC6QlZ6LMjKeECo0/edit#slide=id.p\"\r\n },{\r\n \"name\": \"Filament Grunticon/@font-face device testing results\",\r\n \"href\": \"https://docs.google.com/spreadsheet/ccc?key=0Ag5_yGvxpINRdHFYeUJPNnZMWUZKR2ItMEpRTXZPdUE#gid=0\"\r\n },{\r\n \"name\": \"CSS fonts on Android\",\r\n \"href\": \"https://stackoverflow.com/questions/3200069/css-fonts-on-android\"\r\n },{\r\n \"name\": \"@font-face and Android\",\r\n \"href\": \"http://archivist.incutio.com/viewlist/css-discuss/115960\"\r\n }]\r\n}\r\n!*/\r\n\r\n var blacklist = (function() {\r\n var ua = navigator.userAgent;\r\n var wkvers = ua.match(/applewebkit\\/([0-9]+)/gi) && parseFloat(RegExp.$1);\r\n var webos = ua.match(/w(eb)?osbrowser/gi);\r\n var wppre8 = ua.match(/windows phone/gi) && ua.match(/iemobile\\/([0-9])+/gi) && parseFloat(RegExp.$1) >= 9;\r\n var oldandroid = wkvers < 533 && ua.match(/android/gi);\r\n return webos || oldandroid || wppre8;\r\n }());\r\n if (blacklist) {\r\n Modernizr.addTest('fontface', false);\r\n } else {\r\n testStyles('@font-face {font-family:\"font\";src:url(\"https://\")}', function(node, rule) {\r\n var style = document.getElementById('smodernizr');\r\n var sheet = style.sheet || style.styleSheet;\r\n var cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';\r\n var bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;\r\n Modernizr.addTest('fontface', bool);\r\n });\r\n }\r\n;\r\n/*!\r\n{\r\n \"name\": \"SVG\",\r\n \"property\": \"svg\",\r\n \"caniuse\": \"svg\",\r\n \"tags\": [\"svg\"],\r\n \"authors\": [\"Erik Dahlstrom\"],\r\n \"polyfills\": [\r\n \"svgweb\",\r\n \"raphael\",\r\n \"amplesdk\",\r\n \"canvg\",\r\n \"svg-boilerplate\",\r\n \"sie\",\r\n \"dojogfx\",\r\n \"fabricjs\"\r\n ]\r\n}\r\n!*/\r\n/* DOC\r\nDetects support for SVG in `