1013 lines
796 KiB
JavaScript
1013 lines
796 KiB
JavaScript
/*! 'ui.js is part of ReplayWeb.page (https://replayweb.page) Copyright (C) 2020, Webrecorder Software. Licensed under the Affero General Public License v3.' */
|
|
(function(e, a) { for(var i in a) e[i] = a[i]; }(self, /******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = function(exports) {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/
|
|
/******/ // create a fake namespace object
|
|
/******/ // mode & 1: value is a module id, require it
|
|
/******/ // mode & 2: merge all properties of value into the ns
|
|
/******/ // mode & 4: return value when already ns object
|
|
/******/ // mode & 8|1: behave like require
|
|
/******/ __webpack_require__.t = function(value, mode) {
|
|
/******/ if(mode & 1) value = __webpack_require__(value);
|
|
/******/ if(mode & 8) return value;
|
|
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
/******/ var ns = Object.create(null);
|
|
/******/ __webpack_require__.r(ns);
|
|
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
/******/ return ns;
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "/";
|
|
/******/
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(__webpack_require__.s = "./src/ui.js");
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ({
|
|
|
|
/***/ "./assets/logo.svg":
|
|
/*!*************************!*\
|
|
!*** ./assets/logo.svg ***!
|
|
\*************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:cc=\\\"http://creativecommons.org/ns#\\\" xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\" xmlns:svg=\\\"http://www.w3.org/2000/svg\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" viewBox=\\\"0 0 66.712418 66.712418\\\" version=\\\"1.1\\\" id=\\\"wrlogo\\\"><defs id=\\\"defs1341\\\"><linearGradient y2=\\\"48.223869\\\" x2=\\\"97.913383\\\" y1=\\\"48.223869\\\" x1=\\\"2.9740067\\\" gradientTransform=\\\"matrix(0.70268446,0,0,0.70268446,72.622704,112.65806)\\\" gradientUnits=\\\"userSpaceOnUse\\\" id=\\\"linearGradient6615\\\" xlink:href=\\\"#linearGradient5691\\\"></linearGradient><linearGradient id=\\\"linearGradient5691\\\"><stop style=\\\"stop-color:#4876ff;stop-opacity:1\\\" offset=\\\"0\\\" id=\\\"stop5687\\\"></stop><stop style=\\\"stop-color:#04cdff;stop-opacity:1\\\" offset=\\\"1\\\" id=\\\"stop5689\\\"></stop></linearGradient></defs><metadata id=\\\"metadata1344\\\"><rdf:RDF><cc:Work rdf:about><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\\\"http://purl.org/dc/dcmitype/StillImage\\\"></dc><dc:title></dc:title></cc:Work></rdf:RDF></metadata><g id=\\\"layer1\\\" transform=\\\"translate(-72.477124,-114.81046)\\\"><circle transform=\\\"rotate(0.86915873)\\\" r=\\\"33.356209\\\" cy=\\\"146.54422\\\" cx=\\\"108.06871\\\" id=\\\"path6016-0-7-6-9-11-2-8-67-6-50-4-33\\\" style=\\\"fill:url(#linearGradient6615);fill-opacity:1;stroke:none;stroke-width:23.3824;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal\\\"></circle><path style=\\\"fill:#d2f9d6;fill-opacity:1;stroke-width:0.702683\\\" d=\\\"m 119.62552,156.54036 h 5.46953 c 3.81136,0 6.91161,-3.10024 6.91161,-6.9116 0,-3.81136 -3.10025,-6.9116 -6.91161,-6.9116 h -15.59889 c -3.81136,0 -6.9116,3.10024 -6.9116,6.9116 0,1.96682 0.82917,3.73828 2.15161,4.9982 -0.83057,0.55722 -1.82557,0.88678 -2.89857,0.88678 h -2.082056 c -1.042775,-1.72016 -1.654819,-3.73054 -1.654819,-5.88498 0,-6.2834 5.112035,-11.39543 11.395435,-11.39543 h 15.59889 c 6.28341,0 11.39474,5.11132 11.39474,11.39543 0,6.28411 -5.11222,11.50105 -11.39474,11.39543 l -5.45665,0.14787 v -2.17722 z\\\" id=\\\"path114-4-0-85-6-0-5-3-6-1-6\\\"></path><path style=\\\"fill:#64e986;fill-opacity:1;stroke-width:0.702683\\\" d=\\\"m 91.878825,142.66568 -4.893158,0.0515 c -3.811155,0.0401 -6.911605,3.10024 -6.911605,6.91231 0,3.81065 3.100238,6.91089 6.911605,6.91089 h 15.598893 c 3.81136,0 6.9116,-3.10024 6.9116,-6.91089 0,-1.96682 -0.82917,-3.73899 -2.15162,-4.9989 0.83057,-0.55723 1.82557,-0.88609 2.89857,-0.88609 h 2.08066 c 1.04348,1.71947 1.65552,3.72985 1.65552,5.88499 0,6.28269 -5.11132,11.39472 -11.39473,11.39472 H 86.985667 c -6.282704,0 -11.39544,-5.11132 -11.39544,-11.39472 0,-6.28411 5.112828,-11.49617 11.39544,-11.39614 l 4.893158,0.0779 v 2.17722 z\\\" id=\\\"path116-9-4-7-0-8-3-2-08-9-1\\\"></path><path style=\\\"fill:#64e986;fill-opacity:1;stroke:none;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal\\\" id=\\\"path3919-5-9-8-6-6-56-0-37-5-8\\\" d=\\\"m 73.728819,47.245763 -10.861072,-6.335289 -10.86107,-6.33529 10.917057,-6.238319 10.917057,-6.238318 -0.05599,12.573609 z\\\" transform=\\\"matrix(-0.38260367,0,0,0.3986412,118.95441,127.09397)\\\"></path><path style=\\\"fill:#d2f9d6;fill-opacity:1;stroke:none;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal\\\" id=\\\"path3919-3-3-7-5-9-7-2-6-8-7-7\\\" d=\\\"m 73.728819,47.245763 -10.861072,-6.335289 -10.86107,-6.33529 10.917057,-6.238319 10.917057,-6.238318 -0.05599,12.573609 z\\\" transform=\\\"matrix(0.4122212,0,0,-0.40812,91.057524,172.76152)\\\"></path></g></svg>\"\n\n//# sourceURL=webpack:///./assets/logo.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./assets/main.scss":
|
|
/*!**************************!*\
|
|
!*** ./assets/main.scss ***!
|
|
\**************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"/*$wr-green: #64e986;*/\\n.input::placeholder, .textarea::placeholder, .select select::placeholder {\\n opacity: 1; }\\n\\na:focus {\\n color: #363636; }\\n\\n.file-label:focus-within .file-cta {\\n background-color: #e8e8e8;\\n color: #363636; }\\n\\n.button.is-primary:focus, .button.is-primary:hover, .button.is-primary:active {\\n background-color: #459558 !important;\\n color: white !important; }\\n\\n.replay-bar .button {\\n margin: 0 1px; }\\n\\n.replay-bar .button:focus {\\n box-shadow: none !important;\\n outline: 1px dotted #4876ff;\\n outline: -webkit-focus-ring-color auto 1px; }\\n\\n.skip-link {\\n border: 0;\\n clip: rect(1px, 1px, 1px, 1px);\\n clip-path: inset(50%);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute !important;\\n width: 1px;\\n word-wrap: normal !important;\\n /* Many screen reader and browser combinations announce broken words as they would appear visually. */ }\\n .skip-link:focus {\\n background-color: black;\\n border-radius: 3px;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);\\n clip: auto !important;\\n clip-path: none;\\n color: white;\\n display: block;\\n font-family: inherit;\\n font-size: 1.3em;\\n font-weight: bold;\\n height: auto;\\n left: 5px;\\n line-height: normal;\\n padding: 15px 23px 14px;\\n text-decoration: none;\\n top: 5px;\\n width: auto;\\n z-index: 100000; }\\n\\n.main-scroll {\\n flex: 1;\\n scroll-behavior: smooth;\\n overflow-y: auto;\\n max-height: 100vh;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n overflow-x: hidden; }\\n\\n/*! bulma.io v0.9.0 | MIT License | github.com/jgthms/bulma */\\n@keyframes spinAround {\\n from {\\n transform: rotate(0deg); }\\n to {\\n transform: rotate(359deg); } }\\n\\n.delete, .modal-close, .button, .file, .breadcrumb, .pagination-previous,\\n.pagination-next,\\n.pagination-link,\\n.pagination-ellipsis, .tabs, .is-unselectable {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\\n.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after {\\n border: 3px solid transparent;\\n border-radius: 2px;\\n border-right: 0;\\n border-top: 0;\\n content: \\\" \\\";\\n display: block;\\n height: 0.625em;\\n margin-top: -0.4375em;\\n pointer-events: none;\\n position: absolute;\\n top: 50%;\\n transform: rotate(-45deg);\\n transform-origin: center;\\n width: 0.625em; }\\n\\n.box:not(:last-child), .content:not(:last-child), .notification:not(:last-child), .progress:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .title:not(:last-child),\\n.subtitle:not(:last-child), .block:not(:last-child), .highlight:not(:last-child), .breadcrumb:not(:last-child), .level:not(:last-child), .message:not(:last-child), .pagination:not(:last-child), .tabs:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n\\n.delete, .modal-close {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n background-color: rgba(10, 10, 10, 0.2);\\n border: none;\\n border-radius: 290486px;\\n cursor: pointer;\\n pointer-events: auto;\\n display: inline-block;\\n flex-grow: 0;\\n flex-shrink: 0;\\n font-size: 0;\\n height: 20px;\\n max-height: 20px;\\n max-width: 20px;\\n min-height: 20px;\\n min-width: 20px;\\n outline: none;\\n position: relative;\\n vertical-align: top;\\n width: 20px; }\\n .delete::before, .modal-close::before, .delete::after, .modal-close::after {\\n background-color: white;\\n content: \\\"\\\";\\n display: block;\\n left: 50%;\\n position: absolute;\\n top: 50%;\\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\\n transform-origin: center center; }\\n .delete::before, .modal-close::before {\\n height: 2px;\\n width: 50%; }\\n .delete::after, .modal-close::after {\\n height: 50%;\\n width: 2px; }\\n .delete:hover, .modal-close:hover, .delete:focus, .modal-close:focus {\\n background-color: rgba(10, 10, 10, 0.3); }\\n .delete:active, .modal-close:active {\\n background-color: rgba(10, 10, 10, 0.4); }\\n .is-small.delete, .is-small.modal-close {\\n height: 16px;\\n max-height: 16px;\\n max-width: 16px;\\n min-height: 16px;\\n min-width: 16px;\\n width: 16px; }\\n .is-medium.delete, .is-medium.modal-close {\\n height: 24px;\\n max-height: 24px;\\n max-width: 24px;\\n min-height: 24px;\\n min-width: 24px;\\n width: 24px; }\\n .is-large.delete, .is-large.modal-close {\\n height: 32px;\\n max-height: 32px;\\n max-width: 32px;\\n min-height: 32px;\\n min-width: 32px;\\n width: 32px; }\\n\\n.button.is-loading::after, .loader, .select.is-loading::after, .control.is-loading::after {\\n animation: spinAround 500ms infinite linear;\\n border: 2px solid #dbdbdb;\\n border-radius: 290486px;\\n border-right-color: transparent;\\n border-top-color: transparent;\\n content: \\\"\\\";\\n display: block;\\n height: 1em;\\n position: relative;\\n width: 1em; }\\n\\n.image.is-square img,\\n.image.is-square .has-ratio, .image.is-1by1 img,\\n.image.is-1by1 .has-ratio, .image.is-5by4 img,\\n.image.is-5by4 .has-ratio, .image.is-4by3 img,\\n.image.is-4by3 .has-ratio, .image.is-3by2 img,\\n.image.is-3by2 .has-ratio, .image.is-5by3 img,\\n.image.is-5by3 .has-ratio, .image.is-16by9 img,\\n.image.is-16by9 .has-ratio, .image.is-2by1 img,\\n.image.is-2by1 .has-ratio, .image.is-3by1 img,\\n.image.is-3by1 .has-ratio, .image.is-4by5 img,\\n.image.is-4by5 .has-ratio, .image.is-3by4 img,\\n.image.is-3by4 .has-ratio, .image.is-2by3 img,\\n.image.is-2by3 .has-ratio, .image.is-3by5 img,\\n.image.is-3by5 .has-ratio, .image.is-9by16 img,\\n.image.is-9by16 .has-ratio, .image.is-1by2 img,\\n.image.is-1by2 .has-ratio, .image.is-1by3 img,\\n.image.is-1by3 .has-ratio, .modal, .modal-background, .is-overlay, .hero-video {\\n bottom: 0;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.button, .input, .textarea, .select select, .file-cta,\\n.file-name, .pagination-previous,\\n.pagination-next,\\n.pagination-link,\\n.pagination-ellipsis {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n align-items: center;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n box-shadow: none;\\n display: inline-flex;\\n font-size: 1rem;\\n height: 2.5em;\\n justify-content: flex-start;\\n line-height: 1.5;\\n padding-bottom: calc(0.5em - 1px);\\n padding-left: calc(0.75em - 1px);\\n padding-right: calc(0.75em - 1px);\\n padding-top: calc(0.5em - 1px);\\n position: relative;\\n vertical-align: top; }\\n .button:focus, .input:focus, .textarea:focus, .select select:focus, .file-cta:focus,\\n .file-name:focus, .pagination-previous:focus,\\n .pagination-next:focus,\\n .pagination-link:focus,\\n .pagination-ellipsis:focus, .is-focused.button, .is-focused.input, .is-focused.textarea, .select select.is-focused, .is-focused.file-cta,\\n .is-focused.file-name, .is-focused.pagination-previous,\\n .is-focused.pagination-next,\\n .is-focused.pagination-link,\\n .is-focused.pagination-ellipsis, .button:active, .input:active, .textarea:active, .select select:active, .file-cta:active,\\n .file-name:active, .pagination-previous:active,\\n .pagination-next:active,\\n .pagination-link:active,\\n .pagination-ellipsis:active, .is-active.button, .is-active.input, .is-active.textarea, .select select.is-active, .is-active.file-cta,\\n .is-active.file-name, .is-active.pagination-previous,\\n .is-active.pagination-next,\\n .is-active.pagination-link,\\n .is-active.pagination-ellipsis {\\n outline: none; }\\n .button[disabled], .input[disabled], .textarea[disabled], .select select[disabled], .file-cta[disabled],\\n .file-name[disabled], .pagination-previous[disabled],\\n .pagination-next[disabled],\\n .pagination-link[disabled],\\n .pagination-ellipsis[disabled],\\n fieldset[disabled] .button,\\n fieldset[disabled] .input,\\n fieldset[disabled] .textarea,\\n fieldset[disabled] .select select,\\n .select fieldset[disabled] select,\\n fieldset[disabled] .file-cta,\\n fieldset[disabled] .file-name,\\n fieldset[disabled] .pagination-previous,\\n fieldset[disabled] .pagination-next,\\n fieldset[disabled] .pagination-link,\\n fieldset[disabled] .pagination-ellipsis {\\n cursor: not-allowed; }\\n\\n/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */\\nhtml,\\nbody,\\np,\\nol,\\nul,\\nli,\\ndl,\\ndt,\\ndd,\\nblockquote,\\nfigure,\\nfieldset,\\nlegend,\\ntextarea,\\npre,\\niframe,\\nhr,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin: 0;\\n padding: 0; }\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: 100%;\\n font-weight: normal; }\\n\\nul {\\n list-style: none; }\\n\\nbutton,\\ninput,\\nselect,\\ntextarea {\\n margin: 0; }\\n\\nhtml {\\n box-sizing: border-box; }\\n\\n*, *::before, *::after {\\n box-sizing: inherit; }\\n\\nimg,\\nvideo {\\n height: auto;\\n max-width: 100%; }\\n\\niframe {\\n border: 0; }\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0; }\\n\\ntd,\\nth {\\n padding: 0; }\\n td:not([align]),\\n th:not([align]) {\\n text-align: inherit; }\\n\\nhtml {\\n background-color: white;\\n font-size: 16px;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n min-width: 300px;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n text-rendering: optimizeLegibility;\\n text-size-adjust: 100%; }\\n\\narticle,\\naside,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nsection {\\n display: block; }\\n\\nbody,\\nbutton,\\ninput,\\nselect,\\ntextarea {\\n font-family: BlinkMacSystemFont, -apple-system, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Oxygen\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif; }\\n\\ncode,\\npre {\\n -moz-osx-font-smoothing: auto;\\n -webkit-font-smoothing: auto;\\n font-family: monospace; }\\n\\nbody {\\n color: #4a4a4a;\\n font-size: 1em;\\n font-weight: 400;\\n line-height: 1.5; }\\n\\na {\\n color: #4876ff;\\n cursor: pointer;\\n text-decoration: none; }\\n a strong {\\n color: currentColor; }\\n a:hover {\\n color: #363636; }\\n\\ncode {\\n background-color: whitesmoke;\\n color: #f14668;\\n font-size: 0.875em;\\n font-weight: normal;\\n padding: 0.25em 0.5em 0.25em; }\\n\\nhr {\\n background-color: whitesmoke;\\n border: none;\\n display: block;\\n height: 2px;\\n margin: 1.5rem 0; }\\n\\nimg {\\n height: auto;\\n max-width: 100%; }\\n\\ninput[type=\\\"checkbox\\\"],\\ninput[type=\\\"radio\\\"] {\\n vertical-align: baseline; }\\n\\nsmall {\\n font-size: 0.875em; }\\n\\nspan {\\n font-style: inherit;\\n font-weight: inherit; }\\n\\nstrong {\\n color: #363636;\\n font-weight: 700; }\\n\\nfieldset {\\n border: none; }\\n\\npre {\\n -webkit-overflow-scrolling: touch;\\n background-color: whitesmoke;\\n color: #4a4a4a;\\n font-size: 0.875em;\\n overflow-x: auto;\\n padding: 1.25rem 1.5rem;\\n white-space: pre;\\n word-wrap: normal; }\\n pre code {\\n background-color: transparent;\\n color: currentColor;\\n font-size: 1em;\\n padding: 0; }\\n\\ntable td,\\ntable th {\\n vertical-align: top; }\\n table td:not([align]),\\n table th:not([align]) {\\n text-align: inherit; }\\n\\ntable th {\\n color: #363636; }\\n\\n.box {\\n background-color: white;\\n border-radius: 6px;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n color: #4a4a4a;\\n display: block;\\n padding: 1.25rem; }\\n\\na.box:hover, a.box:focus {\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px #4876ff; }\\n\\na.box:active {\\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #4876ff; }\\n\\n.button {\\n background-color: white;\\n border-color: #dbdbdb;\\n border-width: 1px;\\n color: #363636;\\n cursor: pointer;\\n justify-content: center;\\n padding-bottom: calc(0.5em - 1px);\\n padding-left: 1em;\\n padding-right: 1em;\\n padding-top: calc(0.5em - 1px);\\n text-align: center;\\n white-space: nowrap; }\\n .button strong {\\n color: inherit; }\\n .button .icon, .button .icon.is-small, .button .icon.is-medium, .button .icon.is-large {\\n height: 1.5em;\\n width: 1.5em; }\\n .button .icon:first-child:not(:last-child) {\\n margin-left: calc(-0.5em - 1px);\\n margin-right: 0.25em; }\\n .button .icon:last-child:not(:first-child) {\\n margin-left: 0.25em;\\n margin-right: calc(-0.5em - 1px); }\\n .button .icon:first-child:last-child {\\n margin-left: calc(-0.5em - 1px);\\n margin-right: calc(-0.5em - 1px); }\\n .button:hover, .button.is-hovered {\\n border-color: #b5b5b5;\\n color: #363636; }\\n .button:focus, .button.is-focused {\\n border-color: #3273dc;\\n color: #363636; }\\n .button:focus:not(:active), .button.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .button:active, .button.is-active {\\n border-color: #4a4a4a;\\n color: #363636; }\\n .button.is-text {\\n background-color: transparent;\\n border-color: transparent;\\n color: #4a4a4a;\\n text-decoration: underline; }\\n .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused {\\n background-color: whitesmoke;\\n color: #363636; }\\n .button.is-text:active, .button.is-text.is-active {\\n background-color: #e8e8e8;\\n color: #363636; }\\n .button.is-text[disabled],\\n fieldset[disabled] .button.is-text {\\n background-color: transparent;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-white {\\n background-color: white;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white:hover, .button.is-white.is-hovered {\\n background-color: #f9f9f9;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white:focus, .button.is-white.is-focused {\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\\n .button.is-white:active, .button.is-white.is-active {\\n background-color: #f2f2f2;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white[disabled],\\n fieldset[disabled] .button.is-white {\\n background-color: white;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-white.is-inverted {\\n background-color: #0a0a0a;\\n color: white; }\\n .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered {\\n background-color: black; }\\n .button.is-white.is-inverted[disabled],\\n fieldset[disabled] .button.is-white.is-inverted {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n box-shadow: none;\\n color: white; }\\n .button.is-white.is-loading::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-white.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n color: white; }\\n .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused {\\n background-color: white;\\n border-color: white;\\n color: #0a0a0a; }\\n .button.is-white.is-outlined.is-loading::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-white.is-outlined[disabled],\\n fieldset[disabled] .button.is-white.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n box-shadow: none;\\n color: white; }\\n .button.is-white.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n color: #0a0a0a; }\\n .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused {\\n background-color: #0a0a0a;\\n color: white; }\\n .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-white.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-white.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n box-shadow: none;\\n color: #0a0a0a; }\\n .button.is-black {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n color: white; }\\n .button.is-black:hover, .button.is-black.is-hovered {\\n background-color: #040404;\\n border-color: transparent;\\n color: white; }\\n .button.is-black:focus, .button.is-black.is-focused {\\n border-color: transparent;\\n color: white; }\\n .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\\n .button.is-black:active, .button.is-black.is-active {\\n background-color: black;\\n border-color: transparent;\\n color: white; }\\n .button.is-black[disabled],\\n fieldset[disabled] .button.is-black {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-black.is-inverted {\\n background-color: white;\\n color: #0a0a0a; }\\n .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-black.is-inverted[disabled],\\n fieldset[disabled] .button.is-black.is-inverted {\\n background-color: white;\\n border-color: transparent;\\n box-shadow: none;\\n color: #0a0a0a; }\\n .button.is-black.is-loading::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-black.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n color: #0a0a0a; }\\n .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused {\\n background-color: #0a0a0a;\\n border-color: #0a0a0a;\\n color: white; }\\n .button.is-black.is-outlined.is-loading::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-black.is-outlined[disabled],\\n fieldset[disabled] .button.is-black.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n box-shadow: none;\\n color: #0a0a0a; }\\n .button.is-black.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n color: white; }\\n .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused {\\n background-color: white;\\n color: #0a0a0a; }\\n .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-black.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-black.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n box-shadow: none;\\n color: white; }\\n .button.is-light {\\n background-color: #d2f9d6;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light:hover, .button.is-light.is-hovered {\\n background-color: #c7f8cc;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light:focus, .button.is-light.is-focused {\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(210, 249, 214, 0.25); }\\n .button.is-light:active, .button.is-light.is-active {\\n background-color: #bcf6c2;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light[disabled],\\n fieldset[disabled] .button.is-light {\\n background-color: #d2f9d6;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-light.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #d2f9d6; }\\n .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered {\\n background-color: rgba(0, 0, 0, 0.7); }\\n .button.is-light.is-inverted[disabled],\\n fieldset[disabled] .button.is-light.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: transparent;\\n box-shadow: none;\\n color: #d2f9d6; }\\n .button.is-light.is-loading::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-light.is-outlined {\\n background-color: transparent;\\n border-color: #d2f9d6;\\n color: #d2f9d6; }\\n .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused {\\n background-color: #d2f9d6;\\n border-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light.is-outlined.is-loading::after {\\n border-color: transparent transparent #d2f9d6 #d2f9d6 !important; }\\n .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-light.is-outlined[disabled],\\n fieldset[disabled] .button.is-light.is-outlined {\\n background-color: transparent;\\n border-color: #d2f9d6;\\n box-shadow: none;\\n color: #d2f9d6; }\\n .button.is-light.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #d2f9d6; }\\n .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #d2f9d6 #d2f9d6 !important; }\\n .button.is-light.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-light.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n box-shadow: none;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-dark {\\n background-color: #459558;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark:hover, .button.is-dark.is-hovered {\\n background-color: #418c53;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark:focus, .button.is-dark.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark:focus:not(:active), .button.is-dark.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(69, 149, 88, 0.25); }\\n .button.is-dark:active, .button.is-dark.is-active {\\n background-color: #3d844e;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark[disabled],\\n fieldset[disabled] .button.is-dark {\\n background-color: #459558;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-dark.is-inverted {\\n background-color: #fff;\\n color: #459558; }\\n .button.is-dark.is-inverted:hover, .button.is-dark.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-dark.is-inverted[disabled],\\n fieldset[disabled] .button.is-dark.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #459558; }\\n .button.is-dark.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-dark.is-outlined {\\n background-color: transparent;\\n border-color: #459558;\\n color: #459558; }\\n .button.is-dark.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .button.is-dark.is-outlined.is-focused {\\n background-color: #459558;\\n border-color: #459558;\\n color: #fff; }\\n .button.is-dark.is-outlined.is-loading::after {\\n border-color: transparent transparent #459558 #459558 !important; }\\n .button.is-dark.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-dark.is-outlined[disabled],\\n fieldset[disabled] .button.is-dark.is-outlined {\\n background-color: transparent;\\n border-color: #459558;\\n box-shadow: none;\\n color: #459558; }\\n .button.is-dark.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-dark.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #459558; }\\n .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #459558 #459558 !important; }\\n .button.is-dark.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-dark.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-primary {\\n background-color: #55be6f;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary:hover, .button.is-primary.is-hovered {\\n background-color: #4cba67;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary:focus, .button.is-primary.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary:focus:not(:active), .button.is-primary.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(85, 190, 111, 0.25); }\\n .button.is-primary:active, .button.is-primary.is-active {\\n background-color: #45b461;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary[disabled],\\n fieldset[disabled] .button.is-primary {\\n background-color: #55be6f;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-primary.is-inverted {\\n background-color: #fff;\\n color: #55be6f; }\\n .button.is-primary.is-inverted:hover, .button.is-primary.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-primary.is-inverted[disabled],\\n fieldset[disabled] .button.is-primary.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #55be6f; }\\n .button.is-primary.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-primary.is-outlined {\\n background-color: transparent;\\n border-color: #55be6f;\\n color: #55be6f; }\\n .button.is-primary.is-outlined:hover, .button.is-primary.is-outlined.is-hovered, .button.is-primary.is-outlined:focus, .button.is-primary.is-outlined.is-focused {\\n background-color: #55be6f;\\n border-color: #55be6f;\\n color: #fff; }\\n .button.is-primary.is-outlined.is-loading::after {\\n border-color: transparent transparent #55be6f #55be6f !important; }\\n .button.is-primary.is-outlined.is-loading:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-outlined.is-loading:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-primary.is-outlined[disabled],\\n fieldset[disabled] .button.is-primary.is-outlined {\\n background-color: transparent;\\n border-color: #55be6f;\\n box-shadow: none;\\n color: #55be6f; }\\n .button.is-primary.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-primary.is-inverted.is-outlined:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .button.is-primary.is-inverted.is-outlined:focus, .button.is-primary.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #55be6f; }\\n .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #55be6f #55be6f !important; }\\n .button.is-primary.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-primary.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-primary.is-light {\\n background-color: #f0f9f2;\\n color: #2f7a41; }\\n .button.is-primary.is-light:hover, .button.is-primary.is-light.is-hovered {\\n background-color: #e7f6eb;\\n border-color: transparent;\\n color: #2f7a41; }\\n .button.is-primary.is-light:active, .button.is-primary.is-light.is-active {\\n background-color: #def2e3;\\n border-color: transparent;\\n color: #2f7a41; }\\n .button.is-link {\\n background-color: #4876ff;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link:hover, .button.is-link.is-hovered {\\n background-color: #3b6cff;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link:focus, .button.is-link.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .button.is-link:active, .button.is-link.is-active {\\n background-color: #2f63ff;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link[disabled],\\n fieldset[disabled] .button.is-link {\\n background-color: #4876ff;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-link.is-inverted {\\n background-color: #fff;\\n color: #4876ff; }\\n .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-link.is-inverted[disabled],\\n fieldset[disabled] .button.is-link.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #4876ff; }\\n .button.is-link.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-link.is-outlined {\\n background-color: transparent;\\n border-color: #4876ff;\\n color: #4876ff; }\\n .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff; }\\n .button.is-link.is-outlined.is-loading::after {\\n border-color: transparent transparent #4876ff #4876ff !important; }\\n .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-link.is-outlined[disabled],\\n fieldset[disabled] .button.is-link.is-outlined {\\n background-color: transparent;\\n border-color: #4876ff;\\n box-shadow: none;\\n color: #4876ff; }\\n .button.is-link.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #4876ff; }\\n .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #4876ff #4876ff !important; }\\n .button.is-link.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-link.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-link.is-light {\\n background-color: #ebf0ff;\\n color: #0037db; }\\n .button.is-link.is-light:hover, .button.is-link.is-light.is-hovered {\\n background-color: #dee6ff;\\n border-color: transparent;\\n color: #0037db; }\\n .button.is-link.is-light:active, .button.is-link.is-light.is-active {\\n background-color: #d1ddff;\\n border-color: transparent;\\n color: #0037db; }\\n .button.is-info {\\n background-color: #f0f8ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info:hover, .button.is-info.is-hovered {\\n background-color: #e3f2ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info:focus, .button.is-info.is-focused {\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(240, 248, 255, 0.25); }\\n .button.is-info:active, .button.is-info.is-active {\\n background-color: #d7ecff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info[disabled],\\n fieldset[disabled] .button.is-info {\\n background-color: #f0f8ff;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-info.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #f0f8ff; }\\n .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered {\\n background-color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-inverted[disabled],\\n fieldset[disabled] .button.is-info.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: transparent;\\n box-shadow: none;\\n color: #f0f8ff; }\\n .button.is-info.is-loading::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-info.is-outlined {\\n background-color: transparent;\\n border-color: #f0f8ff;\\n color: #f0f8ff; }\\n .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused {\\n background-color: #f0f8ff;\\n border-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-outlined.is-loading::after {\\n border-color: transparent transparent #f0f8ff #f0f8ff !important; }\\n .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-info.is-outlined[disabled],\\n fieldset[disabled] .button.is-info.is-outlined {\\n background-color: transparent;\\n border-color: #f0f8ff;\\n box-shadow: none;\\n color: #f0f8ff; }\\n .button.is-info.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #f0f8ff; }\\n .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #f0f8ff #f0f8ff !important; }\\n .button.is-info.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-info.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n box-shadow: none;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-light {\\n background-color: aliceblue;\\n color: #004f94; }\\n .button.is-info.is-light:hover, .button.is-info.is-light.is-hovered {\\n background-color: #e3f2ff;\\n border-color: transparent;\\n color: #004f94; }\\n .button.is-info.is-light:active, .button.is-info.is-light.is-active {\\n background-color: #d7ecff;\\n border-color: transparent;\\n color: #004f94; }\\n .button.is-success {\\n background-color: #48c774;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success:hover, .button.is-success.is-hovered {\\n background-color: #3ec46d;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success:focus, .button.is-success.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); }\\n .button.is-success:active, .button.is-success.is-active {\\n background-color: #3abb67;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success[disabled],\\n fieldset[disabled] .button.is-success {\\n background-color: #48c774;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-success.is-inverted {\\n background-color: #fff;\\n color: #48c774; }\\n .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-success.is-inverted[disabled],\\n fieldset[disabled] .button.is-success.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #48c774; }\\n .button.is-success.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-success.is-outlined {\\n background-color: transparent;\\n border-color: #48c774;\\n color: #48c774; }\\n .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused {\\n background-color: #48c774;\\n border-color: #48c774;\\n color: #fff; }\\n .button.is-success.is-outlined.is-loading::after {\\n border-color: transparent transparent #48c774 #48c774 !important; }\\n .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-success.is-outlined[disabled],\\n fieldset[disabled] .button.is-success.is-outlined {\\n background-color: transparent;\\n border-color: #48c774;\\n box-shadow: none;\\n color: #48c774; }\\n .button.is-success.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #48c774; }\\n .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #48c774 #48c774 !important; }\\n .button.is-success.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-success.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-success.is-light {\\n background-color: #effaf3;\\n color: #257942; }\\n .button.is-success.is-light:hover, .button.is-success.is-light.is-hovered {\\n background-color: #e6f7ec;\\n border-color: transparent;\\n color: #257942; }\\n .button.is-success.is-light:active, .button.is-success.is-light.is-active {\\n background-color: #dcf4e4;\\n border-color: transparent;\\n color: #257942; }\\n .button.is-warning {\\n background-color: #ffd975;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning:hover, .button.is-warning.is-hovered {\\n background-color: #ffd568;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning:focus, .button.is-warning.is-focused {\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(255, 217, 117, 0.25); }\\n .button.is-warning:active, .button.is-warning.is-active {\\n background-color: #ffd25c;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning[disabled],\\n fieldset[disabled] .button.is-warning {\\n background-color: #ffd975;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-warning.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #ffd975; }\\n .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered {\\n background-color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-inverted[disabled],\\n fieldset[disabled] .button.is-warning.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: transparent;\\n box-shadow: none;\\n color: #ffd975; }\\n .button.is-warning.is-loading::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-warning.is-outlined {\\n background-color: transparent;\\n border-color: #ffd975;\\n color: #ffd975; }\\n .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused {\\n background-color: #ffd975;\\n border-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-outlined.is-loading::after {\\n border-color: transparent transparent #ffd975 #ffd975 !important; }\\n .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-warning.is-outlined[disabled],\\n fieldset[disabled] .button.is-warning.is-outlined {\\n background-color: transparent;\\n border-color: #ffd975;\\n box-shadow: none;\\n color: #ffd975; }\\n .button.is-warning.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #ffd975; }\\n .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #ffd975 #ffd975 !important; }\\n .button.is-warning.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-warning.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n box-shadow: none;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-light {\\n background-color: #fff9eb;\\n color: #946b00; }\\n .button.is-warning.is-light:hover, .button.is-warning.is-light.is-hovered {\\n background-color: #fff6de;\\n border-color: transparent;\\n color: #946b00; }\\n .button.is-warning.is-light:active, .button.is-warning.is-light.is-active {\\n background-color: #fff2d1;\\n border-color: transparent;\\n color: #946b00; }\\n .button.is-danger {\\n background-color: #f14668;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger:hover, .button.is-danger.is-hovered {\\n background-color: #f03a5f;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger:focus, .button.is-danger.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); }\\n .button.is-danger:active, .button.is-danger.is-active {\\n background-color: #ef2e55;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger[disabled],\\n fieldset[disabled] .button.is-danger {\\n background-color: #f14668;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-danger.is-inverted {\\n background-color: #fff;\\n color: #f14668; }\\n .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-danger.is-inverted[disabled],\\n fieldset[disabled] .button.is-danger.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #f14668; }\\n .button.is-danger.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-danger.is-outlined {\\n background-color: transparent;\\n border-color: #f14668;\\n color: #f14668; }\\n .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused {\\n background-color: #f14668;\\n border-color: #f14668;\\n color: #fff; }\\n .button.is-danger.is-outlined.is-loading::after {\\n border-color: transparent transparent #f14668 #f14668 !important; }\\n .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-danger.is-outlined[disabled],\\n fieldset[disabled] .button.is-danger.is-outlined {\\n background-color: transparent;\\n border-color: #f14668;\\n box-shadow: none;\\n color: #f14668; }\\n .button.is-danger.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #f14668; }\\n .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #f14668 #f14668 !important; }\\n .button.is-danger.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-danger.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-danger.is-light {\\n background-color: #feecf0;\\n color: #cc0f35; }\\n .button.is-danger.is-light:hover, .button.is-danger.is-light.is-hovered {\\n background-color: #fde0e6;\\n border-color: transparent;\\n color: #cc0f35; }\\n .button.is-danger.is-light:active, .button.is-danger.is-light.is-active {\\n background-color: #fcd4dc;\\n border-color: transparent;\\n color: #cc0f35; }\\n .button.is-small {\\n border-radius: 2px;\\n font-size: 0.75rem; }\\n .button.is-normal {\\n font-size: 1rem; }\\n .button.is-medium {\\n font-size: 1.25rem; }\\n .button.is-large {\\n font-size: 1.5rem; }\\n .button[disabled],\\n fieldset[disabled] .button {\\n background-color: white;\\n border-color: #dbdbdb;\\n box-shadow: none;\\n opacity: 0.5; }\\n .button.is-fullwidth {\\n display: flex;\\n width: 100%; }\\n .button.is-loading {\\n color: transparent !important;\\n pointer-events: none; }\\n .button.is-loading::after {\\n position: absolute;\\n left: calc(50% - (1em / 2));\\n top: calc(50% - (1em / 2));\\n position: absolute !important; }\\n .button.is-static {\\n background-color: whitesmoke;\\n border-color: #dbdbdb;\\n color: #7a7a7a;\\n box-shadow: none;\\n pointer-events: none; }\\n .button.is-rounded {\\n border-radius: 290486px;\\n padding-left: calc(1em + 0.25em);\\n padding-right: calc(1em + 0.25em); }\\n\\n.buttons {\\n align-items: center;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start; }\\n .buttons .button {\\n margin-bottom: 0.5rem; }\\n .buttons .button:not(:last-child):not(.is-fullwidth) {\\n margin-right: 0.5rem; }\\n .buttons:last-child {\\n margin-bottom: -0.5rem; }\\n .buttons:not(:last-child) {\\n margin-bottom: 1rem; }\\n .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) {\\n border-radius: 2px;\\n font-size: 0.75rem; }\\n .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) {\\n font-size: 1.25rem; }\\n .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) {\\n font-size: 1.5rem; }\\n .buttons.has-addons .button:not(:first-child) {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0; }\\n .buttons.has-addons .button:not(:last-child) {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n margin-right: -1px; }\\n .buttons.has-addons .button:last-child {\\n margin-right: 0; }\\n .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered {\\n z-index: 2; }\\n .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected {\\n z-index: 3; }\\n .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover {\\n z-index: 4; }\\n .buttons.has-addons .button.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .buttons.is-centered {\\n justify-content: center; }\\n .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) {\\n margin-left: 0.25rem;\\n margin-right: 0.25rem; }\\n .buttons.is-right {\\n justify-content: flex-end; }\\n .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) {\\n margin-left: 0.25rem;\\n margin-right: 0.25rem; }\\n\\n.container {\\n flex-grow: 1;\\n margin: 0 auto;\\n position: relative;\\n width: auto; }\\n .container.is-fluid {\\n max-width: none;\\n padding-left: 32px;\\n padding-right: 32px;\\n width: 100%; }\\n @media screen and (min-width: 1024px) {\\n .container {\\n max-width: 960px; } }\\n @media screen and (max-width: 1215px) {\\n .container.is-widescreen {\\n max-width: 1152px; } }\\n @media screen and (max-width: 1407px) {\\n .container.is-fullhd {\\n max-width: 1344px; } }\\n @media screen and (min-width: 1216px) {\\n .container {\\n max-width: 1152px; } }\\n @media screen and (min-width: 1408px) {\\n .container {\\n max-width: 1344px; } }\\n\\n.content li + li {\\n margin-top: 0.25em; }\\n\\n.content p:not(:last-child),\\n.content dl:not(:last-child),\\n.content ol:not(:last-child),\\n.content ul:not(:last-child),\\n.content blockquote:not(:last-child),\\n.content pre:not(:last-child),\\n.content table:not(:last-child) {\\n margin-bottom: 1em; }\\n\\n.content h1,\\n.content h2,\\n.content h3,\\n.content h4,\\n.content h5,\\n.content h6 {\\n color: #363636;\\n font-weight: 600;\\n line-height: 1.125; }\\n\\n.content h1 {\\n font-size: 2em;\\n margin-bottom: 0.5em; }\\n .content h1:not(:first-child) {\\n margin-top: 1em; }\\n\\n.content h2 {\\n font-size: 1.75em;\\n margin-bottom: 0.5714em; }\\n .content h2:not(:first-child) {\\n margin-top: 1.1428em; }\\n\\n.content h3 {\\n font-size: 1.5em;\\n margin-bottom: 0.6666em; }\\n .content h3:not(:first-child) {\\n margin-top: 1.3333em; }\\n\\n.content h4 {\\n font-size: 1.25em;\\n margin-bottom: 0.8em; }\\n\\n.content h5 {\\n font-size: 1.125em;\\n margin-bottom: 0.8888em; }\\n\\n.content h6 {\\n font-size: 1em;\\n margin-bottom: 1em; }\\n\\n.content blockquote {\\n background-color: whitesmoke;\\n border-left: 5px solid #dbdbdb;\\n padding: 1.25em 1.5em; }\\n\\n.content ol {\\n list-style-position: outside;\\n margin-left: 2em;\\n margin-top: 1em; }\\n .content ol:not([type]) {\\n list-style-type: decimal; }\\n .content ol:not([type]).is-lower-alpha {\\n list-style-type: lower-alpha; }\\n .content ol:not([type]).is-lower-roman {\\n list-style-type: lower-roman; }\\n .content ol:not([type]).is-upper-alpha {\\n list-style-type: upper-alpha; }\\n .content ol:not([type]).is-upper-roman {\\n list-style-type: upper-roman; }\\n\\n.content ul {\\n list-style: disc outside;\\n margin-left: 2em;\\n margin-top: 1em; }\\n .content ul ul {\\n list-style-type: circle;\\n margin-top: 0.5em; }\\n .content ul ul ul {\\n list-style-type: square; }\\n\\n.content dd {\\n margin-left: 2em; }\\n\\n.content figure {\\n margin-left: 2em;\\n margin-right: 2em;\\n text-align: center; }\\n .content figure:not(:first-child) {\\n margin-top: 2em; }\\n .content figure:not(:last-child) {\\n margin-bottom: 2em; }\\n .content figure img {\\n display: inline-block; }\\n .content figure figcaption {\\n font-style: italic; }\\n\\n.content pre {\\n -webkit-overflow-scrolling: touch;\\n overflow-x: auto;\\n padding: 1.25em 1.5em;\\n white-space: pre;\\n word-wrap: normal; }\\n\\n.content sup,\\n.content sub {\\n font-size: 75%; }\\n\\n.content table {\\n width: 100%; }\\n .content table td,\\n .content table th {\\n border: 1px solid #dbdbdb;\\n border-width: 0 0 1px;\\n padding: 0.5em 0.75em;\\n vertical-align: top; }\\n .content table th {\\n color: #363636; }\\n .content table th:not([align]) {\\n text-align: inherit; }\\n .content table thead td,\\n .content table thead th {\\n border-width: 0 0 2px;\\n color: #363636; }\\n .content table tfoot td,\\n .content table tfoot th {\\n border-width: 2px 0 0;\\n color: #363636; }\\n .content table tbody tr:last-child td,\\n .content table tbody tr:last-child th {\\n border-bottom-width: 0; }\\n\\n.content .tabs li + li {\\n margin-top: 0; }\\n\\n.content.is-small {\\n font-size: 0.75rem; }\\n\\n.content.is-medium {\\n font-size: 1.25rem; }\\n\\n.content.is-large {\\n font-size: 1.5rem; }\\n\\n.icon {\\n align-items: center;\\n display: inline-flex;\\n justify-content: center;\\n height: 1.5rem;\\n width: 1.5rem; }\\n .icon.is-small {\\n height: 1rem;\\n width: 1rem; }\\n .icon.is-medium {\\n height: 2rem;\\n width: 2rem; }\\n .icon.is-large {\\n height: 3rem;\\n width: 3rem; }\\n\\n.image {\\n display: block;\\n position: relative; }\\n .image img {\\n display: block;\\n height: auto;\\n width: 100%; }\\n .image img.is-rounded {\\n border-radius: 290486px; }\\n .image.is-fullwidth {\\n width: 100%; }\\n .image.is-square img,\\n .image.is-square .has-ratio, .image.is-1by1 img,\\n .image.is-1by1 .has-ratio, .image.is-5by4 img,\\n .image.is-5by4 .has-ratio, .image.is-4by3 img,\\n .image.is-4by3 .has-ratio, .image.is-3by2 img,\\n .image.is-3by2 .has-ratio, .image.is-5by3 img,\\n .image.is-5by3 .has-ratio, .image.is-16by9 img,\\n .image.is-16by9 .has-ratio, .image.is-2by1 img,\\n .image.is-2by1 .has-ratio, .image.is-3by1 img,\\n .image.is-3by1 .has-ratio, .image.is-4by5 img,\\n .image.is-4by5 .has-ratio, .image.is-3by4 img,\\n .image.is-3by4 .has-ratio, .image.is-2by3 img,\\n .image.is-2by3 .has-ratio, .image.is-3by5 img,\\n .image.is-3by5 .has-ratio, .image.is-9by16 img,\\n .image.is-9by16 .has-ratio, .image.is-1by2 img,\\n .image.is-1by2 .has-ratio, .image.is-1by3 img,\\n .image.is-1by3 .has-ratio {\\n height: 100%;\\n width: 100%; }\\n .image.is-square, .image.is-1by1 {\\n padding-top: 100%; }\\n .image.is-5by4 {\\n padding-top: 80%; }\\n .image.is-4by3 {\\n padding-top: 75%; }\\n .image.is-3by2 {\\n padding-top: 66.6666%; }\\n .image.is-5by3 {\\n padding-top: 60%; }\\n .image.is-16by9 {\\n padding-top: 56.25%; }\\n .image.is-2by1 {\\n padding-top: 50%; }\\n .image.is-3by1 {\\n padding-top: 33.3333%; }\\n .image.is-4by5 {\\n padding-top: 125%; }\\n .image.is-3by4 {\\n padding-top: 133.3333%; }\\n .image.is-2by3 {\\n padding-top: 150%; }\\n .image.is-3by5 {\\n padding-top: 166.6666%; }\\n .image.is-9by16 {\\n padding-top: 177.7777%; }\\n .image.is-1by2 {\\n padding-top: 200%; }\\n .image.is-1by3 {\\n padding-top: 300%; }\\n .image.is-16x16 {\\n height: 16px;\\n width: 16px; }\\n .image.is-24x24 {\\n height: 24px;\\n width: 24px; }\\n .image.is-32x32 {\\n height: 32px;\\n width: 32px; }\\n .image.is-48x48 {\\n height: 48px;\\n width: 48px; }\\n .image.is-64x64 {\\n height: 64px;\\n width: 64px; }\\n .image.is-96x96 {\\n height: 96px;\\n width: 96px; }\\n .image.is-128x128 {\\n height: 128px;\\n width: 128px; }\\n\\n.notification {\\n background-color: whitesmoke;\\n border-radius: 4px;\\n position: relative;\\n padding: 1.25rem 2.5rem 1.25rem 1.5rem; }\\n .notification a:not(.button):not(.dropdown-item) {\\n color: currentColor;\\n text-decoration: underline; }\\n .notification strong {\\n color: currentColor; }\\n .notification code,\\n .notification pre {\\n background: white; }\\n .notification pre code {\\n background: transparent; }\\n .notification > .delete {\\n right: 0.5rem;\\n position: absolute;\\n top: 0.5rem; }\\n .notification .title,\\n .notification .subtitle,\\n .notification .content {\\n color: currentColor; }\\n .notification.is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .notification.is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .notification.is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .notification.is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .notification.is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .notification.is-primary.is-light {\\n background-color: #f0f9f2;\\n color: #2f7a41; }\\n .notification.is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .notification.is-link.is-light {\\n background-color: #ebf0ff;\\n color: #0037db; }\\n .notification.is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .notification.is-info.is-light {\\n background-color: aliceblue;\\n color: #004f94; }\\n .notification.is-success {\\n background-color: #48c774;\\n color: #fff; }\\n .notification.is-success.is-light {\\n background-color: #effaf3;\\n color: #257942; }\\n .notification.is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .notification.is-warning.is-light {\\n background-color: #fff9eb;\\n color: #946b00; }\\n .notification.is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .notification.is-danger.is-light {\\n background-color: #feecf0;\\n color: #cc0f35; }\\n\\n.progress {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n border: none;\\n border-radius: 290486px;\\n display: block;\\n height: 1rem;\\n overflow: hidden;\\n padding: 0;\\n width: 100%; }\\n .progress::-webkit-progress-bar {\\n background-color: #ededed; }\\n .progress::-webkit-progress-value {\\n background-color: #4a4a4a; }\\n .progress::-moz-progress-bar {\\n background-color: #4a4a4a; }\\n .progress::-ms-fill {\\n background-color: #4a4a4a;\\n border: none; }\\n .progress.is-white::-webkit-progress-value {\\n background-color: white; }\\n .progress.is-white::-moz-progress-bar {\\n background-color: white; }\\n .progress.is-white::-ms-fill {\\n background-color: white; }\\n .progress.is-white:indeterminate {\\n background-image: linear-gradient(to right, white 30%, #ededed 30%); }\\n .progress.is-black::-webkit-progress-value {\\n background-color: #0a0a0a; }\\n .progress.is-black::-moz-progress-bar {\\n background-color: #0a0a0a; }\\n .progress.is-black::-ms-fill {\\n background-color: #0a0a0a; }\\n .progress.is-black:indeterminate {\\n background-image: linear-gradient(to right, #0a0a0a 30%, #ededed 30%); }\\n .progress.is-light::-webkit-progress-value {\\n background-color: #d2f9d6; }\\n .progress.is-light::-moz-progress-bar {\\n background-color: #d2f9d6; }\\n .progress.is-light::-ms-fill {\\n background-color: #d2f9d6; }\\n .progress.is-light:indeterminate {\\n background-image: linear-gradient(to right, #d2f9d6 30%, #ededed 30%); }\\n .progress.is-dark::-webkit-progress-value {\\n background-color: #459558; }\\n .progress.is-dark::-moz-progress-bar {\\n background-color: #459558; }\\n .progress.is-dark::-ms-fill {\\n background-color: #459558; }\\n .progress.is-dark:indeterminate {\\n background-image: linear-gradient(to right, #459558 30%, #ededed 30%); }\\n .progress.is-primary::-webkit-progress-value {\\n background-color: #55be6f; }\\n .progress.is-primary::-moz-progress-bar {\\n background-color: #55be6f; }\\n .progress.is-primary::-ms-fill {\\n background-color: #55be6f; }\\n .progress.is-primary:indeterminate {\\n background-image: linear-gradient(to right, #55be6f 30%, #ededed 30%); }\\n .progress.is-link::-webkit-progress-value {\\n background-color: #4876ff; }\\n .progress.is-link::-moz-progress-bar {\\n background-color: #4876ff; }\\n .progress.is-link::-ms-fill {\\n background-color: #4876ff; }\\n .progress.is-link:indeterminate {\\n background-image: linear-gradient(to right, #4876ff 30%, #ededed 30%); }\\n .progress.is-info::-webkit-progress-value {\\n background-color: #f0f8ff; }\\n .progress.is-info::-moz-progress-bar {\\n background-color: #f0f8ff; }\\n .progress.is-info::-ms-fill {\\n background-color: #f0f8ff; }\\n .progress.is-info:indeterminate {\\n background-image: linear-gradient(to right, #f0f8ff 30%, #ededed 30%); }\\n .progress.is-success::-webkit-progress-value {\\n background-color: #48c774; }\\n .progress.is-success::-moz-progress-bar {\\n background-color: #48c774; }\\n .progress.is-success::-ms-fill {\\n background-color: #48c774; }\\n .progress.is-success:indeterminate {\\n background-image: linear-gradient(to right, #48c774 30%, #ededed 30%); }\\n .progress.is-warning::-webkit-progress-value {\\n background-color: #ffd975; }\\n .progress.is-warning::-moz-progress-bar {\\n background-color: #ffd975; }\\n .progress.is-warning::-ms-fill {\\n background-color: #ffd975; }\\n .progress.is-warning:indeterminate {\\n background-image: linear-gradient(to right, #ffd975 30%, #ededed 30%); }\\n .progress.is-danger::-webkit-progress-value {\\n background-color: #f14668; }\\n .progress.is-danger::-moz-progress-bar {\\n background-color: #f14668; }\\n .progress.is-danger::-ms-fill {\\n background-color: #f14668; }\\n .progress.is-danger:indeterminate {\\n background-image: linear-gradient(to right, #f14668 30%, #ededed 30%); }\\n .progress:indeterminate {\\n animation-duration: 1.5s;\\n animation-iteration-count: infinite;\\n animation-name: moveIndeterminate;\\n animation-timing-function: linear;\\n background-color: #ededed;\\n background-image: linear-gradient(to right, #4a4a4a 30%, #ededed 30%);\\n background-position: top left;\\n background-repeat: no-repeat;\\n background-size: 150% 150%; }\\n .progress:indeterminate::-webkit-progress-bar {\\n background-color: transparent; }\\n .progress:indeterminate::-moz-progress-bar {\\n background-color: transparent; }\\n .progress.is-small {\\n height: 0.75rem; }\\n .progress.is-medium {\\n height: 1.25rem; }\\n .progress.is-large {\\n height: 1.5rem; }\\n\\n@keyframes moveIndeterminate {\\n from {\\n background-position: 200% 0; }\\n to {\\n background-position: -200% 0; } }\\n\\n.table {\\n background-color: white;\\n color: #363636; }\\n .table td,\\n .table th {\\n border: 1px solid #dbdbdb;\\n border-width: 0 0 1px;\\n padding: 0.5em 0.75em;\\n vertical-align: top; }\\n .table td.is-white,\\n .table th.is-white {\\n background-color: white;\\n border-color: white;\\n color: #0a0a0a; }\\n .table td.is-black,\\n .table th.is-black {\\n background-color: #0a0a0a;\\n border-color: #0a0a0a;\\n color: white; }\\n .table td.is-light,\\n .table th.is-light {\\n background-color: #d2f9d6;\\n border-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .table td.is-dark,\\n .table th.is-dark {\\n background-color: #459558;\\n border-color: #459558;\\n color: #fff; }\\n .table td.is-primary,\\n .table th.is-primary {\\n background-color: #55be6f;\\n border-color: #55be6f;\\n color: #fff; }\\n .table td.is-link,\\n .table th.is-link {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff; }\\n .table td.is-info,\\n .table th.is-info {\\n background-color: #f0f8ff;\\n border-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .table td.is-success,\\n .table th.is-success {\\n background-color: #48c774;\\n border-color: #48c774;\\n color: #fff; }\\n .table td.is-warning,\\n .table th.is-warning {\\n background-color: #ffd975;\\n border-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .table td.is-danger,\\n .table th.is-danger {\\n background-color: #f14668;\\n border-color: #f14668;\\n color: #fff; }\\n .table td.is-narrow,\\n .table th.is-narrow {\\n white-space: nowrap;\\n width: 1%; }\\n .table td.is-selected,\\n .table th.is-selected {\\n background-color: #55be6f;\\n color: #fff; }\\n .table td.is-selected a,\\n .table td.is-selected strong,\\n .table th.is-selected a,\\n .table th.is-selected strong {\\n color: currentColor; }\\n .table td.is-vcentered,\\n .table th.is-vcentered {\\n vertical-align: middle; }\\n .table th {\\n color: #363636; }\\n .table th:not([align]) {\\n text-align: inherit; }\\n .table tr.is-selected {\\n background-color: #55be6f;\\n color: #fff; }\\n .table tr.is-selected a,\\n .table tr.is-selected strong {\\n color: currentColor; }\\n .table tr.is-selected td,\\n .table tr.is-selected th {\\n border-color: #fff;\\n color: currentColor; }\\n .table thead {\\n background-color: transparent; }\\n .table thead td,\\n .table thead th {\\n border-width: 0 0 2px;\\n color: #363636; }\\n .table tfoot {\\n background-color: transparent; }\\n .table tfoot td,\\n .table tfoot th {\\n border-width: 2px 0 0;\\n color: #363636; }\\n .table tbody {\\n background-color: transparent; }\\n .table tbody tr:last-child td,\\n .table tbody tr:last-child th {\\n border-bottom-width: 0; }\\n .table.is-bordered td,\\n .table.is-bordered th {\\n border-width: 1px; }\\n .table.is-bordered tr:last-child td,\\n .table.is-bordered tr:last-child th {\\n border-bottom-width: 1px; }\\n .table.is-fullwidth {\\n width: 100%; }\\n .table.is-hoverable tbody tr:not(.is-selected):hover {\\n background-color: #fafafa; }\\n .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover {\\n background-color: #fafafa; }\\n .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) {\\n background-color: whitesmoke; }\\n .table.is-narrow td,\\n .table.is-narrow th {\\n padding: 0.25em 0.5em; }\\n .table.is-striped tbody tr:not(.is-selected):nth-child(even) {\\n background-color: #fafafa; }\\n\\n.table-container {\\n -webkit-overflow-scrolling: touch;\\n overflow: auto;\\n overflow-y: hidden;\\n max-width: 100%; }\\n\\n.tags {\\n align-items: center;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start; }\\n .tags .tag {\\n margin-bottom: 0.5rem; }\\n .tags .tag:not(:last-child) {\\n margin-right: 0.5rem; }\\n .tags:last-child {\\n margin-bottom: -0.5rem; }\\n .tags:not(:last-child) {\\n margin-bottom: 1rem; }\\n .tags.are-medium .tag:not(.is-normal):not(.is-large) {\\n font-size: 1rem; }\\n .tags.are-large .tag:not(.is-normal):not(.is-medium) {\\n font-size: 1.25rem; }\\n .tags.is-centered {\\n justify-content: center; }\\n .tags.is-centered .tag {\\n margin-right: 0.25rem;\\n margin-left: 0.25rem; }\\n .tags.is-right {\\n justify-content: flex-end; }\\n .tags.is-right .tag:not(:first-child) {\\n margin-left: 0.5rem; }\\n .tags.is-right .tag:not(:last-child) {\\n margin-right: 0; }\\n .tags.has-addons .tag {\\n margin-right: 0; }\\n .tags.has-addons .tag:not(:first-child) {\\n margin-left: 0;\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0; }\\n .tags.has-addons .tag:not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.tag:not(body) {\\n align-items: center;\\n background-color: whitesmoke;\\n border-radius: 4px;\\n color: #4a4a4a;\\n display: inline-flex;\\n font-size: 0.75rem;\\n height: 2em;\\n justify-content: center;\\n line-height: 1.5;\\n padding-left: 0.75em;\\n padding-right: 0.75em;\\n white-space: nowrap; }\\n .tag:not(body) .delete {\\n margin-left: 0.25rem;\\n margin-right: -0.375rem; }\\n .tag:not(body).is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .tag:not(body).is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .tag:not(body).is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .tag:not(body).is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .tag:not(body).is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .tag:not(body).is-primary.is-light {\\n background-color: #f0f9f2;\\n color: #2f7a41; }\\n .tag:not(body).is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .tag:not(body).is-link.is-light {\\n background-color: #ebf0ff;\\n color: #0037db; }\\n .tag:not(body).is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .tag:not(body).is-info.is-light {\\n background-color: aliceblue;\\n color: #004f94; }\\n .tag:not(body).is-success {\\n background-color: #48c774;\\n color: #fff; }\\n .tag:not(body).is-success.is-light {\\n background-color: #effaf3;\\n color: #257942; }\\n .tag:not(body).is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .tag:not(body).is-warning.is-light {\\n background-color: #fff9eb;\\n color: #946b00; }\\n .tag:not(body).is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .tag:not(body).is-danger.is-light {\\n background-color: #feecf0;\\n color: #cc0f35; }\\n .tag:not(body).is-normal {\\n font-size: 0.75rem; }\\n .tag:not(body).is-medium {\\n font-size: 1rem; }\\n .tag:not(body).is-large {\\n font-size: 1.25rem; }\\n .tag:not(body) .icon:first-child:not(:last-child) {\\n margin-left: -0.375em;\\n margin-right: 0.1875em; }\\n .tag:not(body) .icon:last-child:not(:first-child) {\\n margin-left: 0.1875em;\\n margin-right: -0.375em; }\\n .tag:not(body) .icon:first-child:last-child {\\n margin-left: -0.375em;\\n margin-right: -0.375em; }\\n .tag:not(body).is-delete {\\n margin-left: 1px;\\n padding: 0;\\n position: relative;\\n width: 2em; }\\n .tag:not(body).is-delete::before, .tag:not(body).is-delete::after {\\n background-color: currentColor;\\n content: \\\"\\\";\\n display: block;\\n left: 50%;\\n position: absolute;\\n top: 50%;\\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\\n transform-origin: center center; }\\n .tag:not(body).is-delete::before {\\n height: 1px;\\n width: 50%; }\\n .tag:not(body).is-delete::after {\\n height: 50%;\\n width: 1px; }\\n .tag:not(body).is-delete:hover, .tag:not(body).is-delete:focus {\\n background-color: #e8e8e8; }\\n .tag:not(body).is-delete:active {\\n background-color: #dbdbdb; }\\n .tag:not(body).is-rounded {\\n border-radius: 290486px; }\\n\\na.tag:hover {\\n text-decoration: underline; }\\n\\n.title,\\n.subtitle {\\n word-break: break-word; }\\n .title em,\\n .title span,\\n .subtitle em,\\n .subtitle span {\\n font-weight: inherit; }\\n .title sub,\\n .subtitle sub {\\n font-size: 0.75em; }\\n .title sup,\\n .subtitle sup {\\n font-size: 0.75em; }\\n .title .tag,\\n .subtitle .tag {\\n vertical-align: middle; }\\n\\n.title {\\n color: #363636;\\n font-size: 2rem;\\n font-weight: 600;\\n line-height: 1.125; }\\n .title strong {\\n color: inherit;\\n font-weight: inherit; }\\n .title + .highlight {\\n margin-top: -0.75rem; }\\n .title:not(.is-spaced) + .subtitle {\\n margin-top: -1.25rem; }\\n .title.is-1 {\\n font-size: 3rem; }\\n .title.is-2 {\\n font-size: 2.5rem; }\\n .title.is-3 {\\n font-size: 2rem; }\\n .title.is-4 {\\n font-size: 1.5rem; }\\n .title.is-5 {\\n font-size: 1.25rem; }\\n .title.is-6 {\\n font-size: 1rem; }\\n .title.is-7 {\\n font-size: 0.75rem; }\\n\\n.subtitle {\\n color: #4a4a4a;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25; }\\n .subtitle strong {\\n color: #363636;\\n font-weight: 600; }\\n .subtitle:not(.is-spaced) + .title {\\n margin-top: -1.25rem; }\\n .subtitle.is-1 {\\n font-size: 3rem; }\\n .subtitle.is-2 {\\n font-size: 2.5rem; }\\n .subtitle.is-3 {\\n font-size: 2rem; }\\n .subtitle.is-4 {\\n font-size: 1.5rem; }\\n .subtitle.is-5 {\\n font-size: 1.25rem; }\\n .subtitle.is-6 {\\n font-size: 1rem; }\\n .subtitle.is-7 {\\n font-size: 0.75rem; }\\n\\n.heading {\\n display: block;\\n font-size: 11px;\\n letter-spacing: 1px;\\n margin-bottom: 5px;\\n text-transform: uppercase; }\\n\\n.highlight {\\n font-weight: 400;\\n max-width: 100%;\\n overflow: hidden;\\n padding: 0; }\\n .highlight pre {\\n overflow: auto;\\n max-width: 100%; }\\n\\n.number {\\n align-items: center;\\n background-color: whitesmoke;\\n border-radius: 290486px;\\n display: inline-flex;\\n font-size: 1.25rem;\\n height: 2em;\\n justify-content: center;\\n margin-right: 1.5rem;\\n min-width: 2.5em;\\n padding: 0.25rem 0.5rem;\\n text-align: center;\\n vertical-align: top; }\\n\\n.input, .textarea, .select select {\\n background-color: white;\\n border-color: #dbdbdb;\\n border-radius: 4px;\\n color: #363636; }\\n .input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder {\\n color: #757575; }\\n .input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder {\\n color: #757575; }\\n .input:-moz-placeholder, .textarea:-moz-placeholder, .select select:-moz-placeholder {\\n color: #757575; }\\n .input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder {\\n color: #757575; }\\n .input:hover, .textarea:hover, .select select:hover, .is-hovered.input, .is-hovered.textarea, .select select.is-hovered {\\n border-color: #b5b5b5; }\\n .input:focus, .textarea:focus, .select select:focus, .is-focused.input, .is-focused.textarea, .select select.is-focused, .input:active, .textarea:active, .select select:active, .is-active.input, .is-active.textarea, .select select.is-active {\\n border-color: #4876ff;\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .input[disabled], .textarea[disabled], .select select[disabled],\\n fieldset[disabled] .input,\\n fieldset[disabled] .textarea,\\n fieldset[disabled] .select select,\\n .select fieldset[disabled] select {\\n background-color: whitesmoke;\\n border-color: whitesmoke;\\n box-shadow: none;\\n color: #7a7a7a; }\\n .input[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .select select[disabled]::-moz-placeholder,\\n fieldset[disabled] .input::-moz-placeholder,\\n fieldset[disabled] .textarea::-moz-placeholder,\\n fieldset[disabled] .select select::-moz-placeholder,\\n .select fieldset[disabled] select::-moz-placeholder {\\n color: #707070; }\\n .input[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .select select[disabled]::-webkit-input-placeholder,\\n fieldset[disabled] .input::-webkit-input-placeholder,\\n fieldset[disabled] .textarea::-webkit-input-placeholder,\\n fieldset[disabled] .select select::-webkit-input-placeholder,\\n .select fieldset[disabled] select::-webkit-input-placeholder {\\n color: #707070; }\\n .input[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .select select[disabled]:-moz-placeholder,\\n fieldset[disabled] .input:-moz-placeholder,\\n fieldset[disabled] .textarea:-moz-placeholder,\\n fieldset[disabled] .select select:-moz-placeholder,\\n .select fieldset[disabled] select:-moz-placeholder {\\n color: #707070; }\\n .input[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .select select[disabled]:-ms-input-placeholder,\\n fieldset[disabled] .input:-ms-input-placeholder,\\n fieldset[disabled] .textarea:-ms-input-placeholder,\\n fieldset[disabled] .select select:-ms-input-placeholder,\\n .select fieldset[disabled] select:-ms-input-placeholder {\\n color: #707070; }\\n\\n.input, .textarea {\\n box-shadow: inset 0 0.0625em 0.125em rgba(10, 10, 10, 0.05);\\n max-width: 100%;\\n width: 100%; }\\n .input[readonly], .textarea[readonly] {\\n box-shadow: none; }\\n .is-white.input, .is-white.textarea {\\n border-color: white; }\\n .is-white.input:focus, .is-white.textarea:focus, .is-white.is-focused.input, .is-white.is-focused.textarea, .is-white.input:active, .is-white.textarea:active, .is-white.is-active.input, .is-white.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\\n .is-black.input, .is-black.textarea {\\n border-color: #0a0a0a; }\\n .is-black.input:focus, .is-black.textarea:focus, .is-black.is-focused.input, .is-black.is-focused.textarea, .is-black.input:active, .is-black.textarea:active, .is-black.is-active.input, .is-black.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\\n .is-light.input, .is-light.textarea {\\n border-color: #d2f9d6; }\\n .is-light.input:focus, .is-light.textarea:focus, .is-light.is-focused.input, .is-light.is-focused.textarea, .is-light.input:active, .is-light.textarea:active, .is-light.is-active.input, .is-light.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(210, 249, 214, 0.25); }\\n .is-dark.input, .is-dark.textarea {\\n border-color: #459558; }\\n .is-dark.input:focus, .is-dark.textarea:focus, .is-dark.is-focused.input, .is-dark.is-focused.textarea, .is-dark.input:active, .is-dark.textarea:active, .is-dark.is-active.input, .is-dark.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(69, 149, 88, 0.25); }\\n .is-primary.input, .is-primary.textarea {\\n border-color: #55be6f; }\\n .is-primary.input:focus, .is-primary.textarea:focus, .is-primary.is-focused.input, .is-primary.is-focused.textarea, .is-primary.input:active, .is-primary.textarea:active, .is-primary.is-active.input, .is-primary.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(85, 190, 111, 0.25); }\\n .is-link.input, .is-link.textarea {\\n border-color: #4876ff; }\\n .is-link.input:focus, .is-link.textarea:focus, .is-link.is-focused.input, .is-link.is-focused.textarea, .is-link.input:active, .is-link.textarea:active, .is-link.is-active.input, .is-link.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .is-info.input, .is-info.textarea {\\n border-color: #f0f8ff; }\\n .is-info.input:focus, .is-info.textarea:focus, .is-info.is-focused.input, .is-info.is-focused.textarea, .is-info.input:active, .is-info.textarea:active, .is-info.is-active.input, .is-info.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(240, 248, 255, 0.25); }\\n .is-success.input, .is-success.textarea {\\n border-color: #48c774; }\\n .is-success.input:focus, .is-success.textarea:focus, .is-success.is-focused.input, .is-success.is-focused.textarea, .is-success.input:active, .is-success.textarea:active, .is-success.is-active.input, .is-success.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); }\\n .is-warning.input, .is-warning.textarea {\\n border-color: #ffd975; }\\n .is-warning.input:focus, .is-warning.textarea:focus, .is-warning.is-focused.input, .is-warning.is-focused.textarea, .is-warning.input:active, .is-warning.textarea:active, .is-warning.is-active.input, .is-warning.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(255, 217, 117, 0.25); }\\n .is-danger.input, .is-danger.textarea {\\n border-color: #f14668; }\\n .is-danger.input:focus, .is-danger.textarea:focus, .is-danger.is-focused.input, .is-danger.is-focused.textarea, .is-danger.input:active, .is-danger.textarea:active, .is-danger.is-active.input, .is-danger.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); }\\n .is-small.input, .is-small.textarea {\\n border-radius: 2px;\\n font-size: 0.75rem; }\\n .is-medium.input, .is-medium.textarea {\\n font-size: 1.25rem; }\\n .is-large.input, .is-large.textarea {\\n font-size: 1.5rem; }\\n .is-fullwidth.input, .is-fullwidth.textarea {\\n display: block;\\n width: 100%; }\\n .is-inline.input, .is-inline.textarea {\\n display: inline;\\n width: auto; }\\n\\n.input.is-rounded {\\n border-radius: 290486px;\\n padding-left: calc(calc(0.75em - 1px) + 0.375em);\\n padding-right: calc(calc(0.75em - 1px) + 0.375em); }\\n\\n.input.is-static {\\n background-color: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n padding-left: 0;\\n padding-right: 0; }\\n\\n.textarea {\\n display: block;\\n max-width: 100%;\\n min-width: 100%;\\n padding: calc(0.75em - 1px);\\n resize: vertical; }\\n .textarea:not([rows]) {\\n max-height: 40em;\\n min-height: 8em; }\\n .textarea[rows] {\\n height: initial; }\\n .textarea.has-fixed-size {\\n resize: none; }\\n\\n.checkbox, .radio {\\n cursor: pointer;\\n display: inline-block;\\n line-height: 1.25;\\n position: relative; }\\n .checkbox input, .radio input {\\n cursor: pointer; }\\n .checkbox:hover, .radio:hover {\\n color: #363636; }\\n .checkbox[disabled], .radio[disabled],\\n fieldset[disabled] .checkbox,\\n fieldset[disabled] .radio {\\n color: #7a7a7a;\\n cursor: not-allowed; }\\n\\n.radio + .radio {\\n margin-left: 0.5em; }\\n\\n.select {\\n display: inline-block;\\n max-width: 100%;\\n position: relative;\\n vertical-align: top; }\\n .select:not(.is-multiple) {\\n height: 2.5em; }\\n .select:not(.is-multiple):not(.is-loading)::after {\\n border-color: #4876ff;\\n right: 1.125em;\\n z-index: 4; }\\n .select.is-rounded select {\\n border-radius: 290486px;\\n padding-left: 1em; }\\n .select select {\\n cursor: pointer;\\n display: block;\\n font-size: 1em;\\n max-width: 100%;\\n outline: none; }\\n .select select::-ms-expand {\\n display: none; }\\n .select select[disabled]:hover,\\n fieldset[disabled] .select select:hover {\\n border-color: whitesmoke; }\\n .select select:not([multiple]) {\\n padding-right: 2.5em; }\\n .select select[multiple] {\\n height: auto;\\n padding: 0; }\\n .select select[multiple] option {\\n padding: 0.5em 1em; }\\n .select:not(.is-multiple):not(.is-loading):hover::after {\\n border-color: #363636; }\\n .select.is-white:not(:hover)::after {\\n border-color: white; }\\n .select.is-white select {\\n border-color: white; }\\n .select.is-white select:hover, .select.is-white select.is-hovered {\\n border-color: #f2f2f2; }\\n .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\\n .select.is-black:not(:hover)::after {\\n border-color: #0a0a0a; }\\n .select.is-black select {\\n border-color: #0a0a0a; }\\n .select.is-black select:hover, .select.is-black select.is-hovered {\\n border-color: black; }\\n .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\\n .select.is-light:not(:hover)::after {\\n border-color: #d2f9d6; }\\n .select.is-light select {\\n border-color: #d2f9d6; }\\n .select.is-light select:hover, .select.is-light select.is-hovered {\\n border-color: #bcf6c2; }\\n .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(210, 249, 214, 0.25); }\\n .select.is-dark:not(:hover)::after {\\n border-color: #459558; }\\n .select.is-dark select {\\n border-color: #459558; }\\n .select.is-dark select:hover, .select.is-dark select.is-hovered {\\n border-color: #3d844e; }\\n .select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(69, 149, 88, 0.25); }\\n .select.is-primary:not(:hover)::after {\\n border-color: #55be6f; }\\n .select.is-primary select {\\n border-color: #55be6f; }\\n .select.is-primary select:hover, .select.is-primary select.is-hovered {\\n border-color: #45b461; }\\n .select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(85, 190, 111, 0.25); }\\n .select.is-link:not(:hover)::after {\\n border-color: #4876ff; }\\n .select.is-link select {\\n border-color: #4876ff; }\\n .select.is-link select:hover, .select.is-link select.is-hovered {\\n border-color: #2f63ff; }\\n .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .select.is-info:not(:hover)::after {\\n border-color: #f0f8ff; }\\n .select.is-info select {\\n border-color: #f0f8ff; }\\n .select.is-info select:hover, .select.is-info select.is-hovered {\\n border-color: #d7ecff; }\\n .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(240, 248, 255, 0.25); }\\n .select.is-success:not(:hover)::after {\\n border-color: #48c774; }\\n .select.is-success select {\\n border-color: #48c774; }\\n .select.is-success select:hover, .select.is-success select.is-hovered {\\n border-color: #3abb67; }\\n .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); }\\n .select.is-warning:not(:hover)::after {\\n border-color: #ffd975; }\\n .select.is-warning select {\\n border-color: #ffd975; }\\n .select.is-warning select:hover, .select.is-warning select.is-hovered {\\n border-color: #ffd25c; }\\n .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(255, 217, 117, 0.25); }\\n .select.is-danger:not(:hover)::after {\\n border-color: #f14668; }\\n .select.is-danger select {\\n border-color: #f14668; }\\n .select.is-danger select:hover, .select.is-danger select.is-hovered {\\n border-color: #ef2e55; }\\n .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); }\\n .select.is-small {\\n border-radius: 2px;\\n font-size: 0.75rem; }\\n .select.is-medium {\\n font-size: 1.25rem; }\\n .select.is-large {\\n font-size: 1.5rem; }\\n .select.is-disabled::after {\\n border-color: #7a7a7a; }\\n .select.is-fullwidth {\\n width: 100%; }\\n .select.is-fullwidth select {\\n width: 100%; }\\n .select.is-loading::after {\\n margin-top: 0;\\n position: absolute;\\n right: 0.625em;\\n top: 0.625em;\\n transform: none; }\\n .select.is-loading.is-small:after {\\n font-size: 0.75rem; }\\n .select.is-loading.is-medium:after {\\n font-size: 1.25rem; }\\n .select.is-loading.is-large:after {\\n font-size: 1.5rem; }\\n\\n.file {\\n align-items: stretch;\\n display: flex;\\n justify-content: flex-start;\\n position: relative; }\\n .file.is-white .file-cta {\\n background-color: white;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta {\\n background-color: #f9f9f9;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);\\n color: #0a0a0a; }\\n .file.is-white:active .file-cta, .file.is-white.is-active .file-cta {\\n background-color: #f2f2f2;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .file.is-black .file-cta {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n color: white; }\\n .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta {\\n background-color: #040404;\\n border-color: transparent;\\n color: white; }\\n .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);\\n color: white; }\\n .file.is-black:active .file-cta, .file.is-black.is-active .file-cta {\\n background-color: black;\\n border-color: transparent;\\n color: white; }\\n .file.is-light .file-cta {\\n background-color: #d2f9d6;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta {\\n background-color: #c7f8cc;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(210, 249, 214, 0.25);\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-light:active .file-cta, .file.is-light.is-active .file-cta {\\n background-color: #bcf6c2;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-dark .file-cta {\\n background-color: #459558;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta {\\n background-color: #418c53;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(69, 149, 88, 0.25);\\n color: #fff; }\\n .file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta {\\n background-color: #3d844e;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-primary .file-cta {\\n background-color: #55be6f;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta {\\n background-color: #4cba67;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(85, 190, 111, 0.25);\\n color: #fff; }\\n .file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta {\\n background-color: #45b461;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-link .file-cta {\\n background-color: #4876ff;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta {\\n background-color: #3b6cff;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(72, 118, 255, 0.25);\\n color: #fff; }\\n .file.is-link:active .file-cta, .file.is-link.is-active .file-cta {\\n background-color: #2f63ff;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-info .file-cta {\\n background-color: #f0f8ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta {\\n background-color: #e3f2ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(240, 248, 255, 0.25);\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-info:active .file-cta, .file.is-info.is-active .file-cta {\\n background-color: #d7ecff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-success .file-cta {\\n background-color: #48c774;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta {\\n background-color: #3ec46d;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(72, 199, 116, 0.25);\\n color: #fff; }\\n .file.is-success:active .file-cta, .file.is-success.is-active .file-cta {\\n background-color: #3abb67;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-warning .file-cta {\\n background-color: #ffd975;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta {\\n background-color: #ffd568;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(255, 217, 117, 0.25);\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta {\\n background-color: #ffd25c;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-danger .file-cta {\\n background-color: #f14668;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta {\\n background-color: #f03a5f;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(241, 70, 104, 0.25);\\n color: #fff; }\\n .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta {\\n background-color: #ef2e55;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-small {\\n font-size: 0.75rem; }\\n .file.is-medium {\\n font-size: 1.25rem; }\\n .file.is-medium .file-icon .fa {\\n font-size: 21px; }\\n .file.is-large {\\n font-size: 1.5rem; }\\n .file.is-large .file-icon .fa {\\n font-size: 28px; }\\n .file.has-name .file-cta {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0; }\\n .file.has-name .file-name {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0; }\\n .file.has-name.is-empty .file-cta {\\n border-radius: 4px; }\\n .file.has-name.is-empty .file-name {\\n display: none; }\\n .file.is-boxed .file-label {\\n flex-direction: column; }\\n .file.is-boxed .file-cta {\\n flex-direction: column;\\n height: auto;\\n padding: 1em 3em; }\\n .file.is-boxed .file-name {\\n border-width: 0 1px 1px; }\\n .file.is-boxed .file-icon {\\n height: 1.5em;\\n width: 1.5em; }\\n .file.is-boxed .file-icon .fa {\\n font-size: 21px; }\\n .file.is-boxed.is-small .file-icon .fa {\\n font-size: 14px; }\\n .file.is-boxed.is-medium .file-icon .fa {\\n font-size: 28px; }\\n .file.is-boxed.is-large .file-icon .fa {\\n font-size: 35px; }\\n .file.is-boxed.has-name .file-cta {\\n border-radius: 4px 4px 0 0; }\\n .file.is-boxed.has-name .file-name {\\n border-radius: 0 0 4px 4px;\\n border-width: 0 1px 1px; }\\n .file.is-centered {\\n justify-content: center; }\\n .file.is-fullwidth .file-label {\\n width: 100%; }\\n .file.is-fullwidth .file-name {\\n flex-grow: 1;\\n max-width: none; }\\n .file.is-right {\\n justify-content: flex-end; }\\n .file.is-right .file-cta {\\n border-radius: 0 4px 4px 0; }\\n .file.is-right .file-name {\\n border-radius: 4px 0 0 4px;\\n border-width: 1px 0 1px 1px;\\n order: -1; }\\n\\n.file-label {\\n align-items: stretch;\\n display: flex;\\n cursor: pointer;\\n justify-content: flex-start;\\n overflow: hidden;\\n position: relative; }\\n .file-label:hover .file-cta {\\n background-color: #eeeeee;\\n color: #363636; }\\n .file-label:hover .file-name {\\n border-color: #d5d5d5; }\\n .file-label:active .file-cta {\\n background-color: #e8e8e8;\\n color: #363636; }\\n .file-label:active .file-name {\\n border-color: #cfcfcf; }\\n\\n.file-input {\\n height: 100%;\\n left: 0;\\n opacity: 0;\\n outline: none;\\n position: absolute;\\n top: 0;\\n width: 100%; }\\n\\n.file-cta,\\n.file-name {\\n border-color: #dbdbdb;\\n border-radius: 4px;\\n font-size: 1em;\\n padding-left: 1em;\\n padding-right: 1em;\\n white-space: nowrap; }\\n\\n.file-cta {\\n background-color: whitesmoke;\\n color: #4a4a4a; }\\n\\n.file-name {\\n border-color: #dbdbdb;\\n border-style: solid;\\n border-width: 1px 1px 1px 0;\\n display: block;\\n max-width: 16em;\\n overflow: hidden;\\n text-align: inherit;\\n text-overflow: ellipsis; }\\n\\n.file-icon {\\n align-items: center;\\n display: flex;\\n height: 1em;\\n justify-content: center;\\n margin-right: 0.5em;\\n width: 1em; }\\n .file-icon .fa {\\n font-size: 14px; }\\n\\n.label {\\n color: #363636;\\n display: block;\\n font-size: 1rem;\\n font-weight: 700; }\\n .label:not(:last-child) {\\n margin-bottom: 0.5em; }\\n .label.is-small {\\n font-size: 0.75rem; }\\n .label.is-medium {\\n font-size: 1.25rem; }\\n .label.is-large {\\n font-size: 1.5rem; }\\n\\n.help {\\n display: block;\\n font-size: 0.75rem;\\n margin-top: 0.25rem; }\\n .help.is-white {\\n color: white; }\\n .help.is-black {\\n color: #0a0a0a; }\\n .help.is-light {\\n color: #d2f9d6; }\\n .help.is-dark {\\n color: #459558; }\\n .help.is-primary {\\n color: #55be6f; }\\n .help.is-link {\\n color: #4876ff; }\\n .help.is-info {\\n color: #f0f8ff; }\\n .help.is-success {\\n color: #48c774; }\\n .help.is-warning {\\n color: #ffd975; }\\n .help.is-danger {\\n color: #f14668; }\\n\\n.field:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n\\n.field.has-addons {\\n display: flex;\\n justify-content: flex-start; }\\n .field.has-addons .control:not(:last-child) {\\n margin-right: -1px; }\\n .field.has-addons .control:not(:first-child):not(:last-child) .button,\\n .field.has-addons .control:not(:first-child):not(:last-child) .input,\\n .field.has-addons .control:not(:first-child):not(:last-child) .select select {\\n border-radius: 0; }\\n .field.has-addons .control:first-child:not(:only-child) .button,\\n .field.has-addons .control:first-child:not(:only-child) .input,\\n .field.has-addons .control:first-child:not(:only-child) .select select {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0; }\\n .field.has-addons .control:last-child:not(:only-child) .button,\\n .field.has-addons .control:last-child:not(:only-child) .input,\\n .field.has-addons .control:last-child:not(:only-child) .select select {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0; }\\n .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered,\\n .field.has-addons .control .input:not([disabled]):hover,\\n .field.has-addons .control .input:not([disabled]).is-hovered,\\n .field.has-addons .control .select select:not([disabled]):hover,\\n .field.has-addons .control .select select:not([disabled]).is-hovered {\\n z-index: 2; }\\n .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active,\\n .field.has-addons .control .input:not([disabled]):focus,\\n .field.has-addons .control .input:not([disabled]).is-focused,\\n .field.has-addons .control .input:not([disabled]):active,\\n .field.has-addons .control .input:not([disabled]).is-active,\\n .field.has-addons .control .select select:not([disabled]):focus,\\n .field.has-addons .control .select select:not([disabled]).is-focused,\\n .field.has-addons .control .select select:not([disabled]):active,\\n .field.has-addons .control .select select:not([disabled]).is-active {\\n z-index: 3; }\\n .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover,\\n .field.has-addons .control .input:not([disabled]):focus:hover,\\n .field.has-addons .control .input:not([disabled]).is-focused:hover,\\n .field.has-addons .control .input:not([disabled]):active:hover,\\n .field.has-addons .control .input:not([disabled]).is-active:hover,\\n .field.has-addons .control .select select:not([disabled]):focus:hover,\\n .field.has-addons .control .select select:not([disabled]).is-focused:hover,\\n .field.has-addons .control .select select:not([disabled]):active:hover,\\n .field.has-addons .control .select select:not([disabled]).is-active:hover {\\n z-index: 4; }\\n .field.has-addons .control.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .field.has-addons.has-addons-centered {\\n justify-content: center; }\\n .field.has-addons.has-addons-right {\\n justify-content: flex-end; }\\n .field.has-addons.has-addons-fullwidth .control {\\n flex-grow: 1;\\n flex-shrink: 0; }\\n\\n.field.is-grouped {\\n display: flex;\\n justify-content: flex-start; }\\n .field.is-grouped > .control {\\n flex-shrink: 0; }\\n .field.is-grouped > .control:not(:last-child) {\\n margin-bottom: 0;\\n margin-right: 0.75rem; }\\n .field.is-grouped > .control.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .field.is-grouped.is-grouped-centered {\\n justify-content: center; }\\n .field.is-grouped.is-grouped-right {\\n justify-content: flex-end; }\\n .field.is-grouped.is-grouped-multiline {\\n flex-wrap: wrap; }\\n .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n .field.is-grouped.is-grouped-multiline:last-child {\\n margin-bottom: -0.75rem; }\\n .field.is-grouped.is-grouped-multiline:not(:last-child) {\\n margin-bottom: 0; }\\n\\n@media screen and (min-width: 769px), print {\\n .field.is-horizontal {\\n display: flex; } }\\n\\n.field-label .label {\\n font-size: inherit; }\\n\\n@media screen and (max-width: 768px) {\\n .field-label {\\n margin-bottom: 0.5rem; } }\\n\\n@media screen and (min-width: 769px), print {\\n .field-label {\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 0;\\n margin-right: 1.5rem;\\n text-align: right; }\\n .field-label.is-small {\\n font-size: 0.75rem;\\n padding-top: 0.375em; }\\n .field-label.is-normal {\\n padding-top: 0.375em; }\\n .field-label.is-medium {\\n font-size: 1.25rem;\\n padding-top: 0.375em; }\\n .field-label.is-large {\\n font-size: 1.5rem;\\n padding-top: 0.375em; } }\\n\\n.field-body .field .field {\\n margin-bottom: 0; }\\n\\n@media screen and (min-width: 769px), print {\\n .field-body {\\n display: flex;\\n flex-basis: 0;\\n flex-grow: 5;\\n flex-shrink: 1; }\\n .field-body .field {\\n margin-bottom: 0; }\\n .field-body > .field {\\n flex-shrink: 1; }\\n .field-body > .field:not(.is-narrow) {\\n flex-grow: 1; }\\n .field-body > .field:not(:last-child) {\\n margin-right: 0.75rem; } }\\n\\n.control {\\n box-sizing: border-box;\\n clear: both;\\n font-size: 1rem;\\n position: relative;\\n text-align: inherit; }\\n .control.has-icons-left .input:focus ~ .icon,\\n .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon,\\n .control.has-icons-right .select:focus ~ .icon {\\n color: #4a4a4a; }\\n .control.has-icons-left .input.is-small ~ .icon,\\n .control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon,\\n .control.has-icons-right .select.is-small ~ .icon {\\n font-size: 0.75rem; }\\n .control.has-icons-left .input.is-medium ~ .icon,\\n .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon,\\n .control.has-icons-right .select.is-medium ~ .icon {\\n font-size: 1.25rem; }\\n .control.has-icons-left .input.is-large ~ .icon,\\n .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon,\\n .control.has-icons-right .select.is-large ~ .icon {\\n font-size: 1.5rem; }\\n .control.has-icons-left .icon, .control.has-icons-right .icon {\\n color: #dbdbdb;\\n height: 2.5em;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 2.5em;\\n z-index: 4; }\\n .control.has-icons-left .input,\\n .control.has-icons-left .select select {\\n padding-left: 2.5em; }\\n .control.has-icons-left .icon.is-left {\\n left: 0; }\\n .control.has-icons-right .input,\\n .control.has-icons-right .select select {\\n padding-right: 2.5em; }\\n .control.has-icons-right .icon.is-right {\\n right: 0; }\\n .control.is-loading::after {\\n position: absolute !important;\\n right: 0.625em;\\n top: 0.625em;\\n z-index: 4; }\\n .control.is-loading.is-small:after {\\n font-size: 0.75rem; }\\n .control.is-loading.is-medium:after {\\n font-size: 1.25rem; }\\n .control.is-loading.is-large:after {\\n font-size: 1.5rem; }\\n\\n.breadcrumb {\\n font-size: 1rem;\\n white-space: nowrap; }\\n .breadcrumb a {\\n align-items: center;\\n color: #4876ff;\\n display: flex;\\n justify-content: center;\\n padding: 0 0.75em; }\\n .breadcrumb a:hover {\\n color: #363636; }\\n .breadcrumb li {\\n align-items: center;\\n display: flex; }\\n .breadcrumb li:first-child a {\\n padding-left: 0; }\\n .breadcrumb li.is-active a {\\n color: #363636;\\n cursor: default;\\n pointer-events: none; }\\n .breadcrumb li + li::before {\\n color: #b5b5b5;\\n content: \\\"\\\\0002f\\\"; }\\n .breadcrumb ul,\\n .breadcrumb ol {\\n align-items: flex-start;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start; }\\n .breadcrumb .icon:first-child {\\n margin-right: 0.5em; }\\n .breadcrumb .icon:last-child {\\n margin-left: 0.5em; }\\n .breadcrumb.is-centered ol,\\n .breadcrumb.is-centered ul {\\n justify-content: center; }\\n .breadcrumb.is-right ol,\\n .breadcrumb.is-right ul {\\n justify-content: flex-end; }\\n .breadcrumb.is-small {\\n font-size: 0.75rem; }\\n .breadcrumb.is-medium {\\n font-size: 1.25rem; }\\n .breadcrumb.is-large {\\n font-size: 1.5rem; }\\n .breadcrumb.has-arrow-separator li + li::before {\\n content: \\\"\\\\02192\\\"; }\\n .breadcrumb.has-bullet-separator li + li::before {\\n content: \\\"\\\\02022\\\"; }\\n .breadcrumb.has-dot-separator li + li::before {\\n content: \\\"\\\\000b7\\\"; }\\n .breadcrumb.has-succeeds-separator li + li::before {\\n content: \\\"\\\\0227B\\\"; }\\n\\n.card {\\n background-color: white;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n color: #4a4a4a;\\n max-width: 100%;\\n position: relative; }\\n\\n.card-header {\\n background-color: transparent;\\n align-items: stretch;\\n box-shadow: 0 0.125em 0.25em rgba(10, 10, 10, 0.1);\\n display: flex; }\\n\\n.card-header-title {\\n align-items: center;\\n color: #363636;\\n display: flex;\\n flex-grow: 1;\\n font-weight: 700;\\n padding: 0.75rem 1rem; }\\n .card-header-title.is-centered {\\n justify-content: center; }\\n\\n.card-header-icon {\\n align-items: center;\\n cursor: pointer;\\n display: flex;\\n justify-content: center;\\n padding: 0.75rem 1rem; }\\n\\n.card-image {\\n display: block;\\n position: relative; }\\n\\n.card-content {\\n background-color: transparent;\\n padding: 1.5rem; }\\n\\n.card-footer {\\n background-color: transparent;\\n border-top: 1px solid #ededed;\\n align-items: stretch;\\n display: flex; }\\n\\n.card-footer-item {\\n align-items: center;\\n display: flex;\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 0;\\n justify-content: center;\\n padding: 0.75rem; }\\n .card-footer-item:not(:last-child) {\\n border-right: 1px solid #ededed; }\\n\\n.card .media:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n\\n.dropdown {\\n display: inline-flex;\\n position: relative;\\n vertical-align: top; }\\n .dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu {\\n display: block; }\\n .dropdown.is-right .dropdown-menu {\\n left: auto;\\n right: 0; }\\n .dropdown.is-up .dropdown-menu {\\n bottom: 100%;\\n padding-bottom: 4px;\\n padding-top: initial;\\n top: auto; }\\n\\n.dropdown-menu {\\n display: none;\\n left: 0;\\n min-width: 12rem;\\n padding-top: 4px;\\n position: absolute;\\n top: 100%;\\n z-index: 20; }\\n\\n.dropdown-content {\\n background-color: white;\\n border-radius: 4px;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n padding-bottom: 0.5rem;\\n padding-top: 0.5rem; }\\n\\n.dropdown-item {\\n color: #4a4a4a;\\n display: block;\\n font-size: 0.875rem;\\n line-height: 1.5;\\n padding: 0.375rem 1rem;\\n position: relative; }\\n\\na.dropdown-item,\\nbutton.dropdown-item {\\n padding-right: 3rem;\\n text-align: inherit;\\n white-space: nowrap;\\n width: 100%; }\\n a.dropdown-item:hover,\\n button.dropdown-item:hover {\\n background-color: whitesmoke;\\n color: #0a0a0a; }\\n a.dropdown-item.is-active,\\n button.dropdown-item.is-active {\\n background-color: #4876ff;\\n color: #fff; }\\n\\n.dropdown-divider {\\n background-color: #ededed;\\n border: none;\\n display: block;\\n height: 1px;\\n margin: 0.5rem 0; }\\n\\n.level {\\n align-items: center;\\n justify-content: space-between; }\\n .level code {\\n border-radius: 4px; }\\n .level img {\\n display: inline-block;\\n vertical-align: top; }\\n .level.is-mobile {\\n display: flex; }\\n .level.is-mobile .level-left,\\n .level.is-mobile .level-right {\\n display: flex; }\\n .level.is-mobile .level-left + .level-right {\\n margin-top: 0; }\\n .level.is-mobile .level-item:not(:last-child) {\\n margin-bottom: 0;\\n margin-right: 0.75rem; }\\n .level.is-mobile .level-item:not(.is-narrow) {\\n flex-grow: 1; }\\n @media screen and (min-width: 769px), print {\\n .level {\\n display: flex; }\\n .level > .level-item:not(.is-narrow) {\\n flex-grow: 1; } }\\n\\n.level-item {\\n align-items: center;\\n display: flex;\\n flex-basis: auto;\\n flex-grow: 0;\\n flex-shrink: 0;\\n justify-content: center; }\\n .level-item .title,\\n .level-item .subtitle {\\n margin-bottom: 0; }\\n @media screen and (max-width: 768px) {\\n .level-item:not(:last-child) {\\n margin-bottom: 0.75rem; } }\\n\\n.level-left,\\n.level-right {\\n flex-basis: auto;\\n flex-grow: 0;\\n flex-shrink: 0; }\\n .level-left .level-item.is-flexible,\\n .level-right .level-item.is-flexible {\\n flex-grow: 1; }\\n @media screen and (min-width: 769px), print {\\n .level-left .level-item:not(:last-child),\\n .level-right .level-item:not(:last-child) {\\n margin-right: 0.75rem; } }\\n\\n.level-left {\\n align-items: center;\\n justify-content: flex-start; }\\n @media screen and (max-width: 768px) {\\n .level-left + .level-right {\\n margin-top: 1.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .level-left {\\n display: flex; } }\\n\\n.level-right {\\n align-items: center;\\n justify-content: flex-end; }\\n @media screen and (min-width: 769px), print {\\n .level-right {\\n display: flex; } }\\n\\n.media {\\n align-items: flex-start;\\n display: flex;\\n text-align: inherit; }\\n .media .content:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n .media .media {\\n border-top: 1px solid rgba(219, 219, 219, 0.5);\\n display: flex;\\n padding-top: 0.75rem; }\\n .media .media .content:not(:last-child),\\n .media .media .control:not(:last-child) {\\n margin-bottom: 0.5rem; }\\n .media .media .media {\\n padding-top: 0.5rem; }\\n .media .media .media + .media {\\n margin-top: 0.5rem; }\\n .media + .media {\\n border-top: 1px solid rgba(219, 219, 219, 0.5);\\n margin-top: 1rem;\\n padding-top: 1rem; }\\n .media.is-large + .media {\\n margin-top: 1.5rem;\\n padding-top: 1.5rem; }\\n\\n.media-left,\\n.media-right {\\n flex-basis: auto;\\n flex-grow: 0;\\n flex-shrink: 0; }\\n\\n.media-left {\\n margin-right: 1rem; }\\n\\n.media-right {\\n margin-left: 1rem; }\\n\\n.media-content {\\n flex-basis: auto;\\n flex-grow: 1;\\n flex-shrink: 1;\\n text-align: inherit; }\\n\\n@media screen and (max-width: 768px) {\\n .media-content {\\n overflow-x: auto; } }\\n\\n.menu {\\n font-size: 1rem; }\\n .menu.is-small {\\n font-size: 0.75rem; }\\n .menu.is-medium {\\n font-size: 1.25rem; }\\n .menu.is-large {\\n font-size: 1.5rem; }\\n\\n.menu-list {\\n line-height: 1.25; }\\n .menu-list a {\\n border-radius: 2px;\\n color: #4a4a4a;\\n display: block;\\n padding: 0.5em 0.75em; }\\n .menu-list a:hover {\\n background-color: whitesmoke;\\n color: #363636; }\\n .menu-list a.is-active {\\n background-color: #4876ff;\\n color: #fff; }\\n .menu-list li ul {\\n border-left: 1px solid #dbdbdb;\\n margin: 0.75em;\\n padding-left: 0.75em; }\\n\\n.menu-label {\\n color: #7a7a7a;\\n font-size: 0.75em;\\n letter-spacing: 0.1em;\\n text-transform: uppercase; }\\n .menu-label:not(:first-child) {\\n margin-top: 1em; }\\n .menu-label:not(:last-child) {\\n margin-bottom: 1em; }\\n\\n.message {\\n background-color: whitesmoke;\\n border-radius: 4px;\\n font-size: 1rem; }\\n .message strong {\\n color: currentColor; }\\n .message a:not(.button):not(.tag):not(.dropdown-item) {\\n color: currentColor;\\n text-decoration: underline; }\\n .message.is-small {\\n font-size: 0.75rem; }\\n .message.is-medium {\\n font-size: 1.25rem; }\\n .message.is-large {\\n font-size: 1.5rem; }\\n .message.is-white {\\n background-color: white; }\\n .message.is-white .message-header {\\n background-color: white;\\n color: #0a0a0a; }\\n .message.is-white .message-body {\\n border-color: white; }\\n .message.is-black {\\n background-color: #fafafa; }\\n .message.is-black .message-header {\\n background-color: #0a0a0a;\\n color: white; }\\n .message.is-black .message-body {\\n border-color: #0a0a0a; }\\n .message.is-light {\\n background-color: #f6fef7; }\\n .message.is-light .message-header {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .message.is-light .message-body {\\n border-color: #d2f9d6; }\\n .message.is-dark {\\n background-color: #f8fcf9; }\\n .message.is-dark .message-header {\\n background-color: #459558;\\n color: #fff; }\\n .message.is-dark .message-body {\\n border-color: #459558; }\\n .message.is-primary {\\n background-color: #f0f9f2; }\\n .message.is-primary .message-header {\\n background-color: #55be6f;\\n color: #fff; }\\n .message.is-primary .message-body {\\n border-color: #55be6f;\\n color: #2f7a41; }\\n .message.is-link {\\n background-color: #ebf0ff; }\\n .message.is-link .message-header {\\n background-color: #4876ff;\\n color: #fff; }\\n .message.is-link .message-body {\\n border-color: #4876ff;\\n color: #0037db; }\\n .message.is-info {\\n background-color: aliceblue; }\\n .message.is-info .message-header {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .message.is-info .message-body {\\n border-color: #f0f8ff;\\n color: #004f94; }\\n .message.is-success {\\n background-color: #effaf3; }\\n .message.is-success .message-header {\\n background-color: #48c774;\\n color: #fff; }\\n .message.is-success .message-body {\\n border-color: #48c774;\\n color: #257942; }\\n .message.is-warning {\\n background-color: #fff9eb; }\\n .message.is-warning .message-header {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .message.is-warning .message-body {\\n border-color: #ffd975;\\n color: #946b00; }\\n .message.is-danger {\\n background-color: #feecf0; }\\n .message.is-danger .message-header {\\n background-color: #f14668;\\n color: #fff; }\\n .message.is-danger .message-body {\\n border-color: #f14668;\\n color: #cc0f35; }\\n\\n.message-header {\\n align-items: center;\\n background-color: #4a4a4a;\\n border-radius: 4px 4px 0 0;\\n color: #fff;\\n display: flex;\\n font-weight: 700;\\n justify-content: space-between;\\n line-height: 1.25;\\n padding: 0.75em 1em;\\n position: relative; }\\n .message-header .delete {\\n flex-grow: 0;\\n flex-shrink: 0;\\n margin-left: 0.75em; }\\n .message-header + .message-body {\\n border-width: 0;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.message-body {\\n border-color: #dbdbdb;\\n border-radius: 4px;\\n border-style: solid;\\n border-width: 0 0 0 4px;\\n color: #4a4a4a;\\n padding: 1.25em 1.5em; }\\n .message-body code,\\n .message-body pre {\\n background-color: white; }\\n .message-body pre code {\\n background-color: transparent; }\\n\\n.modal {\\n align-items: center;\\n display: none;\\n flex-direction: column;\\n justify-content: center;\\n overflow: hidden;\\n position: fixed;\\n z-index: 40; }\\n .modal.is-active {\\n display: flex; }\\n\\n.modal-background {\\n background-color: rgba(10, 10, 10, 0.86); }\\n\\n.modal-content,\\n.modal-card {\\n margin: 0 20px;\\n max-height: calc(100vh - 160px);\\n overflow: auto;\\n position: relative;\\n width: 100%; }\\n @media screen and (min-width: 769px), print {\\n .modal-content,\\n .modal-card {\\n margin: 0 auto;\\n max-height: calc(100vh - 40px);\\n width: 640px; } }\\n\\n.modal-close {\\n background: none;\\n height: 40px;\\n position: fixed;\\n right: 20px;\\n top: 20px;\\n width: 40px; }\\n\\n.modal-card {\\n display: flex;\\n flex-direction: column;\\n max-height: calc(100vh - 40px);\\n overflow: hidden;\\n -ms-overflow-y: visible; }\\n\\n.modal-card-head,\\n.modal-card-foot {\\n align-items: center;\\n background-color: whitesmoke;\\n display: flex;\\n flex-shrink: 0;\\n justify-content: flex-start;\\n padding: 20px;\\n position: relative; }\\n\\n.modal-card-head {\\n border-bottom: 1px solid #dbdbdb;\\n border-top-left-radius: 6px;\\n border-top-right-radius: 6px; }\\n\\n.modal-card-title {\\n color: #363636;\\n flex-grow: 1;\\n flex-shrink: 0;\\n font-size: 1.5rem;\\n line-height: 1; }\\n\\n.modal-card-foot {\\n border-bottom-left-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-top: 1px solid #dbdbdb; }\\n .modal-card-foot .button:not(:last-child) {\\n margin-right: 0.5em; }\\n\\n.modal-card-body {\\n -webkit-overflow-scrolling: touch;\\n background-color: white;\\n flex-grow: 1;\\n flex-shrink: 1;\\n overflow: auto;\\n padding: 20px; }\\n\\n.navbar {\\n background-color: white;\\n min-height: 2rem;\\n position: relative;\\n z-index: 30; }\\n .navbar.is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-brand > .navbar-item,\\n .navbar.is-white .navbar-brand .navbar-link {\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-white .navbar-brand .navbar-link:focus,\\n .navbar.is-white .navbar-brand .navbar-link:hover,\\n .navbar.is-white .navbar-brand .navbar-link.is-active {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-brand .navbar-link::after {\\n border-color: #0a0a0a; }\\n .navbar.is-white .navbar-burger {\\n color: #0a0a0a; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-white .navbar-start > .navbar-item,\\n .navbar.is-white .navbar-start .navbar-link,\\n .navbar.is-white .navbar-end > .navbar-item,\\n .navbar.is-white .navbar-end .navbar-link {\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active,\\n .navbar.is-white .navbar-start .navbar-link:focus,\\n .navbar.is-white .navbar-start .navbar-link:hover,\\n .navbar.is-white .navbar-start .navbar-link.is-active,\\n .navbar.is-white .navbar-end > a.navbar-item:focus,\\n .navbar.is-white .navbar-end > a.navbar-item:hover,\\n .navbar.is-white .navbar-end > a.navbar-item.is-active,\\n .navbar.is-white .navbar-end .navbar-link:focus,\\n .navbar.is-white .navbar-end .navbar-link:hover,\\n .navbar.is-white .navbar-end .navbar-link.is-active {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-start .navbar-link::after,\\n .navbar.is-white .navbar-end .navbar-link::after {\\n border-color: #0a0a0a; }\\n .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-dropdown a.navbar-item.is-active {\\n background-color: white;\\n color: #0a0a0a; } }\\n .navbar.is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .navbar.is-black .navbar-brand > .navbar-item,\\n .navbar.is-black .navbar-brand .navbar-link {\\n color: white; }\\n .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-black .navbar-brand .navbar-link:focus,\\n .navbar.is-black .navbar-brand .navbar-link:hover,\\n .navbar.is-black .navbar-brand .navbar-link.is-active {\\n background-color: black;\\n color: white; }\\n .navbar.is-black .navbar-brand .navbar-link::after {\\n border-color: white; }\\n .navbar.is-black .navbar-burger {\\n color: white; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-black .navbar-start > .navbar-item,\\n .navbar.is-black .navbar-start .navbar-link,\\n .navbar.is-black .navbar-end > .navbar-item,\\n .navbar.is-black .navbar-end .navbar-link {\\n color: white; }\\n .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active,\\n .navbar.is-black .navbar-start .navbar-link:focus,\\n .navbar.is-black .navbar-start .navbar-link:hover,\\n .navbar.is-black .navbar-start .navbar-link.is-active,\\n .navbar.is-black .navbar-end > a.navbar-item:focus,\\n .navbar.is-black .navbar-end > a.navbar-item:hover,\\n .navbar.is-black .navbar-end > a.navbar-item.is-active,\\n .navbar.is-black .navbar-end .navbar-link:focus,\\n .navbar.is-black .navbar-end .navbar-link:hover,\\n .navbar.is-black .navbar-end .navbar-link.is-active {\\n background-color: black;\\n color: white; }\\n .navbar.is-black .navbar-start .navbar-link::after,\\n .navbar.is-black .navbar-end .navbar-link::after {\\n border-color: white; }\\n .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: black;\\n color: white; }\\n .navbar.is-black .navbar-dropdown a.navbar-item.is-active {\\n background-color: #0a0a0a;\\n color: white; } }\\n .navbar.is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-brand > .navbar-item,\\n .navbar.is-light .navbar-brand .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-light .navbar-brand .navbar-link:focus,\\n .navbar.is-light .navbar-brand .navbar-link:hover,\\n .navbar.is-light .navbar-brand .navbar-link.is-active {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-brand .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-burger {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (min-width: 840px) {\\n .navbar.is-light .navbar-start > .navbar-item,\\n .navbar.is-light .navbar-start .navbar-link,\\n .navbar.is-light .navbar-end > .navbar-item,\\n .navbar.is-light .navbar-end .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active,\\n .navbar.is-light .navbar-start .navbar-link:focus,\\n .navbar.is-light .navbar-start .navbar-link:hover,\\n .navbar.is-light .navbar-start .navbar-link.is-active,\\n .navbar.is-light .navbar-end > a.navbar-item:focus,\\n .navbar.is-light .navbar-end > a.navbar-item:hover,\\n .navbar.is-light .navbar-end > a.navbar-item.is-active,\\n .navbar.is-light .navbar-end .navbar-link:focus,\\n .navbar.is-light .navbar-end .navbar-link:hover,\\n .navbar.is-light .navbar-end .navbar-link.is-active {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-start .navbar-link::after,\\n .navbar.is-light .navbar-end .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-dropdown a.navbar-item.is-active {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); } }\\n .navbar.is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .navbar.is-dark .navbar-brand > .navbar-item,\\n .navbar.is-dark .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-dark .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-dark .navbar-brand .navbar-link:focus,\\n .navbar.is-dark .navbar-brand .navbar-link:hover,\\n .navbar.is-dark .navbar-brand .navbar-link.is-active {\\n background-color: #3d844e;\\n color: #fff; }\\n .navbar.is-dark .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-dark .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-dark .navbar-start > .navbar-item,\\n .navbar.is-dark .navbar-start .navbar-link,\\n .navbar.is-dark .navbar-end > .navbar-item,\\n .navbar.is-dark .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-dark .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active,\\n .navbar.is-dark .navbar-start .navbar-link:focus,\\n .navbar.is-dark .navbar-start .navbar-link:hover,\\n .navbar.is-dark .navbar-start .navbar-link.is-active,\\n .navbar.is-dark .navbar-end > a.navbar-item:focus,\\n .navbar.is-dark .navbar-end > a.navbar-item:hover,\\n .navbar.is-dark .navbar-end > a.navbar-item.is-active,\\n .navbar.is-dark .navbar-end .navbar-link:focus,\\n .navbar.is-dark .navbar-end .navbar-link:hover,\\n .navbar.is-dark .navbar-end .navbar-link.is-active {\\n background-color: #3d844e;\\n color: #fff; }\\n .navbar.is-dark .navbar-start .navbar-link::after,\\n .navbar.is-dark .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #3d844e;\\n color: #fff; }\\n .navbar.is-dark .navbar-dropdown a.navbar-item.is-active {\\n background-color: #459558;\\n color: #fff; } }\\n .navbar.is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .navbar.is-primary .navbar-brand > .navbar-item,\\n .navbar.is-primary .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-primary .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-primary .navbar-brand .navbar-link:focus,\\n .navbar.is-primary .navbar-brand .navbar-link:hover,\\n .navbar.is-primary .navbar-brand .navbar-link.is-active {\\n background-color: #45b461;\\n color: #fff; }\\n .navbar.is-primary .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-primary .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-primary .navbar-start > .navbar-item,\\n .navbar.is-primary .navbar-start .navbar-link,\\n .navbar.is-primary .navbar-end > .navbar-item,\\n .navbar.is-primary .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-primary .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active,\\n .navbar.is-primary .navbar-start .navbar-link:focus,\\n .navbar.is-primary .navbar-start .navbar-link:hover,\\n .navbar.is-primary .navbar-start .navbar-link.is-active,\\n .navbar.is-primary .navbar-end > a.navbar-item:focus,\\n .navbar.is-primary .navbar-end > a.navbar-item:hover,\\n .navbar.is-primary .navbar-end > a.navbar-item.is-active,\\n .navbar.is-primary .navbar-end .navbar-link:focus,\\n .navbar.is-primary .navbar-end .navbar-link:hover,\\n .navbar.is-primary .navbar-end .navbar-link.is-active {\\n background-color: #45b461;\\n color: #fff; }\\n .navbar.is-primary .navbar-start .navbar-link::after,\\n .navbar.is-primary .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #45b461;\\n color: #fff; }\\n .navbar.is-primary .navbar-dropdown a.navbar-item.is-active {\\n background-color: #55be6f;\\n color: #fff; } }\\n .navbar.is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .navbar.is-link .navbar-brand > .navbar-item,\\n .navbar.is-link .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-link .navbar-brand .navbar-link:focus,\\n .navbar.is-link .navbar-brand .navbar-link:hover,\\n .navbar.is-link .navbar-brand .navbar-link.is-active {\\n background-color: #2f63ff;\\n color: #fff; }\\n .navbar.is-link .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-link .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-link .navbar-start > .navbar-item,\\n .navbar.is-link .navbar-start .navbar-link,\\n .navbar.is-link .navbar-end > .navbar-item,\\n .navbar.is-link .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active,\\n .navbar.is-link .navbar-start .navbar-link:focus,\\n .navbar.is-link .navbar-start .navbar-link:hover,\\n .navbar.is-link .navbar-start .navbar-link.is-active,\\n .navbar.is-link .navbar-end > a.navbar-item:focus,\\n .navbar.is-link .navbar-end > a.navbar-item:hover,\\n .navbar.is-link .navbar-end > a.navbar-item.is-active,\\n .navbar.is-link .navbar-end .navbar-link:focus,\\n .navbar.is-link .navbar-end .navbar-link:hover,\\n .navbar.is-link .navbar-end .navbar-link.is-active {\\n background-color: #2f63ff;\\n color: #fff; }\\n .navbar.is-link .navbar-start .navbar-link::after,\\n .navbar.is-link .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #2f63ff;\\n color: #fff; }\\n .navbar.is-link .navbar-dropdown a.navbar-item.is-active {\\n background-color: #4876ff;\\n color: #fff; } }\\n .navbar.is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-brand > .navbar-item,\\n .navbar.is-info .navbar-brand .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-info .navbar-brand .navbar-link:focus,\\n .navbar.is-info .navbar-brand .navbar-link:hover,\\n .navbar.is-info .navbar-brand .navbar-link.is-active {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-brand .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-burger {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (min-width: 840px) {\\n .navbar.is-info .navbar-start > .navbar-item,\\n .navbar.is-info .navbar-start .navbar-link,\\n .navbar.is-info .navbar-end > .navbar-item,\\n .navbar.is-info .navbar-end .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active,\\n .navbar.is-info .navbar-start .navbar-link:focus,\\n .navbar.is-info .navbar-start .navbar-link:hover,\\n .navbar.is-info .navbar-start .navbar-link.is-active,\\n .navbar.is-info .navbar-end > a.navbar-item:focus,\\n .navbar.is-info .navbar-end > a.navbar-item:hover,\\n .navbar.is-info .navbar-end > a.navbar-item.is-active,\\n .navbar.is-info .navbar-end .navbar-link:focus,\\n .navbar.is-info .navbar-end .navbar-link:hover,\\n .navbar.is-info .navbar-end .navbar-link.is-active {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-start .navbar-link::after,\\n .navbar.is-info .navbar-end .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-dropdown a.navbar-item.is-active {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); } }\\n .navbar.is-success {\\n background-color: #48c774;\\n color: #fff; }\\n .navbar.is-success .navbar-brand > .navbar-item,\\n .navbar.is-success .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-success .navbar-brand .navbar-link:focus,\\n .navbar.is-success .navbar-brand .navbar-link:hover,\\n .navbar.is-success .navbar-brand .navbar-link.is-active {\\n background-color: #3abb67;\\n color: #fff; }\\n .navbar.is-success .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-success .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-success .navbar-start > .navbar-item,\\n .navbar.is-success .navbar-start .navbar-link,\\n .navbar.is-success .navbar-end > .navbar-item,\\n .navbar.is-success .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active,\\n .navbar.is-success .navbar-start .navbar-link:focus,\\n .navbar.is-success .navbar-start .navbar-link:hover,\\n .navbar.is-success .navbar-start .navbar-link.is-active,\\n .navbar.is-success .navbar-end > a.navbar-item:focus,\\n .navbar.is-success .navbar-end > a.navbar-item:hover,\\n .navbar.is-success .navbar-end > a.navbar-item.is-active,\\n .navbar.is-success .navbar-end .navbar-link:focus,\\n .navbar.is-success .navbar-end .navbar-link:hover,\\n .navbar.is-success .navbar-end .navbar-link.is-active {\\n background-color: #3abb67;\\n color: #fff; }\\n .navbar.is-success .navbar-start .navbar-link::after,\\n .navbar.is-success .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #3abb67;\\n color: #fff; }\\n .navbar.is-success .navbar-dropdown a.navbar-item.is-active {\\n background-color: #48c774;\\n color: #fff; } }\\n .navbar.is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-brand > .navbar-item,\\n .navbar.is-warning .navbar-brand .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-warning .navbar-brand .navbar-link:focus,\\n .navbar.is-warning .navbar-brand .navbar-link:hover,\\n .navbar.is-warning .navbar-brand .navbar-link.is-active {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-brand .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-burger {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (min-width: 840px) {\\n .navbar.is-warning .navbar-start > .navbar-item,\\n .navbar.is-warning .navbar-start .navbar-link,\\n .navbar.is-warning .navbar-end > .navbar-item,\\n .navbar.is-warning .navbar-end .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active,\\n .navbar.is-warning .navbar-start .navbar-link:focus,\\n .navbar.is-warning .navbar-start .navbar-link:hover,\\n .navbar.is-warning .navbar-start .navbar-link.is-active,\\n .navbar.is-warning .navbar-end > a.navbar-item:focus,\\n .navbar.is-warning .navbar-end > a.navbar-item:hover,\\n .navbar.is-warning .navbar-end > a.navbar-item.is-active,\\n .navbar.is-warning .navbar-end .navbar-link:focus,\\n .navbar.is-warning .navbar-end .navbar-link:hover,\\n .navbar.is-warning .navbar-end .navbar-link.is-active {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-start .navbar-link::after,\\n .navbar.is-warning .navbar-end .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-dropdown a.navbar-item.is-active {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); } }\\n .navbar.is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .navbar.is-danger .navbar-brand > .navbar-item,\\n .navbar.is-danger .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-danger .navbar-brand .navbar-link:focus,\\n .navbar.is-danger .navbar-brand .navbar-link:hover,\\n .navbar.is-danger .navbar-brand .navbar-link.is-active {\\n background-color: #ef2e55;\\n color: #fff; }\\n .navbar.is-danger .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-danger .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-danger .navbar-start > .navbar-item,\\n .navbar.is-danger .navbar-start .navbar-link,\\n .navbar.is-danger .navbar-end > .navbar-item,\\n .navbar.is-danger .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active,\\n .navbar.is-danger .navbar-start .navbar-link:focus,\\n .navbar.is-danger .navbar-start .navbar-link:hover,\\n .navbar.is-danger .navbar-start .navbar-link.is-active,\\n .navbar.is-danger .navbar-end > a.navbar-item:focus,\\n .navbar.is-danger .navbar-end > a.navbar-item:hover,\\n .navbar.is-danger .navbar-end > a.navbar-item.is-active,\\n .navbar.is-danger .navbar-end .navbar-link:focus,\\n .navbar.is-danger .navbar-end .navbar-link:hover,\\n .navbar.is-danger .navbar-end .navbar-link.is-active {\\n background-color: #ef2e55;\\n color: #fff; }\\n .navbar.is-danger .navbar-start .navbar-link::after,\\n .navbar.is-danger .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #ef2e55;\\n color: #fff; }\\n .navbar.is-danger .navbar-dropdown a.navbar-item.is-active {\\n background-color: #f14668;\\n color: #fff; } }\\n .navbar > .container {\\n align-items: stretch;\\n display: flex;\\n min-height: 2rem;\\n width: 100%; }\\n .navbar.has-shadow {\\n box-shadow: 0 2px 0 0 whitesmoke; }\\n .navbar.is-fixed-bottom, .navbar.is-fixed-top {\\n left: 0;\\n position: fixed;\\n right: 0;\\n z-index: 30; }\\n .navbar.is-fixed-bottom {\\n bottom: 0; }\\n .navbar.is-fixed-bottom.has-shadow {\\n box-shadow: 0 -2px 0 0 whitesmoke; }\\n .navbar.is-fixed-top {\\n top: 0; }\\n\\nhtml.has-navbar-fixed-top,\\nbody.has-navbar-fixed-top {\\n padding-top: 2rem; }\\n\\nhtml.has-navbar-fixed-bottom,\\nbody.has-navbar-fixed-bottom {\\n padding-bottom: 2rem; }\\n\\n.navbar-brand,\\n.navbar-tabs {\\n align-items: stretch;\\n display: flex;\\n flex-shrink: 0;\\n min-height: 2rem; }\\n\\n.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover {\\n background-color: transparent; }\\n\\n.navbar-tabs {\\n -webkit-overflow-scrolling: touch;\\n max-width: 100vw;\\n overflow-x: auto;\\n overflow-y: hidden; }\\n\\n.navbar-burger {\\n color: #4a4a4a;\\n cursor: pointer;\\n display: block;\\n height: 2rem;\\n position: relative;\\n width: 2rem;\\n margin-left: auto; }\\n .navbar-burger span {\\n background-color: currentColor;\\n display: block;\\n height: 1px;\\n left: calc(50% - 8px);\\n position: absolute;\\n transform-origin: center;\\n transition-duration: 86ms;\\n transition-property: background-color, opacity, transform;\\n transition-timing-function: ease-out;\\n width: 16px; }\\n .navbar-burger span:nth-child(1) {\\n top: calc(50% - 6px); }\\n .navbar-burger span:nth-child(2) {\\n top: calc(50% - 1px); }\\n .navbar-burger span:nth-child(3) {\\n top: calc(50% + 4px); }\\n .navbar-burger:hover {\\n background-color: rgba(0, 0, 0, 0.05); }\\n .navbar-burger.is-active span:nth-child(1) {\\n transform: translateY(5px) rotate(45deg); }\\n .navbar-burger.is-active span:nth-child(2) {\\n opacity: 0; }\\n .navbar-burger.is-active span:nth-child(3) {\\n transform: translateY(-5px) rotate(-45deg); }\\n\\n.navbar-menu {\\n display: none; }\\n\\n.navbar-item,\\n.navbar-link {\\n color: #4a4a4a;\\n display: block;\\n line-height: 1.5;\\n padding: 0.5rem 0.75rem;\\n position: relative; }\\n .navbar-item .icon:only-child,\\n .navbar-link .icon:only-child {\\n margin-left: -0.25rem;\\n margin-right: -0.25rem; }\\n\\na.navbar-item,\\n.navbar-link {\\n cursor: pointer; }\\n a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active,\\n .navbar-link:focus,\\n .navbar-link:focus-within,\\n .navbar-link:hover,\\n .navbar-link.is-active {\\n background-color: #fafafa;\\n color: #4876ff; }\\n\\n.navbar-item {\\n flex-grow: 0;\\n flex-shrink: 0; }\\n .navbar-item img {\\n max-height: 1.75rem; }\\n .navbar-item.has-dropdown {\\n padding: 0; }\\n .navbar-item.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .navbar-item.is-tab {\\n border-bottom: 1px solid transparent;\\n min-height: 2rem;\\n padding-bottom: calc(0.5rem - 1px); }\\n .navbar-item.is-tab:focus, .navbar-item.is-tab:hover {\\n background-color: transparent;\\n border-bottom-color: #4876ff; }\\n .navbar-item.is-tab.is-active {\\n background-color: transparent;\\n border-bottom-color: #4876ff;\\n border-bottom-style: solid;\\n border-bottom-width: 3px;\\n color: #4876ff;\\n padding-bottom: calc(0.5rem - 3px); }\\n\\n.navbar-content {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n\\n.navbar-link:not(.is-arrowless) {\\n padding-right: 2.5em; }\\n .navbar-link:not(.is-arrowless)::after {\\n border-color: #4876ff;\\n margin-top: -0.375em;\\n right: 1.125em; }\\n\\n.navbar-dropdown {\\n font-size: 0.875rem;\\n padding-bottom: 0.5rem;\\n padding-top: 0.5rem; }\\n .navbar-dropdown .navbar-item {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem; }\\n\\n.navbar-divider {\\n background-color: whitesmoke;\\n border: none;\\n display: none;\\n height: 2px;\\n margin: 0.5rem 0; }\\n\\n@media screen and (max-width: 839px) {\\n .navbar > .container {\\n display: block; }\\n .navbar-brand .navbar-item,\\n .navbar-tabs .navbar-item {\\n align-items: center;\\n display: flex; }\\n .navbar-link::after {\\n display: none; }\\n .navbar-menu {\\n background-color: white;\\n box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1);\\n padding: 0.5rem 0; }\\n .navbar-menu.is-active {\\n display: block; }\\n .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch {\\n left: 0;\\n position: fixed;\\n right: 0;\\n z-index: 30; }\\n .navbar.is-fixed-bottom-touch {\\n bottom: 0; }\\n .navbar.is-fixed-bottom-touch.has-shadow {\\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\\n .navbar.is-fixed-top-touch {\\n top: 0; }\\n .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu {\\n -webkit-overflow-scrolling: touch;\\n max-height: calc(100vh - 2rem);\\n overflow: auto; }\\n html.has-navbar-fixed-top-touch,\\n body.has-navbar-fixed-top-touch {\\n padding-top: 2rem; }\\n html.has-navbar-fixed-bottom-touch,\\n body.has-navbar-fixed-bottom-touch {\\n padding-bottom: 2rem; } }\\n\\n@media screen and (min-width: 840px) {\\n .navbar,\\n .navbar-menu,\\n .navbar-start,\\n .navbar-end {\\n align-items: stretch;\\n display: flex; }\\n .navbar {\\n min-height: 2rem; }\\n .navbar.is-spaced {\\n padding: 1rem 2rem; }\\n .navbar.is-spaced .navbar-start,\\n .navbar.is-spaced .navbar-end {\\n align-items: center; }\\n .navbar.is-spaced a.navbar-item,\\n .navbar.is-spaced .navbar-link {\\n border-radius: 4px; }\\n .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active,\\n .navbar.is-transparent .navbar-link:focus,\\n .navbar.is-transparent .navbar-link:hover,\\n .navbar.is-transparent .navbar-link.is-active {\\n background-color: transparent !important; }\\n .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link {\\n background-color: transparent !important; }\\n .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover {\\n background-color: whitesmoke;\\n color: #0a0a0a; }\\n .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active {\\n background-color: whitesmoke;\\n color: #4876ff; }\\n .navbar-burger {\\n display: none; }\\n .navbar-item,\\n .navbar-link {\\n align-items: center;\\n display: flex; }\\n .navbar-item.has-dropdown {\\n align-items: stretch; }\\n .navbar-item.has-dropdown-up .navbar-link::after {\\n transform: rotate(135deg) translate(0.25em, -0.25em); }\\n .navbar-item.has-dropdown-up .navbar-dropdown {\\n border-bottom: 2px solid #dbdbdb;\\n border-radius: 6px 6px 0 0;\\n border-top: none;\\n bottom: 100%;\\n box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1);\\n top: auto; }\\n .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown {\\n display: block; }\\n .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed {\\n opacity: 1;\\n pointer-events: auto;\\n transform: translateY(0); }\\n .navbar-menu {\\n flex-grow: 1;\\n flex-shrink: 0; }\\n .navbar-start {\\n justify-content: flex-start;\\n margin-right: auto; }\\n .navbar-end {\\n justify-content: flex-end;\\n margin-left: auto; }\\n .navbar-dropdown {\\n background-color: white;\\n border-bottom-left-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-top: 2px solid #dbdbdb;\\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1);\\n display: none;\\n font-size: 0.875rem;\\n left: 0;\\n min-width: 100%;\\n position: absolute;\\n top: 100%;\\n z-index: 20; }\\n .navbar-dropdown .navbar-item {\\n padding: 0.375rem 1rem;\\n white-space: nowrap; }\\n .navbar-dropdown a.navbar-item {\\n padding-right: 3rem; }\\n .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover {\\n background-color: whitesmoke;\\n color: #0a0a0a; }\\n .navbar-dropdown a.navbar-item.is-active {\\n background-color: whitesmoke;\\n color: #4876ff; }\\n .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed {\\n border-radius: 6px;\\n border-top: none;\\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\\n display: block;\\n opacity: 0;\\n pointer-events: none;\\n top: calc(100% + (-4px));\\n transform: translateY(-5px);\\n transition-duration: 86ms;\\n transition-property: opacity, transform; }\\n .navbar-dropdown.is-right {\\n left: auto;\\n right: 0; }\\n .navbar-divider {\\n display: block; }\\n .navbar > .container .navbar-brand,\\n .container > .navbar .navbar-brand {\\n margin-left: -0.75rem; }\\n .navbar > .container .navbar-menu,\\n .container > .navbar .navbar-menu {\\n margin-right: -0.75rem; }\\n .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop {\\n left: 0;\\n position: fixed;\\n right: 0;\\n z-index: 30; }\\n .navbar.is-fixed-bottom-desktop {\\n bottom: 0; }\\n .navbar.is-fixed-bottom-desktop.has-shadow {\\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\\n .navbar.is-fixed-top-desktop {\\n top: 0; }\\n html.has-navbar-fixed-top-desktop,\\n body.has-navbar-fixed-top-desktop {\\n padding-top: 2rem; }\\n html.has-navbar-fixed-bottom-desktop,\\n body.has-navbar-fixed-bottom-desktop {\\n padding-bottom: 2rem; }\\n html.has-spaced-navbar-fixed-top,\\n body.has-spaced-navbar-fixed-top {\\n padding-top: 4rem; }\\n html.has-spaced-navbar-fixed-bottom,\\n body.has-spaced-navbar-fixed-bottom {\\n padding-bottom: 4rem; }\\n a.navbar-item.is-active,\\n .navbar-link.is-active {\\n color: #0a0a0a; }\\n a.navbar-item.is-active:not(:focus):not(:hover),\\n .navbar-link.is-active:not(:focus):not(:hover) {\\n background-color: transparent; }\\n .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #fafafa; } }\\n\\n.hero.is-fullheight-with-navbar {\\n min-height: calc(100vh - 2rem); }\\n\\n.pagination {\\n font-size: 1rem;\\n margin: -0.25rem; }\\n .pagination.is-small {\\n font-size: 0.75rem; }\\n .pagination.is-medium {\\n font-size: 1.25rem; }\\n .pagination.is-large {\\n font-size: 1.5rem; }\\n .pagination.is-rounded .pagination-previous,\\n .pagination.is-rounded .pagination-next {\\n padding-left: 1em;\\n padding-right: 1em;\\n border-radius: 290486px; }\\n .pagination.is-rounded .pagination-link {\\n border-radius: 290486px; }\\n\\n.pagination,\\n.pagination-list {\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n text-align: center; }\\n\\n.pagination-previous,\\n.pagination-next,\\n.pagination-link,\\n.pagination-ellipsis {\\n font-size: 1em;\\n justify-content: center;\\n margin: 0.25rem;\\n padding-left: 0.5em;\\n padding-right: 0.5em;\\n text-align: center; }\\n\\n.pagination-previous,\\n.pagination-next,\\n.pagination-link {\\n border-color: #dbdbdb;\\n color: #363636;\\n min-width: 2.5em; }\\n .pagination-previous:hover,\\n .pagination-next:hover,\\n .pagination-link:hover {\\n border-color: #b5b5b5;\\n color: #363636; }\\n .pagination-previous:focus,\\n .pagination-next:focus,\\n .pagination-link:focus {\\n border-color: #3273dc; }\\n .pagination-previous:active,\\n .pagination-next:active,\\n .pagination-link:active {\\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); }\\n .pagination-previous[disabled],\\n .pagination-next[disabled],\\n .pagination-link[disabled] {\\n background-color: #dbdbdb;\\n border-color: #dbdbdb;\\n box-shadow: none;\\n color: #7a7a7a;\\n opacity: 0.5; }\\n\\n.pagination-previous,\\n.pagination-next {\\n padding-left: 0.75em;\\n padding-right: 0.75em;\\n white-space: nowrap; }\\n\\n.pagination-link.is-current {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff; }\\n\\n.pagination-ellipsis {\\n color: #b5b5b5;\\n pointer-events: none; }\\n\\n.pagination-list {\\n flex-wrap: wrap; }\\n\\n@media screen and (max-width: 768px) {\\n .pagination {\\n flex-wrap: wrap; }\\n .pagination-previous,\\n .pagination-next {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .pagination-list li {\\n flex-grow: 1;\\n flex-shrink: 1; } }\\n\\n@media screen and (min-width: 769px), print {\\n .pagination-list {\\n flex-grow: 1;\\n flex-shrink: 1;\\n justify-content: flex-start;\\n order: 1; }\\n .pagination-previous {\\n order: 2; }\\n .pagination-next {\\n order: 3; }\\n .pagination {\\n justify-content: space-between; }\\n .pagination.is-centered .pagination-previous {\\n order: 1; }\\n .pagination.is-centered .pagination-list {\\n justify-content: center;\\n order: 2; }\\n .pagination.is-centered .pagination-next {\\n order: 3; }\\n .pagination.is-right .pagination-previous {\\n order: 1; }\\n .pagination.is-right .pagination-next {\\n order: 2; }\\n .pagination.is-right .pagination-list {\\n justify-content: flex-end;\\n order: 3; } }\\n\\n.panel {\\n border-radius: 6px;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n font-size: 1rem; }\\n .panel:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n .panel.is-white .panel-heading {\\n background-color: white;\\n color: #0a0a0a; }\\n .panel.is-white .panel-tabs a.is-active {\\n border-bottom-color: white; }\\n .panel.is-white .panel-block.is-active .panel-icon {\\n color: white; }\\n .panel.is-black .panel-heading {\\n background-color: #0a0a0a;\\n color: white; }\\n .panel.is-black .panel-tabs a.is-active {\\n border-bottom-color: #0a0a0a; }\\n .panel.is-black .panel-block.is-active .panel-icon {\\n color: #0a0a0a; }\\n .panel.is-light .panel-heading {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .panel.is-light .panel-tabs a.is-active {\\n border-bottom-color: #d2f9d6; }\\n .panel.is-light .panel-block.is-active .panel-icon {\\n color: #d2f9d6; }\\n .panel.is-dark .panel-heading {\\n background-color: #459558;\\n color: #fff; }\\n .panel.is-dark .panel-tabs a.is-active {\\n border-bottom-color: #459558; }\\n .panel.is-dark .panel-block.is-active .panel-icon {\\n color: #459558; }\\n .panel.is-primary .panel-heading {\\n background-color: #55be6f;\\n color: #fff; }\\n .panel.is-primary .panel-tabs a.is-active {\\n border-bottom-color: #55be6f; }\\n .panel.is-primary .panel-block.is-active .panel-icon {\\n color: #55be6f; }\\n .panel.is-link .panel-heading {\\n background-color: #4876ff;\\n color: #fff; }\\n .panel.is-link .panel-tabs a.is-active {\\n border-bottom-color: #4876ff; }\\n .panel.is-link .panel-block.is-active .panel-icon {\\n color: #4876ff; }\\n .panel.is-info .panel-heading {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .panel.is-info .panel-tabs a.is-active {\\n border-bottom-color: #f0f8ff; }\\n .panel.is-info .panel-block.is-active .panel-icon {\\n color: #f0f8ff; }\\n .panel.is-success .panel-heading {\\n background-color: #48c774;\\n color: #fff; }\\n .panel.is-success .panel-tabs a.is-active {\\n border-bottom-color: #48c774; }\\n .panel.is-success .panel-block.is-active .panel-icon {\\n color: #48c774; }\\n .panel.is-warning .panel-heading {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .panel.is-warning .panel-tabs a.is-active {\\n border-bottom-color: #ffd975; }\\n .panel.is-warning .panel-block.is-active .panel-icon {\\n color: #ffd975; }\\n .panel.is-danger .panel-heading {\\n background-color: #f14668;\\n color: #fff; }\\n .panel.is-danger .panel-tabs a.is-active {\\n border-bottom-color: #f14668; }\\n .panel.is-danger .panel-block.is-active .panel-icon {\\n color: #f14668; }\\n\\n.panel-tabs:not(:last-child),\\n.panel-block:not(:last-child) {\\n border-bottom: 1px solid #ededed; }\\n\\n.panel-heading {\\n background-color: #ededed;\\n border-radius: 6px 6px 0 0;\\n color: #363636;\\n font-size: 1.25em;\\n font-weight: 700;\\n line-height: 1.25;\\n padding: 0.75em 1em; }\\n\\n.panel-tabs {\\n align-items: flex-end;\\n display: flex;\\n font-size: 0.875em;\\n justify-content: center; }\\n .panel-tabs a {\\n border-bottom: 1px solid #dbdbdb;\\n margin-bottom: -1px;\\n padding: 0.5em; }\\n .panel-tabs a.is-active {\\n border-bottom-color: #4a4a4a;\\n color: #363636; }\\n\\n.panel-list a {\\n color: #4a4a4a; }\\n .panel-list a:hover {\\n color: #4876ff; }\\n\\n.panel-block {\\n align-items: center;\\n color: #363636;\\n display: flex;\\n justify-content: flex-start;\\n padding: 0.5em 0.75em; }\\n .panel-block input[type=\\\"checkbox\\\"] {\\n margin-right: 0.75em; }\\n .panel-block > .control {\\n flex-grow: 1;\\n flex-shrink: 1;\\n width: 100%; }\\n .panel-block.is-wrapped {\\n flex-wrap: wrap; }\\n .panel-block.is-active {\\n border-left-color: #4876ff;\\n color: #363636; }\\n .panel-block.is-active .panel-icon {\\n color: #4876ff; }\\n .panel-block:last-child {\\n border-bottom-left-radius: 6px;\\n border-bottom-right-radius: 6px; }\\n\\na.panel-block,\\nlabel.panel-block {\\n cursor: pointer; }\\n a.panel-block:hover,\\n label.panel-block:hover {\\n background-color: whitesmoke; }\\n\\n.panel-icon {\\n display: inline-block;\\n font-size: 14px;\\n height: 1em;\\n line-height: 1em;\\n text-align: center;\\n vertical-align: top;\\n width: 1em;\\n color: #7a7a7a;\\n margin-right: 0.75em; }\\n .panel-icon .fa {\\n font-size: inherit;\\n line-height: inherit; }\\n\\n.tabs {\\n -webkit-overflow-scrolling: touch;\\n align-items: stretch;\\n display: flex;\\n font-size: 1rem;\\n justify-content: space-between;\\n overflow: hidden;\\n overflow-x: auto;\\n white-space: nowrap; }\\n .tabs a {\\n align-items: center;\\n border-bottom-color: #dbdbdb;\\n border-bottom-style: solid;\\n border-bottom-width: 1px;\\n color: #4a4a4a;\\n display: flex;\\n justify-content: center;\\n margin-bottom: -1px;\\n padding: 0.5em 1em;\\n vertical-align: top; }\\n .tabs a:hover {\\n border-bottom-color: #363636;\\n color: #363636; }\\n .tabs li {\\n display: block; }\\n .tabs li.is-active a {\\n border-bottom-color: #4876ff;\\n color: #4876ff; }\\n .tabs ul {\\n align-items: center;\\n border-bottom-color: #dbdbdb;\\n border-bottom-style: solid;\\n border-bottom-width: 1px;\\n display: flex;\\n flex-grow: 1;\\n flex-shrink: 0;\\n justify-content: flex-start; }\\n .tabs ul.is-left {\\n padding-right: 0.75em; }\\n .tabs ul.is-center {\\n flex: none;\\n justify-content: center;\\n padding-left: 0.75em;\\n padding-right: 0.75em; }\\n .tabs ul.is-right {\\n justify-content: flex-end;\\n padding-left: 0.75em; }\\n .tabs .icon:first-child {\\n margin-right: 0.5em; }\\n .tabs .icon:last-child {\\n margin-left: 0.5em; }\\n .tabs.is-centered ul {\\n justify-content: center; }\\n .tabs.is-right ul {\\n justify-content: flex-end; }\\n .tabs.is-boxed a {\\n border: 1px solid transparent;\\n border-radius: 4px 4px 0 0; }\\n .tabs.is-boxed a:hover {\\n background-color: whitesmoke;\\n border-bottom-color: #dbdbdb; }\\n .tabs.is-boxed li.is-active a {\\n background-color: white;\\n border-color: #dbdbdb;\\n border-bottom-color: transparent !important; }\\n .tabs.is-fullwidth li {\\n flex-grow: 1;\\n flex-shrink: 0; }\\n .tabs.is-toggle a {\\n border-color: #dbdbdb;\\n border-style: solid;\\n border-width: 1px;\\n margin-bottom: 0;\\n position: relative; }\\n .tabs.is-toggle a:hover {\\n background-color: whitesmoke;\\n border-color: #b5b5b5;\\n z-index: 2; }\\n .tabs.is-toggle li + li {\\n margin-left: -1px; }\\n .tabs.is-toggle li:first-child a {\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px; }\\n .tabs.is-toggle li:last-child a {\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px; }\\n .tabs.is-toggle li.is-active a {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff;\\n z-index: 1; }\\n .tabs.is-toggle ul {\\n border-bottom: none; }\\n .tabs.is-toggle.is-toggle-rounded li:first-child a {\\n border-bottom-left-radius: 290486px;\\n border-top-left-radius: 290486px;\\n padding-left: 1.25em; }\\n .tabs.is-toggle.is-toggle-rounded li:last-child a {\\n border-bottom-right-radius: 290486px;\\n border-top-right-radius: 290486px;\\n padding-right: 1.25em; }\\n .tabs.is-small {\\n font-size: 0.75rem; }\\n .tabs.is-medium {\\n font-size: 1.25rem; }\\n .tabs.is-large {\\n font-size: 1.5rem; }\\n\\n.column {\\n display: block;\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 1;\\n padding: 0.75rem; }\\n .columns.is-mobile > .column.is-narrow {\\n flex: none; }\\n .columns.is-mobile > .column.is-full {\\n flex: none;\\n width: 100%; }\\n .columns.is-mobile > .column.is-three-quarters {\\n flex: none;\\n width: 75%; }\\n .columns.is-mobile > .column.is-two-thirds {\\n flex: none;\\n width: 66.6666%; }\\n .columns.is-mobile > .column.is-half {\\n flex: none;\\n width: 50%; }\\n .columns.is-mobile > .column.is-one-third {\\n flex: none;\\n width: 33.3333%; }\\n .columns.is-mobile > .column.is-one-quarter {\\n flex: none;\\n width: 25%; }\\n .columns.is-mobile > .column.is-one-fifth {\\n flex: none;\\n width: 20%; }\\n .columns.is-mobile > .column.is-two-fifths {\\n flex: none;\\n width: 40%; }\\n .columns.is-mobile > .column.is-three-fifths {\\n flex: none;\\n width: 60%; }\\n .columns.is-mobile > .column.is-four-fifths {\\n flex: none;\\n width: 80%; }\\n .columns.is-mobile > .column.is-offset-three-quarters {\\n margin-left: 75%; }\\n .columns.is-mobile > .column.is-offset-two-thirds {\\n margin-left: 66.6666%; }\\n .columns.is-mobile > .column.is-offset-half {\\n margin-left: 50%; }\\n .columns.is-mobile > .column.is-offset-one-third {\\n margin-left: 33.3333%; }\\n .columns.is-mobile > .column.is-offset-one-quarter {\\n margin-left: 25%; }\\n .columns.is-mobile > .column.is-offset-one-fifth {\\n margin-left: 20%; }\\n .columns.is-mobile > .column.is-offset-two-fifths {\\n margin-left: 40%; }\\n .columns.is-mobile > .column.is-offset-three-fifths {\\n margin-left: 60%; }\\n .columns.is-mobile > .column.is-offset-four-fifths {\\n margin-left: 80%; }\\n .columns.is-mobile > .column.is-0 {\\n flex: none;\\n width: 0%; }\\n .columns.is-mobile > .column.is-offset-0 {\\n margin-left: 0%; }\\n .columns.is-mobile > .column.is-1 {\\n flex: none;\\n width: 8.33333%; }\\n .columns.is-mobile > .column.is-offset-1 {\\n margin-left: 8.33333%; }\\n .columns.is-mobile > .column.is-2 {\\n flex: none;\\n width: 16.66667%; }\\n .columns.is-mobile > .column.is-offset-2 {\\n margin-left: 16.66667%; }\\n .columns.is-mobile > .column.is-3 {\\n flex: none;\\n width: 25%; }\\n .columns.is-mobile > .column.is-offset-3 {\\n margin-left: 25%; }\\n .columns.is-mobile > .column.is-4 {\\n flex: none;\\n width: 33.33333%; }\\n .columns.is-mobile > .column.is-offset-4 {\\n margin-left: 33.33333%; }\\n .columns.is-mobile > .column.is-5 {\\n flex: none;\\n width: 41.66667%; }\\n .columns.is-mobile > .column.is-offset-5 {\\n margin-left: 41.66667%; }\\n .columns.is-mobile > .column.is-6 {\\n flex: none;\\n width: 50%; }\\n .columns.is-mobile > .column.is-offset-6 {\\n margin-left: 50%; }\\n .columns.is-mobile > .column.is-7 {\\n flex: none;\\n width: 58.33333%; }\\n .columns.is-mobile > .column.is-offset-7 {\\n margin-left: 58.33333%; }\\n .columns.is-mobile > .column.is-8 {\\n flex: none;\\n width: 66.66667%; }\\n .columns.is-mobile > .column.is-offset-8 {\\n margin-left: 66.66667%; }\\n .columns.is-mobile > .column.is-9 {\\n flex: none;\\n width: 75%; }\\n .columns.is-mobile > .column.is-offset-9 {\\n margin-left: 75%; }\\n .columns.is-mobile > .column.is-10 {\\n flex: none;\\n width: 83.33333%; }\\n .columns.is-mobile > .column.is-offset-10 {\\n margin-left: 83.33333%; }\\n .columns.is-mobile > .column.is-11 {\\n flex: none;\\n width: 91.66667%; }\\n .columns.is-mobile > .column.is-offset-11 {\\n margin-left: 91.66667%; }\\n .columns.is-mobile > .column.is-12 {\\n flex: none;\\n width: 100%; }\\n .columns.is-mobile > .column.is-offset-12 {\\n margin-left: 100%; }\\n @media screen and (max-width: 768px) {\\n .column.is-narrow-mobile {\\n flex: none; }\\n .column.is-full-mobile {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-mobile {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-mobile {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-mobile {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-mobile {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-mobile {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-mobile {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-mobile {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-mobile {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-mobile {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-mobile {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-mobile {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-mobile {\\n margin-left: 50%; }\\n .column.is-offset-one-third-mobile {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-mobile {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-mobile {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-mobile {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-mobile {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-mobile {\\n margin-left: 80%; }\\n .column.is-0-mobile {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-mobile {\\n margin-left: 0%; }\\n .column.is-1-mobile {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-mobile {\\n margin-left: 8.33333%; }\\n .column.is-2-mobile {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-mobile {\\n margin-left: 16.66667%; }\\n .column.is-3-mobile {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-mobile {\\n margin-left: 25%; }\\n .column.is-4-mobile {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-mobile {\\n margin-left: 33.33333%; }\\n .column.is-5-mobile {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-mobile {\\n margin-left: 41.66667%; }\\n .column.is-6-mobile {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-mobile {\\n margin-left: 50%; }\\n .column.is-7-mobile {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-mobile {\\n margin-left: 58.33333%; }\\n .column.is-8-mobile {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-mobile {\\n margin-left: 66.66667%; }\\n .column.is-9-mobile {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-mobile {\\n margin-left: 75%; }\\n .column.is-10-mobile {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-mobile {\\n margin-left: 83.33333%; }\\n .column.is-11-mobile {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-mobile {\\n margin-left: 91.66667%; }\\n .column.is-12-mobile {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-mobile {\\n margin-left: 100%; } }\\n @media screen and (min-width: 769px), print {\\n .column.is-narrow, .column.is-narrow-tablet {\\n flex: none; }\\n .column.is-full, .column.is-full-tablet {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters, .column.is-three-quarters-tablet {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds, .column.is-two-thirds-tablet {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half, .column.is-half-tablet {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third, .column.is-one-third-tablet {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter, .column.is-one-quarter-tablet {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth, .column.is-one-fifth-tablet {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths, .column.is-two-fifths-tablet {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths, .column.is-three-fifths-tablet {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths, .column.is-four-fifths-tablet {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet {\\n margin-left: 66.6666%; }\\n .column.is-offset-half, .column.is-offset-half-tablet {\\n margin-left: 50%; }\\n .column.is-offset-one-third, .column.is-offset-one-third-tablet {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet {\\n margin-left: 80%; }\\n .column.is-0, .column.is-0-tablet {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0, .column.is-offset-0-tablet {\\n margin-left: 0%; }\\n .column.is-1, .column.is-1-tablet {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1, .column.is-offset-1-tablet {\\n margin-left: 8.33333%; }\\n .column.is-2, .column.is-2-tablet {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2, .column.is-offset-2-tablet {\\n margin-left: 16.66667%; }\\n .column.is-3, .column.is-3-tablet {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3, .column.is-offset-3-tablet {\\n margin-left: 25%; }\\n .column.is-4, .column.is-4-tablet {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4, .column.is-offset-4-tablet {\\n margin-left: 33.33333%; }\\n .column.is-5, .column.is-5-tablet {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5, .column.is-offset-5-tablet {\\n margin-left: 41.66667%; }\\n .column.is-6, .column.is-6-tablet {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6, .column.is-offset-6-tablet {\\n margin-left: 50%; }\\n .column.is-7, .column.is-7-tablet {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7, .column.is-offset-7-tablet {\\n margin-left: 58.33333%; }\\n .column.is-8, .column.is-8-tablet {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8, .column.is-offset-8-tablet {\\n margin-left: 66.66667%; }\\n .column.is-9, .column.is-9-tablet {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9, .column.is-offset-9-tablet {\\n margin-left: 75%; }\\n .column.is-10, .column.is-10-tablet {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10, .column.is-offset-10-tablet {\\n margin-left: 83.33333%; }\\n .column.is-11, .column.is-11-tablet {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11, .column.is-offset-11-tablet {\\n margin-left: 91.66667%; }\\n .column.is-12, .column.is-12-tablet {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12, .column.is-offset-12-tablet {\\n margin-left: 100%; } }\\n @media screen and (max-width: 1023px) {\\n .column.is-narrow-touch {\\n flex: none; }\\n .column.is-full-touch {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-touch {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-touch {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-touch {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-touch {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-touch {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-touch {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-touch {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-touch {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-touch {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-touch {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-touch {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-touch {\\n margin-left: 50%; }\\n .column.is-offset-one-third-touch {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-touch {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-touch {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-touch {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-touch {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-touch {\\n margin-left: 80%; }\\n .column.is-0-touch {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-touch {\\n margin-left: 0%; }\\n .column.is-1-touch {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-touch {\\n margin-left: 8.33333%; }\\n .column.is-2-touch {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-touch {\\n margin-left: 16.66667%; }\\n .column.is-3-touch {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-touch {\\n margin-left: 25%; }\\n .column.is-4-touch {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-touch {\\n margin-left: 33.33333%; }\\n .column.is-5-touch {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-touch {\\n margin-left: 41.66667%; }\\n .column.is-6-touch {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-touch {\\n margin-left: 50%; }\\n .column.is-7-touch {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-touch {\\n margin-left: 58.33333%; }\\n .column.is-8-touch {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-touch {\\n margin-left: 66.66667%; }\\n .column.is-9-touch {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-touch {\\n margin-left: 75%; }\\n .column.is-10-touch {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-touch {\\n margin-left: 83.33333%; }\\n .column.is-11-touch {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-touch {\\n margin-left: 91.66667%; }\\n .column.is-12-touch {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-touch {\\n margin-left: 100%; } }\\n @media screen and (min-width: 1024px) {\\n .column.is-narrow-desktop {\\n flex: none; }\\n .column.is-full-desktop {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-desktop {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-desktop {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-desktop {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-desktop {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-desktop {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-desktop {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-desktop {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-desktop {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-desktop {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-desktop {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-desktop {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-desktop {\\n margin-left: 50%; }\\n .column.is-offset-one-third-desktop {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-desktop {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-desktop {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-desktop {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-desktop {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-desktop {\\n margin-left: 80%; }\\n .column.is-0-desktop {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-desktop {\\n margin-left: 0%; }\\n .column.is-1-desktop {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-desktop {\\n margin-left: 8.33333%; }\\n .column.is-2-desktop {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-desktop {\\n margin-left: 16.66667%; }\\n .column.is-3-desktop {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-desktop {\\n margin-left: 25%; }\\n .column.is-4-desktop {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-desktop {\\n margin-left: 33.33333%; }\\n .column.is-5-desktop {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-desktop {\\n margin-left: 41.66667%; }\\n .column.is-6-desktop {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-desktop {\\n margin-left: 50%; }\\n .column.is-7-desktop {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-desktop {\\n margin-left: 58.33333%; }\\n .column.is-8-desktop {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-desktop {\\n margin-left: 66.66667%; }\\n .column.is-9-desktop {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-desktop {\\n margin-left: 75%; }\\n .column.is-10-desktop {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-desktop {\\n margin-left: 83.33333%; }\\n .column.is-11-desktop {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-desktop {\\n margin-left: 91.66667%; }\\n .column.is-12-desktop {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-desktop {\\n margin-left: 100%; } }\\n @media screen and (min-width: 1216px) {\\n .column.is-narrow-widescreen {\\n flex: none; }\\n .column.is-full-widescreen {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-widescreen {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-widescreen {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-widescreen {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-widescreen {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-widescreen {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-widescreen {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-widescreen {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-widescreen {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-widescreen {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-widescreen {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-widescreen {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-widescreen {\\n margin-left: 50%; }\\n .column.is-offset-one-third-widescreen {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-widescreen {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-widescreen {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-widescreen {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-widescreen {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-widescreen {\\n margin-left: 80%; }\\n .column.is-0-widescreen {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-widescreen {\\n margin-left: 0%; }\\n .column.is-1-widescreen {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-widescreen {\\n margin-left: 8.33333%; }\\n .column.is-2-widescreen {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-widescreen {\\n margin-left: 16.66667%; }\\n .column.is-3-widescreen {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-widescreen {\\n margin-left: 25%; }\\n .column.is-4-widescreen {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-widescreen {\\n margin-left: 33.33333%; }\\n .column.is-5-widescreen {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-widescreen {\\n margin-left: 41.66667%; }\\n .column.is-6-widescreen {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-widescreen {\\n margin-left: 50%; }\\n .column.is-7-widescreen {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-widescreen {\\n margin-left: 58.33333%; }\\n .column.is-8-widescreen {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-widescreen {\\n margin-left: 66.66667%; }\\n .column.is-9-widescreen {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-widescreen {\\n margin-left: 75%; }\\n .column.is-10-widescreen {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-widescreen {\\n margin-left: 83.33333%; }\\n .column.is-11-widescreen {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-widescreen {\\n margin-left: 91.66667%; }\\n .column.is-12-widescreen {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-widescreen {\\n margin-left: 100%; } }\\n @media screen and (min-width: 1408px) {\\n .column.is-narrow-fullhd {\\n flex: none; }\\n .column.is-full-fullhd {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-fullhd {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-fullhd {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-fullhd {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-fullhd {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-fullhd {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-fullhd {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-fullhd {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-fullhd {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-fullhd {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-fullhd {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-fullhd {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-fullhd {\\n margin-left: 50%; }\\n .column.is-offset-one-third-fullhd {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-fullhd {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-fullhd {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-fullhd {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-fullhd {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-fullhd {\\n margin-left: 80%; }\\n .column.is-0-fullhd {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-fullhd {\\n margin-left: 0%; }\\n .column.is-1-fullhd {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-fullhd {\\n margin-left: 8.33333%; }\\n .column.is-2-fullhd {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-fullhd {\\n margin-left: 16.66667%; }\\n .column.is-3-fullhd {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-fullhd {\\n margin-left: 25%; }\\n .column.is-4-fullhd {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-fullhd {\\n margin-left: 33.33333%; }\\n .column.is-5-fullhd {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-fullhd {\\n margin-left: 41.66667%; }\\n .column.is-6-fullhd {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-fullhd {\\n margin-left: 50%; }\\n .column.is-7-fullhd {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-fullhd {\\n margin-left: 58.33333%; }\\n .column.is-8-fullhd {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-fullhd {\\n margin-left: 66.66667%; }\\n .column.is-9-fullhd {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-fullhd {\\n margin-left: 75%; }\\n .column.is-10-fullhd {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-fullhd {\\n margin-left: 83.33333%; }\\n .column.is-11-fullhd {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-fullhd {\\n margin-left: 91.66667%; }\\n .column.is-12-fullhd {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-fullhd {\\n margin-left: 100%; } }\\n\\n.columns {\\n margin-left: -0.75rem;\\n margin-right: -0.75rem;\\n margin-top: -0.75rem; }\\n .columns:last-child {\\n margin-bottom: -0.75rem; }\\n .columns:not(:last-child) {\\n margin-bottom: calc(1.5rem - 0.75rem); }\\n .columns.is-centered {\\n justify-content: center; }\\n .columns.is-gapless {\\n margin-left: 0;\\n margin-right: 0;\\n margin-top: 0; }\\n .columns.is-gapless > .column {\\n margin: 0;\\n padding: 0 !important; }\\n .columns.is-gapless:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n .columns.is-gapless:last-child {\\n margin-bottom: 0; }\\n .columns.is-mobile {\\n display: flex; }\\n .columns.is-multiline {\\n flex-wrap: wrap; }\\n .columns.is-vcentered {\\n align-items: center; }\\n @media screen and (min-width: 769px), print {\\n .columns:not(.is-desktop) {\\n display: flex; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-desktop {\\n display: flex; } }\\n\\n.columns.is-variable {\\n --columnGap: 0.75rem;\\n margin-left: calc(-1 * var(--columnGap));\\n margin-right: calc(-1 * var(--columnGap)); }\\n .columns.is-variable .column {\\n padding-left: var(--columnGap);\\n padding-right: var(--columnGap); }\\n .columns.is-variable.is-0 {\\n --columnGap: 0rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-0-mobile {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-0-tablet {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-0-tablet-only {\\n --columnGap: 0rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-0-touch {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-0-desktop {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-0-desktop-only {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-0-widescreen {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-0-widescreen-only {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-0-fullhd {\\n --columnGap: 0rem; } }\\n .columns.is-variable.is-1 {\\n --columnGap: 0.25rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-1-mobile {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-1-tablet {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-1-tablet-only {\\n --columnGap: 0.25rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-1-touch {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-1-desktop {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-1-desktop-only {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-1-widescreen {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-1-widescreen-only {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-1-fullhd {\\n --columnGap: 0.25rem; } }\\n .columns.is-variable.is-2 {\\n --columnGap: 0.5rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-2-mobile {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-2-tablet {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-2-tablet-only {\\n --columnGap: 0.5rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-2-touch {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-2-desktop {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-2-desktop-only {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-2-widescreen {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-2-widescreen-only {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-2-fullhd {\\n --columnGap: 0.5rem; } }\\n .columns.is-variable.is-3 {\\n --columnGap: 0.75rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-3-mobile {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-3-tablet {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-3-tablet-only {\\n --columnGap: 0.75rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-3-touch {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-3-desktop {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-3-desktop-only {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-3-widescreen {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-3-widescreen-only {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-3-fullhd {\\n --columnGap: 0.75rem; } }\\n .columns.is-variable.is-4 {\\n --columnGap: 1rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-4-mobile {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-4-tablet {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-4-tablet-only {\\n --columnGap: 1rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-4-touch {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-4-desktop {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-4-desktop-only {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-4-widescreen {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-4-widescreen-only {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-4-fullhd {\\n --columnGap: 1rem; } }\\n .columns.is-variable.is-5 {\\n --columnGap: 1.25rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-5-mobile {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-5-tablet {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-5-tablet-only {\\n --columnGap: 1.25rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-5-touch {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-5-desktop {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-5-desktop-only {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-5-widescreen {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-5-widescreen-only {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-5-fullhd {\\n --columnGap: 1.25rem; } }\\n .columns.is-variable.is-6 {\\n --columnGap: 1.5rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-6-mobile {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-6-tablet {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-6-tablet-only {\\n --columnGap: 1.5rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-6-touch {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-6-desktop {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-6-desktop-only {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-6-widescreen {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-6-widescreen-only {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-6-fullhd {\\n --columnGap: 1.5rem; } }\\n .columns.is-variable.is-7 {\\n --columnGap: 1.75rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-7-mobile {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-7-tablet {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-7-tablet-only {\\n --columnGap: 1.75rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-7-touch {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-7-desktop {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-7-desktop-only {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-7-widescreen {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-7-widescreen-only {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-7-fullhd {\\n --columnGap: 1.75rem; } }\\n .columns.is-variable.is-8 {\\n --columnGap: 2rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-8-mobile {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-8-tablet {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-8-tablet-only {\\n --columnGap: 2rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-8-touch {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-8-desktop {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-8-desktop-only {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-8-widescreen {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-8-widescreen-only {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-8-fullhd {\\n --columnGap: 2rem; } }\\n\\n.tile {\\n align-items: stretch;\\n display: block;\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 1;\\n min-height: min-content; }\\n .tile.is-ancestor {\\n margin-left: -0.75rem;\\n margin-right: -0.75rem;\\n margin-top: -0.75rem; }\\n .tile.is-ancestor:last-child {\\n margin-bottom: -0.75rem; }\\n .tile.is-ancestor:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n .tile.is-child {\\n margin: 0 !important; }\\n .tile.is-parent {\\n padding: 0.75rem; }\\n .tile.is-vertical {\\n flex-direction: column; }\\n .tile.is-vertical > .tile.is-child:not(:last-child) {\\n margin-bottom: 1.5rem !important; }\\n @media screen and (min-width: 769px), print {\\n .tile:not(.is-child) {\\n display: flex; }\\n .tile.is-1 {\\n flex: none;\\n width: 8.33333%; }\\n .tile.is-2 {\\n flex: none;\\n width: 16.66667%; }\\n .tile.is-3 {\\n flex: none;\\n width: 25%; }\\n .tile.is-4 {\\n flex: none;\\n width: 33.33333%; }\\n .tile.is-5 {\\n flex: none;\\n width: 41.66667%; }\\n .tile.is-6 {\\n flex: none;\\n width: 50%; }\\n .tile.is-7 {\\n flex: none;\\n width: 58.33333%; }\\n .tile.is-8 {\\n flex: none;\\n width: 66.66667%; }\\n .tile.is-9 {\\n flex: none;\\n width: 75%; }\\n .tile.is-10 {\\n flex: none;\\n width: 83.33333%; }\\n .tile.is-11 {\\n flex: none;\\n width: 91.66667%; }\\n .tile.is-12 {\\n flex: none;\\n width: 100%; } }\\n\\n.has-text-white {\\n color: white !important; }\\n\\na.has-text-white:hover, a.has-text-white:focus {\\n color: #e6e6e6 !important; }\\n\\n.has-background-white {\\n background-color: white !important; }\\n\\n.has-text-black {\\n color: #0a0a0a !important; }\\n\\na.has-text-black:hover, a.has-text-black:focus {\\n color: black !important; }\\n\\n.has-background-black {\\n background-color: #0a0a0a !important; }\\n\\n.has-text-light {\\n color: #d2f9d6 !important; }\\n\\na.has-text-light:hover, a.has-text-light:focus {\\n color: #a5f3ad !important; }\\n\\n.has-background-light {\\n background-color: #d2f9d6 !important; }\\n\\n.has-text-dark {\\n color: #459558 !important; }\\n\\na.has-text-dark:hover, a.has-text-dark:focus {\\n color: #357243 !important; }\\n\\n.has-background-dark {\\n background-color: #459558 !important; }\\n\\n.has-text-primary {\\n color: #55be6f !important; }\\n\\na.has-text-primary:hover, a.has-text-primary:focus {\\n color: #3ea257 !important; }\\n\\n.has-background-primary {\\n background-color: #55be6f !important; }\\n\\n.has-text-primary-light {\\n color: #f0f9f2 !important; }\\n\\na.has-text-primary-light:hover, a.has-text-primary-light:focus {\\n color: #cbebd3 !important; }\\n\\n.has-background-primary-light {\\n background-color: #f0f9f2 !important; }\\n\\n.has-text-primary-dark {\\n color: #2f7a41 !important; }\\n\\na.has-text-primary-dark:hover, a.has-text-primary-dark:focus {\\n color: #3d9f55 !important; }\\n\\n.has-background-primary-dark {\\n background-color: #2f7a41 !important; }\\n\\n.has-text-link {\\n color: #4876ff !important; }\\n\\na.has-text-link:hover, a.has-text-link:focus {\\n color: #1550ff !important; }\\n\\n.has-background-link {\\n background-color: #4876ff !important; }\\n\\n.has-text-link-light {\\n color: #ebf0ff !important; }\\n\\na.has-text-link-light:hover, a.has-text-link-light:focus {\\n color: #b8caff !important; }\\n\\n.has-background-link-light {\\n background-color: #ebf0ff !important; }\\n\\n.has-text-link-dark {\\n color: #0037db !important; }\\n\\na.has-text-link-dark:hover, a.has-text-link-dark:focus {\\n color: #0f4cff !important; }\\n\\n.has-background-link-dark {\\n background-color: #0037db !important; }\\n\\n.has-text-info {\\n color: #f0f8ff !important; }\\n\\na.has-text-info:hover, a.has-text-info:focus {\\n color: #bde0ff !important; }\\n\\n.has-background-info {\\n background-color: #f0f8ff !important; }\\n\\n.has-text-info-light {\\n color: aliceblue !important; }\\n\\na.has-text-info-light:hover, a.has-text-info-light:focus {\\n color: #bde0ff !important; }\\n\\n.has-background-info-light {\\n background-color: aliceblue !important; }\\n\\n.has-text-info-dark {\\n color: #004f94 !important; }\\n\\na.has-text-info-dark:hover, a.has-text-info-dark:focus {\\n color: #006ac7 !important; }\\n\\n.has-background-info-dark {\\n background-color: #004f94 !important; }\\n\\n.has-text-success {\\n color: #48c774 !important; }\\n\\na.has-text-success:hover, a.has-text-success:focus {\\n color: #34a85c !important; }\\n\\n.has-background-success {\\n background-color: #48c774 !important; }\\n\\n.has-text-success-light {\\n color: #effaf3 !important; }\\n\\na.has-text-success-light:hover, a.has-text-success-light:focus {\\n color: #c8eed6 !important; }\\n\\n.has-background-success-light {\\n background-color: #effaf3 !important; }\\n\\n.has-text-success-dark {\\n color: #257942 !important; }\\n\\na.has-text-success-dark:hover, a.has-text-success-dark:focus {\\n color: #31a058 !important; }\\n\\n.has-background-success-dark {\\n background-color: #257942 !important; }\\n\\n.has-text-warning {\\n color: #ffd975 !important; }\\n\\na.has-text-warning:hover, a.has-text-warning:focus {\\n color: #ffcb42 !important; }\\n\\n.has-background-warning {\\n background-color: #ffd975 !important; }\\n\\n.has-text-warning-light {\\n color: #fff9eb !important; }\\n\\na.has-text-warning-light:hover, a.has-text-warning-light:focus {\\n color: #ffebb8 !important; }\\n\\n.has-background-warning-light {\\n background-color: #fff9eb !important; }\\n\\n.has-text-warning-dark {\\n color: #946b00 !important; }\\n\\na.has-text-warning-dark:hover, a.has-text-warning-dark:focus {\\n color: #c79000 !important; }\\n\\n.has-background-warning-dark {\\n background-color: #946b00 !important; }\\n\\n.has-text-danger {\\n color: #f14668 !important; }\\n\\na.has-text-danger:hover, a.has-text-danger:focus {\\n color: #ee1742 !important; }\\n\\n.has-background-danger {\\n background-color: #f14668 !important; }\\n\\n.has-text-danger-light {\\n color: #feecf0 !important; }\\n\\na.has-text-danger-light:hover, a.has-text-danger-light:focus {\\n color: #fabdc9 !important; }\\n\\n.has-background-danger-light {\\n background-color: #feecf0 !important; }\\n\\n.has-text-danger-dark {\\n color: #cc0f35 !important; }\\n\\na.has-text-danger-dark:hover, a.has-text-danger-dark:focus {\\n color: #ee2049 !important; }\\n\\n.has-background-danger-dark {\\n background-color: #cc0f35 !important; }\\n\\n.has-text-black-bis {\\n color: #121212 !important; }\\n\\n.has-background-black-bis {\\n background-color: #121212 !important; }\\n\\n.has-text-black-ter {\\n color: #242424 !important; }\\n\\n.has-background-black-ter {\\n background-color: #242424 !important; }\\n\\n.has-text-grey-darker {\\n color: #363636 !important; }\\n\\n.has-background-grey-darker {\\n background-color: #363636 !important; }\\n\\n.has-text-grey-dark {\\n color: #4a4a4a !important; }\\n\\n.has-background-grey-dark {\\n background-color: #4a4a4a !important; }\\n\\n.has-text-grey {\\n color: #7a7a7a !important; }\\n\\n.has-background-grey {\\n background-color: #7a7a7a !important; }\\n\\n.has-text-grey-light {\\n color: #b5b5b5 !important; }\\n\\n.has-background-grey-light {\\n background-color: #b5b5b5 !important; }\\n\\n.has-text-grey-lighter {\\n color: #dbdbdb !important; }\\n\\n.has-background-grey-lighter {\\n background-color: #dbdbdb !important; }\\n\\n.has-text-white-ter {\\n color: whitesmoke !important; }\\n\\n.has-background-white-ter {\\n background-color: whitesmoke !important; }\\n\\n.has-text-white-bis {\\n color: #fafafa !important; }\\n\\n.has-background-white-bis {\\n background-color: #fafafa !important; }\\n\\n.is-clearfix::after {\\n clear: both;\\n content: \\\" \\\";\\n display: table; }\\n\\n.is-pulled-left {\\n float: left !important; }\\n\\n.is-pulled-right {\\n float: right !important; }\\n\\n.is-radiusless {\\n border-radius: 0 !important; }\\n\\n.is-shadowless {\\n box-shadow: none !important; }\\n\\n.is-clipped {\\n overflow: hidden !important; }\\n\\n.is-relative {\\n position: relative !important; }\\n\\n.is-marginless {\\n margin: 0 !important; }\\n\\n.is-paddingless {\\n padding: 0 !important; }\\n\\n.mt-0 {\\n margin-top: 0 !important; }\\n\\n.mr-0 {\\n margin-right: 0 !important; }\\n\\n.mb-0 {\\n margin-bottom: 0 !important; }\\n\\n.ml-0 {\\n margin-left: 0 !important; }\\n\\n.mx-0 {\\n margin-left: 0 !important;\\n margin-right: 0 !important; }\\n\\n.my-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important; }\\n\\n.mt-1 {\\n margin-top: 0.25rem !important; }\\n\\n.mr-1 {\\n margin-right: 0.25rem !important; }\\n\\n.mb-1 {\\n margin-bottom: 0.25rem !important; }\\n\\n.ml-1 {\\n margin-left: 0.25rem !important; }\\n\\n.mx-1 {\\n margin-left: 0.25rem !important;\\n margin-right: 0.25rem !important; }\\n\\n.my-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important; }\\n\\n.mt-2 {\\n margin-top: 0.5rem !important; }\\n\\n.mr-2 {\\n margin-right: 0.5rem !important; }\\n\\n.mb-2 {\\n margin-bottom: 0.5rem !important; }\\n\\n.ml-2 {\\n margin-left: 0.5rem !important; }\\n\\n.mx-2 {\\n margin-left: 0.5rem !important;\\n margin-right: 0.5rem !important; }\\n\\n.my-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important; }\\n\\n.mt-3 {\\n margin-top: 0.75rem !important; }\\n\\n.mr-3 {\\n margin-right: 0.75rem !important; }\\n\\n.mb-3 {\\n margin-bottom: 0.75rem !important; }\\n\\n.ml-3 {\\n margin-left: 0.75rem !important; }\\n\\n.mx-3 {\\n margin-left: 0.75rem !important;\\n margin-right: 0.75rem !important; }\\n\\n.my-3 {\\n margin-top: 0.75rem !important;\\n margin-bottom: 0.75rem !important; }\\n\\n.mt-4 {\\n margin-top: 1rem !important; }\\n\\n.mr-4 {\\n margin-right: 1rem !important; }\\n\\n.mb-4 {\\n margin-bottom: 1rem !important; }\\n\\n.ml-4 {\\n margin-left: 1rem !important; }\\n\\n.mx-4 {\\n margin-left: 1rem !important;\\n margin-right: 1rem !important; }\\n\\n.my-4 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important; }\\n\\n.mt-5 {\\n margin-top: 1.5rem !important; }\\n\\n.mr-5 {\\n margin-right: 1.5rem !important; }\\n\\n.mb-5 {\\n margin-bottom: 1.5rem !important; }\\n\\n.ml-5 {\\n margin-left: 1.5rem !important; }\\n\\n.mx-5 {\\n margin-left: 1.5rem !important;\\n margin-right: 1.5rem !important; }\\n\\n.my-5 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important; }\\n\\n.mt-6 {\\n margin-top: 3rem !important; }\\n\\n.mr-6 {\\n margin-right: 3rem !important; }\\n\\n.mb-6 {\\n margin-bottom: 3rem !important; }\\n\\n.ml-6 {\\n margin-left: 3rem !important; }\\n\\n.mx-6 {\\n margin-left: 3rem !important;\\n margin-right: 3rem !important; }\\n\\n.my-6 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important; }\\n\\n.pt-0 {\\n padding-top: 0 !important; }\\n\\n.pr-0 {\\n padding-right: 0 !important; }\\n\\n.pb-0 {\\n padding-bottom: 0 !important; }\\n\\n.pl-0 {\\n padding-left: 0 !important; }\\n\\n.px-0 {\\n padding-left: 0 !important;\\n padding-right: 0 !important; }\\n\\n.py-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important; }\\n\\n.pt-1 {\\n padding-top: 0.25rem !important; }\\n\\n.pr-1 {\\n padding-right: 0.25rem !important; }\\n\\n.pb-1 {\\n padding-bottom: 0.25rem !important; }\\n\\n.pl-1 {\\n padding-left: 0.25rem !important; }\\n\\n.px-1 {\\n padding-left: 0.25rem !important;\\n padding-right: 0.25rem !important; }\\n\\n.py-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important; }\\n\\n.pt-2 {\\n padding-top: 0.5rem !important; }\\n\\n.pr-2 {\\n padding-right: 0.5rem !important; }\\n\\n.pb-2 {\\n padding-bottom: 0.5rem !important; }\\n\\n.pl-2 {\\n padding-left: 0.5rem !important; }\\n\\n.px-2 {\\n padding-left: 0.5rem !important;\\n padding-right: 0.5rem !important; }\\n\\n.py-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important; }\\n\\n.pt-3 {\\n padding-top: 0.75rem !important; }\\n\\n.pr-3 {\\n padding-right: 0.75rem !important; }\\n\\n.pb-3 {\\n padding-bottom: 0.75rem !important; }\\n\\n.pl-3 {\\n padding-left: 0.75rem !important; }\\n\\n.px-3 {\\n padding-left: 0.75rem !important;\\n padding-right: 0.75rem !important; }\\n\\n.py-3 {\\n padding-top: 0.75rem !important;\\n padding-bottom: 0.75rem !important; }\\n\\n.pt-4 {\\n padding-top: 1rem !important; }\\n\\n.pr-4 {\\n padding-right: 1rem !important; }\\n\\n.pb-4 {\\n padding-bottom: 1rem !important; }\\n\\n.pl-4 {\\n padding-left: 1rem !important; }\\n\\n.px-4 {\\n padding-left: 1rem !important;\\n padding-right: 1rem !important; }\\n\\n.py-4 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important; }\\n\\n.pt-5 {\\n padding-top: 1.5rem !important; }\\n\\n.pr-5 {\\n padding-right: 1.5rem !important; }\\n\\n.pb-5 {\\n padding-bottom: 1.5rem !important; }\\n\\n.pl-5 {\\n padding-left: 1.5rem !important; }\\n\\n.px-5 {\\n padding-left: 1.5rem !important;\\n padding-right: 1.5rem !important; }\\n\\n.py-5 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important; }\\n\\n.pt-6 {\\n padding-top: 3rem !important; }\\n\\n.pr-6 {\\n padding-right: 3rem !important; }\\n\\n.pb-6 {\\n padding-bottom: 3rem !important; }\\n\\n.pl-6 {\\n padding-left: 3rem !important; }\\n\\n.px-6 {\\n padding-left: 3rem !important;\\n padding-right: 3rem !important; }\\n\\n.py-6 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important; }\\n\\n.is-size-1 {\\n font-size: 3rem !important; }\\n\\n.is-size-2 {\\n font-size: 2.5rem !important; }\\n\\n.is-size-3 {\\n font-size: 2rem !important; }\\n\\n.is-size-4 {\\n font-size: 1.5rem !important; }\\n\\n.is-size-5 {\\n font-size: 1.25rem !important; }\\n\\n.is-size-6 {\\n font-size: 1rem !important; }\\n\\n.is-size-7 {\\n font-size: 0.75rem !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-size-1-mobile {\\n font-size: 3rem !important; }\\n .is-size-2-mobile {\\n font-size: 2.5rem !important; }\\n .is-size-3-mobile {\\n font-size: 2rem !important; }\\n .is-size-4-mobile {\\n font-size: 1.5rem !important; }\\n .is-size-5-mobile {\\n font-size: 1.25rem !important; }\\n .is-size-6-mobile {\\n font-size: 1rem !important; }\\n .is-size-7-mobile {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-size-1-tablet {\\n font-size: 3rem !important; }\\n .is-size-2-tablet {\\n font-size: 2.5rem !important; }\\n .is-size-3-tablet {\\n font-size: 2rem !important; }\\n .is-size-4-tablet {\\n font-size: 1.5rem !important; }\\n .is-size-5-tablet {\\n font-size: 1.25rem !important; }\\n .is-size-6-tablet {\\n font-size: 1rem !important; }\\n .is-size-7-tablet {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-size-1-touch {\\n font-size: 3rem !important; }\\n .is-size-2-touch {\\n font-size: 2.5rem !important; }\\n .is-size-3-touch {\\n font-size: 2rem !important; }\\n .is-size-4-touch {\\n font-size: 1.5rem !important; }\\n .is-size-5-touch {\\n font-size: 1.25rem !important; }\\n .is-size-6-touch {\\n font-size: 1rem !important; }\\n .is-size-7-touch {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-size-1-desktop {\\n font-size: 3rem !important; }\\n .is-size-2-desktop {\\n font-size: 2.5rem !important; }\\n .is-size-3-desktop {\\n font-size: 2rem !important; }\\n .is-size-4-desktop {\\n font-size: 1.5rem !important; }\\n .is-size-5-desktop {\\n font-size: 1.25rem !important; }\\n .is-size-6-desktop {\\n font-size: 1rem !important; }\\n .is-size-7-desktop {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-size-1-widescreen {\\n font-size: 3rem !important; }\\n .is-size-2-widescreen {\\n font-size: 2.5rem !important; }\\n .is-size-3-widescreen {\\n font-size: 2rem !important; }\\n .is-size-4-widescreen {\\n font-size: 1.5rem !important; }\\n .is-size-5-widescreen {\\n font-size: 1.25rem !important; }\\n .is-size-6-widescreen {\\n font-size: 1rem !important; }\\n .is-size-7-widescreen {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-size-1-fullhd {\\n font-size: 3rem !important; }\\n .is-size-2-fullhd {\\n font-size: 2.5rem !important; }\\n .is-size-3-fullhd {\\n font-size: 2rem !important; }\\n .is-size-4-fullhd {\\n font-size: 1.5rem !important; }\\n .is-size-5-fullhd {\\n font-size: 1.25rem !important; }\\n .is-size-6-fullhd {\\n font-size: 1rem !important; }\\n .is-size-7-fullhd {\\n font-size: 0.75rem !important; } }\\n\\n.has-text-centered {\\n text-align: center !important; }\\n\\n.has-text-justified {\\n text-align: justify !important; }\\n\\n.has-text-left {\\n text-align: left !important; }\\n\\n.has-text-right {\\n text-align: right !important; }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-centered-mobile {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-centered-tablet {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-centered-tablet-only {\\n text-align: center !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-centered-touch {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-centered-desktop {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-centered-desktop-only {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-centered-widescreen {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-centered-widescreen-only {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-centered-fullhd {\\n text-align: center !important; } }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-justified-mobile {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-justified-tablet {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-justified-tablet-only {\\n text-align: justify !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-justified-touch {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-justified-desktop {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-justified-desktop-only {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-justified-widescreen {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-justified-widescreen-only {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-justified-fullhd {\\n text-align: justify !important; } }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-left-mobile {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-left-tablet {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-left-tablet-only {\\n text-align: left !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-left-touch {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-left-desktop {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-left-desktop-only {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-left-widescreen {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-left-widescreen-only {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-left-fullhd {\\n text-align: left !important; } }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-right-mobile {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-right-tablet {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-right-tablet-only {\\n text-align: right !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-right-touch {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-right-desktop {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-right-desktop-only {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-right-widescreen {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-right-widescreen-only {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-right-fullhd {\\n text-align: right !important; } }\\n\\n.is-capitalized {\\n text-transform: capitalize !important; }\\n\\n.is-lowercase {\\n text-transform: lowercase !important; }\\n\\n.is-uppercase {\\n text-transform: uppercase !important; }\\n\\n.is-italic {\\n font-style: italic !important; }\\n\\n.has-text-weight-light {\\n font-weight: 300 !important; }\\n\\n.has-text-weight-normal {\\n font-weight: 400 !important; }\\n\\n.has-text-weight-medium {\\n font-weight: 500 !important; }\\n\\n.has-text-weight-semibold {\\n font-weight: 600 !important; }\\n\\n.has-text-weight-bold {\\n font-weight: 700 !important; }\\n\\n.is-family-primary {\\n font-family: BlinkMacSystemFont, -apple-system, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Oxygen\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif !important; }\\n\\n.is-family-secondary {\\n font-family: BlinkMacSystemFont, -apple-system, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Oxygen\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif !important; }\\n\\n.is-family-sans-serif {\\n font-family: BlinkMacSystemFont, -apple-system, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Oxygen\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif !important; }\\n\\n.is-family-monospace {\\n font-family: monospace !important; }\\n\\n.is-family-code {\\n font-family: monospace !important; }\\n\\n.is-block {\\n display: block !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-block-mobile {\\n display: block !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-block-tablet {\\n display: block !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-block-tablet-only {\\n display: block !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-block-touch {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-block-desktop {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-block-desktop-only {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-block-widescreen {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-block-widescreen-only {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-block-fullhd {\\n display: block !important; } }\\n\\n.is-flex {\\n display: flex !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-flex-mobile {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-flex-tablet {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-flex-tablet-only {\\n display: flex !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-flex-touch {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-flex-desktop {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-flex-desktop-only {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-flex-widescreen {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-flex-widescreen-only {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-flex-fullhd {\\n display: flex !important; } }\\n\\n.is-inline {\\n display: inline !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-inline-mobile {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-inline-tablet {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-inline-tablet-only {\\n display: inline !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-inline-touch {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-inline-desktop {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-inline-desktop-only {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-inline-widescreen {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-inline-widescreen-only {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-inline-fullhd {\\n display: inline !important; } }\\n\\n.is-inline-block {\\n display: inline-block !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-inline-block-mobile {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-inline-block-tablet {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-inline-block-tablet-only {\\n display: inline-block !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-inline-block-touch {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-inline-block-desktop {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-inline-block-desktop-only {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-inline-block-widescreen {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-inline-block-widescreen-only {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-inline-block-fullhd {\\n display: inline-block !important; } }\\n\\n.is-inline-flex {\\n display: inline-flex !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-inline-flex-mobile {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-inline-flex-tablet {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-inline-flex-tablet-only {\\n display: inline-flex !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-inline-flex-touch {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-inline-flex-desktop {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-inline-flex-desktop-only {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-inline-flex-widescreen {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-inline-flex-widescreen-only {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-inline-flex-fullhd {\\n display: inline-flex !important; } }\\n\\n.is-hidden {\\n display: none !important; }\\n\\n.is-sr-only {\\n border: none !important;\\n clip: rect(0, 0, 0, 0) !important;\\n height: 0.01em !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 0.01em !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-hidden-mobile {\\n display: none !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-hidden-tablet {\\n display: none !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-hidden-tablet-only {\\n display: none !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-hidden-touch {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-hidden-desktop {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-hidden-desktop-only {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-hidden-widescreen {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-hidden-widescreen-only {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-hidden-fullhd {\\n display: none !important; } }\\n\\n.is-invisible {\\n visibility: hidden !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-invisible-mobile {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-invisible-tablet {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-invisible-tablet-only {\\n visibility: hidden !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-invisible-touch {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-invisible-desktop {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-invisible-desktop-only {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-invisible-widescreen {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-invisible-widescreen-only {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-invisible-fullhd {\\n visibility: hidden !important; } }\\n\\n.hero {\\n align-items: stretch;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between; }\\n .hero .navbar {\\n background: none; }\\n .hero .tabs ul {\\n border-bottom: none; }\\n .hero.is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-white strong {\\n color: inherit; }\\n .hero.is-white .title {\\n color: #0a0a0a; }\\n .hero.is-white .subtitle {\\n color: rgba(10, 10, 10, 0.9); }\\n .hero.is-white .subtitle a:not(.button),\\n .hero.is-white .subtitle strong {\\n color: #0a0a0a; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-white .navbar-menu {\\n background-color: white; } }\\n .hero.is-white .navbar-item,\\n .hero.is-white .navbar-link {\\n color: rgba(10, 10, 10, 0.7); }\\n .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active,\\n .hero.is-white .navbar-link:hover,\\n .hero.is-white .navbar-link.is-active {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .hero.is-white .tabs a {\\n color: #0a0a0a;\\n opacity: 0.9; }\\n .hero.is-white .tabs a:hover {\\n opacity: 1; }\\n .hero.is-white .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a {\\n color: #0a0a0a; }\\n .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover {\\n background-color: #0a0a0a;\\n border-color: #0a0a0a;\\n color: white; }\\n .hero.is-white.is-bold {\\n background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-white.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } }\\n .hero.is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-black strong {\\n color: inherit; }\\n .hero.is-black .title {\\n color: white; }\\n .hero.is-black .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-black .subtitle a:not(.button),\\n .hero.is-black .subtitle strong {\\n color: white; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-black .navbar-menu {\\n background-color: #0a0a0a; } }\\n .hero.is-black .navbar-item,\\n .hero.is-black .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active,\\n .hero.is-black .navbar-link:hover,\\n .hero.is-black .navbar-link.is-active {\\n background-color: black;\\n color: white; }\\n .hero.is-black .tabs a {\\n color: white;\\n opacity: 0.9; }\\n .hero.is-black .tabs a:hover {\\n opacity: 1; }\\n .hero.is-black .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a {\\n color: white; }\\n .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover {\\n background-color: white;\\n border-color: white;\\n color: #0a0a0a; }\\n .hero.is-black.is-bold {\\n background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-black.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } }\\n .hero.is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-light strong {\\n color: inherit; }\\n .hero.is-light .title {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light .subtitle {\\n color: rgba(0, 0, 0, 0.9); }\\n .hero.is-light .subtitle a:not(.button),\\n .hero.is-light .subtitle strong {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (max-width: 1023px) {\\n .hero.is-light .navbar-menu {\\n background-color: #d2f9d6; } }\\n .hero.is-light .navbar-item,\\n .hero.is-light .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active,\\n .hero.is-light .navbar-link:hover,\\n .hero.is-light .navbar-link.is-active {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light .tabs a {\\n color: rgba(0, 0, 0, 0.7);\\n opacity: 0.9; }\\n .hero.is-light .tabs a:hover {\\n opacity: 1; }\\n .hero.is-light .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: rgba(0, 0, 0, 0.7);\\n color: #d2f9d6; }\\n .hero.is-light.is-bold {\\n background-image: linear-gradient(141deg, #a6f8a0 0%, #d2f9d6 71%, #e8fded 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-light.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #a6f8a0 0%, #d2f9d6 71%, #e8fded 100%); } }\\n .hero.is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-dark strong {\\n color: inherit; }\\n .hero.is-dark .title {\\n color: #fff; }\\n .hero.is-dark .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-dark .subtitle a:not(.button),\\n .hero.is-dark .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-dark .navbar-menu {\\n background-color: #459558; } }\\n .hero.is-dark .navbar-item,\\n .hero.is-dark .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active,\\n .hero.is-dark .navbar-link:hover,\\n .hero.is-dark .navbar-link.is-active {\\n background-color: #3d844e;\\n color: #fff; }\\n .hero.is-dark .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-dark .tabs a:hover {\\n opacity: 1; }\\n .hero.is-dark .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #459558; }\\n .hero.is-dark.is-bold {\\n background-image: linear-gradient(141deg, #2d7a32 0%, #459558 71%, #47ad70 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-dark.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #2d7a32 0%, #459558 71%, #47ad70 100%); } }\\n .hero.is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-primary strong {\\n color: inherit; }\\n .hero.is-primary .title {\\n color: #fff; }\\n .hero.is-primary .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-primary .subtitle a:not(.button),\\n .hero.is-primary .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-primary .navbar-menu {\\n background-color: #55be6f; } }\\n .hero.is-primary .navbar-item,\\n .hero.is-primary .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active,\\n .hero.is-primary .navbar-link:hover,\\n .hero.is-primary .navbar-link.is-active {\\n background-color: #45b461;\\n color: #fff; }\\n .hero.is-primary .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-primary .tabs a:hover {\\n opacity: 1; }\\n .hero.is-primary .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #55be6f; }\\n .hero.is-primary.is-bold {\\n background-image: linear-gradient(141deg, #33ad3d 0%, #55be6f 71%, #62ca8d 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-primary.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #33ad3d 0%, #55be6f 71%, #62ca8d 100%); } }\\n .hero.is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-link strong {\\n color: inherit; }\\n .hero.is-link .title {\\n color: #fff; }\\n .hero.is-link .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-link .subtitle a:not(.button),\\n .hero.is-link .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-link .navbar-menu {\\n background-color: #4876ff; } }\\n .hero.is-link .navbar-item,\\n .hero.is-link .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active,\\n .hero.is-link .navbar-link:hover,\\n .hero.is-link .navbar-link.is-active {\\n background-color: #2f63ff;\\n color: #fff; }\\n .hero.is-link .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-link .tabs a:hover {\\n opacity: 1; }\\n .hero.is-link .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #4876ff; }\\n .hero.is-link.is-bold {\\n background-image: linear-gradient(141deg, #1577ff 0%, #4876ff 71%, #626fff 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-link.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #1577ff 0%, #4876ff 71%, #626fff 100%); } }\\n .hero.is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-info strong {\\n color: inherit; }\\n .hero.is-info .title {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info .subtitle {\\n color: rgba(0, 0, 0, 0.9); }\\n .hero.is-info .subtitle a:not(.button),\\n .hero.is-info .subtitle strong {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (max-width: 1023px) {\\n .hero.is-info .navbar-menu {\\n background-color: #f0f8ff; } }\\n .hero.is-info .navbar-item,\\n .hero.is-info .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active,\\n .hero.is-info .navbar-link:hover,\\n .hero.is-info .navbar-link.is-active {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info .tabs a {\\n color: rgba(0, 0, 0, 0.7);\\n opacity: 0.9; }\\n .hero.is-info .tabs a:hover {\\n opacity: 1; }\\n .hero.is-info .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: rgba(0, 0, 0, 0.7);\\n color: #f0f8ff; }\\n .hero.is-info.is-bold {\\n background-image: linear-gradient(141deg, #bdebff 0%, #f0f8ff 71%, white 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-info.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #bdebff 0%, #f0f8ff 71%, white 100%); } }\\n .hero.is-success {\\n background-color: #48c774;\\n color: #fff; }\\n .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-success strong {\\n color: inherit; }\\n .hero.is-success .title {\\n color: #fff; }\\n .hero.is-success .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-success .subtitle a:not(.button),\\n .hero.is-success .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-success .navbar-menu {\\n background-color: #48c774; } }\\n .hero.is-success .navbar-item,\\n .hero.is-success .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active,\\n .hero.is-success .navbar-link:hover,\\n .hero.is-success .navbar-link.is-active {\\n background-color: #3abb67;\\n color: #fff; }\\n .hero.is-success .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-success .tabs a:hover {\\n opacity: 1; }\\n .hero.is-success .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #48c774; }\\n .hero.is-success.is-bold {\\n background-image: linear-gradient(141deg, #29b342 0%, #48c774 71%, #56d296 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-success.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #29b342 0%, #48c774 71%, #56d296 100%); } }\\n .hero.is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-warning strong {\\n color: inherit; }\\n .hero.is-warning .title {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning .subtitle {\\n color: rgba(0, 0, 0, 0.9); }\\n .hero.is-warning .subtitle a:not(.button),\\n .hero.is-warning .subtitle strong {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (max-width: 1023px) {\\n .hero.is-warning .navbar-menu {\\n background-color: #ffd975; } }\\n .hero.is-warning .navbar-item,\\n .hero.is-warning .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active,\\n .hero.is-warning .navbar-link:hover,\\n .hero.is-warning .navbar-link.is-active {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning .tabs a {\\n color: rgba(0, 0, 0, 0.7);\\n opacity: 0.9; }\\n .hero.is-warning .tabs a:hover {\\n opacity: 1; }\\n .hero.is-warning .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: rgba(0, 0, 0, 0.7);\\n color: #ffd975; }\\n .hero.is-warning.is-bold {\\n background-image: linear-gradient(141deg, #ffab42 0%, #ffd975 71%, #fff38f 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-warning.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #ffab42 0%, #ffd975 71%, #fff38f 100%); } }\\n .hero.is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-danger strong {\\n color: inherit; }\\n .hero.is-danger .title {\\n color: #fff; }\\n .hero.is-danger .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-danger .subtitle a:not(.button),\\n .hero.is-danger .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-danger .navbar-menu {\\n background-color: #f14668; } }\\n .hero.is-danger .navbar-item,\\n .hero.is-danger .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active,\\n .hero.is-danger .navbar-link:hover,\\n .hero.is-danger .navbar-link.is-active {\\n background-color: #ef2e55;\\n color: #fff; }\\n .hero.is-danger .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-danger .tabs a:hover {\\n opacity: 1; }\\n .hero.is-danger .tabs li.is-active a {\\n opacity: 1; }\\n .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #f14668; }\\n .hero.is-danger.is-bold {\\n background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-danger.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); } }\\n .hero.is-small .hero-body {\\n padding: 1.5rem; }\\n @media screen and (min-width: 769px), print {\\n .hero.is-medium .hero-body {\\n padding: 9rem 1.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .hero.is-large .hero-body {\\n padding: 18rem 1.5rem; } }\\n .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body {\\n align-items: center;\\n display: flex; }\\n .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .hero.is-halfheight {\\n min-height: 50vh; }\\n .hero.is-fullheight {\\n min-height: 100vh; }\\n\\n.hero-video {\\n overflow: hidden; }\\n .hero-video video {\\n left: 50%;\\n min-height: 100%;\\n min-width: 100%;\\n position: absolute;\\n top: 50%;\\n transform: translate3d(-50%, -50%, 0); }\\n .hero-video.is-transparent {\\n opacity: 0.3; }\\n @media screen and (max-width: 768px) {\\n .hero-video {\\n display: none; } }\\n\\n.hero-buttons {\\n margin-top: 1.5rem; }\\n @media screen and (max-width: 768px) {\\n .hero-buttons .button {\\n display: flex; }\\n .hero-buttons .button:not(:last-child) {\\n margin-bottom: 0.75rem; } }\\n @media screen and (min-width: 769px), print {\\n .hero-buttons {\\n display: flex;\\n justify-content: center; }\\n .hero-buttons .button:not(:last-child) {\\n margin-right: 1.5rem; } }\\n\\n.hero-head,\\n.hero-foot {\\n flex-grow: 0;\\n flex-shrink: 0; }\\n\\n.hero-body {\\n flex-grow: 1;\\n flex-shrink: 0;\\n padding: 3rem 1.5rem; }\\n\\n.section {\\n padding: 3rem 1.5rem; }\\n @media screen and (min-width: 1024px) {\\n .section.is-medium {\\n padding: 9rem 1.5rem; }\\n .section.is-large {\\n padding: 18rem 1.5rem; } }\\n\\n.footer {\\n background-color: #fafafa;\\n padding: 3rem 1.5rem 6rem; }\\n\\n:host {\\n background-color: white;\\n font-size: 16px;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n min-width: 300px;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n text-rendering: optimizeLegibility;\\n text-size-adjust: 100%;\\n font-family: BlinkMacSystemFont, -apple-system, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Oxygen\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", \\\"Helvetica\\\", \\\"Arial\\\", sans-serif;\\n color: #4a4a4a;\\n font-size: 1em;\\n font-weight: 400;\\n line-height: 1.5;\\n box-sizing: border-box;\\n overflow: hidden; }\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./assets/main.scss?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg":
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg ***!
|
|
\*********************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg":
|
|
/*!**************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg ***!
|
|
\**************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg":
|
|
/*!********************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg ***!
|
|
\********************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 384 512\\\"><path d=\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg ***!
|
|
\******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg":
|
|
/*!*************************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg ***!
|
|
\*************************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><path d=\\\"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg":
|
|
/*!***********************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg ***!
|
|
\***********************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><path d=\\\"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg ***!
|
|
\******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><path d=\\\"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg ***!
|
|
\******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 256 512\\\"><path d=\\\"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg":
|
|
/*!*******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg ***!
|
|
\*******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 256 512\\\"><path d=\\\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg ***!
|
|
\******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg":
|
|
/*!*******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg ***!
|
|
\*******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg":
|
|
/*!************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg ***!
|
|
\************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg":
|
|
/*!***************************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg ***!
|
|
\***************************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg":
|
|
/*!***************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg ***!
|
|
\***************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 576 512\\\"><path d=\\\"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg":
|
|
/*!************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg ***!
|
|
\************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 576 512\\\"><path d=\\\"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg ***!
|
|
\******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 192 512\\\"><path d=\\\"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg":
|
|
/*!*******************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg ***!
|
|
\*******************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg":
|
|
/*!********************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg ***!
|
|
\********************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 576 512\\\"><path d=\\\"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg":
|
|
/*!***********************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg ***!
|
|
\***********************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg":
|
|
/*!****************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg ***!
|
|
\****************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg":
|
|
/*!**************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg ***!
|
|
\**************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg":
|
|
/*!*****************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg ***!
|
|
\*****************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><path d=\\\"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg":
|
|
/*!***************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg ***!
|
|
\***************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><path d=\\\"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg":
|
|
/*!****************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg ***!
|
|
\****************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg":
|
|
/*!**************************************************************************!*\
|
|
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg ***!
|
|
\**************************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\\"></path></svg>\"\n\n//# sourceURL=webpack:///./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
\*****************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/api.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/fetch-ndjson/dist/index.js":
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/fetch-ndjson/dist/index.js ***!
|
|
\*************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("\n// const debug = console.log;\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// reader comes from:\n// fetch('/api').then(response => response.body.getReader())\nfunction gen(reader) {\n return __asyncGenerator(this, arguments, function* gen_1() {\n const matcher = /\\r?\\n/;\n const decoder = new TextDecoder();\n let buf = '';\n let next = reader.read();\n while (true) {\n const { done, value } = yield __await(next);\n if (done) {\n if (buf.length > 0) {\n yield yield __await(JSON.parse(buf));\n }\n return yield __await(void 0);\n }\n const chunk = decoder.decode(value, { stream: true });\n // debug(`chunk=${chunk}`);\n buf += chunk;\n const parts = buf.split(matcher);\n buf = parts.pop();\n for (const i of parts) {\n yield yield __await(JSON.parse(i));\n }\n next = reader.read();\n }\n });\n}\nexports.default = gen;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/fetch-ndjson/dist/index.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/flexsearch/dist/flexsearch.min.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/flexsearch/dist/flexsearch.min.js ***!
|
|
\********************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("/*\n FlexSearch v0.6.30\n Copyright 2019 Nextapps GmbH\n Author: Thomas Wilkerling\n Released under the Apache 2.0 Licence\n https://github.com/nextapps-de/flexsearch\n*/\n(function(K,R,w){let L;(L=w.define)&&L.amd?L([],function(){return R}):(L=w.modules)?L[K.toLowerCase()]=R: true?module.exports=R:undefined})(\"FlexSearch\",function ma(K){function w(a,c){const b=c?c.id:a&&a.id;this.id=b||0===b?b:na++;this.init(a,c);fa(this,\"index\",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)});fa(this,\"length\",function(){return this.index.length})}function L(a,c,b,d){this.u!==this.g&&(this.o=this.o.concat(b),this.u++,\nd&&this.o.length>=d&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(c,this.o),this.F&&this.F(this.o)));return this}function S(a){const c=B();for(const b in a)if(a.hasOwnProperty(b)){const d=a[b];F(d)?c[b]=d.slice(0):G(d)?c[b]=S(d):c[b]=d}return c}function W(a,c){const b=a.length,d=O(c),e=[];for(let f=0,h=0;f<b;f++){const g=a[f];if(d&&c(g)||!d&&!c[g])e[h++]=g}return e}function P(a,c,b,d,e,f,h,g,k,l){b=ha(b,h?0:e,g,f,c,k,l);let p;g&&(g=b.page,p=b.next,b=b.result);if(h)c=this.where(h,null,\ne,b);else{c=b;b=this.l;e=c.length;f=Array(e);for(h=0;h<e;h++)f[h]=b[c[h]];c=f}b=c;d&&(O(d)||(M=d.split(\":\"),1<M.length?d=oa:(M=M[0],d=pa)),b.sort(d));b=T(g,p,b);this.cache&&this.j.set(a,b);return b}function fa(a,c,b){Object.defineProperty(a,c,{get:b})}function r(a){return new RegExp(a,\"g\")}function Q(a,c){for(let b=0;b<c.length;b+=2)a=a.replace(c[b],c[b+1]);return a}function V(a,c,b,d,e,f,h,g){if(c[b])return c[b];e=e?(g-(h||g/1.5))*f+(h||g/1.5)*e:f;c[b]=e;e>=h&&(a=a[g-(e+.5>>0)],a=a[b]||(a[b]=[]),\na[a.length]=d);return e}function ba(a,c){if(a){const b=Object.keys(a);for(let d=0,e=b.length;d<e;d++){const f=b[d],h=a[f];if(h)for(let g=0,k=h.length;g<k;g++)if(h[g]===c){1===k?delete a[f]:h.splice(g,1);break}else G(h[g])&&ba(h[g],c)}}}function ca(a){let c=\"\",b=\"\";var d=\"\";for(let e=0;e<a.length;e++){const f=a[e];if(f!==b)if(e&&\"h\"===f){if(d=\"a\"===d||\"e\"===d||\"i\"===d||\"o\"===d||\"u\"===d||\"y\"===d,(\"a\"===b||\"e\"===b||\"i\"===b||\"o\"===b||\"u\"===b||\"y\"===b)&&d||\" \"===b)c+=f}else c+=f;d=e===a.length-1?\"\":a[e+\n1];b=f}return c}function qa(a,c){a=a.length-c.length;return 0>a?1:a?-1:0}function pa(a,c){a=a[M];c=c[M];return a<c?-1:a>c?1:0}function oa(a,c){const b=M.length;for(let d=0;d<b;d++)a=a[M[d]],c=c[M[d]];return a<c?-1:a>c?1:0}function T(a,c,b){return a?{page:a,next:c?\"\"+c:null,result:b}:b}function ha(a,c,b,d,e,f,h){let g,k=[];if(!0===b){b=\"0\";var l=\"\"}else l=b&&b.split(\":\");const p=a.length;if(1<p){const y=B(),t=[];let v,x;var n=0,m;let I;var u=!0;let D,E=0,N,da,X,ea;l&&(2===l.length?(X=l,l=!1):l=ea=\nparseInt(l[0],10));if(h){for(v=B();n<p;n++)if(\"not\"===e[n])for(x=a[n],I=x.length,m=0;m<I;m++)v[\"@\"+x[m]]=1;else da=n+1;if(C(da))return T(b,g,k);n=0}else N=J(e)&&e;let Y;for(;n<p;n++){const ra=n===(da||p)-1;if(!N||!n)if((m=N||e&&e[n])&&\"and\"!==m)if(\"or\"===m)Y=!1;else continue;else Y=f=!0;x=a[n];if(I=x.length){if(u)if(D){var q=D.length;for(m=0;m<q;m++){u=D[m];var A=\"@\"+u;h&&v[A]||(y[A]=1,f||(k[E++]=u))}D=null;u=!1}else{D=x;continue}A=!1;for(m=0;m<I;m++){q=x[m];var z=\"@\"+q;const Z=f?y[z]||0:n;if(!(!Z&&\n!d||h&&v[z]||!f&&y[z]))if(Z===n){if(ra){if(!ea||--ea<E)if(k[E++]=q,c&&E===c)return T(b,E+(l||0),k)}else y[z]=n+1;A=!0}else d&&(z=t[Z]||(t[Z]=[]),z[z.length]=q)}if(Y&&!A&&!d)break}else if(Y&&!d)return T(b,g,x)}if(D)if(n=D.length,h)for(m=l?parseInt(l,10):0;m<n;m++)a=D[m],v[\"@\"+a]||(k[E++]=a);else k=D;if(d)for(E=k.length,X?(n=parseInt(X[0],10)+1,m=parseInt(X[1],10)+1):(n=t.length,m=0);n--;)if(q=t[n]){for(I=q.length;m<I;m++)if(d=q[m],!h||!v[\"@\"+d])if(k[E++]=d,c&&E===c)return T(b,n+\":\"+m,k);m=0}}else!p||\ne&&\"not\"===e[0]||(k=a[0],l&&(l=parseInt(l[0],10)));c&&(h=k.length,l&&l>h&&(l=0),l=l||0,g=l+c,g<h?k=k.slice(l,g):(g=0,l&&(k=k.slice(l))));return T(b,g,k)}function J(a){return\"string\"===typeof a}function F(a){return a.constructor===Array}function O(a){return\"function\"===typeof a}function G(a){return\"object\"===typeof a}function C(a){return\"undefined\"===typeof a}function ia(a){const c=Array(a);for(let b=0;b<a;b++)c[b]=B();return c}function B(){return Object.create(null)}function sa(){let a,c;self.onmessage=\nfunction(b){if(b=b.data)if(b.search){const d=c.search(b.content,b.threshold?{limit:b.limit,threshold:b.threshold,where:b.where}:b.limit);self.postMessage({id:a,content:b.content,limit:b.limit,result:d})}else b.add?c.add(b.id,b.content):b.update?c.update(b.id,b.content):b.remove?c.remove(b.id):b.clear?c.clear():b.info?(b=c.info(),b.worker=a,console.log(b)):b.register&&(a=b.id,b.options.cache=!1,b.options.async=!1,b.options.worker=!1,c=(new Function(b.register.substring(b.register.indexOf(\"{\")+1,b.register.lastIndexOf(\"}\"))))(),\nc=new c(b.options))}}function ta(a,c,b,d){a=K(\"flexsearch\",\"id\"+a,sa,function(f){(f=f.data)&&f.result&&d(f.id,f.content,f.result,f.limit,f.where,f.cursor,f.suggest)},c);const e=ma.toString();b.id=c;a.postMessage({register:e,options:b,id:c});return a}const H={encode:\"icase\",f:\"forward\",split:/\\W+/,cache:!1,async:!1,g:!1,D:!1,a:!1,b:9,threshold:0,depth:0},ja={memory:{encode:\"extra\",f:\"strict\",threshold:0,b:1},speed:{encode:\"icase\",f:\"strict\",threshold:1,b:3,depth:2},match:{encode:\"extra\",f:\"full\",threshold:1,\nb:3},score:{encode:\"extra\",f:\"strict\",threshold:1,b:9,depth:4},balance:{encode:\"balance\",f:\"strict\",threshold:0,b:3,depth:3},fast:{encode:\"icase\",f:\"strict\",threshold:8,b:9,depth:1}},aa=[];let na=0;const ka={},la={};w.create=function(a,c){return new w(a,c)};w.registerMatcher=function(a){for(const c in a)a.hasOwnProperty(c)&&aa.push(r(c),a[c]);return this};w.registerEncoder=function(a,c){U[a]=c.bind(U);return this};w.registerLanguage=function(a,c){ka[a]=c.filter;la[a]=c.stemmer;return this};w.encode=\nfunction(a,c){return U[a](c)};w.prototype.init=function(a,c){this.v=[];if(c){var b=c.preset;a=c}else a||(a=H),b=a.preset;c={};J(a)?(c=ja[a],a={}):b&&(c=ja[b]);if(b=a.worker)if(\"undefined\"===typeof Worker)a.worker=!1,this.m=null;else{var d=parseInt(b,10)||4;this.C=-1;this.u=0;this.o=[];this.F=null;this.m=Array(d);for(var e=0;e<d;e++)this.m[e]=ta(this.id,e,a,L.bind(this))}this.f=a.tokenize||c.f||this.f||H.f;this.split=C(b=a.split)?this.split||H.split:J(b)?r(b):b;this.D=a.rtl||this.D||H.D;this.async=\n\"undefined\"===typeof Promise||C(b=a.async)?this.async||H.async:b;this.g=C(b=a.worker)?this.g||H.g:b;this.threshold=C(b=a.threshold)?c.threshold||this.threshold||H.threshold:b;this.b=C(b=a.resolution)?b=c.b||this.b||H.b:b;b<=this.threshold&&(this.b=this.threshold+1);this.depth=\"strict\"!==this.f||C(b=a.depth)?c.depth||this.depth||H.depth:b;this.w=(b=C(b=a.encode)?c.encode||H.encode:b)&&U[b]&&U[b].bind(U)||(O(b)?b:this.w||!1);(b=a.matcher)&&this.addMatcher(b);if(b=(c=a.lang)||a.filter){J(b)&&(b=ka[b]);\nif(F(b)){d=this.w;e=B();for(var f=0;f<b.length;f++){var h=d?d(b[f]):b[f];e[h]=1}b=e}this.filter=b}if(b=c||a.stemmer){var g;c=J(b)?la[b]:b;d=this.w;e=[];for(g in c)c.hasOwnProperty(g)&&(f=d?d(g):g,e.push(r(f+\"($|\\\\W)\"),d?d(c[g]):c[g]));this.stemmer=g=e}this.a=e=(b=a.doc)?S(b):this.a||H.a;this.i=ia(this.b-(this.threshold||0));this.h=B();this.c=B();if(e){this.l=B();a.doc=null;g=e.index={};c=e.keys=[];d=e.field;f=e.tag;h=e.store;F(e.id)||(e.id=e.id.split(\":\"));if(h){var k=B();if(J(h))k[h]=1;else if(F(h))for(let l=\n0;l<h.length;l++)k[h[l]]=1;else G(h)&&(k=h);e.store=k}if(f){this.G=B();h=B();if(d)if(J(d))h[d]=a;else if(F(d))for(k=0;k<d.length;k++)h[d[k]]=a;else G(d)&&(h=d);F(f)||(e.tag=f=[f]);for(d=0;d<f.length;d++)this.G[f[d]]=B();this.I=f;d=h}if(d){let l;F(d)||(G(d)?(l=d,e.field=d=Object.keys(d)):e.field=d=[d]);for(e=0;e<d.length;e++)f=d[e],F(f)||(l&&(a=l[f]),c[e]=f,d[e]=f.split(\":\")),g[f]=new w(a)}a.doc=b}this.B=!0;this.j=(this.cache=b=C(b=a.cache)?this.cache||H.cache:b)?new ua(b):!1;return this};w.prototype.encode=\nfunction(a){a&&(aa.length&&(a=Q(a,aa)),this.v.length&&(a=Q(a,this.v)),this.w&&(a=this.w(a)),this.stemmer&&(a=Q(a,this.stemmer)));return a};w.prototype.addMatcher=function(a){const c=this.v;for(const b in a)a.hasOwnProperty(b)&&c.push(r(b),a[b]);return this};w.prototype.add=function(a,c,b,d,e){if(this.a&&G(a))return this.A(\"add\",a,c);if(c&&J(c)&&(a||0===a)){var f=\"@\"+a;if(this.c[f]&&!d)return this.update(a,c);if(this.g)return++this.C>=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:a,\ncontent:c}),this.c[f]=\"\"+this.C,b&&b(),this;if(!e){if(this.async&&\"function\"!==typeof importScripts){let t=this;f=new Promise(function(v){setTimeout(function(){t.add(a,c,null,d,!0);t=null;v()})});if(b)f.then(b);else return f;return this}if(b)return this.add(a,c,null,d,!0),b(),this}c=this.encode(c);if(!c.length)return this;b=this.f;e=O(b)?b(c):c.split(this.split);this.filter&&(e=W(e,this.filter));const n=B();n._ctx=B();const m=e.length,u=this.threshold,q=this.depth,A=this.b,z=this.i,y=this.D;for(let t=\n0;t<m;t++){var h=e[t];if(h){var g=h.length,k=(y?t+1:m-t)/m,l=\"\";switch(b){case \"reverse\":case \"both\":for(var p=g;--p;)l=h[p]+l,V(z,n,l,a,y?1:(g-p)/g,k,u,A-1);l=\"\";case \"forward\":for(p=0;p<g;p++)l+=h[p],V(z,n,l,a,y?(p+1)/g:1,k,u,A-1);break;case \"full\":for(p=0;p<g;p++){const v=(y?p+1:g-p)/g;for(let x=g;x>p;x--)l=h.substring(p,x),V(z,n,l,a,v,k,u,A-1)}break;default:if(g=V(z,n,h,a,1,k,u,A-1),q&&1<m&&g>=u)for(g=n._ctx[h]||(n._ctx[h]=B()),h=this.h[h]||(this.h[h]=ia(A-(u||0))),k=t-q,l=t+q+1,0>k&&(k=0),l>\nm&&(l=m);k<l;k++)k!==t&&V(h,g,e[k],a,0,A-(k<t?t-k:k-t),u,A-1)}}}this.c[f]=1;this.B=!1}return this};w.prototype.A=function(a,c,b){if(F(c)){var d=c.length;if(d--){for(var e=0;e<d;e++)this.A(a,c[e]);return this.A(a,c[d],b)}}else{var f=this.a.index,h=this.a.keys,g=this.a.tag;e=this.a.store;var k;var l=this.a.id;d=c;for(var p=0;p<l.length;p++)d=d[l[p]];if(\"remove\"===a&&(delete this.l[d],l=h.length,l--)){for(c=0;c<l;c++)f[h[c]].remove(d);return f[h[l]].remove(d,b)}if(g){for(k=0;k<g.length;k++){var n=g[k];\nvar m=c;l=n.split(\":\");for(p=0;p<l.length;p++)m=m[l[p]];m=\"@\"+m}k=this.G[n];k=k[m]||(k[m]=[])}l=this.a.field;for(let u=0,q=l.length;u<q;u++){n=l[u];g=c;for(m=0;m<n.length;m++)g=g[n[m]];n=f[h[u]];m=\"add\"===a?n.add:n.update;u===q-1?m.call(n,d,g,b):m.call(n,d,g)}if(e){b=Object.keys(e);a=B();for(f=0;f<b.length;f++)if(h=b[f],e[h]){h=h.split(\":\");let u,q;for(l=0;l<h.length;l++)g=h[l],u=(u||c)[g],q=(q||a)[g]=u}c=a}k&&(k[k.length]=c);this.l[d]=c}return this};w.prototype.update=function(a,c,b){if(this.a&&\nG(a))return this.A(\"update\",a,c);this.c[\"@\"+a]&&J(c)&&(this.remove(a),this.add(a,c,b,!0));return this};w.prototype.remove=function(a,c,b){if(this.a&&G(a))return this.A(\"remove\",a,c);var d=\"@\"+a;if(this.c[d]){if(this.g)return this.m[this.c[d]].postMessage({remove:!0,id:a}),delete this.c[d],c&&c(),this;if(!b){if(this.async&&\"function\"!==typeof importScripts){let e=this;d=new Promise(function(f){setTimeout(function(){e.remove(a,null,!0);e=null;f()})});if(c)d.then(c);else return d;return this}if(c)return this.remove(a,\nnull,!0),c(),this}for(c=0;c<this.b-(this.threshold||0);c++)ba(this.i[c],a);this.depth&&ba(this.h,a);delete this.c[d];this.B=!1}return this};let M;w.prototype.search=function(a,c,b,d){if(G(c)){if(F(c))for(var e=0;e<c.length;e++)c[e].query=a;else c.query=a;a=c;c=1E3}else c&&O(c)?(b=c,c=1E3):c||0===c||(c=1E3);if(this.g){this.F=b;this.u=0;this.o=[];for(var f=0;f<this.g;f++)this.m[f].postMessage({search:!0,limit:c,content:a})}else{var h=[],g=a;if(G(a)&&!F(a)){b||(b=a.callback)&&(g.callback=null);var k=\na.sort;var l=a.page;c=a.limit;f=a.threshold;var p=a.suggest;a=a.query}if(this.a){f=this.a.index;const y=g.where;var n=g.bool||\"or\",m=g.field;let t=n;let v,x;if(m)F(m)||(m=[m]);else if(F(g)){var u=g;m=[];t=[];for(var q=0;q<g.length;q++)d=g[q],e=d.bool||n,m[q]=d.field,t[q]=e,\"not\"===e?v=!0:\"and\"===e&&(x=!0)}else m=this.a.keys;n=m.length;for(q=0;q<n;q++)u&&(g=u[q]),l&&!J(g)&&(g.page=null,g.limit=0),h[q]=f[m[q]].search(g,0);if(b)return b(P.call(this,a,t,h,k,c,p,y,l,x,v));if(this.async){const I=this;return new Promise(function(D){Promise.all(h).then(function(E){D(P.call(I,\na,t,E,k,c,p,y,l,x,v))})})}return P.call(this,a,t,h,k,c,p,y,l,x,v)}f||(f=this.threshold||0);if(!d){if(this.async&&\"function\"!==typeof importScripts){let y=this;f=new Promise(function(t){setTimeout(function(){t(y.search(g,c,null,!0));y=null})});if(b)f.then(b);else return f;return this}if(b)return b(this.search(g,c,null,!0)),this}if(!a||!J(a))return h;g=a;if(this.cache)if(this.B){if(b=this.j.get(a))return b}else this.j.clear(),this.B=!0;g=this.encode(g);if(!g.length)return h;b=this.f;b=O(b)?b(g):g.split(this.split);\nthis.filter&&(b=W(b,this.filter));u=b.length;d=!0;e=[];var A=B(),z=0;1<u&&(this.depth&&\"strict\"===this.f?n=!0:b.sort(qa));if(!n||(q=this.h)){const y=this.b;for(;z<u;z++){let t=b[z];if(t){if(n){if(!m)if(q[t])m=t,A[t]=1;else if(!p)return h;if(p&&z===u-1&&!e.length)n=!1,t=m||t,A[t]=0;else if(!m)continue}if(!A[t]){const v=[];let x=!1,I=0;const D=n?q[m]:this.i;if(D){let E;for(let N=0;N<y-f;N++)if(E=D[N]&&D[N][t])v[I++]=E,x=!0}if(x)m=t,e[e.length]=1<I?v.concat.apply([],v):v[0];else if(!p){d=!1;break}A[t]=\n1}}}}else d=!1;d&&(h=ha(e,c,l,p));this.cache&&this.j.set(a,h);return h}};w.prototype.find=function(a,c){return this.where(a,c,1)[0]||null};w.prototype.where=function(a,c,b,d){const e=this.l,f=[];let h=0;let g;var k;let l;if(G(a)){b||(b=c);var p=Object.keys(a);var n=p.length;g=!1;if(1===n&&\"id\"===p[0])return[e[a.id]];if((k=this.I)&&!d)for(var m=0;m<k.length;m++){var u=k[m],q=a[u];if(!C(q)){l=this.G[u][\"@\"+q];if(0===--n)return l;p.splice(p.indexOf(u),1);delete a[u];break}}k=Array(n);for(m=0;m<n;m++)k[m]=\np[m].split(\":\")}else{if(O(a)){c=d||Object.keys(e);b=c.length;for(p=0;p<b;p++)n=e[c[p]],a(n)&&(f[h++]=n);return f}if(C(c))return[e[a]];if(\"id\"===a)return[e[c]];p=[a];n=1;k=[a.split(\":\")];g=!0}d=l||d||Object.keys(e);m=d.length;for(u=0;u<m;u++){q=l?d[u]:e[d[u]];let A=!0;for(let z=0;z<n;z++){g||(c=a[p[z]]);const y=k[z],t=y.length;let v=q;if(1<t)for(let x=0;x<t;x++)v=v[y[x]];else v=v[y[0]];if(v!==c){A=!1;break}}if(A&&(f[h++]=q,b&&h===b))break}return f};w.prototype.info=function(){if(this.g)for(let a=0;a<\nthis.g;a++)this.m[a].postMessage({info:!0,id:this.id});else return{id:this.id,items:this.length,cache:this.cache&&this.cache.s?this.cache.s.length:!1,matcher:aa.length+(this.v?this.v.length:0),worker:this.g,threshold:this.threshold,depth:this.depth,resolution:this.b,contextual:this.depth&&\"strict\"===this.f}};w.prototype.clear=function(){return this.destroy().init()};w.prototype.destroy=function(){this.cache&&(this.j.clear(),this.j=null);this.i=this.h=this.c=null;if(this.a){const a=this.a.keys;for(let c=\n0;c<a.length;c++)this.a.index[a[c]].destroy();this.a=this.l=null}return this};w.prototype.export=function(a){const c=!a||C(a.serialize)||a.serialize;if(this.a){const d=!a||C(a.doc)||a.doc;var b=!a||C(a.index)||a.index;a=[];let e=0;if(b)for(b=this.a.keys;e<b.length;e++){const f=this.a.index[b[e]];a[e]=[f.i,f.h,Object.keys(f.c)]}d&&(a[e]=this.l)}else a=[this.i,this.h,Object.keys(this.c)];c&&(a=JSON.stringify(a));return a};w.prototype.import=function(a,c){if(!c||C(c.serialize)||c.serialize)a=JSON.parse(a);\nconst b=B();if(this.a){var d=!c||C(c.doc)||c.doc,e=0;if(!c||C(c.index)||c.index){c=this.a.keys;const h=c.length;for(var f=a[0][2];e<f.length;e++)b[f[e]]=1;for(e=0;e<h;e++){f=this.a.index[c[e]];const g=a[e];g&&(f.i=g[0],f.h=g[1],f.c=b)}}d&&(this.l=G(d)?d:a[e])}else{d=a[2];for(e=0;e<d.length;e++)b[d[e]]=1;this.i=a[0];this.h=a[1];this.c=b}};const va=function(){const a=r(\"\\\\s+\"),c=r(\"[^a-z0-9 ]\"),b=[r(\"[-/]\"),\" \",c,\"\",a,\" \"];return function(d){return ca(Q(d.toLowerCase(),b))}}(),U={icase:function(a){return a.toLowerCase()},\nsimple:function(){const a=r(\"\\\\s+\"),c=r(\"[^a-z0-9 ]\"),b=r(\"[-/]\"),d=r(\"[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u00e5]\"),e=r(\"[\\u00e8\\u00e9\\u00ea\\u00eb]\"),f=r(\"[\\u00ec\\u00ed\\u00ee\\u00ef]\"),h=r(\"[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u0151]\"),g=r(\"[\\u00f9\\u00fa\\u00fb\\u00fc\\u0171]\"),k=r(\"[\\u00fd\\u0177\\u00ff]\"),l=r(\"\\u00f1\"),p=r(\"[\\u00e7c]\"),n=r(\"\\u00df\"),m=r(\" & \"),u=[d,\"a\",e,\"e\",f,\"i\",h,\"o\",g,\"u\",k,\"y\",l,\"n\",p,\"k\",n,\"s\",m,\" and \",b,\" \",c,\"\",a,\" \"];return function(q){q=Q(q.toLowerCase(),u);return\" \"===q?\"\":q}}(),advanced:function(){const a=\nr(\"ae\"),c=r(\"ai\"),b=r(\"ay\"),d=r(\"ey\"),e=r(\"oe\"),f=r(\"ue\"),h=r(\"ie\"),g=r(\"sz\"),k=r(\"zs\"),l=r(\"ck\"),p=r(\"cc\"),n=r(\"sh\"),m=r(\"th\"),u=r(\"dt\"),q=r(\"ph\"),A=r(\"pf\"),z=r(\"ou\"),y=r(\"uo\"),t=[a,\"a\",c,\"ei\",b,\"ei\",d,\"ei\",e,\"o\",f,\"u\",h,\"i\",g,\"s\",k,\"s\",n,\"s\",l,\"k\",p,\"k\",m,\"t\",u,\"t\",q,\"f\",A,\"f\",z,\"o\",y,\"u\"];return function(v,x){if(!v)return v;v=this.simple(v);2<v.length&&(v=Q(v,t));x||1<v.length&&(v=ca(v));return v}}(),extra:function(){const a=r(\"p\"),c=r(\"z\"),b=r(\"[cgq]\"),d=r(\"n\"),e=r(\"d\"),f=r(\"[vw]\"),h=r(\"[aeiouy]\"),\ng=[a,\"b\",c,\"s\",b,\"k\",d,\"m\",e,\"t\",f,\"f\",h,\"\"];return function(k){if(!k)return k;k=this.advanced(k,!0);if(1<k.length){k=k.split(\" \");for(let l=0;l<k.length;l++){const p=k[l];1<p.length&&(k[l]=p[0]+Q(p.substring(1),g))}k=k.join(\" \");k=ca(k)}return k}}(),balance:va},ua=function(){function a(c){this.clear();this.H=!0!==c&&c}a.prototype.clear=function(){this.cache=B();this.count=B();this.index=B();this.s=[]};a.prototype.set=function(c,b){if(this.H&&C(this.cache[c])){let d=this.s.length;if(d===this.H){d--;\nconst e=this.s[d];delete this.cache[e];delete this.count[e];delete this.index[e]}this.index[c]=d;this.s[d]=c;this.count[c]=-1;this.cache[c]=b;this.get(c)}else this.cache[c]=b};a.prototype.get=function(c){const b=this.cache[c];if(this.H&&b){var d=++this.count[c];const f=this.index;let h=f[c];if(0<h){const g=this.s;for(var e=h;this.count[g[--h]]<=d&&-1!==h;);h++;if(h!==e){for(d=e;d>h;d--)e=g[d-1],g[d]=e,f[e]=d;g[h]=c;f[c]=h}}}return b};return a}();return w}(function(){const K={},R=\"undefined\"!==typeof Blob&&\n\"undefined\"!==typeof URL&&URL.createObjectURL;return function(w,L,S,W,P){S=R?URL.createObjectURL(new Blob([\"(\"+S.toString()+\")()\"],{type:\"text/javascript\"})):w+\".min.js\";w+=\"-\"+L;K[w]||(K[w]=[]);K[w][P]=new Worker(S);K[w][P].onmessage=W;return K[w][P]}}()),this);\n\n\n//# sourceURL=webpack:///./node_modules/flexsearch/dist/flexsearch.min.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/keyword-mark-element/lib/keyword-mark.js":
|
|
/*!***************************************************************!*\
|
|
!*** ./node_modules/keyword-mark-element/lib/keyword-mark.js ***!
|
|
\***************************************************************/
|
|
/*! exports provided: KeywordMarkElement */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KeywordMarkElement\", function() { return KeywordMarkElement; });\nconst escapeRegexChars = [\n '-',\n '[',\n ']',\n '/',\n '{',\n '}',\n '(',\n ')',\n '*',\n '+',\n '?',\n '.',\n '\\\\',\n '^',\n '$',\n '|',\n];\nconst escapeRegexPattern = new RegExp(`[${escapeRegexChars.join('\\\\')}]`, 'g');\nconst escapeRegex = (str) => str.replace(escapeRegexPattern, '\\\\$&');\n/**\n * Renders a string with keywords highlighted\n */\nclass KeywordMarkElement extends HTMLElement {\n /** @inheritdoc */\n static get observedAttributes() {\n return ['keywords'];\n }\n /**\n * Keywords to highlight\n */\n get keywords() {\n return this.getAttribute('keywords') || '';\n }\n /**\n * Sets the keywords to highlight\n * @param {string} val keywords to set\n */\n set keywords(val) {\n this.setAttribute('keywords', val);\n }\n /** constructor */\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n /** @inheritdoc */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'keywords') {\n if (newValue !== oldValue) {\n this._render();\n }\n }\n }\n /** @inheritdoc */\n connectedCallback() {\n this._render();\n this.__observer = new MutationObserver(() => {\n this._render();\n });\n this.__observer.observe(this, {\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n /** @inheritdoc */\n disconnectedCallback() {\n if (this.__observer) {\n this.__observer.disconnect();\n this.__observer = undefined;\n }\n }\n /**\n * Renders the current string with keywords highlighted\n */\n _render() {\n if (!this.shadowRoot) {\n return;\n }\n const text = this.textContent || '';\n const keywords = this.getAttribute('keywords');\n if (!keywords) {\n this.shadowRoot.textContent = text;\n return;\n }\n const lowerText = text.toLowerCase();\n const terms = keywords.toLowerCase().split(/\\s+/);\n const splitPattern = new RegExp(`${terms.map(escapeRegex).join('|')}`, 'gi');\n const parts = text.split(splitPattern);\n const result = document.createElement('div');\n let cursor = 0;\n for (const part of parts) {\n result.appendChild(document.createTextNode(part));\n cursor += part.length;\n if (cursor < lowerText.length) {\n const slice = lowerText.substring(cursor);\n const match = terms.find((t) => slice.startsWith(t));\n if (match) {\n const mark = document.createElement('mark');\n mark.textContent = text.substr(cursor, match.length);\n result.appendChild(mark);\n cursor += match.length;\n }\n }\n }\n this.shadowRoot.innerHTML = `\n <style>\n mark {\n color: var(--keyword-mark-color);\n background: var(--keyword-mark-background, yellow);\n }\n </style>\n ${result.innerHTML}\n `;\n }\n}\ncustomElements.define('keyword-mark', KeywordMarkElement);\n//# sourceMappingURL=keyword-mark.js.map\n\n//# sourceURL=webpack:///./node_modules/keyword-mark-element/lib/keyword-mark.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-element/lib/css-tag.js":
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/lit-element/lib/css-tag.js ***!
|
|
\*************************************************/
|
|
/*! exports provided: supportsAdoptingStyleSheets, CSSResult, unsafeCSS, css */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"supportsAdoptingStyleSheets\", function() { return supportsAdoptingStyleSheets; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CSSResult\", function() { return CSSResult; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unsafeCSS\", function() { return unsafeCSS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\n/**\n@license\nCopyright (c) 2019 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nconst supportsAdoptingStyleSheets = (window.ShadowRoot) &&\n (window.ShadyCSS === undefined || window.ShadyCSS.nativeShadow) &&\n ('adoptedStyleSheets' in Document.prototype) &&\n ('replace' in CSSStyleSheet.prototype);\nconst constructionToken = Symbol();\nclass CSSResult {\n constructor(cssText, safeToken) {\n if (safeToken !== constructionToken) {\n throw new Error('CSSResult is not constructable. Use `unsafeCSS` or `css` instead.');\n }\n this.cssText = cssText;\n }\n // Note, this is a getter so that it's lazy. In practice, this means\n // stylesheets are not created until the first element instance is made.\n get styleSheet() {\n if (this._styleSheet === undefined) {\n // Note, if `supportsAdoptingStyleSheets` is true then we assume\n // CSSStyleSheet is constructable.\n if (supportsAdoptingStyleSheets) {\n this._styleSheet = new CSSStyleSheet();\n this._styleSheet.replaceSync(this.cssText);\n }\n else {\n this._styleSheet = null;\n }\n }\n return this._styleSheet;\n }\n toString() {\n return this.cssText;\n }\n}\n/**\n * Wrap a value for interpolation in a [[`css`]] tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nconst unsafeCSS = (value) => {\n return new CSSResult(String(value), constructionToken);\n};\nconst textFromCSSResult = (value) => {\n if (value instanceof CSSResult) {\n return value.cssText;\n }\n else if (typeof value === 'number') {\n return value;\n }\n else {\n throw new Error(`Value passed to 'css' function must be a 'css' function result: ${value}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`);\n }\n};\n/**\n * Template tag which which can be used with LitElement's [[LitElement.styles |\n * `styles`]] property to set element styles. For security reasons, only literal\n * string values may be used. To incorporate non-literal values [[`unsafeCSS`]]\n * may be used inside a template string part.\n */\nconst css = (strings, ...values) => {\n const cssText = values.reduce((acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1], strings[0]);\n return new CSSResult(cssText, constructionToken);\n};\n//# sourceMappingURL=css-tag.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-element/lib/css-tag.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-element/lib/decorators.js":
|
|
/*!****************************************************!*\
|
|
!*** ./node_modules/lit-element/lib/decorators.js ***!
|
|
\****************************************************/
|
|
/*! exports provided: customElement, property, internalProperty, query, queryAsync, queryAll, eventOptions, queryAssignedNodes */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"customElement\", function() { return customElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return property; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"internalProperty\", function() { return internalProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"query\", function() { return query; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"queryAsync\", function() { return queryAsync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"queryAll\", function() { return queryAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"eventOptions\", function() { return eventOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"queryAssignedNodes\", function() { return queryAssignedNodes; });\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nconst legacyCustomElement = (tagName, clazz) => {\n window.customElements.define(tagName, clazz);\n // Cast as any because TS doesn't recognize the return type as being a\n // subtype of the decorated class when clazz is typed as\n // `Constructor<HTMLElement>` for some reason.\n // `Constructor<HTMLElement>` is helpful to make sure the decorator is\n // applied to elements however.\n // tslint:disable-next-line:no-any\n return clazz;\n};\nconst standardCustomElement = (tagName, descriptor) => {\n const { kind, elements } = descriptor;\n return {\n kind,\n elements,\n // This callback is called once the class is otherwise fully defined\n finisher(clazz) {\n window.customElements.define(tagName, clazz);\n }\n };\n};\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```\n * @customElement('my-element')\n * class MyElement {\n * render() {\n * return html``;\n * }\n * }\n * ```\n * @category Decorator\n * @param tagName The name of the custom element to define.\n */\nconst customElement = (tagName) => (classOrDescriptor) => (typeof classOrDescriptor === 'function') ?\n legacyCustomElement(tagName, classOrDescriptor) :\n standardCustomElement(tagName, classOrDescriptor);\nconst standardProperty = (options, element) => {\n // When decorating an accessor, pass it through and add property metadata.\n // Note, the `hasOwnProperty` check in `createProperty` ensures we don't\n // stomp over the user's accessor.\n if (element.kind === 'method' && element.descriptor &&\n !('value' in element.descriptor)) {\n return Object.assign(Object.assign({}, element), { finisher(clazz) {\n clazz.createProperty(element.key, options);\n } });\n }\n else {\n // createProperty() takes care of defining the property, but we still\n // must return some kind of descriptor, so return a descriptor for an\n // unused prototype field. The finisher calls createProperty().\n return {\n kind: 'field',\n key: Symbol(),\n placement: 'own',\n descriptor: {},\n // When @babel/plugin-proposal-decorators implements initializers,\n // do this instead of the initializer below. See:\n // https://github.com/babel/babel/issues/9260 extras: [\n // {\n // kind: 'initializer',\n // placement: 'own',\n // initializer: descriptor.initializer,\n // }\n // ],\n initializer() {\n if (typeof element.initializer === 'function') {\n this[element.key] = element.initializer.call(this);\n }\n },\n finisher(clazz) {\n clazz.createProperty(element.key, options);\n }\n };\n }\n};\nconst legacyProperty = (options, proto, name) => {\n proto.constructor\n .createProperty(name, options);\n};\n/**\n * A property decorator which creates a LitElement property which reflects a\n * corresponding attribute value. A [[`PropertyDeclaration`]] may optionally be\n * supplied to configure property features.\n *\n * This decorator should only be used for public fields. Private or protected\n * fields should use the [[`internalProperty`]] decorator.\n *\n * @example\n * ```ts\n * class MyElement {\n * @property({ type: Boolean })\n * clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nfunction property(options) {\n // tslint:disable-next-line:no-any decorator\n return (protoOrDescriptor, name) => (name !== undefined) ?\n legacyProperty(options, protoOrDescriptor, name) :\n standardProperty(options, protoOrDescriptor);\n}\n/**\n * Declares a private or protected property that still triggers updates to the\n * element when it changes.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nfunction internalProperty(options) {\n return property({ attribute: false, hasChanged: options === null || options === void 0 ? void 0 : options.hasChanged });\n}\n/**\n * A property decorator that converts a class property into a getter that\n * executes a querySelector on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n * @param cache An optional boolean which when true performs the DOM query only\n * once and caches the result.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * @example\n *\n * ```ts\n * class MyElement {\n * @query('#first')\n * first;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n * ```\n * @category Decorator\n */\nfunction query(selector, cache) {\n return (protoOrDescriptor, \n // tslint:disable-next-line:no-any decorator\n name) => {\n const descriptor = {\n get() {\n return this.renderRoot.querySelector(selector);\n },\n enumerable: true,\n configurable: true,\n };\n if (cache) {\n const key = typeof name === 'symbol' ? Symbol() : `__${name}`;\n descriptor.get = function () {\n if (this[key] === undefined) {\n (this[key] =\n this.renderRoot.querySelector(selector));\n }\n return this[key];\n };\n }\n return (name !== undefined) ?\n legacyQuery(descriptor, protoOrDescriptor, name) :\n standardQuery(descriptor, protoOrDescriptor);\n };\n}\n// Note, in the future, we may extend this decorator to support the use case\n// where the queried element may need to do work to become ready to interact\n// with (e.g. load some implementation code). If so, we might elect to\n// add a second argument defining a function that can be run to make the\n// queried element loaded/updated/ready.\n/**\n * A property decorator that converts a class property into a getter that\n * returns a promise that resolves to the result of a querySelector on the\n * element's renderRoot done after the element's `updateComplete` promise\n * resolves. When the queried property may change with element state, this\n * decorator can be used instead of requiring users to await the\n * `updateComplete` before accessing the property.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * @example\n * ```ts\n * class MyElement {\n * @queryAsync('#first')\n * first;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n *\n * // external usage\n * async doSomethingWithFirst() {\n * (await aMyElement.first).doSomething();\n * }\n * ```\n * @category Decorator\n */\nfunction queryAsync(selector) {\n return (protoOrDescriptor, \n // tslint:disable-next-line:no-any decorator\n name) => {\n const descriptor = {\n async get() {\n await this.updateComplete;\n return this.renderRoot.querySelector(selector);\n },\n enumerable: true,\n configurable: true,\n };\n return (name !== undefined) ?\n legacyQuery(descriptor, protoOrDescriptor, name) :\n standardQuery(descriptor, protoOrDescriptor);\n };\n}\n/**\n * A property decorator that converts a class property into a getter\n * that executes a querySelectorAll on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll\n *\n * @example\n * ```ts\n * class MyElement {\n * @queryAll('div')\n * divs;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n * ```\n * @category Decorator\n */\nfunction queryAll(selector) {\n return (protoOrDescriptor, \n // tslint:disable-next-line:no-any decorator\n name) => {\n const descriptor = {\n get() {\n return this.renderRoot.querySelectorAll(selector);\n },\n enumerable: true,\n configurable: true,\n };\n return (name !== undefined) ?\n legacyQuery(descriptor, protoOrDescriptor, name) :\n standardQuery(descriptor, protoOrDescriptor);\n };\n}\nconst legacyQuery = (descriptor, proto, name) => {\n Object.defineProperty(proto, name, descriptor);\n};\nconst standardQuery = (descriptor, element) => ({\n kind: 'method',\n placement: 'prototype',\n key: element.key,\n descriptor,\n});\nconst standardEventOptions = (options, element) => {\n return Object.assign(Object.assign({}, element), { finisher(clazz) {\n Object.assign(clazz.prototype[element.key], options);\n } });\n};\nconst legacyEventOptions = \n// tslint:disable-next-line:no-any legacy decorator\n(options, proto, name) => {\n Object.assign(proto[name], options);\n};\n/**\n * Adds event listener options to a method used as an event listener in a\n * lit-html template.\n *\n * @param options An object that specifies event listener options as accepted by\n * `EventTarget#addEventListener` and `EventTarget#removeEventListener`.\n *\n * Current browsers support the `capture`, `passive`, and `once` options. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Parameters\n *\n * @example\n * ```ts\n * class MyElement {\n * clicked = false;\n *\n * render() {\n * return html`\n * <div @click=${this._onClick}`>\n * <button></button>\n * </div>\n * `;\n * }\n *\n * @eventOptions({capture: true})\n * _onClick(e) {\n * this.clicked = true;\n * }\n * }\n * ```\n * @category Decorator\n */\nfunction eventOptions(options) {\n // Return value typed as any to prevent TypeScript from complaining that\n // standard decorator function signature does not match TypeScript decorator\n // signature\n // TODO(kschaaf): unclear why it was only failing on this decorator and not\n // the others\n return ((protoOrDescriptor, name) => (name !== undefined) ?\n legacyEventOptions(options, protoOrDescriptor, name) :\n standardEventOptions(options, protoOrDescriptor));\n}\n// x-browser support for matches\n// tslint:disable-next-line:no-any\nconst ElementProto = Element.prototype;\nconst legacyMatches = ElementProto.msMatchesSelector || ElementProto.webkitMatchesSelector;\n/**\n * A property decorator that converts a class property into a getter that\n * returns the `assignedNodes` of the given named `slot`. Note, the type of\n * this property should be annotated as `NodeListOf<HTMLElement>`.\n *\n * @param slotName A string name of the slot.\n * @param flatten A boolean which when true flattens the assigned nodes,\n * meaning any assigned nodes that are slot elements are replaced with their\n * assigned nodes.\n * @param selector A string which filters the results to elements that match\n * the given css selector.\n *\n * * @example\n * ```ts\n * class MyElement {\n * @queryAssignedNodes('list', true, '.item')\n * listItems;\n *\n * render() {\n * return html`\n * <slot name=\"list\"></slot>\n * `;\n * }\n * }\n * ```\n * @category Decorator\n */\nfunction queryAssignedNodes(slotName = '', flatten = false, selector = '') {\n return (protoOrDescriptor, \n // tslint:disable-next-line:no-any decorator\n name) => {\n const descriptor = {\n get() {\n const slotSelector = `slot${slotName ? `[name=${slotName}]` : ':not([name])'}`;\n const slot = this.renderRoot.querySelector(slotSelector);\n let nodes = slot && slot.assignedNodes({ flatten });\n if (nodes && selector) {\n nodes = nodes.filter((node) => node.nodeType === Node.ELEMENT_NODE &&\n node.matches ?\n node.matches(selector) :\n legacyMatches.call(node, selector));\n }\n return nodes;\n },\n enumerable: true,\n configurable: true,\n };\n return (name !== undefined) ?\n legacyQuery(descriptor, protoOrDescriptor, name) :\n standardQuery(descriptor, protoOrDescriptor);\n };\n}\n//# sourceMappingURL=decorators.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-element/lib/decorators.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-element/lib/updating-element.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/lit-element/lib/updating-element.js ***!
|
|
\**********************************************************/
|
|
/*! exports provided: defaultConverter, notEqual, UpdatingElement */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultConverter\", function() { return defaultConverter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"notEqual\", function() { return notEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdatingElement\", function() { return UpdatingElement; });\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar _a;\n/**\n * Use this module if you want to create your own base class extending\n * [[UpdatingElement]].\n * @packageDocumentation\n */\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\nwindow.JSCompiler_renameProperty =\n (prop, _obj) => prop;\nconst defaultConverter = {\n toAttribute(value, type) {\n switch (type) {\n case Boolean:\n return value ? '' : null;\n case Object:\n case Array:\n // if the value is `null` or `undefined` pass this through\n // to allow removing/no change behavior.\n return value == null ? value : JSON.stringify(value);\n }\n return value;\n },\n fromAttribute(value, type) {\n switch (type) {\n case Boolean:\n return value !== null;\n case Number:\n return value === null ? null : Number(value);\n case Object:\n case Array:\n return JSON.parse(value);\n }\n return value;\n }\n};\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nconst notEqual = (value, old) => {\n // This ensures (old==NaN, value==NaN) always returns false\n return old !== value && (old === old || value === value);\n};\nconst defaultPropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n hasChanged: notEqual\n};\nconst STATE_HAS_UPDATED = 1;\nconst STATE_UPDATE_REQUESTED = 1 << 2;\nconst STATE_IS_REFLECTING_TO_ATTRIBUTE = 1 << 3;\nconst STATE_IS_REFLECTING_TO_PROPERTY = 1 << 4;\n/**\n * The Closure JS Compiler doesn't currently have good support for static\n * property semantics where \"this\" is dynamic (e.g.\n * https://github.com/google/closure-compiler/issues/3177 and others) so we use\n * this hack to bypass any rewriting by the compiler.\n */\nconst finalized = 'finalized';\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclassers to render updates as desired.\n * @noInheritDoc\n */\nclass UpdatingElement extends HTMLElement {\n constructor() {\n super();\n this.initialize();\n }\n /**\n * Returns a list of attributes corresponding to the registered properties.\n * @nocollapse\n */\n static get observedAttributes() {\n // note: piggy backing on this to ensure we're finalized.\n this.finalize();\n const attributes = [];\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n this._classProperties.forEach((v, p) => {\n const attr = this._attributeNameForProperty(p, v);\n if (attr !== undefined) {\n this._attributeToPropertyMap.set(attr, p);\n attributes.push(attr);\n }\n });\n return attributes;\n }\n /**\n * Ensures the private `_classProperties` property metadata is created.\n * In addition to `finalize` this is also called in `createProperty` to\n * ensure the `@property` decorator can add property metadata.\n */\n /** @nocollapse */\n static _ensureClassProperties() {\n // ensure private storage for property declarations.\n if (!this.hasOwnProperty(JSCompiler_renameProperty('_classProperties', this))) {\n this._classProperties = new Map();\n // NOTE: Workaround IE11 not supporting Map constructor argument.\n const superProperties = Object.getPrototypeOf(this)._classProperties;\n if (superProperties !== undefined) {\n superProperties.forEach((v, k) => this._classProperties.set(k, v));\n }\n }\n }\n /**\n * Creates a property accessor on the element prototype if one does not exist\n * and stores a PropertyDeclaration for the property with the given options.\n * The property setter calls the property's `hasChanged` property option\n * or uses a strict identity check to determine whether or not to request\n * an update.\n *\n * This method may be overridden to customize properties; however,\n * when doing so, it's important to call `super.createProperty` to ensure\n * the property is setup correctly. This method calls\n * `getPropertyDescriptor` internally to get a descriptor to install.\n * To customize what properties do when they are get or set, override\n * `getPropertyDescriptor`. To customize the options for a property,\n * implement `createProperty` like this:\n *\n * static createProperty(name, options) {\n * options = Object.assign(options, {myOption: true});\n * super.createProperty(name, options);\n * }\n *\n * @nocollapse\n */\n static createProperty(name, options = defaultPropertyDeclaration) {\n // Note, since this can be called by the `@property` decorator which\n // is called before `finalize`, we ensure storage exists for property\n // metadata.\n this._ensureClassProperties();\n this._classProperties.set(name, options);\n // Do not generate an accessor if the prototype already has one, since\n // it would be lost otherwise and that would never be the user's intention;\n // Instead, we expect users to call `requestUpdate` themselves from\n // user-defined accessors. Note that if the super has an accessor we will\n // still overwrite it\n if (options.noAccessor || this.prototype.hasOwnProperty(name)) {\n return;\n }\n const key = typeof name === 'symbol' ? Symbol() : `__${name}`;\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n Object.defineProperty(this.prototype, name, descriptor);\n }\n }\n /**\n * Returns a property descriptor to be defined on the given named property.\n * If no descriptor is returned, the property will not become an accessor.\n * For example,\n *\n * class MyElement extends LitElement {\n * static getPropertyDescriptor(name, key, options) {\n * const defaultDescriptor =\n * super.getPropertyDescriptor(name, key, options);\n * const setter = defaultDescriptor.set;\n * return {\n * get: defaultDescriptor.get,\n * set(value) {\n * setter.call(this, value);\n * // custom action.\n * },\n * configurable: true,\n * enumerable: true\n * }\n * }\n * }\n *\n * @nocollapse\n */\n static getPropertyDescriptor(name, key, options) {\n return {\n // tslint:disable-next-line:no-any no symbol in index\n get() {\n return this[key];\n },\n set(value) {\n const oldValue = this[name];\n this[key] = value;\n this\n .requestUpdateInternal(name, oldValue, options);\n },\n configurable: true,\n enumerable: true\n };\n }\n /**\n * Returns the property options associated with the given property.\n * These options are defined with a PropertyDeclaration via the `properties`\n * object or the `@property` decorator and are registered in\n * `createProperty(...)`.\n *\n * Note, this method should be considered \"final\" and not overridden. To\n * customize the options for a given property, override `createProperty`.\n *\n * @nocollapse\n * @final\n */\n static getPropertyOptions(name) {\n return this._classProperties && this._classProperties.get(name) ||\n defaultPropertyDeclaration;\n }\n /**\n * Creates property accessors for registered properties and ensures\n * any superclasses are also finalized.\n * @nocollapse\n */\n static finalize() {\n // finalize any superclasses\n const superCtor = Object.getPrototypeOf(this);\n if (!superCtor.hasOwnProperty(finalized)) {\n superCtor.finalize();\n }\n this[finalized] = true;\n this._ensureClassProperties();\n // initialize Map populated in observedAttributes\n this._attributeToPropertyMap = new Map();\n // make any properties\n // Note, only process \"own\" properties since this element will inherit\n // any properties defined on the superClass, and finalization ensures\n // the entire prototype chain is finalized.\n if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n const props = this.properties;\n // support symbols in properties (IE11 does not support this)\n const propKeys = [\n ...Object.getOwnPropertyNames(props),\n ...(typeof Object.getOwnPropertySymbols === 'function') ?\n Object.getOwnPropertySymbols(props) :\n []\n ];\n // This for/of is ok because propKeys is an array\n for (const p of propKeys) {\n // note, use of `any` is due to TypeSript lack of support for symbol in\n // index types\n // tslint:disable-next-line:no-any no symbol in index\n this.createProperty(p, props[p]);\n }\n }\n }\n /**\n * Returns the property name for the given attribute `name`.\n * @nocollapse\n */\n static _attributeNameForProperty(name, options) {\n const attribute = options.attribute;\n return attribute === false ?\n undefined :\n (typeof attribute === 'string' ?\n attribute :\n (typeof name === 'string' ? name.toLowerCase() : undefined));\n }\n /**\n * Returns true if a property should request an update.\n * Called when a property value is set and uses the `hasChanged`\n * option for the property if present or a strict identity check.\n * @nocollapse\n */\n static _valueHasChanged(value, old, hasChanged = notEqual) {\n return hasChanged(value, old);\n }\n /**\n * Returns the property value for the given attribute value.\n * Called via the `attributeChangedCallback` and uses the property's\n * `converter` or `converter.fromAttribute` property option.\n * @nocollapse\n */\n static _propertyValueFromAttribute(value, options) {\n const type = options.type;\n const converter = options.converter || defaultConverter;\n const fromAttribute = (typeof converter === 'function' ? converter : converter.fromAttribute);\n return fromAttribute ? fromAttribute(value, type) : value;\n }\n /**\n * Returns the attribute value for the given property value. If this\n * returns undefined, the property will *not* be reflected to an attribute.\n * If this returns null, the attribute will be removed, otherwise the\n * attribute will be set to the value.\n * This uses the property's `reflect` and `type.toAttribute` property options.\n * @nocollapse\n */\n static _propertyValueToAttribute(value, options) {\n if (options.reflect === undefined) {\n return;\n }\n const type = options.type;\n const converter = options.converter;\n const toAttribute = converter && converter.toAttribute ||\n defaultConverter.toAttribute;\n return toAttribute(value, type);\n }\n /**\n * Performs element initialization. By default captures any pre-set values for\n * registered properties.\n */\n initialize() {\n this._updateState = 0;\n this._updatePromise =\n new Promise((res) => this._enableUpdatingResolver = res);\n this._changedProperties = new Map();\n this._saveInstanceProperties();\n // ensures first update will be caught by an early access of\n // `updateComplete`\n this.requestUpdateInternal();\n }\n /**\n * Fixes any properties set on the instance before upgrade time.\n * Otherwise these would shadow the accessor and break these properties.\n * The properties are stored in a Map which is played back after the\n * constructor runs. Note, on very old versions of Safari (<=9) or Chrome\n * (<=41), properties created for native platform properties like (`id` or\n * `name`) may not have default values set in the element constructor. On\n * these browsers native properties appear on instances and therefore their\n * default value will overwrite any element default (e.g. if the element sets\n * this.id = 'id' in the constructor, the 'id' will become '' since this is\n * the native platform default).\n */\n _saveInstanceProperties() {\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n this.constructor\n ._classProperties.forEach((_v, p) => {\n if (this.hasOwnProperty(p)) {\n const value = this[p];\n delete this[p];\n if (!this._instanceProperties) {\n this._instanceProperties = new Map();\n }\n this._instanceProperties.set(p, value);\n }\n });\n }\n /**\n * Applies previously saved instance properties.\n */\n _applyInstanceProperties() {\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n // tslint:disable-next-line:no-any\n this._instanceProperties.forEach((v, p) => this[p] = v);\n this._instanceProperties = undefined;\n }\n connectedCallback() {\n // Ensure first connection completes an update. Updates cannot complete\n // before connection.\n this.enableUpdating();\n }\n enableUpdating() {\n if (this._enableUpdatingResolver !== undefined) {\n this._enableUpdatingResolver();\n this._enableUpdatingResolver = undefined;\n }\n }\n /**\n * Allows for `super.disconnectedCallback()` in extensions while\n * reserving the possibility of making non-breaking feature additions\n * when disconnecting at some point in the future.\n */\n disconnectedCallback() {\n }\n /**\n * Synchronizes property values when attributes change.\n */\n attributeChangedCallback(name, old, value) {\n if (old !== value) {\n this._attributeToProperty(name, value);\n }\n }\n _propertyToAttribute(name, value, options = defaultPropertyDeclaration) {\n const ctor = this.constructor;\n const attr = ctor._attributeNameForProperty(name, options);\n if (attr !== undefined) {\n const attrValue = ctor._propertyValueToAttribute(value, options);\n // an undefined value does not change the attribute.\n if (attrValue === undefined) {\n return;\n }\n // Track if the property is being reflected to avoid\n // setting the property again via `attributeChangedCallback`. Note:\n // 1. this takes advantage of the fact that the callback is synchronous.\n // 2. will behave incorrectly if multiple attributes are in the reaction\n // stack at time of calling. However, since we process attributes\n // in `update` this should not be possible (or an extreme corner case\n // that we'd like to discover).\n // mark state reflecting\n this._updateState = this._updateState | STATE_IS_REFLECTING_TO_ATTRIBUTE;\n if (attrValue == null) {\n this.removeAttribute(attr);\n }\n else {\n this.setAttribute(attr, attrValue);\n }\n // mark state not reflecting\n this._updateState = this._updateState & ~STATE_IS_REFLECTING_TO_ATTRIBUTE;\n }\n }\n _attributeToProperty(name, value) {\n // Use tracking info to avoid deserializing attribute value if it was\n // just set from a property setter.\n if (this._updateState & STATE_IS_REFLECTING_TO_ATTRIBUTE) {\n return;\n }\n const ctor = this.constructor;\n // Note, hint this as an `AttributeMap` so closure clearly understands\n // the type; it has issues with tracking types through statics\n // tslint:disable-next-line:no-unnecessary-type-assertion\n const propName = ctor._attributeToPropertyMap.get(name);\n if (propName !== undefined) {\n const options = ctor.getPropertyOptions(propName);\n // mark state reflecting\n this._updateState = this._updateState | STATE_IS_REFLECTING_TO_PROPERTY;\n this[propName] =\n // tslint:disable-next-line:no-any\n ctor._propertyValueFromAttribute(value, options);\n // mark state not reflecting\n this._updateState = this._updateState & ~STATE_IS_REFLECTING_TO_PROPERTY;\n }\n }\n /**\n * This protected version of `requestUpdate` does not access or return the\n * `updateComplete` promise. This promise can be overridden and is therefore\n * not free to access.\n */\n requestUpdateInternal(name, oldValue, options) {\n let shouldRequestUpdate = true;\n // If we have a property key, perform property update steps.\n if (name !== undefined) {\n const ctor = this.constructor;\n options = options || ctor.getPropertyOptions(name);\n if (ctor._valueHasChanged(this[name], oldValue, options.hasChanged)) {\n if (!this._changedProperties.has(name)) {\n this._changedProperties.set(name, oldValue);\n }\n // Add to reflecting properties set.\n // Note, it's important that every change has a chance to add the\n // property to `_reflectingProperties`. This ensures setting\n // attribute + property reflects correctly.\n if (options.reflect === true &&\n !(this._updateState & STATE_IS_REFLECTING_TO_PROPERTY)) {\n if (this._reflectingProperties === undefined) {\n this._reflectingProperties = new Map();\n }\n this._reflectingProperties.set(name, options);\n }\n }\n else {\n // Abort the request if the property should not be considered changed.\n shouldRequestUpdate = false;\n }\n }\n if (!this._hasRequestedUpdate && shouldRequestUpdate) {\n this._updatePromise = this._enqueueUpdate();\n }\n }\n /**\n * Requests an update which is processed asynchronously. This should\n * be called when an element should update based on some state not triggered\n * by setting a property. In this case, pass no arguments. It should also be\n * called when manually implementing a property setter. In this case, pass the\n * property `name` and `oldValue` to ensure that any configured property\n * options are honored. Returns the `updateComplete` Promise which is resolved\n * when the update completes.\n *\n * @param name {PropertyKey} (optional) name of requesting property\n * @param oldValue {any} (optional) old value of requesting property\n * @returns {Promise} A Promise that is resolved when the update completes.\n */\n requestUpdate(name, oldValue) {\n this.requestUpdateInternal(name, oldValue);\n return this.updateComplete;\n }\n /**\n * Sets up the element to asynchronously update.\n */\n async _enqueueUpdate() {\n this._updateState = this._updateState | STATE_UPDATE_REQUESTED;\n try {\n // Ensure any previous update has resolved before updating.\n // This `await` also ensures that property changes are batched.\n await this._updatePromise;\n }\n catch (e) {\n // Ignore any previous errors. We only care that the previous cycle is\n // done. Any error should have been handled in the previous update.\n }\n const result = this.performUpdate();\n // If `performUpdate` returns a Promise, we await it. This is done to\n // enable coordinating updates with a scheduler. Note, the result is\n // checked to avoid delaying an additional microtask unless we need to.\n if (result != null) {\n await result;\n }\n return !this._hasRequestedUpdate;\n }\n get _hasRequestedUpdate() {\n return (this._updateState & STATE_UPDATE_REQUESTED);\n }\n get hasUpdated() {\n return (this._updateState & STATE_HAS_UPDATED);\n }\n /**\n * Performs an element update. Note, if an exception is thrown during the\n * update, `firstUpdated` and `updated` will not be called.\n *\n * You can override this method to change the timing of updates. If this\n * method is overridden, `super.performUpdate()` must be called.\n *\n * For instance, to schedule updates to occur just before the next frame:\n *\n * ```\n * protected async performUpdate(): Promise<unknown> {\n * await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n * super.performUpdate();\n * }\n * ```\n */\n performUpdate() {\n // Abort any update if one is not pending when this is called.\n // This can happen if `performUpdate` is called early to \"flush\"\n // the update.\n if (!this._hasRequestedUpdate) {\n return;\n }\n // Mixin instance properties once, if they exist.\n if (this._instanceProperties) {\n this._applyInstanceProperties();\n }\n let shouldUpdate = false;\n const changedProperties = this._changedProperties;\n try {\n shouldUpdate = this.shouldUpdate(changedProperties);\n if (shouldUpdate) {\n this.update(changedProperties);\n }\n else {\n this._markUpdated();\n }\n }\n catch (e) {\n // Prevent `firstUpdated` and `updated` from running when there's an\n // update exception.\n shouldUpdate = false;\n // Ensure element can accept additional updates after an exception.\n this._markUpdated();\n throw e;\n }\n if (shouldUpdate) {\n if (!(this._updateState & STATE_HAS_UPDATED)) {\n this._updateState = this._updateState | STATE_HAS_UPDATED;\n this.firstUpdated(changedProperties);\n }\n this.updated(changedProperties);\n }\n }\n _markUpdated() {\n this._changedProperties = new Map();\n this._updateState = this._updateState & ~STATE_UPDATE_REQUESTED;\n }\n /**\n * Returns a Promise that resolves when the element has completed updating.\n * The Promise value is a boolean that is `true` if the element completed the\n * update without triggering another update. The Promise result is `false` if\n * a property was set inside `updated()`. If the Promise is rejected, an\n * exception was thrown during the update.\n *\n * To await additional asynchronous work, override the `_getUpdateComplete`\n * method. For example, it is sometimes useful to await a rendered element\n * before fulfilling this Promise. To do this, first await\n * `super._getUpdateComplete()`, then any subsequent state.\n *\n * @returns {Promise} The Promise returns a boolean that indicates if the\n * update resolved without triggering another update.\n */\n get updateComplete() {\n return this._getUpdateComplete();\n }\n /**\n * Override point for the `updateComplete` promise.\n *\n * It is not safe to override the `updateComplete` getter directly due to a\n * limitation in TypeScript which means it is not possible to call a\n * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n * This method should be overridden instead. For example:\n *\n * class MyElement extends LitElement {\n * async _getUpdateComplete() {\n * await super._getUpdateComplete();\n * await this._myChild.updateComplete;\n * }\n * }\n */\n _getUpdateComplete() {\n return this._updatePromise;\n }\n /**\n * Controls whether or not `update` should be called when the element requests\n * an update. By default, this method always returns `true`, but this can be\n * customized to control when to update.\n *\n * @param _changedProperties Map of changed properties with old values\n */\n shouldUpdate(_changedProperties) {\n return true;\n }\n /**\n * Updates the element. This method reflects property values to attributes.\n * It can be overridden to render and keep updated element DOM.\n * Setting properties inside this method will *not* trigger\n * another update.\n *\n * @param _changedProperties Map of changed properties with old values\n */\n update(_changedProperties) {\n if (this._reflectingProperties !== undefined &&\n this._reflectingProperties.size > 0) {\n // Use forEach so this works even if for/of loops are compiled to for\n // loops expecting arrays\n this._reflectingProperties.forEach((v, k) => this._propertyToAttribute(k, this[k], v));\n this._reflectingProperties = undefined;\n }\n this._markUpdated();\n }\n /**\n * Invoked whenever the element is updated. Implement to perform\n * post-updating tasks via DOM APIs, for example, focusing an element.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n */\n updated(_changedProperties) {\n }\n /**\n * Invoked when the element is first updated. Implement to perform one time\n * work on the element after update.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n */\n firstUpdated(_changedProperties) {\n }\n}\n_a = finalized;\n/**\n * Marks class as having finished creating properties.\n */\nUpdatingElement[_a] = true;\n//# sourceMappingURL=updating-element.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-element/lib/updating-element.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-element/lit-element.js":
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/lit-element/lit-element.js ***!
|
|
\*************************************************/
|
|
/*! exports provided: defaultConverter, notEqual, UpdatingElement, customElement, property, internalProperty, query, queryAsync, queryAll, eventOptions, queryAssignedNodes, html, svg, TemplateResult, SVGTemplateResult, supportsAdoptingStyleSheets, CSSResult, unsafeCSS, css, LitElement */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LitElement\", function() { return LitElement; });\n/* harmony import */ var lit_html_lib_shady_render_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-html/lib/shady-render.js */ \"./node_modules/lit-html/lib/shady-render.js\");\n/* harmony import */ var _lib_updating_element_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/updating-element.js */ \"./node_modules/lit-element/lib/updating-element.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultConverter\", function() { return _lib_updating_element_js__WEBPACK_IMPORTED_MODULE_1__[\"defaultConverter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"notEqual\", function() { return _lib_updating_element_js__WEBPACK_IMPORTED_MODULE_1__[\"notEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdatingElement\", function() { return _lib_updating_element_js__WEBPACK_IMPORTED_MODULE_1__[\"UpdatingElement\"]; });\n\n/* harmony import */ var _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/decorators.js */ \"./node_modules/lit-element/lib/decorators.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"customElement\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"customElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"property\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internalProperty\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"internalProperty\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"query\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"query\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"queryAsync\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"queryAsync\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"queryAll\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"queryAll\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"eventOptions\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"eventOptions\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"queryAssignedNodes\", function() { return _lib_decorators_js__WEBPACK_IMPORTED_MODULE_2__[\"queryAssignedNodes\"]; });\n\n/* harmony import */ var lit_html_lit_html_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lit-html/lit-html.js */ \"./node_modules/lit-html/lit-html.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return lit_html_lit_html_js__WEBPACK_IMPORTED_MODULE_3__[\"html\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"svg\", function() { return lit_html_lit_html_js__WEBPACK_IMPORTED_MODULE_3__[\"svg\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TemplateResult\", function() { return lit_html_lit_html_js__WEBPACK_IMPORTED_MODULE_3__[\"TemplateResult\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SVGTemplateResult\", function() { return lit_html_lit_html_js__WEBPACK_IMPORTED_MODULE_3__[\"SVGTemplateResult\"]; });\n\n/* harmony import */ var _lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/css-tag.js */ \"./node_modules/lit-element/lib/css-tag.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"supportsAdoptingStyleSheets\", function() { return _lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"supportsAdoptingStyleSheets\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CSSResult\", function() { return _lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"CSSResult\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unsafeCSS\", function() { return _lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"unsafeCSS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return _lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"css\"]; });\n\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * The main LitElement module, which defines the [[`LitElement`]] base class and\n * related APIs.\n *\n * LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n * Import [[`LitElement`]] and [[`html`]] from this module to create a\n * component:\n *\n * ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n * // Declare observed properties\n * static get properties() {\n * return {\n * adjective: {}\n * }\n * }\n *\n * constructor() {\n * this.adjective = 'awesome';\n * }\n *\n * // Define the element's template\n * render() {\n * return html`<p>your ${adjective} template here</p>`;\n * }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends [[`UpdatingElement`]] and adds lit-html templating.\n * The `UpdatingElement` class is provided for users that want to build\n * their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\n\n\n\n\n\n\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n// TODO(justinfagnani): inject version number at build time\n(window['litElementVersions'] || (window['litElementVersions'] = []))\n .push('2.4.0');\n/**\n * Sentinal value used to avoid calling lit-html's render function when\n * subclasses do not implement `render`\n */\nconst renderNotImplemented = {};\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the [[`properties`]] property or the [[`property`]] decorator.\n */\nclass LitElement extends _lib_updating_element_js__WEBPACK_IMPORTED_MODULE_1__[\"UpdatingElement\"] {\n /**\n * Return the array of styles to apply to the element.\n * Override this method to integrate into a style management system.\n *\n * @nocollapse\n */\n static getStyles() {\n return this.styles;\n }\n /** @nocollapse */\n static _getUniqueStyles() {\n // Only gather styles once per class\n if (this.hasOwnProperty(JSCompiler_renameProperty('_styles', this))) {\n return;\n }\n // Take care not to call `this.getStyles()` multiple times since this\n // generates new CSSResults each time.\n // TODO(sorvell): Since we do not cache CSSResults by input, any\n // shared styles will generate new stylesheet objects, which is wasteful.\n // This should be addressed when a browser ships constructable\n // stylesheets.\n const userStyles = this.getStyles();\n if (Array.isArray(userStyles)) {\n // De-duplicate styles preserving the _last_ instance in the set.\n // This is a performance optimization to avoid duplicated styles that can\n // occur especially when composing via subclassing.\n // The last item is kept to try to preserve the cascade order with the\n // assumption that it's most important that last added styles override\n // previous styles.\n const addStyles = (styles, set) => styles.reduceRight((set, s) => \n // Note: On IE set.add() does not return the set\n Array.isArray(s) ? addStyles(s, set) : (set.add(s), set), set);\n // Array.from does not work on Set in IE, otherwise return\n // Array.from(addStyles(userStyles, new Set<CSSResult>())).reverse()\n const set = addStyles(userStyles, new Set());\n const styles = [];\n set.forEach((v) => styles.unshift(v));\n this._styles = styles;\n }\n else {\n this._styles = userStyles === undefined ? [] : [userStyles];\n }\n // Ensure that there are no invalid CSSStyleSheet instances here. They are\n // invalid in two conditions.\n // (1) the sheet is non-constructible (`sheet` of a HTMLStyleElement), but\n // this is impossible to check except via .replaceSync or use\n // (2) the ShadyCSS polyfill is enabled (:. supportsAdoptingStyleSheets is\n // false)\n this._styles = this._styles.map((s) => {\n if (s instanceof CSSStyleSheet && !_lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"supportsAdoptingStyleSheets\"]) {\n // Flatten the cssText from the passed constructible stylesheet (or\n // undetectable non-constructible stylesheet). The user might have\n // expected to update their stylesheets over time, but the alternative\n // is a crash.\n const cssText = Array.prototype.slice.call(s.cssRules)\n .reduce((css, rule) => css + rule.cssText, '');\n return Object(_lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"unsafeCSS\"])(cssText);\n }\n return s;\n });\n }\n /**\n * Performs element initialization. By default this calls\n * [[`createRenderRoot`]] to create the element [[`renderRoot`]] node and\n * captures any pre-set values for registered properties.\n */\n initialize() {\n super.initialize();\n this.constructor._getUniqueStyles();\n this.renderRoot = this.createRenderRoot();\n // Note, if renderRoot is not a shadowRoot, styles would/could apply to the\n // element's getRootNode(). While this could be done, we're choosing not to\n // support this now since it would require different logic around de-duping.\n if (window.ShadowRoot && this.renderRoot instanceof window.ShadowRoot) {\n this.adoptStyles();\n }\n }\n /**\n * Returns the node into which the element should render and by default\n * creates and returns an open shadowRoot. Implement to customize where the\n * element's DOM is rendered. For example, to render into the element's\n * childNodes, return `this`.\n * @returns {Element|DocumentFragment} Returns a node into which to render.\n */\n createRenderRoot() {\n return this.attachShadow({ mode: 'open' });\n }\n /**\n * Applies styling to the element shadowRoot using the [[`styles`]]\n * property. Styling will apply using `shadowRoot.adoptedStyleSheets` where\n * available and will fallback otherwise. When Shadow DOM is polyfilled,\n * ShadyCSS scopes styles and adds them to the document. When Shadow DOM\n * is available but `adoptedStyleSheets` is not, styles are appended to the\n * end of the `shadowRoot` to [mimic spec\n * behavior](https://wicg.github.io/construct-stylesheets/#using-constructed-stylesheets).\n */\n adoptStyles() {\n const styles = this.constructor._styles;\n if (styles.length === 0) {\n return;\n }\n // There are three separate cases here based on Shadow DOM support.\n // (1) shadowRoot polyfilled: use ShadyCSS\n // (2) shadowRoot.adoptedStyleSheets available: use it\n // (3) shadowRoot.adoptedStyleSheets polyfilled: append styles after\n // rendering\n if (window.ShadyCSS !== undefined && !window.ShadyCSS.nativeShadow) {\n window.ShadyCSS.ScopingShim.prepareAdoptedCssText(styles.map((s) => s.cssText), this.localName);\n }\n else if (_lib_css_tag_js__WEBPACK_IMPORTED_MODULE_4__[\"supportsAdoptingStyleSheets\"]) {\n this.renderRoot.adoptedStyleSheets =\n styles.map((s) => s instanceof CSSStyleSheet ? s : s.styleSheet);\n }\n else {\n // This must be done after rendering so the actual style insertion is done\n // in `update`.\n this._needsShimAdoptedStyleSheets = true;\n }\n }\n connectedCallback() {\n super.connectedCallback();\n // Note, first update/render handles styleElement so we only call this if\n // connected after first update.\n if (this.hasUpdated && window.ShadyCSS !== undefined) {\n window.ShadyCSS.styleElement(this);\n }\n }\n /**\n * Updates the element. This method reflects property values to attributes\n * and calls `render` to render DOM via lit-html. Setting properties inside\n * this method will *not* trigger another update.\n * @param _changedProperties Map of changed properties with old values\n */\n update(changedProperties) {\n // Setting properties in `render` should not trigger an update. Since\n // updates are allowed after super.update, it's important to call `render`\n // before that.\n const templateResult = this.render();\n super.update(changedProperties);\n // If render is not implemented by the component, don't call lit-html render\n if (templateResult !== renderNotImplemented) {\n this.constructor\n .render(templateResult, this.renderRoot, { scopeName: this.localName, eventContext: this });\n }\n // When native Shadow DOM is used but adoptedStyles are not supported,\n // insert styling after rendering to ensure adoptedStyles have highest\n // priority.\n if (this._needsShimAdoptedStyleSheets) {\n this._needsShimAdoptedStyleSheets = false;\n this.constructor._styles.forEach((s) => {\n const style = document.createElement('style');\n style.textContent = s.cssText;\n this.renderRoot.appendChild(style);\n });\n }\n }\n /**\n * Invoked on each update to perform rendering tasks. This method may return\n * any value renderable by lit-html's `NodePart` - typically a\n * `TemplateResult`. Setting properties inside this method will *not* trigger\n * the element to update.\n */\n render() {\n return renderNotImplemented;\n }\n}\n/**\n * Ensure this class is marked as `finalized` as an optimization ensuring\n * it will not needlessly try to `finalize`.\n *\n * Note this property name is a string to prevent breaking Closure JS Compiler\n * optimizations. See updating-element.ts for more information.\n */\nLitElement['finalized'] = true;\n/**\n * Reference to the underlying library method used to render the element's\n * DOM. By default, points to the `render` method from lit-html's shady-render\n * module.\n *\n * **Most users will never need to touch this property.**\n *\n * This property should not be confused with the `render` instance method,\n * which should be overridden to define a template for the element.\n *\n * Advanced users creating a new base class based on LitElement can override\n * this property to point to a custom render method with a signature that\n * matches [shady-render's `render`\n * method](https://lit-html.polymer-project.org/api/modules/shady_render.html#render).\n *\n * @nocollapse\n */\nLitElement.render = lit_html_lib_shady_render_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"];\n//# sourceMappingURL=lit-element.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-element/lit-element.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/directives/style-map.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/lit-html/directives/style-map.js ***!
|
|
\*******************************************************/
|
|
/*! exports provided: styleMap */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleMap\", function() { return styleMap; });\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lit-html.js */ \"./node_modules/lit-html/lit-html.js\");\n/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Stores the StyleInfo object applied to a given AttributePart.\n * Used to unset existing values when a new StyleInfo object is applied.\n */\nconst previousStylePropertyCache = new WeakMap();\n/**\n * A directive that applies CSS properties to an element.\n *\n * `styleMap` can only be used in the `style` attribute and must be the only\n * expression in the attribute. It takes the property names in the `styleInfo`\n * object and adds the property values as CSS properties. Property names with\n * dashes (`-`) are assumed to be valid CSS property names and set on the\n * element's style object using `setProperty()`. Names without dashes are\n * assumed to be camelCased JavaScript property names and set on the element's\n * style object using property assignment, allowing the style object to\n * translate JavaScript-style names to CSS property names.\n *\n * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':\n * '0'})` sets the `background-color`, `border-top` and `--size` properties.\n *\n * @param styleInfo {StyleInfo}\n */\nconst styleMap = Object(_lit_html_js__WEBPACK_IMPORTED_MODULE_0__[\"directive\"])((styleInfo) => (part) => {\n if (!(part instanceof _lit_html_js__WEBPACK_IMPORTED_MODULE_0__[\"AttributePart\"]) || (part instanceof _lit_html_js__WEBPACK_IMPORTED_MODULE_0__[\"PropertyPart\"]) ||\n part.committer.name !== 'style' || part.committer.parts.length > 1) {\n throw new Error('The `styleMap` directive must be used in the style attribute ' +\n 'and must be the only part in the attribute.');\n }\n const { committer } = part;\n const { style } = committer.element;\n let previousStyleProperties = previousStylePropertyCache.get(part);\n if (previousStyleProperties === undefined) {\n // Write static styles once\n style.cssText = committer.strings.join(' ');\n previousStylePropertyCache.set(part, previousStyleProperties = new Set());\n }\n // Remove old properties that no longer exist in styleInfo\n // We use forEach() instead of for-of so that re don't require down-level\n // iteration.\n previousStyleProperties.forEach((name) => {\n if (!(name in styleInfo)) {\n previousStyleProperties.delete(name);\n if (name.indexOf('-') === -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style[name] = null;\n }\n else {\n style.removeProperty(name);\n }\n }\n });\n // Add or update properties\n for (const name in styleInfo) {\n previousStyleProperties.add(name);\n if (name.indexOf('-') === -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style[name] = styleInfo[name];\n }\n else {\n style.setProperty(name, styleInfo[name]);\n }\n }\n});\n//# sourceMappingURL=style-map.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/directives/style-map.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/directives/unsafe-html.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/lit-html/directives/unsafe-html.js ***!
|
|
\*********************************************************/
|
|
/*! exports provided: unsafeHTML */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unsafeHTML\", function() { return unsafeHTML; });\n/* harmony import */ var _lib_parts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/parts.js */ \"./node_modules/lit-html/lib/parts.js\");\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lit-html.js */ \"./node_modules/lit-html/lit-html.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n\n// For each part, remember the value that was last rendered to the part by the\n// unsafeHTML directive, and the DocumentFragment that was last set as a value.\n// The DocumentFragment is used as a unique key to check if the last value\n// rendered to the part was with unsafeHTML. If not, we'll always re-render the\n// value passed to unsafeHTML.\nconst previousValues = new WeakMap();\n/**\n * Renders the result as HTML, rather than text.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nconst unsafeHTML = Object(_lit_html_js__WEBPACK_IMPORTED_MODULE_1__[\"directive\"])((value) => (part) => {\n if (!(part instanceof _lit_html_js__WEBPACK_IMPORTED_MODULE_1__[\"NodePart\"])) {\n throw new Error('unsafeHTML can only be used in text bindings');\n }\n const previousValue = previousValues.get(part);\n if (previousValue !== undefined && Object(_lib_parts_js__WEBPACK_IMPORTED_MODULE_0__[\"isPrimitive\"])(value) &&\n value === previousValue.value && part.value === previousValue.fragment) {\n return;\n }\n const template = document.createElement('template');\n template.innerHTML = value; // innerHTML casts to string internally\n const fragment = document.importNode(template.content, true);\n part.setValue(fragment);\n previousValues.set(part, { value, fragment });\n});\n//# sourceMappingURL=unsafe-html.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/directives/unsafe-html.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/directives/unsafe-svg.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/lit-html/directives/unsafe-svg.js ***!
|
|
\********************************************************/
|
|
/*! exports provided: unsafeSVG */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unsafeSVG\", function() { return unsafeSVG; });\n/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony import */ var _lib_parts_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/parts.js */ \"./node_modules/lit-html/lib/parts.js\");\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lit-html.js */ \"./node_modules/lit-html/lit-html.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n\n\n// For each part, remember the value that was last rendered to the part by the\n// unsafeSVG directive, and the DocumentFragment that was last set as a value.\n// The DocumentFragment is used as a unique key to check if the last value\n// rendered to the part was with unsafeSVG. If not, we'll always re-render the\n// value passed to unsafeSVG.\nconst previousValues = new WeakMap();\n/**\n * Renders the result as SVG, rather than text.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nconst unsafeSVG = Object(_lit_html_js__WEBPACK_IMPORTED_MODULE_2__[\"directive\"])((value) => (part) => {\n if (!(part instanceof _lit_html_js__WEBPACK_IMPORTED_MODULE_2__[\"NodePart\"])) {\n throw new Error('unsafeSVG can only be used in text bindings');\n }\n const previousValue = previousValues.get(part);\n if (previousValue !== undefined && Object(_lib_parts_js__WEBPACK_IMPORTED_MODULE_1__[\"isPrimitive\"])(value) &&\n value === previousValue.value && part.value === previousValue.fragment) {\n return;\n }\n const template = document.createElement('template');\n template.innerHTML = `<svg>${value}</svg>`;\n const content = template.content;\n const svgElement = content.firstChild;\n content.removeChild(svgElement);\n Object(_lib_dom_js__WEBPACK_IMPORTED_MODULE_0__[\"reparentNodes\"])(content, svgElement.firstChild);\n const fragment = document.importNode(content, true);\n part.setValue(fragment);\n previousValues.set(part, { value, fragment });\n});\n//# sourceMappingURL=unsafe-svg.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/directives/unsafe-svg.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/default-template-processor.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/default-template-processor.js ***!
|
|
\*****************************************************************/
|
|
/*! exports provided: DefaultTemplateProcessor, defaultTemplateProcessor */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DefaultTemplateProcessor\", function() { return DefaultTemplateProcessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTemplateProcessor\", function() { return defaultTemplateProcessor; });\n/* harmony import */ var _parts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parts.js */ \"./node_modules/lit-html/lib/parts.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Creates Parts when a template is instantiated.\n */\nclass DefaultTemplateProcessor {\n /**\n * Create parts for an attribute-position binding, given the event, attribute\n * name, and string literals.\n *\n * @param element The element containing the binding\n * @param name The attribute name\n * @param strings The string literals. There are always at least two strings,\n * event for fully-controlled bindings with a single expression.\n */\n handleAttributeExpressions(element, name, strings, options) {\n const prefix = name[0];\n if (prefix === '.') {\n const committer = new _parts_js__WEBPACK_IMPORTED_MODULE_0__[\"PropertyCommitter\"](element, name.slice(1), strings);\n return committer.parts;\n }\n if (prefix === '@') {\n return [new _parts_js__WEBPACK_IMPORTED_MODULE_0__[\"EventPart\"](element, name.slice(1), options.eventContext)];\n }\n if (prefix === '?') {\n return [new _parts_js__WEBPACK_IMPORTED_MODULE_0__[\"BooleanAttributePart\"](element, name.slice(1), strings)];\n }\n const committer = new _parts_js__WEBPACK_IMPORTED_MODULE_0__[\"AttributeCommitter\"](element, name, strings);\n return committer.parts;\n }\n /**\n * Create parts for a text-position binding.\n * @param templateFactory\n */\n handleTextExpression(options) {\n return new _parts_js__WEBPACK_IMPORTED_MODULE_0__[\"NodePart\"](options);\n }\n}\nconst defaultTemplateProcessor = new DefaultTemplateProcessor();\n//# sourceMappingURL=default-template-processor.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/default-template-processor.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/directive.js":
|
|
/*!************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/directive.js ***!
|
|
\************************************************/
|
|
/*! exports provided: directive, isDirective */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"directive\", function() { return directive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return isDirective; });\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nconst directives = new WeakMap();\n/**\n * Brands a function as a directive factory function so that lit-html will call\n * the function during template rendering, rather than passing as a value.\n *\n * A _directive_ is a function that takes a Part as an argument. It has the\n * signature: `(part: Part) => void`.\n *\n * A directive _factory_ is a function that takes arguments for data and\n * configuration and returns a directive. Users of directive usually refer to\n * the directive factory as the directive. For example, \"The repeat directive\".\n *\n * Usually a template author will invoke a directive factory in their template\n * with relevant arguments, which will then return a directive function.\n *\n * Here's an example of using the `repeat()` directive factory that takes an\n * array and a function to render an item:\n *\n * ```js\n * html`<ul><${repeat(items, (item) => html`<li>${item}</li>`)}</ul>`\n * ```\n *\n * When `repeat` is invoked, it returns a directive function that closes over\n * `items` and the template function. When the outer template is rendered, the\n * return directive function is called with the Part for the expression.\n * `repeat` then performs it's custom logic to render multiple items.\n *\n * @param f The directive factory function. Must be a function that returns a\n * function of the signature `(part: Part) => void`. The returned function will\n * be called with the part object.\n *\n * @example\n *\n * import {directive, html} from 'lit-html';\n *\n * const immutable = directive((v) => (part) => {\n * if (part.value !== v) {\n * part.setValue(v)\n * }\n * });\n */\nconst directive = (f) => ((...args) => {\n const d = f(...args);\n directives.set(d, true);\n return d;\n});\nconst isDirective = (o) => {\n return typeof o === 'function' && directives.has(o);\n};\n//# sourceMappingURL=directive.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/directive.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/dom.js":
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/lit-html/lib/dom.js ***!
|
|
\******************************************/
|
|
/*! exports provided: isCEPolyfill, reparentNodes, removeNodes */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCEPolyfill\", function() { return isCEPolyfill; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reparentNodes\", function() { return reparentNodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeNodes\", function() { return removeNodes; });\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * True if the custom elements polyfill is in use.\n */\nconst isCEPolyfill = typeof window !== 'undefined' &&\n window.customElements != null &&\n window.customElements.polyfillWrapFlushCallback !==\n undefined;\n/**\n * Reparents nodes, starting from `start` (inclusive) to `end` (exclusive),\n * into another container (could be the same container), before `before`. If\n * `before` is null, it appends the nodes to the container.\n */\nconst reparentNodes = (container, start, end = null, before = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.insertBefore(start, before);\n start = n;\n }\n};\n/**\n * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from\n * `container`.\n */\nconst removeNodes = (container, start, end = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.removeChild(start);\n start = n;\n }\n};\n//# sourceMappingURL=dom.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/dom.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/modify-template.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/modify-template.js ***!
|
|
\******************************************************/
|
|
/*! exports provided: removeNodesFromTemplate, insertNodeIntoTemplate */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeNodesFromTemplate\", function() { return removeNodesFromTemplate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertNodeIntoTemplate\", function() { return insertNodeIntoTemplate; });\n/* harmony import */ var _template_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./template.js */ \"./node_modules/lit-html/lib/template.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module shady-render\n */\n\nconst walkerNodeFilter = 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */;\n/**\n * Removes the list of nodes from a Template safely. In addition to removing\n * nodes from the Template, the Template part indices are updated to match\n * the mutated Template DOM.\n *\n * As the template is walked the removal state is tracked and\n * part indices are adjusted as needed.\n *\n * div\n * div#1 (remove) <-- start removing (removing node is div#1)\n * div\n * div#2 (remove) <-- continue removing (removing node is still div#1)\n * div\n * div <-- stop removing since previous sibling is the removing node (div#1,\n * removed 4 nodes)\n */\nfunction removeNodesFromTemplate(template, nodesToRemove) {\n const { element: { content }, parts } = template;\n const walker = document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let part = parts[partIndex];\n let nodeIndex = -1;\n let removeCount = 0;\n const nodesToRemoveInTemplate = [];\n let currentRemovingNode = null;\n while (walker.nextNode()) {\n nodeIndex++;\n const node = walker.currentNode;\n // End removal if stepped past the removing node\n if (node.previousSibling === currentRemovingNode) {\n currentRemovingNode = null;\n }\n // A node to remove was found in the template\n if (nodesToRemove.has(node)) {\n nodesToRemoveInTemplate.push(node);\n // Track node we're removing\n if (currentRemovingNode === null) {\n currentRemovingNode = node;\n }\n }\n // When removing, increment count by which to adjust subsequent part indices\n if (currentRemovingNode !== null) {\n removeCount++;\n }\n while (part !== undefined && part.index === nodeIndex) {\n // If part is in a removed node deactivate it by setting index to -1 or\n // adjust the index as needed.\n part.index = currentRemovingNode !== null ? -1 : part.index - removeCount;\n // go to the next active part.\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n part = parts[partIndex];\n }\n }\n nodesToRemoveInTemplate.forEach((n) => n.parentNode.removeChild(n));\n}\nconst countNodes = (node) => {\n let count = (node.nodeType === 11 /* Node.DOCUMENT_FRAGMENT_NODE */) ? 0 : 1;\n const walker = document.createTreeWalker(node, walkerNodeFilter, null, false);\n while (walker.nextNode()) {\n count++;\n }\n return count;\n};\nconst nextActiveIndexInTemplateParts = (parts, startIndex = -1) => {\n for (let i = startIndex + 1; i < parts.length; i++) {\n const part = parts[i];\n if (Object(_template_js__WEBPACK_IMPORTED_MODULE_0__[\"isTemplatePartActive\"])(part)) {\n return i;\n }\n }\n return -1;\n};\n/**\n * Inserts the given node into the Template, optionally before the given\n * refNode. In addition to inserting the node into the Template, the Template\n * part indices are updated to match the mutated Template DOM.\n */\nfunction insertNodeIntoTemplate(template, node, refNode = null) {\n const { element: { content }, parts } = template;\n // If there's no refNode, then put node at end of template.\n // No part indices need to be shifted in this case.\n if (refNode === null || refNode === undefined) {\n content.appendChild(node);\n return;\n }\n const walker = document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let insertCount = 0;\n let walkerIndex = -1;\n while (walker.nextNode()) {\n walkerIndex++;\n const walkerNode = walker.currentNode;\n if (walkerNode === refNode) {\n insertCount = countNodes(node);\n refNode.parentNode.insertBefore(node, refNode);\n }\n while (partIndex !== -1 && parts[partIndex].index === walkerIndex) {\n // If we've inserted the node, simply adjust all subsequent parts\n if (insertCount > 0) {\n while (partIndex !== -1) {\n parts[partIndex].index += insertCount;\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n return;\n }\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n }\n}\n//# sourceMappingURL=modify-template.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/modify-template.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/part.js":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/lit-html/lib/part.js ***!
|
|
\*******************************************/
|
|
/*! exports provided: noChange, nothing */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"noChange\", function() { return noChange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nothing\", function() { return nothing; });\n/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nconst noChange = {};\n/**\n * A sentinel value that signals a NodePart to fully clear its content.\n */\nconst nothing = {};\n//# sourceMappingURL=part.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/part.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/parts.js":
|
|
/*!********************************************!*\
|
|
!*** ./node_modules/lit-html/lib/parts.js ***!
|
|
\********************************************/
|
|
/*! exports provided: isPrimitive, isIterable, AttributeCommitter, AttributePart, NodePart, BooleanAttributePart, PropertyCommitter, PropertyPart, EventPart */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPrimitive\", function() { return isPrimitive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AttributeCommitter\", function() { return AttributeCommitter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AttributePart\", function() { return AttributePart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NodePart\", function() { return NodePart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BooleanAttributePart\", function() { return BooleanAttributePart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PropertyCommitter\", function() { return PropertyCommitter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PropertyPart\", function() { return PropertyPart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventPart\", function() { return EventPart; });\n/* harmony import */ var _directive_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./directive.js */ \"./node_modules/lit-html/lib/directive.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony import */ var _part_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./part.js */ \"./node_modules/lit-html/lib/part.js\");\n/* harmony import */ var _template_instance_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./template-instance.js */ \"./node_modules/lit-html/lib/template-instance.js\");\n/* harmony import */ var _template_result_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./template-result.js */ \"./node_modules/lit-html/lib/template-result.js\");\n/* harmony import */ var _template_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./template.js */ \"./node_modules/lit-html/lib/template.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\n\n\n\n\n\n\nconst isPrimitive = (value) => {\n return (value === null ||\n !(typeof value === 'object' || typeof value === 'function'));\n};\nconst isIterable = (value) => {\n return Array.isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !!(value && value[Symbol.iterator]);\n};\n/**\n * Writes attribute values to the DOM for a group of AttributeParts bound to a\n * single attribute. The value is only set once even if there are multiple parts\n * for an attribute.\n */\nclass AttributeCommitter {\n constructor(element, name, strings) {\n this.dirty = true;\n this.element = element;\n this.name = name;\n this.strings = strings;\n this.parts = [];\n for (let i = 0; i < strings.length - 1; i++) {\n this.parts[i] = this._createPart();\n }\n }\n /**\n * Creates a single part. Override this to create a differnt type of part.\n */\n _createPart() {\n return new AttributePart(this);\n }\n _getValue() {\n const strings = this.strings;\n const l = strings.length - 1;\n let text = '';\n for (let i = 0; i < l; i++) {\n text += strings[i];\n const part = this.parts[i];\n if (part !== undefined) {\n const v = part.value;\n if (isPrimitive(v) || !isIterable(v)) {\n text += typeof v === 'string' ? v : String(v);\n }\n else {\n for (const t of v) {\n text += typeof t === 'string' ? t : String(t);\n }\n }\n }\n }\n text += strings[l];\n return text;\n }\n commit() {\n if (this.dirty) {\n this.dirty = false;\n this.element.setAttribute(this.name, this._getValue());\n }\n }\n}\n/**\n * A Part that controls all or part of an attribute value.\n */\nclass AttributePart {\n constructor(committer) {\n this.value = undefined;\n this.committer = committer;\n }\n setValue(value) {\n if (value !== _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"] && (!isPrimitive(value) || value !== this.value)) {\n this.value = value;\n // If the value is a not a directive, dirty the committer so that it'll\n // call setAttribute. If the value is a directive, it'll dirty the\n // committer if it calls setValue().\n if (!Object(_directive_js__WEBPACK_IMPORTED_MODULE_0__[\"isDirective\"])(value)) {\n this.committer.dirty = true;\n }\n }\n }\n commit() {\n while (Object(_directive_js__WEBPACK_IMPORTED_MODULE_0__[\"isDirective\"])(this.value)) {\n const directive = this.value;\n this.value = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"];\n directive(this);\n }\n if (this.value === _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"]) {\n return;\n }\n this.committer.commit();\n }\n}\n/**\n * A Part that controls a location within a Node tree. Like a Range, NodePart\n * has start and end locations and can set and update the Nodes between those\n * locations.\n *\n * NodeParts support several value types: primitives, Nodes, TemplateResults,\n * as well as arrays and iterables of those types.\n */\nclass NodePart {\n constructor(options) {\n this.value = undefined;\n this.__pendingValue = undefined;\n this.options = options;\n }\n /**\n * Appends this part into a container.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendInto(container) {\n this.startNode = container.appendChild(Object(_template_js__WEBPACK_IMPORTED_MODULE_5__[\"createMarker\"])());\n this.endNode = container.appendChild(Object(_template_js__WEBPACK_IMPORTED_MODULE_5__[\"createMarker\"])());\n }\n /**\n * Inserts this part after the `ref` node (between `ref` and `ref`'s next\n * sibling). Both `ref` and its next sibling must be static, unchanging nodes\n * such as those that appear in a literal section of a template.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterNode(ref) {\n this.startNode = ref;\n this.endNode = ref.nextSibling;\n }\n /**\n * Appends this part into a parent part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendIntoPart(part) {\n part.__insert(this.startNode = Object(_template_js__WEBPACK_IMPORTED_MODULE_5__[\"createMarker\"])());\n part.__insert(this.endNode = Object(_template_js__WEBPACK_IMPORTED_MODULE_5__[\"createMarker\"])());\n }\n /**\n * Inserts this part after the `ref` part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterPart(ref) {\n ref.__insert(this.startNode = Object(_template_js__WEBPACK_IMPORTED_MODULE_5__[\"createMarker\"])());\n this.endNode = ref.endNode;\n ref.endNode = this.startNode;\n }\n setValue(value) {\n this.__pendingValue = value;\n }\n commit() {\n if (this.startNode.parentNode === null) {\n return;\n }\n while (Object(_directive_js__WEBPACK_IMPORTED_MODULE_0__[\"isDirective\"])(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"];\n directive(this);\n }\n const value = this.__pendingValue;\n if (value === _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"]) {\n return;\n }\n if (isPrimitive(value)) {\n if (value !== this.value) {\n this.__commitText(value);\n }\n }\n else if (value instanceof _template_result_js__WEBPACK_IMPORTED_MODULE_4__[\"TemplateResult\"]) {\n this.__commitTemplateResult(value);\n }\n else if (value instanceof Node) {\n this.__commitNode(value);\n }\n else if (isIterable(value)) {\n this.__commitIterable(value);\n }\n else if (value === _part_js__WEBPACK_IMPORTED_MODULE_2__[\"nothing\"]) {\n this.value = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"nothing\"];\n this.clear();\n }\n else {\n // Fallback, will render the string representation\n this.__commitText(value);\n }\n }\n __insert(node) {\n this.endNode.parentNode.insertBefore(node, this.endNode);\n }\n __commitNode(value) {\n if (this.value === value) {\n return;\n }\n this.clear();\n this.__insert(value);\n this.value = value;\n }\n __commitText(value) {\n const node = this.startNode.nextSibling;\n value = value == null ? '' : value;\n // If `value` isn't already a string, we explicitly convert it here in case\n // it can't be implicitly converted - i.e. it's a symbol.\n const valueAsString = typeof value === 'string' ? value : String(value);\n if (node === this.endNode.previousSibling &&\n node.nodeType === 3 /* Node.TEXT_NODE */) {\n // If we only have a single text node between the markers, we can just\n // set its value, rather than replacing it.\n // TODO(justinfagnani): Can we just check if this.value is primitive?\n node.data = valueAsString;\n }\n else {\n this.__commitNode(document.createTextNode(valueAsString));\n }\n this.value = value;\n }\n __commitTemplateResult(value) {\n const template = this.options.templateFactory(value);\n if (this.value instanceof _template_instance_js__WEBPACK_IMPORTED_MODULE_3__[\"TemplateInstance\"] &&\n this.value.template === template) {\n this.value.update(value.values);\n }\n else {\n // Make sure we propagate the template processor from the TemplateResult\n // so that we use its syntax extension, etc. The template factory comes\n // from the render function options so that it can control template\n // caching and preprocessing.\n const instance = new _template_instance_js__WEBPACK_IMPORTED_MODULE_3__[\"TemplateInstance\"](template, value.processor, this.options);\n const fragment = instance._clone();\n instance.update(value.values);\n this.__commitNode(fragment);\n this.value = instance;\n }\n }\n __commitIterable(value) {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n // If _value is an array, then the previous render was of an\n // iterable and _value will contain the NodeParts from the previous\n // render. If _value is not an array, clear this part and make a new\n // array for NodeParts.\n if (!Array.isArray(this.value)) {\n this.value = [];\n this.clear();\n }\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this.value;\n let partIndex = 0;\n let itemPart;\n for (const item of value) {\n // Try to reuse an existing part\n itemPart = itemParts[partIndex];\n // If no existing part, create a new one\n if (itemPart === undefined) {\n itemPart = new NodePart(this.options);\n itemParts.push(itemPart);\n if (partIndex === 0) {\n itemPart.appendIntoPart(this);\n }\n else {\n itemPart.insertAfterPart(itemParts[partIndex - 1]);\n }\n }\n itemPart.setValue(item);\n itemPart.commit();\n partIndex++;\n }\n if (partIndex < itemParts.length) {\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n this.clear(itemPart && itemPart.endNode);\n }\n }\n clear(startNode = this.startNode) {\n Object(_dom_js__WEBPACK_IMPORTED_MODULE_1__[\"removeNodes\"])(this.startNode.parentNode, startNode.nextSibling, this.endNode);\n }\n}\n/**\n * Implements a boolean attribute, roughly as defined in the HTML\n * specification.\n *\n * If the value is truthy, then the attribute is present with a value of\n * ''. If the value is falsey, the attribute is removed.\n */\nclass BooleanAttributePart {\n constructor(element, name, strings) {\n this.value = undefined;\n this.__pendingValue = undefined;\n if (strings.length !== 2 || strings[0] !== '' || strings[1] !== '') {\n throw new Error('Boolean attributes can only contain a single expression');\n }\n this.element = element;\n this.name = name;\n this.strings = strings;\n }\n setValue(value) {\n this.__pendingValue = value;\n }\n commit() {\n while (Object(_directive_js__WEBPACK_IMPORTED_MODULE_0__[\"isDirective\"])(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"];\n directive(this);\n }\n if (this.__pendingValue === _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"]) {\n return;\n }\n const value = !!this.__pendingValue;\n if (this.value !== value) {\n if (value) {\n this.element.setAttribute(this.name, '');\n }\n else {\n this.element.removeAttribute(this.name);\n }\n this.value = value;\n }\n this.__pendingValue = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"];\n }\n}\n/**\n * Sets attribute values for PropertyParts, so that the value is only set once\n * even if there are multiple parts for a property.\n *\n * If an expression controls the whole property value, then the value is simply\n * assigned to the property under control. If there are string literals or\n * multiple expressions, then the strings are expressions are interpolated into\n * a string first.\n */\nclass PropertyCommitter extends AttributeCommitter {\n constructor(element, name, strings) {\n super(element, name, strings);\n this.single =\n (strings.length === 2 && strings[0] === '' && strings[1] === '');\n }\n _createPart() {\n return new PropertyPart(this);\n }\n _getValue() {\n if (this.single) {\n return this.parts[0].value;\n }\n return super._getValue();\n }\n commit() {\n if (this.dirty) {\n this.dirty = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.element[this.name] = this._getValue();\n }\n }\n}\nclass PropertyPart extends AttributePart {\n}\n// Detect event listener options support. If the `capture` property is read\n// from the options object, then options are supported. If not, then the third\n// argument to add/removeEventListener is interpreted as the boolean capture\n// value so we should only pass the `capture` property.\nlet eventOptionsSupported = false;\n// Wrap into an IIFE because MS Edge <= v41 does not support having try/catch\n// blocks right into the body of a module\n(() => {\n try {\n const options = {\n get capture() {\n eventOptionsSupported = true;\n return false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n window.addEventListener('test', options, options);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n window.removeEventListener('test', options, options);\n }\n catch (_e) {\n // event options not supported\n }\n})();\nclass EventPart {\n constructor(element, eventName, eventContext) {\n this.value = undefined;\n this.__pendingValue = undefined;\n this.element = element;\n this.eventName = eventName;\n this.eventContext = eventContext;\n this.__boundHandleEvent = (e) => this.handleEvent(e);\n }\n setValue(value) {\n this.__pendingValue = value;\n }\n commit() {\n while (Object(_directive_js__WEBPACK_IMPORTED_MODULE_0__[\"isDirective\"])(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"];\n directive(this);\n }\n if (this.__pendingValue === _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"]) {\n return;\n }\n const newListener = this.__pendingValue;\n const oldListener = this.value;\n const shouldRemoveListener = newListener == null ||\n oldListener != null &&\n (newListener.capture !== oldListener.capture ||\n newListener.once !== oldListener.once ||\n newListener.passive !== oldListener.passive);\n const shouldAddListener = newListener != null && (oldListener == null || shouldRemoveListener);\n if (shouldRemoveListener) {\n this.element.removeEventListener(this.eventName, this.__boundHandleEvent, this.__options);\n }\n if (shouldAddListener) {\n this.__options = getOptions(newListener);\n this.element.addEventListener(this.eventName, this.__boundHandleEvent, this.__options);\n }\n this.value = newListener;\n this.__pendingValue = _part_js__WEBPACK_IMPORTED_MODULE_2__[\"noChange\"];\n }\n handleEvent(event) {\n if (typeof this.value === 'function') {\n this.value.call(this.eventContext || this.element, event);\n }\n else {\n this.value.handleEvent(event);\n }\n }\n}\n// We copy options because of the inconsistent behavior of browsers when reading\n// the third argument of add/removeEventListener. IE11 doesn't support options\n// at all. Chrome 41 only reads `capture` if the argument is an object.\nconst getOptions = (o) => o &&\n (eventOptionsSupported ?\n { capture: o.capture, passive: o.passive, once: o.once } :\n o.capture);\n//# sourceMappingURL=parts.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/parts.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/render.js":
|
|
/*!*********************************************!*\
|
|
!*** ./node_modules/lit-html/lib/render.js ***!
|
|
\*********************************************/
|
|
/*! exports provided: parts, render */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parts\", function() { return parts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony import */ var _parts_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parts.js */ \"./node_modules/lit-html/lib/parts.js\");\n/* harmony import */ var _template_factory_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./template-factory.js */ \"./node_modules/lit-html/lib/template-factory.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\n\n\n\nconst parts = new WeakMap();\n/**\n * Renders a template result or other value to a container.\n *\n * To update a container with new values, reevaluate the template literal and\n * call `render` with the new result.\n *\n * @param result Any value renderable by NodePart - typically a TemplateResult\n * created by evaluating a template tag like `html` or `svg`.\n * @param container A DOM parent to render to. The entire contents are either\n * replaced, or efficiently updated if the same result type was previous\n * rendered there.\n * @param options RenderOptions for the entire render tree rendered to this\n * container. Render options must *not* change between renders to the same\n * container, as those changes will not effect previously rendered DOM.\n */\nconst render = (result, container, options) => {\n let part = parts.get(container);\n if (part === undefined) {\n Object(_dom_js__WEBPACK_IMPORTED_MODULE_0__[\"removeNodes\"])(container, container.firstChild);\n parts.set(container, part = new _parts_js__WEBPACK_IMPORTED_MODULE_1__[\"NodePart\"](Object.assign({ templateFactory: _template_factory_js__WEBPACK_IMPORTED_MODULE_2__[\"templateFactory\"] }, options)));\n part.appendInto(container);\n }\n part.setValue(result);\n part.commit();\n};\n//# sourceMappingURL=render.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/render.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/shady-render.js":
|
|
/*!***************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/shady-render.js ***!
|
|
\***************************************************/
|
|
/*! exports provided: html, svg, TemplateResult, render */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony import */ var _modify_template_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modify-template.js */ \"./node_modules/lit-html/lib/modify-template.js\");\n/* harmony import */ var _render_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./render.js */ \"./node_modules/lit-html/lib/render.js\");\n/* harmony import */ var _template_factory_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./template-factory.js */ \"./node_modules/lit-html/lib/template-factory.js\");\n/* harmony import */ var _template_instance_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./template-instance.js */ \"./node_modules/lit-html/lib/template-instance.js\");\n/* harmony import */ var _template_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./template.js */ \"./node_modules/lit-html/lib/template.js\");\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lit-html.js */ \"./node_modules/lit-html/lit-html.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return _lit_html_js__WEBPACK_IMPORTED_MODULE_6__[\"html\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"svg\", function() { return _lit_html_js__WEBPACK_IMPORTED_MODULE_6__[\"svg\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TemplateResult\", function() { return _lit_html_js__WEBPACK_IMPORTED_MODULE_6__[\"TemplateResult\"]; });\n\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * Module to add shady DOM/shady CSS polyfill support to lit-html template\n * rendering. See the [[render]] method for details.\n *\n * @module shady-render\n * @preferred\n */\n/**\n * Do not remove this comment; it keeps typedoc from misplacing the module\n * docs.\n */\n\n\n\n\n\n\n\n// Get a key to lookup in `templateCaches`.\nconst getTemplateCacheKey = (type, scopeName) => `${type}--${scopeName}`;\nlet compatibleShadyCSSVersion = true;\nif (typeof window.ShadyCSS === 'undefined') {\n compatibleShadyCSSVersion = false;\n}\nelse if (typeof window.ShadyCSS.prepareTemplateDom === 'undefined') {\n console.warn(`Incompatible ShadyCSS version detected. ` +\n `Please update to at least @webcomponents/webcomponentsjs@2.0.2 and ` +\n `@webcomponents/shadycss@1.3.1.`);\n compatibleShadyCSSVersion = false;\n}\n/**\n * Template factory which scopes template DOM using ShadyCSS.\n * @param scopeName {string}\n */\nconst shadyTemplateFactory = (scopeName) => (result) => {\n const cacheKey = getTemplateCacheKey(result.type, scopeName);\n let templateCache = _template_factory_js__WEBPACK_IMPORTED_MODULE_3__[\"templateCaches\"].get(cacheKey);\n if (templateCache === undefined) {\n templateCache = {\n stringsArray: new WeakMap(),\n keyString: new Map()\n };\n _template_factory_js__WEBPACK_IMPORTED_MODULE_3__[\"templateCaches\"].set(cacheKey, templateCache);\n }\n let template = templateCache.stringsArray.get(result.strings);\n if (template !== undefined) {\n return template;\n }\n const key = result.strings.join(_template_js__WEBPACK_IMPORTED_MODULE_5__[\"marker\"]);\n template = templateCache.keyString.get(key);\n if (template === undefined) {\n const element = result.getTemplateElement();\n if (compatibleShadyCSSVersion) {\n window.ShadyCSS.prepareTemplateDom(element, scopeName);\n }\n template = new _template_js__WEBPACK_IMPORTED_MODULE_5__[\"Template\"](result, element);\n templateCache.keyString.set(key, template);\n }\n templateCache.stringsArray.set(result.strings, template);\n return template;\n};\nconst TEMPLATE_TYPES = ['html', 'svg'];\n/**\n * Removes all style elements from Templates for the given scopeName.\n */\nconst removeStylesFromLitTemplates = (scopeName) => {\n TEMPLATE_TYPES.forEach((type) => {\n const templates = _template_factory_js__WEBPACK_IMPORTED_MODULE_3__[\"templateCaches\"].get(getTemplateCacheKey(type, scopeName));\n if (templates !== undefined) {\n templates.keyString.forEach((template) => {\n const { element: { content } } = template;\n // IE 11 doesn't support the iterable param Set constructor\n const styles = new Set();\n Array.from(content.querySelectorAll('style')).forEach((s) => {\n styles.add(s);\n });\n Object(_modify_template_js__WEBPACK_IMPORTED_MODULE_1__[\"removeNodesFromTemplate\"])(template, styles);\n });\n }\n });\n};\nconst shadyRenderSet = new Set();\n/**\n * For the given scope name, ensures that ShadyCSS style scoping is performed.\n * This is done just once per scope name so the fragment and template cannot\n * be modified.\n * (1) extracts styles from the rendered fragment and hands them to ShadyCSS\n * to be scoped and appended to the document\n * (2) removes style elements from all lit-html Templates for this scope name.\n *\n * Note, <style> elements can only be placed into templates for the\n * initial rendering of the scope. If <style> elements are included in templates\n * dynamically rendered to the scope (after the first scope render), they will\n * not be scoped and the <style> will be left in the template and rendered\n * output.\n */\nconst prepareTemplateStyles = (scopeName, renderedDOM, template) => {\n shadyRenderSet.add(scopeName);\n // If `renderedDOM` is stamped from a Template, then we need to edit that\n // Template's underlying template element. Otherwise, we create one here\n // to give to ShadyCSS, which still requires one while scoping.\n const templateElement = !!template ? template.element : document.createElement('template');\n // Move styles out of rendered DOM and store.\n const styles = renderedDOM.querySelectorAll('style');\n const { length } = styles;\n // If there are no styles, skip unnecessary work\n if (length === 0) {\n // Ensure prepareTemplateStyles is called to support adding\n // styles via `prepareAdoptedCssText` since that requires that\n // `prepareTemplateStyles` is called.\n //\n // ShadyCSS will only update styles containing @apply in the template\n // given to `prepareTemplateStyles`. If no lit Template was given,\n // ShadyCSS will not be able to update uses of @apply in any relevant\n // template. However, this is not a problem because we only create the\n // template for the purpose of supporting `prepareAdoptedCssText`,\n // which doesn't support @apply at all.\n window.ShadyCSS.prepareTemplateStyles(templateElement, scopeName);\n return;\n }\n const condensedStyle = document.createElement('style');\n // Collect styles into a single style. This helps us make sure ShadyCSS\n // manipulations will not prevent us from being able to fix up template\n // part indices.\n // NOTE: collecting styles is inefficient for browsers but ShadyCSS\n // currently does this anyway. When it does not, this should be changed.\n for (let i = 0; i < length; i++) {\n const style = styles[i];\n style.parentNode.removeChild(style);\n condensedStyle.textContent += style.textContent;\n }\n // Remove styles from nested templates in this scope.\n removeStylesFromLitTemplates(scopeName);\n // And then put the condensed style into the \"root\" template passed in as\n // `template`.\n const content = templateElement.content;\n if (!!template) {\n Object(_modify_template_js__WEBPACK_IMPORTED_MODULE_1__[\"insertNodeIntoTemplate\"])(template, condensedStyle, content.firstChild);\n }\n else {\n content.insertBefore(condensedStyle, content.firstChild);\n }\n // Note, it's important that ShadyCSS gets the template that `lit-html`\n // will actually render so that it can update the style inside when\n // needed (e.g. @apply native Shadow DOM case).\n window.ShadyCSS.prepareTemplateStyles(templateElement, scopeName);\n const style = content.querySelector('style');\n if (window.ShadyCSS.nativeShadow && style !== null) {\n // When in native Shadow DOM, ensure the style created by ShadyCSS is\n // included in initially rendered output (`renderedDOM`).\n renderedDOM.insertBefore(style.cloneNode(true), renderedDOM.firstChild);\n }\n else if (!!template) {\n // When no style is left in the template, parts will be broken as a\n // result. To fix this, we put back the style node ShadyCSS removed\n // and then tell lit to remove that node from the template.\n // There can be no style in the template in 2 cases (1) when Shady DOM\n // is in use, ShadyCSS removes all styles, (2) when native Shadow DOM\n // is in use ShadyCSS removes the style if it contains no content.\n // NOTE, ShadyCSS creates its own style so we can safely add/remove\n // `condensedStyle` here.\n content.insertBefore(condensedStyle, content.firstChild);\n const removes = new Set();\n removes.add(condensedStyle);\n Object(_modify_template_js__WEBPACK_IMPORTED_MODULE_1__[\"removeNodesFromTemplate\"])(template, removes);\n }\n};\n/**\n * Extension to the standard `render` method which supports rendering\n * to ShadowRoots when the ShadyDOM (https://github.com/webcomponents/shadydom)\n * and ShadyCSS (https://github.com/webcomponents/shadycss) polyfills are used\n * or when the webcomponentsjs\n * (https://github.com/webcomponents/webcomponentsjs) polyfill is used.\n *\n * Adds a `scopeName` option which is used to scope element DOM and stylesheets\n * when native ShadowDOM is unavailable. The `scopeName` will be added to\n * the class attribute of all rendered DOM. In addition, any style elements will\n * be automatically re-written with this `scopeName` selector and moved out\n * of the rendered DOM and into the document `<head>`.\n *\n * It is common to use this render method in conjunction with a custom element\n * which renders a shadowRoot. When this is done, typically the element's\n * `localName` should be used as the `scopeName`.\n *\n * In addition to DOM scoping, ShadyCSS also supports a basic shim for css\n * custom properties (needed only on older browsers like IE11) and a shim for\n * a deprecated feature called `@apply` that supports applying a set of css\n * custom properties to a given location.\n *\n * Usage considerations:\n *\n * * Part values in `<style>` elements are only applied the first time a given\n * `scopeName` renders. Subsequent changes to parts in style elements will have\n * no effect. Because of this, parts in style elements should only be used for\n * values that will never change, for example parts that set scope-wide theme\n * values or parts which render shared style elements.\n *\n * * Note, due to a limitation of the ShadyDOM polyfill, rendering in a\n * custom element's `constructor` is not supported. Instead rendering should\n * either done asynchronously, for example at microtask timing (for example\n * `Promise.resolve()`), or be deferred until the first time the element's\n * `connectedCallback` runs.\n *\n * Usage considerations when using shimmed custom properties or `@apply`:\n *\n * * Whenever any dynamic changes are made which affect\n * css custom properties, `ShadyCSS.styleElement(element)` must be called\n * to update the element. There are two cases when this is needed:\n * (1) the element is connected to a new parent, (2) a class is added to the\n * element that causes it to match different custom properties.\n * To address the first case when rendering a custom element, `styleElement`\n * should be called in the element's `connectedCallback`.\n *\n * * Shimmed custom properties may only be defined either for an entire\n * shadowRoot (for example, in a `:host` rule) or via a rule that directly\n * matches an element with a shadowRoot. In other words, instead of flowing from\n * parent to child as do native css custom properties, shimmed custom properties\n * flow only from shadowRoots to nested shadowRoots.\n *\n * * When using `@apply` mixing css shorthand property names with\n * non-shorthand names (for example `border` and `border-width`) is not\n * supported.\n */\nconst render = (result, container, options) => {\n if (!options || typeof options !== 'object' || !options.scopeName) {\n throw new Error('The `scopeName` option is required.');\n }\n const scopeName = options.scopeName;\n const hasRendered = _render_js__WEBPACK_IMPORTED_MODULE_2__[\"parts\"].has(container);\n const needsScoping = compatibleShadyCSSVersion &&\n container.nodeType === 11 /* Node.DOCUMENT_FRAGMENT_NODE */ &&\n !!container.host;\n // Handle first render to a scope specially...\n const firstScopeRender = needsScoping && !shadyRenderSet.has(scopeName);\n // On first scope render, render into a fragment; this cannot be a single\n // fragment that is reused since nested renders can occur synchronously.\n const renderContainer = firstScopeRender ? document.createDocumentFragment() : container;\n Object(_render_js__WEBPACK_IMPORTED_MODULE_2__[\"render\"])(result, renderContainer, Object.assign({ templateFactory: shadyTemplateFactory(scopeName) }, options));\n // When performing first scope render,\n // (1) We've rendered into a fragment so that there's a chance to\n // `prepareTemplateStyles` before sub-elements hit the DOM\n // (which might cause them to render based on a common pattern of\n // rendering in a custom element's `connectedCallback`);\n // (2) Scope the template with ShadyCSS one time only for this scope.\n // (3) Render the fragment into the container and make sure the\n // container knows its `part` is the one we just rendered. This ensures\n // DOM will be re-used on subsequent renders.\n if (firstScopeRender) {\n const part = _render_js__WEBPACK_IMPORTED_MODULE_2__[\"parts\"].get(renderContainer);\n _render_js__WEBPACK_IMPORTED_MODULE_2__[\"parts\"].delete(renderContainer);\n // ShadyCSS might have style sheets (e.g. from `prepareAdoptedCssText`)\n // that should apply to `renderContainer` even if the rendered value is\n // not a TemplateInstance. However, it will only insert scoped styles\n // into the document if `prepareTemplateStyles` has already been called\n // for the given scope name.\n const template = part.value instanceof _template_instance_js__WEBPACK_IMPORTED_MODULE_4__[\"TemplateInstance\"] ?\n part.value.template :\n undefined;\n prepareTemplateStyles(scopeName, renderContainer, template);\n Object(_dom_js__WEBPACK_IMPORTED_MODULE_0__[\"removeNodes\"])(container, container.firstChild);\n container.appendChild(renderContainer);\n _render_js__WEBPACK_IMPORTED_MODULE_2__[\"parts\"].set(container, part);\n }\n // After elements have hit the DOM, update styling if this is the\n // initial render to this container.\n // This is needed whenever dynamic changes are made so it would be\n // safest to do every render; however, this would regress performance\n // so we leave it up to the user to call `ShadyCSS.styleElement`\n // for dynamic changes.\n if (!hasRendered && needsScoping) {\n window.ShadyCSS.styleElement(container.host);\n }\n};\n//# sourceMappingURL=shady-render.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/shady-render.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/template-factory.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/template-factory.js ***!
|
|
\*******************************************************/
|
|
/*! exports provided: templateFactory, templateCaches */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"templateFactory\", function() { return templateFactory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"templateCaches\", function() { return templateCaches; });\n/* harmony import */ var _template_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./template.js */ \"./node_modules/lit-html/lib/template.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * The default TemplateFactory which caches Templates keyed on\n * result.type and result.strings.\n */\nfunction templateFactory(result) {\n let templateCache = templateCaches.get(result.type);\n if (templateCache === undefined) {\n templateCache = {\n stringsArray: new WeakMap(),\n keyString: new Map()\n };\n templateCaches.set(result.type, templateCache);\n }\n let template = templateCache.stringsArray.get(result.strings);\n if (template !== undefined) {\n return template;\n }\n // If the TemplateStringsArray is new, generate a key from the strings\n // This key is shared between all templates with identical content\n const key = result.strings.join(_template_js__WEBPACK_IMPORTED_MODULE_0__[\"marker\"]);\n // Check if we already have a Template for this key\n template = templateCache.keyString.get(key);\n if (template === undefined) {\n // If we have not seen this key before, create a new Template\n template = new _template_js__WEBPACK_IMPORTED_MODULE_0__[\"Template\"](result, result.getTemplateElement());\n // Cache the Template for this key\n templateCache.keyString.set(key, template);\n }\n // Cache all future queries for this TemplateStringsArray\n templateCache.stringsArray.set(result.strings, template);\n return template;\n}\nconst templateCaches = new Map();\n//# sourceMappingURL=template-factory.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/template-factory.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/template-instance.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/template-instance.js ***!
|
|
\********************************************************/
|
|
/*! exports provided: TemplateInstance */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TemplateInstance\", function() { return TemplateInstance; });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony import */ var _template_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./template.js */ \"./node_modules/lit-html/lib/template.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\n\n\n/**\n * An instance of a `Template` that can be attached to the DOM and updated\n * with new values.\n */\nclass TemplateInstance {\n constructor(template, processor, options) {\n this.__parts = [];\n this.template = template;\n this.processor = processor;\n this.options = options;\n }\n update(values) {\n let i = 0;\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.setValue(values[i]);\n }\n i++;\n }\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.commit();\n }\n }\n }\n _clone() {\n // There are a number of steps in the lifecycle of a template instance's\n // DOM fragment:\n // 1. Clone - create the instance fragment\n // 2. Adopt - adopt into the main document\n // 3. Process - find part markers and create parts\n // 4. Upgrade - upgrade custom elements\n // 5. Update - set node, attribute, property, etc., values\n // 6. Connect - connect to the document. Optional and outside of this\n // method.\n //\n // We have a few constraints on the ordering of these steps:\n // * We need to upgrade before updating, so that property values will pass\n // through any property setters.\n // * We would like to process before upgrading so that we're sure that the\n // cloned fragment is inert and not disturbed by self-modifying DOM.\n // * We want custom elements to upgrade even in disconnected fragments.\n //\n // Given these constraints, with full custom elements support we would\n // prefer the order: Clone, Process, Adopt, Upgrade, Update, Connect\n //\n // But Safari does not implement CustomElementRegistry#upgrade, so we\n // can not implement that order and still have upgrade-before-update and\n // upgrade disconnected fragments. So we instead sacrifice the\n // process-before-upgrade constraint, since in Custom Elements v1 elements\n // must not modify their light DOM in the constructor. We still have issues\n // when co-existing with CEv0 elements like Polymer 1, and with polyfills\n // that don't strictly adhere to the no-modification rule because shadow\n // DOM, which may be created in the constructor, is emulated by being placed\n // in the light DOM.\n //\n // The resulting order is on native is: Clone, Adopt, Upgrade, Process,\n // Update, Connect. document.importNode() performs Clone, Adopt, and Upgrade\n // in one step.\n //\n // The Custom Elements v1 polyfill supports upgrade(), so the order when\n // polyfilled is the more ideal: Clone, Process, Adopt, Upgrade, Update,\n // Connect.\n const fragment = _dom_js__WEBPACK_IMPORTED_MODULE_0__[\"isCEPolyfill\"] ?\n this.template.element.content.cloneNode(true) :\n document.importNode(this.template.element.content, true);\n const stack = [];\n const parts = this.template.parts;\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(fragment, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n let partIndex = 0;\n let nodeIndex = 0;\n let part;\n let node = walker.nextNode();\n // Loop through all the nodes and parts of a template\n while (partIndex < parts.length) {\n part = parts[partIndex];\n if (!Object(_template_js__WEBPACK_IMPORTED_MODULE_1__[\"isTemplatePartActive\"])(part)) {\n this.__parts.push(undefined);\n partIndex++;\n continue;\n }\n // Progress the tree walker until we find our next part's node.\n // Note that multiple parts may share the same node (attribute parts\n // on a single element), so this loop may not run at all.\n while (nodeIndex < part.index) {\n nodeIndex++;\n if (node.nodeName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n if ((node = walker.nextNode()) === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n node = walker.nextNode();\n }\n }\n // We've arrived at our part's node.\n if (part.type === 'node') {\n const part = this.processor.handleTextExpression(this.options);\n part.insertAfterNode(node.previousSibling);\n this.__parts.push(part);\n }\n else {\n this.__parts.push(...this.processor.handleAttributeExpressions(node, part.name, part.strings, this.options));\n }\n partIndex++;\n }\n if (_dom_js__WEBPACK_IMPORTED_MODULE_0__[\"isCEPolyfill\"]) {\n document.adoptNode(fragment);\n customElements.upgrade(fragment);\n }\n return fragment;\n }\n}\n//# sourceMappingURL=template-instance.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/template-instance.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/template-result.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/lit-html/lib/template-result.js ***!
|
|
\******************************************************/
|
|
/*! exports provided: TemplateResult, SVGTemplateResult */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TemplateResult\", function() { return TemplateResult; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGTemplateResult\", function() { return SVGTemplateResult; });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony import */ var _template_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./template.js */ \"./node_modules/lit-html/lib/template.js\");\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\n\n\nconst commentMarker = ` ${_template_js__WEBPACK_IMPORTED_MODULE_1__[\"marker\"]} `;\n/**\n * The return type of `html`, which holds a Template and the values from\n * interpolated expressions.\n */\nclass TemplateResult {\n constructor(strings, values, type, processor) {\n this.strings = strings;\n this.values = values;\n this.type = type;\n this.processor = processor;\n }\n /**\n * Returns a string of HTML used to create a `<template>` element.\n */\n getHTML() {\n const l = this.strings.length - 1;\n let html = '';\n let isCommentBinding = false;\n for (let i = 0; i < l; i++) {\n const s = this.strings[i];\n // For each binding we want to determine the kind of marker to insert\n // into the template source before it's parsed by the browser's HTML\n // parser. The marker type is based on whether the expression is in an\n // attribute, text, or comment position.\n // * For node-position bindings we insert a comment with the marker\n // sentinel as its text content, like <!--{{lit-guid}}-->.\n // * For attribute bindings we insert just the marker sentinel for the\n // first binding, so that we support unquoted attribute bindings.\n // Subsequent bindings can use a comment marker because multi-binding\n // attributes must be quoted.\n // * For comment bindings we insert just the marker sentinel so we don't\n // close the comment.\n //\n // The following code scans the template source, but is *not* an HTML\n // parser. We don't need to track the tree structure of the HTML, only\n // whether a binding is inside a comment, and if not, if it appears to be\n // the first binding in an attribute.\n const commentOpen = s.lastIndexOf('<!--');\n // We're in comment position if we have a comment open with no following\n // comment close. Because <-- can appear in an attribute value there can\n // be false positives.\n isCommentBinding = (commentOpen > -1 || isCommentBinding) &&\n s.indexOf('-->', commentOpen + 1) === -1;\n // Check to see if we have an attribute-like sequence preceding the\n // expression. This can match \"name=value\" like structures in text,\n // comments, and attribute values, so there can be false-positives.\n const attributeMatch = _template_js__WEBPACK_IMPORTED_MODULE_1__[\"lastAttributeNameRegex\"].exec(s);\n if (attributeMatch === null) {\n // We're only in this branch if we don't have a attribute-like\n // preceding sequence. For comments, this guards against unusual\n // attribute values like <div foo=\"<!--${'bar'}\">. Cases like\n // <!-- foo=${'bar'}--> are handled correctly in the attribute branch\n // below.\n html += s + (isCommentBinding ? commentMarker : _template_js__WEBPACK_IMPORTED_MODULE_1__[\"nodeMarker\"]);\n }\n else {\n // For attributes we use just a marker sentinel, and also append a\n // $lit$ suffix to the name to opt-out of attribute-specific parsing\n // that IE and Edge do for style and certain SVG attributes.\n html += s.substr(0, attributeMatch.index) + attributeMatch[1] +\n attributeMatch[2] + _template_js__WEBPACK_IMPORTED_MODULE_1__[\"boundAttributeSuffix\"] + attributeMatch[3] +\n _template_js__WEBPACK_IMPORTED_MODULE_1__[\"marker\"];\n }\n }\n html += this.strings[l];\n return html;\n }\n getTemplateElement() {\n const template = document.createElement('template');\n template.innerHTML = this.getHTML();\n return template;\n }\n}\n/**\n * A TemplateResult for SVG fragments.\n *\n * This class wraps HTML in an `<svg>` tag in order to parse its contents in the\n * SVG namespace, then modifies the template to remove the `<svg>` tag so that\n * clones only container the original fragment.\n */\nclass SVGTemplateResult extends TemplateResult {\n getHTML() {\n return `<svg>${super.getHTML()}</svg>`;\n }\n getTemplateElement() {\n const template = super.getTemplateElement();\n const content = template.content;\n const svgElement = content.firstChild;\n content.removeChild(svgElement);\n Object(_dom_js__WEBPACK_IMPORTED_MODULE_0__[\"reparentNodes\"])(content, svgElement.firstChild);\n return template;\n }\n}\n//# sourceMappingURL=template-result.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/template-result.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lib/template.js":
|
|
/*!***********************************************!*\
|
|
!*** ./node_modules/lit-html/lib/template.js ***!
|
|
\***********************************************/
|
|
/*! exports provided: marker, nodeMarker, markerRegex, boundAttributeSuffix, Template, isTemplatePartActive, createMarker, lastAttributeNameRegex */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"marker\", function() { return marker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nodeMarker\", function() { return nodeMarker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"markerRegex\", function() { return markerRegex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundAttributeSuffix\", function() { return boundAttributeSuffix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Template\", function() { return Template; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTemplatePartActive\", function() { return isTemplatePartActive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createMarker\", function() { return createMarker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lastAttributeNameRegex\", function() { return lastAttributeNameRegex; });\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * An expression marker with embedded unique key to avoid collision with\n * possible text in templates.\n */\nconst marker = `{{lit-${String(Math.random()).slice(2)}}}`;\n/**\n * An expression marker used text-positions, multi-binding attributes, and\n * attributes with markup-like text values.\n */\nconst nodeMarker = `<!--${marker}-->`;\nconst markerRegex = new RegExp(`${marker}|${nodeMarker}`);\n/**\n * Suffix appended to all bound attribute names.\n */\nconst boundAttributeSuffix = '$lit$';\n/**\n * An updatable Template that tracks the location of dynamic parts.\n */\nclass Template {\n constructor(result, element) {\n this.parts = [];\n this.element = element;\n const nodesToRemove = [];\n const stack = [];\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(element.content, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n // Keeps track of the last index associated with a part. We try to delete\n // unnecessary nodes, but we never want to associate two different parts\n // to the same index. They must have a constant node between.\n let lastPartIndex = 0;\n let index = -1;\n let partIndex = 0;\n const { strings, values: { length } } = result;\n while (partIndex < length) {\n const node = walker.nextNode();\n if (node === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n continue;\n }\n index++;\n if (node.nodeType === 1 /* Node.ELEMENT_NODE */) {\n if (node.hasAttributes()) {\n const attributes = node.attributes;\n const { length } = attributes;\n // Per\n // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap,\n // attributes are not guaranteed to be returned in document order.\n // In particular, Edge/IE can return them out of order, so we cannot\n // assume a correspondence between part index and attribute index.\n let count = 0;\n for (let i = 0; i < length; i++) {\n if (endsWith(attributes[i].name, boundAttributeSuffix)) {\n count++;\n }\n }\n while (count-- > 0) {\n // Get the template literal section leading up to the first\n // expression in this attribute\n const stringForPart = strings[partIndex];\n // Find the attribute name\n const name = lastAttributeNameRegex.exec(stringForPart)[2];\n // Find the corresponding attribute\n // All bound attributes have had a suffix added in\n // TemplateResult#getHTML to opt out of special attribute\n // handling. To look up the attribute value we also need to add\n // the suffix.\n const attributeLookupName = name.toLowerCase() + boundAttributeSuffix;\n const attributeValue = node.getAttribute(attributeLookupName);\n node.removeAttribute(attributeLookupName);\n const statics = attributeValue.split(markerRegex);\n this.parts.push({ type: 'attribute', index, name, strings: statics });\n partIndex += statics.length - 1;\n }\n }\n if (node.tagName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n }\n else if (node.nodeType === 3 /* Node.TEXT_NODE */) {\n const data = node.data;\n if (data.indexOf(marker) >= 0) {\n const parent = node.parentNode;\n const strings = data.split(markerRegex);\n const lastIndex = strings.length - 1;\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n for (let i = 0; i < lastIndex; i++) {\n let insert;\n let s = strings[i];\n if (s === '') {\n insert = createMarker();\n }\n else {\n const match = lastAttributeNameRegex.exec(s);\n if (match !== null && endsWith(match[2], boundAttributeSuffix)) {\n s = s.slice(0, match.index) + match[1] +\n match[2].slice(0, -boundAttributeSuffix.length) + match[3];\n }\n insert = document.createTextNode(s);\n }\n parent.insertBefore(insert, node);\n this.parts.push({ type: 'node', index: ++index });\n }\n // If there's no text, we must insert a comment to mark our place.\n // Else, we can trust it will stick around after cloning.\n if (strings[lastIndex] === '') {\n parent.insertBefore(createMarker(), node);\n nodesToRemove.push(node);\n }\n else {\n node.data = strings[lastIndex];\n }\n // We have a part for each match found\n partIndex += lastIndex;\n }\n }\n else if (node.nodeType === 8 /* Node.COMMENT_NODE */) {\n if (node.data === marker) {\n const parent = node.parentNode;\n // Add a new marker node to be the startNode of the Part if any of\n // the following are true:\n // * We don't have a previousSibling\n // * The previousSibling is already the start of a previous part\n if (node.previousSibling === null || index === lastPartIndex) {\n index++;\n parent.insertBefore(createMarker(), node);\n }\n lastPartIndex = index;\n this.parts.push({ type: 'node', index });\n // If we don't have a nextSibling, keep this node so we have an end.\n // Else, we can remove it to save future costs.\n if (node.nextSibling === null) {\n node.data = '';\n }\n else {\n nodesToRemove.push(node);\n index--;\n }\n partIndex++;\n }\n else {\n let i = -1;\n while ((i = node.data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n // TODO (justinfagnani): consider whether it's even worth it to\n // make bindings in comments work\n this.parts.push({ type: 'node', index: -1 });\n partIndex++;\n }\n }\n }\n }\n // Remove text binding nodes after the walk to not disturb the TreeWalker\n for (const n of nodesToRemove) {\n n.parentNode.removeChild(n);\n }\n }\n}\nconst endsWith = (str, suffix) => {\n const index = str.length - suffix.length;\n return index >= 0 && str.slice(index) === suffix;\n};\nconst isTemplatePartActive = (part) => part.index !== -1;\n// Allows `document.createComment('')` to be renamed for a\n// small manual size-savings.\nconst createMarker = () => document.createComment('');\n/**\n * This regex extracts the attribute name preceding an attribute-position\n * expression. It does this by matching the syntax allowed for attributes\n * against the string literal directly preceding the expression, assuming that\n * the expression is in an attribute-value position.\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\x09\\x0a\\x0c\\x0d\" are HTML space characters:\n * https://www.w3.org/TR/html5/infrastructure.html#space-characters\n *\n * \"\\0-\\x1F\\x7F-\\x9F\" are Unicode control characters, which includes every\n * space character except \" \".\n *\n * So an attribute is:\n * * The name: any character except a control character, space character, ('),\n * (\"), \">\", \"=\", or \"/\"\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nconst lastAttributeNameRegex = \n// eslint-disable-next-line no-control-regex\n/([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n//# sourceMappingURL=template.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lib/template.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/lit-html/lit-html.js":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/lit-html/lit-html.js ***!
|
|
\*******************************************/
|
|
/*! exports provided: DefaultTemplateProcessor, defaultTemplateProcessor, directive, isDirective, removeNodes, reparentNodes, noChange, nothing, AttributeCommitter, AttributePart, BooleanAttributePart, EventPart, isIterable, isPrimitive, NodePart, PropertyCommitter, PropertyPart, parts, render, templateCaches, templateFactory, TemplateInstance, SVGTemplateResult, TemplateResult, createMarker, isTemplatePartActive, Template, html, svg */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"svg\", function() { return svg; });\n/* harmony import */ var _lib_default_template_processor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/default-template-processor.js */ \"./node_modules/lit-html/lib/default-template-processor.js\");\n/* harmony import */ var _lib_template_result_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/template-result.js */ \"./node_modules/lit-html/lib/template-result.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DefaultTemplateProcessor\", function() { return _lib_default_template_processor_js__WEBPACK_IMPORTED_MODULE_0__[\"DefaultTemplateProcessor\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultTemplateProcessor\", function() { return _lib_default_template_processor_js__WEBPACK_IMPORTED_MODULE_0__[\"defaultTemplateProcessor\"]; });\n\n/* harmony import */ var _lib_directive_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/directive.js */ \"./node_modules/lit-html/lib/directive.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"directive\", function() { return _lib_directive_js__WEBPACK_IMPORTED_MODULE_2__[\"directive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return _lib_directive_js__WEBPACK_IMPORTED_MODULE_2__[\"isDirective\"]; });\n\n/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/dom.js */ \"./node_modules/lit-html/lib/dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeNodes\", function() { return _lib_dom_js__WEBPACK_IMPORTED_MODULE_3__[\"removeNodes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reparentNodes\", function() { return _lib_dom_js__WEBPACK_IMPORTED_MODULE_3__[\"reparentNodes\"]; });\n\n/* harmony import */ var _lib_part_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/part.js */ \"./node_modules/lit-html/lib/part.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"noChange\", function() { return _lib_part_js__WEBPACK_IMPORTED_MODULE_4__[\"noChange\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nothing\", function() { return _lib_part_js__WEBPACK_IMPORTED_MODULE_4__[\"nothing\"]; });\n\n/* harmony import */ var _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/parts.js */ \"./node_modules/lit-html/lib/parts.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AttributeCommitter\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"AttributeCommitter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AttributePart\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"AttributePart\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BooleanAttributePart\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"BooleanAttributePart\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EventPart\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"EventPart\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"isIterable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPrimitive\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"isPrimitive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NodePart\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"NodePart\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PropertyCommitter\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"PropertyCommitter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PropertyPart\", function() { return _lib_parts_js__WEBPACK_IMPORTED_MODULE_5__[\"PropertyPart\"]; });\n\n/* harmony import */ var _lib_render_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/render.js */ \"./node_modules/lit-html/lib/render.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parts\", function() { return _lib_render_js__WEBPACK_IMPORTED_MODULE_6__[\"parts\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _lib_render_js__WEBPACK_IMPORTED_MODULE_6__[\"render\"]; });\n\n/* harmony import */ var _lib_template_factory_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lib/template-factory.js */ \"./node_modules/lit-html/lib/template-factory.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"templateCaches\", function() { return _lib_template_factory_js__WEBPACK_IMPORTED_MODULE_7__[\"templateCaches\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"templateFactory\", function() { return _lib_template_factory_js__WEBPACK_IMPORTED_MODULE_7__[\"templateFactory\"]; });\n\n/* harmony import */ var _lib_template_instance_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./lib/template-instance.js */ \"./node_modules/lit-html/lib/template-instance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TemplateInstance\", function() { return _lib_template_instance_js__WEBPACK_IMPORTED_MODULE_8__[\"TemplateInstance\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SVGTemplateResult\", function() { return _lib_template_result_js__WEBPACK_IMPORTED_MODULE_1__[\"SVGTemplateResult\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TemplateResult\", function() { return _lib_template_result_js__WEBPACK_IMPORTED_MODULE_1__[\"TemplateResult\"]; });\n\n/* harmony import */ var _lib_template_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/template.js */ \"./node_modules/lit-html/lib/template.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createMarker\", function() { return _lib_template_js__WEBPACK_IMPORTED_MODULE_9__[\"createMarker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTemplatePartActive\", function() { return _lib_template_js__WEBPACK_IMPORTED_MODULE_9__[\"isTemplatePartActive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Template\", function() { return _lib_template_js__WEBPACK_IMPORTED_MODULE_9__[\"Template\"]; });\n\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n *\n * Main lit-html module.\n *\n * Main exports:\n *\n * - [[html]]\n * - [[svg]]\n * - [[render]]\n *\n * @module lit-html\n * @preferred\n */\n/**\n * Do not remove this comment; it keeps typedoc from misplacing the module\n * docs.\n */\n\n\n\n\n// TODO(justinfagnani): remove line when we get NodePart moving methods\n\n\n\n\n\n\n\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n// TODO(justinfagnani): inject version number at build time\nif (typeof window !== 'undefined') {\n (window['litHtmlVersions'] || (window['litHtmlVersions'] = [])).push('1.2.1');\n}\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n */\nconst html = (strings, ...values) => new _lib_template_result_js__WEBPACK_IMPORTED_MODULE_1__[\"TemplateResult\"](strings, values, 'html', _lib_default_template_processor_js__WEBPACK_IMPORTED_MODULE_0__[\"defaultTemplateProcessor\"]);\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n */\nconst svg = (strings, ...values) => new _lib_template_result_js__WEBPACK_IMPORTED_MODULE_1__[\"SVGTemplateResult\"](strings, values, 'svg', _lib_default_template_processor_js__WEBPACK_IMPORTED_MODULE_0__[\"defaultTemplateProcessor\"]);\n//# sourceMappingURL=lit-html.js.map\n\n//# sourceURL=webpack:///./node_modules/lit-html/lit-html.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/Lexer.js":
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/marked/src/Lexer.js ***!
|
|
\******************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("const Tokenizer = __webpack_require__(/*! ./Tokenizer.js */ \"./node_modules/marked/src/Tokenizer.js\");\nconst { defaults } = __webpack_require__(/*! ./defaults.js */ \"./node_modules/marked/src/defaults.js\");\nconst { block, inline } = __webpack_require__(/*! ./rules.js */ \"./node_modules/marked/src/rules.js\");\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '',\n i,\n ch;\n\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n this.blockTokens(src, this.tokens, true);\n\n this.inline(this.tokens);\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = [], top = true) {\n src = src.replace(/^ +$/gm, '');\n let token, i, l;\n\n while (src) {\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.type) {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // table no leading pipe (gfm)\n if (token = this.tokenizer.nptable(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.blockTokens(token.text, [], top);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n l = token.items.length;\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n if (top && (token = this.tokenizer.paragraph(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n\n inline(tokens) {\n let i,\n j,\n k,\n l2,\n row,\n token;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading': {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n case 'table': {\n token.tokens = {\n header: [],\n cells: []\n };\n\n // header\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n }\n\n // cells\n l2 = token.cells.length;\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n case 'blockquote': {\n this.inline(token.tokens);\n break;\n }\n case 'list': {\n l2 = token.items.length;\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n break;\n }\n default: {\n // do nothing\n }\n }\n }\n\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = [], inLink = false, inRawBlock = false) {\n let token;\n\n while (src) {\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n tokens.push(token);\n continue;\n }\n\n // strong\n if (token = this.tokenizer.strong(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n }\n\n // em\n if (token = this.tokenizer.em(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/Lexer.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/Parser.js":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/marked/src/Parser.js ***!
|
|
\*******************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("const Renderer = __webpack_require__(/*! ./Renderer.js */ \"./node_modules/marked/src/Renderer.js\");\nconst TextRenderer = __webpack_require__(/*! ./TextRenderer.js */ \"./node_modules/marked/src/TextRenderer.js\");\nconst Slugger = __webpack_require__(/*! ./Slugger.js */ \"./node_modules/marked/src/Slugger.js\");\nconst { defaults } = __webpack_require__(/*! ./defaults.js */ \"./node_modules/marked/src/defaults.js\");\nconst {\n unescape\n} = __webpack_require__(/*! ./helpers.js */ \"./node_modules/marked/src/helpers.js\");\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.tokens.header[j]),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.cells.length;\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k]),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens[0].type === 'text') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/Parser.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/Renderer.js":
|
|
/*!*********************************************!*\
|
|
!*** ./node_modules/marked/src/Renderer.js ***!
|
|
\*********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("const { defaults } = __webpack_require__(/*! ./defaults.js */ \"./node_modules/marked/src/defaults.js\");\nconst {\n cleanUrl,\n escape\n} = __webpack_require__(/*! ./helpers.js */ \"./node_modules/marked/src/helpers.js\");\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n blockquote(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n }\n\n html(html) {\n return html;\n }\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + slugger.slug(raw)\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n }\n // ignore IDs\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n }\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n\n listitem(text) {\n return '<li>' + text + '</li>\\n';\n }\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n\n paragraph(text) {\n return '<p>' + text + '</p>\\n';\n }\n\n table(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n\n tablerow(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n }\n\n // span level renderer\n strong(text) {\n return '<strong>' + text + '</strong>';\n }\n\n em(text) {\n return '<em>' + text + '</em>';\n }\n\n codespan(text) {\n return '<code>' + text + '</code>';\n }\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n\n del(text) {\n return '<del>' + text + '</del>';\n }\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/Renderer.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/Slugger.js":
|
|
/*!********************************************!*\
|
|
!*** ./node_modules/marked/src/Slugger.js ***!
|
|
\********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/Slugger.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/TextRenderer.js":
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/marked/src/TextRenderer.js ***!
|
|
\*************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/TextRenderer.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/Tokenizer.js":
|
|
/*!**********************************************!*\
|
|
!*** ./node_modules/marked/src/Tokenizer.js ***!
|
|
\**********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("const { defaults } = __webpack_require__(/*! ./defaults.js */ \"./node_modules/marked/src/defaults.js\");\nconst {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} = __webpack_require__(/*! ./helpers.js */ \"./node_modules/marked/src/helpers.js\");\n\nfunction outputLink(cap, link, raw) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw,\n href,\n title,\n text: cap[1]\n };\n } else {\n return {\n type: 'image',\n raw,\n text: escape(cap[1]),\n href,\n title\n };\n }\n}\n\n/**\n * Tokenizer\n */\nmodule.exports = class Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n return { raw: '\\n' };\n }\n }\n\n code(src, tokens) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n tokens.pop();\n lastToken.text += '\\n' + cap[0].trimRight();\n lastToken.raw += '\\n' + cap[0];\n return lastToken;\n } else {\n const text = cap[0].replace(/^ {4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n return {\n type: 'code',\n raw: cap[0],\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: cap[2]\n };\n }\n }\n\n nptable(src) {\n const cap = this.rules.block.nptable.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *> ?/gm, '');\n\n return {\n type: 'blockquote',\n raw: cap[0],\n text\n };\n }\n }\n\n list(src) {\n const cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw = cap[0];\n const bull = cap[2];\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw,\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false,\n items: []\n };\n\n // Get each top-level item.\n const itemMatch = cap[0].match(this.rules.block.item);\n\n let next = false,\n item,\n space,\n b,\n addBack,\n loose,\n istask,\n ischecked;\n\n const l = itemMatch.length;\n for (let i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item;\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = this.rules.block.bullet.exec(itemMatch[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n addBack = itemMatch.slice(i + 1).join('\\n');\n list.raw = list.raw.substring(0, list.raw.length - addBack.length);\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n list.items.push({\n raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n return {\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n };\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n };\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src, inLink, inRawBlock) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!inLink && /^<a /i.test(cap[0])) {\n inLink = true;\n } else if (inLink && /^<\\/a>/i.test(cap[0])) {\n inLink = false;\n }\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink,\n inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n const token = outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n return token;\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link || !link.href) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n const token = outputLink(cap, link, cap[0]);\n return token;\n }\n }\n\n strong(src) {\n const cap = this.rules.inline.strong.exec(src);\n if (cap) {\n return {\n type: 'strong',\n raw: cap[0],\n text: cap[4] || cap[3] || cap[2] || cap[1]\n };\n }\n }\n\n em(src) {\n const cap = this.rules.inline.em.exec(src);\n if (cap) {\n return {\n type: 'em',\n raw: cap[0],\n text: cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]\n };\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n return {\n type: 'codespan',\n raw: cap[0],\n text: escape(cap[2].trim(), true)\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[1]\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, inRawBlock, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/Tokenizer.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/defaults.js":
|
|
/*!*********************************************!*\
|
|
!*** ./node_modules/marked/src/defaults.js ***!
|
|
\*********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/defaults.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/helpers.js":
|
|
/*!********************************************!*\
|
|
!*** ./node_modules/marked/src/helpers.js ***!
|
|
\********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports) {
|
|
|
|
eval("/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/helpers.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/marked.js":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/marked/src/marked.js ***!
|
|
\*******************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("const Lexer = __webpack_require__(/*! ./Lexer.js */ \"./node_modules/marked/src/Lexer.js\");\nconst Parser = __webpack_require__(/*! ./Parser.js */ \"./node_modules/marked/src/Parser.js\");\nconst Tokenizer = __webpack_require__(/*! ./Tokenizer.js */ \"./node_modules/marked/src/Tokenizer.js\");\nconst Renderer = __webpack_require__(/*! ./Renderer.js */ \"./node_modules/marked/src/Renderer.js\");\nconst TextRenderer = __webpack_require__(/*! ./TextRenderer.js */ \"./node_modules/marked/src/TextRenderer.js\");\nconst Slugger = __webpack_require__(/*! ./Slugger.js */ \"./node_modules/marked/src/Slugger.js\");\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = __webpack_require__(/*! ./helpers.js */ \"./node_modules/marked/src/helpers.js\");\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = __webpack_require__(/*! ./defaults.js */ \"./node_modules/marked/src/defaults.js\");\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(extension) {\n const opts = merge({}, extension);\n if (extension.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in extension.renderer) {\n const prevRenderer = renderer[prop];\n renderer[prop] = (...args) => {\n let ret = extension.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (extension.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in extension.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n tokenizer[prop] = (...args) => {\n let ret = extension.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n marked.setOptions(opts);\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.Tokenizer = Tokenizer;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/marked.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/marked/src/rules.js":
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/marked/src/rules.js ***!
|
|
\******************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("const {\n noopTest,\n edit,\n merge\n} = __webpack_require__(/*! ./helpers.js */ \"./node_modules/marked/src/helpers.js\");\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?>\\\\n*' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\\\\n*' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|</(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?-->/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' *([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)', // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' *\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock.gfm.nptable = edit(block.gfm.nptable)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^_([^\\s_<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s*<\\[])\\*(?!\\*)|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\[\\*])\\*(?![\\]`punctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*]|\\b_|$)|[^ ](?= {2,}\\n))|(?= {2,}\\n))/\n};\n\n// list of punctuation marks from common mark spec\n// without ` and ] to workaround Rule 17 (inline code blocks/links)\ninline._punctuation = '!\"#$%&\\'()*+\\\\-./:;<=>?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*~]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))|(?= {2,}\\n|[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))/\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n});\n\nmodule.exports = {\n block,\n inline\n};\n\n\n//# sourceURL=webpack:///./node_modules/marked/src/rules.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/pretty-bytes/index.js":
|
|
/*!********************************************!*\
|
|
!*** ./node_modules/pretty-bytes/index.js ***!
|
|
\********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("\n\nconst BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB'\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit'\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale) => {\n\tlet result = number;\n\tif (typeof locale === 'string') {\n\t\tresult = number.toLocaleString(locale);\n\t} else if (locale === true) {\n\t\tresult = number.toLocaleString();\n\t}\n\n\treturn result;\n};\n\nmodule.exports = (number, options) => {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = Object.assign({bits: false}, options);\n\tconst UNITS = options.bits ? BIT_UNITS : BYTE_UNITS;\n\n\tif (options.signed && number === 0) {\n\t\treturn ' 0 ' + UNITS[0];\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale);\n\t\treturn prefix + numberString + ' ' + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(Math.log10(number) / 3), UNITS.length - 1);\n\t// eslint-disable-next-line unicorn/prefer-exponentiation-operator\n\tnumber = Number((number / Math.pow(1000, exponent)).toPrecision(3));\n\tconst numberString = toLocaleString(number, options.locale);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + ' ' + unit;\n};\n\n\n//# sourceURL=webpack:///./node_modules/pretty-bytes/index.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/register-service-worker/index.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/register-service-worker/index.js ***!
|
|
\*******************************************************/
|
|
/*! exports provided: register, unregister */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregister\", function() { return unregister; });\n// Register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\nvar isLocalhost = function () { return Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n); }\n\nvar waitWindowLoad\n// https://github.com/yyx990803/register-service-worker/pull/33#discussion_r394181861\nif (typeof window !== 'undefined') {\n // Typically, a browser that supports `serviceWorker` should also have supported\n // `Promise`. But as this package can be used in environments without service\n // worker support (in that case it would do nothing), there's a chance that\n // `Promise` does not exist. So we must check for its existence first.\n if (typeof Promise !== 'undefined') {\n waitWindowLoad = new Promise(function (resolve) { return window.addEventListener('load', resolve); })\n } else {\n waitWindowLoad = { then: function (cb) { return window.addEventListener('load', cb); } }\n }\n}\n\nfunction register (swUrl, hooks) {\n if ( hooks === void 0 ) hooks = {};\n\n var registrationOptions = hooks.registrationOptions; if ( registrationOptions === void 0 ) registrationOptions = {};\n delete hooks.registrationOptions\n\n var emit = function (hook) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n if (hooks && hooks[hook]) {\n hooks[hook].apply(hooks, args)\n }\n }\n\n if ('serviceWorker' in navigator) {\n waitWindowLoad.then(function () {\n if (isLocalhost()) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n })\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n })\n }\n })\n }\n}\n\nfunction handleError (emit, error) {\n if (!navigator.onLine) {\n emit('offline')\n }\n emit('error', error)\n}\n\nfunction registerValidSW (swUrl, emit, registrationOptions) {\n navigator.serviceWorker\n .register(swUrl, registrationOptions)\n .then(function (registration) {\n emit('registered', registration)\n if (registration.waiting) {\n emit('updated', registration)\n return\n }\n registration.onupdatefound = function () {\n emit('updatefound', registration)\n var installingWorker = registration.installing\n installingWorker.onstatechange = function () {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n emit('updated', registration)\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n emit('cached', registration)\n }\n }\n }\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction checkValidServiceWorker (swUrl, emit, registrationOptions) {\n // Check if the service worker can be found.\n fetch(swUrl)\n .then(function (response) {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404) {\n // No service worker found.\n emit('error', new Error((\"Service worker not found at \" + swUrl)))\n unregister()\n } else if (response.headers.get('content-type').indexOf('javascript') === -1) {\n emit('error', new Error(\n \"Expected \" + swUrl + \" to have javascript content-type, \" +\n \"but received \" + (response.headers.get('content-type'))))\n unregister()\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, emit, registrationOptions)\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(function (registration) {\n registration.unregister()\n })\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/register-service-worker/index.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/split.js/dist/split.es.js":
|
|
/*!************************************************!*\
|
|
!*** ./node_modules/split.js/dist/split.es.js ***!
|
|
\************************************************/
|
|
/*! exports provided: default */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n// The programming goals of Split.js are to deliver readable, understandable and\n// maintainable code, while at the same time manually optimizing for tiny minified file size,\n// browser compatibility without additional requirements\n// and very few assumptions about the user's page layout.\nvar global = typeof window !== 'undefined' ? window : null;\nvar ssr = global === null;\nvar document = !ssr ? global.document : undefined;\n\n// Save a couple long function names that are used frequently.\n// This optimization saves around 400 bytes.\nvar addEventListener = 'addEventListener';\nvar removeEventListener = 'removeEventListener';\nvar getBoundingClientRect = 'getBoundingClientRect';\nvar gutterStartDragging = '_a';\nvar aGutterSize = '_b';\nvar bGutterSize = '_c';\nvar HORIZONTAL = 'horizontal';\nvar NOOP = function () { return false; };\n\n// Helper function determines which prefixes of CSS calc we need.\n// We only need to do this once on startup, when this anonymous function is called.\n//\n// Tests -webkit, -moz and -o prefixes. Modified from StackOverflow:\n// http://stackoverflow.com/questions/16625140/js-feature-detection-to-detect-the-usage-of-webkit-calc-over-calc/16625167#16625167\nvar calc = ssr\n ? 'calc'\n : ((['', '-webkit-', '-moz-', '-o-']\n .filter(function (prefix) {\n var el = document.createElement('div');\n el.style.cssText = \"width:\" + prefix + \"calc(9px)\";\n\n return !!el.style.length\n })\n .shift()) + \"calc\");\n\n// Helper function checks if its argument is a string-like type\nvar isString = function (v) { return typeof v === 'string' || v instanceof String; };\n\n// Helper function allows elements and string selectors to be used\n// interchangeably. In either case an element is returned. This allows us to\n// do `Split([elem1, elem2])` as well as `Split(['#id1', '#id2'])`.\nvar elementOrSelector = function (el) {\n if (isString(el)) {\n var ele = document.querySelector(el);\n if (!ele) {\n throw new Error((\"Selector \" + el + \" did not match a DOM element\"))\n }\n return ele\n }\n\n return el\n};\n\n// Helper function gets a property from the properties object, with a default fallback\nvar getOption = function (options, propName, def) {\n var value = options[propName];\n if (value !== undefined) {\n return value\n }\n return def\n};\n\nvar getGutterSize = function (gutterSize, isFirst, isLast, gutterAlign) {\n if (isFirst) {\n if (gutterAlign === 'end') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n } else if (isLast) {\n if (gutterAlign === 'start') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n }\n\n return gutterSize\n};\n\n// Default options\nvar defaultGutterFn = function (i, gutterDirection) {\n var gut = document.createElement('div');\n gut.className = \"gutter gutter-\" + gutterDirection;\n return gut\n};\n\nvar defaultElementStyleFn = function (dim, size, gutSize) {\n var style = {};\n\n if (!isString(size)) {\n style[dim] = calc + \"(\" + size + \"% - \" + gutSize + \"px)\";\n } else {\n style[dim] = size;\n }\n\n return style\n};\n\nvar defaultGutterStyleFn = function (dim, gutSize) {\n var obj;\n\n return (( obj = {}, obj[dim] = (gutSize + \"px\"), obj ));\n};\n\n// The main function to initialize a split. Split.js thinks about each pair\n// of elements as an independant pair. Dragging the gutter between two elements\n// only changes the dimensions of elements in that pair. This is key to understanding\n// how the following functions operate, since each function is bound to a pair.\n//\n// A pair object is shaped like this:\n//\n// {\n// a: DOM element,\n// b: DOM element,\n// aMin: Number,\n// bMin: Number,\n// dragging: Boolean,\n// parent: DOM element,\n// direction: 'horizontal' | 'vertical'\n// }\n//\n// The basic sequence:\n//\n// 1. Set defaults to something sane. `options` doesn't have to be passed at all.\n// 2. Initialize a bunch of strings based on the direction we're splitting.\n// A lot of the behavior in the rest of the library is paramatized down to\n// rely on CSS strings and classes.\n// 3. Define the dragging helper functions, and a few helpers to go with them.\n// 4. Loop through the elements while pairing them off. Every pair gets an\n// `pair` object and a gutter.\n// 5. Actually size the pair elements, insert gutters and attach event listeners.\nvar Split = function (idsOption, options) {\n if ( options === void 0 ) options = {};\n\n if (ssr) { return {} }\n\n var ids = idsOption;\n var dimension;\n var clientAxis;\n var position;\n var positionEnd;\n var clientSize;\n var elements;\n\n // Allow HTMLCollection to be used as an argument when supported\n if (Array.from) {\n ids = Array.from(ids);\n }\n\n // All DOM elements in the split should have a common parent. We can grab\n // the first elements parent and hope users read the docs because the\n // behavior will be whacky otherwise.\n var firstElement = elementOrSelector(ids[0]);\n var parent = firstElement.parentNode;\n var parentStyle = getComputedStyle ? getComputedStyle(parent) : null;\n var parentFlexDirection = parentStyle ? parentStyle.flexDirection : null;\n\n // Set default options.sizes to equal percentages of the parent element.\n var sizes = getOption(options, 'sizes') || ids.map(function () { return 100 / ids.length; });\n\n // Standardize minSize to an array if it isn't already. This allows minSize\n // to be passed as a number.\n var minSize = getOption(options, 'minSize', 100);\n var minSizes = Array.isArray(minSize) ? minSize : ids.map(function () { return minSize; });\n\n // Get other options\n var expandToMin = getOption(options, 'expandToMin', false);\n var gutterSize = getOption(options, 'gutterSize', 10);\n var gutterAlign = getOption(options, 'gutterAlign', 'center');\n var snapOffset = getOption(options, 'snapOffset', 30);\n var dragInterval = getOption(options, 'dragInterval', 1);\n var direction = getOption(options, 'direction', HORIZONTAL);\n var cursor = getOption(\n options,\n 'cursor',\n direction === HORIZONTAL ? 'col-resize' : 'row-resize'\n );\n var gutter = getOption(options, 'gutter', defaultGutterFn);\n var elementStyle = getOption(\n options,\n 'elementStyle',\n defaultElementStyleFn\n );\n var gutterStyle = getOption(options, 'gutterStyle', defaultGutterStyleFn);\n\n // 2. Initialize a bunch of strings based on the direction we're splitting.\n // A lot of the behavior in the rest of the library is paramatized down to\n // rely on CSS strings and classes.\n if (direction === HORIZONTAL) {\n dimension = 'width';\n clientAxis = 'clientX';\n position = 'left';\n positionEnd = 'right';\n clientSize = 'clientWidth';\n } else if (direction === 'vertical') {\n dimension = 'height';\n clientAxis = 'clientY';\n position = 'top';\n positionEnd = 'bottom';\n clientSize = 'clientHeight';\n }\n\n // 3. Define the dragging helper functions, and a few helpers to go with them.\n // Each helper is bound to a pair object that contains its metadata. This\n // also makes it easy to store references to listeners that that will be\n // added and removed.\n //\n // Even though there are no other functions contained in them, aliasing\n // this to self saves 50 bytes or so since it's used so frequently.\n //\n // The pair object saves metadata like dragging state, position and\n // event listener references.\n\n function setElementSize(el, size, gutSize, i) {\n // Split.js allows setting sizes via numbers (ideally), or if you must,\n // by string, like '300px'. This is less than ideal, because it breaks\n // the fluid layout that `calc(% - px)` provides. You're on your own if you do that,\n // make sure you calculate the gutter size by hand.\n var style = elementStyle(dimension, size, gutSize, i);\n\n Object.keys(style).forEach(function (prop) {\n // eslint-disable-next-line no-param-reassign\n el.style[prop] = style[prop];\n });\n }\n\n function setGutterSize(gutterElement, gutSize, i) {\n var style = gutterStyle(dimension, gutSize, i);\n\n Object.keys(style).forEach(function (prop) {\n // eslint-disable-next-line no-param-reassign\n gutterElement.style[prop] = style[prop];\n });\n }\n\n function getSizes() {\n return elements.map(function (element) { return element.size; })\n }\n\n // Supports touch events, but not multitouch, so only the first\n // finger `touches[0]` is counted.\n function getMousePosition(e) {\n if ('touches' in e) { return e.touches[0][clientAxis] }\n return e[clientAxis]\n }\n\n // Actually adjust the size of elements `a` and `b` to `offset` while dragging.\n // calc is used to allow calc(percentage + gutterpx) on the whole split instance,\n // which allows the viewport to be resized without additional logic.\n // Element a's size is the same as offset. b's size is total size - a size.\n // Both sizes are calculated from the initial parent percentage,\n // then the gutter size is subtracted.\n function adjust(offset) {\n var a = elements[this.a];\n var b = elements[this.b];\n var percentage = a.size + b.size;\n\n a.size = (offset / this.size) * percentage;\n b.size = percentage - (offset / this.size) * percentage;\n\n setElementSize(a.element, a.size, this[aGutterSize], a.i);\n setElementSize(b.element, b.size, this[bGutterSize], b.i);\n }\n\n // drag, where all the magic happens. The logic is really quite simple:\n //\n // 1. Ignore if the pair is not dragging.\n // 2. Get the offset of the event.\n // 3. Snap offset to min if within snappable range (within min + snapOffset).\n // 4. Actually adjust each element in the pair to offset.\n //\n // ---------------------------------------------------------------------\n // | | <- a.minSize || b.minSize -> | |\n // | | | <- this.snapOffset || this.snapOffset -> | | |\n // | | | || | | |\n // | | | || | | |\n // ---------------------------------------------------------------------\n // | <- this.start this.size -> |\n function drag(e) {\n var offset;\n var a = elements[this.a];\n var b = elements[this.b];\n\n if (!this.dragging) { return }\n\n // Get the offset of the event from the first side of the\n // pair `this.start`. Then offset by the initial position of the\n // mouse compared to the gutter size.\n offset =\n getMousePosition(e) -\n this.start +\n (this[aGutterSize] - this.dragOffset);\n\n if (dragInterval > 1) {\n offset = Math.round(offset / dragInterval) * dragInterval;\n }\n\n // If within snapOffset of min or max, set offset to min or max.\n // snapOffset buffers a.minSize and b.minSize, so logic is opposite for both.\n // Include the appropriate gutter sizes to prevent overflows.\n if (offset <= a.minSize + snapOffset + this[aGutterSize]) {\n offset = a.minSize + this[aGutterSize];\n } else if (\n offset >=\n this.size - (b.minSize + snapOffset + this[bGutterSize])\n ) {\n offset = this.size - (b.minSize + this[bGutterSize]);\n }\n\n // Actually adjust the size.\n adjust.call(this, offset);\n\n // Call the drag callback continously. Don't do anything too intensive\n // in this callback.\n getOption(options, 'onDrag', NOOP)(getSizes());\n }\n\n // Cache some important sizes when drag starts, so we don't have to do that\n // continously:\n //\n // `size`: The total size of the pair. First + second + first gutter + second gutter.\n // `start`: The leading side of the first element.\n //\n // ------------------------------------------------\n // | aGutterSize -> ||| |\n // | ||| |\n // | ||| |\n // | ||| <- bGutterSize |\n // ------------------------------------------------\n // | <- start size -> |\n function calculateSizes() {\n // Figure out the parent size minus padding.\n var a = elements[this.a].element;\n var b = elements[this.b].element;\n\n var aBounds = a[getBoundingClientRect]();\n var bBounds = b[getBoundingClientRect]();\n\n this.size =\n aBounds[dimension] +\n bBounds[dimension] +\n this[aGutterSize] +\n this[bGutterSize];\n this.start = aBounds[position];\n this.end = aBounds[positionEnd];\n }\n\n function innerSize(element) {\n // Return nothing if getComputedStyle is not supported (< IE9)\n // Or if parent element has no layout yet\n if (!getComputedStyle) { return null }\n\n var computedStyle = getComputedStyle(element);\n\n if (!computedStyle) { return null }\n\n var size = element[clientSize];\n\n if (size === 0) { return null }\n\n if (direction === HORIZONTAL) {\n size -=\n parseFloat(computedStyle.paddingLeft) +\n parseFloat(computedStyle.paddingRight);\n } else {\n size -=\n parseFloat(computedStyle.paddingTop) +\n parseFloat(computedStyle.paddingBottom);\n }\n\n return size\n }\n\n // When specifying percentage sizes that are less than the computed\n // size of the element minus the gutter, the lesser percentages must be increased\n // (and decreased from the other elements) to make space for the pixels\n // subtracted by the gutters.\n function trimToMin(sizesToTrim) {\n // Try to get inner size of parent element.\n // If it's no supported, return original sizes.\n var parentSize = innerSize(parent);\n if (parentSize === null) {\n return sizesToTrim\n }\n\n if (minSizes.reduce(function (a, b) { return a + b; }, 0) > parentSize) {\n return sizesToTrim\n }\n\n // Keep track of the excess pixels, the amount of pixels over the desired percentage\n // Also keep track of the elements with pixels to spare, to decrease after if needed\n var excessPixels = 0;\n var toSpare = [];\n\n var pixelSizes = sizesToTrim.map(function (size, i) {\n // Convert requested percentages to pixel sizes\n var pixelSize = (parentSize * size) / 100;\n var elementGutterSize = getGutterSize(\n gutterSize,\n i === 0,\n i === sizesToTrim.length - 1,\n gutterAlign\n );\n var elementMinSize = minSizes[i] + elementGutterSize;\n\n // If element is too smal, increase excess pixels by the difference\n // and mark that it has no pixels to spare\n if (pixelSize < elementMinSize) {\n excessPixels += elementMinSize - pixelSize;\n toSpare.push(0);\n return elementMinSize\n }\n\n // Otherwise, mark the pixels it has to spare and return it's original size\n toSpare.push(pixelSize - elementMinSize);\n return pixelSize\n });\n\n // If nothing was adjusted, return the original sizes\n if (excessPixels === 0) {\n return sizesToTrim\n }\n\n return pixelSizes.map(function (pixelSize, i) {\n var newPixelSize = pixelSize;\n\n // While there's still pixels to take, and there's enough pixels to spare,\n // take as many as possible up to the total excess pixels\n if (excessPixels > 0 && toSpare[i] - excessPixels > 0) {\n var takenPixels = Math.min(\n excessPixels,\n toSpare[i] - excessPixels\n );\n\n // Subtract the amount taken for the next iteration\n excessPixels -= takenPixels;\n newPixelSize = pixelSize - takenPixels;\n }\n\n // Return the pixel size adjusted as a percentage\n return (newPixelSize / parentSize) * 100\n })\n }\n\n // stopDragging is very similar to startDragging in reverse.\n function stopDragging() {\n var self = this;\n var a = elements[self.a].element;\n var b = elements[self.b].element;\n\n if (self.dragging) {\n getOption(options, 'onDragEnd', NOOP)(getSizes());\n }\n\n self.dragging = false;\n\n // Remove the stored event listeners. This is why we store them.\n global[removeEventListener]('mouseup', self.stop);\n global[removeEventListener]('touchend', self.stop);\n global[removeEventListener]('touchcancel', self.stop);\n global[removeEventListener]('mousemove', self.move);\n global[removeEventListener]('touchmove', self.move);\n\n // Clear bound function references\n self.stop = null;\n self.move = null;\n\n a[removeEventListener]('selectstart', NOOP);\n a[removeEventListener]('dragstart', NOOP);\n b[removeEventListener]('selectstart', NOOP);\n b[removeEventListener]('dragstart', NOOP);\n\n a.style.userSelect = '';\n a.style.webkitUserSelect = '';\n a.style.MozUserSelect = '';\n a.style.pointerEvents = '';\n\n b.style.userSelect = '';\n b.style.webkitUserSelect = '';\n b.style.MozUserSelect = '';\n b.style.pointerEvents = '';\n\n self.gutter.style.cursor = '';\n self.parent.style.cursor = '';\n document.body.style.cursor = '';\n }\n\n // startDragging calls `calculateSizes` to store the inital size in the pair object.\n // It also adds event listeners for mouse/touch events,\n // and prevents selection while dragging so avoid the selecting text.\n function startDragging(e) {\n // Right-clicking can't start dragging.\n if ('button' in e && e.button !== 0) {\n return\n }\n\n // Alias frequently used variables to save space. 200 bytes.\n var self = this;\n var a = elements[self.a].element;\n var b = elements[self.b].element;\n\n // Call the onDragStart callback.\n if (!self.dragging) {\n getOption(options, 'onDragStart', NOOP)(getSizes());\n }\n\n // Don't actually drag the element. We emulate that in the drag function.\n e.preventDefault();\n\n // Set the dragging property of the pair object.\n self.dragging = true;\n\n // Create two event listeners bound to the same pair object and store\n // them in the pair object.\n self.move = drag.bind(self);\n self.stop = stopDragging.bind(self);\n\n // All the binding. `window` gets the stop events in case we drag out of the elements.\n global[addEventListener]('mouseup', self.stop);\n global[addEventListener]('touchend', self.stop);\n global[addEventListener]('touchcancel', self.stop);\n global[addEventListener]('mousemove', self.move);\n global[addEventListener]('touchmove', self.move);\n\n // Disable selection. Disable!\n a[addEventListener]('selectstart', NOOP);\n a[addEventListener]('dragstart', NOOP);\n b[addEventListener]('selectstart', NOOP);\n b[addEventListener]('dragstart', NOOP);\n\n a.style.userSelect = 'none';\n a.style.webkitUserSelect = 'none';\n a.style.MozUserSelect = 'none';\n a.style.pointerEvents = 'none';\n\n b.style.userSelect = 'none';\n b.style.webkitUserSelect = 'none';\n b.style.MozUserSelect = 'none';\n b.style.pointerEvents = 'none';\n\n // Set the cursor at multiple levels\n self.gutter.style.cursor = cursor;\n self.parent.style.cursor = cursor;\n document.body.style.cursor = cursor;\n\n // Cache the initial sizes of the pair.\n calculateSizes.call(self);\n\n // Determine the position of the mouse compared to the gutter\n self.dragOffset = getMousePosition(e) - self.end;\n }\n\n // adjust sizes to ensure percentage is within min size and gutter.\n sizes = trimToMin(sizes);\n\n // 5. Create pair and element objects. Each pair has an index reference to\n // elements `a` and `b` of the pair (first and second elements).\n // Loop through the elements while pairing them off. Every pair gets a\n // `pair` object and a gutter.\n //\n // Basic logic:\n //\n // - Starting with the second element `i > 0`, create `pair` objects with\n // `a = i - 1` and `b = i`\n // - Set gutter sizes based on the _pair_ being first/last. The first and last\n // pair have gutterSize / 2, since they only have one half gutter, and not two.\n // - Create gutter elements and add event listeners.\n // - Set the size of the elements, minus the gutter sizes.\n //\n // -----------------------------------------------------------------------\n // | i=0 | i=1 | i=2 | i=3 |\n // | | | | |\n // | pair 0 pair 1 pair 2 |\n // | | | | |\n // -----------------------------------------------------------------------\n var pairs = [];\n elements = ids.map(function (id, i) {\n // Create the element object.\n var element = {\n element: elementOrSelector(id),\n size: sizes[i],\n minSize: minSizes[i],\n i: i,\n };\n\n var pair;\n\n if (i > 0) {\n // Create the pair object with its metadata.\n pair = {\n a: i - 1,\n b: i,\n dragging: false,\n direction: direction,\n parent: parent,\n };\n\n pair[aGutterSize] = getGutterSize(\n gutterSize,\n i - 1 === 0,\n false,\n gutterAlign\n );\n pair[bGutterSize] = getGutterSize(\n gutterSize,\n false,\n i === ids.length - 1,\n gutterAlign\n );\n\n // if the parent has a reverse flex-direction, switch the pair elements.\n if (\n parentFlexDirection === 'row-reverse' ||\n parentFlexDirection === 'column-reverse'\n ) {\n var temp = pair.a;\n pair.a = pair.b;\n pair.b = temp;\n }\n }\n\n // Determine the size of the current element. IE8 is supported by\n // staticly assigning sizes without draggable gutters. Assigns a string\n // to `size`.\n //\n // Create gutter elements for each pair.\n if (i > 0) {\n var gutterElement = gutter(i, direction, element.element);\n setGutterSize(gutterElement, gutterSize, i);\n\n // Save bound event listener for removal later\n pair[gutterStartDragging] = startDragging.bind(pair);\n\n // Attach bound event listener\n gutterElement[addEventListener](\n 'mousedown',\n pair[gutterStartDragging]\n );\n gutterElement[addEventListener](\n 'touchstart',\n pair[gutterStartDragging]\n );\n\n parent.insertBefore(gutterElement, element.element);\n\n pair.gutter = gutterElement;\n }\n\n setElementSize(\n element.element,\n element.size,\n getGutterSize(\n gutterSize,\n i === 0,\n i === ids.length - 1,\n gutterAlign\n ),\n i\n );\n\n // After the first iteration, and we have a pair object, append it to the\n // list of pairs.\n if (i > 0) {\n pairs.push(pair);\n }\n\n return element\n });\n\n function adjustToMin(element) {\n var isLast = element.i === pairs.length;\n var pair = isLast ? pairs[element.i - 1] : pairs[element.i];\n\n calculateSizes.call(pair);\n\n var size = isLast\n ? pair.size - element.minSize - pair[bGutterSize]\n : element.minSize + pair[aGutterSize];\n\n adjust.call(pair, size);\n }\n\n elements.forEach(function (element) {\n var computedSize = element.element[getBoundingClientRect]()[dimension];\n\n if (computedSize < element.minSize) {\n if (expandToMin) {\n adjustToMin(element);\n } else {\n // eslint-disable-next-line no-param-reassign\n element.minSize = computedSize;\n }\n }\n });\n\n function setSizes(newSizes) {\n var trimmed = trimToMin(newSizes);\n trimmed.forEach(function (newSize, i) {\n if (i > 0) {\n var pair = pairs[i - 1];\n\n var a = elements[pair.a];\n var b = elements[pair.b];\n\n a.size = trimmed[i - 1];\n b.size = newSize;\n\n setElementSize(a.element, a.size, pair[aGutterSize], a.i);\n setElementSize(b.element, b.size, pair[bGutterSize], b.i);\n }\n });\n }\n\n function destroy(preserveStyles, preserveGutter) {\n pairs.forEach(function (pair) {\n if (preserveGutter !== true) {\n pair.parent.removeChild(pair.gutter);\n } else {\n pair.gutter[removeEventListener](\n 'mousedown',\n pair[gutterStartDragging]\n );\n pair.gutter[removeEventListener](\n 'touchstart',\n pair[gutterStartDragging]\n );\n }\n\n if (preserveStyles !== true) {\n var style = elementStyle(\n dimension,\n pair.a.size,\n pair[aGutterSize]\n );\n\n Object.keys(style).forEach(function (prop) {\n elements[pair.a].element.style[prop] = '';\n elements[pair.b].element.style[prop] = '';\n });\n }\n });\n }\n\n return {\n setSizes: setSizes,\n getSizes: getSizes,\n collapse: function collapse(i) {\n adjustToMin(elements[i]);\n },\n destroy: destroy,\n parent: parent,\n pairs: pairs,\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Split);\n\n\n//# sourceURL=webpack:///./node_modules/split.js/dist/split.es.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/appmain.js":
|
|
/*!************************!*\
|
|
!*** ./src/appmain.js ***!
|
|
\************************/
|
|
/*! exports provided: ReplayWebApp */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReplayWebApp\", function() { return ReplayWebApp; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/question-circle.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-left.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-right.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass ReplayWebApp extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.sourceUrl = null;\n this.collTitle = null;\n this.showAbout = false;\n this.pageParams = {};\n\n this.inited = false;\n this.navMenuShown = false;\n\n this.collPageUrl = \"\";\n this.pageTitle = \"\";\n this.pageReplay = false;\n\n Object(_pageutils__WEBPACK_IMPORTED_MODULE_2__[\"registerSW\"])(\"sw.js\");\n\n this.safariKeyframes();\n }\n\n get appName() {\n return \"ReplayWeb.page\";\n }\n\n get homeUrl() {\n return window.location.pathname;\n }\n\n static get properties() {\n return {\n inited: { type: Boolean },\n pageParams: { type: Object },\n sourceUrl: { type: String },\n navMenuShown: { type: Boolean },\n showAbout: { type: Boolean },\n collTitle: { type: String },\n loadInfo: { type: Object },\n embed: { type: String },\n collPageUrl: { type: String },\n pageTitle: { type: String },\n pageReplay: { type: Boolean },\n source: { type: String }\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(ReplayWebApp.appStyles);\n }\n\n static get appStyles() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n #wrlogo {\n max-height: 1.0rem;\n }\n .navbar {\n height: 1.5rem;\n }\n .navbar-brand {\n height: 1.5rem;\n display: flex;\n align-items: center;\n }\n .wr-logo-item {\n padding: 0 8px 0 0;\n }\n .no-wrap {\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n }\n .has-allcaps {\n font-variant-caps: small-caps;\n }\n :host {\n position: fixed;\n left: 0px;\n top: 0px;\n bottom: 0px;\n right: 0px;\n display: flex;\n min-width: 0px;\n flex-direction: column;\n }\n wr-coll {\n height: 100%;\n }\n .navbar {\n padding: 0 0.5em;\n }\n\n div.navbar-menu fa-icon {\n vertical-align: sub;\n }\n .tagline {\n margin-top: 1.0rem;\n }\n\n @media screen and (min-width: 840px) {\n .menu-only {\n display: none;\n }\n\n a.arrow-button {\n padding-left: 4px;\n padding-right: 4px;\n }\n\n .info-menu {\n padding: 0 1.0em;\n }\n\n .logo-text {\n padding-left: 0px;\n margin-left: 6px;\n }\n\n a.navbar-item.logo-text:hover {\n background-color: initial;\n }\n }\n\n @media screen and (max-width: 840px) {\n .wide-only {\n display: none !important;\n }\n }\n\n `;\n }\n\n get mainLogo() {\n return _misc__WEBPACK_IMPORTED_MODULE_1__[\"rwpLogo\"];\n }\n\n renderNavBrand() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <span id=\"home\" class=\"logo-text has-text-weight-bold is-size-6 has-allcaps wide-only\">\n <span class=\"has-text-primary\">replay</span>\n <span class=\"has-text-link\">web.page</span>\n <span class=\"is-sr-only\">Home</span>\n </span>`;\n }\n\n renderNavBar() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a href=\"#skip-main-target\" @click=${this.skipMenu} class=\"skip-link\">Skip main navigation</a>\n <nav class=\"navbar has-background-info\" aria-label=\"main\">\n <div class=\"navbar-brand\">\n ${!this.embed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a href=\"${this.homeUrl}\" class=\"navbar-item wr-logo-item\" aria-labelledby=\"home\">\n <fa-icon id=\"wrlogo\" size=\"1.0rem\" .svg=${this.mainLogo} aria-hidden=\"true\"></fa-icon>\n ${this.renderNavBrand()}\n </a>\n ${this.collTitle ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a href=\"${this.collPageUrl}\" class=\"no-wrap is-size-6 has-text-black\">/ <i>${this.collTitle}</i></a>\n <span class=\"no-wrap is-size-6\"> / \n ${this.pageReplay ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<i>${this.pageTitle}</i>` : this.pageTitle}\n </span>\n ` : ``}\n `: lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <span class=\"navbar-item wr-logo-item\">\n <fa-icon id=\"wrlogo\" size=\"1.0rem\" .svg=${this.mainLogo} aria-hidden=\"true\"></fa-icon>\n </span>\n `}\n <a href=\"#\" role=\"button\" id=\"menu-button\" @click=\"${this.onNavMenu}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n class=\"navbar-burger burger ${this.navMenuShown ? 'is-active' : ''}\" aria-label=\"main menu\" aria-haspopup=\"true\" aria-expanded=\"${this.navMenuShown}\">\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n </a>\n </div>\n ${!this.sourceUrl ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"navbar-menu ${this.navMenuShown ? 'is-active' : ''}\">\n <div class=\"navbar-start\">\n ${_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a role=\"button\" href=\"#\" class=\"navbar-item arrow-button\" title=\"Go Back\" @click=\"${(e) => window.history.back()}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <fa-icon size=\"1.0rem\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_4___default.a}\" aria-hidden=\"true\"></fa-icon><span class=\"menu-only is-size-7\"> Go Back</span>\n </a>\n <a role=\"button\" href=\"#\" class=\"navbar-item arrow-button\" title=\"Go Forward\" @click=\"${(e) => window.history.forward()}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <fa-icon size=\"1.0rem\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_5___default.a}\" aria-hidden=\"true\"></fa-icon><span class=\"menu-only is-size-7\"> Go Forward</span>\n </a>\n ` : ``}\n </div>\n ${!this.embed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"navbar-end\">\n ${this.renderNavEnd()}\n </div>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n </div>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n </nav>\n <p id=\"skip-main-target\" tabindex=\"-1\" class=\"is-sr-only\">Skipped</p>`;\n }\n\n renderNavEnd() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a href=\"/docs\" target=\"_blank\" class=\"navbar-item is-size-6\">\n <fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_3___default.a}\" aria-hidden=\"true\"></fa-icon><span> User Docs</span>\n </a>\n <!--\n -- NB: the About modal is currently inaccessible to people using keyboards or screen readers.\n -- Should all the JS and infrastructure for accessible modals be added, or should About be a normal page?\n -->\n <a href=\"?terms\" @click=\"${(e) => { e.preventDefault(); this.showAbout = true} }\"class=\"navbar-item is-size-6\">About\n </a>`\n }\n\n renderColl() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-coll .loadInfo=\"${this.loadInfo}\"\n sourceUrl=\"${this.sourceUrl}\"\n embed=\"${this.embed}\"\n appName=\"${this.appName}\"\n .appLogo=\"${this.mainLogo}\"\n @replay-favicons=${this.onFavIcons}\n @update-title=${this.onTitle}\n @coll-loaded=${this.onCollLoaded}\n @about-show=${(e) => this.showAbout = true}></wr-coll>`;\n }\n\n renderHomeIndex() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-coll-index>\n ${!_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p slot=\"header\" class=\"tagline is-size-5 has-text-centered\">Explore and Replay Interactive Archived Webpages Directly in your Browser. <i><a target=\"_blank\" href=\"./docs/examples\">(See Examples)</a></i></p>\n ` : ``}\n <wr-chooser slot=\"header\" @load-start=${this.onStartLoad}></wr-chooser>\n </wr-coll-index>`;\n }\n\n render() {\n if (!this.inited) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``;\n }\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${!this.embed || this.embed === \"full\" ? this.renderNavBar() : ''}\n\n ${this.sourceUrl ? this.renderColl() : this.renderHomeIndex()}\n\n ${this.showAbout ? this.renderAbout() : ``}\n `;\n }\n\n firstUpdated() {\n this.initRoute();\n window.addEventListener(\"popstate\", (event) => {\n this.initRoute();\n });\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"sourceUrl\")) {\n this.collTitle = null;\n }\n }\n\n onFavIcons(event) {\n const head = document.querySelector('head');\n const oldLinks = document.querySelectorAll(\"link[rel*='icon']\");\n\n for (const link of oldLinks) {\n head.removeChild(link);\n }\n\n for (const icon of event.detail.icons) {\n const link = document.createElement('link');\n link.rel = icon.rel;\n link.href = icon.href;\n head.appendChild(link);\n }\n }\n\n skipMenu(event){\n // This is a workaround, since this app's routing doesn't permit normal\n // following of in-page anchors.\n event.preventDefault();\n this.renderRoot.querySelector(\"#skip-main-target\").focus()\n }\n\n onNavMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n this.navMenuShown = !this.navMenuShown;\n\n if (this.navMenuShown) {\n // Since this menu can be large and obscure significant page content,\n // dismiss like a modal, returning keyboard focus to the\n // menu button on dismissal.\n document.addEventListener(\"click\", (event) => {\n event.preventDefault();\n this.navMenuShown = false;\n this.renderRoot.querySelector(\"#menu-button\").focus();\n }, {once: true});\n document.addEventListener(\"keypress\", (event) => {\n if (event.key == \"Escape\") {\n event.preventDefault();\n this.navMenuShown = false;\n this.renderRoot.querySelector(\"#menu-button\").focus();\n }\n }, {once: true});\n }\n }\n\n initRoute() {\n this.inited = true;\n this.pageParams = new URLSearchParams(window.location.search);\n\n // Google Drive\n let state = this.pageParams.get(\"state\");\n if (state) {\n try {\n state = JSON.parse(state);\n if ((state.ids instanceof Array) && state.userId && state.action === \"open\") {\n this.pageParams.set(\"source\", \"googledrive://\" + state.ids[0]);\n this.pageParams.delete(\"state\");\n window.location.search = this.pageParams.toString();\n return;\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n if (this.source) {\n this.pageParams.set(\"source\", this.source);\n const url = new URL(window.location.href);\n url.search = this.pageParams.toString();\n window.history.replaceState({}, document.title, url.href);\n }\n\n this.sourceUrl = this.pageParams.get(\"source\") || \"\";\n this.embed = this.pageParams.get(\"embed\") || \"\";\n\n if (this.pageParams.has(\"terms\")) {\n this.showAbout = true;\n }\n\n if (this.pageParams.get(\"config\")) {\n if (!this.loadInfo) {\n this.loadInfo = {}\n }\n try {\n this.loadInfo.extraConfig = JSON.parse(this.pageParams.get(\"config\"));\n } catch (e) {\n console.log(\"invalid config: \" + e);\n }\n }\n\n if (this.pageParams.get(\"basePageUrl\")) {\n if (!this.loadInfo) {\n this.loadInfo = {extraConfig: {}}\n }\n if (!this.loadInfo.extraConfig) {\n this.loadInfo.extraConfig = {};\n }\n this.loadInfo.extraConfig.baseUrl = this.pageParams.get(\"basePageUrl\");\n }\n\n if (this.pageParams.get(\"customColl\")) {\n if (!this.loadInfo) {\n this.loadInfo = {}\n }\n this.loadInfo.customColl = this.pageParams.get(\"customColl\");\n }\n\n if (_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] && this.sourceUrl.startsWith(\"file://\")) {\n const url = new URL(\"http://files.replayweb.page/\");\n url.searchParams.set(\"filename\", this.sourceUrl.slice(\"file://\".length));\n this.loadInfo = {\n sourceUrl: this.sourceUrl,\n loadUrl: url.href,\n }\n }\n }\n\n onStartLoad(event) {\n // just redirect right away?\n this.pageParams.set(\"source\", event.detail.sourceUrl);\n\n const url = new URL(window.location.href);\n url.search = this.pageParams.toString();\n this.collPageUrl = url.toString();\n\n if (!event.detail.isFile) {\n window.location.search = this.pageParams.toString();\n return;\n } else {\n\n window.history.pushState({}, \"\", this.collPageUrl);\n }\n\n this.sourceUrl = event.detail.sourceUrl;\n this.loadInfo = event.detail;\n }\n\n onCollLoaded(event) {\n this.loadInfo = null;\n if (event.detail.collInfo) {\n this.collTitle = event.detail.collInfo.title;\n }\n\n if (event.detail.alreadyLoaded) {\n //this.sourceLoaded = true;\n return;\n }\n\n //this.initRoute();\n\n if (event.detail.sourceUrl !== this.sourceUrl) {\n this.pageParams.set(\"source\", event.detail.sourceUrl);\n window.location.search = this.pageParams.toString();\n }\n }\n\n onTitle(event) {\n if (event.detail.title) {\n this.pageTitle = event.detail.title;\n this.pageReplay = event.detail.replayTitle;\n\n document.title = (event.detail.replayTitle ? \"Archive of \" : \"\") + this.pageTitle + \" | ReplayWeb.page\";\n }\n }\n\n safariKeyframes() {\n // Safari requires keyframes at the document level, add spinner keyframes here\n const css = `\n @keyframes spinAround {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n }\n `;\n\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n style.appendChild(document.createTextNode(css));\n }\n\n renderAbout() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"modal is-active\">\n <div class=\"modal-background\" @click=\"${this.onAboutClose}\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">About ReplayWeb.page ${_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] ? 'App' : ''}</p>\n <button class=\"delete\" aria-label=\"close\" @click=\"${this.onAboutClose}\"></button>\n </header>\n <section class=\"modal-card-body\">\n <div class=\"container\">\n <div class=\"content\">\n <div style=\"display: flex\">\n <div class=\"has-text-centered\" style=\"width: 220px\">\n <wr-anim-logo class=\"logo\" size=\"48px\"></wr-anim-logo>\n <div style=\"font-size: smaller; margin-bottom: 1em\">${_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] ? 'App' : ''} v${\"1.3.5\"}</div>\n </div>\n\n ${_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p>ReplayWeb.page App is a standalone app for Mac, Windows and Linux that loads web archive files provided by the user\n and renders them for replay.</p>\n\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p><a href=\"https://replayweb.page\" target=\"_blank\">ReplayWeb.page</a> is a browser-based viewer that loads web archive files provided by the user\n and renders them for replay in the browser.</p>`}\n </div>\n\n <p>Full source code is available at:\n <a href=\"https://github.com/webrecorder/replayweb.page\" target=\"_blank\">https://github.com/webrecorder/replayweb.page</a>\n </p>\n\n <p>See the <a target=\"_blank\" href=\"./docs\">User Docs</a> or the GitHub README for more info on how it works.</p>\n\n <p>ReplayWeb.page is part of the <a href=\"https://webrecorder.net/\" target=\"_blank\">Webrecorder Project</a>.</p>\n\n <h3>Privacy</h3>\n <p><b>No data is uploaded anywhere and no information is collected.</b></p>\n <p>All content rendered stays directly in your browser.<br/>When loading an archive from Google Drive,\n the site may ask for account authorization to download the specified file only.</p>\n\n <h4>Disclaimer of Warranties</h4>\n <p>The application is provided \"as is\" without any guarantees.</p>\n <details>\n <summary>Legalese:</summary>\n <p style=\"font-size: 0.8rem\">DISCLAIMER OF SOFTWARE WARRANTY. WEBRECORDER SOFTWARE PROVIDES THIS SOFTWARE TO YOU \"AS AVAILABLE\"\n AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,\n INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n </details>\n <div class=\"has-text-centered\">\n <a class=\"button is-warning\" href=\"#\" @click=\"${this.onAboutClose}\">Close</a>\n </div>\n </div>\n </div>\n </section>\n </div>\n </div>\n </div>`;\n }\n\n onAboutClose() {\n this.showAbout = false;\n }\n}\n\ncustomElements.define(\"replay-app-main\", ReplayWebApp);\n\n\n\n\n//# sourceURL=webpack:///./src/appmain.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/chooser.js":
|
|
/*!************************!*\
|
|
!*** ./src/chooser.js ***!
|
|
\************************/
|
|
/*! exports provided: Chooser */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Chooser\", function() { return Chooser; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/upload.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n\n\n// ===========================================================================\nclass Chooser extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n\n this.fileDisplayName = \"\";\n this.file = null;\n\n this.hasNativeFS = !!window.showOpenFilePicker && !_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"];\n }\n\n static get properties() {\n return {\n fileDisplayName: { type: String }\n }\n }\n\n onChooseFile(event) {\n if (event.currentTarget.files.length === 0) {\n return;\n }\n\n this.file = event.currentTarget.files[0];\n // file.path only available in electron app\n this.fileDisplayName = \"file://\" + (this.file.path || this.file.name);\n }\n\n async onChooseNativeFile() {\n if (!this.hasNativeFS) {\n return;\n }\n\n const options = {\n types: [\n {\n description: 'WARC, WACZ, HAR and WBN Files',\n accept: {\n 'application/warc': ['.warc', '.gz'],\n 'application/har': ['.har'],\n 'application/wacz': ['.wacz'],\n 'application/wbn': ['.wbn']\n }\n }\n ]\n }\n\n const [fileHandle] = await window.showOpenFilePicker(options);\n this.fileHandle = fileHandle;\n\n this.file = await fileHandle.getFile();\n this.fileDisplayName = \"file://\" + fileHandle.name;\n }\n\n randomId() {\n return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n }\n\n onStartLoad(event) {\n event.preventDefault();\n\n const loadInfo = {sourceUrl: this.fileDisplayName};\n\n if (this.file) {\n loadInfo.isFile = true;\n // file.path only available in electron app\n if (this.file.path) {\n const url = new URL(\"http://files.replayweb.page/\");\n url.searchParams.set(\"filename\", this.file.path);\n loadInfo.loadUrl = url.href;\n loadInfo.noCache = true;\n } else if (this.fileHandle) {\n loadInfo.loadUrl = this.fileDisplayName + \"-\" + this.randomId();\n loadInfo.extra = {fileHandle: this.fileHandle};\n loadInfo.noCache = false;\n } else {\n loadInfo.loadUrl = URL.createObjectURL(this.file);\n loadInfo.blob = this.file;\n loadInfo.noCache = false;\n }\n loadInfo.size = this.file.size;\n loadInfo.name = this.fileDisplayName;\n }\n\n this.dispatchEvent(new CustomEvent(\"load-start\", {detail: loadInfo}));\n\n return false;\n }\n\n onInput(event) {\n this.fileDisplayName = event.currentTarget.value;\n\n if (this.file && this.fileDisplayName && this.fileDisplayName.startsWith(\"file://\")) {\n this.file = null;\n this.fileDisplayName = \"\";\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n min-width: 0;\n }\n .extra-padding {\n padding: 1.5em;\n }\n .less-padding {\n padding-top: 1.0em;\n padding-bottom: 1.0em;\n }\n div.field.has-addons {\n flex: auto;\n }\n .panel-heading {\n background-color: #cff3ff;\n font-size: 0.85rem;\n }\n form {\n flex-grow: 1;\n flex-shrink: 0;\n }\n p.control.is-expanded {\n width: min-content;\n }\n input.input.file-name:invalid {\n border: 1px dashed red;\n }\n input.input.file-name {\n border-width: 1px;\n margin-left: -1px;\n max-width: 100%;\n }\n @media screen and (max-width: 1023px) {\n .file-icon {\n margin-right: 0px;\n }\n }\n\n @media screen and (max-width: 768px) {\n #filename {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n }\n }\n `);\n };\n\n render() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <section class=\"section less-padding\">\n <div class=\"panel\">\n <h4 class=\"panel-heading\">Load Web Archive</h4>\n <div class=\"extra-padding panel-block file has-name\">\n <form class=\"is-flex\" @submit=\"${this.onStartLoad}\">\n <label class=\"file-label\">\n ${!this.hasNativeFS ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <input class=\"file-input\"\n @click=\"${(e) => e.currentTarget.value = null}\"\n @change=${this.onChooseFile} type=\"file\" id=\"fileupload\" name=\"fileupload\">` : ``}\n <span class=\"file-cta\" @click=\"${this.onChooseNativeFile}\">\n <span class=\"file-icon\">\n <fa-icon size=\"0.9em\" .svg=${_fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2___default.a} aria-hidden=\"true\"></fa-icon>\n </span>\n <span class=\"file-label is-hidden-touch\">\n Choose File...\n </span>\n </span>\n </label>\n\n <div class=\"field has-addons\">\n <p class=\"control is-expanded\">\n <input class=\"file-name input\" type=\"text\"\n name=\"filename\" id=\"filename\"\n pattern=\"((file|http|https|ipfs|s3):\\/\\/.*\\.(warc|warc.gz|zip|wacz|har|wbn))|(googledrive:\\/\\/.+)\"\n .value=\"${this.fileDisplayName}\"\n @input=\"${this.onInput}\"\n autocomplete=\"off\"\n placeholder=\"Enter a URL or click 'Choose File' to select a WARC, WACZ, HAR or WBN archive source\">\n </p>\n <div class=\"control\">\n <button type=\"submit\" class=\"button is-hidden-mobile is-primary\">Load</button>\n </div>\n </div>\n\n </form>\n </div>\n </div>\n </section>`;\n }\n}\n\ncustomElements.define(\"wr-chooser\", Chooser);\n\n\n\n\n//# sourceURL=webpack:///./src/chooser.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/coll-index.js":
|
|
/*!***************************!*\
|
|
!*** ./src/coll-index.js ***!
|
|
\***************************/
|
|
/*! exports provided: CollIndex, CollInfo */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CollIndex\", function() { return CollIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CollInfo\", function() { return CollInfo; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! pretty-bytes */ \"./node_modules/pretty-bytes/index.js\");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/regular/copy.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/search.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass CollIndex extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n\n this.colls = [];\n this.filteredColls = [];\n this.sortedColls = [];\n\n this.query = \"\";\n\n this.hideHeader = localStorage.getItem(\"index:hideHeader\") === \"1\";\n\n this._deleting = {};\n\n this.dateName = \"Date Loaded\";\n this.headerName = \"Loaded Archives\";\n }\n\n get sortKeys() {\n return [\n {key: \"title\",\n name: \"Title\"},\n\n {key: \"sourceUrl\",\n name: \"Source\"},\n\n {key: \"ctime\",\n name: this.dateName},\n\n {key: \"size\",\n name: \"Total Size\"}\n ];\n }\n\n static get properties() {\n return {\n colls: { type: Array },\n\n query: { type: String },\n\n filteredColls: { type: Array },\n\n sortedColls: { type: Array },\n\n hideHeader: { type: Boolean },\n\n _deleting: { type: Object },\n\n dateName: { type: String },\n headerName: { type: String }\n }\n }\n\n firstUpdated() {\n this.loadColls();\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"hideHeader\")) {\n localStorage.setItem(\"index:hideHeader\", this.hideHeader ? \"1\" : \"0\");\n }\n if (changedProperties.has(\"colls\") || changedProperties.has(\"query\")) {\n this.filter();\n }\n }\n\n filter() {\n if (!this.query) {\n this.filteredColls = this.colls;\n return;\n }\n\n this.filteredColls = [];\n\n for (const coll of this.colls) {\n if (coll.sourceUrl.indexOf(this.query) >= 0 ||\n coll.filename.indexOf(this.query) >= 0 ||\n (coll.title && coll.title.indexOf(this.query) >= 0)) {\n this.filteredColls.push(coll);\n }\n }\n }\n\n async loadColls() {\n const resp = await fetch(\"./wabac/api/index\");\n try {\n const json = await resp.json();\n this.colls = json.colls.map((coll) => {\n coll.title = coll.title || coll.filename;\n return coll;\n });\n } catch (e) {\n // likely no sw registered yet\n }\n\n this._deleting = {};\n }\n\n async onDeleteColl(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.sortedColls) {\n return;\n }\n\n const index = Number(event.currentTarget.getAttribute(\"data-coll-index\"));\n\n const coll = this.sortedColls[index];\n\n if (!coll || this._deleting[coll.sourceUrl]) {\n return;\n }\n\n this._deleting[coll.sourceUrl] = true;\n this.requestUpdate();\n\n const resp = await fetch(`./wabac/api/${coll.id}`, {method: 'DELETE'});\n if (resp.status === 200) {\n const json = await resp.json();\n this.colls = json.colls;\n }\n return false;\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n overflow-y: auto;\n min-width: 0;\n }\n .size {\n margin-right: 20px;\n }\n .extra-padding {\n padding: 2em;\n }\n .no-top-padding {\n padding-top: 1.0em;\n }\n .panel-heading {\n font-size: 0.85rem;\n }\n .is-loading {\n line-height: 1.5em;\n height: 1.5em;\n border: 0px;\n background-color: transparent !important;\n width: auto;\n }\n div.panel.is-light {\n margin-bottom: 2em;\n }\n\n fa-icon {\n vertical-align: middle;\n }\n .copy {\n color: black;\n margin: 0px;\n margin: 0;\n line-height: 0.4em;\n padding: 6px;\n border-radius: 10px;\n display: none;\n position: absolute;\n }\n .copy:active {\n background-color: lightgray;\n }\n .sort-header {\n padding: 0.3rem 0.3rem 0.3rem 0;\n display: flex;\n flex-direction: row;\n flex-flow: row wrap;\n }\n .sort-header .control {\n flex: auto;\n\n padding-left: 0.3rem;\n width: initial;\n }\n wr-sorter {\n padding: 0.3rem;\n }\n a.button.is-small.collapse {\n border-radius: 6px;\n }\n .icon.is-left {\n margin-left: 0.5rem;\n }\n .coll-block {\n position: relative;\n }\n .delete {\n position: absolute;\n top: 10px;\n right: 10px;\n }\n #sort-select::after {\n display: none;\n }\n header {\n transform: translate(0px, 0px);\n transition: all 0.5s ease 0s;\n visibility: visible;\n display: flex;\n flex-direction: column;\n }\n header.closed {\n transform: translate(0, -100%);\n transition: all 0.5s ease 0s;\n visibility: visible;\n height: 269px;\n margin-top: -269px;\n }\n `);\n }\n\n render() {\n const hasHeader = this.childElementCount > 0;\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <header class=\"${this.hideHeader ? 'closed' : ''}\">\n <slot name=\"header\"></slot>\n </header>\n <section class=\"section no-top-padding\">\n <div class=\"sort-header is-small\">\n ${hasHeader ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <button @click=${(e) => this.hideHeader = !this.hideHeader} class=\"collapse button is-small\">\n <span class=\"icon\"><fa-icon .svg=${this.hideHeader ? _fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5___default.a : _fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4___default.a}></span>\n <span>${this.hideHeader ? 'Show ' : 'Hide'} <span class=\"is-sr-only\">Header</span></span>\n </button>` : ``}\n </div>\n <div class=\"panel is-light\">\n <h2 class=\"panel-heading\"><span>${this.headerName}</span>\n </h2>\n\n ${this.colls.length ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"panel-block sort-header is-small\">\n <div class=\"control has-icons-left\">\n <input type=\"text\" class=\"input is-small\" @input=\"${(e) => this.query = e.currentTarget.value}\" .value=\"${this.query}\" type=\"text\"\n placeholder=\"Search by Archive Title or Source\">\n <span class=\"icon is-left is-small\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6___default.a}\"/></span>\n </div>\n <wr-sorter id=\"index\"\n sortKey=\"ctime\"\n ?sortDesc=\"${true}\"\n .sortKeys=\"${this.sortKeys}\"\n .data=\"${this.filteredColls}\"\n @sort-changed=\"${(e) => this.sortedColls = e.detail.sortedData}\">\n </wr-sorter>\n </div>\n\n <div class=\"coll-list\">\n ${this.sortedColls.map((coll, i) => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"coll-block panel-block\">\n ${this.renderCollInfo(coll)}\n ${!this._deleting[coll.sourceUrl] ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <button class=\"delete\" aria-label=\"Unload Collection\" title=\"Unload Collection\" data-coll-index=\"${i}\" @click=\"${this.onDeleteColl}\"></button>\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <span class=\"button delete is-loading is-static\">Deleting</span`}\n </div>\n `)}\n </div>\n\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n\n <div class=\"panel-block extra-padding\">\n ${this.renderEmpty()}\n </div>\n `}\n </div>\n </section>\n `;\n }\n\n renderCollInfo(coll) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<wr-coll-info .coll=${coll}></wr-coll-info>`;\n }\n\n renderEmpty() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<i>No Archives so far! Archives loaded in the section above will appear here.</i>`;\n }\n}\n\n\n// ===========================================================================\nclass CollInfo extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.detailed = false;\n this.canDelete = false;\n }\n\n static get properties() {\n return {\n coll: { type: Object },\n detailed: { type: Boolean },\n canDelete: { type: Boolean }\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n .columns {\n width: 100%;\n }\n .column {\n word-break: break-word;\n position: relative;\n }\n\n :host {\n width: 100%;\n height: 100%;\n min-width: 0px;\n }\n\n :host(.is-list) .columns {\n display: flex !important;\n flex-direction: column;\n }\n\n :host(.is-list) .column {\n width: 100% !important;\n }\n\n .col-title:hover {\n\n }\n .col-title a {\n display: block;\n height: 100%;\n }\n .column:hover > .copy, .source-text:hover + .copy, .copy:hover {\n display: inline;\n }\n .copy {\n color: black;\n margin: 0px;\n margin: 0;\n line-height: 0.4em;\n padding: 6px;\n border-radius: 10px;\n display: none;\n position: absolute;\n }\n .copy:active {\n background-color: lightgray;\n }\n .minihead {\n font-size: 10px;\n font-weight: bold;\n }\n `);\n }\n\n render() {\n const coll = this.coll;\n const detailed = this.detailed;\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"columns\">\n <div class=\"column col-title is-4\">\n <span class=\"subtitle has-text-weight-bold\">\n ${detailed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${coll.title || coll.filename}\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a href=\"?source=${encodeURIComponent(coll.sourceUrl)}\">${coll.title || coll.filename}</a>`}\n </span>\n </div>\n ${detailed && coll.desc ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"column\">\n <p class=\"minihead\">Description</p>\n ${coll.desc}\n </div>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n `}\n <div class=\"column is-4\">\n <span class=\"source-text\"><p class=\"minihead\">Source</p>${coll.sourceUrl} </span>\n <a @click=\"${(e) => this.onCopy(e, coll.sourceUrl)}\" class=\"copy\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3___default.a}\"/></a>\n ${coll.sourceUrl && coll.sourceUrl.startsWith(\"googledrive://\") ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p><i>(${coll.filename})</i></p>` : ''}\n </div>\n ${detailed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"column\"><p class=\"minihead\">Filename</p>${coll.filename}</div>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n <div class=\"column is-2\"><p class=\"minihead\">Date Loaded</p>${coll.ctime ? new Date(coll.ctime).toLocaleString() : \"\"}</div>\n <div class=\"column is-2\"><p class=\"minihead\">Total Size</p>${pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default()(Number(coll.size || 0))}</div>\n\n ${detailed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"column\">\n <p class=\"minihead\">Loading Mode</p>\n ${coll.onDemand ? \"Download On-Demand\" : \"Fully Local\"}\n </div>\n <div class=\"column\">\n <p class=\"minihead\">Collection id</p>\n ${coll.coll}\n </div>\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n </div>`;\n }\n\n // purge + delete buttons\n //\n // <div class=\"column\">\n // <button @click=\"${(e) => this.onPurge(true)}\" class=\"button\">Purge Cache + Full Reload</button>\n // </div>\n\n // ${this.canDelete ? html`\n // <div class=\"column\">\n // <button @click=\"${(e) => this.onPurge(false)}\" class=\"button is-outlined is-danger\">Delete Archive</button>\n // </div>` : html``}\n //\n\n onCopy(event, sourceUrl) {\n event.preventDefault();\n event.stopPropagation();\n navigator.clipboard.writeText(sourceUrl);\n return false;\n }\n\n onPurge(reload) {\n const detail = {reload};\n this.dispatchEvent(new CustomEvent(\"coll-purge\", {detail}));\n }\n}\n\ncustomElements.define(\"wr-coll-info\", CollInfo);\ncustomElements.define(\"wr-coll-index\", CollIndex);\n\n\n\n\n//# sourceURL=webpack:///./src/coll-index.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/coll.js":
|
|
/*!*********************!*\
|
|
!*** ./src/coll.js ***!
|
|
\*********************/
|
|
/*! exports provided: Coll */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Coll\", function() { return Coll; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/book.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/regular/list-alt.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/regular/file-image.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/info-circle.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/sync-alt.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/redo-alt.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/desktop.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-left.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-right.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-left.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-right.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var split_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! split.js */ \"./node_modules/split.js/dist/split.es.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RWP_SCHEME = \"search://\";\n\n\n// ===========================================================================\nclass Coll extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.sourceUrl = null;\n this.inited = false;\n this.isLoading = false;\n\n this.baseApiPrefix = \"./wabac/api\";\n this.baseReplayPrefix = \"./wabac\";\n this.apiPrefix = \"\";\n this.replayPrefix = \"\";\n\n this.coll = \"\";\n\n this.collInfo = null;\n\n this._replaceLoc = false;\n this._locUpdateNeeded = false;\n\n this._locationHash = \"\";\n\n this.tabData = {};\n this.url = \"\";\n this.ts = \"\";\n\n this.tabNames = [\"pages\", \"story\", \"resources\", \"info\"];\n this.tabLabels = {\n \"pages\": \"Pages\",\n \"story\": \"Story\",\n \"resources\": \"URLs\",\n \"info\": \"Archive Info\",\n }\n\n this.menuActive = false;\n\n this.hasStory = false;\n\n this.editable = false;\n\n this.showSidebar = localStorage.getItem(`pages:showSidebar`) === \"1\";\n this.splitter = null;\n\n this.isVisible = true;\n\n this.favIconUrl = \"\";\n\n this.appName = \"ReplayWeb.page\";\n this.appLogo = _misc__WEBPACK_IMPORTED_MODULE_1__[\"rwpLogo\"];\n }\n\n static get properties() {\n return {\n inited: { type: Boolean },\n\n sourceUrl: { type: String },\n loadInfo: { type: Object, attribute: false },\n\n showSidebar: { type: Boolean },\n\n collInfo: { type: Object, attribute: false },\n coll: { type: String },\n\n hasStory: { type: Boolean },\n isLoading: { type: Boolean },\n\n tabData: { type: Object, attribute: false },\n\n url: { type: String },\n ts: { type: String },\n\n isFullscreen: { type: Boolean },\n menuActive: { type: Boolean },\n\n embed: { type: String },\n editable: { type: Boolean },\n\n isVisible: { type: Boolean },\n\n favIconUrl: {type: String },\n\n appName: { type: String },\n appLogo: { type: String },\n }\n }\n\n firstUpdated() {\n this.inited = true;\n window.addEventListener(\"hashchange\", (event) => this.onHashChange(event));\n\n this.addEventListener(\"fullscreenchange\", (event) => {\n this.isFullscreen = !!document.fullscreenElement;\n });\n\n if (this.embed) {\n this.observer = new IntersectionObserver((entries, observer) => {\n this.isVisible = entries[0].isIntersecting;\n });\n\n this.observer.observe(this);\n }\n }\n\n updated(changedProperties) {\n // if (changedProperties.has(\"url\") || changedProperties.has(\"ts\")) {\n // if (this.url.startsWith(\"rwp?\")) {\n // this.tabData = Object.fromEntries(new URLSearchParams(this.url.slice(4)).entries());\n // } else {\n // this.tabData = {view: \"replay\", url: this.url, ts: this.ts};\n // }\n // }\n\n if (changedProperties.has(\"sourceUrl\")) {\n this.doUpdateInfo();\n }\n if (changedProperties.has(\"editable\")) {\n if (this.editable) {\n this._pollColl = setInterval(() => this.doUpdateInfo(), 10000);\n } else if (this._pollColl) {\n clearInterval(this._pollColl);\n }\n }\n if (changedProperties.has(\"tabData\")) {\n if (!this.collInfo || !this.collInfo.coll) {\n return;\n }\n\n // don't add empty params to shorten query\n Object.keys(this.tabData).\n forEach(key => !this.tabData[key] && delete this.tabData[key]);\n\n const newHash = \"#\" + new URLSearchParams(this.tabData).toString();\n\n if (!this.tabData.url) {\n this.url = RWP_SCHEME + decodeURIComponent(this._paramsToString(this.tabData));\n }\n if (newHash !== this._locationHash) {\n this._locationHash = newHash;\n if (this._replaceLoc || Object.keys(changedProperties.get(\"tabData\")).length === 0) {\n const newLoc = new URL(window.location.href);\n newLoc.hash = this._locationHash;\n window.history.replaceState({}, \"\", newLoc.href);\n this._replaceLoc = false;\n } else {\n window.location.hash = this._locationHash;\n if (!this.showSidebar) {\n const replay = this.renderRoot.querySelector(\"wr-coll-replay\");\n if (replay) {\n replay.focus();\n }\n }\n }\n if (this.embed && window.parent !== window) {\n window.parent.postMessage(this.tabData, '*');\n }\n }\n this._locUpdateNeeded = false;\n }\n if (changedProperties.has(\"showSidebar\")) {\n if (!this.embed) {\n localStorage.setItem(`pages:showSidebar`, this.showSidebar ? \"1\" : \"0\");\n }\n }\n\n if (changedProperties.has(\"tabData\") || changedProperties.has(\"showSidebar\")) {\n this.configureSplitter();\n }\n }\n\n configureSplitter() {\n if (this.tabData.url && this.showSidebar) {\n const contents = this.renderRoot.querySelector(\"#contents\");\n const replay = this.renderRoot.querySelector(\"wr-coll-replay\");\n\n if (contents && replay && !this.splitter) {\n const opts = {\n sizes: [30, 70],\n\n minSize: [300, 300],\n\n gutterSize: 4,\n\n onDragStart() {\n replay.setDisablePointer(true);\n },\n\n onDragEnd() {\n replay.setDisablePointer(false);\n }\n }\n\n this.splitter = Object(split_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"])([contents, replay], opts);\n }\n } else if (this.splitter) {\n try {\n this.splitter.destroy();\n } catch (e) {}\n this.splitter = null;\n }\n }\n\n async doUpdateInfo() {\n let coll = this.loadInfo && this.loadInfo.customColl;\n\n if (!coll) {\n const res = await Object(_pageutils__WEBPACK_IMPORTED_MODULE_2__[\"sourceToId\"])(this.sourceUrl);\n coll = res.coll;\n }\n\n this.coll = coll;\n\n const apiPrefix = this.baseApiPrefix + \"/\" + coll;\n const replayPrefix = this.baseReplayPrefix + \"/\" + coll;\n\n const resp = await fetch(apiPrefix + \"?all=1\");\n\n if (resp.status != 200) {\n this.collInfo = {};\n return;\n }\n\n const json = await resp.json();\n\n this.collInfo = {apiPrefix, replayPrefix, coll, ...json};\n\n if (!this.collInfo.title) {\n this.collInfo.title = this.collInfo.filename;\n }\n\n if (this.embed === \"replayonly\") {\n this.showSidebar = false;\n }\n\n this.hasStory = this.collInfo.desc || this.collInfo.lists.length;\n\n this.dispatchEvent(new CustomEvent(\"coll-loaded\", {detail: {\n collInfo: this.collInfo,\n alreadyLoaded: true\n }}));\n\n this.onHashChange();\n }\n\n onCollLoaded(event) {\n this.doUpdateInfo();\n this.loadInfo = null;\n this.dispatchEvent(new CustomEvent(\"coll-loaded\", {detail: {\n sourceUrl: this.sourceUrl,\n collInfo: this.collInfo,\n }}));\n }\n\n onCollUpdate(event) {\n if (!this.editable) {\n return;\n }\n\n this.collInfo = {...this.collInfo, ...event.detail};\n }\n\n onHashChange(event) {\n const hash = window.location.hash;\n if (hash && hash !== this._locationHash) {\n this.tabData = Object.fromEntries(new URLSearchParams(hash.slice(1)).entries());\n this._locationHash = hash;\n }\n\n if (this.collInfo.coll && !this.tabNames.includes(this.tabData.view)) {\n const view = this.hasStory ? \"story\" : (this.editable || this.collInfo.pages.length ? \"pages\" : \"resources\");\n\n this.tabData = {\n ...this.tabData, view\n };\n }\n\n if (this.tabData.url && this.tabData.url.startsWith(\"page:\")) {\n const pageIndex = Number(this.tabData.url.slice(\"page:\".length));\n if (!isNaN(pageIndex) && pageIndex < this.collInfo.pages.length) {\n const page = this.collInfo.pages[pageIndex];\n this.tabData.url = page.url;\n this.tabData.ts = Object(_pageutils__WEBPACK_IMPORTED_MODULE_2__[\"getPageDateTS\"])(page).timestamp;\n }\n }\n\n if (!this.hasStory && this.tabData.view === \"story\") {\n this.tabData.view = \"pages\";\n }\n\n if (this.tabData.url && this.tabData.query) {\n this.showSidebar = true;\n }\n }\n\n onTabClick(event) {\n event.preventDefault();\n const hash = event.currentTarget.getAttribute(\"href\");\n this.tabData = {...this.tabData, view: hash.slice(1)};\n //this.tabData = {view: hash.slice(1)};\n return false;\n }\n\n onCollTabNav(event) {\n if (event.target.id === this.tabData.view || event.target.id === \"replay\" && this.tabData.url) {\n this.updateTabData(event.detail.data, event.detail.replaceLoc, false);\n } else if (this.showSidebar && this.tabData.url) {\n this.updateTabData(event.detail.data, event.detail.replaceLoc, true);\n }\n }\n\n updateTabData(data, replaceLoc = false, merge = false) {\n this.tabData = {...this.tabData, ...data};\n if (this.tabData.url) {\n this.url = this.tabData.url || \"\";\n }\n if (this.tabData.ts) {\n this.ts = this.tabData.ts || \"\";\n }\n this._replaceLoc = !this._locUpdateNeeded && replaceLoc;\n this._locUpdateNeeded = true;\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 0px;\n }\n\n .icon {\n vertical-align: text-top;\n }\n\n .back fa-icon {\n width: 1.5em;\n vertical-align: bottom;\n line-height: 0.5em;\n }\n\n li.is-active {\n font-weight: bold;\n }\n\n .tab-label {\n display: inline;\n }\n\n @media screen and (max-width: ${!_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"] ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`1053px` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`1163px`}) {\n .tab-label {\n display: none;\n }\n\n .main.tabs span.icon {\n margin: 0px;\n }\n }\n\n .main.tabs {\n display: flex;\n flex-direction: row;\n margin-bottom: 0px;\n }\n\n .main.tabs ul {\n position: relative;\n }\n\n .main.tabs li {\n line-height: 1.5;\n padding: 8px 0 6px 0;\n }\n\n @media screen and (max-width: 319px) {\n .main.tabs li a {\n padding-right: 4px;\n padding-left: 4px;\n }\n }\n\n .sidebar.main.tabs li a {\n padding-right: 6px;\n padding-left: 6px;\n }\n\n #contents {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n min-height: 0px;\n flex: auto;\n }\n\n #tabContents {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: row;\n min-height: 0px;\n flex: auto;\n }\n\n ${Coll.replayBarStyles}\n `);\n }\n\n static get replayBarStyles() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n .breadbar {\n display: flex;\n align-items: center;\n height: 35px;\n width: 100%;\n background-color: aliceblue;\n padding: 0.5em;\n }\n\n .replay-bar {\n padding: 0.5em 0em 0.5em 0.5em;\n max-width: none;\n border-bottom: solid .1rem #97989A;\n width: 100%;\n background-color: white;\n }\n\n input#url {\n border-radius: 4px;\n }\n\n .favicon img {\n width: 20px;\n height: 20px;\n margin: 8px;\n /*filter: drop-shadow(1px 1px 2px grey);*/\n }\n\n #datetime {\n position: absolute;\n right: 1em;\n z-index: 10;\n background: linear-gradient(90deg, rgba(255, 255, 255, 0), #FFF 15%, #FFF);\n margin: -35px 0 0 0px;\n padding-left: 3em;\n line-height: 2;\n }\n\n .menu-head {\n font-size: 10px;\n font-weight: bold;\n display: block;\n }\n .menu-logo {\n vertical-align: middle;\n }\n .menu-version {\n font-size: 10px;\n }\n .dropdown-item.info {\n font-style: italic;\n }\n\n input:focus + #datetime {\n display: none;\n }\n\n .grey-disabled {\n --fa-icon-fill-color: lightgrey;\n color: lightgrey;\n }\n\n .replay-bar .button:focus {\n box-shadow: none;\n }\n\n .is-borderless {\n border: 0px;\n }\n\n .narrow {\n padding: calc(0.5em - 1px) 0.8em;\n }\n\n form {\n width: 100%;\n margin: 0 0 0 0.5em;\n }\n\n .gutter.gutter-horizontal {\n cursor: col-resize;\n float: left;\n background-color: rgb(151, 152, 154);\n }\n\n .gutter.gutter-horizontal:hover {\n cursor: col-resize;\n }\n\n main, wr-coll-replay {\n width: 100%;\n }\n\n .info-bg {\n background-color: whitesmoke;\n width: 100%;\n height: 100%;\n display: flex;\n }\n\n .is-list {\n margin: 1.0em;\n background-color: whitesmoke;\n }\n\n #contents.full-pages {\n width: 100% !important;\n }\n\n .sidebar-nav {\n position: absolute;\n vertical-align: middle;\n }\n\n .sidebar-nav a {\n display: inline-block;\n border-bottom: 0px;\n }\n\n .sidebar-nav span.nav-hover {\n font-size: smaller;\n display: none;\n }\n\n .sidebar-nav:hover span.nav-hover,\n .sidebar-nav:focus-within span.nav-hover {\n display: initial;\n color: rgb(72, 118, 255);\n }\n\n .sidebar-nav fa-icon {\n vertical-align: bottom;\n }\n\n .sidebar-nav:hover fa-icon {\n color: rgb(72, 118, 255);\n }\n\n .sidebar-nav.left {\n left: 8px;\n }\n\n .sidebar-nav.right {\n right: 8px;\n }\n\n /* Since the replay sometimes programmatically receives keyboard focus,\n and that is visually unexpected for mouse-users, and since this won't\n particularly trip up keyboard users, just remove the focus style. */\n wr-coll-replay:focus {\n outline: none;\n }\n /* Some keyboard-users may see this replacement style */\n wr-coll-replay:focus-visible {\n outline: 1px solid rgb(72, 118, 255);\n }\n `;\n }\n\n render() {\n if (!this.inited) return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``;\n\n const isReplay = !!this.tabData.url;\n const isSidebar = isReplay && this.showSidebar;\n\n if (!isReplay && this.tabData && this.tabData.view){\n const detail = {title: this.tabLabels[this.tabData.view], replayTitle: false};\n this.dispatchEvent(new CustomEvent(\"update-title\", {bubbles: true, composed: true, detail}));\n }\n\n if (this.collInfo && !this.collInfo.coll) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-loader .loadInfo=\"${this.loadInfo}\" embed=\"${this.embed}\"\n .coll=\"${this.coll}\" .sourceUrl=\"${this.sourceUrl}\" @coll-loaded=${this.onCollLoaded}></wr-loader>`;\n } else if (this.collInfo) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.renderLocationBar()}\n <div id=\"tabContents\">\n <div id=\"contents\" class=\"is-light ${isSidebar ? 'sidebar' : (isReplay ? 'is-hidden' : 'full-pages')}\"\n role=\"${isSidebar ? \"complementary\" : \"\"}\" aria-label=\"${isSidebar ? \"Browse Contents\" : \"\"}\">\n ${this.renderTabHeader(isSidebar)}\n ${isSidebar || !isReplay ? this.renderCollTabs(isSidebar) : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n </div>\n\n ${isReplay && this.isVisible ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-coll-replay\n role=\"main\"\n tabindex=\"-1\"\n .collInfo=\"${this.collInfo}\"\n sourceUrl=\"${this.sourceUrl}\"\n url=\"${this.tabData.url || \"\"}\"\n ts=\"${this.tabData.ts || \"\"}\"\n @coll-tab-nav=\"${this.onCollTabNav}\" id=\"replay\"\n @replay-loading=\"${(e) => this.isLoading = e.detail.loading}\"\n @replay-favicons=\"${this.onFavIcons}\"\n >\n </wr-coll-replay>\n ` : ``}\n </div>\n `;\n } else {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``;\n }\n }\n\n renderTabHeader(isSidebar) {\n // if (this.tabData.view === \"replay\") {\n // return \"\";\n // }\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <nav class=\"main tabs is-centered ${isSidebar ? 'sidebar' : ''}\" aria-label=\"tabs\">\n <ul>\n ${isSidebar ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li class=\"sidebar-nav left\">\n <a role=\"button\" href=\"#\" @click=\"${this.onHideSidebar}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" class=\"is-marginless is-size-6 is-paddingless\">\n <fa-icon title=\"Hide\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_15___default.a}\" aria-hidden=\"true\"></fa-icon>\n <span class=\"nav-hover\" aria-hidden=\"true\">Hide</span>\n <span class=\"is-sr-only\">Hide Sidebar</span>\n </a>\n </li>` : ``}\n\n ${this.hasStory ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li class=\"${this.tabData.view === 'story' ? 'is-active' : ''}\">\n <a @click=\"${this.onTabClick}\" href=\"#story\" class=\"is-size-6\" aria-label=\"Story\" aria-current=\"${this.tabData.view === 'story' ? 'location' : ''}\">\n <span class=\"icon\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3___default.a}\" aria-hidden=\"true\" title=\"Story\"></fa-icon></span>\n <span class=\"tab-label ${isSidebar ? 'is-hidden' : ''}\" title=\"Story\">Story</span>\n </a>\n </li>` : ``}\n\n <li class=\"${this.tabData.view === 'pages' ? 'is-active' : ''}\">\n <a @click=\"${this.onTabClick}\" href=\"#pages\" class=\"is-size-6\" aria-label=\"Pages\" aria-current=\"${this.tabData.view === 'pages' ? 'location' : ''}\">\n <span class=\"icon\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_6___default.a}\" aria-hidden=\"true\" title=\"Pages\"></fa-icon></span>\n <span class=\"tab-label ${isSidebar ? 'is-hidden' : ''}\" title=\"Pages\">Pages</span>\n </a>\n </li>\n\n <li class=\"${this.tabData.view === 'resources' ? 'is-active' : ''}\">\n <a @click=\"${this.onTabClick}\" href=\"#resources\" class=\"is-size-6\" aria-label=\"URLs\" aria-current=\"${this.tabData.view === 'resources' ? 'location' : ''}\">\n <span class=\"icon\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_5___default.a}\" aria-hidden=\"true\" title=\"URLs\"></fa-icon></span>\n <span class=\"tab-label ${isSidebar ? 'is-hidden' : ''}\" title=\"URLs\">URLs</span>\n </a>\n </li>\n\n <li class=\"${this.tabData.view === 'info' ? 'is-active' : ''}\">\n <a @click=\"${this.onTabClick}\" href=\"#info\" class=\"is-size-6\" aria-label=\"Archive Info\" aria-current=\"${this.tabData.view === 'info' ? 'location' : ''}\">\n <span class=\"icon\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_7___default.a}\" aria-hidden=\"true\" title=\"Archive Info\"></fa-icon></span>\n <span class=\"tab-label ${isSidebar ? 'is-hidden' : ''}\" title=\"Archive Info\">Info</span>\n </a>\n </li>\n\n ${isSidebar ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li class=\"sidebar-nav right\">\n <a role=\"button\" href=\"#\" @click=\"${this.onFullPageView}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" class=\"is-marginless is-size-6 is-paddingless\">\n <span class=\"nav-hover\" aria-hidden=\"true\">Expand</span>\n <span class=\"is-sr-only\">Expand Sidebar to Full View</span>\n <fa-icon title=\"Expand\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_16___default.a}\" aria-hidden=\"true\"></fa-icon>\n </a>\n </li>` : ``}\n </ul>\n </nav>`;\n }\n\n renderLocationBar() {\n if (this.embed === \"replayonly\") {\n return \"\";\n }\n\n const dateStr = Object(_pageutils__WEBPACK_IMPORTED_MODULE_2__[\"tsToDate\"])(this.ts).toLocaleString();\n\n const isReplay = !!this.tabData.url;\n\n const showFavIcon = isReplay && this.favIconUrl;\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a class=\"skip-link\" href=\"#skip-replay-target\" @click=\"${this.skipMenu}\">Skip replay navigation</a>\n <nav class=\"replay-bar\" aria-label=\"replay\">\n <div class=\"field has-addons\">\n <a href=\"#\" role=\"button\" class=\"button narrow is-borderless is-hidden-touch\" id=\"fullscreen\" @click=\"${this.onFullscreenToggle}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n title=\"${this.isFullscreen ? \"Exit Full Screen\" : \"Full Screen\"}\" aria-label=\"${this.isFullscreen ? \"Exit Fullscreen\" : \"Fullscreen\"}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${this.isFullscreen ? _fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_11___default.a : _fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_10___default.a}\"></fa-icon>\n </span>\n </a>\n <a href=\"#\" role=\"button\" class=\"button narrow is-borderless is-hidden-mobile\" @click=\"${this.onGoBack}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n title=\"Back\" aria-label=\"Back\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_12___default.a}\"></fa-icon>\n </span>\n </a>\n <a href=\"#\" role=\"button\" class=\"button narrow is-borderless is-hidden-mobile\" @click=\"${this.onGoForward}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n title=\"Forward\" aria-label=\"Forward\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_13___default.a}\"></fa-icon>\n </span>\n </a>\n <a href=\"#\" role=\"button\" class=\"button narrow is-borderless ${this.isLoading ? 'is-loading' : 'is-hidden-mobile'}\" id=\"refresh\" @click=\"${this.onRefresh}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n title=\"Reload\" aria-label=\"Reload\">\n <span class=\"icon is-small\">\n ${!this.isLoading ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_9___default.a}\"></fa-icon>\n ` : ``}\n </span>\n </a>\n <a href=\"#\" role=\"button\" class=\"button narrow is-borderless is-hidden-mobile ${!isReplay ? 'grey-disabled' : ''}\" @click=\"${this.onShowPages}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n ?disabled=\"${!isReplay}\" title=\"Browse Contents\" aria-label=\"Browse Contents\" aria-controls=\"contents\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_4___default.a}\"></fa-icon>\n </span>\n </a>\n ${this.renderExtraToolbar(false)}\n <form @submit=\"${this.onSubmit}\">\n <div class=\"control is-expanded ${showFavIcon ? 'has-icons-left' : ''}\">\n <input id=\"url\" class=\"input\" type=\"text\" @keydown=\"${this.onKeyDown}\" @blur=\"${this.onLostFocus}\" .value=\"${this.url}\" placeholder=\"Enter text to search or a URL to replay\"/>\n ${isReplay ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<p id=\"datetime\" class=\"control is-hidden-mobile\">${dateStr}</p>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n ${showFavIcon ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <span class=\"favicon icon is-small is-left\">\n <img src=\"${this.favIconUrl}\"/>\n </span>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n </div>\n </form>\n\n <div class=\"dropdown is-right ${this.menuActive ? 'is-active' : ''}\" @click=\"${(e) => this.menuActive = false}\">\n <div class=\"dropdown-trigger\">\n <button class=\"button is-borderless\" aria-haspopup=\"true\" aria-controls=\"menu-dropdown\" aria-expanded=\"${this.menuActive}\" @click=\"${this.onMenu}\"\n aria-label=\"more replay controls\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_14___default.a}\"></fa-icon>\n </span>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"menu-dropdown\">\n <div class=\"dropdown-content\">\n <a href=\"#\" role=\"button\" class=\"dropdown-item is-hidden-desktop\" @click=\"${this.onFullscreenToggle}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${this.isFullscreen ? _fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_11___default.a : _fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_10___default.a}\"></fa-icon>\n </span>\n <span>Full Screen</span>\n </a>\n <a href=\"#\" role=\"button\" class=\"dropdown-item is-hidden-tablet\" @click=\"${this.onGoBack}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_12___default.a}\"></fa-icon>\n </span>\n <span>Back</span>\n </a>\n <a href=\"#\" role=\"button\" class=\"dropdown-item is-hidden-tablet\" @click=\"${this.onGoForward}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_13___default.a}\"></fa-icon>\n </span>\n <span>Forward</span>\n </a>\n <a href=\"#\" role=\"button\" class=\"dropdown-item is-hidden-tablet\" @click=\"${this.onRefresh}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_9___default.a}\"></fa-icon>\n </span>\n <span>Reload</span>\n </a>\n <a href=\"#\" role=\"button\" class=\"dropdown-item is-hidden-tablet ${!isReplay ? 'grey-disabled' : ''}\" @click=\"${this.onShowPages}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_4___default.a}\"></fa-icon>\n </span>\n <span>Browse Contents</span>\n </a>\n ${this.renderExtraToolbar(true)}\n ${!this.editable ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <hr class=\"dropdown-divider is-hidden-desktop\">\n <a href=\"#\" role=\"button\" class=\"dropdown-item\" @click=\"${this.onPurgeCache}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\">\n <span class=\"icon is-small\">\n <fa-icon size=\"1.0em\" class=\"has-text-grey\" aria-hidden=\"true\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_8___default.a}\"></fa-icon>\n </span>\n <span>Purge Cache + Full Reload</span>\n </a>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n ${dateStr ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <hr class=\"dropdown-divider is-hidden-desktop\">\n <div class=\"dropdown-item info is-hidden-desktop\">\n <span class=\"menu-head\">Capture Date</span>${dateStr}\n </div>` : ``}\n <hr class=\"dropdown-divider\">\n <a href=\"#\" role=\"button\" class=\"dropdown-item\" @click=\"${this.onAbout}\">\n <fa-icon class=\"menu-logo\" size=\"1.0rem\" aria-hidden=\"true\" .svg=${this.appLogo}></fa-icon>\n <span> About ${this.appName}</span>\n <span class=\"menu-version\">(${\"1.3.5\"})</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </nav><p id=\"skip-replay-target\" tabindex=\"-1\" class=\"is-sr-only\">Skipped</p>`;\n }\n\n dragStart() {\n const replay = this.renderRoot.querySelector(\"wr-coll-replay\");\n if (replay) {\n replay.setDisablePointer(true);\n }\n }\n\n dragEnd() {\n const replay = this.renderRoot.querySelector(\"wr-coll-replay\");\n if (replay) {\n replay.setDisablePointer(false);\n }\n }\n\n renderCollInfo() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"info-bg\">\n <wr-coll-info\n class=\"is-list\"\n .coll=\"${this.collInfo}\"\n ?detailed=\"${true}\"\n ?canDelete=\"${!this.embed}\"\n @coll-purge=\"${this.onPurgeCache}\"\n ></wr-coll-info>\n </div>`;\n }\n\n renderExtraToolbar(isDropdown = false) {\n return '';\n }\n\n renderCollTabs(isSidebar) {\n const isStory = this.hasStory && this.tabData.view === 'story';\n const isPages = this.tabData.view === 'pages';\n const isResources = this.tabData.view === 'resources';\n const isInfo = this.tabData.view === 'info';\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n\n ${isInfo ? this.renderCollInfo() : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n ${isStory ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-coll-story .collInfo=\"${this.collInfo}\"\n .active=\"${isStory}\"\n currList=\"${this.tabData.currList || 0}\"\n @coll-tab-nav=\"${this.onCollTabNav}\" id=\"story\"\n .isSidebar=\"${isSidebar}\"\n class=\"${isStory ? '' : 'is-hidden'} ${isSidebar ? 'sidebar' : ''}\"\n role=\"${isSidebar ? '' : 'main'}\"\n >\n </wr-coll-story>` : ''}\n\n ${isResources ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-coll-resources .collInfo=\"${this.collInfo}\"\n .active=\"${isResources}\"\n query=\"${this.tabData.query || \"\"}\"\n urlSearchType=\"${this.tabData.urlSearchType || \"\"}\"\n .currMime=\"${this.tabData.currMime || \"\"}\"\n @coll-tab-nav=\"${this.onCollTabNav}\" id=\"resources\"\n .isSidebar=\"${isSidebar}\"\n class=\"is-paddingless ${isResources ? '' : 'is-hidden'} ${isSidebar ? 'sidebar' : ''}\"\n role=\"${isSidebar ? '' : 'main'}\"\n >\n </wr-coll-resources>` : ``}\n\n ${isPages ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-page-view\n .collInfo=\"${this.collInfo}\"\n .active=\"${isPages}\"\n .editable=\"${this.editable}\"\n .isSidebar=\"${isSidebar}\"\n currList=\"${this.tabData.currList || 0}\"\n query=\"${this.tabData.query || \"\"}\"\n .url=\"${this.tabData.url || \"\"}\"\n .ts=\"${this.tabData.ts || \"\"}\"\n @coll-tab-nav=\"${this.onCollTabNav}\" id=\"pages\"\n @coll-update=\"${this.onCollUpdate}\"\n class=\"${isPages ? '' : 'is-hidden'} ${isSidebar ? 'sidebar' : ''}\"\n role=\"${isSidebar ? '' : 'main'}\"\n >\n </wr-page-view>` : ``}\n `;\n }\n\n skipMenu(event){\n // This is a workaround, since this app's routing doesn't permit normal\n // following of in-page anchors.\n event.preventDefault();\n this.renderRoot.querySelector(\"#skip-replay-target\").focus()\n }\n\n onKeyDown(event) {\n if (event.key === \"Esc\" || event.key === \"Escape\") {\n event.preventDefault();\n event.currentTarget.value = this.url;\n }\n }\n\n onMenu(event) {\n event.stopPropagation();\n this.menuActive = !this.menuActive;\n\n if (this.menuActive) {\n document.addEventListener(\"click\", () => {\n this.menuActive = false;\n }, {once: true});\n }\n }\n\n onFullscreenToggle(event) {\n event.preventDefault();\n this.menuActive = false;\n if (!this.isFullscreen) {\n this.requestFullscreen();\n } else {\n document.exitFullscreen();\n }\n }\n\n onGoBack(event) {\n event.preventDefault();\n this.menuActive = false;\n window.history.back();\n }\n\n onGoForward(event) {\n event.preventDefault();\n this.menuActive = false;\n window.history.forward();\n }\n\n onShowPages(event) {\n event.preventDefault();\n // show sidebar for tablet or wider, or hide sidebar\n if (this.showSidebar || (document.documentElement.clientWidth >= 769)) {\n this.showSidebar = !this.showSidebar;\n } else {\n // otherwise, just go to full pages view\n this.showSidebar = false;\n this.updateTabData({url: \"\", ts: \"\"});\n }\n }\n\n onFullPageView(event) {\n event.preventDefault();\n this.updateTabData({url: \"\", ts: \"\"});\n }\n\n onHideSidebar(event) {\n event.preventDefault();\n this.showSidebar = false;\n }\n\n async onFavIcons(event) {\n for (const icon of event.detail.icons) {\n const resp = await fetch(icon.href);\n if (resp.status === 200) {\n const ct = resp.headers.get(\"Content-Type\");\n if (ct && !ct.startsWith(\"text/\")) {\n this.favIconUrl = icon.href;\n return;\n }\n }\n }\n\n // not found\n this.favIconUrl = \"\";\n }\n\n onPurgeCache(event) {\n event.preventDefault();\n\n const reload = event.detail && event.detail.reload !== undefined ? event.detail.reload : true;\n\n this.deleteFully(reload);\n }\n\n async deleteFully(reload = false) {\n const deleteURL = this.collInfo.apiPrefix + (reload ? \"?reload=1\" : \"\");\n\n const resp = await fetch(deleteURL, {\n method: 'DELETE',\n });\n\n if (resp.status !== 200) {\n console.warn(\"purge failed: \" + resp.status);\n }\n\n if (!reload && !this.embed) {\n window.location.search = \"\";\n return;\n }\n\n window.location.hash = \"\";\n window.location.reload();\n }\n\n onSubmit(event) {\n event.preventDefault();\n const input = this.renderRoot.querySelector(\"input\");\n if (input.value) {\n this.navigateTo(input.value);\n } else {\n input.value = this.url;\n }\n return false;\n }\n\n onLostFocus(event) {\n if (!event.currentTarget.value) {\n event.currentTarget.value = this.url;\n }\n }\n\n navigateTo(value) {\n let data;\n\n if (value.startsWith(\"http://\") || value.startsWith(\"https://\")) {\n data = {url: value};\n\n if (value === this.tabData.url) {\n const replay = this.renderRoot.querySelector(\"wr-coll-replay\");\n if (replay) {\n replay.refresh();\n }\n return;\n }\n\n } else {\n if (!value.startsWith(RWP_SCHEME)) {\n data = {query: value, view: \"pages\"};\n } else {\n data = this._stringToParams(value);\n }\n }\n this.updateTabData(data);\n }\n\n _stringToParams(value) {\n const q = new URLSearchParams(value.slice(RWP_SCHEME.length));\n const data = {};\n data.url = \"\";\n data.ts = \"\";\n\n for (const param of [\"query\", \"view\", \"currList\", \"currMime\", \"urlSearchType\"]) {\n if (q.has(param)) {\n data[param] = q.get(param);\n }\n }\n\n return data;\n }\n\n _paramsToString(value) {\n const q = new URLSearchParams();\n\n for (const param of [\"query\", \"view\", \"currList\", \"currMime\", \"urlSearchType\"]) {\n if (param in value) {\n q.set(param, value[param]);\n }\n }\n\n return q.toString();\n }\n\n onRefresh(event) {\n if (event) {\n event.preventDefault();\n }\n\n this.menuActive = false;\n\n if (this.tabData.url) {\n const replay = this.renderRoot.querySelector(\"wr-coll-replay\");\n if (replay) {\n replay.refresh();\n }\n } else {\n window.location.reload();\n }\n }\n\n onAbout() {\n this.dispatchEvent(new CustomEvent(\"about-show\"));\n }\n}\n\ncustomElements.define(\"wr-coll\", Coll);\n\n\n\n\n//# sourceURL=webpack:///./src/coll.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/embed.js":
|
|
/*!**********************!*\
|
|
!*** ./src/embed.js ***!
|
|
\**********************/
|
|
/*! exports provided: Embed */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Embed\", function() { return Embed; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n\n\n\n\n\n\n\nvar scriptSrc = document.currentScript && document.currentScript.src;\n\n\n// ===========================================================================\nclass Embed extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.replaybase = window.location.origin + \"/replay/\";\n this.swName = \"sw.js\";\n this.view = \"replay\";\n this.ts = \"\";\n this.url = \"\";\n this.query = \"\";\n this.config = \"\";\n this.coll = \"\";\n this.paramString = null;\n this.deepLink = false;\n this.swInited = false;\n this.embed = null;\n this.reloadCount = 0;\n }\n\n static get properties() {\n return {\n url: { type: String },\n ts: { type: String },\n query: { type: String },\n\n source: { type: String },\n view: { type: String },\n embed: { type: String },\n\n replaybase: { type: String },\n swName: { type: String },\n\n title: { type: String },\n\n coll: { type: String },\n config: { type: String },\n\n swInited: { type: Boolean },\n\n paramString: { type: String },\n hashString: { type: String },\n\n deepLink: { type: Boolean },\n noSW: { type: Boolean },\n }\n }\n\n async doRegister() {\n try {\n await Object(_pageutils__WEBPACK_IMPORTED_MODULE_1__[\"registerSW\"])(this.swName, this.replaybase);\n console.log(\"done\");\n this.swInited = true;\n } catch (e) {\n console.log(e);\n this.noSW = true;\n }\n }\n\n firstUpdated() {\n this.doRegister();\n\n window.addEventListener(\"message\", (event) => {\n const iframe = this.renderRoot.querySelector(\"iframe\");\n\n if (iframe && event.source === iframe.contentWindow) {\n if (event.data.title) {\n this.title = event.data.title;\n }\n\n if (!this.deepLink) {\n return;\n }\n\n const currHash = new URLSearchParams(event.data);\n const url = new URL(window.location.href);\n url.hash = \"#\" + currHash.toString();\n window.history.replaceState({}, \"\", url);\n }\n });\n\n if (this.deepLink) {\n this.updateFromHash();\n window.addEventListener(\"hashchange\", (event) => this.updateFromHash());\n }\n }\n\n updateFromHash() {\n const qs = new URLSearchParams(window.location.hash.slice(1));\n\n if (qs.has(\"url\")) {\n this.url = qs.get(\"url\");\n }\n if (qs.has(\"ts\")) {\n this.ts = qs.get(\"ts\");\n }\n if (qs.has(\"query\")) {\n this.query = qs.get(\"query\");\n }\n if (qs.has(\"view\")) {\n this.view = qs.get(\"view\");\n }\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"url\") ||\n changedProperties.has(\"ts\") ||\n changedProperties.has(\"query\") ||\n changedProperties.has(\"view\") ||\n changedProperties.has(\"source\")) {\n\n this.embed = this.embed || \"default\";\n\n this.paramString = new URLSearchParams({\n source: this.source,\n customColl: this.coll,\n config: this.config,\n basePageUrl: window.location.href.split(\"#\")[0],\n embed: this.embed,\n }).toString();\n\n this.hashString = new URLSearchParams({\n url: this.url,\n ts: this.ts,\n query: this.query,\n view: this.view\n }).toString();\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_2__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n .logo {\n margin: 1em;\n flex-grow: 1;\n }\n .error {\n white-space: pre-wrap;\n text-align: center;\n }\n .full-width {\n width: 100%;\n }\n iframe {\n width: 100%;\n height: 100%;\n border: 0px;\n padding: 0px;\n margin: 0px;\n }\n :host {\n width: 100%;\n height: 100%;\n }\n `);\n }\n\n render() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.paramString && this.hashString && this.swInited ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <iframe sandbox=\"allow-downloads allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-scripts allow-same-origin allow-forms\"\n @load=\"${this.onLoad}\" src=\"${this.replaybase}?${this.paramString}#${this.hashString}\" allow=\"autoplay *; fullscreen\"\n title=\"Replay of ${this.title ? `${this.title}:` :``} ${this.url}\"></iframe>\n\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n ${this.noSW ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <section class=\"full-width\">\n <div class=\"has-text-centered\">\n <fa-icon class=\"logo\" id=\"wrlogo\" size=\"2.5rem\" .svg=${_misc__WEBPACK_IMPORTED_MODULE_2__[\"rwpLogo\"]} aria-hidden=\"true\"></fa-icon>\n </div>\n <div class=\"error\">\nSorry, ReplayWeb.page won't work in this browser as Service Workers are not supported.\nPlease try a different browser.\\n\n(Service Workers are disabled in Firefox in Private Mode. If Using Private Mode in Firefox, try regular mode).\n </div>\n </section>\n `: ``}`;\n }\n\n onLoad(event) {\n const win = event.target.contentWindow;\n const doc = event.target.contentDocument;\n\n if (win.navigator.serviceWorker && !win.navigator.serviceWorker.controller && this.reloadCount <= 2) {\n this.reloadCount++;\n setTimeout(() => win.location.reload(), 100);\n return;\n }\n\n this.reloadCount = 0;\n\n if (win.customElements.get(\"replay-app-main\")) {\n return;\n }\n\n const script = doc.createElement(\"script\");\n //const script = event.target.contentDocument.querySelector(\"script\");\n script.src = scriptSrc;\n doc.head.appendChild(script);\n }\n}\n\n// ===========================================================================\nasync function main() {\n customElements.define(\"replay-web-page\", Embed);\n}\n\nmain();\n\n\n\n\n//# sourceURL=webpack:///./src/embed.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/gdrive.js":
|
|
/*!***********************!*\
|
|
!*** ./src/gdrive.js ***!
|
|
\***********************/
|
|
/*! exports provided: GDrive */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GDrive\", function() { return GDrive; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/brands/google-drive.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n\n\n// ===========================================================================\nclass GDrive extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.state = \"trypublic\";\n this.sourceUrl = \"\";\n this.scriptLoaded = false;\n this.error = false;\n }\n\n static get properties() {\n return {\n state: { type: String },\n sourceUrl: { type: String },\n error: { type: Boolean },\n reauth: { type: Boolean }\n }\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"sourceUrl\")) {\n this.error = false;\n this.state = \"trypublic\";\n this.tryPublicAccess().then((result) => {\n if (!result) {\n this.state = \"tryauto\";\n this.requestUpdate();\n }\n });\n }\n }\n\n async tryPublicAccess() {\n try {\n const sourceUrl = this.sourceUrl;\n const fileId = sourceUrl.slice(\"googledrive://\".length);\n const publicCheckUrl = `${\"https://helper-proxy.webrecorder.workers.dev\"}/g/${fileId}`;\n\n let resp = null;\n try {\n resp = await fetch(publicCheckUrl);\n } catch (e) {\n return false;\n }\n const json = await resp.json();\n if (!json.url || !json.name || !json.size) {\n return false;\n }\n\n // only allow for small downloads that will not result in partial download\n if (json.size > 15000000) {\n return false;\n }\n\n const publicUrl = json.url;\n\n try {\n const abort = new AbortController();\n const signal = abort.signal;\n resp = await fetch(publicUrl, {signal});\n abort.abort();\n if (resp.status != 200) {\n return false;\n }\n } catch(e) {\n return false;\n }\n\n const name = json.name;\n const extra = {publicUrl};\n const size = Number(json.size);\n \n this.dispatchEvent(new CustomEvent(\"load-ready\", {detail: {name, extra, size, sourceUrl}}));\n return true;\n\n } catch (e) {\n return false;\n }\n }\n\n onLoad() {\n this.scriptLoaded = true;\n this.gauth('none', (response) => {\n if (response.error) {\n if (this.state !== \"implicitonly\") {\n this.state = \"trymanual\";\n }\n } else {\n this.authed(response);\n }\n });\n }\n\n onClickAuth() {\n this.gauth('select_account', (response) => {\n if (!response.error) {\n this.authed(response);\n }\n });\n }\n\n async authed(response) {\n const sourceUrl = this.sourceUrl;\n const fileId = sourceUrl.slice(\"googledrive://\".length);\n const metadataUrl = `https://www.googleapis.com/drive/v3/files/${fileId}`;\n const authToken = response.access_token;\n const headers = {\"Authorization\": `Bearer ${authToken}`};\n\n const resp = await fetch(metadataUrl + \"?fields=name,size&supportsAllDrives=true\", {headers});\n\n if ((resp.status === 404 || resp.status == 403)) {\n if (this.state !== \"implicitonly\") {\n this.state = \"trymanual\";\n }\n this.error = true;\n return;\n }\n\n this.error = false;\n\n const metadata = await resp.json();\n const name = metadata.name;\n const size = Number(metadata.size);\n\n this.dispatchEvent(new CustomEvent(\"load-ready\", {detail: {sourceUrl, headers, size, name}}));\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]``);\n }\n\n render() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.script()}\n ${this.state !== \"trymanual\" ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p>Connecting to Google Drive...</p>\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.error ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"error has-text-danger\">\n <p>${this.reauth ? 'Some resources are loaded on demand from Google Drive, which requires reauthorization.' :\n 'Could not access this file with the current Google Drive account.'}</p>\n <p>If you have multiple Google Drive accounts, be sure to select the correct one.</p>\n </div>\n <br/>\n ` : ``}\n <button class=\"button is-warning is-rounded\" @click=\"${this.onClickAuth}\">\n <span class=\"icon\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2___default.a}\"></fa-icon></span>\n <span>Authorize Google Drive</span>\n </button>\n `}`;\n }\n\n script() {\n if (this.state === \"trypublic\" || this.scriptLoaded) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``;\n }\n const script = document.createElement('script');\n script.onload = (() => this.onLoad());\n script.src = 'https://apis.google.com/js/platform.js';\n return script;\n }\n\n gauth(prompt, callback) {\n gapi.load('auth2', () => {\n gapi.auth2.authorize({\n client_id: \"160798412227-tko4c82uopud11q105b2lvbogsj77hlg.apps.googleusercontent.com\",\n scope: \"https://www.googleapis.com/auth/drive.file\",\n response_type: \"token\",\n prompt\n }, callback);\n });\n }\n}\n\ncustomElements.define(\"wr-gdrive\", GDrive);\n\n\n\n//# sourceURL=webpack:///./src/gdrive.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/loader.js":
|
|
/*!***********************!*\
|
|
!*** ./src/loader.js ***!
|
|
\***********************/
|
|
/*! exports provided: Loader */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Loader\", function() { return Loader; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! pretty-bytes */ \"./node_modules/pretty-bytes/index.js\");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass Loader extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.progress = 0;\n this.total = 0;\n this.percent = 0;\n this.coll = \"\";\n this.state = \"waiting\";\n this.loadInfo = null;\n\n this.currentSize = 0;\n this.totalSize = 0;\n\n this.tryFileHandle = !!window.showOpenFilePicker;\n }\n\n static get properties() {\n return {\n sourceUrl: { type: String },\n loadInfo: { type: Object },\n state: { type: String },\n progress: { type: Number },\n percent: { type: Number },\n currentSize: { type: Number },\n totalSize: { type: Number },\n error: { type: String},\n total: { type: Number },\n status: { type: String },\n coll: { type: String },\n embed: { type: String },\n tryFileHandle: { type: Boolean }\n }\n }\n\n firstUpdated(props) {\n this.initMessages();\n //this.doLoad();\n }\n\n initMessages() {\n if (!navigator.serviceWorker) {\n return;\n }\n\n navigator.serviceWorker.addEventListener(\"message\", (event) => {\n switch (event.data.msg_type) {\n case \"collProgress\":\n if (event.data.name === this.coll) {\n this.percent = event.data.percent;\n if (event.data.error) {\n this.error = event.data.error;\n this.state = \"errored\";\n if (this.error === \"missing_local_file\") {\n this.tryFileHandle = false;\n }\n }\n if (event.data.currentSize && event.data.totalSize) {\n this.currentSize = event.data.currentSize;\n this.totalSize = event.data.totalSize;\n }\n }\n break;\n\n case \"collAdded\":\n if (event.data.name === this.coll) {\n if (!this.total) {\n this.total = 100;\n }\n this.progress = this.total;\n this.percent = 100;\n this.dispatchEvent(new CustomEvent(\"coll-loaded\", {detail: event.data}));\n }\n break;\n }\n });\n }\n\n async doLoad() {\n let sourceUrl = this.sourceUrl;\n let source = null;\n\n this.percent = this.currentSize = this.totalSize = 0;\n\n if (!navigator.serviceWorker) {\n this.state = \"errored\";\n if (window.location.protocol === \"http:\") {\n this.error = `\\\nSorry, the ReplayWeb.page system must be loaded from an HTTPS URL, but was loaded from: ${window.location.host}.\nPlease try loading this page from an HTTPS URL`;\n } else {\n this.error = \"Sorry, this browser is not supported. Please try a different browser\\n(If you're using Firefox, try without Private Mode)\";\n }\n return;\n }\n\n // custom protocol handlers here...\n try {\n const {scheme, host, path} = Object(_pageutils__WEBPACK_IMPORTED_MODULE_3__[\"parseURLSchemeHostPath\"])(sourceUrl);\n\n switch (scheme) {\n case \"googledrive\":\n this.state = \"googledrive\";\n source = await this.googledriveInit();\n break;\n\n case \"s3\":\n source = {sourceUrl,\n loadUrl: `https://${host}.s3.amazonaws.com${path}`,\n name: this.sourceUrl};\n break;\n\n case \"file\":\n if (!this.loadInfo && !this.tryFileHandle) {\n this.state = \"errored\";\n this.error = `\\\nFile URLs can not be entered directly or shared.\nYou can select a file to upload from the main page by clicking the \\'Choose File...\\' button.`;\n return;\n }\n\n source = this.loadInfo;\n break;\n\n case \"ipfs\":\n if (_misc__WEBPACK_IMPORTED_MODULE_1__[\"IS_APP\"]) {\n const url = new URL(\"http://files.replayweb.page/\");\n const hash = sourceUrl.split(\"#\", 1)[0];\n url.searchParams.set(\"ipfs\", hash.slice(\"ipfs://\".length));\n source = {sourceUrl, loadUrl: url.href};\n }\n break;\n }\n } catch (e) {\n console.log(e);\n }\n\n if (!source) {\n source = {sourceUrl};\n }\n\n this.state = \"started\";\n\n const msg = {\"msg_type\": \"addColl\", \"name\": this.coll, skipExisting: true, file: source};\n\n if (this.loadInfo && this.loadInfo.extraConfig) {\n msg.extraConfig = this.loadInfo.extraConfig;\n }\n\n if (!navigator.serviceWorker.controller) {\n navigator.serviceWorker.addEventListener(\"controllerchange\", (event) => {\n navigator.serviceWorker.controller.postMessage(msg);\n });\n } else {\n navigator.serviceWorker.controller.postMessage(msg);\n }\n }\n\n googledriveInit() {\n this._gdWait = new Promise((resolve) => this._gdResolve = resolve);\n return this._gdWait;\n }\n\n async onLoadReady(event) {\n if (this._gdResolve) {\n //const digest = await digestMessage(url, 'SHA-256');\n //this.coll = \"id-\" + digest.slice(0, 12);\n\n this._gdResolve(event.detail);\n }\n }\n\n onCancel() {\n if (navigator.serviceWorker && navigator.serviceWorker.controller) {\n navigator.serviceWorker.controller.postMessage({\"msg_type\": \"cancelLoad\", \"name\": this.coll});\n }\n }\n\n updated(changedProperties) {\n if (this.sourceUrl && changedProperties.has(\"sourceUrl\") || changedProperties.has(\"tryFileHandle\")) {\n this.doLoad();\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n height: 100%;\n display: flex;\n }\n\n .logo {\n width: 96px;\n height: 96px;\n margin: 1em;\n flex-grow: 1;\n }\n\n .progress-div {\n position: relative;\n width: 400px !important;\n }\n\n .progress-label {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n font-size: calc(1.5rem / 1.5);\n line-height: 1.5rem;\n }\n\n .loaded-prog {\n margin-bottom: 1em;\n }\n\n .error {\n white-space: pre-wrap;\n margin-bottom: 2em;\n }\n\n section.container {\n margin: auto;\n }\n `);\n }\n\n render() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <section class=\"container\">\n <div class=\"has-text-centered is-flex\">\n <wr-anim-logo class=\"logo\" size=\"96px\"/>\n </div>\n ${!this.embed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"level\">\n <p class=\"level-item\">Loading <b>${this.sourceUrl}</b>...</p>\n </div>` : ``}\n <div class=\"level\">\n <div class=\"level-item has-text-centered\">\n ${this.renderContent()}\n </div>\n </div>\n </section>\n `;\n }\n\n renderContent() {\n switch (this.state) {\n case \"googledrive\":\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<wr-gdrive .sourceUrl=${this.sourceUrl} @load-ready=${this.onLoadReady}/>`\n\n case \"started\":\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"progress-div\">\n <progress id=\"progress\" class=\"progress is-primary is-large\" \n value=\"${this.percent}\" max=\"100\"></progress>\n <label class=\"progress-label\" for=\"progress\">${this.percent}%</label>\n ${this.currentSize && this.totalSize ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p class=\"loaded-prog\">Loaded <b>${pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default()(this.currentSize)}</b> of <b>${pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default()(this.totalSize)}</b></p>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n ${!this.embed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <button @click=\"${this.onCancel}\" class=\"button is-danger\">Cancel</button>` : ``}\n </div>`;\n\n case \"errored\":\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"has-text-left\">\n <div class=\"error has-text-danger\">${this.error}</div>\n <div>\n ${this.embed ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a class=\"button is-warning\" @click=${(e) => window.parent.location.reload()}>Try Again</a>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a href=\"/\" class=\"button is-warning\">Back</a>`}\n </div>`;\n\n case \"waiting\":\n default:\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<progress class=\"progress is-primary is-large\" style=\"max-width: 400px\"/>`;\n\n }\n }\n}\n\ncustomElements.define(\"wr-loader\", Loader);\n\n\n\n//# sourceURL=webpack:///./src/loader.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/misc.js":
|
|
/*!*********************!*\
|
|
!*** ./src/misc.js ***!
|
|
\*********************/
|
|
/*! exports provided: wrapCss, IS_APP, clickOnSpacebarPress, rwpLogo, FaIcon, AnimLogo, LitElement, html, css, unsafeCSS, unsafeSVG */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapCss\", function() { return wrapCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_APP\", function() { return IS_APP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clickOnSpacebarPress\", function() { return clickOnSpacebarPress; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FaIcon\", function() { return FaIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AnimLogo\", function() { return AnimLogo; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LitElement\", function() { return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unsafeCSS\", function() { return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"unsafeCSS\"]; });\n\n/* harmony import */ var lit_html_directives_unsafe_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit-html/directives/unsafe-svg */ \"./node_modules/lit-html/directives/unsafe-svg.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unsafeSVG\", function() { return lit_html_directives_unsafe_svg__WEBPACK_IMPORTED_MODULE_1__[\"unsafeSVG\"]; });\n\n/* harmony import */ var lit_html_directives_style_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lit-html/directives/style-map */ \"./node_modules/lit-html/directives/style-map.js\");\n/* harmony import */ var _assets_main_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assets/main.scss */ \"./assets/main.scss\");\n/* harmony import */ var _assets_main_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_assets_main_scss__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../assets/logo.svg */ \"./assets/logo.svg\");\n/* harmony import */ var _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_assets_logo_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony reexport (default from non-harmony) */ __webpack_require__.d(__webpack_exports__, \"rwpLogo\", function() { return _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4___default.a; });\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nconst allCss = Object(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"unsafeCSS\"])(_assets_main_scss__WEBPACK_IMPORTED_MODULE_3___default.a);\nfunction wrapCss(custom) {\n return [allCss, custom];\n}\n\nconst IS_APP = window.IS_APP || window.electron && window.electron.IS_APP || window.matchMedia('(display-mode: standalone)').matches;\n\n\n// ===========================================================================\n// Buttons are expected to respond to both enter/return and spacebar.\n// If using `<a>` with `role='button'`, assign this handler to keyup.\nfunction clickOnSpacebarPress(event) {\n if (event.key == \" \") {\n event.preventDefault();\n event.target.click();\n }\n}\n\n\n// ===========================================================================\nclass FaIcon extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.size = \"1.1em\";\n this.width = null;\n this.height = null;\n }\n\n static get properties() {\n return {\n svg: { type: String },\n size: { type: String },\n width: { type: String },\n height: { type: String }\n }\n }\n\n static get styles() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n display: inline-block;\n padding: 0;\n margin: 0;\n line-height: 1.0em;\n }\n :host svg {\n fill: var(--fa-icon-fill-color, currentcolor);\n width: var(--fa-icon-width, 19px);\n height: var(--fa-icon-height, 19px);\n }\n `;\n }\n\n render() {\n if (!this.svg) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``;\n }\n\n const styles = {};\n\n if (this.size) {\n styles.width = this.size;\n styles.height = this.size;\n } else {\n if (this.width) {\n styles.width = this.width;\n }\n if (this.height) {\n styles.height = this.height;\n }\n }\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<svg style=\"${Object(lit_html_directives_style_map__WEBPACK_IMPORTED_MODULE_2__[\"styleMap\"])(styles)}\"><g>${Object(lit_html_directives_unsafe_svg__WEBPACK_IMPORTED_MODULE_1__[\"unsafeSVG\"])(this.svg)}</g></svg>`;\n }\n}\n\n\n// ===========================================================================\nclass AnimLogo extends FaIcon\n{\n constructor() {\n super();\n this.svg = _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4___default.a;\n }\n\n static get styles() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n #wrlogo #stop5687 {\n animation: animLeft 7s linear infinite;\n }\n\n #wrlogo #stop5689 {\n animation: animRight 7s linear infinite;\n }\n\n @keyframes animLeft {\n 0% {stop-color: #4876ff}\n 25% {stop-color: #1b0921}\n 50% {stop-color: #4876ff}\n 75% {stop-color: #04cdff}\n 100% {stop-color: #4876ff}\n }\n\n @keyframes animRight {\n 0% {stop-color: #04cdff}\n 25% {stop-color: #4876ff}\n 50% {stop-color: #1b0921}\n 75% {stop-color: #4876ff}\n 100% {stop-color: #04cdff}\n }\n `;\n }\n}\n\ncustomElements.define(\"fa-icon\", FaIcon);\ncustomElements.define(\"wr-anim-logo\", AnimLogo);\n\n\n\n\n//# sourceURL=webpack:///./src/misc.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/pageentry.js":
|
|
/*!**************************!*\
|
|
!*** ./src/pageentry.js ***!
|
|
\**************************/
|
|
/*! exports provided: PageEntry */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PageEntry\", function() { return PageEntry; });\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pretty-bytes */ \"./node_modules/pretty-bytes/index.js\");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var keyword_mark_element_lib_keyword_mark_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! keyword-mark-element/lib/keyword-mark.js */ \"./node_modules/keyword-mark-element/lib/keyword-mark.js\");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass PageEntry extends lit_element__WEBPACK_IMPORTED_MODULE_1__[\"LitElement\"]\n{\n constructor() {\n super();\n this.query = \"\";\n this.textSnippet = \"\";\n this.page = null;\n this.replayPrefix = \"\";\n this.deleting = false;\n this.editable = false;\n this.iconValid = false;\n this.index = 0;\n this.isCurrent = false;\n this.isSidebar = false;\n }\n\n static get properties() {\n return {\n query: { type: String },\n textSnippet: { type: String },\n page: { type: Object },\n replayPrefix: { type: String },\n deleting: { type: Boolean },\n selected: { type: Boolean },\n editable: { type: Boolean },\n iconValid: { type: Boolean },\n index: { type: Number },\n isCurrent: { type: Boolean },\n isSidebar: { type: Boolean },\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_4__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_1__[\"css\"]`\n :host {\n min-height: min-content;\n width: 100%;\n word-break: break-all;\n position: relative;\n display: flex;\n flex-direction: row;\n background: transparent;\n }\n\n :host(.sidebar) .column {\n width: unset !important;\n }\n\n :host(.sidebar) {\n width: 100%;\n }\n\n .check-select {\n padding: 0 1.0em 0 0.5em;\n height: 100%;\n margin: auto 0 auto 0;\n }\n\n .columns {\n width: 100%;\n }\n\n /* Overrde Bulma to add the tiniest margin, so the focus indicator isn't obscured */\n .columns {\n margin-top: calc(-0.75rem + 2px);\n }\n .columns:last-child {\n margin-bottom: calc(-0.75rem + 2px);\n }\n\n\n .favicon {\n width: 24px !important;\n height: 24px !important;\n display: inline-block;\n vertical-align: text-bottom;\n }\n img.favicon {\n filter: drop-shadow(1px 1px 2px grey);\n }\n\n .media-left {\n align-self: center;\n }\n\n .delete {\n position: absolute;\n top: 8px;\n right: 8px;\n }\n\n .delete:hover {\n background-color: rgb(241, 70, 104);\n }\n\n @media screen and (max-width: 768px) {\n ${PageEntry.sidebarStyles()}\n }\n\n ${PageEntry.sidebarStyles(lit_element__WEBPACK_IMPORTED_MODULE_1__[\"unsafeCSS\"]`:host(.sidebar)`)}\n\n .current a {\n background-color: rgb(207, 243, 255);\n font-style: italic;\n display: block;\n }\n\n .current .curr-page {\n font-style: italic;\n font-size: 9px;\n color: black;\n }\n\n .is-inline-date {\n display: none;\n }\n\n .media-content a {\n display: block;\n }\n `);\n }\n\n static sidebarStyles(prefix = lit_element__WEBPACK_IMPORTED_MODULE_1__[\"css\"]``) {\n return lit_element__WEBPACK_IMPORTED_MODULE_1__[\"css\"]`\n ${prefix} .col-date {\n margin-left: calc(24px + 1rem);\n display: none;\n }\n ${prefix} .col-date div {\n display: inline;\n }\n ${prefix} .col-index {\n position: absolute;\n top: 0px;\n left: 0px;\n margin-top: -0.75em;\n }\n ${prefix} .columns {\n display: flex;\n flex-direction: column-reverse;\n }\n ${prefix} .is-inline-date {\n display: initial !important;\n font-style: italic;\n }\n `;\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"page\") || changedProperties.has(\"query\")) {\n this.updateSnippet();\n this.iconValid = !!this.page.favIconUrl;\n //this.updateFavIcon();\n this.deleting = false;\n }\n }\n\n render() {\n const p = this.page;\n const date = this.page.date;\n\n const hasSize = typeof(p.size) === \"number\";\n\n return lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n ${this.editable ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <div class=\"check-select\">\n <label class=\"checkbox\">\n <input @change=${this.onSendSelToggle} type=\"checkbox\" .checked=\"${this.selected}\">\n </label>\n </div>` : ``}\n\n <div class=\"columns\">\n ${this.index ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <div class=\"column col-index is-1 is-size-7\">${this.index}.</div>\n ` : ``}\n <div class=\"column col-date is-2\">\n <div>${date ? date.toLocaleDateString() : \"\"}</div>\n <div>${date ? date.toLocaleTimeString() : \"\"}</div>\n </div>\n <div class=\"column\">\n <div class=\"media\">\n <figure class=\"media-left\">\n <p class=\"\">\n ${this.iconValid ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <img class=\"favicon\" @error=\"${(e) => this.iconValid = false}\" src=\"${this.replayPrefix}/${this.page.timestamp}id_/${p.favIconUrl}\"/>` : lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <span class=\"favicon\"></span>`}\n </p>\n </figure>\n <div class=\"media-content ${this.isCurrent ? 'current' : ''}\">\n <div role=\"heading\" aria-level=\"${this.isSidebar ? \"4\": \"3\"}\">\n <a @click=\"${this.onReplay}\" href=\"${Object(_pageutils__WEBPACK_IMPORTED_MODULE_3__[\"getReplayLink\"])(\"pages\", this.page.url, this.page.timestamp)}\">\n <p class=\"is-size-6 has-text-weight-bold has-text-link text\">\n <keyword-mark keywords=\"${this.query}\">${p.title || p.url}</keyword-mark>\n </p>\n <p class=\"has-text-dark text\"><keyword-mark keywords=\"${this.query}\">${p.url}</keyword-mark></p>\n <p class=\"has-text-grey-dark text is-inline-date\">\n ${date ? date.toLocaleString(): \"\"}\n </p>\n </a>\n ${this.textSnippet ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <div class=\"text\"><keyword-mark keywords=\"${this.query}\">${this.textSnippet}</keyword-mark></div>` : lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]``}\n </div>\n ${hasSize ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <div class=\"media-right\" style=\"margin-right: 2em\">\n ${pretty_bytes__WEBPACK_IMPORTED_MODULE_0___default()(p.size)}\n </div>` : ``}\n </div>\n </div>\n </div>\n\n ${this.editable ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n ${!this.deleting ? lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <button @click=\"${this.onSendDeletePage}\" class=\"delete\"></button>` : lit_element__WEBPACK_IMPORTED_MODULE_1__[\"html\"]`\n <button class=\"button delete is-loading is-static\"></button>\n `}` : ''}\n `;\n }\n\n async updateFavIcon() {\n if (!this.page.favIconUrl) {\n this.favIconData = null;\n return;\n }\n\n const resp = await fetch(`${this.replayPrefix}/${this.page.timestamp}id_/${this.page.favIconUrl}`);\n\n if (resp.status != 200) {\n this.favIconData = null;\n return;\n }\n\n const payload = await resp.arrayBuffer();\n const mime = resp.headers.get(\"content-type\");\n\n try {\n this.favIconData = `data:${mime};base64,${btoa(String.fromCharCode.apply(null, payload))}`;\n } catch (e) {\n console.log(e);\n this.favIconData = null;\n }\n }\n\n updateSnippet() {\n const oldVal = this.textSnippet;\n\n if (!this.query || !this.page.text) {\n this.textSnippet = null;\n this.requestUpdate('textSnippet', oldVal);\n return;\n }\n\n let textContent = this.page.text;\n let query = this.query;\n\n let inx = textContent.indexOf(this.query);\n\n if (inx < 0) {\n let textLower = textContent.toLowerCase();\n let queryLower = query.toLowerCase();\n\n inx = textLower.indexOf(queryLower);\n\n if (inx < 0) {\n this.textSnippet = null;\n this.requestUpdate('textSnippet', oldVal);\n return;\n }\n\n textContent = textLower;\n query = queryLower;\n }\n\n //let lastInx = textContent.lastIndexOf(query);\n let lastInx = inx;\n\n inx = Math.max(inx - 100, 0);\n lastInx = Math.min(lastInx + 200, textContent.length);\n\n if (inx === 0 && lastInx === textContent.length) {\n this.textSnippet = textContent;\n } else {\n this.textSnippet = \"...\" + textContent.slice(inx, lastInx) + \"...\";\n }\n\n this.requestUpdate('textSnippet', oldVal);\n }\n\n onReplay(event) {\n event.preventDefault();\n\n const data = {\n url: this.page.url,\n ts: this.page.timestamp,\n };\n this.sendChangeEvent(data);\n return false;\n }\n\n sendChangeEvent(data) {\n this.dispatchEvent(new CustomEvent(\"coll-tab-nav\", {bubbles: true, composed: true, detail: {data}}));\n }\n\n onSendDeletePage(event) {\n const page = this.page.id;\n this.deleting = true;\n this.dispatchEvent(new CustomEvent(\"delete-page\", {detail: {page}}));\n }\n\n onSendSelToggle(event) {\n const page = this.page.id;\n const selected = event.currentTarget.checked;\n this.dispatchEvent(new CustomEvent(\"sel-page\", {detail: {page, selected}}));\n }\n}\n\ncustomElements.define(\"wr-page-entry\", PageEntry);\n\n\n\n\n//# sourceURL=webpack:///./src/pageentry.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/pages.js":
|
|
/*!**********************!*\
|
|
!*** ./src/pages.js ***!
|
|
\**********************/
|
|
/*! exports provided: Pages */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pages\", function() { return Pages; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var fetch_ndjson__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! fetch-ndjson */ \"./node_modules/fetch-ndjson/dist/index.js\");\n/* harmony import */ var fetch_ndjson__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fetch_ndjson__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var flexsearch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flexsearch */ \"./node_modules/flexsearch/dist/flexsearch.min.js\");\n/* harmony import */ var flexsearch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flexsearch__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/search.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-down.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/edit.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass Pages extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.filteredPages = [];\n this.sortedPages = [];\n this.query = \"\";\n this.flex = null;\n this.newQuery = null;\n this.loading = false;\n this.updatingSearch = false;\n\n this.currList = 0;\n\n this.active = false;\n this.editable = false;\n this.changeNeeded = false;\n\n this.selectedPages = new Set();\n\n this.menuActive = false;\n\n this.sortKey = \"date\";\n this.sortDesc = true;\n\n this.isSidebar = false;\n this.url = \"\";\n this.ts = \"\";\n\n this.editing = false;\n }\n\n static get sortKeys() {\n return [\n {\n \"key\": \"\",\n \"name\": \"Best Match\",\n },\n {\n \"key\": \"title\",\n \"name\": \"Title\"\n },\n {\n \"key\": \"date\",\n \"name\": \"Date\"\n }\n ];\n }\n\n static get properties() {\n return {\n active: { type: Boolean },\n collInfo: { type: Object },\n currList: { type: Number },\n filteredPages: { type: Array },\n sortedPages: { type: Array },\n\n query: { type: String },\n defaultKey: { type: String },\n\n loading: { type: Boolean },\n updatingSearch: { type: Boolean },\n editable: { type: Boolean },\n\n selectedPages: { type: Set },\n allSelected: { type: Boolean },\n\n menuActive: {type: Boolean },\n\n sortKey: { type: String },\n sortDesc: { type: Boolean },\n\n isSidebar: { type: Boolean },\n url: { type: String },\n ts: { type: String },\n\n editing: { type: Boolean }\n }\n }\n\n _timedUpdate() {\n if (this.newQuery !== null) {\n this.query = this.newQuery;\n this.newQuery = null;\n this.filter();\n }\n }\n\n async updated(changedProperties) {\n if (changedProperties.has(\"collInfo\")) {\n this.updateTextSearch();\n\n } else if (changedProperties.has(\"query\")) {\n this.filter();\n\n } else if (changedProperties.has(\"currList\")) {\n this.filter();\n }\n if (changedProperties.has(\"active\") && this.active) {\n if (this.changeNeeded) {\n this.filter();\n }\n }\n\n if (changedProperties.has(\"query\")) {\n if (this.query) {\n this.sortKey = \"\";\n this.sortDesc = false;\n } else {\n this.sortKey = \"date\"\n this.sortDesc = true;\n }\n const sorter = this.renderRoot.querySelector(\"wr-sorter\");\n if (sorter) {\n sorter.sortKey = this.sortKey;\n sorter.sortDesc = this.sortDesc;\n }\n }\n\n if (changedProperties.has(\"sortedPages\") && this.isSidebar) {\n //if (await this.updateComplete) {\n const selected = this.renderRoot.querySelector(\".current\");\n if (selected) {\n const opts = {behavior: \"smooth\", block: \"nearest\", inline: \"nearest\"};\n setTimeout(() => selected.scrollIntoView(opts), 100);\n }\n //}\n }\n }\n\n onChangeQuery(event) {\n this.newQuery = event.currentTarget.value;\n //this.loading = true;\n if (this._ival) {\n window.clearTimeout(this._ival);\n }\n this._ival = window.setTimeout(() => this._timedUpdate(), 250);\n }\n\n async filter() {\n if (this.loading) {\n return;\n }\n if (!this.active) {\n this.changeNeeded = true;\n }\n this.loading = true;\n if (this.flex && this.query) {\n const result = await this.flex.search(this.query, {limit: 25});\n\n this.filteredPages = result;\n } else {\n this.filteredPages = [...this.collInfo.pages];\n }\n\n if (this.currList !== 0) {\n await this.filterCurated();\n }\n\n // normalize the date\n for (const page of this.filteredPages) {\n const {timestamp, date} = Object(_pageutils__WEBPACK_IMPORTED_MODULE_4__[\"getPageDateTS\"])(page);\n page.timestamp = timestamp;\n page.date = date;\n }\n\n this.loading = false;\n this.changeNeeded = false;\n const data = {query: this.query, currList: this.currList};\n this.sendChangeEvent(data);\n }\n\n async filterCurated() {\n const resp = await fetch(`${this.collInfo.apiPrefix}/curated/${this.currList}`);\n const json = await resp.json();\n\n const curated = json.curated;\n\n this.filteredPages = curated;\n }\n\n sendChangeEvent(data) {\n this.dispatchEvent(new CustomEvent(\"coll-tab-nav\", {detail: {data}}));\n }\n\n async updateTextSearch() {\n if (this.updatingSearch) {\n return;\n }\n\n this.updatingSearch = true;\n let count = 0;\n\n try {\n const flex = new flexsearch__WEBPACK_IMPORTED_MODULE_3___default.a({\n doc: {\n id: \"id\",\n field: [\"url\", \"title\", \"text\"],\n },\n async: true\n });\n\n this.flex = flex;\n\n const cache = await caches.open(\"cache:\" + this.collInfo.coll);\n\n const indexUrl = `${this.collInfo.apiPrefix}/textIndex`;\n\n let resp = await cache.match(indexUrl);\n\n if (!resp || !Number(resp.headers.get(\"Content-Length\"))) {\n resp = await fetch(`${this.collInfo.apiPrefix}/textIndex`);\n if (resp.status === 200 && Number(resp.headers.get(\"Content-Length\"))) {\n cache.put(indexUrl, resp.clone());\n }\n }\n\n let lines = [];\n\n async function flush() {\n let curr = lines;\n lines = [];\n await flex.add(curr);\n console.log(\"added \" + count + \" \" + curr.length);\n console.log(flex.info());\n }\n\n for await (const line of fetch_ndjson__WEBPACK_IMPORTED_MODULE_2___default()(resp.body.getReader())) {\n if (!line.text) {\n continue;\n }\n\n line.id = ++count;\n lines.push(line);\n if ((count % 100) === 0) {\n await flush();\n }\n }\n\n await flush();\n\n } finally {\n if (count === 0) {\n this.flex.add(this.collInfo.pages);\n }\n\n this.updatingSearch = false;\n }\n\n await this.filter();\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n width: 100%;\n height: 100%;\n display: flex;\n min-width: 0px;\n flex-direction: column;\n box-sizing: border-box !important;\n }\n\n div[role=\"main\"], #contents div[role=\"complementary\"] {\n height: 100%;\n }\n\n .main.columns {\n width: 100%;\n justify-self: stretch;\n min-height: 0px;\n margin: 0px;\n }\n\n .header.columns {\n width: 100%;\n margin-bottom: 0px;\n }\n .header a {\n color: black;\n }\n\n .header .column.pagetitle {\n margin-left: 2.5em;\n }\n\n .column.main-content {\n min-height: 0px;\n display: flex;\n flex-direction: column;\n padding: 0px;\n margin-top: 0.5em;\n margin-left: 0.75em;\n }\n\n .index-bar {\n display: flex;\n flex-direction: column;\n border-right: 3px solid rgb(237, 237, 237);\n background-color: whitesmoke;\n padding-right: 0px;\n position: relative;\n }\n\n .index-bar-title {\n font-size: 1.25rem;\n text-transform: uppercase;\n margin-bottom: 1.0rem;\n word-break: break-word;\n }\n\n .index-bar-title:hover + .editIcon {\n display: block;\n }\n\n .editIcon {\n display: none;\n position: absolute;\n right: 8px;\n top: 8px;\n }\n\n .index-bar-status {\n display: flex;\n flex-direction: row;\n margin-bottom: 0.5rem;\n padding-right: 0.75em;\n }\n\n .index-bar-menu {\n margin-top: 1.0rem;\n }\n\n #filter-label {\n margin-bottom: 0px;\n }\n\n .num-results {\n font-style: italic;\n font-weight: normal;\n line-height: 2.5;\n }\n\n .asc:after {\n content: \"▼\";\n font-size: 0.75em;\n }\n .desc:after {\n content: \"▲\";\n font-size: 0.75em;\n }\n\n @media screen and (min-width: 769px) {\n .main.columns {\n max-height: 100%;\n height: 100%;\n }\n .index-bar-menu {\n max-height: 100%;\n overflow-y: auto;\n }\n }\n\n @media screen and (max-width: 768px) {\n ${Pages.sidebarStyles()}\n }\n\n ${Pages.sidebarStyles(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"unsafeCSS\"]`:host(.sidebar)`)}\n\n .mobile-lists {\n display: block !important;\n }\n\n :host(.sidebar) .columns.is-hidden-mobile, :host(.sidebar) .is-hidden-mobile {\n display: none !important;\n }\n\n :host(.sidebar) .mobile-header {\n display: flex !important;\n }\n\n :host(.sidebar) .columns {\n display: flex !important;\n }\n\n .scroller {\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n flex: auto;\n\n padding-bottom: 1.0em;\n min-height: 0px;\n }\n\n .page-entry {\n padding-bottom: 1.5rem;\n }\n\n .selected {\n background-color: rgb(207, 243, 255);\n }\n\n .is-disabled {\n pointer-events: none;\n opacity: .65;\n }\n\n .page-header {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n width: 100%;\n min-height: fit-content;\n\n margin-bottom: 1.0em;\n border-bottom: 3px solid rgb(237, 237, 237);\n }\n\n .check-select {\n padding: 0 1.0em 0 0.5em;\n }\n\n .search-bar {\n width: auto;\n display: flex;\n flex-direction: column;\n }\n .flex-auto {\n flex: auto;\n }\n `);\n }\n\n static sidebarStyles(prefix = lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]``) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n ${prefix} .main.columns {\n position: relative;\n max-height: 100%;\n height: 100%;\n }\n\n ${prefix} .index-bar-menu {\n max-height: 75px;\n overflow-y: auto;\n margin-top: 0.75em;\n }\n\n ${prefix} .column.main-content {\n position: relative;\n overflow-y: auto;\n\n width: 100%;\n min-height: 0px;\n height: 100%;\n padding: 0px;\n margin: 0px;\n }\n\n ${prefix} .mobile-header {\n margin: 0.5rem;\n margin-left: 1.0rem;\n align-items: center;\n display: flex;\n justify-content: space-between;\n flex-flow: row wrap;\n min-height: 24px;\n width: 100%;\n }\n\n ${prefix} .menu {\n font-size: 0.80rem;\n }`;\n }\n\n onSelectList(event) {\n event.preventDefault();\n this.currList = Number(event.currentTarget.getAttribute(\"data-list\"));\n }\n\n onSelectListDrop(event) {\n event.preventDefault();\n this.currList = Number(event.currentTarget.value);\n }\n\n render() {\n const currList = this.currList;\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"is-sr-only\" role=\"heading\" aria-level=\"${this.isSidebar ? \"2\": \"1\"}\">\n Pages in ${this.collInfo.title}\n </div>\n <div class=\"search-bar notification is-marginless\">\n ${this.isSidebar ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"] `<h3 class=\"is-sr-only\">Search and Filter Pages</h3>` : ``}\n <div class=\"field flex-auto\">\n <div class=\"control has-icons-left ${this.loading ? 'is-loading' : ''}\">\n <input type=\"search\" class=\"input\" @input=\"${this.onChangeQuery}\" .value=\"${this.query}\" type=\"text\"\n placeholder=\"Search by Page URL, Title or Text\">\n <span class=\"icon is-left\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_5___default.a}\" aria-hidden=\"true\"></fa-icon></span>\n </div>\n </div>\n </div>\n <div class=\"main columns\">\n <div class=\"column index-bar is-one-fifth is-hidden-mobile\">\n\n ${this.editable && this.editing ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <form @submit=\"${this.onUpdateTitle}\"><input id=\"titleEdit\" class=\"input\" value=\"${this.collInfo.title}\" @blur=\"${this.onUpdateTitle}\"></form>\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"index-bar-title\" @dblclick=\"${(e) => this.editing = true}\">${this.collInfo.title}</div>`}\n\n ${this.editable ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<fa-icon class=\"editIcon\" .svg=\"${_fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_7___default.a}\"></fa-icon>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n <span class=\"num-results\" aria-live=\"polite\" aria-atomic=\"true\">${this.formatResults()}</span>\n\n ${this.editable ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"index-bar-actions\">\n ${this.renderDownloadMenu()}\n </div>` : ``}\n\n ${this.collInfo.lists.length ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p id=\"filter-label\" class=\"menu-label\">Filter By List:</p>\n <div class=\"index-bar-menu menu\">\n <ul class=\"menu-list\">\n <li>\n <a href=\"#list-0\" data-list=\"0\" class=\"${currList === 0 ? 'is-active' : ''}\"\n @click=${this.onSelectList}><i>All Pages</i></a>\n </li>\n ${this.collInfo.lists.map(list => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li>\n <a @click=${this.onSelectList} href=\"#list-${list.id}\"\n data-list=\"${list.id}\"\n class=\"${currList === list.id ? 'is-active' : ''}\">${list.title}</a>\n </li>`)}\n </ul>\n </div>\n ` : ``}\n </div>\n <div class=\"column main-content\">\n <div class=\"is-sr-only\" role=\"heading\" aria-level=\"${this.isSidebar ? \"3\": \"2\"}\">Page List</div>\n ${this.renderPages()}\n </div>\n </div>`;\n }\n\n renderDownloadMenu() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"dropdown ${this.menuActive ? 'is-active' : ''}\">\n <div class=\"dropdown-trigger\">\n <button @click=\"${this.onMenu}\" class=\"button is-small\" aria-haspopup=\"true\" aria-expanded=\"${this.menuActive}\" aria-controls=\"dropdown-menu\">\n <span>Download</span>\n <span class=\"icon is-small\">\n <fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_6___default.a} aria-hidden=\"true\"></fa-icon>\n </span>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"dropdown-menu\">\n <div class=\"dropdown-content\">\n <a role=\"button\" href=\"#\"\n @click=\"${(e) => this.onDownload(e, \"wacz\", true)}\"\n @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n class=\"dropdown-item ${this.selectedPages.size === 0 ? 'is-disabled' : ''}\">\n Download Selected as WACZ (Web Archive Collection)\n </a>\n <a role=\"button\" href=\"#\"\n @click=\"${(e) => this.onDownload(e, \"warc\", true)}\"\n @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n class=\"dropdown-item ${this.selectedPages.size === 0 ? 'is-disabled' : ''}\">\n Download Selected as WARC Only\n </a>\n <hr class=\"dropdown-divider\">\n <a role=\"button\" href=\"#\"\n @click=\"${(e) => this.onDownload(e, \"wacz\", false)}\"\n @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n class=\"dropdown-item\">\n Download All as WACZ (Web Archive Collection)\n </a>\n <a role=\"button\" href=\"#\"\n @click=\"${(e) => this.onDownload(e, \"warc\", false)}\"\n @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\"\n class=\"dropdown-item\">\n Download All as WARC Only\n </a>\n </div>\n </div>\n </div>`;\n }\n\n renderPageHeader() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.editable && this.filteredPages.length ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"check-select\">\n <label class=\"checkbox\">\n <input @change=${this.onSelectAll} type=\"checkbox\" .checked=\"${this.allSelected}\">\n </label>\n </div>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n\n <div class=\"header columns is-hidden-mobile\">\n ${this.query ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"\" class=\"column is-1 ${this.sortKey === \"\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">Match</a>` : ``}\n\n <a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"date\" class=\"column is-2 ${this.sortKey === \"date\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">Date</a>\n <a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"title\" class=\"column is-6 pagetitle ${this.sortKey === \"title\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">Page Title</a>\n </div>\n\n\n\n <div class=\"is-hidden-tablet mobile-header\">\n <div class=\"num-results\" aria-live=\"polite\" aria-atomic=\"true\">${this.formatResults()}</div>\n <wr-sorter id=\"pages\"\n .sortKey=\"${this.sortKey}\"\n .sortDesc=\"${this.sortDesc}\"\n .sortKeys=\"${Pages.sortKeys}\"\n .data=\"${this.filteredPages}\"\n pageResults=\"100\"\n @sort-changed=\"${this.onSortChanged}\"\n class=\"${this.filteredPages.length ? '' : 'is-hidden'}\">\n </wr-sorter>\n </div>\n `;\n }\n\n isCurrPage(page) {\n if (this.isSidebar) {\n if (page.url === this.url) {\n let ts = page.timestamp;\n if (!ts && page.date) {\n ts = Object(_pageutils__WEBPACK_IMPORTED_MODULE_4__[\"getTS\"])(page.date);\n } else if (typeof(page.ts) === \"string\") {\n ts = Object(_pageutils__WEBPACK_IMPORTED_MODULE_4__[\"getTS\"])(page.ts);\n }\n return ts === this.ts;\n }\n }\n\n return false;\n }\n\n renderPages() {\n //const name = this.currList === 0 ? \"All Pages\" : this.collInfo.lists[this.currList - 1].title;\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"page-header has-text-weight-bold\">\n ${this.renderPageHeader()}\n </div>\n <ul class=\"scroller\" @scroll=\"${this.onScroll}\">\n ${this.sortedPages.length ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.sortedPages.map((p, i) => {\n const selected = this.selectedPages.has(p.id);\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li class=\"page-entry ${selected ? 'selected' : ''}\">\n <wr-page-entry\n .index=\"${this.query || this.isSidebar ? i + 1 : 0}\"\n .editable=\"${this.editable}\"\n .selected=\"${selected}\"\n .isCurrent=\"${this.isCurrPage(p)}\"\n .isSidebar=\"${this.isSidebar}\"\n .page=\"${p}\"\n @sel-page=\"${this.onSelectToggle}\"\n @delete-page=\"${this.onDeletePage}\"\n replayPrefix=\"${this.collInfo.replayPrefix}\"\n query=\"${this.query}\"\n class=\"${this.isSidebar ? 'sidebar' : ''}\"\n >\n </wr-page-entry>\n </li>` })}` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<p class=\"mobile-header\">${this.getNoResultsMessage()}</p>`}\n </ul>\n `;\n }\n\n onUpdateTitle(event) {\n event.preventDefault();\n\n this.editing = false;\n\n if (!this.editable) {\n return;\n }\n const input = this.renderRoot.querySelector(\"#titleEdit\");\n if (!input || !input.value.trim()) {\n return;\n }\n\n const title = input.value;\n\n const body = JSON.stringify({title});\n\n fetch(`${this.collInfo.apiPrefix}/metadata`, {method: 'POST', body}).then((res) => {\n if (res.status === 200) {\n this.dispatchEvent(new CustomEvent(\"coll-update\", {detail: {title}}));\n }\n });\n }\n\n onMenu(event) {\n event.stopPropagation();\n this.menuActive = !this.menuActive;\n\n if (this.menuActive) {\n document.addEventListener(\"click\", () => {\n this.menuActive = false;\n }, {once: true});\n }\n }\n\n onSort(event) {\n event.preventDefault();\n\n const key = event.currentTarget.getAttribute(\"data-key\") || \"\";\n if (key === this.sortKey) {\n this.sortDesc = !this.sortDesc;\n } else {\n this.sortDesc = false;\n this.sortKey = key;\n }\n }\n\n onSortChanged(event) {\n this.sortedPages = event.detail.sortedData;\n this.sortKey = event.detail.sortKey;\n this.sortDesc = event.detail.sortDesc;\n }\n\n onSelectToggle(event) {\n const {page, selected} = event.detail;\n if (selected) {\n this.selectedPages.add(page);\n } else {\n this.selectedPages.delete(page);\n }\n this.allSelected = (this.selectedPages.size === this.sortedPages.length);\n this.requestUpdate();\n }\n\n onSelectAll(event) {\n this.allSelected = event.currentTarget.checked;\n if (!this.allSelected) {\n this.selectedPages.clear();\n } else {\n //this.selectedPages = new Set();\n this.sortedPages.forEach(p => {\n this.selectedPages.add(p.id);\n });\n }\n //this.allSelected = (this.selectedPages.size === this.sortedPages.length);\n this.requestUpdate();\n }\n\n async onDownload(event, format, selected) {\n event.preventDefault();\n\n const params = new URLSearchParams();\n params.set(\"pages\", selected ? Array.from(this.selectedPages.keys()).join(\",\") : \"all\");\n params.set(\"format\", format);\n if (this.collInfo.filename) {\n params.set(\"filename\", this.collInfo.filename);\n }\n\n window.location.href = `${this.collInfo.apiPrefix}/dl?` + params.toString();\n }\n\n async onDeletePage(event) {\n const page = event.currentTarget.page;\n const resp = await fetch(`${this.collInfo.apiPrefix}/page/${page.id}`, {method: 'DELETE'});\n const json = await resp.json();\n\n const inx = this.collInfo.pages.indexOf(page);\n if (inx < 0) {\n return;\n }\n\n //todo: full update?\n this.collInfo.pages.splice(inx, 1);\n //if (!this.query){\n // this.filteredPages = [...this.collInfo.pages];\n //}\n\n this.updateTextSearch();\n this.requestUpdate();\n }\n\n formatResults() {\n if (this.sortedPages.length === 1) {\n return \"1 Page Found\";\n } else {\n return `${this.sortedPages.length} Pages Found`;\n }\n }\n\n getNoResultsMessage() {\n if (!this.collInfo || !this.collInfo.pages.length) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<span class=\"fix-text-wrapping\">No Pages are defined in this archive. The archive may be empty. <a href=\"#view=resources\">Try browsing by URL</a>.</span>`;\n }\n\n if (this.updatingSearch) {\n return \"Initializing Search...\"\n }\n\n if (this.loading) {\n return \"Searching...\";\n }\n\n if (this.query) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"] `<span class=\"fix-text-wrapping\">No matching pages found. Try changing the search query, or <a href=\"#view=resources\">browse by URL</a>.</span>`;\n }\n\n return \"No Pages Found\";\n }\n\n onScroll(event) {\n const element = event.currentTarget;\n const diff = (element.scrollHeight - element.scrollTop) - element.clientHeight;\n if (diff < 40) {\n const sorter = this.renderRoot.querySelector(\"wr-sorter\");\n if (sorter) {\n sorter.getMore();\n }\n }\n }\n}\n\n\ncustomElements.define(\"wr-page-view\", Pages);\n\n\n\n\n//# sourceURL=webpack:///./src/pages.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/pageutils.js":
|
|
/*!**************************!*\
|
|
!*** ./src/pageutils.js ***!
|
|
\**************************/
|
|
/*! exports provided: digestMessage, tsToDate, getTS, getPageDateTS, getReplayLink, sourceToId, parseURLSchemeHostPath, registerSW, initDBWorker */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"digestMessage\", function() { return digestMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsToDate\", function() { return tsToDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTS\", function() { return getTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPageDateTS\", function() { return getPageDateTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getReplayLink\", function() { return getReplayLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sourceToId\", function() { return sourceToId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseURLSchemeHostPath\", function() { return parseURLSchemeHostPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerSW\", function() { return registerSW; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initDBWorker\", function() { return initDBWorker; });\n/* harmony import */ var register_service_worker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! register-service-worker */ \"./node_modules/register-service-worker/index.js\");\n\n\n\n// ===========================================================================\nfunction registerSW(name = \"sw.js\", scope = \"./\") {\n let resolve, reject;\n \n const p = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n if (!navigator.serviceWorker) {\n console.error(\"Service Workers not supported\");\n reject();\n }\n \n Object(register_service_worker__WEBPACK_IMPORTED_MODULE_0__[\"register\"])(scope + name, {\n registrationOptions: { scope },\n registered (reg) {\n console.log('Service worker is registered');\n resolve();\n },\n\n error (error) {\n console.error('Error during service worker registration:', error);\n reject();\n }\n });\n\n return p;\n}\n\n// ===========================================================================\nlet dbworker = null;\n\nfunction initDBWorker() {\n if (dbworker === null) {\n dbworker = new Worker(\"sw.js\");\n }\n return dbworker;\n}\n\n\n// ===========================================================================\nasync function digestMessage(message, hashtype) {\n const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array\n const hashBuffer = await crypto.subtle.digest(hashtype, msgUint8); // hash the message\n const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string\n return hashHex;\n}\n\n\n// ===========================================================================\nfunction tsToDate(ts) {\n if (!ts) {\n return \"\";\n }\n\n if (ts.length < 14) {\n ts += \"00000000000000\".substr(ts.length);\n }\n\n const datestr = (ts.substring(0, 4) + \"-\" +\n ts.substring(4, 6) + \"-\" +\n ts.substring(6, 8) + \"T\" +\n ts.substring(8, 10) + \":\" +\n ts.substring(10, 12) + \":\" +\n ts.substring(12, 14) + \"-00:00\");\n\n return new Date(datestr);\n};\n\n// ===========================================================================\nfunction getPageDateTS(page) {\n let date = null;\n try {\n date = new Date(page.ts || page.date);\n } catch (e) { \n\n }\n\n const timestamp = (date && !isNaN(date)) ? getTS(date.toISOString()) : \"\";\n return {date, timestamp};\n}\n\n\n// ===========================================================================\nfunction getTS(iso) {\n return iso.replace(/[-:T]/g, '').slice(0, 14);\n}\n\n\n// ===========================================================================\nfunction getReplayLink(view, url, ts) {\n const params = new URLSearchParams();\n params.set(\"view\", view);\n params.set(\"url\", url);\n params.set(\"ts\", ts);\n return \"#\" + params.toString();\n}\n\n\n// ===========================================================================\nasync function sourceToId(url) {\n const digest = await digestMessage(url, 'SHA-256');\n const coll = \"id-\" + digest.slice(0, 12);\n return {url, coll};\n}\n\n\n// ===========================================================================\n// simple parse of scheme, host, rest of path\n// not using URL due to different browser behavior\nfunction parseURLSchemeHostPath(url) {\n let inx = url.indexOf(\"://\");\n let hostInx = 0;\n let scheme = \"\";\n let host = \"\";\n let path = \"\";\n\n if (inx >= 0) {\n scheme = url.slice(0, inx);\n inx += 3;\n } else {\n inx++;\n if (url.startsWith(\"//\")) {\n inx += 2;\n }\n }\n\n hostInx = url.indexOf(\"/\", inx);\n if (hostInx > 0) {\n host = url.slice(inx, hostInx);\n path = url.slice(hostInx);\n } else {\n host = url.slice(inx);\n path = \"\";\n }\n\n return {scheme, host, path};\n}\n\n\n\n\n\n//# sourceURL=webpack:///./src/pageutils.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/replay.js":
|
|
/*!***********************!*\
|
|
!*** ./src/replay.js ***!
|
|
\***********************/
|
|
/*! exports provided: Replay */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Replay\", function() { return Replay; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n\n\n\n\n\n// ===========================================================================\nclass Replay extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.replayUrl = \"\";\n this.replayTS = \"\";\n this.url = \"\";\n this.ts = \"\";\n this.title = \"\";\n this.collInfo = null;\n\n this.showAuth = false;\n this.reauthWait = null;\n this.authFileHandle = null;\n }\n\n static get properties() {\n return {\n collInfo: {type: Object },\n sourceUrl: { type: String },\n\n // external url set from parent\n url: { type: String },\n ts: { type: String },\n\n // actual replay url\n replayUrl: { type: String },\n replayTS: { type: String },\n title: { type: String },\n\n iframeUrl: { type: String },\n\n showAuth: { type: Boolean },\n authFileHandle: { type: Object }\n }\n }\n\n firstUpdated() {\n window.addEventListener(\"message\", (event) => this.onReplayMessage(event));\n navigator.serviceWorker.addEventListener(\"message\", (event) => this.handleAuthMessage(event));\n }\n\n async handleAuthMessage(event) {\n if (event.data.type === \"authneeded\" && this.collInfo && event.data.coll === this.collInfo.coll) {\n if (event.data.fileHandle) {\n this.authFileHandle = event.data.fileHandle;\n try {\n if (await this.authFileHandle.requestPermission({mode: \"read\"}) === \"granted\") {\n this.showAuth = false;\n this.reauthWait = null;\n this.refresh();\n return;\n }\n } catch (e) {} \n } else {\n this.authFileHandle = null;\n }\n\n if (this.reauthWait) {\n await this.reauthWait;\n } else {\n this.showAuth = true;\n }\n }\n }\n\n doSetIframeUrl() {\n this.iframeUrl = this.url ? `${this.collInfo.replayPrefix}/${this.ts || \"\"}mp_/${this.url}` : \"\";\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"sourceUrl\") || changedProperties.has(\"collInfo\")) {\n this.reauthWait = null;\n }\n\n if (this.url &&\n ((this.replayUrl != this.url) || (this.replayTS != this.ts)) &&\n (changedProperties.has(\"url\") || changedProperties.has(\"ts\"))) {\n\n this.replayUrl = this.url;\n this.replayTS = this.ts;\n this.showAuth = false;\n this.reauthWait = null;\n this.doSetIframeUrl();\n }\n\n if (this.iframeUrl && changedProperties.has(\"iframeUrl\")) {\n this.waitForLoad();\n\n const detail = {title: \"Archived Page\", replayTitle: false};\n this.dispatchEvent(new CustomEvent(\"update-title\", {bubbles: true, composed: true, detail}));\n }\n\n if (this.replayUrl && changedProperties.has(\"replayUrl\")) {\n const data = {\n url: this.replayUrl,\n ts: this.replayTS,\n };\n\n this.dispatchEvent(new CustomEvent(\"coll-tab-nav\", {detail: {replaceLoc: true, data}}));\n }\n }\n\n setDisablePointer(disable) {\n const iframe = this.renderRoot.querySelector(\"iframe\");\n\n if (iframe) {\n iframe.style.pointerEvents = disable ? \"none\" : \"all\";\n }\n }\n\n onReplayMessage(event) {\n const iframe = this.renderRoot.querySelector(\"iframe\");\n\n if (iframe && event.source === iframe.contentWindow) {\n if (event.data.wb_type === \"load\" || event.data.wb_type === \"replace-url\") {\n this.replayTS = event.data.ts;\n this.replayUrl = event.data.url;\n this.title = event.data.title || this.title;\n this.clearLoading(iframe.contentWindow);\n\n if (event.data.icons) {\n const icons = event.data.icons;\n this.dispatchEvent(new CustomEvent(\"replay-favicons\", {bubbles: true, composed: true, detail: {icons}}));\n }\n } else if (event.data.wb_type === \"title\") {\n this.title = event.data.title;\n }\n }\n\n if (this.title) {\n const detail = {title: this.title, replayTitle: true};\n this.dispatchEvent(new CustomEvent(\"update-title\", {bubbles: true, composed: true, detail}));\n }\n }\n\n onReAuthed(event) {\n this.reauthWait = (async () => {\n\n if (!this.authFileHandle) {\n // google drive reauth\n const headers = event.detail.headers;\n\n const resp = await fetch(`${this.collInfo.apiPrefix}/updateAuth`, {\n method: 'POST',\n body: JSON.stringify({headers})\n });\n } else {\n if (await this.authFileHandle.requestPermission({mode: \"read\"}) !== \"granted\") {\n this.reauthWait = null;\n return;\n }\n this.authFileHandle = null;\n }\n\n if (this.showAuth) {\n this.showAuth = false;\n this.reauthWait = null;\n }\n this.refresh();\n })();\n }\n\n waitForLoad() {\n this.setLoading();\n this._loadPoll = window.setInterval(() => {\n const iframe = this.renderRoot.querySelector(\"iframe\");\n if (!iframe || !iframe.contentDocument || !iframe.contentWindow ||\n (iframe.contentDocument.readyState === \"complete\" && !iframe.contentWindow._WBWombat)) {\n this.clearLoading(iframe && iframe.contentWindow);\n }\n }, 5000);\n }\n\n clearLoading(iframeWin) {\n this.dispatchEvent(new CustomEvent(\"replay-loading\", {detail: {loading: false}}));\n\n if (this._loadPoll) {\n window.clearInterval(this._loadPoll);\n this._loadPoll = null;\n }\n\n if (iframeWin) {\n iframeWin.addEventListener(\"beforeunload\", () => {\n this.setLoading();\n });\n }\n }\n\n setLoading() {\n this.dispatchEvent(new CustomEvent(\"replay-loading\", {detail: {loading: true}}));\n }\n\n refresh() {\n const iframe = this.renderRoot.querySelector(\"iframe\");\n\n if (iframe) {\n this.waitForLoad();\n iframe.contentWindow.location.reload();\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .iframe-container {\n position: relative;\n width: 100%;\n height: 100%;\n border: 0px;\n }\n\n .iframe-main {\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n width: 100%;\n height: 100%;\n }\n\n .intro-panel .panel-heading {\n font-size: 1.0em;\n display: inline-block;\n }\n\n .iframe-main.modal-bg {\n z-index: 200;\n background-color: rgba(10, 10, 10, 0.70)\n }\n\n #wrlogo {\n vertical-align: middle;\n }\n\n .intro-panel .panel-block {\n padding: 1.0em;\n flex-direction: column;\n line-height: 2.5em;\n }\n\n div.intro-panel.panel {\n min-width: 40%;\n display: flex;\n flex-direction: column;\n margin: 3em;\n background-color: white;\n }\n `);\n }\n\n render() {\n const title = `Replay of ${this.title ? `${this.title}:` :``} ${this.url}`;\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n\n <h1 id=\"replay-heading\" class=\"is-sr-only\">${title}</h1>\n\n ${!this.iframeUrl ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"panel intro-panel\">\n <p class=\"panel-heading\">Replay Web Page</p>\n <div class=\"panel-block\">\n <p>Enter a URL above to replay it from the web archive!</p>\n <p>(Or, check out <a href=\"#view=pages\">Pages</a> or <a href=\"#view=resources\">URLs</a> to explore the contents of this archive.)</p>\n </div>\n </div>` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n\n <div class=\"iframe-container\">\n <iframe class=\"iframe-main\" @message=\"${this.onReplayMessage}\" allow=\"autoplay 'self'; fullscreen\" allowfullscreen\n src=\"${this.iframeUrl}\" title=\"${title}\"></iframe>\n\n ${this.showAuth ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"iframe-main modal-bg\">\n <div class=\"panel intro-panel\">\n <p class=\"panel-heading\">\n <fa-icon id=\"wrlogo\" size=\"1.5rem\" .svg=${_misc__WEBPACK_IMPORTED_MODULE_1__[\"rwpLogo\"]} aria-hidden=\"true\"></fa-icon>\n Authorization Needed\n </p>\n <div class=\"panel-block\">\n ${this.authFileHandle ? lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <p>This archive is loaded from a local file: <b>${this.authFileHandle.name}</b></p>\n <p>The browser needs to confirm your permission to continue loading from this file.</p>\n <button class=\"button is-warning is-rounded\" @click=\"${this.onReAuthed}\">Show Confirmation</button>\n ` : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <wr-gdrive\n .sourceUrl=\"${this.sourceUrl}\"\n .state=\"trymanual\"\n .reauth=\"${true}\"\n @load-ready=\"${this.onReAuthed}\"/>`}\n </div>\n </div>\n </div>\n `: ``}\n </div>\n `}`;\n }\n}\n\ncustomElements.define(\"wr-coll-replay\", Replay);\n\n\n\n\n//# sourceURL=webpack:///./src/replay.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/sorter.js":
|
|
/*!***********************!*\
|
|
!*** ./src/sorter.js ***!
|
|
\***********************/
|
|
/*! exports provided: Sorter */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sorter\", function() { return Sorter; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/sort-down.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/sort-up.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\n\n\n// ===========================================================================\nclass Sorter extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n this.sortedData = [];\n this.data = [];\n\n this.pageResults = 0;\n this.numResults = 0;\n\n this.sortKey = null\n this.sortDesc = null;\n }\n\n static get properties() {\n return {\n id: { type: String },\n\n pageResults: {type: Number},\n\n data: { type: Array },\n sortedData: { type: Array },\n\n sortKey: { type: String },\n sortDesc: { type: Boolean },\n }\n }\n\n firstUpdated() {\n if (this.id) {\n const sortKey = localStorage.getItem(`${this.id}:sortKey`);\n if (sortKey !== null) {\n this.sortKey = sortKey;\n }\n const sortDesc = localStorage.getItem(`${this.id}:sortDesc`);\n if (sortDesc !== null) {\n this.sortDesc = sortDesc === \"1\";\n }\n }\n }\n\n updated(changedProperties) {\n const keyChanged = changedProperties.has(\"sortKey\");\n const descChanged = changedProperties.has(\"sortDesc\");\n const dataChanged = changedProperties.has(\"data\");\n\n if (keyChanged && this.sortKey !== null) {\n localStorage.setItem(`${this.id}:sortKey`, this.sortKey);\n }\n\n if (descChanged && this.sortDesc !== null) {\n localStorage.setItem(`${this.id}:sortDesc`, this.sortDesc ? \"1\" : \"0\");\n }\n\n if (keyChanged || descChanged || dataChanged) {\n this.sortData();\n }\n }\n\n sortData() {\n this.sortedData = [...this.data];\n this.numResults = this.pageResults;\n\n if (this.sortKey === \"\") {\n if (this.sortDesc) {\n this.sortedData.reverse();\n }\n } else {\n this.sortedData.sort((first, second) => {\n if (first[this.sortKey] === second[this.sortKey]) {\n return 0;\n }\n\n return (this.sortDesc == (first[this.sortKey] < second[this.sortKey])) ? 1 : -1;\n });\n }\n\n this.sendSortChanged();\n }\n\n sendSortChanged() {\n const detail = {\n sortKey: this.sortKey,\n sortDesc: this.sortDesc,\n sortedData: this.numResults ? this.sortedData.slice(0, this.numResults) : this.sortedData\n };\n this.dispatchEvent(new CustomEvent(\"sort-changed\", {detail}));\n }\n\n getMore(more = 100) {\n if (this.pageResults && this.numResults >= this.sortedData.length) {\n return;\n }\n\n this.numResults += more;\n this.sendSortChanged();\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n min-width: 100px;\n box-sizing: border-box !important;\n }\n button.button.is-small {\n border-radius: 4px;\n }\n `);\n }\n\n render() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"select is-small\">\n <select id=\"sort-select\" @change=${(e) => this.sortKey = e.currentTarget.value}>\n ${this.sortKeys.map((sort) => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <option value=\"${sort.key}\" ?selected=\"${sort.key === this.sortKey}\">Sort By: ${sort.name}\n </option>\n `)}\n </select>\n </div>\n <button @click=${(e) => this.sortDesc = !this.sortDesc} class=\"button is-small\">\n <span>Order:</span>\n <span class=\"is-sr-only\">${this.sortDesc ? \"Ascending\" : \"Descending\"}</span>\n <span class=\"icon\"><fa-icon aria-hidden=\"true\" .svg=${this.sortDesc ? _fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3___default.a : _fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2___default.a}></span>\n </button>`;\n }\n}\n\ncustomElements.define(\"wr-sorter\", Sorter);\n\n\n\n\n//# sourceURL=webpack:///./src/sorter.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/story.js":
|
|
/*!**********************!*\
|
|
!*** ./src/story.js ***!
|
|
\**********************/
|
|
/*! exports provided: Story */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Story\", function() { return Story; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var lit_html_directives_unsafe_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lit-html/directives/unsafe-html */ \"./node_modules/lit-html/directives/unsafe-html.js\");\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! marked */ \"./node_modules/marked/src/marked.js\");\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(marked__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var split_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! split.js */ \"./node_modules/split.js/dist/split.es.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass Story extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n constructor() {\n super();\n\n this.collInfo = null;\n\n this.curatedPageMap = {};\n\n this.currList = 0;\n\n this.active = false;\n\n this.lastST = 0;\n this.clickTime = 0;\n\n this.isSidebar = false;\n this.splitDirection = false;\n }\n\n static get properties() {\n return {\n collInfo: { type: Object },\n\n active: { type: Boolean },\n\n curatedPageMap: { type: Object },\n\n currList: { type: Number },\n\n isSidebar: { type: Boolean },\n splitDirection: { type: Boolean }\n }\n }\n\n recalcSplitter(width) {\n this.splitDirection = this.isSidebar || width < 769 ? \"vertical\" : \"horizontal\";\n }\n\n firstUpdated() {\n this.recalcSplitter(document.documentElement.clientWidth);\n\n this.obs = new ResizeObserver((entries, observer) => {\n this.recalcSplitter(entries[0].contentRect.width);\n });\n\n this.obs.observe(this)\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"collInfo\")) {\n this.doLoadCurated();\n }\n\n if (changedProperties.has(\"collInfo\") || changedProperties.has(\"isSidebar\")) {\n this.recalcSplitter(document.documentElement.clientWidth);\n }\n\n if (changedProperties.has(\"splitDirection\")) {\n this.configureSplitter();\n }\n\n if (changedProperties.has(\"currList\") && this.active) {\n this.sendChangeEvent({\n currList: this.currList,\n });\n }\n }\n\n configureSplitter() {\n const sidebar = this.renderRoot.querySelector(\".sidebar\");\n const content = this.renderRoot.querySelector(\".main-content\");\n\n if (this.splitter) {\n try {\n this.splitter.destroy();\n } catch (e) {}\n this.splitter = null;\n }\n\n if (sidebar && content && !this.splitter) {\n const opts = {\n sizes: [20, 80],\n\n gutterSize: 4,\n\n direction: this.splitDirection\n }\n\n this.splitter = Object(split_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])([sidebar, content], opts);\n } \n }\n\n async doLoadCurated() {\n this.curatedPageMap = {};\n\n const pageMap = {};\n\n for (const page of this.collInfo.pages) {\n pageMap[page.id] = page;\n }\n\n for (const curated of this.collInfo.curatedPages) {\n if (!this.curatedPageMap[curated.list]) {\n this.curatedPageMap[curated.list] = [];\n }\n const page = curated;\n\n // if (curated.page) {\n // page = pageMap[curated.page];\n // if (!page) {\n // console.log(\"No Page with id: \" + page);\n // continue;\n // }\n // }\n\n const url = page.url;\n const ts = page.ts;\n const title = page.title || page.url;\n const desc = curated.desc;\n\n this.curatedPageMap[curated.list].push({url, ts, title, desc});\n }\n\n this.scrollToList();\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n min-width: 0px;\n\n justify-content: flex-start;\n align-items: center;\n }\n\n :host(.sidebar) .columns {\n display: flex !important;\n flex-direction: column;\n }\n\n :host(.sidebar) .column.sidebar.is-one-fifth {\n width: 100% !important;\n }\n\n ${Story.sidebarStyles(Object(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"unsafeCSS\"])(`:host(.sidebar)`))}\n\n .desc p {\n margin-bottom: 1.0em;\n }\n\n .columns {\n width: 100%;\n height: 100%;\n justify-self: stretch;\n margin: 1.0em 0 0 0 !important;\n min-height: 0;\n }\n\n .column.main-content {\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding: 0px;\n margin-left: 0.75em;\n }\n\n .column.main-content.main-scroll {\n padding-right: 0.75em;\n word-break: break-all;\n }\n\n ul.menu-list a.is-active {\n background-color: #55be6f;\n }\n ol {\n margin-left: 30px;\n }\n\n @media screen and (min-width: 769px) {\n .columns {\n margin-top: 0.75em;\n }\n\n .column.sidebar {\n max-height: 100%;\n overflow-y: auto;\n }\n }\n\n @media screen and (max-width: 768px) {\n ${Story.sidebarStyles()}\n }\n\n .gutter.gutter-vertical:hover {\n cursor: row-resize;\n }\n\n .gutter.gutter-horizontal:hover {\n cursor: col-resize;\n }\n\n `);\n }\n\n static sidebarStyles(prefix = lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]``) {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n ${prefix} .columns {\n position: relative;\n }\n\n ${prefix} .column.sidebar {\n overflow-y: auto;\n margin-top: 0.75em;\n }\n\n ${prefix} .column.main-content {\n position: relative;\n overflow-y: auto;\n\n border-top: 1px solid black;\n\n height: 100%;\n }\n\n ${prefix} .menu {\n font-size: 0.80rem;\n }`;\n }\n\n render() {\n const currListNum = this.currList;\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div class=\"is-sr-only\" role=\"heading\" aria-level=\"${this.isSidebar ? \"2\": \"1\"}\">\n Story for ${this.collInfo.title}\n </div>\n <div class=\"columns\">\n <div class=\"column sidebar is-one-fifth\">\n <aside class=\"menu\">\n <ul class=\"menu-list\">\n <li>\n <a href=\"#list-0\" data-list=\"0\" class=\"${currListNum === 0 ? 'is-active' : ''} menu-label is-size-4\"\n @click=${this.onClickScroll}>${this.collInfo.title}</a>\n <ul class=\"menu-list\">${this.collInfo.lists.map(list => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li>\n <a @click=${this.onClickScroll} href=\"#list-${list.id}\"\n data-list=\"${list.id}\" \n class=\"${currListNum === list.id ? 'is-active' : ''}\">${list.title}</a>\n </li>`)}\n </ul>\n </li>\n </ul>\n </aside>\n </div>\n <div @scroll=${this.onScroll} class=\"column main-content main-scroll\">\n <section id=\"list-0\" class=\"desc\">\n <h2 class=\"has-text-centered title is-3\">${this.collInfo.title}</h2>\n ${this.collInfo.desc ? Object(lit_html_directives_unsafe_html__WEBPACK_IMPORTED_MODULE_2__[\"unsafeHTML\"])(marked__WEBPACK_IMPORTED_MODULE_3___default()(this.collInfo.desc)) : ''}\n </section>\n ${this.renderLists()}\n </div>\n </div>\n `;\n }\n\n renderLists() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n ${this.collInfo.lists.map((list, i) => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <article id=\"list-${list.id}\">\n <div class=\"content\">\n <hr/>\n <h3>${list.title}</h3>\n <p>${list.desc}</p>\n <ol>\n ${this.curatedPageMap[list.id] ? this.curatedPageMap[list.id].map((p) => this.renderCPage(p)) : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]``}\n </ol>\n </div>\n </article>\n `)}`;\n }\n\n renderCPage(p) {\n const date = new Date(p.ts);\n\n const ts = Object(_pageutils__WEBPACK_IMPORTED_MODULE_4__[\"getTS\"])(date.toISOString());\n\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <li>\n <div class=\"content\">\n <a @click=\"${this.onReplay}\" data-url=\"${p.url}\" data-ts=\"${ts}\"\n href=\"${Object(_pageutils__WEBPACK_IMPORTED_MODULE_4__[\"getReplayLink\"])(\"story\", p.url, ts)}\">\n <p class=\"is-size-6 has-text-weight-bold has-text-link\">${p.title}</p>\n <p class=\"has-text-dark\">${p.url}</p>\n </a>\n <p>${date.toLocaleString()}</p>\n <p>${p.desc}</p>\n </div>\n <hr/>\n </li>`;\n }\n\n onReplay(event) {\n event.preventDefault();\n const data = {\n url: event.currentTarget.getAttribute(\"data-url\"),\n ts: event.currentTarget.getAttribute(\"data-ts\"),\n };\n this.sendChangeEvent(data);\n return false;\n }\n\n sendChangeEvent(data) {\n this.dispatchEvent(new CustomEvent(\"coll-tab-nav\", {detail: {data}}));\n }\n\n onClickScroll(event) {\n event.preventDefault();\n //this.pageView = false;\n this.currList = Number(event.currentTarget.getAttribute(\"data-list\"));\n this.scrollToList();\n return false;\n }\n\n scrollToList() {\n // lists are 1 based, 0 is header, 1 is first list\n if (this.currList > this.collInfo.lists.length) {\n this.currList = 0;\n }\n\n const opts = {behavior: \"smooth\", block: \"nearest\", inline: \"nearest\"};\n this.clickTime = new Date().getTime();\n const curr = this.renderRoot.getElementById(\"list-\" + this.currList);\n if (curr) {\n curr.scrollIntoView(opts);\n }\n }\n\n onScroll(event) {\n const scrollable = event.currentTarget;\n const curr = this.renderRoot.getElementById(\"list-\" + this.currList);\n\n if (!curr) {\n return;\n }\n\n let next = curr;\n const target = scrollable.offsetTop;\n const currST = scrollable.scrollTop;\n\n if (currST > this.lastST) {\n while (next.nextElementSibling && next.nextElementSibling.getBoundingClientRect().top < target) {\n next = next.nextElementSibling;\n }\n } else {\n while (next.previousElementSibling && next.previousElementSibling.getBoundingClientRect().bottom >= target) {\n next = next.previousElementSibling;\n }\n }\n this.lastST = currST;\n if (next && next != curr) {\n if (next.id.startsWith(\"list-\")) {\n this.currList = Number(next.id.slice(5));\n }\n }\n\n if ((new Date().getTime() - this.clickTime) < 1000) {\n return;\n }\n\n const sel = this.renderRoot.querySelector(`a[data-list=\"${this.currList}\"]`);\n if (sel) {\n const opts = {behavior: \"smooth\", block: \"nearest\", inline: \"nearest\"};\n sel.scrollIntoView(opts);\n }\n }\n}\n\ncustomElements.define(\"wr-coll-story\", Story);\n\n\n\n//# sourceURL=webpack:///./src/story.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/ui.js":
|
|
/*!*******************!*\
|
|
!*** ./src/ui.js ***!
|
|
\*******************/
|
|
/*! exports provided: ReplayWebApp, Chooser, CollIndex, CollInfo, Coll, Story, GDrive, Loader, Pages, PageEntry, Replay, Sorter, URLResources, Embed */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _appmain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appmain */ \"./src/appmain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReplayWebApp\", function() { return _appmain__WEBPACK_IMPORTED_MODULE_0__[\"ReplayWebApp\"]; });\n\n/* harmony import */ var _chooser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chooser */ \"./src/chooser.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Chooser\", function() { return _chooser__WEBPACK_IMPORTED_MODULE_1__[\"Chooser\"]; });\n\n/* harmony import */ var _coll_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./coll-index */ \"./src/coll-index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CollIndex\", function() { return _coll_index__WEBPACK_IMPORTED_MODULE_2__[\"CollIndex\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CollInfo\", function() { return _coll_index__WEBPACK_IMPORTED_MODULE_2__[\"CollInfo\"]; });\n\n/* harmony import */ var _coll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./coll */ \"./src/coll.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Coll\", function() { return _coll__WEBPACK_IMPORTED_MODULE_3__[\"Coll\"]; });\n\n/* harmony import */ var _story__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./story */ \"./src/story.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Story\", function() { return _story__WEBPACK_IMPORTED_MODULE_4__[\"Story\"]; });\n\n/* harmony import */ var _gdrive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./gdrive */ \"./src/gdrive.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GDrive\", function() { return _gdrive__WEBPACK_IMPORTED_MODULE_5__[\"GDrive\"]; });\n\n/* harmony import */ var _loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./loader */ \"./src/loader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Loader\", function() { return _loader__WEBPACK_IMPORTED_MODULE_6__[\"Loader\"]; });\n\n/* harmony import */ var _pages__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pages */ \"./src/pages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Pages\", function() { return _pages__WEBPACK_IMPORTED_MODULE_7__[\"Pages\"]; });\n\n/* harmony import */ var _pageentry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pageentry */ \"./src/pageentry.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PageEntry\", function() { return _pageentry__WEBPACK_IMPORTED_MODULE_8__[\"PageEntry\"]; });\n\n/* harmony import */ var _replay__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./replay */ \"./src/replay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Replay\", function() { return _replay__WEBPACK_IMPORTED_MODULE_9__[\"Replay\"]; });\n\n/* harmony import */ var _sorter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./sorter */ \"./src/sorter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Sorter\", function() { return _sorter__WEBPACK_IMPORTED_MODULE_10__[\"Sorter\"]; });\n\n/* harmony import */ var _url_resources__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./url-resources */ \"./src/url-resources.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"URLResources\", function() { return _url_resources__WEBPACK_IMPORTED_MODULE_11__[\"URLResources\"]; });\n\n/* harmony import */ var _embed__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./embed */ \"./src/embed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Embed\", function() { return _embed__WEBPACK_IMPORTED_MODULE_12__[\"Embed\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/ui.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/url-resources.js":
|
|
/*!******************************!*\
|
|
!*** ./src/url-resources.js ***!
|
|
\******************************/
|
|
/*! exports provided: URLResources */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"URLResources\", function() { return URLResources; });\n/* harmony import */ var lit_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-element */ \"./node_modules/lit-element/lit-element.js\");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ \"./src/misc.js\");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pageutils */ \"./src/pageutils.js\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/search.svg */ \"./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg\");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var keyword_mark_element_lib_keyword_mark_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! keyword-mark-element/lib/keyword-mark.js */ \"./node_modules/keyword-mark-element/lib/keyword-mark.js\");\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass URLResources extends lit_element__WEBPACK_IMPORTED_MODULE_0__[\"LitElement\"]\n{\n static get filters() {\n return [\n {name: \"HTML\", filter: \"text/html,text/xhtml\"},\n {name: \"Images\", filter: \"image/\"},\n {name: \"Audio/Video\", filter: \"audio/,video/\"},\n {name: \"PDF\", filter: \"application/pdf\"},\n {name: \"Javascript\", filter: \"application/javascript,application/x-javascript\"},\n {name: \"CSS\", filter: \"text/css\"},\n {name: \"Fonts\", filter: \"font/,application/font-woff\"},\n {name: \"Plain Text\", filter: \"text/plain\"},\n {name: \"JSON\", filter: \"application/json\"},\n {name: \"DASH/HLS\", filter: \"application/dash+xml,application/x-mpegURL,application/vnd.apple.mpegurl\"},\n {name: \"All URLs\", filter: \"\"}\n ];\n }\n\n static get sortKeys() {\n return [\n {\n \"key\": \"url\",\n \"name\": \"URL\"\n },\n {\n \"key\": \"ts\",\n \"name\": \"Date\"\n },\n {\n \"key\": \"mime\",\n \"name\": \"Mime Type\",\n },\n {\n \"key\": \"status\",\n \"name\": \"Status\"\n }\n ];\n }\n\n constructor() {\n super();\n this.collInfo = null;\n this.isSidebar = false;\n\n this.currMime = \"\";\n this.query = \"\";\n this.urlSearchType = \"\";\n\n this.filteredResults = [];\n this.sortedResults = [];\n\n this.results = [];\n\n this.newQuery = null;\n\n this.tryMore = false;\n this.loading = false;\n\n this.sortKey = \"url\";\n this.sortDesc = false;\n }\n\n static get properties() {\n return {\n collInfo: { type: Object },\n isSidebar: { type: Boolean },\n currMime: { type: String },\n query: { type: String },\n urlSearchType: { type: String },\n filteredResults: { type: Array },\n sortedResults: { type: Array },\n loading: { type: Boolean },\n sortKey: { type: String },\n sortDesc: { type: Boolean }\n }\n }\n\n firstUpdated() {\n //this.doLoadResources();\n if (this.urlSearchType === \"\") {\n this.urlSearchType = \"prefix\";\n }\n }\n\n _timedUpdate() {\n if (this.newQuery !== null) {\n this.query = this.newQuery;\n this.newQuery = null;\n }\n }\n\n updated(changedProperties) {\n if (changedProperties.has(\"query\") ||\n changedProperties.has(\"urlSearchType\") ||\n changedProperties.has(\"currMime\")) {\n\n this.doLoadResources();\n const data = {\n query: this.query,\n urlSearchType: this.urlSearchType,\n currMime: this.currMime\n };\n const replaceLoc = !changedProperties.has(\"currMime\") && !changedProperties.has(\"urlSearchType\");\n this.dispatchEvent(new CustomEvent(\"coll-tab-nav\", {detail: {replaceLoc, data}}));\n }\n\n if (changedProperties.has(\"sortKey\") || changedProperties.has(\"sortDesc\")) {\n this.filter();\n }\n }\n\n async doLoadResources(isMore = false) {\n const count = 100;\n\n if (isMore && (!this.tryMore || !this.results.length)) {\n return;\n }\n\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n let url = (this.urlSearchType !== \"contains\" ? this.query : \"\");\n const prefix = url && this.urlSearchType === \"prefix\" ? 1 : 0;\n\n // optimization: if not starting with http, likely won't have a match here, so just add https://\n if (url && !url.startsWith(\"http\")) {\n url = \"https://\" + url;\n }\n\n const mime = this.currMime;\n\n const params = new URLSearchParams({\n mime,\n url,\n prefix,\n count\n });\n\n if (isMore) {\n const last = this.results[this.results.length - 1];\n params.set(\"fromMime\", last.mime);\n params.set(\"fromUrl\", last.url);\n params.set(\"fromStatus\", last.status);\n params.set(\"fromTs\", new Date(last.date).getTime());\n }\n\n let resp = await fetch(`${this.collInfo.apiPrefix}/urls?${params.toString()}`);\n resp = await resp.json();\n this.results = isMore ? this.results.concat(resp.urls) : resp.urls;\n // can be more than count if multiple mimes\n this.tryMore = (resp.urls.length >= count);\n this.filter();\n\n this.loading = false;\n }\n\n onChangeTypeSearch(event) {\n this.currMime = event.currentTarget.value;\n }\n\n onChangeQuery(event) {\n this.newQuery = event.currentTarget.value;\n if (this._ival) {\n window.clearTimeout(this._ival);\n }\n this._ival = window.setTimeout(() => this._timedUpdate(), 250);\n }\n\n onClickUrlType(event) {\n this.urlSearchType = event.currentTarget.value;\n }\n\n filter() {\n const filteredResults = [];\n const filterText = (this.urlSearchType === \"contains\" ? this.query : \"\");\n for (const result of this.results) {\n if (!filterText || result.url.indexOf(filterText) >= 0) {\n filteredResults.push(result);\n }\n }\n\n this.filteredResults = filteredResults;\n }\n\n onScroll(event) {\n const element = event.currentTarget;\n const diff = (element.scrollHeight - element.scrollTop) - element.clientHeight;\n if (this.tryMore && diff < 40) {\n this.doLoadResources(true);\n }\n }\n\n static get styles() {\n return Object(_misc__WEBPACK_IMPORTED_MODULE_1__[\"wrapCss\"])(lit_element__WEBPACK_IMPORTED_MODULE_0__[\"css\"]`\n :host {\n width: 100%;\n height: 100%;\n display: flex;\n min-width: 0px;\n flex-direction: column;\n }\n :host(.sidebar) .is-hidden-tablet {\n display: flex !important;\n }\n\n :host(.sidebar) .is-hidden-mobile {\n display: none !important;\n }\n\n :host(.sidebar) .level, :host(.sidebar) .level-left, :host(.sidebar) .level-right {\n display: block !important;\n }\n\n :host(.sidebar) .columns {\n display: flex !important;\n flex-direction: column;\n }\n\n :host(.sidebar) .column {\n width: 100% !important;\n }\n\n .notification {\n width: 100%;\n }\n .all-results {\n margin: 0 0 0 0.5em;\n display: flex;\n flex-direction: column;\n min-height: 0;\n }\n .main-scroll {\n flex-grow: 1;\n }\n .minihead {\n font-size: 10px;\n font-weight: bold;\n }\n .columns {\n margin: 0px;\n }\n thead {\n margin-bottom: 24px;\n }\n table th:not([align]) {\n text-align: left;\n }\n .result {\n border-bottom: 1px #dbdbdb solid;\n min-height: fit-content;\n }\n .results-head {\n border-bottom: 2px #dbdbdb solid;\n margin-right: 16px;\n min-height: fit-content;\n display: block;\n width: 100%;\n }\n .results-head a {\n color: black;\n }\n .all-results .column {\n word-break: break-word;\n }\n div.sort-header {\n padding: 10px;\n margin-bottom: 0px !important;\n min-height: fit-content;\n }\n .flex-auto {\n flex: auto;\n }\n .asc:after {\n content: \"▼\";\n font-size: 0.75em;\n }\n .desc:after {\n content: \"▲\";\n font-size: 0.75em;\n }\n .num-results {\n margin-left: 1em;\n font-style: italic;\n }\n `);\n }\n\n render() {\n return lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <div role=\"heading\" aria-level=\"${this.isSidebar ? \"2\": \"1\"}\" class=\"is-sr-only\">URLs in ${this.collInfo.title}</div>\n\n <div role=\"heading\" aria-level=\"${this.isSidebar ? \"3\": \"2\"}\" class=\"is-sr-only\">Search and Filter</div>\n <div class=\"notification level is-marginless\">\n <div class=\"level-left flex-auto\">\n <div class=\"level-item flex-auto\">\n <span class=\"is-hidden-mobile\">Search: </span>\n <div class=\"select\">\n <select @change=\"${this.onChangeTypeSearch}\">\n ${URLResources.filters.map((filter) => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <option value=\"${filter.filter}\"\n ?selected=\"${filter.filter === this.currMime}\">\n ${filter.name}\n </option>\n `)}\n </select>\n </div>\n <div class=\"field flex-auto\">\n <div class=\"control has-icons-left ${this.loading ? 'is-loading' : ''}\">\n <input type=\"text\" class=\"input\" @input=\"${this.onChangeQuery}\" .value=\"${this.query}\" type=\"text\" placeholder=\"Enter URL to Search\">\n <span class=\"icon is-left\"><fa-icon .svg=\"${_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3___default.a}\"/></span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"control level-right\">\n <div style=\"margin-left: 1em\" class=\"control\">\n <label class=\"radio has-text-left\"><input type=\"radio\" name=\"urltype\" value=\"contains\" ?checked=\"${this.urlSearchType === 'contains'}\" @click=\"${this.onClickUrlType}\"> Contains</label>\n <label class=\"radio has-text-left\"><input type=\"radio\" name=\"urltype\" value=\"prefix\" ?checked=\"${this.urlSearchType === 'prefix'}\" @click=\"${this.onClickUrlType}\"> Prefix</label>\n <label class=\"radio has-text-left\"><input type=\"radio\" name=\"urltype\" value=\"exact\" ?checked=\"${this.urlSearchType === 'exact'}\" @click=\"${this.onClickUrlType}\"> Exact</label>\n <span id=\"num-results\" class=\"num-results\" is-pulled-right\" aria-live=\"polite\" aria-atomic=\"true\">${this.filteredResults.length} Result(s)</span>\n </div>\n </div>\n </div>\n\n <div class=\"sort-header is-hidden-tablet\">\n <wr-sorter id=\"urls\"\n .sortKey=\"${this.sortKey}\"\n .sortDesc=\"${this.sortDesc}\"\n .sortKeys=\"${URLResources.sortKeys}\"\n .data=\"${this.filteredResults}\"\n @sort-changed=\"${this.onSortChanged}\">\n </wr-sorter>\n </div>\n\n <div role=\"heading\" aria-level=\"${this.isSidebar ? \"3\": \"2\"}\" id=\"results-heading\" class=\"is-sr-only\">Results</div>\n\n <table class=\"all-results\" aria-labelledby=\"results-heading num-results\">\n <thead>\n <tr class=\"columns results-head has-text-weight-bold\">\n <th scope=\"col\" class=\"column col-url is-6 is-hidden-mobile\"><a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"url\" class=\"${this.sortKey === \"url\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">URL</a></th>\n <th scope=\"col\" class=\"column col-ts is-2 is-hidden-mobile\"><a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"ts\" class=\"${this.sortKey === \"ts\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">Date</a></th>\n <th scope=\"col\" class=\"column col-mime is-3 is-hidden-mobile\"><a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"mime\" class=\"${this.sortKey === \"mime\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">Mime Type</a></th>\n <th scope=\"col\" class=\"column col-status is-1 is-hidden-mobile\"><a role=\"button\" href=\"#\" @click=\"${this.onSort}\" @keyup=\"${_misc__WEBPACK_IMPORTED_MODULE_1__[\"clickOnSpacebarPress\"]}\" data-key=\"status\" class=\"${this.sortKey === \"status\" ? (this.sortDesc ? \"desc\" : \"asc\") : ''}\">Status</a></th>\n </tr>\n </thead>\n\n <tbody class=\"main-scroll\" @scroll=\"${this.onScroll}\">\n ${this.sortedResults.length ?\n this.sortedResults.map((result) => lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`\n <tr class=\"columns result\">\n <td class=\"column col-url is-6\"><p class=\"minihead is-hidden-tablet\">URL</p><a @click=\"${this.onReplay}\" data-url=\"${result.url}\" data-ts=\"${result.ts}\" href=\"${Object(_pageutils__WEBPACK_IMPORTED_MODULE_2__[\"getReplayLink\"])(\"resources\", result.url, result.ts)}\">\n <keyword-mark keywords=\"${this.query}\">${result.url}</keyword-mark>\n </a></td>\n <td class=\"column col-ts is-2\"><p class=\"minihead is-hidden-tablet\">Date</p>${new Date(result.date).toLocaleString()}</td>\n <td class=\"column col-mime is-3\"><p class=\"minihead is-hidden-tablet\">Mime Type</p>${result.mime}</td>\n <td class=\"column col-status is-1\"><p class=\"minihead is-hidden-tablet\">Status</p>${result.status}</td>\n </tr>\n `) : lit_element__WEBPACK_IMPORTED_MODULE_0__[\"html\"]`<tr class=\"section\"><td colspan=\"4\"><i>No Results Found.</i></td></tr>`}\n </tbody>\n </table>\n `;\n }\n\n onSort(event) {\n event.preventDefault();\n\n const key = event.currentTarget.getAttribute(\"data-key\");\n if (key === this.sortKey) {\n this.sortDesc = !this.sortDesc;\n } else {\n this.sortDesc = false;\n this.sortKey = key;\n }\n }\n\n onSortChanged(event) {\n this.sortedResults = event.detail.sortedData;\n this.sortKey = event.detail.sortKey;\n this.sortDesc = event.detail.sortDesc;\n }\n\n onReplay(event) {\n event.preventDefault();\n const data = {\n url: event.currentTarget.getAttribute(\"data-url\"),\n ts: event.currentTarget.getAttribute(\"data-ts\"),\n };\n\n this.dispatchEvent(new CustomEvent(\"coll-tab-nav\", {detail: {data}}));\n return false;\n }\n}\n\ncustomElements.define(\"wr-coll-resources\", URLResources);\n\n\n\n\n//# sourceURL=webpack:///./src/url-resources.js?");
|
|
|
|
/***/ })
|
|
|
|
/******/ }))); |