ObsidianNotes/.obsidian/plugins/keyboard-analyzer/main.js

11064 lines
722 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
if you want to view the source visit the plugins github repository
*/
'use strict';
var obsidian = require('obsidian');
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function createCommonjsModule(fn) {
var module = { exports: {} };
return fn(module, module.exports), module.exports;
}
createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory();
})(typeof self !== 'undefined' ? self : commonjsGlobal, function() {
return /******/ (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, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // 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 = 0);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./dist/icons.json":
/*!*************************!*\
!*** ./dist/icons.json ***!
\*************************/
/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */
/***/ (function(module) {
module.exports = {"activity":"<polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"></polyline>","airplay":"<path d=\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\"></path><polygon points=\"12 15 17 21 7 21 12 15\"></polygon>","alert-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>","alert-octagon":"<polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>","alert-triangle":"<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>","align-center":"<line x1=\"18\" y1=\"10\" x2=\"6\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"18\" y1=\"18\" x2=\"6\" y2=\"18\"></line>","align-justify":"<line x1=\"21\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"21\" y1=\"18\" x2=\"3\" y2=\"18\"></line>","align-left":"<line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\"></line>","align-right":"<line x1=\"21\" y1=\"10\" x2=\"7\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"21\" y1=\"18\" x2=\"7\" y2=\"18\"></line>","anchor":"<circle cx=\"12\" cy=\"5\" r=\"3\"></circle><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"8\"></line><path d=\"M5 12H2a10 10 0 0 0 20 0h-3\"></path>","aperture":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"14.31\" y1=\"8\" x2=\"20.05\" y2=\"17.94\"></line><line x1=\"9.69\" y1=\"8\" x2=\"21.17\" y2=\"8\"></line><line x1=\"7.38\" y1=\"12\" x2=\"13.12\" y2=\"2.06\"></line><line x1=\"9.69\" y1=\"16\" x2=\"3.95\" y2=\"6.06\"></line><line x1=\"14.31\" y1=\"16\" x2=\"2.83\" y2=\"16\"></line><line x1=\"16.62\" y1=\"12\" x2=\"10.88\" y2=\"21.94\"></line>","archive":"<polyline points=\"21 8 21 21 3 21 3 8\"></polyline><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"></rect><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"></line>","arrow-down-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"8 12 12 16 16 12\"></polyline><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line>","arrow-down-left":"<line x1=\"17\" y1=\"7\" x2=\"7\" y2=\"17\"></line><polyline points=\"17 17 7 17 7 7\"></polyline>","arrow-down-right":"<line x1=\"7\" y1=\"7\" x2=\"17\" y2=\"17\"></line><polyline points=\"17 7 17 17 7 17\"></polyline>","arrow-down":"<line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><polyline points=\"19 12 12 19 5 12\"></polyline>","arrow-left-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 8 8 12 12 16\"></polyline><line x1=\"16\" y1=\"12\" x2=\"8\" y2=\"12\"></line>","arrow-left":"<line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line><polyline points=\"12 19 5 12 12 5\"></polyline>","arrow-right-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 16 16 12 12 8\"></polyline><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","arrow-right":"<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><polyline points=\"12 5 19 12 12 19\"></polyline>","arrow-up-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"16 12 12 8 8 12\"></polyline><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"8\"></line>","arrow-up-left":"<line x1=\"17\" y1=\"17\" x2=\"7\" y2=\"7\"></line><polyline points=\"7 17 7 7 17 7\"></polyline>","arrow-up-right":"<line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"></line><polyline points=\"7 7 17 7 17 17\"></polyline>","arrow-up":"<line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line><polyline points=\"5 12 12 5 19 12\"></polyline>","at-sign":"<circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"></path>","award":"<circle cx=\"12\" cy=\"8\" r=\"7\"></circle><polyline points=\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\"></polyline>","bar-chart-2":"<line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"></line><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"></line>","bar-chart":"<line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"10\"></line><line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"16\"></line>","battery-charging":"<path d=\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\"></path><line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"11\"></line><polyline points=\"11 6 7 12 13 12 9 18\"></polyline>","battery":"<rect x=\"1\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" ry=\"2\"></rect><line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"11\"></line>","bell-off":"<path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path><path d=\"M18.63 13A17.89 17.89 0 0 1 18 8\"></path><path d=\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\"></path><path d=\"M18 8a6 6 0 0 0-9.33-5\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","bell":"<path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>","bluetooth":"<polyline points=\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\"></polyline>","bold":"<path d=\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"></path><path d=\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"></path>","book-open":"<path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path>","book":"<path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"></path><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"></path>","bookmark":"<path d=\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\"></path>","box":"<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"></polyline><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"></line>","briefcase":"<rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"></path>","calendar":"<rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>","camera-off":"<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line><path d=\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\"></path>","camera":"<path d=\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\"></path><circle cx=\"12\" cy=\"13\" r=\"4\"></circle>","cast":"<path d=\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\"></path><line x1=\"2\" y1=\"20\" x2=\"2.01\" y2=\"20\"></line>","check-circle":"<path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline>","check-square":"<polyline points=\"9 11 12 14 22 4\"></polyline><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"></path>","check":"<polyline points=\"20 6 9 17 4 12\"></polyline>","chevron-down":"<polyline points=\"6 9 12 15 18 9\"></polyline>","chevron-left":"<polyline points=\"15 18 9 12 15 6\"></polyline>","chevron-right":"<polyline points=\"9 18 15 12 9 6\"></polyline>","chevron-up":"<polyline points=\"18 15 12 9 6 15\"></polyline>","chevrons-down":"<polyline points=\"7 13 12 18 17 13\"></polyline><polyline points=\"7 6 12 11 17 6\"></polyline>","chevrons-left":"<polyline points=\"11 17 6 12 11 7\"></polyline><polyline points=\"18 17 13 12 18 7\"></polyline>","chevrons-right":"<polyline points=\"13 17 18 12 13 7\"></polyline><polyline points=\"6 17 11 12 6 7\"></polyline>","chevrons-up":"<polyline points=\"17 11 12 6 7 11\"></polyline><polyline points=\"17 18 12 13 7 18\"></polyline>","chrome":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"4\"></circle><line x1=\"21.17\" y1=\"8\" x2=\"12\" y2=\"8\"></line><line x1=\"3.95\" y1=\"6.06\" x2=\"8.54\" y2=\"14\"></line><line x1=\"10.88\" y1=\"21.94\" x2=\"15.46\" y2=\"14\"></line>","circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>","clipboard":"<path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"></path><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\"></rect>","clock":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline>","cloud-drizzle":"<line x1=\"8\" y1=\"19\" x2=\"8\" y2=\"21\"></line><line x1=\"8\" y1=\"13\" x2=\"8\" y2=\"15\"></line><line x1=\"16\" y1=\"19\" x2=\"16\" y2=\"21\"></line><line x1=\"16\" y1=\"13\" x2=\"16\" y2=\"15\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"17\"></line><path d=\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"></path>","cloud-lightning":"<path d=\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\"></path><polyline points=\"13 11 9 17 15 17 11 23\"></polyline>","cloud-off":"<path d=\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","cloud-rain":"<line x1=\"16\" y1=\"13\" x2=\"16\" y2=\"21\"></line><line x1=\"8\" y1=\"13\" x2=\"8\" y2=\"21\"></line><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"23\"></line><path d=\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"></path>","cloud-snow":"<path d=\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\"></path><line x1=\"8\" y1=\"16\" x2=\"8.01\" y2=\"16\"></line><line x1=\"8\" y1=\"20\" x2=\"8.01\" y2=\"20\"></line><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"></line><line x1=\"12\" y1=\"22\" x2=\"12.01\" y2=\"22\"></line><line x1=\"16\" y1=\"16\" x2=\"16.01\" y2=\"16\"></line><line x1=\"16\" y1=\"20\" x2=\"16.01\" y2=\"20\"></line>","cloud":"<path d=\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\"></path>","code":"<polyline points=\"16 18 22 12 16 6\"></polyline><polyline points=\"8 6 2 12 8 18\"></polyline>","codepen":"<polygon points=\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\"></polygon><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"15.5\"></line><polyline points=\"22 8.5 12 15.5 2 8.5\"></polyline><polyline points=\"2 15.5 12 8.5 22 15.5\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"8.5\"></line>","codesandbox":"<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path><polyline points=\"7.5 4.21 12 6.81 16.5 4.21\"></polyline><polyline points=\"7.5 19.79 7.5 14.6 3 12\"></polyline><polyline points=\"21 12 16.5 14.6 16.5 19.79\"></polyline><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"></polyline><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"></line>","coffee":"<path d=\"M18 8h1a4 4 0 0 1 0 8h-1\"></path><path d=\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"></path><line x1=\"6\" y1=\"1\" x2=\"6\" y2=\"4\"></line><line x1=\"10\" y1=\"1\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"1\" x2=\"14\" y2=\"4\"></line>","columns":"<path d=\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\"></path>","command":"<path d=\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\"></path>","compass":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"></polygon>","copy":"<rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>","corner-down-left":"<polyline points=\"9 10 4 15 9 20\"></polyline><path d=\"M20 4v7a4 4 0 0 1-4 4H4\"></path>","corner-down-right":"<polyline points=\"15 10 20 15 15 20\"></polyline><path d=\"M4 4v7a4 4 0 0 0 4 4h12\"></path>","corner-left-down":"<polyline points=\"14 15 9 20 4 15\"></polyline><path d=\"M20 4h-7a4 4 0 0 0-4 4v12\"></path>","corner-left-up":"<polyline points=\"14 9 9 4 4 9\"></polyline><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"></path>","corner-right-down":"<polyline points=\"10 15 15 20 20 15\"></polyline><path d=\"M4 4h7a4 4 0 0 1 4 4v12\"></path>","corner-right-up":"<polyline points=\"10 9 15 4 20 9\"></polyline><path d=\"M4 20h7a4 4 0 0 0 4-4V4\"></path>","corner-up-left":"<polyline points=\"9 14 4 9 9 4\"></polyline><path d=\"M20 20v-7a4 4 0 0 0-4-4H4\"></path>","corner-up-right":"<polyline points=\"15 14 20 9 15 4\"></polyline><path d=\"M4 20v-7a4 4 0 0 1 4-4h12\"></path>","cpu":"<rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" ry=\"2\"></rect><rect x=\"9\" y=\"9\" width=\"6\" height=\"6\"></rect><line x1=\"9\" y1=\"1\" x2=\"9\" y2=\"4\"></line><line x1=\"15\" y1=\"1\" x2=\"15\" y2=\"4\"></line><line x1=\"9\" y1=\"20\" x2=\"9\" y2=\"23\"></line><line x1=\"15\" y1=\"20\" x2=\"15\" y2=\"23\"></line><line x1=\"20\" y1=\"9\" x2=\"23\" y2=\"9\"></line><line x1=\"20\" y1=\"14\" x2=\"23\" y2=\"14\"></line><line x1=\"1\" y1=\"9\" x2=\"4\" y2=\"9\"></line><line x1=\"1\" y1=\"14\" x2=\"4\" y2=\"14\"></line>","credit-card":"<rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\"></rect><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"></line>","crop":"<path d=\"M6.13 1L6 16a2 2 0 0 0 2 2h15\"></path><path d=\"M1 6.13L16 6a2 2 0 0 1 2 2v15\"></path>","crosshair":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"22\" y1=\"12\" x2=\"18\" y2=\"12\"></line><line x1=\"6\" y1=\"12\" x2=\"2\" y2=\"12\"></line><line x1=\"12\" y1=\"6\" x2=\"12\" y2=\"2\"></line><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"18\"></line>","database":"<ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"></ellipse><path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\"></path><path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\"></path>","delete":"<path d=\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\"></path><line x1=\"18\" y1=\"9\" x2=\"12\" y2=\"15\"></line><line x1=\"12\" y1=\"9\" x2=\"18\" y2=\"15\"></line>","disc":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>","divide-circle":"<line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"16\"></line><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"8\"></line><circle cx=\"12\" cy=\"12\" r=\"10\"></circle>","divide-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"16\"></line><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"8\"></line>","divide":"<circle cx=\"12\" cy=\"6\" r=\"2\"></circle><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><circle cx=\"12\" cy=\"18\" r=\"2\"></circle>","dollar-sign":"<line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"></line><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"></path>","download-cloud":"<polyline points=\"8 17 12 21 16 17\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>","download":"<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>","dribbble":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32\"></path>","droplet":"<path d=\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\"></path>","edit-2":"<path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"></path>","edit-3":"<path d=\"M12 20h9\"></path><path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"></path>","edit":"<path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>","external-link":"<path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line>","eye-off":"<path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","eye":"<path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>","facebook":"<path d=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"></path>","fast-forward":"<polygon points=\"13 19 22 12 13 5 13 19\"></polygon><polygon points=\"2 19 11 12 2 5 2 19\"></polygon>","feather":"<path d=\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\"></path><line x1=\"16\" y1=\"8\" x2=\"2\" y2=\"22\"></line><line x1=\"17.5\" y1=\"15\" x2=\"9\" y2=\"15\"></line>","figma":"<path d=\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\"></path><path d=\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\"></path><path d=\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\"></path><path d=\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\"></path><path d=\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\"></path>","file-minus":"<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>","file-plus":"<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"></line><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>","file-text":"<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline>","file":"<path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>","film":"<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"2.18\" ry=\"2.18\"></rect><line x1=\"7\" y1=\"2\" x2=\"7\" y2=\"22\"></line><line x1=\"17\" y1=\"2\" x2=\"17\" y2=\"22\"></line><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line><line x1=\"2\" y1=\"7\" x2=\"7\" y2=\"7\"></line><line x1=\"2\" y1=\"17\" x2=\"7\" y2=\"17\"></line><line x1=\"17\" y1=\"17\" x2=\"22\" y2=\"17\"></line><line x1=\"17\" y1=\"7\" x2=\"22\" y2=\"7\"></line>","filter":"<polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>","flag":"<path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"></path><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"></line>","folder-minus":"<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path><line x1=\"9\" y1=\"14\" x2=\"15\" y2=\"14\"></line>","folder-plus":"<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path><line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"17\"></line><line x1=\"9\" y1=\"14\" x2=\"15\" y2=\"14\"></line>","folder":"<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path>","framer":"<path d=\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\"></path>","frown":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M16 16s-1.5-2-4-2-4 2-4 2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>","gift":"<polyline points=\"20 12 20 22 4 22 4 12\"></polyline><rect x=\"2\" y=\"7\" width=\"20\" height=\"5\"></rect><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\"></line><path d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\"></path><path d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\"></path>","git-branch":"<line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\"></line><circle cx=\"18\" cy=\"6\" r=\"3\"></circle><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><path d=\"M18 9a9 9 0 0 1-9 9\"></path>","git-commit":"<circle cx=\"12\" cy=\"12\" r=\"4\"></circle><line x1=\"1.05\" y1=\"12\" x2=\"7\" y2=\"12\"></line><line x1=\"17.01\" y1=\"12\" x2=\"22.96\" y2=\"12\"></line>","git-merge":"<circle cx=\"18\" cy=\"18\" r=\"3\"></circle><circle cx=\"6\" cy=\"6\" r=\"3\"></circle><path d=\"M6 21V9a9 9 0 0 0 9 9\"></path>","git-pull-request":"<circle cx=\"18\" cy=\"18\" r=\"3\"></circle><circle cx=\"6\" cy=\"6\" r=\"3\"></circle><path d=\"M13 6h3a2 2 0 0 1 2 2v7\"></path><line x1=\"6\" y1=\"9\" x2=\"6\" y2=\"21\"></line>","github":"<path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"></path>","gitlab":"<path d=\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\"></path>","globe":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"></path>","grid":"<rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>","hard-drive":"<line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\"></line><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path><line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\"></line><line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\"></line>","hash":"<line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"></line><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"></line><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"></line><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"></line>","headphones":"<path d=\"M3 18v-6a9 9 0 0 1 18 0v6\"></path><path d=\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\"></path>","heart":"<path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path>","help-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"></path><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>","hexagon":"<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path>","home":"<path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline>","image":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle><polyline points=\"21 15 16 10 5 21\"></polyline>","inbox":"<polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"></polyline><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path>","info":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>","instagram":"<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"5\" ry=\"5\"></rect><path d=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"></path><line x1=\"17.5\" y1=\"6.5\" x2=\"17.51\" y2=\"6.5\"></line>","italic":"<line x1=\"19\" y1=\"4\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"20\" x2=\"5\" y2=\"20\"></line><line x1=\"15\" y1=\"4\" x2=\"9\" y2=\"20\"></line>","key":"<path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"></path>","layers":"<polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline>","layout":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\"></line><line x1=\"9\" y1=\"21\" x2=\"9\" y2=\"9\"></line>","life-buoy":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"4\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"9.17\" y2=\"9.17\"></line><line x1=\"14.83\" y1=\"14.83\" x2=\"19.07\" y2=\"19.07\"></line><line x1=\"14.83\" y1=\"9.17\" x2=\"19.07\" y2=\"4.93\"></line><line x1=\"14.83\" y1=\"9.17\" x2=\"18.36\" y2=\"5.64\"></line><line x1=\"4.93\" y1=\"19.07\" x2=\"9.17\" y2=\"14.83\"></line>","link-2":"<path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","link":"<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"></path><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"></path>","linkedin":"<path d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"></path><rect x=\"2\" y=\"9\" width=\"4\" height=\"12\"></rect><circle cx=\"4\" cy=\"4\" r=\"2\"></circle>","list":"<line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>","loader":"<line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\"></line><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\"></line><line x1=\"4.93\" y1=\"4.93\" x2=\"7.76\" y2=\"7.76\"></line><line x1=\"16.24\" y1=\"16.24\" x2=\"19.07\" y2=\"19.07\"></line><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\"></line><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\"></line><line x1=\"4.93\" y1=\"19.07\" x2=\"7.76\" y2=\"16.24\"></line><line x1=\"16.24\" y1=\"7.76\" x2=\"19.07\" y2=\"4.93\"></line>","lock":"<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>","log-in":"<path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"></path><polyline points=\"10 17 15 12 10 7\"></polyline><line x1=\"15\" y1=\"12\" x2=\"3\" y2=\"12\"></line>","log-out":"<path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"></path><polyline points=\"16 17 21 12 16 7\"></polyline><line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\"></line>","mail":"<path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"></path><polyline points=\"22,6 12,13 2,6\"></polyline>","map-pin":"<path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle>","map":"<polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\"></polygon><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\"></line><line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\"></line>","maximize-2":"<polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>","maximize":"<path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path>","meh":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"15\" x2=\"16\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>","menu":"<line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>","message-circle":"<path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>","message-square":"<path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"></path>","mic-off":"<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line><path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\"></path><path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>","mic":"<path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>","minimize-2":"<polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>","minimize":"<path d=\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\"></path>","minus-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","minus-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","minus":"<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>","monitor":"<rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"></line><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"></line>","moon":"<path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"></path>","more-horizontal":"<circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"19\" cy=\"12\" r=\"1\"></circle><circle cx=\"5\" cy=\"12\" r=\"1\"></circle>","more-vertical":"<circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"12\" cy=\"5\" r=\"1\"></circle><circle cx=\"12\" cy=\"19\" r=\"1\"></circle>","mouse-pointer":"<path d=\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\"></path><path d=\"M13 13l6 6\"></path>","move":"<polyline points=\"5 9 2 12 5 15\"></polyline><polyline points=\"9 5 12 2 15 5\"></polyline><polyline points=\"15 19 12 22 9 19\"></polyline><polyline points=\"19 9 22 12 19 15\"></polyline><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"22\"></line>","music":"<path d=\"M9 18V5l12-2v13\"></path><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><circle cx=\"18\" cy=\"16\" r=\"3\"></circle>","navigation-2":"<polygon points=\"12 2 19 21 12 17 5 21 12 2\"></polygon>","navigation":"<polygon points=\"3 11 22 2 13 21 11 13 3 11\"></polygon>","octagon":"<polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon>","package":"<line x1=\"16.5\" y1=\"9.4\" x2=\"7.5\" y2=\"4.21\"></line><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"></polyline><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"></line>","paperclip":"<path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"></path>","pause-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"10\" y1=\"15\" x2=\"10\" y2=\"9\"></line><line x1=\"14\" y1=\"15\" x2=\"14\" y2=\"9\"></line>","pause":"<rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect>","pen-tool":"<path d=\"M12 19l7-7 3 3-7 7-3-3z\"></path><path d=\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"></path><path d=\"M2 2l7.586 7.586\"></path><circle cx=\"11\" cy=\"11\" r=\"2\"></circle>","percent":"<line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line><circle cx=\"6.5\" cy=\"6.5\" r=\"2.5\"></circle><circle cx=\"17.5\" cy=\"17.5\" r=\"2.5\"></circle>","phone-call":"<path d=\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-forwarded":"<polyline points=\"19 1 23 5 19 9\"></polyline><line x1=\"15\" y1=\"5\" x2=\"23\" y2=\"5\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-incoming":"<polyline points=\"16 2 16 8 22 8\"></polyline><line x1=\"23\" y1=\"1\" x2=\"16\" y2=\"8\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-missed":"<line x1=\"23\" y1=\"1\" x2=\"17\" y2=\"7\"></line><line x1=\"17\" y1=\"1\" x2=\"23\" y2=\"7\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-off":"<path d=\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\"></path><line x1=\"23\" y1=\"1\" x2=\"1\" y2=\"23\"></line>","phone-outgoing":"<polyline points=\"23 7 23 1 17 1\"></polyline><line x1=\"16\" y1=\"8\" x2=\"23\" y2=\"1\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone":"<path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","pie-chart":"<path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"></path><path d=\"M22 12A10 10 0 0 0 12 2v10z\"></path>","play-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"10 8 16 12 10 16 10 8\"></polygon>","play":"<polygon points=\"5 3 19 12 5 21 5 3\"></polygon>","plus-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","plus-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","plus":"<line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>","pocket":"<path d=\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\"></path><polyline points=\"8 10 12 14 16 10\"></polyline>","power":"<path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"></line>","printer":"<polyline points=\"6 9 6 2 18 2 18 9\"></polyline><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"></path><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"></rect>","radio":"<circle cx=\"12\" cy=\"12\" r=\"2\"></circle><path d=\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\"></path>","refresh-ccw":"<polyline points=\"1 4 1 10 7 10\"></polyline><polyline points=\"23 20 23 14 17 14\"></polyline><path d=\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\"></path>","refresh-cw":"<polyline points=\"23 4 23 10 17 10\"></polyline><polyline points=\"1 20 1 14 7 14\"></polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"></path>","repeat":"<polyline points=\"17 1 21 5 17 9\"></polyline><path d=\"M3 11V9a4 4 0 0 1 4-4h14\"></path><polyline points=\"7 23 3 19 7 15\"></polyline><path d=\"M21 13v2a4 4 0 0 1-4 4H3\"></path>","rewind":"<polygon points=\"11 19 2 12 11 5 11 19\"></polygon><polygon points=\"22 19 13 12 22 5 22 19\"></polygon>","rotate-ccw":"<polyline points=\"1 4 1 10 7 10\"></polyline><path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"></path>","rotate-cw":"<polyline points=\"23 4 23 10 17 10\"></polyline><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"></path>","rss":"<path d=\"M4 11a9 9 0 0 1 9 9\"></path><path d=\"M4 4a16 16 0 0 1 16 16\"></path><circle cx=\"5\" cy=\"19\" r=\"1\"></circle>","save":"<path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"></path><polyline points=\"17 21 17 13 7 13 7 21\"></polyline><polyline points=\"7 3 7 8 15 8\"></polyline>","scissors":"<circle cx=\"6\" cy=\"6\" r=\"3\"></circle><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><line x1=\"20\" y1=\"4\" x2=\"8.12\" y2=\"15.88\"></line><line x1=\"14.47\" y1=\"14.48\" x2=\"20\" y2=\"20\"></line><line x1=\"8.12\" y1=\"8.12\" x2=\"12\" y2=\"12\"></line>","search":"<circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>","send":"<line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>","server":"<rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line>","settings":"<circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"></path>","share-2":"<circle cx=\"18\" cy=\"5\" r=\"3\"></circle><circle cx=\"6\" cy=\"12\" r=\"3\"></circle><circle cx=\"18\" cy=\"19\" r=\"3\"></circle><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"></line><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"></line>","share":"<path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path><polyline points=\"16 6 12 2 8 6\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"15\"></line>","shield-off":"<path d=\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\"></path><path d=\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","shield":"<path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>","shopping-bag":"<path d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"></path><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><path d=\"M16 10a4 4 0 0 1-8 0\"></path>","shopping-cart":"<circle cx=\"9\" cy=\"21\" r=\"1\"></circle><circle cx=\"20\" cy=\"21\" r=\"1\"></circle><path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"></path>","shuffle":"<polyline points=\"16 3 21 3 21 8\"></polyline><line x1=\"4\" y1=\"20\" x2=\"21\" y2=\"3\"></line><polyline points=\"21 16 21 21 16 21\"></polyline><line x1=\"15\" y1=\"15\" x2=\"21\" y2=\"21\"></line><line x1=\"4\" y1=\"4\" x2=\"9\" y2=\"9\"></line>","sidebar":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>","skip-back":"<polygon points=\"19 20 9 12 19 4 19 20\"></polygon><line x1=\"5\" y1=\"19\" x2=\"5\" y2=\"5\"></line>","skip-forward":"<polygon points=\"5 4 15 12 5 20 5 4\"></polygon><line x1=\"19\" y1=\"5\" x2=\"19\" y2=\"19\"></line>","slack":"<path d=\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\"></path><path d=\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"></path><path d=\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\"></path><path d=\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\"></path><path d=\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\"></path><path d=\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\"></path><path d=\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\"></path><path d=\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\"></path>","slash":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"></line>","sliders":"<line x1=\"4\" y1=\"21\" x2=\"4\" y2=\"14\"></line><line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"3\"></line><line x1=\"20\" y1=\"21\" x2=\"20\" y2=\"16\"></line><line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"3\"></line><line x1=\"1\" y1=\"14\" x2=\"7\" y2=\"14\"></line><line x1=\"9\" y1=\"8\" x2=\"15\" y2=\"8\"></line><line x1=\"17\" y1=\"16\" x2=\"23\" y2=\"16\"></line>","smartphone":"<rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\"></rect><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"></line>","smile":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>","speaker":"<rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\"></rect><circle cx=\"12\" cy=\"14\" r=\"4\"></circle><line x1=\"12\" y1=\"6\" x2=\"12.01\" y2=\"6\"></line>","square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>","star":"<polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"></polygon>","stop-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><rect x=\"9\" y=\"9\" width=\"6\" height=\"6\"></rect>","sun":"<circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>","sunrise":"<path d=\"M17 18a5 5 0 0 0-10 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"9\"></line><line x1=\"4.22\" y1=\"10.22\" x2=\"5.64\" y2=\"11.64\"></line><line x1=\"1\" y1=\"18\" x2=\"3\" y2=\"18\"></line><line x1=\"21\" y1=\"18\" x2=\"23\" y2=\"18\"></line><line x1=\"18.36\" y1=\"11.64\" x2=\"19.78\" y2=\"10.22\"></line><line x1=\"23\" y1=\"22\" x2=\"1\" y2=\"22\"></line><polyline points=\"8 6 12 2 16 6\"></polyline>","sunset":"<path d=\"M17 18a5 5 0 0 0-10 0\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"2\"></line><line x1=\"4.22\" y1=\"10.22\" x2=\"5.64\" y2=\"11.64\"></line><line x1=\"1\" y1=\"18\" x2=\"3\" y2=\"18\"></line><line x1=\"21\" y1=\"18\" x2=\"23\" y2=\"18\"></line><line x1=\"18.36\" y1=\"11.64\" x2=\"19.78\" y2=\"10.22\"></line><line x1=\"23\" y1=\"22\" x2=\"1\" y2=\"22\"></line><polyline points=\"16 5 12 9 8 5\"></polyline>","table":"<path d=\"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\"></path>","tablet":"<rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\"></rect><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"></line>","tag":"<path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"></line>","target":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle>","terminal":"<polyline points=\"4 17 10 11 4 5\"></polyline><line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"></line>","thermometer":"<path d=\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\"></path>","thumbs-down":"<path d=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"></path>","thumbs-up":"<path d=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"></path>","toggle-left":"<rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" ry=\"7\"></rect><circle cx=\"8\" cy=\"12\" r=\"3\"></circle>","toggle-right":"<rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" ry=\"7\"></rect><circle cx=\"16\" cy=\"12\" r=\"3\"></circle>","tool":"<path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"></path>","trash-2":"<polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"></line><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"></line>","trash":"<polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path>","trello":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><rect x=\"7\" y=\"7\" width=\"3\" height=\"9\"></rect><rect x=\"14\" y=\"7\" width=\"3\" height=\"5\"></rect>","trending-down":"<polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"></polyline><polyline points=\"17 18 23 18 23 12\"></polyline>","trending-up":"<polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"></polyline><polyline points=\"17 6 23 6 23 12\"></polyline>","triangle":"<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path>","truck":"<rect x=\"1\" y=\"3\" width=\"15\" height=\"13\"></rect><polygon points=\"16 8 20 8 23 11 23 16 16 16 16 8\"></polygon><circle cx=\"5.5\" cy=\"18.5\" r=\"2.5\"></circle><circle cx=\"18.5\" cy=\"18.5\" r=\"2.5\"></circle>","tv":"<rect x=\"2\" y=\"7\" width=\"20\" height=\"15\" rx=\"2\" ry=\"2\"></rect><polyline points=\"17 2 12 7 7 2\"></polyline>","twitch":"<path d=\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\"></path>","twitter":"<path d=\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"></path>","type":"<polyline points=\"4 7 4 4 20 4 20 7\"></polyline><line x1=\"9\" y1=\"20\" x2=\"15\" y2=\"20\"></line><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"></line>","umbrella":"<path d=\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\"></path>","underline":"<path d=\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\"></path><line x1=\"4\" y1=\"21\" x2=\"20\" y2=\"21\"></line>","unlock":"<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 9.9-1\"></path>","upload-cloud":"<polyline points=\"16 16 12 12 8 16\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"></path><polyline points=\"16 16 12 12 8 16\"></polyline>","upload":"<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"17 8 12 3 7 8\"></polyline><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"></line>","user-check":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><polyline points=\"17 11 19 13 23 9\"></polyline>","user-minus":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>","user-plus":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"></line><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>","user-x":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"18\" y1=\"8\" x2=\"23\" y2=\"13\"></line><line x1=\"23\" y1=\"8\" x2=\"18\" y2=\"13\"></line>","user":"<path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle>","users":"<path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"9\" cy=\"7\" r=\"4\"></circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"></path><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"></path>","video-off":"<path d=\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","video":"<polygon points=\"23 7 16 12 23 17 23 7\"></polygon><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\"></rect>","voicemail":"<circle cx=\"5.5\" cy=\"11.5\" r=\"4.5\"></circle><circle cx=\"18.5\" cy=\"11.5\" r=\"4.5\"></circle><line x1=\"5.5\" y1=\"16\" x2=\"18.5\" y2=\"16\"></line>","volume-1":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path>","volume-2":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\"></path>","volume-x":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line>","volume":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon>","watch":"<circle cx=\"12\" cy=\"12\" r=\"7\"></circle><polyline points=\"12 9 12 12 13.5 13.5\"></polyline><path d=\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\"></path>","wifi-off":"<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line><path d=\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\"></path><path d=\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\"></path><path d=\"M10.71 5.05A16 16 0 0 1 22.58 9\"></path><path d=\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\"></path><path d=\"M8.53 16.11a6 6 0 0 1 6.95 0\"></path><line x1=\"12\" y1=\"20\" x2=\"12.01\" y2=\"20\"></line>","wifi":"<path d=\"M5 12.55a11 11 0 0 1 14.08 0\"></path><path d=\"M1.42 9a16 16 0 0 1 21.16 0\"></path><path d=\"M8.53 16.11a6 6 0 0 1 6.95 0\"></path><line x1=\"12\" y1=\"20\" x2=\"12.01\" y2=\"20\"></line>","wind":"<path d=\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\"></path>","x-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>","x-octagon":"<polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>","x-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>","x":"<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>","youtube":"<path d=\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\"></path><polygon points=\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\"></polygon>","zap-off":"<polyline points=\"12.41 6.75 13 2 10.57 4.92\"></polyline><polyline points=\"18.57 12.91 21 10 15.66 10\"></polyline><polyline points=\"8 8 3 14 12 14 11 22 16 16\"></polyline><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","zap":"<polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"></polygon>","zoom-in":"<circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>","zoom-out":"<circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>"};
/***/ }),
/***/ "./node_modules/classnames/dedupe.js":
/*!*******************************************!*\
!*** ./node_modules/classnames/dedupe.js ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2016 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
var classNames = (function () {
// don't inherit from Object so we can skip hasOwnProperty check later
// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232
function StorageObject() {}
StorageObject.prototype = Object.create(null);
function _parseArray (resultSet, array) {
var length = array.length;
for (var i = 0; i < length; ++i) {
_parse(resultSet, array[i]);
}
}
var hasOwn = {}.hasOwnProperty;
function _parseNumber (resultSet, num) {
resultSet[num] = true;
}
function _parseObject (resultSet, object) {
for (var k in object) {
if (hasOwn.call(object, k)) {
// set value to false instead of deleting it to avoid changing object structure
// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions
resultSet[k] = !!object[k];
}
}
}
var SPACE = /\s+/;
function _parseString (resultSet, str) {
var array = str.split(SPACE);
var length = array.length;
for (var i = 0; i < length; ++i) {
resultSet[array[i]] = true;
}
}
function _parse (resultSet, arg) {
if (!arg) return;
var argType = typeof arg;
// 'foo bar'
if (argType === 'string') {
_parseString(resultSet, arg);
// ['foo', 'bar', ...]
} else if (Array.isArray(arg)) {
_parseArray(resultSet, arg);
// { 'foo': true, ... }
} else if (argType === 'object') {
_parseObject(resultSet, arg);
// '130'
} else if (argType === 'number') {
_parseNumber(resultSet, arg);
}
}
function _classNames () {
// don't leak arguments
// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
var len = arguments.length;
var args = Array(len);
for (var i = 0; i < len; i++) {
args[i] = arguments[i];
}
var classSet = new StorageObject();
_parseArray(classSet, args);
var list = [];
for (var k in classSet) {
if (classSet[k]) {
list.push(k);
}
}
return list.join(' ');
}
return _classNames;
})();
if (typeof module !== 'undefined' && module.exports) {
module.exports = classNames;
} else {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
return classNames;
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
}
}());
/***/ }),
/***/ "./node_modules/core-js/es/array/from.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/es/array/from.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js");
__webpack_require__(/*! ../../modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js");
var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js/internals/path.js");
module.exports = path.Array.from;
/***/ }),
/***/ "./node_modules/core-js/internals/a-function.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/a-function.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
/***/ }),
/***/ "./node_modules/core-js/internals/an-object.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/an-object.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
module.exports = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
/***/ }),
/***/ "./node_modules/core-js/internals/array-from.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/array-from.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js");
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js");
var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js");
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js");
var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js");
// `Array.from` method
// https://tc39.github.io/ecma262/#sec-array.from
module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
var O = toObject(arrayLike);
var C = typeof this == 'function' ? this : Array;
var argumentsLength = arguments.length;
var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
var mapping = mapfn !== undefined;
var index = 0;
var iteratorMethod = getIteratorMethod(O);
var length, result, step, iterator;
if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
// if the target is not iterable or it's an array with the default iterator - use a simple case
if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
iterator = iteratorMethod.call(O);
result = new C();
for (;!(step = iterator.next()).done; index++) {
createProperty(result, index, mapping
? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)
: step.value
);
}
} else {
length = toLength(O.length);
result = new C(length);
for (;length > index; index++) {
createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
}
}
result.length = index;
return result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/array-includes.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/array-includes.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
// `Array.prototype.{ indexOf, includes }` methods implementation
// false -> Array#indexOf
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
// true -> Array#includes
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
module.exports = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) if (IS_INCLUDES || index in O) {
if (O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/bind-context.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/bind-context.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");
// optional / simple context binding
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js":
/*!****************************************************************************!*\
!*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
// call something on iterator step with safe closing on error
module.exports = function (iterator, fn, value, ENTRIES) {
try {
return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
// 7.4.6 IteratorClose(iterator, completion)
} catch (error) {
var returnMethod = iterator['return'];
if (returnMethod !== undefined) anObject(returnMethod.call(iterator));
throw error;
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js":
/*!**************************************************************************!*\
!*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!
\**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var ITERATOR = wellKnownSymbol('iterator');
var SAFE_CLOSING = false;
try {
var called = 0;
var iteratorWithReturn = {
next: function () {
return { done: !!called++ };
},
'return': function () {
SAFE_CLOSING = true;
}
};
iteratorWithReturn[ITERATOR] = function () {
return this;
};
// eslint-disable-next-line no-throw-literal
Array.from(iteratorWithReturn, function () { throw 2; });
} catch (error) { /* empty */ }
module.exports = function (exec, SKIP_CLOSING) {
if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
var ITERATION_SUPPORT = false;
try {
var object = {};
object[ITERATOR] = function () {
return {
next: function () {
return { done: ITERATION_SUPPORT = true };
}
};
};
exec(object);
} catch (error) { /* empty */ }
return ITERATION_SUPPORT;
};
/***/ }),
/***/ "./node_modules/core-js/internals/classof-raw.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/classof-raw.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/***/ "./node_modules/core-js/internals/classof.js":
/*!***************************************************!*\
!*** ./node_modules/core-js/internals/classof.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
/*!***********************************************************************!*\
!*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
\***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
module.exports = function (target, source) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/correct-prototype-getter.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/***/ "./node_modules/core-js/internals/create-iterator-constructor.js":
/*!***********************************************************************!*\
!*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!
\***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype;
var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
};
/***/ }),
/***/ "./node_modules/core-js/internals/create-property-descriptor.js":
/*!**********************************************************************!*\
!*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/create-property.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/create-property.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
module.exports = function (object, key, value) {
var propertyKey = toPrimitive(key);
if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
else object[propertyKey] = value;
};
/***/ }),
/***/ "./node_modules/core-js/internals/define-iterator.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/define-iterator.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js");
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js");
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis = function () { return this; };
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
hide(CurrentIteratorPrototype, ITERATOR, returnThis);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
hide(IterablePrototype, ITERATOR, defaultIterator);
}
Iterators[NAME] = defaultIterator;
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
/***/ }),
/***/ "./node_modules/core-js/internals/descriptors.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/descriptors.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
// Thank's IE8 for his funny defineProperty
module.exports = !fails(function () {
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});
/***/ }),
/***/ "./node_modules/core-js/internals/document-create-element.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/document-create-element.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var document = global.document;
// typeof document.createElement is 'object' in old IE
var exist = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return exist ? document.createElement(it) : {};
};
/***/ }),
/***/ "./node_modules/core-js/internals/enum-bug-keys.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/***/ "./node_modules/core-js/internals/export.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/export.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global;
} else if (STATIC) {
target = global[TARGET] || setGlobal(TARGET, {});
} else {
target = (global[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty === typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
hide(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/fails.js":
/*!*************************************************!*\
!*** ./node_modules/core-js/internals/fails.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/function-to-string.js":
/*!**************************************************************!*\
!*** ./node_modules/core-js/internals/function-to-string.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
module.exports = shared('native-function-to-string', Function.toString);
/***/ }),
/***/ "./node_modules/core-js/internals/get-iterator-method.js":
/*!***************************************************************!*\
!*** ./node_modules/core-js/internals/get-iterator-method.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var ITERATOR = wellKnownSymbol('iterator');
module.exports = function (it) {
if (it != undefined) return it[ITERATOR]
|| it['@@iterator']
|| Iterators[classof(it)];
};
/***/ }),
/***/ "./node_modules/core-js/internals/global.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/global.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';
var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line no-undef
check(typeof globalThis == O && globalThis) ||
check(typeof window == O && window) ||
check(typeof self == O && self) ||
check(typeof global == O && global) ||
// eslint-disable-next-line no-new-func
Function('return this')();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")));
/***/ }),
/***/ "./node_modules/core-js/internals/has.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/internals/has.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/***/ "./node_modules/core-js/internals/hidden-keys.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/hidden-keys.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/***/ "./node_modules/core-js/internals/hide.js":
/*!************************************************!*\
!*** ./node_modules/core-js/internals/hide.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/***/ "./node_modules/core-js/internals/html.js":
/*!************************************************!*\
!*** ./node_modules/core-js/internals/html.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var document = global.document;
module.exports = document && document.documentElement;
/***/ }),
/***/ "./node_modules/core-js/internals/ie8-dom-define.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/***/ "./node_modules/core-js/internals/indexed-object.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/indexed-object.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// fallback for non-array-like ES3 and non-enumerable old V8 strings
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
var split = ''.split;
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
/***/ }),
/***/ "./node_modules/core-js/internals/internal-state.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/internal-state.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js");
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP) {
var store = new WeakMap();
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
hide(it, STATE, metadata);
return metadata;
};
get = function (it) {
return objectHas(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return objectHas(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/***/ "./node_modules/core-js/internals/is-array-iterator-method.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var ITERATOR = wellKnownSymbol('iterator');
var ArrayPrototype = Array.prototype;
// check on default Array iterator
module.exports = function (it) {
return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
};
/***/ }),
/***/ "./node_modules/core-js/internals/is-forced.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-forced.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/***/ "./node_modules/core-js/internals/is-object.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-object.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/***/ "./node_modules/core-js/internals/is-pure.js":
/*!***************************************************!*\
!*** ./node_modules/core-js/internals/is-pure.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = false;
/***/ }),
/***/ "./node_modules/core-js/internals/iterators-core.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/iterators-core.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
if (IteratorPrototype == undefined) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
module.exports = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
/***/ }),
/***/ "./node_modules/core-js/internals/iterators.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/iterators.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/***/ "./node_modules/core-js/internals/native-symbol.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/native-symbol.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
// Chrome 38 Symbol has incorrect toString conversion
// eslint-disable-next-line no-undef
return !String(Symbol());
});
/***/ }),
/***/ "./node_modules/core-js/internals/native-weak-map.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/native-weak-map.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
var WeakMap = global.WeakMap;
module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
/***/ }),
/***/ "./node_modules/core-js/internals/object-create.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/object-create.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
var IE_PROTO = sharedKey('IE_PROTO');
var PROTOTYPE = 'prototype';
var Empty = function () { /* empty */ };
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var length = enumBugKeys.length;
var lt = '<';
var script = 'script';
var gt = '>';
var js = 'java' + script + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
iframe.src = String(js);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
iframeDocument.close();
createDict = iframeDocument.F;
while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
return createDict();
};
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
Empty[PROTOTYPE] = anObject(O);
result = new Empty();
Empty[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = createDict();
return Properties === undefined ? result : defineProperties(result, Properties);
};
hiddenKeys[IE_PROTO] = true;
/***/ }),
/***/ "./node_modules/core-js/internals/object-define-properties.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-properties.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var i = 0;
var key;
while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);
return O;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-define-property.js":
/*!******************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-property.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
var nativeDefineProperty = Object.defineProperty;
exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return nativeDefineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js":
/*!******************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
\******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return nativeGetOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
/*!*************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return internalObjectKeys(O, hiddenKeys);
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
/*!***************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-prototype-of.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js");
var IE_PROTO = sharedKey('IE_PROTO');
var ObjectPrototype = Object.prototype;
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-keys-internal.js":
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/object-keys-internal.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var arrayIndexOf = arrayIncludes(false);
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~arrayIndexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-keys.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/object-keys.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
// 19.1.2.14 / 15.2.3.14 Object.keys(O)
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
/*!*************************************************************************!*\
!*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;
/***/ }),
/***/ "./node_modules/core-js/internals/object-set-prototype-of.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");
// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var correctSetter = false;
var test = {};
var setter;
try {
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
correctSetter = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
validateSetPrototypeOfArguments(O, proto);
if (correctSetter) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/***/ "./node_modules/core-js/internals/own-keys.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/own-keys.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var Reflect = global.Reflect;
// all object keys, includes non-enumerable and symbols
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
var keys = getOwnPropertyNamesModule.f(anObject(it));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};
/***/ }),
/***/ "./node_modules/core-js/internals/path.js":
/*!************************************************!*\
!*** ./node_modules/core-js/internals/path.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
/***/ }),
/***/ "./node_modules/core-js/internals/redefine.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/redefine.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(nativeFunctionToString).split('toString');
shared('inspectSource', function (it) {
return nativeFunctionToString.call(it);
});
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
if (typeof value == 'function') {
if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
}
if (O === global) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else hide(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
});
/***/ }),
/***/ "./node_modules/core-js/internals/require-object-coercible.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/require-object-coercible.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
// `RequireObjectCoercible` abstract operation
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/***/ "./node_modules/core-js/internals/set-global.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/set-global.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
module.exports = function (key, value) {
try {
hide(global, key, value);
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/***/ "./node_modules/core-js/internals/set-to-string-tag.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/set-to-string-tag.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC) {
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/shared-key.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/shared-key.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/***/ "./node_modules/core-js/internals/shared.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/shared.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.1.3',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/***/ "./node_modules/core-js/internals/string-at.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/string-at.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
// CONVERT_TO_STRING: true -> String#at
// CONVERT_TO_STRING: false -> String#codePointAt
module.exports = function (that, pos, CONVERT_TO_STRING) {
var S = String(requireObjectCoercible(that));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-absolute-index.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/to-absolute-index.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
module.exports = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-indexed-object.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/to-indexed-object.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-integer.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/to-integer.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.github.io/ecma262/#sec-tointeger
module.exports = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-length.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/to-length.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.github.io/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-object.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/to-object.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
// `ToObject` abstract operation
// https://tc39.github.io/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-primitive.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/to-primitive.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
// 7.1.1 ToPrimitive(input [, PreferredType])
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
if (!isObject(it)) return it;
var fn, val;
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/***/ "./node_modules/core-js/internals/uid.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/internals/uid.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var id = 0;
var postfix = Math.random();
module.exports = function (key) {
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));
};
/***/ }),
/***/ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js":
/*!*******************************************************************************!*\
!*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!
\*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
module.exports = function (O, proto) {
anObject(O);
if (!isObject(proto) && proto !== null) {
throw TypeError("Can't set " + String(proto) + ' as a prototype');
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/well-known-symbol.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/well-known-symbol.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js");
var Symbol = global.Symbol;
var store = shared('wks');
module.exports = function (name) {
return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
|| (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};
/***/ }),
/***/ "./node_modules/core-js/modules/es.array.from.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/modules/es.array.from.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
var from = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js");
var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js");
var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
Array.from(iterable);
});
// `Array.from` method
// https://tc39.github.io/ecma262/#sec-array.from
$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {
from: from
});
/***/ }),
/***/ "./node_modules/core-js/modules/es.string.iterator.js":
/*!************************************************************!*\
!*** ./node_modules/core-js/modules/es.string.iterator.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var codePointAt = __webpack_require__(/*! ../internals/string-at */ "./node_modules/core-js/internals/string-at.js");
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js");
var STRING_ITERATOR = 'String Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
// `String.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
defineIterator(String, 'String', function (iterated) {
setInternalState(this, {
type: STRING_ITERATOR,
string: String(iterated),
index: 0
});
// `%StringIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
}, function next() {
var state = getInternalState(this);
var string = state.string;
var index = state.index;
var point;
if (index >= string.length) return { value: undefined, done: true };
point = codePointAt(string, index, true);
state.index += point.length;
return { value: point, done: false };
});
/***/ }),
/***/ "./node_modules/webpack/buildin/global.js":
/*!***********************************!*\
!*** (webpack)/buildin/global.js ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || Function("return this")() || (1, eval)("this");
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/***/ "./src/default-attrs.json":
/*!********************************!*\
!*** ./src/default-attrs.json ***!
\********************************/
/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */
/***/ (function(module) {
module.exports = {"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
/***/ }),
/***/ "./src/icon.js":
/*!*********************!*\
!*** ./src/icon.js ***!
\*********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js");
var _dedupe2 = _interopRequireDefault(_dedupe);
var _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ "./src/default-attrs.json");
var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Icon = function () {
function Icon(name, contents) {
var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
_classCallCheck(this, Icon);
this.name = name;
this.contents = contents;
this.tags = tags;
this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });
}
/**
* Create an SVG string.
* @param {Object} attrs
* @returns {string}
*/
_createClass(Icon, [{
key: 'toSvg',
value: function toSvg() {
var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });
return '<svg ' + attrsToString(combinedAttrs) + '>' + this.contents + '</svg>';
}
/**
* Return string representation of an `Icon`.
*
* Added for backward compatibility. If old code expects `feather.icons.<name>`
* to be a string, `toString()` will get implicitly called.
*
* @returns {string}
*/
}, {
key: 'toString',
value: function toString() {
return this.contents;
}
}]);
return Icon;
}();
/**
* Convert attributes object to string of HTML attributes.
* @param {Object} attrs
* @returns {string}
*/
function attrsToString(attrs) {
return Object.keys(attrs).map(function (key) {
return key + '="' + attrs[key] + '"';
}).join(' ');
}
exports.default = Icon;
/***/ }),
/***/ "./src/icons.js":
/*!**********************!*\
!*** ./src/icons.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _icon = __webpack_require__(/*! ./icon */ "./src/icon.js");
var _icon2 = _interopRequireDefault(_icon);
var _icons = __webpack_require__(/*! ../dist/icons.json */ "./dist/icons.json");
var _icons2 = _interopRequireDefault(_icons);
var _tags = __webpack_require__(/*! ./tags.json */ "./src/tags.json");
var _tags2 = _interopRequireDefault(_tags);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = Object.keys(_icons2.default).map(function (key) {
return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);
}).reduce(function (object, icon) {
object[icon.name] = icon;
return object;
}, {});
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
var _icons2 = _interopRequireDefault(_icons);
var _toSvg = __webpack_require__(/*! ./to-svg */ "./src/to-svg.js");
var _toSvg2 = _interopRequireDefault(_toSvg);
var _replace = __webpack_require__(/*! ./replace */ "./src/replace.js");
var _replace2 = _interopRequireDefault(_replace);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };
/***/ }),
/***/ "./src/replace.js":
/*!************************!*\
!*** ./src/replace.js ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */
var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js");
var _dedupe2 = _interopRequireDefault(_dedupe);
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
var _icons2 = _interopRequireDefault(_icons);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Replace all HTML elements that have a `data-feather` attribute with SVG markup
* corresponding to the element's `data-feather` attribute value.
* @param {Object} attrs
*/
function replace() {
var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (typeof document === 'undefined') {
throw new Error('`feather.replace()` only works in a browser environment.');
}
var elementsToReplace = document.querySelectorAll('[data-feather]');
Array.from(elementsToReplace).forEach(function (element) {
return replaceElement(element, attrs);
});
}
/**
* Replace a single HTML element with SVG markup
* corresponding to the element's `data-feather` attribute value.
* @param {HTMLElement} element
* @param {Object} attrs
*/
function replaceElement(element) {
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var elementAttrs = getAttrs(element);
var name = elementAttrs['data-feather'];
delete elementAttrs['data-feather'];
var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));
var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');
var svgElement = svgDocument.querySelector('svg');
element.parentNode.replaceChild(svgElement, element);
}
/**
* Get the attributes of an HTML element.
* @param {HTMLElement} element
* @returns {Object}
*/
function getAttrs(element) {
return Array.from(element.attributes).reduce(function (attrs, attr) {
attrs[attr.name] = attr.value;
return attrs;
}, {});
}
exports.default = replace;
/***/ }),
/***/ "./src/tags.json":
/*!***********************!*\
!*** ./src/tags.json ***!
\***********************/
/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */
/***/ (function(module) {
module.exports = {"activity":["pulse","health","action","motion"],"airplay":["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],"anchor":[],"archive":["index","box"],"at-sign":["mention","at","email","message"],"award":["achievement","badge"],"aperture":["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],"battery":["power","electricity"],"battery-charging":["power","electricity"],"bell":["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],"bluetooth":["wireless"],"book-open":["read","library"],"book":["read","dictionary","booklet","magazine","library"],"bookmark":["read","clip","marker","tag"],"box":["cube"],"briefcase":["work","bag","baggage","folder"],"calendar":["date"],"camera":["photo"],"cast":["chromecast","airplay"],"chevron-down":["expand"],"chevron-up":["collapse"],"circle":["off","zero","record"],"clipboard":["copy"],"clock":["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],"cloud":["weather"],"codepen":["logo"],"codesandbox":["logo"],"code":["source","programming"],"coffee":["drink","cup","mug","tea","cafe","hot","beverage"],"columns":["layout"],"command":["keyboard","cmd","terminal","prompt"],"compass":["navigation","safari","travel","direction"],"copy":["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"cpu":["processor","technology"],"credit-card":["purchase","payment","cc"],"crop":["photo","image"],"crosshair":["aim","target"],"database":["storage","memory"],"delete":["remove"],"disc":["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],"droplet":["water"],"edit":["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],"eye":["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],"facebook":["logo","social"],"fast-forward":["music"],"figma":["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],"film":["movie","video"],"filter":["funnel","hopper"],"flag":["report"],"folder-minus":["directory"],"folder-plus":["directory"],"folder":["directory"],"framer":["logo","design","tool"],"frown":["emoji","face","bad","sad","emotion"],"gift":["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],"github":["logo","version control"],"gitlab":["logo","version control"],"globe":["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],"hash":["hashtag","number","pound"],"headphones":["music","audio","sound"],"heart":["like","love","emotion"],"help-circle":["question mark"],"hexagon":["shape","node.js","logo"],"home":["house","living"],"image":["picture"],"inbox":["email"],"instagram":["logo","camera"],"key":["password","login","authentication","secure"],"layers":["stack"],"layout":["window","webpage"],"life-bouy":["help","life ring","support"],"link":["chain","url"],"link-2":["chain","url"],"linkedin":["logo","social media"],"list":["options"],"lock":["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],"mail":["email","message"],"map-pin":["location","navigation","travel","marker"],"map":["location","navigation","travel"],"maximize":["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],"meh":["emoji","face","neutral","emotion"],"menu":["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],"mic":["record","sound","listen"],"minimize":["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],"minus":["subtract"],"monitor":["tv","screen","display"],"moon":["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],"move":["arrows"],"music":["note"],"navigation":["location","travel"],"navigation-2":["location","travel"],"octagon":["stop"],"package":["box","container"],"paperclip":["attachment"],"pause":["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],"percent":["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],"phone":["call"],"play":["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],"plus":["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],"pocket":["logo","save"],"power":["on","off"],"printer":["fax","office","device"],"radio":["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],"repeat":["loop","arrows"],"rewind":["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],"rss":["feed","subscribe"],"save":["floppy disk"],"scissors":["cut"],"search":["find","magnifier","magnifying glass"],"send":["message","mail","email","paper airplane","paper aeroplane"],"settings":["cog","edit","gear","preferences"],"share-2":["network","connections"],"shield":["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],"shuffle":["music"],"skip-back":["music"],"skip-forward":["music"],"slack":["logo"],"slash":["ban","no"],"sliders":["settings","controls"],"smartphone":["cellphone","device"],"smile":["emoji","face","happy","good","emotion"],"speaker":["audio","music"],"star":["bookmark","favorite","like"],"stop-circle":["media","music"],"sun":["brightness","weather","light"],"sunrise":["weather","time","morning","day"],"sunset":["weather","time","evening","night"],"tablet":["device"],"tag":["label"],"target":["logo","bullseye"],"terminal":["code","command line","prompt"],"thermometer":["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],"tool":["settings","spanner"],"trash":["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],"triangle":["delta"],"truck":["delivery","van","shipping","transport","lorry"],"tv":["television","stream"],"twitch":["logo"],"twitter":["logo","social"],"type":["text"],"umbrella":["rain","weather"],"unlock":["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],"user":["person","account"],"users":["group"],"video-off":["camera","movie","film"],"video":["camera","movie","film"],"voicemail":["phone"],"volume":["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],"watch":["clock","time"],"wifi-off":["disabled"],"wifi":["connection","signal","wireless"],"wind":["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],"x":["cancel","close","delete","remove","times","clear"],"youtube":["logo","video","play"],"zap-off":["flash","camera","lightning"],"zap":["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]};
/***/ }),
/***/ "./src/to-svg.js":
/*!***********************!*\
!*** ./src/to-svg.js ***!
\***********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
var _icons2 = _interopRequireDefault(_icons);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Create an SVG string.
* @deprecated
* @param {string} name
* @param {Object} attrs
* @returns {string}
*/
function toSvg(name) {
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');
if (!name) {
throw new Error('The required `key` (icon name) parameter is missing.');
}
if (!_icons2.default[name]) {
throw new Error('No icon matching \'' + name + '\'. See the complete list of icons at https://feathericons.com');
}
return _icons2.default[name].toSvg(attrs);
}
exports.default = toSvg;
/***/ }),
/***/ 0:
/*!**************************************************!*\
!*** multi core-js/es/array/from ./src/index.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/es/array/from */"./node_modules/core-js/es/array/from.js");
module.exports = __webpack_require__(/*! /home/runner/work/feather/feather/src/index.js */"./src/index.js");
/***/ })
/******/ });
});
});
const VIEW_TYPE_SHORTCUTS_ANALYZER = 'keyboard-shortcuts-visualization';
const DEFAULT_FILTER_SETTINGS = {
FeaturedFirst: false,
StrictSearch: false,
HighlightCustom: false,
HighlightDuplicates: false,
DisplayWOhotkeys: false,
DisplayIDs: false,
};
const DEFAULT_PLUGIN_SETTINGS = {
showStatusBarItem: true,
filterSettings: DEFAULT_FILTER_SETTINGS,
featuredCommandIDs: [],
};
const mainSectionQwerty = {
name: 'main',
gridRatio: 3.75,
rows: [
[
{
label: 'Escape',
tryUnicode: true,
},
{
label: 'empty',
width: 1,
},
{
label: 'F1',
},
{
label: 'F2',
},
{
label: 'F3',
},
{
label: 'F4',
},
{
label: 'empty',
width: 0.5,
},
{
label: 'F5',
},
{
label: 'F6',
},
{
label: 'F7',
},
{
label: 'empty',
width: 0.5,
},
{
label: 'F8',
},
{
label: 'F9',
},
{
label: 'F10',
},
{
label: 'F11',
},
{
label: 'F12',
},
],
[
{
label: '`',
},
{
label: '1',
},
{
label: '2',
},
{
label: '3',
},
{
label: '4',
},
{
label: '5',
},
{
label: '6',
},
{
label: '7',
},
{
label: '8',
},
{
label: '9',
},
{
label: '0',
},
{
label: '-',
},
{
label: '=',
},
{
label: 'Backspace',
fontSize: 'small',
caps: 'all-small-caps',
width: 2,
},
],
[
{
label: 'Tab',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Q',
},
{
label: 'W',
},
{
label: 'E',
},
{
label: 'R',
},
{
label: 'T',
},
{
label: 'Y',
},
{
label: 'U',
},
{
label: 'I',
},
{
label: 'O',
},
{
label: 'P',
},
{
label: '[',
},
{
label: ']',
},
{
label: '\\',
width: 1.5,
},
],
[
{
label: 'CapsLock',
fontSize: 'small',
caps: 'all-small-caps',
tryUnicode: true,
width: 1.75,
},
{
label: 'A',
},
{
label: 'S',
},
{
label: 'D',
},
{
label: 'F',
},
{
label: 'G',
},
{
label: 'H',
},
{
label: 'J',
},
{
label: 'K',
},
{
label: 'L',
},
{
label: ';',
},
{
label: "'",
},
{
label: 'Enter',
fontSize: 'small',
caps: 'all-small-caps',
width: 2.25,
},
],
[
{
label: 'Shift',
fontSize: 'small',
caps: 'all-small-caps',
tryUnicode: true,
width: 2,
},
{
label: 'Z',
},
{
label: 'X',
},
{
label: 'C',
},
{
label: 'V',
},
{
label: 'B',
},
{
label: 'N',
},
{
label: 'M',
},
{
label: ',',
},
{
label: '.',
},
{
label: '/',
},
{
label: 'Shift',
fontSize: 'small',
caps: 'all-small-caps',
width: 3,
tryUnicode: true,
},
],
[
{
label: 'Control',
fontSize: 'small',
tryUnicode: true,
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Meta',
tryUnicode: true,
fontSize: 'small',
width: 1.5,
},
{
label: 'Alt',
tryUnicode: true,
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: ' ',
width: 6,
tryUnicode: true,
},
{
label: 'Alt',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Meta',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Control',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
],
],
};
// keyboard layout for other keys and cursor keys
const keyboardOther = {
name: 'other',
gridRatio: 0.75,
rows: [
[
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
],
[
{
label: 'Insert',
smallText: true,
tryUnicode: true,
},
{
label: 'Home',
smallText: true,
},
{
label: 'PageUp',
smallText: true,
tryUnicode: true,
},
],
[
{
label: 'Delete',
tryUnicode: true,
smallText: true,
},
{
label: 'End',
smallText: true,
},
{
label: 'PageDown',
tryUnicode: true,
smallText: true,
},
],
[
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
],
[
{
label: 'empty',
},
{
label: 'ArrowUp',
tryUnicode: true,
},
{
label: 'empty',
},
],
[
{
label: 'ArrowLeft',
tryUnicode: true,
},
{
label: 'ArrowDown',
tryUnicode: true,
},
{
label: 'ArrowRight',
tryUnicode: true,
},
],
],
};
// keyboard layout in rows for number pad
const keyboardNum = {
name: 'num',
gridRatio: 1,
rows: [
[
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
],
[
{
label: 'NumLock',
tryUnicode: true,
},
{
label: '/',
},
{
label: '*',
},
{
label: '-',
},
{
label: 'Numpad7',
strictCode: true,
tryUnicode: true,
},
],
[
{
label: 'Numpad8',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad9',
strictCode: true,
tryUnicode: true,
},
{
label: '+',
height: 2,
},
],
[
{
label: 'Numpad4',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad5',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad6',
strictCode: true,
tryUnicode: true,
},
],
[
{
label: 'Numpad1',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad2',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad3',
strictCode: true,
tryUnicode: true,
},
{
label: 'Enter',
height: 2,
// tryUnicode: true,
},
],
[
{
label: 'Numpad0',
strictCode: true,
tryUnicode: true,
width: 2,
},
{
label: '.',
},
],
],
};
const SpecialSymbols = {
Command: '⌘',
Option: '⌥',
ArrowLeft: '←',
ArrowUp: '↑',
ArrowRight: '→',
ArrowDown: '↓',
Space: '⎵',
' ': '⎵',
};
// https://www.toptal.com/developers/keycode/table-of-all-keycodes
const JavaSciptKeyCodes = {
3: {
Key: 'Cancel',
Code: 'Pause',
},
8: {
Key: 'Backspace',
Code: 'Backspace',
Unicode: '⌫',
},
9: {
Key: 'Tab',
Code: 'Tab',
Unicode: '⇥',
},
12: {
Key: 'Clear',
Code: 'NumLock',
Unicode: '⌧',
},
13: {
Key: 'Enter',
Code: 'Enter',
Unicode: '⏎',
},
16: {
Key: 'Shift',
Code: 'ShiftLeft',
Unicode: '⇧',
},
17: {
Key: 'Control',
Code: 'ControlLeft',
Unicode: 'Ctrl',
},
18: {
Key: 'Alt',
Code: 'AltLeft',
},
19: {
Key: 'Pause',
Code: 'Pause',
},
20: {
Key: 'CapsLock',
Code: 'CapsLock',
Unicode: '⇪',
},
27: {
Key: 'Escape',
Code: 'Escape',
Unicode: 'Esc',
},
32: {
Key: ' ',
Code: 'Space',
Unicode: '⎵',
},
33: {
Key: 'PageUp',
Code: 'Numpad9',
Unicode: 'Page<br>Up',
},
34: {
Key: 'PageDown',
Code: 'Numpad3',
Unicode: 'Page<br>Down',
},
35: {
Key: 'End',
Code: 'Numpad1',
Unicode: '⇢',
},
36: {
Key: 'Home',
Code: 'Numpad7',
Unicode: '⌂',
},
37: {
Key: 'ArrowLeft',
Code: 'ArrowLeft',
Unicode: '←',
},
38: {
Key: 'ArrowUp',
Code: 'ArrowUp',
Unicode: '↑',
},
39: {
Key: 'ArrowRight',
Code: 'ArrowRight',
Unicode: '→',
},
40: {
Key: 'ArrowDown',
Code: 'ArrowDown',
Unicode: '↓',
},
44: {
Key: 'F13',
Code: 'F13',
Unicode: '⎙',
},
45: {
Key: 'Insert',
Code: 'Numpad0',
Unicode: 'Ins',
},
46: {
Key: 'Delete',
Code: 'NumpadDecimal',
Unicode: 'Del',
},
48: {
Key: '0',
Code: 'Digit0',
Unicode: '0',
},
49: {
Key: '1',
Code: 'Digit1',
Unicode: '1',
},
50: {
Key: '2',
Code: 'Digit2',
Unicode: '2',
},
51: {
Key: '3',
Code: 'Digit3',
Unicode: '3',
},
52: {
Key: '4',
Code: 'Digit4',
Unicode: '4',
},
53: {
Key: '5',
Code: 'Digit5',
Unicode: '5',
},
54: {
Key: '6',
Code: 'Digit6',
Unicode: '6',
},
55: {
Key: '7',
Code: 'Digit7',
Unicode: '7',
},
56: {
Key: '8',
Code: 'Digit8',
Unicode: '8',
},
57: {
Key: '9',
Code: 'Digit9',
Unicode: '9',
},
58: {
Key: ':',
Code: 'Period',
},
59: {
Key: ';',
Code: 'Semicolon',
},
60: {
Key: '<',
Code: 'Backquote',
},
// 61: {
// Key: '=',
// Code: 'Equal',
// }, // firefox
63: {
Key: 'ß',
Code: 'Minus',
},
65: {
Key: 'a',
Code: 'KeyA',
},
66: {
Key: 'b',
Code: 'KeyB',
},
67: {
Key: 'c',
Code: 'KeyC',
},
68: {
Key: 'd',
Code: 'KeyD',
},
69: {
Key: 'e',
Code: 'KeyE',
},
70: {
Key: 'f',
Code: 'KeyF',
},
71: {
Key: 'g',
Code: 'KeyG',
},
72: {
Key: 'h',
Code: 'KeyH',
},
73: {
Key: 'i',
Code: 'KeyI',
},
74: {
Key: 'j',
Code: 'KeyJ',
},
75: {
Key: 'k',
Code: 'KeyK',
},
76: {
Key: 'l',
Code: 'KeyL',
},
77: {
Key: 'm',
Code: 'KeyM',
},
78: {
Key: 'n',
Code: 'KeyN',
},
79: {
Key: 'o',
Code: 'KeyO',
},
80: {
Key: 'p',
Code: 'KeyP',
},
81: {
Key: 'q',
Code: 'KeyQ',
},
82: {
Key: 'r',
Code: 'KeyR',
},
83: {
Key: 's',
Code: 'KeyS',
},
84: {
Key: 't',
Code: 'KeyT',
},
85: {
Key: 'u',
Code: 'KeyU',
},
86: {
Key: 'v',
Code: 'KeyV',
},
87: {
Key: 'w',
Code: 'KeyW',
},
88: {
Key: 'x',
Code: 'KeyX',
},
89: {
Key: 'y',
Code: 'KeyY',
},
90: {
Key: 'z',
Code: 'KeyZ',
},
91: {
Key: 'Meta',
Code: 'MetaLeft',
},
92: {
Key: 'Meta',
Code: 'MetaRight',
},
93: {
Key: 'ContextMenu',
Code: 'ContextMenu',
},
96: {
Key: '0',
Code: 'Numpad0',
Unicode: '0',
},
97: {
Key: '1',
Code: 'Numpad1',
Unicode: '1',
},
98: {
Key: '2',
Code: 'Numpad2',
Unicode: '2',
},
99: {
Key: '3',
Code: 'Numpad3',
Unicode: '3',
},
100: {
Key: '4',
Code: 'Numpad4',
Unicode: '4',
},
101: {
Key: '5',
Code: 'Numpad5',
Unicode: '5',
},
102: {
Key: '6',
Code: 'Numpad6',
Unicode: '6',
},
103: {
Key: '7',
Code: 'Numpad7',
Unicode: '8',
},
104: {
Key: '8',
Code: 'Numpad8',
Unicode: '8',
},
105: {
Key: '9',
Code: 'Numpad9',
Unicode: '9',
},
106: {
Key: '*',
Code: 'NumpadMultiply',
Unicode: '×',
},
107: {
Key: '+',
Code: 'NumpadAdd',
},
108: {
Key: ',',
Code: 'NumpadDecimal',
},
109: {
Key: '-',
Code: 'NumpadSubtract',
},
110: {
Key: '.',
Code: 'NumpadDecimal',
},
111: {
Key: '/',
Code: 'NumpadDivide',
},
112: {
Key: 'F1',
Code: 'F1',
},
113: {
Key: 'F2',
Code: 'F2',
},
114: {
Key: 'F3',
Code: 'F3',
},
115: {
Key: 'F4',
Code: 'F4',
},
116: {
Key: 'F5',
Code: 'F5',
},
117: {
Key: 'F6',
Code: 'F6',
},
118: {
Key: 'F7',
Code: 'F7',
},
119: {
Key: 'F8',
Code: 'F8',
},
120: {
Key: 'F9',
Code: 'F9',
},
121: {
Key: 'F10',
Code: 'F10',
},
122: {
Key: 'F11',
Code: 'F11',
},
123: {
Key: 'F12',
Code: 'F12',
},
124: {
Key: 'F13',
Code: 'F13',
},
125: {
Key: 'F14',
Code: 'F14',
},
126: {
Key: 'F15',
Code: 'F15',
},
127: {
Key: 'F16',
Code: 'F16',
},
128: {
Key: 'F17',
Code: 'F17',
},
129: {
Key: 'F18',
Code: 'F18',
},
130: {
Key: 'F19',
Code: 'F19',
},
131: {
Key: 'F20',
Code: 'F20',
},
132: {
Key: 'F21',
Code: 'F21',
},
133: {
Key: 'F22',
Code: 'F22',
},
134: {
Key: 'F23',
Code: 'F23',
},
135: {
Key: 'F24',
Code: 'F24',
},
136: {
Key: 'F25',
Code: 'F25',
},
137: {
Key: 'F26',
Code: 'F26',
},
138: {
Key: 'F27',
Code: 'F27',
},
139: {
Key: 'F28',
Code: 'F28',
},
140: {
Key: 'F29',
Code: 'F29',
},
141: {
Key: 'F30',
Code: 'F30',
},
142: {
Key: 'F31',
Code: 'F31',
},
143: {
Key: 'F32',
Code: 'F32',
},
144: {
Key: 'NumLock',
Code: 'NumLock',
Unicode: '⇭',
},
145: {
Key: 'ScrollLock',
Code: 'ScrollLock',
Unicode: '⤓',
},
160: {
Key: '[',
Code: 'BracketLeft',
},
161: {
Key: 'Dead',
Code: 'BracketRight',
},
163: {
Key: `\\`,
Code: 'Backquote',
},
164: {
Key: '$',
Code: 'Backslash',
},
165: {
Key: '^ù',
Code: 'Quote',
},
169: {
Key: ')',
Code: 'Minus',
},
170: {
Key: '*',
Code: 'BackSlash',
},
171: {
Key: '+',
Code: 'BracketRight',
},
173: {
Key: '-',
Code: 'Minus',
},
174: {
Key: 'AudioVolumeDown',
Code: 'AudioVolumeDown',
},
176: {
Key: 'MediaTractNext',
Code: 'MediaTrackNext',
},
177: {
Key: 'MediaTractPrevious',
Code: 'MediaTrackPrevious',
},
179: {
Key: 'MediaPlayPause',
Code: 'MediaPlayPause',
},
180: {
Key: 'LaunchMail',
Code: 'LaunchMail',
Unicode: '✉',
},
181: {
Key: 'AudioVolumeMute',
Code: 'VolumeMute',
},
182: {
Key: 'AudioVolumeDown',
Code: 'VolumeDown',
},
183: {
Key: 'AudioVolumeUp',
Code: 'VolumeUp',
},
186: {
Key: ';',
Code: 'Semicolon',
},
187: {
Key: '=',
Code: 'Equal',
},
188: {
Key: ',',
Code: 'Comma',
},
189: {
Key: '-',
Code: 'Minus',
},
190: {
Key: '.',
Code: 'Period',
},
191: {
Key: '/',
Code: 'Slash',
},
192: {
Key: '`',
Code: 'Backquote',
},
193: {
Key: '/',
Code: 'IntlRo',
},
194: {
Key: '.',
Code: 'NumpadComma',
},
219: {
Key: '[',
Code: 'BracketLeft',
},
220: {
Key: '\\',
Code: 'Backslash',
},
221: {
Key: ']',
Code: 'BracketRight',
},
222: {
Key: "'",
Code: 'Quote',
},
223: {
Key: '`',
Code: 'Backquote',
},
224: {
Key: 'Meta',
Code: 'Meta',
Unicode: '⌘',
},
225: {
Key: 'AltGraph',
Code: 'AltRight',
Unicode: '⌥',
},
226: {
Key: '\\',
Code: 'IntlBackslash',
},
};
function noop() { }
const identity = x => x;
function assign(tar, src) {
// @ts-ignore
for (const k in src)
tar[k] = src[k];
return tar;
}
function run(fn) {
return fn();
}
function blank_object() {
return Object.create(null);
}
function run_all(fns) {
fns.forEach(run);
}
function is_function(thing) {
return typeof thing === 'function';
}
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
function is_empty(obj) {
return Object.keys(obj).length === 0;
}
function subscribe(store, ...callbacks) {
if (store == null) {
return noop;
}
const unsub = store.subscribe(...callbacks);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
function component_subscribe(component, store, callback) {
component.$$.on_destroy.push(subscribe(store, callback));
}
function create_slot(definition, ctx, $$scope, fn) {
if (definition) {
const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
return definition[0](slot_ctx);
}
}
function get_slot_context(definition, ctx, $$scope, fn) {
return definition[1] && fn
? assign($$scope.ctx.slice(), definition[1](fn(ctx)))
: $$scope.ctx;
}
function get_slot_changes(definition, $$scope, dirty, fn) {
if (definition[2] && fn) {
const lets = definition[2](fn(dirty));
if ($$scope.dirty === undefined) {
return lets;
}
if (typeof lets === 'object') {
const merged = [];
const len = Math.max($$scope.dirty.length, lets.length);
for (let i = 0; i < len; i += 1) {
merged[i] = $$scope.dirty[i] | lets[i];
}
return merged;
}
return $$scope.dirty | lets;
}
return $$scope.dirty;
}
function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
if (slot_changes) {
const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
slot.p(slot_context, slot_changes);
}
}
function get_all_dirty_from_scope($$scope) {
if ($$scope.ctx.length > 32) {
const dirty = [];
const length = $$scope.ctx.length / 32;
for (let i = 0; i < length; i++) {
dirty[i] = -1;
}
return dirty;
}
return -1;
}
function exclude_internal_props(props) {
const result = {};
for (const k in props)
if (k[0] !== '$')
result[k] = props[k];
return result;
}
function compute_rest_props(props, keys) {
const rest = {};
keys = new Set(keys);
for (const k in props)
if (!keys.has(k) && k[0] !== '$')
rest[k] = props[k];
return rest;
}
function null_to_empty(value) {
return value == null ? '' : value;
}
function set_store_value(store, ret, value) {
store.set(value);
return ret;
}
function action_destroyer(action_result) {
return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
}
const is_client = typeof window !== 'undefined';
let now = is_client
? () => window.performance.now()
: () => Date.now();
let raf = is_client ? cb => requestAnimationFrame(cb) : noop;
const tasks = new Set();
function run_tasks(now) {
tasks.forEach(task => {
if (!task.c(now)) {
tasks.delete(task);
task.f();
}
});
if (tasks.size !== 0)
raf(run_tasks);
}
/**
* Creates a new task that runs on each raf frame
* until it returns a falsy value or is aborted
*/
function loop(callback) {
let task;
if (tasks.size === 0)
raf(run_tasks);
return {
promise: new Promise(fulfill => {
tasks.add(task = { c: callback, f: fulfill });
}),
abort() {
tasks.delete(task);
}
};
}
function append(target, node) {
target.appendChild(node);
}
function append_styles(target, style_sheet_id, styles) {
const append_styles_to = get_root_for_style(target);
if (!append_styles_to.getElementById(style_sheet_id)) {
const style = element('style');
style.id = style_sheet_id;
style.textContent = styles;
append_stylesheet(append_styles_to, style);
}
}
function get_root_for_style(node) {
if (!node)
return document;
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
if (root && root.host) {
return root;
}
return node.ownerDocument;
}
function append_empty_stylesheet(node) {
const style_element = element('style');
append_stylesheet(get_root_for_style(node), style_element);
return style_element.sheet;
}
function append_stylesheet(node, style) {
append(node.head || node, style);
}
function insert(target, node, anchor) {
target.insertBefore(node, anchor || null);
}
function detach(node) {
node.parentNode.removeChild(node);
}
function destroy_each(iterations, detaching) {
for (let i = 0; i < iterations.length; i += 1) {
if (iterations[i])
iterations[i].d(detaching);
}
}
function element(name) {
return document.createElement(name);
}
function svg_element(name) {
return document.createElementNS('http://www.w3.org/2000/svg', name);
}
function text(data) {
return document.createTextNode(data);
}
function space() {
return text(' ');
}
function empty() {
return text('');
}
function listen(node, event, handler, options) {
node.addEventListener(event, handler, options);
return () => node.removeEventListener(event, handler, options);
}
function attr(node, attribute, value) {
if (value == null)
node.removeAttribute(attribute);
else if (node.getAttribute(attribute) !== value)
node.setAttribute(attribute, value);
}
function set_svg_attributes(node, attributes) {
for (const key in attributes) {
attr(node, key, attributes[key]);
}
}
function children(element) {
return Array.from(element.childNodes);
}
function set_data(text, data) {
data = '' + data;
if (text.wholeText !== data)
text.data = data;
}
function set_input_value(input, value) {
input.value = value == null ? '' : value;
}
function set_style(node, key, value, important) {
if (value === null) {
node.style.removeProperty(key);
}
else {
node.style.setProperty(key, value, important ? 'important' : '');
}
}
// unfortunately this can't be a constant as that wouldn't be tree-shakeable
// so we cache the result instead
let crossorigin;
function is_crossorigin() {
if (crossorigin === undefined) {
crossorigin = false;
try {
if (typeof window !== 'undefined' && window.parent) {
void window.parent.document;
}
}
catch (error) {
crossorigin = true;
}
}
return crossorigin;
}
function add_resize_listener(node, fn) {
const computed_style = getComputedStyle(node);
if (computed_style.position === 'static') {
node.style.position = 'relative';
}
const iframe = element('iframe');
iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +
'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');
iframe.setAttribute('aria-hidden', 'true');
iframe.tabIndex = -1;
const crossorigin = is_crossorigin();
let unsubscribe;
if (crossorigin) {
iframe.src = "data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>";
unsubscribe = listen(window, 'message', (event) => {
if (event.source === iframe.contentWindow)
fn();
});
}
else {
iframe.src = 'about:blank';
iframe.onload = () => {
unsubscribe = listen(iframe.contentWindow, 'resize', fn);
};
}
append(node, iframe);
return () => {
if (crossorigin) {
unsubscribe();
}
else if (unsubscribe && iframe.contentWindow) {
unsubscribe();
}
detach(iframe);
};
}
function toggle_class(element, name, toggle) {
element.classList[toggle ? 'add' : 'remove'](name);
}
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
const e = document.createEvent('CustomEvent');
e.initCustomEvent(type, bubbles, cancelable, detail);
return e;
}
// we need to store the information for multiple documents because a Svelte application could also contain iframes
// https://github.com/sveltejs/svelte/issues/3624
const managed_styles = new Map();
let active = 0;
// https://github.com/darkskyapp/string-hash/blob/master/index.js
function hash(str) {
let hash = 5381;
let i = str.length;
while (i--)
hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
return hash >>> 0;
}
function create_style_information(doc, node) {
const info = { stylesheet: append_empty_stylesheet(node), rules: {} };
managed_styles.set(doc, info);
return info;
}
function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {
const step = 16.666 / duration;
let keyframes = '{\n';
for (let p = 0; p <= 1; p += step) {
const t = a + (b - a) * ease(p);
keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`;
}
const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`;
const name = `__svelte_${hash(rule)}_${uid}`;
const doc = get_root_for_style(node);
const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);
if (!rules[name]) {
rules[name] = true;
stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
}
const animation = node.style.animation || '';
node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;
active += 1;
return name;
}
function delete_rule(node, name) {
const previous = (node.style.animation || '').split(', ');
const next = previous.filter(name
? anim => anim.indexOf(name) < 0 // remove specific animation
: anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations
);
const deleted = previous.length - next.length;
if (deleted) {
node.style.animation = next.join(', ');
active -= deleted;
if (!active)
clear_rules();
}
}
function clear_rules() {
raf(() => {
if (active)
return;
managed_styles.forEach(info => {
const { stylesheet } = info;
let i = stylesheet.cssRules.length;
while (i--)
stylesheet.deleteRule(i);
info.rules = {};
});
managed_styles.clear();
});
}
let current_component;
function set_current_component(component) {
current_component = component;
}
function get_current_component() {
if (!current_component)
throw new Error('Function called outside component initialization');
return current_component;
}
function onMount(fn) {
get_current_component().$$.on_mount.push(fn);
}
function onDestroy(fn) {
get_current_component().$$.on_destroy.push(fn);
}
function createEventDispatcher() {
const component = get_current_component();
return (type, detail, { cancelable = false } = {}) => {
const callbacks = component.$$.callbacks[type];
if (callbacks) {
// TODO are there situations where events could be dispatched
// in a server (non-DOM) environment?
const event = custom_event(type, detail, { cancelable });
callbacks.slice().forEach(fn => {
fn.call(component, event);
});
return !event.defaultPrevented;
}
return true;
};
}
const dirty_components = [];
const binding_callbacks = [];
const render_callbacks = [];
const flush_callbacks = [];
const resolved_promise = Promise.resolve();
let update_scheduled = false;
function schedule_update() {
if (!update_scheduled) {
update_scheduled = true;
resolved_promise.then(flush);
}
}
function add_render_callback(fn) {
render_callbacks.push(fn);
}
function add_flush_callback(fn) {
flush_callbacks.push(fn);
}
// flush() calls callbacks in this order:
// 1. All beforeUpdate callbacks, in order: parents before children
// 2. All bind:this callbacks, in reverse order: children before parents.
// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
// for afterUpdates called during the initial onMount, which are called in
// reverse order: children before parents.
// Since callbacks might update component values, which could trigger another
// call to flush(), the following steps guard against this:
// 1. During beforeUpdate, any updated components will be added to the
// dirty_components array and will cause a reentrant call to flush(). Because
// the flush index is kept outside the function, the reentrant call will pick
// up where the earlier call left off and go through all dirty components. The
// current_component value is saved and restored so that the reentrant call will
// not interfere with the "parent" flush() call.
// 2. bind:this callbacks cannot trigger new flush() calls.
// 3. During afterUpdate, any updated components will NOT have their afterUpdate
// callback called a second time; the seen_callbacks set, outside the flush()
// function, guarantees this behavior.
const seen_callbacks = new Set();
let flushidx = 0; // Do *not* move this inside the flush() function
function flush() {
const saved_component = current_component;
do {
// first, call beforeUpdate functions
// and update components
while (flushidx < dirty_components.length) {
const component = dirty_components[flushidx];
flushidx++;
set_current_component(component);
update(component.$$);
}
set_current_component(null);
dirty_components.length = 0;
flushidx = 0;
while (binding_callbacks.length)
binding_callbacks.pop()();
// then, once components are updated, call
// afterUpdate functions. This may cause
// subsequent updates...
for (let i = 0; i < render_callbacks.length; i += 1) {
const callback = render_callbacks[i];
if (!seen_callbacks.has(callback)) {
// ...so guard against infinite loops
seen_callbacks.add(callback);
callback();
}
}
render_callbacks.length = 0;
} while (dirty_components.length);
while (flush_callbacks.length) {
flush_callbacks.pop()();
}
update_scheduled = false;
seen_callbacks.clear();
set_current_component(saved_component);
}
function update($$) {
if ($$.fragment !== null) {
$$.update();
run_all($$.before_update);
const dirty = $$.dirty;
$$.dirty = [-1];
$$.fragment && $$.fragment.p($$.ctx, dirty);
$$.after_update.forEach(add_render_callback);
}
}
let promise;
function wait() {
if (!promise) {
promise = Promise.resolve();
promise.then(() => {
promise = null;
});
}
return promise;
}
function dispatch(node, direction, kind) {
node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));
}
const outroing = new Set();
let outros;
function group_outros() {
outros = {
r: 0,
c: [],
p: outros // parent group
};
}
function check_outros() {
if (!outros.r) {
run_all(outros.c);
}
outros = outros.p;
}
function transition_in(block, local) {
if (block && block.i) {
outroing.delete(block);
block.i(local);
}
}
function transition_out(block, local, detach, callback) {
if (block && block.o) {
if (outroing.has(block))
return;
outroing.add(block);
outros.c.push(() => {
outroing.delete(block);
if (callback) {
if (detach)
block.d(1);
callback();
}
});
block.o(local);
}
else if (callback) {
callback();
}
}
const null_transition = { duration: 0 };
function create_in_transition(node, fn, params) {
let config = fn(node, params);
let running = false;
let animation_name;
let task;
let uid = 0;
function cleanup() {
if (animation_name)
delete_rule(node, animation_name);
}
function go() {
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
if (css)
animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);
tick(0, 1);
const start_time = now() + delay;
const end_time = start_time + duration;
if (task)
task.abort();
running = true;
add_render_callback(() => dispatch(node, true, 'start'));
task = loop(now => {
if (running) {
if (now >= end_time) {
tick(1, 0);
dispatch(node, true, 'end');
cleanup();
return running = false;
}
if (now >= start_time) {
const t = easing((now - start_time) / duration);
tick(t, 1 - t);
}
}
return running;
});
}
let started = false;
return {
start() {
if (started)
return;
started = true;
delete_rule(node);
if (is_function(config)) {
config = config();
wait().then(go);
}
else {
go();
}
},
invalidate() {
started = false;
},
end() {
if (running) {
cleanup();
running = false;
}
}
};
}
function create_out_transition(node, fn, params) {
let config = fn(node, params);
let running = true;
let animation_name;
const group = outros;
group.r += 1;
function go() {
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
if (css)
animation_name = create_rule(node, 1, 0, duration, delay, easing, css);
const start_time = now() + delay;
const end_time = start_time + duration;
add_render_callback(() => dispatch(node, false, 'start'));
loop(now => {
if (running) {
if (now >= end_time) {
tick(0, 1);
dispatch(node, false, 'end');
if (!--group.r) {
// this will result in `end()` being called,
// so we don't need to clean up here
run_all(group.c);
}
return false;
}
if (now >= start_time) {
const t = easing((now - start_time) / duration);
tick(1 - t, t);
}
}
return running;
});
}
if (is_function(config)) {
wait().then(() => {
// @ts-ignore
config = config();
go();
});
}
else {
go();
}
return {
end(reset) {
if (reset && config.tick) {
config.tick(1, 0);
}
if (running) {
if (animation_name)
delete_rule(node, animation_name);
running = false;
}
}
};
}
function create_bidirectional_transition(node, fn, params, intro) {
let config = fn(node, params);
let t = intro ? 0 : 1;
let running_program = null;
let pending_program = null;
let animation_name = null;
function clear_animation() {
if (animation_name)
delete_rule(node, animation_name);
}
function init(program, duration) {
const d = (program.b - t);
duration *= Math.abs(d);
return {
a: t,
b: program.b,
d,
duration,
start: program.start,
end: program.start + duration,
group: program.group
};
}
function go(b) {
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
const program = {
start: now() + delay,
b
};
if (!b) {
// @ts-ignore todo: improve typings
program.group = outros;
outros.r += 1;
}
if (running_program || pending_program) {
pending_program = program;
}
else {
// if this is an intro, and there's a delay, we need to do
// an initial tick and/or apply CSS animation immediately
if (css) {
clear_animation();
animation_name = create_rule(node, t, b, duration, delay, easing, css);
}
if (b)
tick(0, 1);
running_program = init(program, duration);
add_render_callback(() => dispatch(node, b, 'start'));
loop(now => {
if (pending_program && now > pending_program.start) {
running_program = init(pending_program, duration);
pending_program = null;
dispatch(node, running_program.b, 'start');
if (css) {
clear_animation();
animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
}
}
if (running_program) {
if (now >= running_program.end) {
tick(t = running_program.b, 1 - t);
dispatch(node, running_program.b, 'end');
if (!pending_program) {
// we're done
if (running_program.b) {
// intro — we can tidy up immediately
clear_animation();
}
else {
// outro — needs to be coordinated
if (!--running_program.group.r)
run_all(running_program.group.c);
}
}
running_program = null;
}
else if (now >= running_program.start) {
const p = now - running_program.start;
t = running_program.a + running_program.d * easing(p / running_program.duration);
tick(t, 1 - t);
}
}
return !!(running_program || pending_program);
});
}
}
return {
run(b) {
if (is_function(config)) {
wait().then(() => {
// @ts-ignore
config = config();
go(b);
});
}
else {
go(b);
}
},
end() {
clear_animation();
running_program = pending_program = null;
}
};
}
function outro_and_destroy_block(block, lookup) {
transition_out(block, 1, 1, () => {
lookup.delete(block.key);
});
}
function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {
let o = old_blocks.length;
let n = list.length;
let i = o;
const old_indexes = {};
while (i--)
old_indexes[old_blocks[i].key] = i;
const new_blocks = [];
const new_lookup = new Map();
const deltas = new Map();
i = n;
while (i--) {
const child_ctx = get_context(ctx, list, i);
const key = get_key(child_ctx);
let block = lookup.get(key);
if (!block) {
block = create_each_block(key, child_ctx);
block.c();
}
else if (dynamic) {
block.p(child_ctx, dirty);
}
new_lookup.set(key, new_blocks[i] = block);
if (key in old_indexes)
deltas.set(key, Math.abs(i - old_indexes[key]));
}
const will_move = new Set();
const did_move = new Set();
function insert(block) {
transition_in(block, 1);
block.m(node, next);
lookup.set(block.key, block);
next = block.first;
n--;
}
while (o && n) {
const new_block = new_blocks[n - 1];
const old_block = old_blocks[o - 1];
const new_key = new_block.key;
const old_key = old_block.key;
if (new_block === old_block) {
// do nothing
next = new_block.first;
o--;
n--;
}
else if (!new_lookup.has(old_key)) {
// remove old block
destroy(old_block, lookup);
o--;
}
else if (!lookup.has(new_key) || will_move.has(new_key)) {
insert(new_block);
}
else if (did_move.has(old_key)) {
o--;
}
else if (deltas.get(new_key) > deltas.get(old_key)) {
did_move.add(new_key);
insert(new_block);
}
else {
will_move.add(old_key);
o--;
}
}
while (o--) {
const old_block = old_blocks[o];
if (!new_lookup.has(old_block.key))
destroy(old_block, lookup);
}
while (n)
insert(new_blocks[n - 1]);
return new_blocks;
}
function get_spread_update(levels, updates) {
const update = {};
const to_null_out = {};
const accounted_for = { $$scope: 1 };
let i = levels.length;
while (i--) {
const o = levels[i];
const n = updates[i];
if (n) {
for (const key in o) {
if (!(key in n))
to_null_out[key] = 1;
}
for (const key in n) {
if (!accounted_for[key]) {
update[key] = n[key];
accounted_for[key] = 1;
}
}
levels[i] = n;
}
else {
for (const key in o) {
accounted_for[key] = 1;
}
}
}
for (const key in to_null_out) {
if (!(key in update))
update[key] = undefined;
}
return update;
}
function get_spread_object(spread_props) {
return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
}
function bind(component, name, callback) {
const index = component.$$.props[name];
if (index !== undefined) {
component.$$.bound[index] = callback;
callback(component.$$.ctx[index]);
}
}
function create_component(block) {
block && block.c();
}
function mount_component(component, target, anchor, customElement) {
const { fragment, on_mount, on_destroy, after_update } = component.$$;
fragment && fragment.m(target, anchor);
if (!customElement) {
// onMount happens before the initial afterUpdate
add_render_callback(() => {
const new_on_destroy = on_mount.map(run).filter(is_function);
if (on_destroy) {
on_destroy.push(...new_on_destroy);
}
else {
// Edge case - component was destroyed immediately,
// most likely as a result of a binding initialising
run_all(new_on_destroy);
}
component.$$.on_mount = [];
});
}
after_update.forEach(add_render_callback);
}
function destroy_component(component, detaching) {
const $$ = component.$$;
if ($$.fragment !== null) {
run_all($$.on_destroy);
$$.fragment && $$.fragment.d(detaching);
// TODO null out other refs, including component.$$ (but need to
// preserve final state?)
$$.on_destroy = $$.fragment = null;
$$.ctx = [];
}
}
function make_dirty(component, i) {
if (component.$$.dirty[0] === -1) {
dirty_components.push(component);
schedule_update();
component.$$.dirty.fill(0);
}
component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));
}
function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {
const parent_component = current_component;
set_current_component(component);
const $$ = component.$$ = {
fragment: null,
ctx: null,
// state
props,
update: noop,
not_equal,
bound: blank_object(),
// lifecycle
on_mount: [],
on_destroy: [],
on_disconnect: [],
before_update: [],
after_update: [],
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
// everything else
callbacks: blank_object(),
dirty,
skip_bound: false,
root: options.target || parent_component.$$.root
};
append_styles && append_styles($$.root);
let ready = false;
$$.ctx = instance
? instance(component, options.props || {}, (i, ret, ...rest) => {
const value = rest.length ? rest[0] : ret;
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
if (!$$.skip_bound && $$.bound[i])
$$.bound[i](value);
if (ready)
make_dirty(component, i);
}
return ret;
})
: [];
$$.update();
ready = true;
run_all($$.before_update);
// `false` as a special case of no DOM component
$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
if (options.target) {
if (options.hydrate) {
const nodes = children(options.target);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.l(nodes);
nodes.forEach(detach);
}
else {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.c();
}
if (options.intro)
transition_in(component.$$.fragment);
mount_component(component, options.target, options.anchor, options.customElement);
flush();
}
set_current_component(parent_component);
}
/**
* Base class for Svelte components. Used when dev=false.
*/
class SvelteComponent {
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;
}
$on(type, callback) {
const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));
callbacks.push(callback);
return () => {
const index = callbacks.indexOf(callback);
if (index !== -1)
callbacks.splice(index, 1);
};
}
$set($$props) {
if (this.$$set && !is_empty($$props)) {
this.$$.skip_bound = true;
this.$$set($$props);
this.$$.skip_bound = false;
}
}
}
var collectionUtils = createCommonjsModule(function (module) {
var utils = module.exports = {};
/**
* Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.
* @public
* @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.
* @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.
* @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.
*/
utils.forEach = function(collection, callback) {
for(var i = 0; i < collection.length; i++) {
var result = callback(collection[i]);
if(result) {
return result;
}
}
};
});
var elementUtils = function(options) {
var getState = options.stateHandler.getState;
/**
* Tells if the element has been made detectable and ready to be listened for resize events.
* @public
* @param {element} The element to check.
* @returns {boolean} True or false depending on if the element is detectable or not.
*/
function isDetectable(element) {
var state = getState(element);
return state && !!state.isDetectable;
}
/**
* Marks the element that it has been made detectable and ready to be listened for resize events.
* @public
* @param {element} The element to mark.
*/
function markAsDetectable(element) {
getState(element).isDetectable = true;
}
/**
* Tells if the element is busy or not.
* @public
* @param {element} The element to check.
* @returns {boolean} True or false depending on if the element is busy or not.
*/
function isBusy(element) {
return !!getState(element).busy;
}
/**
* Marks the object is busy and should not be made detectable.
* @public
* @param {element} element The element to mark.
* @param {boolean} busy If the element is busy or not.
*/
function markBusy(element, busy) {
getState(element).busy = !!busy;
}
return {
isDetectable: isDetectable,
markAsDetectable: markAsDetectable,
isBusy: isBusy,
markBusy: markBusy
};
};
var listenerHandler = function(idHandler) {
var eventListeners = {};
/**
* Gets all listeners for the given element.
* @public
* @param {element} element The element to get all listeners for.
* @returns All listeners for the given element.
*/
function getListeners(element) {
var id = idHandler.get(element);
if (id === undefined) {
return [];
}
return eventListeners[id] || [];
}
/**
* Stores the given listener for the given element. Will not actually add the listener to the element.
* @public
* @param {element} element The element that should have the listener added.
* @param {function} listener The callback that the element has added.
*/
function addListener(element, listener) {
var id = idHandler.get(element);
if(!eventListeners[id]) {
eventListeners[id] = [];
}
eventListeners[id].push(listener);
}
function removeListener(element, listener) {
var listeners = getListeners(element);
for (var i = 0, len = listeners.length; i < len; ++i) {
if (listeners[i] === listener) {
listeners.splice(i, 1);
break;
}
}
}
function removeAllListeners(element) {
var listeners = getListeners(element);
if (!listeners) { return; }
listeners.length = 0;
}
return {
get: getListeners,
add: addListener,
removeListener: removeListener,
removeAllListeners: removeAllListeners
};
};
var idGenerator = function() {
var idCount = 1;
/**
* Generates a new unique id in the context.
* @public
* @returns {number} A unique id in the context.
*/
function generate() {
return idCount++;
}
return {
generate: generate
};
};
var idHandler = function(options) {
var idGenerator = options.idGenerator;
var getState = options.stateHandler.getState;
/**
* Gets the resize detector id of the element.
* @public
* @param {element} element The target element to get the id of.
* @returns {string|number|null} The id of the element. Null if it has no id.
*/
function getId(element) {
var state = getState(element);
if (state && state.id !== undefined) {
return state.id;
}
return null;
}
/**
* Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.
* @public
* @param {element} element The target element to set the id of.
* @returns {string|number|null} The id of the element.
*/
function setId(element) {
var state = getState(element);
if (!state) {
throw new Error("setId required the element to have a resize detection state.");
}
var id = idGenerator.generate();
state.id = id;
return id;
}
return {
get: getId,
set: setId
};
};
/* global console: false */
/**
* Reporter that handles the reporting of logs, warnings and errors.
* @public
* @param {boolean} quiet Tells if the reporter should be quiet or not.
*/
var reporter = function(quiet) {
function noop() {
//Does nothing.
}
var reporter = {
log: noop,
warn: noop,
error: noop
};
if(!quiet && window.console) {
var attachFunction = function(reporter, name) {
//The proxy is needed to be able to call the method with the console context,
//since we cannot use bind.
reporter[name] = function reporterProxy() {
var f = console[name];
if (f.apply) { //IE9 does not support console.log.apply :)
f.apply(console, arguments);
} else {
for (var i = 0; i < arguments.length; i++) {
f(arguments[i]);
}
}
};
};
attachFunction(reporter, "log");
attachFunction(reporter, "warn");
attachFunction(reporter, "error");
}
return reporter;
};
var browserDetector = createCommonjsModule(function (module) {
var detector = module.exports = {};
detector.isIE = function(version) {
function isAnyIeVersion() {
var agent = navigator.userAgent.toLowerCase();
return agent.indexOf("msie") !== -1 || agent.indexOf("trident") !== -1 || agent.indexOf(" edge/") !== -1;
}
if(!isAnyIeVersion()) {
return false;
}
if(!version) {
return true;
}
//Shamelessly stolen from https://gist.github.com/padolsey/527683
var ieVersion = (function(){
var undef,
v = 3,
div = document.createElement("div"),
all = div.getElementsByTagName("i");
do {
div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->";
}
while (all[0]);
return v > 4 ? v : undef;
}());
return version === ieVersion;
};
detector.isLegacyOpera = function() {
return !!window.opera;
};
});
var utils_1 = createCommonjsModule(function (module) {
var utils = module.exports = {};
utils.getOption = getOption;
function getOption(options, name, defaultValue) {
var value = options[name];
if((value === undefined || value === null) && defaultValue !== undefined) {
return defaultValue;
}
return value;
}
});
var batchProcessor = function batchProcessorMaker(options) {
options = options || {};
var reporter = options.reporter;
var asyncProcess = utils_1.getOption(options, "async", true);
var autoProcess = utils_1.getOption(options, "auto", true);
if(autoProcess && !asyncProcess) {
reporter && reporter.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true.");
asyncProcess = true;
}
var batch = Batch();
var asyncFrameHandler;
var isProcessing = false;
function addFunction(level, fn) {
if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {
// Since this is async, it is guaranteed to be executed after that the fn is added to the batch.
// This needs to be done before, since we're checking the size of the batch to be 0.
processBatchAsync();
}
batch.add(level, fn);
}
function processBatch() {
// Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.
// Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).
isProcessing = true;
while (batch.size()) {
var processingBatch = batch;
batch = Batch();
processingBatch.process();
}
isProcessing = false;
}
function forceProcessBatch(localAsyncProcess) {
if (isProcessing) {
return;
}
if(localAsyncProcess === undefined) {
localAsyncProcess = asyncProcess;
}
if(asyncFrameHandler) {
cancelFrame(asyncFrameHandler);
asyncFrameHandler = null;
}
if(localAsyncProcess) {
processBatchAsync();
} else {
processBatch();
}
}
function processBatchAsync() {
asyncFrameHandler = requestFrame(processBatch);
}
function cancelFrame(listener) {
// var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
var cancel = clearTimeout;
return cancel(listener);
}
function requestFrame(callback) {
// var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };
var raf = function(fn) { return setTimeout(fn, 0); };
return raf(callback);
}
return {
add: addFunction,
force: forceProcessBatch
};
};
function Batch() {
var batch = {};
var size = 0;
var topLevel = 0;
var bottomLevel = 0;
function add(level, fn) {
if(!fn) {
fn = level;
level = 0;
}
if(level > topLevel) {
topLevel = level;
} else if(level < bottomLevel) {
bottomLevel = level;
}
if(!batch[level]) {
batch[level] = [];
}
batch[level].push(fn);
size++;
}
function process() {
for(var level = bottomLevel; level <= topLevel; level++) {
var fns = batch[level];
for(var i = 0; i < fns.length; i++) {
var fn = fns[i];
fn();
}
}
}
function getSize() {
return size;
}
return {
add: add,
process: process,
size: getSize
};
}
var prop = "_erd";
function initState(element) {
element[prop] = {};
return getState(element);
}
function getState(element) {
return element[prop];
}
function cleanState(element) {
delete element[prop];
}
var stateHandler = {
initState: initState,
getState: getState,
cleanState: cleanState
};
/**
* Resize detection strategy that injects objects to elements in order to detect resize events.
* Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/
*/
var object = function(options) {
options = options || {};
var reporter = options.reporter;
var batchProcessor = options.batchProcessor;
var getState = options.stateHandler.getState;
if(!reporter) {
throw new Error("Missing required dependency: reporter.");
}
/**
* Adds a resize event listener to the element.
* @public
* @param {element} element The element that should have the listener added.
* @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
*/
function addListener(element, listener) {
function listenerProxy() {
listener(element);
}
if(browserDetector.isIE(8)) {
//IE 8 does not support object, but supports the resize event directly on elements.
getState(element).object = {
proxy: listenerProxy
};
element.attachEvent("onresize", listenerProxy);
} else {
var object = getObject(element);
if(!object) {
throw new Error("Element is not detectable by this strategy.");
}
object.contentDocument.defaultView.addEventListener("resize", listenerProxy);
}
}
function buildCssTextString(rules) {
var seperator = options.important ? " !important; " : "; ";
return (rules.join(seperator) + seperator).trim();
}
/**
* Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
* @private
* @param {object} options Optional options object.
* @param {element} element The element to make detectable
* @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
*/
function makeDetectable(options, element, callback) {
if (!callback) {
callback = element;
element = options;
options = null;
}
options = options || {};
options.debug;
function injectObject(element, callback) {
var OBJECT_STYLE = buildCssTextString(["display: block", "position: absolute", "top: 0", "left: 0", "width: 100%", "height: 100%", "border: none", "padding: 0", "margin: 0", "opacity: 0", "z-index: -1000", "pointer-events: none"]);
//The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.
// Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.
var positionCheckPerformed = false;
// The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.
// Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.
var style = window.getComputedStyle(element);
var width = element.offsetWidth;
var height = element.offsetHeight;
getState(element).startSize = {
width: width,
height: height
};
function mutateDom() {
function alterPositionStyles() {
if(style.position === "static") {
element.style.setProperty("position", "relative", options.important ? "important" : "");
var removeRelativeStyles = function(reporter, element, style, property) {
function getNumericalValue(value) {
return value.replace(/[^-\d\.]/g, "");
}
var value = style[property];
if(value !== "auto" && getNumericalValue(value) !== "0") {
reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
element.style.setProperty(property, "0", options.important ? "important" : "");
}
};
//Check so that there are no accidental styles that will make the element styled differently now that is is relative.
//If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
removeRelativeStyles(reporter, element, style, "top");
removeRelativeStyles(reporter, element, style, "right");
removeRelativeStyles(reporter, element, style, "bottom");
removeRelativeStyles(reporter, element, style, "left");
}
}
function onObjectLoad() {
// The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.
if (!positionCheckPerformed) {
alterPositionStyles();
}
/*jshint validthis: true */
function getDocument(element, callback) {
//Opera 12 seem to call the object.onload before the actual document has been created.
//So if it is not present, poll it with an timeout until it is present.
//TODO: Could maybe be handled better with object.onreadystatechange or similar.
if(!element.contentDocument) {
var state = getState(element);
if (state.checkForObjectDocumentTimeoutId) {
window.clearTimeout(state.checkForObjectDocumentTimeoutId);
}
state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {
state.checkForObjectDocumentTimeoutId = 0;
getDocument(element, callback);
}, 100);
return;
}
callback(element.contentDocument);
}
//Mutating the object element here seems to fire another load event.
//Mutating the inner document of the object element is fine though.
var objectElement = this;
//Create the style element to be added to the object.
getDocument(objectElement, function onObjectDocumentReady(objectDocument) {
//Notify that the element is ready to be listened to.
callback(element);
});
}
// The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.
// The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.
if (style.position !== "") {
alterPositionStyles();
positionCheckPerformed = true;
}
//Add an object element as a child to the target element that will be listened to for resize events.
var object = document.createElement("object");
object.style.cssText = OBJECT_STYLE;
object.tabIndex = -1;
object.type = "text/html";
object.setAttribute("aria-hidden", "true");
object.onload = onObjectLoad;
//Safari: This must occur before adding the object to the DOM.
//IE: Does not like that this happens before, even if it is also added after.
if(!browserDetector.isIE()) {
object.data = "about:blank";
}
if (!getState(element)) {
// The element has been uninstalled before the actual loading happened.
return;
}
element.appendChild(object);
getState(element).object = object;
//IE: This must occur after adding the object to the DOM.
if(browserDetector.isIE()) {
object.data = "about:blank";
}
}
if(batchProcessor) {
batchProcessor.add(mutateDom);
} else {
mutateDom();
}
}
if(browserDetector.isIE(8)) {
//IE 8 does not support objects properly. Luckily they do support the resize event.
//So do not inject the object and notify that the element is already ready to be listened to.
//The event handler for the resize event is attached in the utils.addListener instead.
callback(element);
} else {
injectObject(element, callback);
}
}
/**
* Returns the child object of the target element.
* @private
* @param {element} element The target element.
* @returns The object element of the target.
*/
function getObject(element) {
return getState(element).object;
}
function uninstall(element) {
if (!getState(element)) {
return;
}
var object = getObject(element);
if (!object) {
return;
}
if (browserDetector.isIE(8)) {
element.detachEvent("onresize", object.proxy);
} else {
element.removeChild(object);
}
if (getState(element).checkForObjectDocumentTimeoutId) {
window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);
}
delete getState(element).object;
}
return {
makeDetectable: makeDetectable,
addListener: addListener,
uninstall: uninstall
};
};
/**
* Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.
* Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js
*/
var forEach$1 = collectionUtils.forEach;
var scroll = function(options) {
options = options || {};
var reporter = options.reporter;
var batchProcessor = options.batchProcessor;
var getState = options.stateHandler.getState;
options.stateHandler.hasState;
var idHandler = options.idHandler;
if (!batchProcessor) {
throw new Error("Missing required dependency: batchProcessor");
}
if (!reporter) {
throw new Error("Missing required dependency: reporter.");
}
//TODO: Could this perhaps be done at installation time?
var scrollbarSizes = getScrollbarSizes();
var styleId = "erd_scroll_detection_scrollbar_style";
var detectionContainerClass = "erd_scroll_detection_container";
function initDocument(targetDocument) {
// Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.
// The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).
injectScrollStyle(targetDocument, styleId, detectionContainerClass);
}
initDocument(window.document);
function buildCssTextString(rules) {
var seperator = options.important ? " !important; " : "; ";
return (rules.join(seperator) + seperator).trim();
}
function getScrollbarSizes() {
var width = 500;
var height = 500;
var child = document.createElement("div");
child.style.cssText = buildCssTextString(["position: absolute", "width: " + width*2 + "px", "height: " + height*2 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
var container = document.createElement("div");
container.style.cssText = buildCssTextString(["position: absolute", "width: " + width + "px", "height: " + height + "px", "overflow: scroll", "visibility: none", "top: " + -width*3 + "px", "left: " + -height*3 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
container.appendChild(child);
document.body.insertBefore(container, document.body.firstChild);
var widthSize = width - container.clientWidth;
var heightSize = height - container.clientHeight;
document.body.removeChild(container);
return {
width: widthSize,
height: heightSize
};
}
function injectScrollStyle(targetDocument, styleId, containerClass) {
function injectStyle(style, method) {
method = method || function (element) {
targetDocument.head.appendChild(element);
};
var styleElement = targetDocument.createElement("style");
styleElement.innerHTML = style;
styleElement.id = styleId;
method(styleElement);
return styleElement;
}
if (!targetDocument.getElementById(styleId)) {
var containerAnimationClass = containerClass + "_animation";
var containerAnimationActiveClass = containerClass + "_animation_active";
var style = "/* Created by the element-resize-detector library. */\n";
style += "." + containerClass + " > div::-webkit-scrollbar { " + buildCssTextString(["display: none"]) + " }\n\n";
style += "." + containerAnimationActiveClass + " { " + buildCssTextString(["-webkit-animation-duration: 0.1s", "animation-duration: 0.1s", "-webkit-animation-name: " + containerAnimationClass, "animation-name: " + containerAnimationClass]) + " }\n";
style += "@-webkit-keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n";
style += "@keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }";
injectStyle(style);
}
}
function addAnimationClass(element) {
element.className += " " + detectionContainerClass + "_animation_active";
}
function addEvent(el, name, cb) {
if (el.addEventListener) {
el.addEventListener(name, cb);
} else if(el.attachEvent) {
el.attachEvent("on" + name, cb);
} else {
return reporter.error("[scroll] Don't know how to add event listeners.");
}
}
function removeEvent(el, name, cb) {
if (el.removeEventListener) {
el.removeEventListener(name, cb);
} else if(el.detachEvent) {
el.detachEvent("on" + name, cb);
} else {
return reporter.error("[scroll] Don't know how to remove event listeners.");
}
}
function getExpandElement(element) {
return getState(element).container.childNodes[0].childNodes[0].childNodes[0];
}
function getShrinkElement(element) {
return getState(element).container.childNodes[0].childNodes[0].childNodes[1];
}
/**
* Adds a resize event listener to the element.
* @public
* @param {element} element The element that should have the listener added.
* @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
*/
function addListener(element, listener) {
var listeners = getState(element).listeners;
if (!listeners.push) {
throw new Error("Cannot add listener to an element that is not detectable.");
}
getState(element).listeners.push(listener);
}
/**
* Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
* @private
* @param {object} options Optional options object.
* @param {element} element The element to make detectable
* @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
*/
function makeDetectable(options, element, callback) {
if (!callback) {
callback = element;
element = options;
options = null;
}
options = options || {};
function debug() {
if (options.debug) {
var args = Array.prototype.slice.call(arguments);
args.unshift(idHandler.get(element), "Scroll: ");
if (reporter.log.apply) {
reporter.log.apply(null, args);
} else {
for (var i = 0; i < args.length; i++) {
reporter.log(args[i]);
}
}
}
}
function isDetached(element) {
function isInDocument(element) {
var isInShadowRoot = element.getRootNode && element.getRootNode().contains(element);
return element === element.ownerDocument.body || element.ownerDocument.body.contains(element) || isInShadowRoot;
}
if (!isInDocument(element)) {
return true;
}
// FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520
if (window.getComputedStyle(element) === null) {
return true;
}
return false;
}
function isUnrendered(element) {
// Check the absolute positioned container since the top level container is display: inline.
var container = getState(element).container.childNodes[0];
var style = window.getComputedStyle(container);
return !style.width || style.width.indexOf("px") === -1; //Can only compute pixel value when rendered.
}
function getStyle() {
// Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,
// so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).
var elementStyle = window.getComputedStyle(element);
var style = {};
style.position = elementStyle.position;
style.width = element.offsetWidth;
style.height = element.offsetHeight;
style.top = elementStyle.top;
style.right = elementStyle.right;
style.bottom = elementStyle.bottom;
style.left = elementStyle.left;
style.widthCSS = elementStyle.width;
style.heightCSS = elementStyle.height;
return style;
}
function storeStartSize() {
var style = getStyle();
getState(element).startSize = {
width: style.width,
height: style.height
};
debug("Element start size", getState(element).startSize);
}
function initListeners() {
getState(element).listeners = [];
}
function storeStyle() {
debug("storeStyle invoked.");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
var style = getStyle();
getState(element).style = style;
}
function storeCurrentSize(element, width, height) {
getState(element).lastWidth = width;
getState(element).lastHeight = height;
}
function getExpandChildElement(element) {
return getExpandElement(element).childNodes[0];
}
function getWidthOffset() {
return 2 * scrollbarSizes.width + 1;
}
function getHeightOffset() {
return 2 * scrollbarSizes.height + 1;
}
function getExpandWidth(width) {
return width + 10 + getWidthOffset();
}
function getExpandHeight(height) {
return height + 10 + getHeightOffset();
}
function getShrinkWidth(width) {
return width * 2 + getWidthOffset();
}
function getShrinkHeight(height) {
return height * 2 + getHeightOffset();
}
function positionScrollbars(element, width, height) {
var expand = getExpandElement(element);
var shrink = getShrinkElement(element);
var expandWidth = getExpandWidth(width);
var expandHeight = getExpandHeight(height);
var shrinkWidth = getShrinkWidth(width);
var shrinkHeight = getShrinkHeight(height);
expand.scrollLeft = expandWidth;
expand.scrollTop = expandHeight;
shrink.scrollLeft = shrinkWidth;
shrink.scrollTop = shrinkHeight;
}
function injectContainerElement() {
var container = getState(element).container;
if (!container) {
container = document.createElement("div");
container.className = detectionContainerClass;
container.style.cssText = buildCssTextString(["visibility: hidden", "display: inline", "width: 0px", "height: 0px", "z-index: -1", "overflow: hidden", "margin: 0", "padding: 0"]);
getState(element).container = container;
addAnimationClass(container);
element.appendChild(container);
var onAnimationStart = function () {
getState(element).onRendered && getState(element).onRendered();
};
addEvent(container, "animationstart", onAnimationStart);
// Store the event handler here so that they may be removed when uninstall is called.
// See uninstall function for an explanation why it is needed.
getState(element).onAnimationStart = onAnimationStart;
}
return container;
}
function injectScrollElements() {
function alterPositionStyles() {
var style = getState(element).style;
if(style.position === "static") {
element.style.setProperty("position", "relative",options.important ? "important" : "");
var removeRelativeStyles = function(reporter, element, style, property) {
function getNumericalValue(value) {
return value.replace(/[^-\d\.]/g, "");
}
var value = style[property];
if(value !== "auto" && getNumericalValue(value) !== "0") {
reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
element.style[property] = 0;
}
};
//Check so that there are no accidental styles that will make the element styled differently now that is is relative.
//If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
removeRelativeStyles(reporter, element, style, "top");
removeRelativeStyles(reporter, element, style, "right");
removeRelativeStyles(reporter, element, style, "bottom");
removeRelativeStyles(reporter, element, style, "left");
}
}
function getLeftTopBottomRightCssText(left, top, bottom, right) {
left = (!left ? "0" : (left + "px"));
top = (!top ? "0" : (top + "px"));
bottom = (!bottom ? "0" : (bottom + "px"));
right = (!right ? "0" : (right + "px"));
return ["left: " + left, "top: " + top, "right: " + right, "bottom: " + bottom];
}
debug("Injecting elements");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
alterPositionStyles();
var rootContainer = getState(element).container;
if (!rootContainer) {
rootContainer = injectContainerElement();
}
// Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),
// we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than
// the targeted element.
// When the bug is resolved, "containerContainer" may be removed.
// The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).
// This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.
var scrollbarWidth = scrollbarSizes.width;
var scrollbarHeight = scrollbarSizes.height;
var containerContainerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%", "left: 0px", "top: 0px"]);
var containerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));
var expandStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
var shrinkStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
var expandChildStyle = buildCssTextString(["position: absolute", "left: 0", "top: 0"]);
var shrinkChildStyle = buildCssTextString(["position: absolute", "width: 200%", "height: 200%"]);
var containerContainer = document.createElement("div");
var container = document.createElement("div");
var expand = document.createElement("div");
var expandChild = document.createElement("div");
var shrink = document.createElement("div");
var shrinkChild = document.createElement("div");
// Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56
// However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.
containerContainer.dir = "ltr";
containerContainer.style.cssText = containerContainerStyle;
containerContainer.className = detectionContainerClass;
container.className = detectionContainerClass;
container.style.cssText = containerStyle;
expand.style.cssText = expandStyle;
expandChild.style.cssText = expandChildStyle;
shrink.style.cssText = shrinkStyle;
shrinkChild.style.cssText = shrinkChildStyle;
expand.appendChild(expandChild);
shrink.appendChild(shrinkChild);
container.appendChild(expand);
container.appendChild(shrink);
containerContainer.appendChild(container);
rootContainer.appendChild(containerContainer);
function onExpandScroll() {
var state = getState(element);
if (state && state.onExpand) {
state.onExpand();
} else {
debug("Aborting expand scroll handler: element has been uninstalled");
}
}
function onShrinkScroll() {
var state = getState(element);
if (state && state.onShrink) {
state.onShrink();
} else {
debug("Aborting shrink scroll handler: element has been uninstalled");
}
}
addEvent(expand, "scroll", onExpandScroll);
addEvent(shrink, "scroll", onShrinkScroll);
// Store the event handlers here so that they may be removed when uninstall is called.
// See uninstall function for an explanation why it is needed.
getState(element).onExpandScroll = onExpandScroll;
getState(element).onShrinkScroll = onShrinkScroll;
}
function registerListenersAndPositionElements() {
function updateChildSizes(element, width, height) {
var expandChild = getExpandChildElement(element);
var expandWidth = getExpandWidth(width);
var expandHeight = getExpandHeight(height);
expandChild.style.setProperty("width", expandWidth + "px", options.important ? "important" : "");
expandChild.style.setProperty("height", expandHeight + "px", options.important ? "important" : "");
}
function updateDetectorElements(done) {
var width = element.offsetWidth;
var height = element.offsetHeight;
// Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.
var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;
debug("Storing current size", width, height);
// Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.
// Otherwise the if-check in handleScroll is useless.
storeCurrentSize(element, width, height);
// Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.
// Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.
batchProcessor.add(0, function performUpdateChildSizes() {
if (!sizeChanged) {
return;
}
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
if (!areElementsInjected()) {
debug("Aborting because element container has not been initialized");
return;
}
if (options.debug) {
var w = element.offsetWidth;
var h = element.offsetHeight;
if (w !== width || h !== height) {
reporter.warn(idHandler.get(element), "Scroll: Size changed before updating detector elements.");
}
}
updateChildSizes(element, width, height);
});
batchProcessor.add(1, function updateScrollbars() {
// This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then
// been restored to the original size, which will have changed the scrollbar positions.
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
if (!areElementsInjected()) {
debug("Aborting because element container has not been initialized");
return;
}
positionScrollbars(element, width, height);
});
if (sizeChanged && done) {
batchProcessor.add(2, function () {
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
if (!areElementsInjected()) {
debug("Aborting because element container has not been initialized");
return;
}
done();
});
}
}
function areElementsInjected() {
return !!getState(element).container;
}
function notifyListenersIfNeeded() {
function isFirstNotify() {
return getState(element).lastNotifiedWidth === undefined;
}
debug("notifyListenersIfNeeded invoked");
var state = getState(element);
// Don't notify if the current size is the start size, and this is the first notification.
if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {
return debug("Not notifying: Size is the same as the start size, and there has been no notification yet.");
}
// Don't notify if the size already has been notified.
if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {
return debug("Not notifying: Size already notified");
}
debug("Current size not notified, notifying...");
state.lastNotifiedWidth = state.lastWidth;
state.lastNotifiedHeight = state.lastHeight;
forEach$1(getState(element).listeners, function (listener) {
listener(element);
});
}
function handleRender() {
debug("startanimation triggered.");
if (isUnrendered(element)) {
debug("Ignoring since element is still unrendered...");
return;
}
debug("Element rendered.");
var expand = getExpandElement(element);
var shrink = getShrinkElement(element);
if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {
debug("Scrollbars out of sync. Updating detector elements...");
updateDetectorElements(notifyListenersIfNeeded);
}
}
function handleScroll() {
debug("Scroll detected.");
if (isUnrendered(element)) {
// Element is still unrendered. Skip this scroll event.
debug("Scroll event fired while unrendered. Ignoring...");
return;
}
updateDetectorElements(notifyListenersIfNeeded);
}
debug("registerListenersAndPositionElements invoked.");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
getState(element).onRendered = handleRender;
getState(element).onExpand = handleScroll;
getState(element).onShrink = handleScroll;
var style = getState(element).style;
updateChildSizes(element, style.width, style.height);
}
function finalizeDomMutation() {
debug("finalizeDomMutation invoked.");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
var style = getState(element).style;
storeCurrentSize(element, style.width, style.height);
positionScrollbars(element, style.width, style.height);
}
function ready() {
callback(element);
}
function install() {
debug("Installing...");
initListeners();
storeStartSize();
batchProcessor.add(0, storeStyle);
batchProcessor.add(1, injectScrollElements);
batchProcessor.add(2, registerListenersAndPositionElements);
batchProcessor.add(3, finalizeDomMutation);
batchProcessor.add(4, ready);
}
debug("Making detectable...");
if (isDetached(element)) {
debug("Element is detached");
injectContainerElement();
debug("Waiting until element is attached...");
getState(element).onRendered = function () {
debug("Element is now attached");
install();
};
} else {
install();
}
}
function uninstall(element) {
var state = getState(element);
if (!state) {
// Uninstall has been called on a non-erd element.
return;
}
// Uninstall may have been called in the following scenarios:
// (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).
// (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).
// (3) After the installation process (here, state.busy = false and all the stuff has been injected).
// So to be on the safe side, let's check for each thing before removing.
// We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.
state.onExpandScroll && removeEvent(getExpandElement(element), "scroll", state.onExpandScroll);
state.onShrinkScroll && removeEvent(getShrinkElement(element), "scroll", state.onShrinkScroll);
state.onAnimationStart && removeEvent(state.container, "animationstart", state.onAnimationStart);
state.container && element.removeChild(state.container);
}
return {
makeDetectable: makeDetectable,
addListener: addListener,
uninstall: uninstall,
initDocument: initDocument
};
};
var forEach = collectionUtils.forEach;
//Detection strategies.
function isCollection(obj) {
return Array.isArray(obj) || obj.length !== undefined;
}
function toArray(collection) {
if (!Array.isArray(collection)) {
var array = [];
forEach(collection, function (obj) {
array.push(obj);
});
return array;
} else {
return collection;
}
}
function isElement(obj) {
return obj && obj.nodeType === 1;
}
/**
* @typedef idHandler
* @type {object}
* @property {function} get Gets the resize detector id of the element.
* @property {function} set Generate and sets the resize detector id of the element.
*/
/**
* @typedef Options
* @type {object}
* @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.
Default is true. If true, the listener is guaranteed to be called when it has been added.
If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).
* @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.
If not provided, a default id handler will be used.
* @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.
If not provided, a default id handler will be used.
If set to false, then nothing will be reported.
* @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.
*/
/**
* Creates an element resize detector instance.
* @public
* @param {Options?} options Optional global options object that will decide how this instance will work.
*/
var elementResizeDetector = function(options) {
options = options || {};
//idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.
var idHandler$1;
if (options.idHandler) {
// To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler
// so that readonly flag always is true when it's used here. This may be removed next major version bump.
idHandler$1 = {
get: function (element) { return options.idHandler.get(element, true); },
set: options.idHandler.set
};
} else {
var idGenerator$1 = idGenerator();
var defaultIdHandler = idHandler({
idGenerator: idGenerator$1,
stateHandler: stateHandler
});
idHandler$1 = defaultIdHandler;
}
//reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.
var reporter$1 = options.reporter;
if(!reporter$1) {
//If options.reporter is false, then the reporter should be quiet.
var quiet = reporter$1 === false;
reporter$1 = reporter(quiet);
}
//batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.
var batchProcessor$1 = getOption(options, "batchProcessor", batchProcessor({ reporter: reporter$1 }));
//Options to be used as default for the listenTo function.
var globalOptions = {};
globalOptions.callOnAdd = !!getOption(options, "callOnAdd", true);
globalOptions.debug = !!getOption(options, "debug", false);
var eventListenerHandler = listenerHandler(idHandler$1);
var elementUtils$1 = elementUtils({
stateHandler: stateHandler
});
//The detection strategy to be used.
var detectionStrategy;
var desiredStrategy = getOption(options, "strategy", "object");
var importantCssRules = getOption(options, "important", false);
var strategyOptions = {
reporter: reporter$1,
batchProcessor: batchProcessor$1,
stateHandler: stateHandler,
idHandler: idHandler$1,
important: importantCssRules
};
if(desiredStrategy === "scroll") {
if (browserDetector.isLegacyOpera()) {
reporter$1.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy.");
desiredStrategy = "object";
} else if (browserDetector.isIE(9)) {
reporter$1.warn("Scroll strategy is not supported on IE9. Changing to object strategy.");
desiredStrategy = "object";
}
}
if(desiredStrategy === "scroll") {
detectionStrategy = scroll(strategyOptions);
} else if(desiredStrategy === "object") {
detectionStrategy = object(strategyOptions);
} else {
throw new Error("Invalid strategy name: " + desiredStrategy);
}
//Calls can be made to listenTo with elements that are still being installed.
//Also, same elements can occur in the elements list in the listenTo function.
//With this map, the ready callbacks can be synchronized between the calls
//so that the ready callback can always be called when an element is ready - even if
//it wasn't installed from the function itself.
var onReadyCallbacks = {};
/**
* Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.
* @public
* @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.
* @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.
* @param {function} listener The callback to be executed for each resize event for each element.
*/
function listenTo(options, elements, listener) {
function onResizeCallback(element) {
var listeners = eventListenerHandler.get(element);
forEach(listeners, function callListenerProxy(listener) {
listener(element);
});
}
function addListener(callOnAdd, element, listener) {
eventListenerHandler.add(element, listener);
if(callOnAdd) {
listener(element);
}
}
//Options object may be omitted.
if(!listener) {
listener = elements;
elements = options;
options = {};
}
if(!elements) {
throw new Error("At least one element required.");
}
if(!listener) {
throw new Error("Listener required.");
}
if (isElement(elements)) {
// A single element has been passed in.
elements = [elements];
} else if (isCollection(elements)) {
// Convert collection to array for plugins.
// TODO: May want to check so that all the elements in the collection are valid elements.
elements = toArray(elements);
} else {
return reporter$1.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
}
var elementsReady = 0;
var callOnAdd = getOption(options, "callOnAdd", globalOptions.callOnAdd);
var onReadyCallback = getOption(options, "onReady", function noop() {});
var debug = getOption(options, "debug", globalOptions.debug);
forEach(elements, function attachListenerToElement(element) {
if (!stateHandler.getState(element)) {
stateHandler.initState(element);
idHandler$1.set(element);
}
var id = idHandler$1.get(element);
debug && reporter$1.log("Attaching listener to element", id, element);
if(!elementUtils$1.isDetectable(element)) {
debug && reporter$1.log(id, "Not detectable.");
if(elementUtils$1.isBusy(element)) {
debug && reporter$1.log(id, "System busy making it detectable");
//The element is being prepared to be detectable. Do not make it detectable.
//Just add the listener, because the element will soon be detectable.
addListener(callOnAdd, element, listener);
onReadyCallbacks[id] = onReadyCallbacks[id] || [];
onReadyCallbacks[id].push(function onReady() {
elementsReady++;
if(elementsReady === elements.length) {
onReadyCallback();
}
});
return;
}
debug && reporter$1.log(id, "Making detectable...");
//The element is not prepared to be detectable, so do prepare it and add a listener to it.
elementUtils$1.markBusy(element, true);
return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {
debug && reporter$1.log(id, "onElementDetectable");
if (stateHandler.getState(element)) {
elementUtils$1.markAsDetectable(element);
elementUtils$1.markBusy(element, false);
detectionStrategy.addListener(element, onResizeCallback);
addListener(callOnAdd, element, listener);
// Since the element size might have changed since the call to "listenTo", we need to check for this change,
// so that a resize event may be emitted.
// Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.
// Also, check the state existance before since the element may have been uninstalled in the installation process.
var state = stateHandler.getState(element);
if (state && state.startSize) {
var width = element.offsetWidth;
var height = element.offsetHeight;
if (state.startSize.width !== width || state.startSize.height !== height) {
onResizeCallback(element);
}
}
if(onReadyCallbacks[id]) {
forEach(onReadyCallbacks[id], function(callback) {
callback();
});
}
} else {
// The element has been unisntalled before being detectable.
debug && reporter$1.log(id, "Element uninstalled before being detectable.");
}
delete onReadyCallbacks[id];
elementsReady++;
if(elementsReady === elements.length) {
onReadyCallback();
}
});
}
debug && reporter$1.log(id, "Already detecable, adding listener.");
//The element has been prepared to be detectable and is ready to be listened to.
addListener(callOnAdd, element, listener);
elementsReady++;
});
if(elementsReady === elements.length) {
onReadyCallback();
}
}
function uninstall(elements) {
if(!elements) {
return reporter$1.error("At least one element is required.");
}
if (isElement(elements)) {
// A single element has been passed in.
elements = [elements];
} else if (isCollection(elements)) {
// Convert collection to array for plugins.
// TODO: May want to check so that all the elements in the collection are valid elements.
elements = toArray(elements);
} else {
return reporter$1.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
}
forEach(elements, function (element) {
eventListenerHandler.removeAllListeners(element);
detectionStrategy.uninstall(element);
stateHandler.cleanState(element);
});
}
function initDocument(targetDocument) {
detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);
}
return {
listenTo: listenTo,
removeListener: eventListenerHandler.removeListener,
removeAllListeners: eventListenerHandler.removeAllListeners,
uninstall: uninstall,
initDocument: initDocument
};
};
function getOption(options, name, defaultValue) {
var value = options[name];
if((value === undefined || value === null) && defaultValue !== undefined) {
return defaultValue;
}
return value;
}
var erd = elementResizeDetector({ strategy: "scroll" });
function watchResize(element, handler) {
erd.listenTo(element, handler);
var currentHandler = handler;
return {
update: function (newHandler) {
erd.removeListener(element, currentHandler);
erd.listenTo(element, newHandler);
currentHandler = newHandler;
},
destroy: function () {
erd.removeListener(element, currentHandler);
},
};
}
const subscriber_queue = [];
/**
* Create a `Writable` store that allows both updating and reading by subscription.
* @param {*=}value initial value
* @param {StartStopNotifier=}start start and stop notifications for subscriptions
*/
function writable(value, start = noop) {
let stop;
const subscribers = new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) { // store is ready
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(value));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set) || noop;
}
run(value);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function getHotkeysV2(app) {
// app.hotkeyManager.bake()
let hotKeyDict = {};
const hkm = app.hotkeyManager;
Object.entries(app.commands.commands).forEach(([id, command]) => {
let isBuiltInCommand = command.name.split(':').length === 1;
let pluginName = isBuiltInCommand
? command.id.charAt(0).toUpperCase() + command.id.split(':')[0].slice(1)
: command.name.split(':', 2)[0];
let cmdName = isBuiltInCommand
? command.name
: // split by ":" remove the first element (plugin name) and join with ":"
command.name.split(':').slice(1).join(':');
let hotkeys = (hkm.getHotkeys(command.id) ||
hkm.getDefaultHotkeys(command.id) ||
[]);
// function to prepare hotkey object
function prepareHotkey(hotkey) {
let hotkeyObj = {};
if (hotkey.modifiers) {
hotkeyObj.modifiers = hotkey.modifiers;
hotkeyObj.backedModifiers = getConvertedModifiers(hotkey.modifiers).join(',');
}
hotkeyObj.key = hotkey.key;
hotkeyObj.isCustom = isCustomizedHotkey(id, hotkey, app);
return hotkeyObj;
}
// assign hotkey to hotkeyDict
hotkeys.forEach((hotkey) => {
let hotkeyObj = prepareHotkey(hotkey);
if (!hotKeyDict[id]) {
hotKeyDict[id] = {
id,
pluginName,
cmdName,
hotkeys: [hotkeyObj],
};
}
else {
hotKeyDict[id].hotkeys.push(hotkeyObj);
}
});
});
return hotKeyDict;
}
// check if hotkey is Customized
// app.hotkeyManager.customKeys store all custom hotkeys
// if reassigned return true
// https://forum.obsidian.md/t/dataviewjs-snippet-showcase/17847/37
function isCustomizedHotkey(id, hotkey, app) {
let isCustom = false;
let customKeys = app.hotkeyManager.customKeys[id];
let defaultKeys = app.hotkeyManager.getDefaultHotkeys(id);
if (customKeys) {
for (let customHotkey of customKeys) {
// compare arrays of modifiers, all modifiers must be the same
if (customHotkey.modifiers.length === hotkey.modifiers.length &&
customHotkey.modifiers.every((modifier, index) => {
return modifier === hotkey.modifiers[index];
}) &&
customHotkey.key === hotkey.key) {
isCustom = true;
}
else {
isCustom = false;
}
}
}
// check if hotkey is default
if (defaultKeys !== undefined) {
for (let defaultHotkey of defaultKeys) {
if (defaultHotkey.modifiers.length === hotkey.modifiers.length &&
defaultHotkey.modifiers.every((modifier, index) => {
return modifier === hotkey.modifiers[index];
}) &&
defaultHotkey.key === hotkey.key) {
isCustom = false;
}
else {
isCustom = true;
}
}
}
else if (defaultKeys === undefined) {
isCustom = true;
}
return isCustom;
}
// return true if hotkey duplicated with other hotkey
function isHotkeyDuplicate(commandID, hotkey) {
let isDuplicate = false;
let commands = getHotkeysV2(app);
for (let command of Object.entries(commands)) {
let currentCommandID = command[0];
let currentHotkeys = command[1].hotkeys;
if (currentCommandID !== commandID) {
for (let currentHotkey of currentHotkeys) {
if (currentHotkey.key === hotkey.key &&
currentHotkey.modifiers.length === hotkey.modifiers.length &&
currentHotkey.modifiers.every((modifier, index) => {
return modifier === hotkey.modifiers[index];
})) {
isDuplicate = true;
}
}
}
}
return isDuplicate;
}
function getConvertedModifiers(modifiers) {
let convertedModifiers = modifiers.map((modifier) => {
if (modifier === 'Mod') {
// check macos
if (obsidian.Platform.isMacOS === true) {
return 'Cmd';
}
else {
return 'Ctrl';
}
}
if (modifier === 'Meta') {
// check macos
if (obsidian.Platform.isMacOS === true) {
return 'Cmd';
}
else {
return 'Win';
}
}
return modifier;
});
return convertedModifiers;
}
// sort modifiers
function sortModifiers(modifiers) {
let sortedModifiers = modifiers.sort((a, b) => {
if (a === 'Mod') {
return -1;
}
if (b === 'Mod') {
return 1;
}
if (a === 'Meta') {
return -1;
}
if (b === 'Meta') {
return 1;
}
if (a === 'Ctrl') {
return -1;
}
if (b === 'Ctrl') {
return 1;
}
if (a === 'Alt') {
return -1;
}
if (b === 'Alt') {
return 1;
}
if (a === 'Shift') {
return -1;
}
if (b === 'Shift') {
return 1;
}
});
return sortedModifiers;
}
const activeKey = writable('');
const activeModifiers = writable([]);
var defaultAttributes = {
xmlns: 'http://www.w3.org/2000/svg',
width: 24,
height: 24,
viewBox: '0 0 24 24',
fill: 'none',
stroke: 'currentColor',
'stroke-width': 2,
'stroke-linecap': 'round',
'stroke-linejoin': 'round'
};
/* node_modules\lucide-svelte\dist\esm\Icon.svelte generated by Svelte v3.49.0 */
function create_fragment$b(ctx) {
let svg;
let svg_class_value;
let current;
const default_slot_template = /*#slots*/ ctx[7].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[6], null);
let svg_levels = [
defaultAttributes,
/*$$restProps*/ ctx[4],
{ width: /*size*/ ctx[2] },
{ height: /*size*/ ctx[2] },
{ stroke: /*color*/ ctx[1] },
{ "stroke-width": /*strokeWidth*/ ctx[3] },
{
class: svg_class_value = `lucide-icon lucide lucide-${/*name*/ ctx[0]} ${/*$$props*/ ctx[5].class ?? ''}`
}
];
let svg_data = {};
for (let i = 0; i < svg_levels.length; i += 1) {
svg_data = assign(svg_data, svg_levels[i]);
}
return {
c() {
svg = svg_element("svg");
if (default_slot) default_slot.c();
set_svg_attributes(svg, svg_data);
},
m(target, anchor) {
insert(target, svg, anchor);
if (default_slot) {
default_slot.m(svg, null);
}
current = true;
},
p(ctx, [dirty]) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 64)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[6],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[6])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[6], dirty, null),
null
);
}
}
set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [
defaultAttributes,
dirty & /*$$restProps*/ 16 && /*$$restProps*/ ctx[4],
(!current || dirty & /*size*/ 4) && { width: /*size*/ ctx[2] },
(!current || dirty & /*size*/ 4) && { height: /*size*/ ctx[2] },
(!current || dirty & /*color*/ 2) && { stroke: /*color*/ ctx[1] },
(!current || dirty & /*strokeWidth*/ 8) && { "stroke-width": /*strokeWidth*/ ctx[3] },
(!current || dirty & /*name, $$props*/ 33 && svg_class_value !== (svg_class_value = `lucide-icon lucide lucide-${/*name*/ ctx[0]} ${/*$$props*/ ctx[5].class ?? ''}`)) && { class: svg_class_value }
]));
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(svg);
if (default_slot) default_slot.d(detaching);
}
};
}
function instance$b($$self, $$props, $$invalidate) {
const omit_props_names = ["name","color","size","strokeWidth"];
let $$restProps = compute_rest_props($$props, omit_props_names);
let { $$slots: slots = {}, $$scope } = $$props;
let { name } = $$props;
let { color = 'currentColor' } = $$props;
let { size = 24 } = $$props;
let { strokeWidth = 2 } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(5, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
$$invalidate(4, $$restProps = compute_rest_props($$props, omit_props_names));
if ('name' in $$new_props) $$invalidate(0, name = $$new_props.name);
if ('color' in $$new_props) $$invalidate(1, color = $$new_props.color);
if ('size' in $$new_props) $$invalidate(2, size = $$new_props.size);
if ('strokeWidth' in $$new_props) $$invalidate(3, strokeWidth = $$new_props.strokeWidth);
if ('$$scope' in $$new_props) $$invalidate(6, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [name, color, size, strokeWidth, $$restProps, $$props, $$scope, slots];
}
class Icon extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$b, create_fragment$b, safe_not_equal, {
name: 0,
color: 1,
size: 2,
strokeWidth: 3
});
}
}
var Icon$1 = Icon;
/* node_modules\lucide-svelte\dist\esm\icons\circle-dot.svelte generated by Svelte v3.49.0 */
function create_default_slot$5(ctx) {
let circle0;
let t0;
let circle1;
let t1;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
circle0 = svg_element("circle");
t0 = space();
circle1 = svg_element("circle");
t1 = space();
if (default_slot) default_slot.c();
attr(circle0, "cx", "12");
attr(circle0, "cy", "12");
attr(circle0, "r", "10");
attr(circle1, "cx", "12");
attr(circle1, "cy", "12");
attr(circle1, "r", "1");
},
m(target, anchor) {
insert(target, circle0, anchor);
insert(target, t0, anchor);
insert(target, circle1, anchor);
insert(target, t1, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(circle0);
if (detaching) detach(t0);
if (detaching) detach(circle1);
if (detaching) detach(t1);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$a(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "circle-dot" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$5] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$a($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Circle_dot extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$a, create_fragment$a, safe_not_equal, {});
}
}
var CircleDotIcon = Circle_dot;
/* node_modules\lucide-svelte\dist\esm\icons\coffee.svelte generated by Svelte v3.49.0 */
function create_default_slot$4(ctx) {
let path0;
let t0;
let path1;
let t1;
let line0;
let t2;
let line1;
let t3;
let line2;
let t4;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
path0 = svg_element("path");
t0 = space();
path1 = svg_element("path");
t1 = space();
line0 = svg_element("line");
t2 = space();
line1 = svg_element("line");
t3 = space();
line2 = svg_element("line");
t4 = space();
if (default_slot) default_slot.c();
attr(path0, "d", "M17 8h1a4 4 0 1 1 0 8h-1");
attr(path1, "d", "M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z");
attr(line0, "x1", "6");
attr(line0, "y1", "2");
attr(line0, "x2", "6");
attr(line0, "y2", "4");
attr(line1, "x1", "10");
attr(line1, "y1", "2");
attr(line1, "x2", "10");
attr(line1, "y2", "4");
attr(line2, "x1", "14");
attr(line2, "y1", "2");
attr(line2, "x2", "14");
attr(line2, "y2", "4");
},
m(target, anchor) {
insert(target, path0, anchor);
insert(target, t0, anchor);
insert(target, path1, anchor);
insert(target, t1, anchor);
insert(target, line0, anchor);
insert(target, t2, anchor);
insert(target, line1, anchor);
insert(target, t3, anchor);
insert(target, line2, anchor);
insert(target, t4, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(path0);
if (detaching) detach(t0);
if (detaching) detach(path1);
if (detaching) detach(t1);
if (detaching) detach(line0);
if (detaching) detach(t2);
if (detaching) detach(line1);
if (detaching) detach(t3);
if (detaching) detach(line2);
if (detaching) detach(t4);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$9(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "coffee" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$4] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$9($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Coffee extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$9, create_fragment$9, safe_not_equal, {});
}
}
var CofeeIcon = Coffee;
/* node_modules\lucide-svelte\dist\esm\icons\filter.svelte generated by Svelte v3.49.0 */
function create_default_slot$3(ctx) {
let polygon;
let t;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
polygon = svg_element("polygon");
t = space();
if (default_slot) default_slot.c();
attr(polygon, "points", "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3");
},
m(target, anchor) {
insert(target, polygon, anchor);
insert(target, t, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(polygon);
if (detaching) detach(t);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$8(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "filter" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$3] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$8($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Filter extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$8, create_fragment$8, safe_not_equal, {});
}
}
var FilterIcon = Filter;
/* node_modules\lucide-svelte\dist\esm\icons\refresh-cw.svelte generated by Svelte v3.49.0 */
function create_default_slot$2(ctx) {
let path0;
let t0;
let path1;
let t1;
let path2;
let t2;
let path3;
let t3;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
path0 = svg_element("path");
t0 = space();
path1 = svg_element("path");
t1 = space();
path2 = svg_element("path");
t2 = space();
path3 = svg_element("path");
t3 = space();
if (default_slot) default_slot.c();
attr(path0, "d", "M21 2v6h-6");
attr(path1, "d", "M3 12a9 9 0 0 1 15-6.7L21 8");
attr(path2, "d", "M3 22v-6h6");
attr(path3, "d", "M21 12a9 9 0 0 1-15 6.7L3 16");
},
m(target, anchor) {
insert(target, path0, anchor);
insert(target, t0, anchor);
insert(target, path1, anchor);
insert(target, t1, anchor);
insert(target, path2, anchor);
insert(target, t2, anchor);
insert(target, path3, anchor);
insert(target, t3, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(path0);
if (detaching) detach(t0);
if (detaching) detach(path1);
if (detaching) detach(t1);
if (detaching) detach(path2);
if (detaching) detach(t2);
if (detaching) detach(path3);
if (detaching) detach(t3);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$7(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "refresh-cw" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$2] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$7($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Refresh_cw extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$7, create_fragment$7, safe_not_equal, {});
}
}
var RefreshIcon = Refresh_cw;
/* node_modules\lucide-svelte\dist\esm\icons\star.svelte generated by Svelte v3.49.0 */
function create_default_slot$1(ctx) {
let polygon;
let t;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
polygon = svg_element("polygon");
t = space();
if (default_slot) default_slot.c();
attr(polygon, "points", "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2");
},
m(target, anchor) {
insert(target, polygon, anchor);
insert(target, t, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(polygon);
if (detaching) detach(t);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$6(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "star" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$1] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$6($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Star extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$6, create_fragment$6, safe_not_equal, {});
}
}
var StarIcon = Star;
/* node_modules\lucide-svelte\dist\esm\icons\x.svelte generated by Svelte v3.49.0 */
function create_default_slot(ctx) {
let line0;
let t0;
let line1;
let t1;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
line0 = svg_element("line");
t0 = space();
line1 = svg_element("line");
t1 = space();
if (default_slot) default_slot.c();
attr(line0, "x1", "18");
attr(line0, "y1", "6");
attr(line0, "x2", "6");
attr(line0, "y2", "18");
attr(line1, "x1", "6");
attr(line1, "y1", "6");
attr(line1, "x2", "18");
attr(line1, "y2", "18");
},
m(target, anchor) {
insert(target, line0, anchor);
insert(target, t0, anchor);
insert(target, line1, anchor);
insert(target, t1, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(line0);
if (detaching) detach(t0);
if (detaching) detach(line1);
if (detaching) detach(t1);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$5(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "x" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$5($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class X extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$5, create_fragment$5, safe_not_equal, {});
}
}
var CrossIcon = X;
/* src\Components\KeyboardKey.svelte generated by Svelte v3.49.0 */
function create_else_block$1(ctx) {
let div;
let raw_value = (/*unicode*/ ctx[6] && /*unicode*/ ctx[6] !== ''
? /*unicode*/ ctx[6]
: /*keyLabel*/ ctx[0]) + "";
let div_data_weight_value;
let mounted;
let dispose;
return {
c() {
div = element("div");
attr(div, "class", "kb-layout-key");
attr(div, "data-weight", div_data_weight_value = /*keyWeight*/ ctx[2]
? spreadWeights(/*keyWeight*/ ctx[2])
: 0);
attr(div, "data-key-id", /*keyCode*/ ctx[1]);
toggle_class(div, "is-active", /*state*/ ctx[7] === 'active');
toggle_class(div, "small-text", /*smallText*/ ctx[3]);
set_style(
div,
"grid-row",
/*height*/ ctx[5] !== 1
? `span calc(${/*height*/ ctx[5]}*1)`
: 'span 1',
false
);
set_style(
div,
"grid-column",
/*width*/ ctx[4] !== 1
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
},
m(target, anchor) {
insert(target, div, anchor);
div.innerHTML = raw_value;
if (!mounted) {
dispose = listen(div, "click", /*handleClick*/ ctx[8]);
mounted = true;
}
},
p(ctx, dirty) {
if (dirty & /*unicode, keyLabel*/ 65 && raw_value !== (raw_value = (/*unicode*/ ctx[6] && /*unicode*/ ctx[6] !== ''
? /*unicode*/ ctx[6]
: /*keyLabel*/ ctx[0]) + "")) div.innerHTML = raw_value;
if (dirty & /*keyWeight*/ 4 && div_data_weight_value !== (div_data_weight_value = /*keyWeight*/ ctx[2]
? spreadWeights(/*keyWeight*/ ctx[2])
: 0)) {
attr(div, "data-weight", div_data_weight_value);
}
if (dirty & /*keyCode*/ 2) {
attr(div, "data-key-id", /*keyCode*/ ctx[1]);
}
if (dirty & /*state*/ 128) {
toggle_class(div, "is-active", /*state*/ ctx[7] === 'active');
}
if (dirty & /*smallText*/ 8) {
toggle_class(div, "small-text", /*smallText*/ ctx[3]);
}
if (dirty & /*height*/ 32) {
set_style(
div,
"grid-row",
/*height*/ ctx[5] !== 1
? `span calc(${/*height*/ ctx[5]}*1)`
: 'span 1',
false
);
}
if (dirty & /*width*/ 16) {
set_style(
div,
"grid-column",
/*width*/ ctx[4] !== 1
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
}
},
d(detaching) {
if (detaching) detach(div);
mounted = false;
dispose();
}
};
}
// (33:0) {#if keyLabel === 'empty'}
function create_if_block$2(ctx) {
let div;
return {
c() {
div = element("div");
attr(div, "class", "kb-layout-key empty");
set_style(
div,
"grid-column",
/*width*/ ctx[4]
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
},
m(target, anchor) {
insert(target, div, anchor);
},
p(ctx, dirty) {
if (dirty & /*width*/ 16) {
set_style(
div,
"grid-column",
/*width*/ ctx[4]
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
}
},
d(detaching) {
if (detaching) detach(div);
}
};
}
function create_fragment$4(ctx) {
let if_block_anchor;
function select_block_type(ctx, dirty) {
if (/*keyLabel*/ ctx[0] === 'empty') return create_if_block$2;
return create_else_block$1;
}
let current_block_type = select_block_type(ctx);
let if_block = current_block_type(ctx);
return {
c() {
if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx, [dirty]) {
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
if_block.p(ctx, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx);
if (if_block) {
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
}
},
i: noop,
o: noop,
d(detaching) {
if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
function spreadWeights(weight) {
if (weight >= 5) {
return 5;
} else if (weight < 5 && weight > 0) {
return weight;
} else {
return 0;
}
}
function instance$4($$self, $$props, $$invalidate) {
let { keyLabel = '' } = $$props;
let { keyOutput = '' } = $$props;
let { keyCode = -1 } = $$props;
let { keyWeight = 0 } = $$props;
let { smallText = false } = $$props;
let { width = 1 } = $$props;
let { height = 1 } = $$props;
let { unicode = '' } = $$props;
let { state } = $$props;
const dispatch = createEventDispatcher();
const handleClick = () => {
if (state !== 'disabled') {
dispatch('kb-key-click', [keyCode, keyOutput]);
}
};
$$self.$$set = $$props => {
if ('keyLabel' in $$props) $$invalidate(0, keyLabel = $$props.keyLabel);
if ('keyOutput' in $$props) $$invalidate(9, keyOutput = $$props.keyOutput);
if ('keyCode' in $$props) $$invalidate(1, keyCode = $$props.keyCode);
if ('keyWeight' in $$props) $$invalidate(2, keyWeight = $$props.keyWeight);
if ('smallText' in $$props) $$invalidate(3, smallText = $$props.smallText);
if ('width' in $$props) $$invalidate(4, width = $$props.width);
if ('height' in $$props) $$invalidate(5, height = $$props.height);
if ('unicode' in $$props) $$invalidate(6, unicode = $$props.unicode);
if ('state' in $$props) $$invalidate(7, state = $$props.state);
};
return [
keyLabel,
keyCode,
keyWeight,
smallText,
width,
height,
unicode,
state,
handleClick,
keyOutput
];
}
class KeyboardKey extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$4, create_fragment$4, safe_not_equal, {
keyLabel: 0,
keyOutput: 9,
keyCode: 1,
keyWeight: 2,
smallText: 3,
width: 4,
height: 5,
unicode: 6,
state: 7
});
}
}
/* src\Components\KeyboardLayout.svelte generated by Svelte v3.49.0 */
function add_css(target) {
append_styles(target, "svelte-oqtk7m", ".keyboard-layout.svelte-oqtk7m{grid-template-columns:var(--kb-grid-columns)}.donation-badge.svelte-oqtk7m{position:absolute;top:24px;right:24px;border:1px dashed var(--text-accent);color:var(--text-accent);font-size:var(--font-scale-0);line-height:initial;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:20px;padding:2px 8px;cursor:pointer}.donation-badge.svelte-oqtk7m:hover{border:1px solid var(--text-accent);background-color:var(--text-accent);color:var(--text-on-accent)}");
}
function get_each_context$2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[12] = list[i];
return child_ctx;
}
function get_each_context_1$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[15] = list[i];
return child_ctx;
}
function get_each_context_2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[18] = list[i];
child_ctx[19] = list;
child_ctx[20] = i;
return child_ctx;
}
// (196:8) {#each Row as Key}
function create_each_block_2(ctx) {
let keyboardkey;
let updating_keyWeight;
let updating_state;
let current;
function keyboardkey_keyWeight_binding(value) {
/*keyboardkey_keyWeight_binding*/ ctx[6](value, /*Key*/ ctx[18]);
}
function keyboardkey_state_binding(value) {
/*keyboardkey_state_binding*/ ctx[7](value, /*Key*/ ctx[18]);
}
let keyboardkey_props = {
keyLabel: /*Key*/ ctx[18].label,
keyOutput: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].output,
keyCode: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].keyCode,
smallText: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].smallText,
unicode: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].unicode,
width: /*Key*/ ctx[18].width,
height: /*Key*/ ctx[18].height
};
if (/*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight !== void 0) {
keyboardkey_props.keyWeight = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight;
}
if (/*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state !== void 0) {
keyboardkey_props.state = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state;
}
keyboardkey = new KeyboardKey({ props: keyboardkey_props });
binding_callbacks.push(() => bind(keyboardkey, 'keyWeight', keyboardkey_keyWeight_binding));
binding_callbacks.push(() => bind(keyboardkey, 'state', keyboardkey_state_binding));
keyboardkey.$on("kb-key-click", /*handleKeyClick*/ ctx[2]);
return {
c() {
create_component(keyboardkey.$$.fragment);
},
m(target, anchor) {
mount_component(keyboardkey, target, anchor);
current = true;
},
p(new_ctx, dirty) {
ctx = new_ctx;
const keyboardkey_changes = {};
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.keyLabel = /*Key*/ ctx[18].label;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.keyOutput = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].output;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.keyCode = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].keyCode;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.smallText = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].smallText;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.unicode = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].unicode;
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.width = /*Key*/ ctx[18].width;
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.height = /*Key*/ ctx[18].height;
if (!updating_keyWeight && dirty & /*KeyboardStateDict, KeyboardObject*/ 3) {
updating_keyWeight = true;
keyboardkey_changes.keyWeight = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight;
add_flush_callback(() => updating_keyWeight = false);
}
if (!updating_state && dirty & /*KeyboardStateDict, KeyboardObject*/ 3) {
updating_state = true;
keyboardkey_changes.state = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state;
add_flush_callback(() => updating_state = false);
}
keyboardkey.$set(keyboardkey_changes);
},
i(local) {
if (current) return;
transition_in(keyboardkey.$$.fragment, local);
current = true;
},
o(local) {
transition_out(keyboardkey.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(keyboardkey, detaching);
}
};
}
// (195:6) {#each Section.rows as Row}
function create_each_block_1$1(ctx) {
let each_1_anchor;
let current;
let each_value_2 = /*Row*/ ctx[15];
let each_blocks = [];
for (let i = 0; i < each_value_2.length; i += 1) {
each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
insert(target, each_1_anchor, anchor);
current = true;
},
p(ctx, dirty) {
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
each_value_2 = /*Row*/ ctx[15];
let i;
for (i = 0; i < each_value_2.length; i += 1) {
const child_ctx = get_each_context_2(ctx, each_value_2, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block_2(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
}
}
group_outros();
for (i = each_value_2.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value_2.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
destroy_each(each_blocks, detaching);
if (detaching) detach(each_1_anchor);
}
};
}
// (193:2) {#each KeyboardObject as Section}
function create_each_block$2(ctx) {
let div;
let div_class_value;
let current;
let each_value_1 = /*Section*/ ctx[12].rows;
let each_blocks = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
div = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", div_class_value = "" + (null_to_empty(/*Section*/ ctx[12].name) + " svelte-oqtk7m"));
},
m(target, anchor) {
insert(target, div, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div, null);
}
current = true;
},
p(ctx, dirty) {
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
each_value_1 = /*Section*/ ctx[12].rows;
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1$1(ctx, each_value_1, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block_1$1(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div, null);
}
}
group_outros();
for (i = each_value_1.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
if (!current || dirty & /*KeyboardObject*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(/*Section*/ ctx[12].name) + " svelte-oqtk7m"))) {
attr(div, "class", div_class_value);
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value_1.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) detach(div);
destroy_each(each_blocks, detaching);
}
};
}
function create_fragment$3(ctx) {
let div2;
let t0;
let div1;
let div0;
let cofeeicon;
let t1;
let t2;
let current;
let mounted;
let dispose;
let each_value = /*KeyboardObject*/ ctx[1];
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
cofeeicon = new CofeeIcon({ props: { size: 16 } });
return {
c() {
div2 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t0 = space();
div1 = element("div");
div0 = element("div");
create_component(cofeeicon.$$.fragment);
t1 = text("\r\n Donate");
t2 = space();
set_style(div0, "padding-right", "6px");
attr(div1, "class", "donation-badge svelte-oqtk7m");
attr(div2, "id", "keyboard-layout");
set_style(div2, "grid-template-columns", kbGridColumns);
},
m(target, anchor) {
insert(target, div2, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div2, null);
}
append(div2, t0);
append(div2, div1);
append(div1, div0);
mount_component(cofeeicon, div0, null);
append(div1, t1);
insert(target, t2, anchor);
current = true;
if (!mounted) {
dispose = listen(div1, "click", /*click_handler*/ ctx[8]);
mounted = true;
}
},
p(ctx, [dirty]) {
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
each_value = /*KeyboardObject*/ ctx[1];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$2(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block$2(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div2, t0);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
transition_in(cofeeicon.$$.fragment, local);
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
transition_out(cofeeicon.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div2);
destroy_each(each_blocks, detaching);
destroy_component(cofeeicon);
if (detaching) detach(t2);
mounted = false;
dispose();
}
};
}
let kbGridColumns = '3.75fr 0.75fr 1fr';
function instance$3($$self, $$props, $$invalidate) {
let $activeModifiers;
let $activeKey;
component_subscribe($$self, activeModifiers, $$value => $$invalidate(4, $activeModifiers = $$value));
component_subscribe($$self, activeKey, $$value => $$invalidate(5, $activeKey = $$value));
let { visibleCommands } = $$props;
let { KeyboardObject } = $$props;
let { KeyboardStateDict = {} } = $$props;
function getJSKeyEntry(keyLabel, mode = 'name') {
for (let JSEntry of Object.entries(JavaSciptKeyCodes)) {
if (mode === 'name' && keyLabel.toLocaleLowerCase() === JSEntry[1].Key.toLocaleLowerCase()) {
return JSEntry;
} else if (mode === 'code' && keyLabel.toLocaleLowerCase() === JSEntry[1].Code.toLocaleLowerCase() && keyLabel.toLocaleLowerCase().replace('numpad', '') === JSEntry[1].Key.toLocaleLowerCase()) {
return JSEntry;
} else if (keyLabel === 'empty') {
return ['empty', { Key: 'empty', Code: 'empty' }];
}
}
}
function unpackLayout(KeyboardLayout, activeSearchKey, activeSearchModifiers) {
let KeyboardDict = {};
for (let section of KeyboardLayout) {
for (let row of section.rows) {
for (let key of row) {
let JSkeyEntry = key.strictCode
? getJSKeyEntry(key.label, 'code')
: getJSKeyEntry(key.label);
let keyOutput = key.label;
let outputKeyObj;
if (key.label === 'empty') {
outputKeyObj = {
output: key.label,
keyCode: -2,
state: 'empty'
};
} else {
keyOutput = key.strictCode ? JSkeyEntry[1].Code : JSkeyEntry[1].Key;
// fix modifiers names according to OS - hardcoded for now
if (keyOutput === 'Control') {
keyOutput = 'Ctrl';
outputKeyObj = {
output: 'Ctrl',
smallText: key.smallText ? true : false,
keyCode: JSkeyEntry[0],
unicode: 'Ctrl'
};
} else if (keyOutput === 'Meta') {
if (obsidian.Platform.isMacOS === true) {
outputKeyObj = {
output: '⌥',
keyCode: 18,
smallText: key.smallText ? true : false,
unicode: '⌥'
};
} else {
outputKeyObj = {
output: 'Win',
state: 'disabled',
smallText: key.smallText ? true : false,
keyCode: JSkeyEntry[0],
unicode: '⊞'
};
}
} else if (keyOutput === 'Alt') {
if (obsidian.Platform.isMacOS === true) {
outputKeyObj = {
output: '⌘',
smallText: key.smallText ? true : false,
keyCode: 91,
unicode: '⌘'
};
} else {
keyOutput = 'Alt';
outputKeyObj = {
output: 'Alt',
smallText: key.smallText ? true : false,
keyCode: JSkeyEntry[0]
};
}
} else {
outputKeyObj = {
output: keyOutput,
keyCode: JSkeyEntry[0],
smallText: key.smallText ? true : false,
unicode: key.tryUnicode ? JSkeyEntry[1].Unicode : ''
};
}
}
// check if key is active
if (activeSearchKey !== null) {
if (outputKeyObj.output.toLocaleLowerCase() === activeSearchKey.toLocaleLowerCase()) {
outputKeyObj.state = 'active';
}
}
// check if modifiers are active
if (activeSearchModifiers.length > 0) {
if (activeSearchModifiers.includes(outputKeyObj.output)) {
outputKeyObj.state = 'active';
}
}
KeyboardDict[key.label] = outputKeyObj;
}
}
}
return KeyboardDict;
}
function calculateWeights(visibleCommands, KeyboardDict) {
for (let key of Object.entries(KeyboardDict)) {
$$invalidate(0, KeyboardStateDict[key[0]].weight = 0, KeyboardStateDict);
// calculate how many times a key or modifier is used in the hotkeys list
let keyWeight = 0;
for (let command of visibleCommands) {
for (let hotkey of command.hotkeys) {
if (hotkey.key.toLocaleLowerCase() === key[1].output.toLocaleLowerCase()) {
keyWeight++;
}
for (let modifier of hotkey.modifiers) {
if (getConvertedModifiers([modifier])[0].toLocaleLowerCase() === key[1].output.toLocaleLowerCase()) {
keyWeight++;
}
}
}
}
$$invalidate(0, KeyboardStateDict[key[0]].weight = keyWeight, KeyboardStateDict);
}
}
function handleKeyClick(e) {
let keyCode = parseInt(e.detail[0]);
let keyOutput = e.detail[1];
JavaSciptKeyCodes[keyCode].Key;
JavaSciptKeyCodes[keyCode].Code;
// check if key is modifier or key
if (keyCode === 16 || keyCode === 17 || keyCode === 18 || keyCode === 91) {
// try to put modifier in the active modifiers list
if ($activeModifiers.includes(keyOutput)) {
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(modifier => modifier !== keyOutput), $activeModifiers);
} else {
// if not in the list, add it
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers, keyOutput], $activeModifiers);
}
} else {
// try to set key in the active key
if ($activeKey === keyOutput) {
set_store_value(activeKey, $activeKey = '', $activeKey);
} else {
set_store_value(activeKey, $activeKey = keyOutput, $activeKey);
}
}
}
function keyboardkey_keyWeight_binding(value, Key) {
if ($$self.$$.not_equal(KeyboardStateDict[Key.label].weight, value)) {
KeyboardStateDict[Key.label].weight = value;
((($$invalidate(0, KeyboardStateDict), $$invalidate(1, KeyboardObject)), $$invalidate(5, $activeKey)), $$invalidate(4, $activeModifiers));
}
}
function keyboardkey_state_binding(value, Key) {
if ($$self.$$.not_equal(KeyboardStateDict[Key.label].state, value)) {
KeyboardStateDict[Key.label].state = value;
((($$invalidate(0, KeyboardStateDict), $$invalidate(1, KeyboardObject)), $$invalidate(5, $activeKey)), $$invalidate(4, $activeModifiers));
}
}
const click_handler = () => window.open('https://ko-fi.com/S6S5E6K74', '_blank');
$$self.$$set = $$props => {
if ('visibleCommands' in $$props) $$invalidate(3, visibleCommands = $$props.visibleCommands);
if ('KeyboardObject' in $$props) $$invalidate(1, KeyboardObject = $$props.KeyboardObject);
if ('KeyboardStateDict' in $$props) $$invalidate(0, KeyboardStateDict = $$props.KeyboardStateDict);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*KeyboardObject, $activeKey, $activeModifiers*/ 50) {
$$invalidate(0, KeyboardStateDict = unpackLayout(KeyboardObject, $activeKey, $activeModifiers));
}
if ($$self.$$.dirty & /*visibleCommands, KeyboardStateDict*/ 9) {
calculateWeights(visibleCommands, KeyboardStateDict);
}
};
return [
KeyboardStateDict,
KeyboardObject,
handleKeyClick,
visibleCommands,
$activeModifiers,
$activeKey,
keyboardkey_keyWeight_binding,
keyboardkey_state_binding,
click_handler
];
}
class KeyboardLayout extends SvelteComponent {
constructor(options) {
super();
init(
this,
options,
instance$3,
create_fragment$3,
safe_not_equal,
{
visibleCommands: 3,
KeyboardObject: 1,
KeyboardStateDict: 0
},
add_css
);
}
}
function cubicInOut(t) {
return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;
}
function cubicOut(t) {
const f = t - 1.0;
return f * f * f + 1.0;
}
function blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {
const style = getComputedStyle(node);
const target_opacity = +style.opacity;
const f = style.filter === 'none' ? '' : style.filter;
const od = target_opacity * (1 - opacity);
return {
delay,
duration,
easing,
css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`
};
}
function fade(node, { delay = 0, duration = 400, easing = identity } = {}) {
const o = +getComputedStyle(node).opacity;
return {
delay,
duration,
easing,
css: t => `opacity: ${t * o}`
};
}
function slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {
const style = getComputedStyle(node);
const opacity = +style.opacity;
const height = parseFloat(style.height);
const padding_top = parseFloat(style.paddingTop);
const padding_bottom = parseFloat(style.paddingBottom);
const margin_top = parseFloat(style.marginTop);
const margin_bottom = parseFloat(style.marginBottom);
const border_top_width = parseFloat(style.borderTopWidth);
const border_bottom_width = parseFloat(style.borderBottomWidth);
return {
delay,
duration,
easing,
css: t => 'overflow: hidden;' +
`opacity: ${Math.min(t * 20, 1) * opacity};` +
`height: ${t * height}px;` +
`padding-top: ${t * padding_top}px;` +
`padding-bottom: ${t * padding_bottom}px;` +
`margin-top: ${t * margin_top}px;` +
`margin-bottom: ${t * margin_bottom}px;` +
`border-top-width: ${t * border_top_width}px;` +
`border-bottom-width: ${t * border_bottom_width}px;`
};
}
var dist = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.clickOutside = void 0;
function clickOutside(node, handler) {
var onClick = function (event) {
return node &&
!node.contains(event.target) &&
!event.defaultPrevented &&
handler();
};
document.addEventListener('click', onClick, true);
return {
destroy: function () {
document.removeEventListener('click', onClick, true);
},
};
}
exports.clickOutside = clickOutside;
});
function longpress(node, duration) {
let timer;
const handleMousedown = () => {
timer = setTimeout(() => {
node.dispatchEvent(new CustomEvent('longpress-start'));
}, duration);
};
const handleMouseup = () => {
if (!timer) {
node.dispatchEvent(new CustomEvent('longpress-end'));
} else {
clearTimeout(timer);
}
};
node.addEventListener('mousedown', handleMousedown);
node.addEventListener('mouseup', handleMouseup);
return {
update(newDuration) {
duration = newDuration;
},
destroy() {
node.removeEventListener('mousedown', handleMousedown);
node.removeEventListener('mouseup', handleMouseup);
},
}
}
/* src\Components\SearchMenu.svelte generated by Svelte v3.49.0 */
function get_each_context$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[37] = list[i];
return child_ctx;
}
// (185:6) {#if $activeModifiers.length > 0 || $activeKey !== null}
function create_if_block_3(ctx) {
let t;
let if_block_anchor;
let current;
let each_value = sortModifiers(/*$activeModifiers*/ ctx[11]);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
let if_block = /*$activeKey*/ ctx[10] !== '' && create_if_block_4(ctx);
return {
c() {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t = space();
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
insert(target, t, anchor);
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx, dirty) {
if (dirty[0] & /*$activeModifiers, inputHTML*/ 2049) {
each_value = sortModifiers(/*$activeModifiers*/ ctx[11]);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$1(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block$1(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(t.parentNode, t);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
if (/*$activeKey*/ ctx[10] !== '') {
if (if_block) {
if_block.p(ctx, dirty);
if (dirty[0] & /*$activeKey*/ 1024) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block_4(ctx);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
transition_in(if_block);
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
transition_out(if_block);
current = false;
},
d(detaching) {
destroy_each(each_blocks, detaching);
if (detaching) detach(t);
if (if_block) if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
// (186:8) {#each sortModifiers($activeModifiers) as modifier}
function create_each_block$1(ctx) {
let kbd;
let t_value = /*modifier*/ ctx[37] + "";
let t;
let kbd_intro;
let kbd_outro;
let current;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[17](/*modifier*/ ctx[37]);
}
return {
c() {
kbd = element("kbd");
t = text(t_value);
attr(kbd, "class", "modifier");
},
m(target, anchor) {
insert(target, kbd, anchor);
append(kbd, t);
current = true;
if (!mounted) {
dispose = listen(kbd, "click", click_handler);
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if ((!current || dirty[0] & /*$activeModifiers*/ 2048) && t_value !== (t_value = /*modifier*/ ctx[37] + "")) set_data(t, t_value);
},
i(local) {
if (current) return;
add_render_callback(() => {
if (kbd_outro) kbd_outro.end(1);
kbd_intro = create_in_transition(kbd, slide, { duration: 100 });
kbd_intro.start();
});
current = true;
},
o(local) {
if (kbd_intro) kbd_intro.invalidate();
kbd_outro = create_out_transition(kbd, fade, { duration: 50 });
current = false;
},
d(detaching) {
if (detaching) detach(kbd);
if (detaching && kbd_outro) kbd_outro.end();
mounted = false;
dispose();
}
};
}
// (199:8) {#if $activeKey !== ''}
function create_if_block_4(ctx) {
let kbd;
let t_value = (/*$activeKey*/ ctx[10] in SpecialSymbols
? SpecialSymbols[/*$activeKey*/ ctx[10]]
: /*$activeKey*/ ctx[10].length === 1
? /*$activeKey*/ ctx[10].toUpperCase()
: /*$activeKey*/ ctx[10]) + "";
let t;
let kbd_intro;
let kbd_outro;
let current;
let mounted;
let dispose;
return {
c() {
kbd = element("kbd");
t = text(t_value);
attr(kbd, "class", "modifier");
set_style(kbd, "padding-left", "8px");
set_style(kbd, "padding-right", "8px");
},
m(target, anchor) {
insert(target, kbd, anchor);
append(kbd, t);
current = true;
if (!mounted) {
dispose = listen(kbd, "click", /*click_handler_1*/ ctx[18]);
mounted = true;
}
},
p(ctx, dirty) {
if ((!current || dirty[0] & /*$activeKey*/ 1024) && t_value !== (t_value = (/*$activeKey*/ ctx[10] in SpecialSymbols
? SpecialSymbols[/*$activeKey*/ ctx[10]]
: /*$activeKey*/ ctx[10].length === 1
? /*$activeKey*/ ctx[10].toUpperCase()
: /*$activeKey*/ ctx[10]) + "")) set_data(t, t_value);
},
i(local) {
if (current) return;
add_render_callback(() => {
if (kbd_outro) kbd_outro.end(1);
kbd_intro = create_in_transition(kbd, slide, { duration: 100 });
kbd_intro.start();
});
current = true;
},
o(local) {
if (kbd_intro) kbd_intro.invalidate();
kbd_outro = create_out_transition(kbd, fade, { duration: 50 });
current = false;
},
d(detaching) {
if (detaching) detach(kbd);
if (detaching && kbd_outro) kbd_outro.end();
mounted = false;
dispose();
}
};
}
// (266:2) {#if filterIsOpen}
function create_if_block_2(ctx) {
let div17;
let div15;
let div2;
let div0;
let input0;
let t0;
let div1;
let t2;
let div5;
let div3;
let input1;
let t3;
let div4;
let t5;
let div8;
let div6;
let input2;
let t6;
let div7;
let t8;
let div11;
let div9;
let input3;
let t9;
let div10;
let t11;
let div14;
let div12;
let input4;
let t12;
let div13;
let div15_transition;
let t14;
let div16;
let div17_class_value;
let clickOutside_action;
let div17_transition;
let current;
let mounted;
let dispose;
return {
c() {
div17 = element("div");
div15 = element("div");
div2 = element("div");
div0 = element("div");
input0 = element("input");
t0 = space();
div1 = element("div");
div1.textContent = "Display featured first";
t2 = space();
div5 = element("div");
div3 = element("div");
input1 = element("input");
t3 = space();
div4 = element("div");
div4.textContent = "Strict Search";
t5 = space();
div8 = element("div");
div6 = element("div");
input2 = element("input");
t6 = space();
div7 = element("div");
div7.textContent = "Highlight custom hotkeys";
t8 = space();
div11 = element("div");
div9 = element("div");
input3 = element("input");
t9 = space();
div10 = element("div");
div10.textContent = "Highlight hotkey duplicates";
t11 = space();
div14 = element("div");
div12 = element("div");
input4 = element("input");
t12 = space();
div13 = element("div");
div13.textContent = "Display command ID's";
t14 = space();
div16 = element("div");
attr(input0, "type", "checkbox");
attr(input0, "tabindex", "0");
attr(div0, "class", "checkbox-container");
toggle_class(div0, "is-enabled", /*FilterSettings*/ ctx[2].FeaturedFirst);
attr(div1, "class", "setting-item-name popup-filter-title");
attr(div2, "class", "setting-item mod-toggle popup-filter-menu");
attr(input1, "type", "checkbox");
attr(input1, "tabindex", "0");
attr(div3, "class", "checkbox-container");
toggle_class(div3, "is-enabled", /*FilterSettings*/ ctx[2].StrictSearch);
attr(div4, "class", "setting-item-name popup-filter-title");
attr(div5, "class", "setting-item mod-toggle popup-filter-menu");
attr(input2, "type", "checkbox");
attr(input2, "tabindex", "0");
attr(div6, "class", "checkbox-container");
toggle_class(div6, "is-enabled", /*FilterSettings*/ ctx[2].HighlightCustom);
attr(div7, "class", "setting-item-name popup-filter-title");
attr(div8, "class", "setting-item mod-toggle popup-filter-menu");
attr(input3, "type", "checkbox");
attr(input3, "tabindex", "0");
attr(div9, "class", "checkbox-container");
toggle_class(div9, "is-enabled", /*FilterSettings*/ ctx[2].HighlightDuplicates);
attr(div10, "class", "setting-item-name popup-filter-title");
attr(div11, "class", "setting-item mod-toggle popup-filter-menu");
attr(input4, "type", "checkbox");
attr(input4, "tabindex", "0");
attr(div12, "class", "checkbox-container");
toggle_class(div12, "is-enabled", /*FilterSettings*/ ctx[2].DisplayIDs);
attr(div13, "class", "setting-item-name popup-filter-title");
attr(div14, "class", "setting-item mod-toggle popup-filter-menu");
attr(div16, "class", "popup-filter-menu-background");
attr(div17, "class", div17_class_value = "popup-filter-menu-container " + (/*filterIsOpen*/ ctx[8] ? 'is-open' : ''));
},
m(target, anchor) {
insert(target, div17, anchor);
append(div17, div15);
append(div15, div2);
append(div2, div0);
append(div0, input0);
input0.checked = /*FilterSettings*/ ctx[2].FeaturedFirst;
append(div2, t0);
append(div2, div1);
append(div15, t2);
append(div15, div5);
append(div5, div3);
append(div3, input1);
input1.checked = /*FilterSettings*/ ctx[2].StrictSearch;
append(div5, t3);
append(div5, div4);
append(div15, t5);
append(div15, div8);
append(div8, div6);
append(div6, input2);
input2.checked = /*FilterSettings*/ ctx[2].HighlightCustom;
append(div8, t6);
append(div8, div7);
append(div15, t8);
append(div15, div11);
append(div11, div9);
append(div9, input3);
input3.checked = /*FilterSettings*/ ctx[2].HighlightDuplicates;
append(div11, t9);
append(div11, div10);
append(div15, t11);
append(div15, div14);
append(div14, div12);
append(div12, input4);
input4.checked = /*FilterSettings*/ ctx[2].DisplayIDs;
append(div14, t12);
append(div14, div13);
append(div17, t14);
append(div17, div16);
current = true;
if (!mounted) {
dispose = [
listen(input0, "change", /*input0_change_handler*/ ctx[26]),
listen(div0, "click", /*dispatchFeaturedFirstOptionTriggered*/ ctx[15]),
listen(input1, "change", /*input1_change_handler*/ ctx[27]),
listen(div3, "click", /*click_handler_3*/ ctx[28]),
listen(input2, "change", /*input2_change_handler*/ ctx[29]),
listen(div6, "click", /*click_handler_4*/ ctx[30]),
listen(input3, "change", /*input3_change_handler*/ ctx[31]),
listen(div9, "click", /*click_handler_5*/ ctx[32]),
listen(input4, "change", /*input4_change_handler*/ ctx[33]),
listen(div12, "click", /*click_handler_6*/ ctx[34]),
action_destroyer(clickOutside_action = dist.clickOutside.call(null, div17, /*clickOutside_function*/ ctx[35]))
];
mounted = true;
}
},
p(ctx, dirty) {
if (dirty[0] & /*FilterSettings*/ 4) {
input0.checked = /*FilterSettings*/ ctx[2].FeaturedFirst;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div0, "is-enabled", /*FilterSettings*/ ctx[2].FeaturedFirst);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input1.checked = /*FilterSettings*/ ctx[2].StrictSearch;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div3, "is-enabled", /*FilterSettings*/ ctx[2].StrictSearch);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input2.checked = /*FilterSettings*/ ctx[2].HighlightCustom;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div6, "is-enabled", /*FilterSettings*/ ctx[2].HighlightCustom);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input3.checked = /*FilterSettings*/ ctx[2].HighlightDuplicates;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div9, "is-enabled", /*FilterSettings*/ ctx[2].HighlightDuplicates);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input4.checked = /*FilterSettings*/ ctx[2].DisplayIDs;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div12, "is-enabled", /*FilterSettings*/ ctx[2].DisplayIDs);
}
if (!current || dirty[0] & /*filterIsOpen*/ 256 && div17_class_value !== (div17_class_value = "popup-filter-menu-container " + (/*filterIsOpen*/ ctx[8] ? 'is-open' : ''))) {
attr(div17, "class", div17_class_value);
}
if (clickOutside_action && is_function(clickOutside_action.update) && dirty[0] & /*filterIsOpen*/ 256) clickOutside_action.update.call(null, /*clickOutside_function*/ ctx[35]);
},
i(local) {
if (current) return;
add_render_callback(() => {
if (!div15_transition) div15_transition = create_bidirectional_transition(div15, fade, {}, true);
div15_transition.run(1);
});
add_render_callback(() => {
if (!div17_transition) div17_transition = create_bidirectional_transition(div17, slide, {}, true);
div17_transition.run(1);
});
current = true;
},
o(local) {
if (!div15_transition) div15_transition = create_bidirectional_transition(div15, fade, {}, false);
div15_transition.run(0);
if (!div17_transition) div17_transition = create_bidirectional_transition(div17, slide, {}, false);
div17_transition.run(0);
current = false;
},
d(detaching) {
if (detaching) detach(div17);
if (detaching && div15_transition) div15_transition.end();
if (detaching && div17_transition) div17_transition.end();
mounted = false;
run_all(dispose);
}
};
}
// (388:40)
function create_if_block_1$1(ctx) {
let span;
let span_intro;
return {
c() {
span = element("span");
span.textContent = "Hotkeys not found";
},
m(target, anchor) {
insert(target, span, anchor);
},
p: noop,
i(local) {
if (!span_intro) {
add_render_callback(() => {
span_intro = create_in_transition(span, blur, { duration: 100 });
span_intro.start();
});
}
},
o: noop,
d(detaching) {
if (detaching) detach(span);
}
};
}
// (384:4) {#if searchCommandsCount !== 0}
function create_if_block$1(ctx) {
let span;
let t0;
let t1;
let t2;
let t3;
let span_intro;
return {
c() {
span = element("span");
t0 = text(/*searchHotkeysCount*/ ctx[6]);
t1 = text(" keys | ");
t2 = text(/*searchCommandsCount*/ ctx[5]);
t3 = text(" cmds");
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t0);
append(span, t1);
append(span, t2);
append(span, t3);
},
p(ctx, dirty) {
if (dirty[0] & /*searchHotkeysCount*/ 64) set_data(t0, /*searchHotkeysCount*/ ctx[6]);
if (dirty[0] & /*searchCommandsCount*/ 32) set_data(t2, /*searchCommandsCount*/ ctx[5]);
},
i(local) {
if (!span_intro) {
add_render_callback(() => {
span_intro = create_in_transition(span, blur, { duration: 100 });
span_intro.start();
});
}
},
o: noop,
d(detaching) {
if (detaching) detach(span);
}
};
}
function create_fragment$2(ctx) {
let div7;
let div5;
let div0;
let t0;
let div4;
let input;
let t1;
let div3;
let div1;
let circledoticon;
let div1_class_value;
let div1_aria_label_value;
let t2;
let div2;
let crossicon;
let t3;
let button0;
let filtericon;
let button0_class_value;
let t4;
let t5;
let div6;
let t6;
let button1;
let refreshicon;
let button1_class_value;
let current;
let mounted;
let dispose;
let if_block0 = (/*$activeModifiers*/ ctx[11].length > 0 || /*$activeKey*/ ctx[10] !== null) && create_if_block_3(ctx);
circledoticon = new CircleDotIcon({ props: { size: 20 } });
crossicon = new CrossIcon({ props: { size: 20 } });
filtericon = new FilterIcon({ props: { size: 16 } });
let if_block1 = /*filterIsOpen*/ ctx[8] && create_if_block_2(ctx);
function select_block_type(ctx, dirty) {
if (/*searchCommandsCount*/ ctx[5] !== 0) return create_if_block$1;
if (/*searchCommandsCount*/ ctx[5] === 0) return create_if_block_1$1;
}
let current_block_type = select_block_type(ctx);
let if_block2 = current_block_type && current_block_type(ctx);
refreshicon = new RefreshIcon({ props: { size: 16 } });
return {
c() {
div7 = element("div");
div5 = element("div");
div0 = element("div");
if (if_block0) if_block0.c();
t0 = space();
div4 = element("div");
input = element("input");
t1 = space();
div3 = element("div");
div1 = element("div");
create_component(circledoticon.$$.fragment);
t2 = space();
div2 = element("div");
create_component(crossicon.$$.fragment);
t3 = space();
button0 = element("button");
create_component(filtericon.$$.fragment);
t4 = space();
if (if_block1) if_block1.c();
t5 = space();
div6 = element("div");
if (if_block2) if_block2.c();
t6 = space();
button1 = element("button");
create_component(refreshicon.$$.fragment);
attr(div0, "class", "modifiers-wrapper");
attr(input, "type", "text");
attr(input, "placeholder", "Filter...");
attr(div1, "class", div1_class_value = "keyboard-icon icon " + (/*keyboardListenerIsActive*/ ctx[3] ? 'pulse' : ''));
attr(div1, "aria-label", div1_aria_label_value = /*keyboardListenerIsActive*/ ctx[3]
? 'Press Esc to deactivate key listener'
: `Press ${getConvertedModifiers(['Mod'])[0]}+F or long press to activate key listener`);
attr(div2, "class", "clear-icon icon");
attr(div3, "class", "meta-search-wrapper");
attr(div4, "class", "hotkey-search-container");
attr(div5, "class", "search-wrapper");
toggle_class(div5, "is-focused", /*inputIsFocused*/ ctx[7]);
attr(button0, "id", "hotkey-filter-button");
attr(button0, "class", button0_class_value = /*filterIsOpen*/ ctx[8] ? 'is-active' : '');
attr(button0, "aria-label", "Filter Commands");
attr(div6, "class", "community-plugin-search-summary u-muted");
set_style(div6, "display", "flex");
set_style(div6, "justify-content", "center");
set_style(div6, "font-size", "14px");
attr(button1, "id", "hotkey-refresh-button");
attr(button1, "aria-label", "Refresh Commands");
attr(button1, "class", button1_class_value = /*refreshIsActive*/ ctx[9] ? 'animation-is-active' : '');
attr(div7, "class", "hotkey-settings-container");
},
m(target, anchor) {
insert(target, div7, anchor);
append(div7, div5);
append(div5, div0);
if (if_block0) if_block0.m(div0, null);
append(div5, t0);
append(div5, div4);
append(div4, input);
set_input_value(input, /*search*/ ctx[1]);
/*input_binding*/ ctx[20](input);
append(div4, t1);
append(div4, div3);
append(div3, div1);
mount_component(circledoticon, div1, null);
append(div3, t2);
append(div3, div2);
mount_component(crossicon, div2, null);
append(div7, t3);
append(div7, button0);
mount_component(filtericon, button0, null);
append(div7, t4);
if (if_block1) if_block1.m(div7, null);
append(div7, t5);
append(div7, div6);
if (if_block2) if_block2.m(div6, null);
append(div7, t6);
append(div7, button1);
mount_component(refreshicon, button1, null);
current = true;
if (!mounted) {
dispose = [
listen(input, "input", /*input_input_handler*/ ctx[19]),
listen(input, "focus", /*focus_handler*/ ctx[21]),
listen(input, "blur", /*blur_handler*/ ctx[22]),
listen(div1, "click", /*ActivateKeyboardListener*/ ctx[13]),
action_destroyer(longpress.call(null, div1, 600)),
listen(div1, "longpress-start", /*longpress_start_handler*/ ctx[23]),
listen(div1, "longpress-end", /*longpress_end_handler*/ ctx[24]),
listen(div2, "click", /*ClearSearch*/ ctx[12]),
listen(button0, "click", /*click_handler_2*/ ctx[25]),
listen(button1, "click", /*sendRefreshCommands*/ ctx[14]),
listen(div7, "keydown", /*onModifierKeyDown*/ ctx[16])
];
mounted = true;
}
},
p(ctx, dirty) {
if (/*$activeModifiers*/ ctx[11].length > 0 || /*$activeKey*/ ctx[10] !== null) {
if (if_block0) {
if_block0.p(ctx, dirty);
if (dirty[0] & /*$activeModifiers, $activeKey*/ 3072) {
transition_in(if_block0, 1);
}
} else {
if_block0 = create_if_block_3(ctx);
if_block0.c();
transition_in(if_block0, 1);
if_block0.m(div0, null);
}
} else if (if_block0) {
group_outros();
transition_out(if_block0, 1, 1, () => {
if_block0 = null;
});
check_outros();
}
if (dirty[0] & /*search*/ 2 && input.value !== /*search*/ ctx[1]) {
set_input_value(input, /*search*/ ctx[1]);
}
if (!current || dirty[0] & /*keyboardListenerIsActive*/ 8 && div1_class_value !== (div1_class_value = "keyboard-icon icon " + (/*keyboardListenerIsActive*/ ctx[3] ? 'pulse' : ''))) {
attr(div1, "class", div1_class_value);
}
if (!current || dirty[0] & /*keyboardListenerIsActive*/ 8 && div1_aria_label_value !== (div1_aria_label_value = /*keyboardListenerIsActive*/ ctx[3]
? 'Press Esc to deactivate key listener'
: `Press ${getConvertedModifiers(['Mod'])[0]}+F or long press to activate key listener`)) {
attr(div1, "aria-label", div1_aria_label_value);
}
if (dirty[0] & /*inputIsFocused*/ 128) {
toggle_class(div5, "is-focused", /*inputIsFocused*/ ctx[7]);
}
if (!current || dirty[0] & /*filterIsOpen*/ 256 && button0_class_value !== (button0_class_value = /*filterIsOpen*/ ctx[8] ? 'is-active' : '')) {
attr(button0, "class", button0_class_value);
}
if (/*filterIsOpen*/ ctx[8]) {
if (if_block1) {
if_block1.p(ctx, dirty);
if (dirty[0] & /*filterIsOpen*/ 256) {
transition_in(if_block1, 1);
}
} else {
if_block1 = create_if_block_2(ctx);
if_block1.c();
transition_in(if_block1, 1);
if_block1.m(div7, t5);
}
} else if (if_block1) {
group_outros();
transition_out(if_block1, 1, 1, () => {
if_block1 = null;
});
check_outros();
}
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block2) {
if_block2.p(ctx, dirty);
} else {
if (if_block2) if_block2.d(1);
if_block2 = current_block_type && current_block_type(ctx);
if (if_block2) {
if_block2.c();
transition_in(if_block2, 1);
if_block2.m(div6, null);
}
}
if (!current || dirty[0] & /*refreshIsActive*/ 512 && button1_class_value !== (button1_class_value = /*refreshIsActive*/ ctx[9] ? 'animation-is-active' : '')) {
attr(button1, "class", button1_class_value);
}
},
i(local) {
if (current) return;
transition_in(if_block0);
transition_in(circledoticon.$$.fragment, local);
transition_in(crossicon.$$.fragment, local);
transition_in(filtericon.$$.fragment, local);
transition_in(if_block1);
transition_in(if_block2);
transition_in(refreshicon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(if_block0);
transition_out(circledoticon.$$.fragment, local);
transition_out(crossicon.$$.fragment, local);
transition_out(filtericon.$$.fragment, local);
transition_out(if_block1);
transition_out(refreshicon.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div7);
if (if_block0) if_block0.d();
/*input_binding*/ ctx[20](null);
destroy_component(circledoticon);
destroy_component(crossicon);
destroy_component(filtericon);
if (if_block1) if_block1.d();
if (if_block2) {
if_block2.d();
}
destroy_component(refreshicon);
mounted = false;
run_all(dispose);
}
};
}
function instance$2($$self, $$props, $$invalidate) {
let $activeKey;
let $activeModifiers;
component_subscribe($$self, activeKey, $$value => $$invalidate(10, $activeKey = $$value));
component_subscribe($$self, activeModifiers, $$value => $$invalidate(11, $activeModifiers = $$value));
let { plugin } = $$props;
let { inputHTML } = $$props;
let { search = '' } = $$props;
let { searchCommandsCount } = $$props;
let { searchHotkeysCount } = $$props;
let inputIsFocused = false;
let { FilterSettings } = $$props;
let { keyboardListenerIsActive = false } = $$props;
let filterIsOpen = false;
let refreshIsActive = false;
const ClearSearch = () => {
if (search === '') {
set_store_value(activeModifiers, $activeModifiers = [], $activeModifiers);
set_store_value(activeKey, $activeKey = '', $activeKey);
inputHTML.focus();
} else {
$$invalidate(1, search = '');
inputHTML.focus();
}
};
const ActivateKeyboardListener = () => {
$$invalidate(3, keyboardListenerIsActive = !keyboardListenerIsActive);
inputHTML.focus();
};
// EVENT DISPATHCHERs
const dispatch = createEventDispatcher();
// 1. refresh commands
function sendRefreshCommands() {
$$invalidate(9, refreshIsActive = true);
// set animation timeout
setTimeout(
() => {
$$invalidate(9, refreshIsActive = false);
},
1000
);
dispatch('refresh-commands');
}
function dispatchFeaturedFirstOptionTriggered() {
dispatch('featured-first-option-triggered');
}
// on focus modifier keydown event add to activeSearchModifiers array
// if modifier is already in array remove it
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState
const onModifierKeyDown = e => {
// edit modifiers
function pushModifier(modifier) {
if (!$activeModifiers.includes(modifier)) {
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers, modifier], $activeModifiers);
}
}
function spliceModifier(modifier) {
// splice modifier from activeSearchModifiers array
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(activeModifier => activeModifier !== modifier), $activeModifiers);
}
if (keyboardListenerIsActive && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'))) {
switch (e.key) {
case 'Shift':
if ($activeModifiers.includes('Shift')) {
spliceModifier('Shift');
} else {
pushModifier('Shift');
}
break;
case 'Alt':
if ($activeModifiers.includes('Alt')) {
spliceModifier('Alt');
} else {
pushModifier('Alt');
}
break;
case 'Meta':
// OSX ONLY
if ($activeModifiers.includes('Meta')) {
spliceModifier('Meta');
} else {
pushModifier('Meta');
}
break;
case 'Control':
if ($activeModifiers.includes('Ctrl')) {
spliceModifier('Ctrl');
} else {
pushModifier('Ctrl');
}
break;
default:
// TODO: triggers if two modifiers are pressed at the same time
console.log('unknown modifier: ', e.key);
console.log('please report this to the developer');
break;
}
// return to stop event propagation
return;
} else if (e.key === 'Escape') {
if (keyboardListenerIsActive) {
$$invalidate(3, keyboardListenerIsActive = false);
} else if (keyboardListenerIsActive === false) {
inputHTML.blur();
}
} else if (e.key === 'Backspace') {
// TODO clear activeSearchKey
if (keyboardListenerIsActive === true && $activeKey !== 'Backspace') {
e.preventDefault();
set_store_value(activeKey, $activeKey = 'Backspace', $activeKey);
} else if (keyboardListenerIsActive === true && $activeKey === 'Backspace') {
e.preventDefault();
set_store_value(activeKey, $activeKey = '', $activeKey);
} else if (keyboardListenerIsActive === false) {
if (search === '' || inputHTML.selectionStart === 0) {
if ($activeKey !== '') {
set_store_value(activeKey, $activeKey = '', $activeKey);
} else if ($activeKey === '' && $activeModifiers.length > 0) {
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers.slice(0, $activeModifiers.length - 1)], $activeModifiers);
}
}
}
} else if (e.key === 'Meta') {
e.preventDefault();
} else if (keyboardListenerIsActive === true) {
// @ts-ignore
let clickedKeyJS = JavaSciptKeyCodes[e.keyCode];
if (clickedKeyJS.Key !== $activeKey) {
e.preventDefault();
if (clickedKeyJS.Code === 'Numpad' + clickedKeyJS.Key) {
set_store_value(activeKey, $activeKey = clickedKeyJS.Code, $activeKey);
} else {
set_store_value(activeKey, $activeKey = clickedKeyJS.Key, $activeKey);
}
} else if (clickedKeyJS.Key === $activeKey || clickedKeyJS.Code === $activeKey) {
e.preventDefault();
if ($activeKey === clickedKeyJS.Code) {
set_store_value(activeKey, $activeKey = '', $activeKey);
} else if ($activeKey === clickedKeyJS.Key) {
set_store_value(activeKey, $activeKey = '', $activeKey);
}
} else {
!(e.keyCode in JavaSciptKeyCodes)
? console.log('unknown key: ', JavaSciptKeyCodes[e.keyCode])
: console.log('unknown key: ', e.key);
}
}
};
const click_handler = modifier => {
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(activeModifier => activeModifier !== modifier), $activeModifiers);
inputHTML.focus();
};
const click_handler_1 = () => set_store_value(activeKey, $activeKey = '', $activeKey);
function input_input_handler() {
search = this.value;
$$invalidate(1, search);
}
function input_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
inputHTML = $$value;
$$invalidate(0, inputHTML);
});
}
const focus_handler = () => $$invalidate(7, inputIsFocused = true);
const blur_handler = () => $$invalidate(7, inputIsFocused = false);
const longpress_start_handler = () => {
inputHTML.focus();
$$invalidate(3, keyboardListenerIsActive = true);
};
const longpress_end_handler = () => {
$$invalidate(3, keyboardListenerIsActive = false);
};
const click_handler_2 = () => {
// console.log('filter: ', filterIsOpen)
$$invalidate(8, filterIsOpen = !filterIsOpen);
};
function input0_change_handler() {
FilterSettings.FeaturedFirst = this.checked;
$$invalidate(2, FilterSettings);
}
function input1_change_handler() {
FilterSettings.StrictSearch = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_3 = () => {
$$invalidate(2, FilterSettings.StrictSearch = !FilterSettings.StrictSearch, FilterSettings);
plugin.saveSettings();
sendRefreshCommands();
};
function input2_change_handler() {
FilterSettings.HighlightCustom = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_4 = () => {
$$invalidate(2, FilterSettings.HighlightCustom = !FilterSettings.HighlightCustom, FilterSettings);
plugin.saveSettings();
};
function input3_change_handler() {
FilterSettings.HighlightDuplicates = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_5 = () => {
$$invalidate(2, FilterSettings.HighlightDuplicates = !FilterSettings.HighlightDuplicates, FilterSettings);
plugin.saveSettings();
};
function input4_change_handler() {
FilterSettings.DisplayIDs = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_6 = () => {
$$invalidate(2, FilterSettings.DisplayIDs = !FilterSettings.DisplayIDs, FilterSettings);
plugin.saveSettings();
};
const clickOutside_function = () => // await timeout 40ms
setTimeout(
() => {
if (filterIsOpen) {
$$invalidate(8, filterIsOpen = false);
}
},
40
);
$$self.$$set = $$props => {
if ('plugin' in $$props) $$invalidate(4, plugin = $$props.plugin);
if ('inputHTML' in $$props) $$invalidate(0, inputHTML = $$props.inputHTML);
if ('search' in $$props) $$invalidate(1, search = $$props.search);
if ('searchCommandsCount' in $$props) $$invalidate(5, searchCommandsCount = $$props.searchCommandsCount);
if ('searchHotkeysCount' in $$props) $$invalidate(6, searchHotkeysCount = $$props.searchHotkeysCount);
if ('FilterSettings' in $$props) $$invalidate(2, FilterSettings = $$props.FilterSettings);
if ('keyboardListenerIsActive' in $$props) $$invalidate(3, keyboardListenerIsActive = $$props.keyboardListenerIsActive);
};
return [
inputHTML,
search,
FilterSettings,
keyboardListenerIsActive,
plugin,
searchCommandsCount,
searchHotkeysCount,
inputIsFocused,
filterIsOpen,
refreshIsActive,
$activeKey,
$activeModifiers,
ClearSearch,
ActivateKeyboardListener,
sendRefreshCommands,
dispatchFeaturedFirstOptionTriggered,
onModifierKeyDown,
click_handler,
click_handler_1,
input_input_handler,
input_binding,
focus_handler,
blur_handler,
longpress_start_handler,
longpress_end_handler,
click_handler_2,
input0_change_handler,
input1_change_handler,
click_handler_3,
input2_change_handler,
click_handler_4,
input3_change_handler,
click_handler_5,
input4_change_handler,
click_handler_6,
clickOutside_function
];
}
class SearchMenu extends SvelteComponent {
constructor(options) {
super();
init(
this,
options,
instance$2,
create_fragment$2,
safe_not_equal,
{
plugin: 4,
inputHTML: 0,
search: 1,
searchCommandsCount: 5,
searchHotkeysCount: 6,
FilterSettings: 2,
keyboardListenerIsActive: 3
},
null,
[-1, -1]
);
}
}
/* src\Components\CommandsList.svelte generated by Svelte v3.49.0 */
function get_each_context(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[8] = list[i];
return child_ctx;
}
function get_each_context_1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[11] = list[i];
return child_ctx;
}
// (64:10) {#if settings.filterSettings.DisplayIDs}
function create_if_block_1(ctx) {
let small;
let t_value = /*cmdEntry*/ ctx[8].id + "";
let t;
return {
c() {
small = element("small");
t = text(t_value);
},
m(target, anchor) {
insert(target, small, anchor);
append(small, t);
},
p(ctx, dirty) {
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*cmdEntry*/ ctx[8].id + "")) set_data(t, t_value);
},
d(detaching) {
if (detaching) detach(small);
}
};
}
// (81:14) {:else}
function create_else_block(ctx) {
let span;
let t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "";
let t;
return {
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "kbanalizer-setting-hotkey setting-hotkey");
toggle_class(span, "is-customized", /*hotkey*/ ctx[11].isCustom && /*settings*/ ctx[1].filterSettings.HighlightCustom);
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t);
},
p(ctx, dirty) {
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "")) set_data(t, t_value);
if (dirty & /*visibleCommands, settings*/ 3) {
toggle_class(span, "is-customized", /*hotkey*/ ctx[11].isCustom && /*settings*/ ctx[1].filterSettings.HighlightCustom);
}
},
d(detaching) {
if (detaching) detach(span);
}
};
}
// (73:14) {#if isHotkeyDuplicate(cmdEntry.id, hotkey)}
function create_if_block(ctx) {
let span;
let t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "";
let t;
let mounted;
let dispose;
function click_handler_1() {
return /*click_handler_1*/ ctx[6](/*hotkey*/ ctx[11]);
}
return {
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "kbanalizer-setting-hotkey setting-hotkey is-duplicate");
toggle_class(span, "is-duplicate", /*settings*/ ctx[1].filterSettings.HighlightDuplicates);
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t);
if (!mounted) {
dispose = listen(span, "click", click_handler_1);
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "")) set_data(t, t_value);
if (dirty & /*settings*/ 2) {
toggle_class(span, "is-duplicate", /*settings*/ ctx[1].filterSettings.HighlightDuplicates);
}
},
d(detaching) {
if (detaching) detach(span);
mounted = false;
dispose();
}
};
}
// (72:12) {#each cmdEntry.hotkeys as hotkey}
function create_each_block_1(ctx) {
let show_if;
let if_block_anchor;
function select_block_type(ctx, dirty) {
if (dirty & /*visibleCommands*/ 1) show_if = null;
if (show_if == null) show_if = !!isHotkeyDuplicate(/*cmdEntry*/ ctx[8].id, /*hotkey*/ ctx[11]);
if (show_if) return create_if_block;
return create_else_block;
}
let current_block_type = select_block_type(ctx, -1);
let if_block = current_block_type(ctx);
return {
c() {
if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx, dirty) {
if (current_block_type === (current_block_type = select_block_type(ctx, dirty)) && if_block) {
if_block.p(ctx, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx);
if (if_block) {
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
}
},
d(detaching) {
if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
// (42:4) {#each visibleCommands as cmdEntry (cmdEntry.id)}
function create_each_block(key_1, ctx) {
let div5;
let div2;
let div1;
let span0;
let t0_value = /*cmdEntry*/ ctx[8].pluginName + "";
let t0;
let t1;
let span1;
let t2_value = /*cmdEntry*/ ctx[8].cmdName + "";
let t2;
let t3;
let div0;
let staricon;
let t4;
let t5;
let div4;
let div3;
let t6;
let current;
let mounted;
let dispose;
staricon = new StarIcon({ props: { size: 16 } });
function click_handler() {
return /*click_handler*/ ctx[5](/*cmdEntry*/ ctx[8]);
}
let if_block = /*settings*/ ctx[1].filterSettings.DisplayIDs && create_if_block_1(ctx);
let each_value_1 = /*cmdEntry*/ ctx[8].hotkeys;
let each_blocks = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
}
return {
key: key_1,
first: null,
c() {
div5 = element("div");
div2 = element("div");
div1 = element("div");
span0 = element("span");
t0 = text(t0_value);
t1 = space();
span1 = element("span");
t2 = text(t2_value);
t3 = space();
div0 = element("div");
create_component(staricon.$$.fragment);
t4 = space();
if (if_block) if_block.c();
t5 = space();
div4 = element("div");
div3 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t6 = space();
attr(span0, "class", "suggestion-prefix");
attr(span1, "class", "command-name");
attr(div0, "class", "star-icon icon");
attr(div1, "class", "setting-item-name");
attr(div2, "class", "setting-item-info");
attr(div3, "class", "setting-command-hotkeys");
attr(div4, "class", "kbanalizer-setting-item-control setting-item-control");
attr(div5, "class", "kbanalizer-setting-item setting-item");
toggle_class(div5, "is-starred", /*settings*/ ctx[1].featuredCommandIDs.includes(/*cmdEntry*/ ctx[8].id));
this.first = div5;
},
m(target, anchor) {
insert(target, div5, anchor);
append(div5, div2);
append(div2, div1);
append(div1, span0);
append(span0, t0);
append(div1, t1);
append(div1, span1);
append(span1, t2);
append(div1, t3);
append(div1, div0);
mount_component(staricon, div0, null);
append(div2, t4);
if (if_block) if_block.m(div2, null);
append(div5, t5);
append(div5, div4);
append(div4, div3);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div3, null);
}
append(div5, t6);
current = true;
if (!mounted) {
dispose = [
listen(span0, "click", /*sendPluginName*/ ctx[4]),
listen(div0, "click", click_handler)
];
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if ((!current || dirty & /*visibleCommands*/ 1) && t0_value !== (t0_value = /*cmdEntry*/ ctx[8].pluginName + "")) set_data(t0, t0_value);
if ((!current || dirty & /*visibleCommands*/ 1) && t2_value !== (t2_value = /*cmdEntry*/ ctx[8].cmdName + "")) set_data(t2, t2_value);
if (/*settings*/ ctx[1].filterSettings.DisplayIDs) {
if (if_block) {
if_block.p(ctx, dirty);
} else {
if_block = create_if_block_1(ctx);
if_block.c();
if_block.m(div2, null);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
if (dirty & /*settings, dispatch, visibleCommands, renderHotkey, isHotkeyDuplicate*/ 15) {
each_value_1 = /*cmdEntry*/ ctx[8].hotkeys;
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1(ctx, each_value_1, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block_1(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div3, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value_1.length;
}
if (dirty & /*settings, visibleCommands*/ 3) {
toggle_class(div5, "is-starred", /*settings*/ ctx[1].featuredCommandIDs.includes(/*cmdEntry*/ ctx[8].id));
}
},
i(local) {
if (current) return;
transition_in(staricon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(staricon.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div5);
destroy_component(staricon);
if (if_block) if_block.d();
destroy_each(each_blocks, detaching);
mounted = false;
run_all(dispose);
}
};
}
function create_fragment$1(ctx) {
let div1;
let div0;
let each_blocks = [];
let each_1_lookup = new Map();
let current;
let each_value = /*visibleCommands*/ ctx[0];
const get_key = ctx => /*cmdEntry*/ ctx[8].id;
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context(ctx, each_value, i);
let key = get_key(child_ctx);
each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
}
return {
c() {
div1 = element("div");
div0 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div0, "class", "hotkey-list-container");
attr(div1, "id", "hotkeys-wrapper");
attr(div1, "class", "markdown-preview-sizer markdown-preview-section hotkey-settings-container");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div0, null);
}
current = true;
},
p(ctx, [dirty]) {
if (dirty & /*settings, visibleCommands, dispatch, renderHotkey, isHotkeyDuplicate, sendPluginName*/ 31) {
each_value = /*visibleCommands*/ ctx[0];
group_outros();
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block, null, get_each_context);
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) detach(div1);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].d();
}
}
};
}
function instance$1($$self, $$props, $$invalidate) {
let { visibleCommands } = $$props;
let { settings } = $$props;
function renderHotkey(hotkey) {
let modifiersString = hotkey.modifiers.length !== 0
? getConvertedModifiers(sortModifiers(hotkey.modifiers)).join(' + ') + ' + '
: '';
let key = hotkey.key in SpecialSymbols
? SpecialSymbols[hotkey.key]
: hotkey.key.length === 1
? hotkey.key.toUpperCase()
: hotkey.key;
return modifiersString + key;
}
const dispatch = createEventDispatcher();
function sendPluginName(e) {
const clicked = e.target.innerHTML;
dispatch('plugin-name-clicked', clicked);
}
const click_handler = cmdEntry => {
dispatch('star-clicked', cmdEntry.id);
};
const click_handler_1 = hotkey => dispatch('duplicate-hotkey-clicked', hotkey);
$$self.$$set = $$props => {
if ('visibleCommands' in $$props) $$invalidate(0, visibleCommands = $$props.visibleCommands);
if ('settings' in $$props) $$invalidate(1, settings = $$props.settings);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*settings*/ 2) ;
};
return [
visibleCommands,
settings,
renderHotkey,
dispatch,
sendPluginName,
click_handler,
click_handler_1
];
}
class CommandsList extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$1, create_fragment$1, safe_not_equal, { visibleCommands: 0, settings: 1 });
}
}
/* src\Components\KeyboardComponent.svelte generated by Svelte v3.49.0 */
function create_fragment(ctx) {
let div2;
let div0;
let keyboardlayout;
let updating_KeyboardObject;
let updating_KeyboardStateDict;
let updating_visibleCommands;
let t0;
let div1;
let searchmenu;
let updating_inputHTML;
let updating_search;
let updating_searchCommandsCount;
let updating_searchHotkeysCount;
let updating_keyboardListenerIsActive;
let updating_FilterSettings;
let updating_plugin;
let t1;
let commandslist;
let updating_visibleCommands_1;
let updating_settings;
let div2_class_value;
let div2_resize_listener;
let current;
let mounted;
let dispose;
function keyboardlayout_KeyboardObject_binding(value) {
/*keyboardlayout_KeyboardObject_binding*/ ctx[25](value);
}
function keyboardlayout_KeyboardStateDict_binding(value) {
/*keyboardlayout_KeyboardStateDict_binding*/ ctx[26](value);
}
function keyboardlayout_visibleCommands_binding(value) {
/*keyboardlayout_visibleCommands_binding*/ ctx[27](value);
}
let keyboardlayout_props = {};
if (/*KeyboardObject*/ ctx[9] !== void 0) {
keyboardlayout_props.KeyboardObject = /*KeyboardObject*/ ctx[9];
}
if (/*KeyboardStateDict*/ ctx[10] !== void 0) {
keyboardlayout_props.KeyboardStateDict = /*KeyboardStateDict*/ ctx[10];
}
if (/*visibleCommands*/ ctx[4] !== void 0) {
keyboardlayout_props.visibleCommands = /*visibleCommands*/ ctx[4];
}
keyboardlayout = new KeyboardLayout({ props: keyboardlayout_props });
binding_callbacks.push(() => bind(keyboardlayout, 'KeyboardObject', keyboardlayout_KeyboardObject_binding));
binding_callbacks.push(() => bind(keyboardlayout, 'KeyboardStateDict', keyboardlayout_KeyboardStateDict_binding));
binding_callbacks.push(() => bind(keyboardlayout, 'visibleCommands', keyboardlayout_visibleCommands_binding));
function searchmenu_inputHTML_binding(value) {
/*searchmenu_inputHTML_binding*/ ctx[28](value);
}
function searchmenu_search_binding(value) {
/*searchmenu_search_binding*/ ctx[29](value);
}
function searchmenu_searchCommandsCount_binding(value) {
/*searchmenu_searchCommandsCount_binding*/ ctx[30](value);
}
function searchmenu_searchHotkeysCount_binding(value) {
/*searchmenu_searchHotkeysCount_binding*/ ctx[31](value);
}
function searchmenu_keyboardListenerIsActive_binding(value) {
/*searchmenu_keyboardListenerIsActive_binding*/ ctx[32](value);
}
function searchmenu_FilterSettings_binding(value) {
/*searchmenu_FilterSettings_binding*/ ctx[33](value);
}
function searchmenu_plugin_binding(value) {
/*searchmenu_plugin_binding*/ ctx[34](value);
}
let searchmenu_props = {};
if (/*input*/ ctx[7] !== void 0) {
searchmenu_props.inputHTML = /*input*/ ctx[7];
}
if (/*search*/ ctx[3] !== void 0) {
searchmenu_props.search = /*search*/ ctx[3];
}
if (/*searchCommandsCount*/ ctx[12] !== void 0) {
searchmenu_props.searchCommandsCount = /*searchCommandsCount*/ ctx[12];
}
if (/*searchHotkeysCount*/ ctx[11] !== void 0) {
searchmenu_props.searchHotkeysCount = /*searchHotkeysCount*/ ctx[11];
}
if (/*keyboardListenerIsActive*/ ctx[8] !== void 0) {
searchmenu_props.keyboardListenerIsActive = /*keyboardListenerIsActive*/ ctx[8];
}
if (/*settings*/ ctx[1].filterSettings !== void 0) {
searchmenu_props.FilterSettings = /*settings*/ ctx[1].filterSettings;
}
if (/*plugin*/ ctx[0] !== void 0) {
searchmenu_props.plugin = /*plugin*/ ctx[0];
}
searchmenu = new SearchMenu({ props: searchmenu_props });
binding_callbacks.push(() => bind(searchmenu, 'inputHTML', searchmenu_inputHTML_binding));
binding_callbacks.push(() => bind(searchmenu, 'search', searchmenu_search_binding));
binding_callbacks.push(() => bind(searchmenu, 'searchCommandsCount', searchmenu_searchCommandsCount_binding));
binding_callbacks.push(() => bind(searchmenu, 'searchHotkeysCount', searchmenu_searchHotkeysCount_binding));
binding_callbacks.push(() => bind(searchmenu, 'keyboardListenerIsActive', searchmenu_keyboardListenerIsActive_binding));
binding_callbacks.push(() => bind(searchmenu, 'FilterSettings', searchmenu_FilterSettings_binding));
binding_callbacks.push(() => bind(searchmenu, 'plugin', searchmenu_plugin_binding));
searchmenu.$on("featured-first-option-triggered", /*handleFeaturedFirstOptionClicked*/ ctx[15]);
searchmenu.$on("refresh-commands", /*handleRefreshClicked*/ ctx[18]);
function commandslist_visibleCommands_binding(value) {
/*commandslist_visibleCommands_binding*/ ctx[35](value);
}
function commandslist_settings_binding(value) {
/*commandslist_settings_binding*/ ctx[36](value);
}
let commandslist_props = {};
if (/*visibleCommands*/ ctx[4] !== void 0) {
commandslist_props.visibleCommands = /*visibleCommands*/ ctx[4];
}
if (/*settings*/ ctx[1] !== void 0) {
commandslist_props.settings = /*settings*/ ctx[1];
}
commandslist = new CommandsList({ props: commandslist_props });
binding_callbacks.push(() => bind(commandslist, 'visibleCommands', commandslist_visibleCommands_binding));
binding_callbacks.push(() => bind(commandslist, 'settings', commandslist_settings_binding));
commandslist.$on("star-clicked", /*handleStarIconClicked*/ ctx[17]);
commandslist.$on("duplicate-hotkey-clicked", /*handleDuplicateHotkeyClicked*/ ctx[16]);
commandslist.$on("plugin-name-clicked", /*handlePluginNameClicked*/ ctx[14]);
return {
c() {
div2 = element("div");
div0 = element("div");
create_component(keyboardlayout.$$.fragment);
t0 = space();
div1 = element("div");
create_component(searchmenu.$$.fragment);
t1 = space();
create_component(commandslist.$$.fragment);
attr(div0, "class", "");
attr(div0, "id", "keyboard-preview-view");
attr(div1, "class", "shortcuts-wrapper");
attr(div2, "id", "keyboard-component");
attr(div2, "class", div2_class_value = "" + (/*viewMode*/ ctx[6] + " " + (/*viewMode*/ ctx[6] === 'xs' ? 'is-mobile' : '')));
add_render_callback(() => /*div2_elementresize_handler*/ ctx[37].call(div2));
},
m(target, anchor) {
insert(target, div2, anchor);
append(div2, div0);
mount_component(keyboardlayout, div0, null);
append(div2, t0);
append(div2, div1);
mount_component(searchmenu, div1, null);
append(div1, t1);
mount_component(commandslist, div1, null);
div2_resize_listener = add_resize_listener(div2, /*div2_elementresize_handler*/ ctx[37].bind(div2));
current = true;
if (!mounted) {
dispose = [
action_destroyer(watchResize.call(null, div2, /*handleResize*/ ctx[19])),
listen(div2, "mouseenter", /*mouseenter_handler*/ ctx[38]),
listen(div2, "mouseleave", /*mouseleave_handler*/ ctx[39])
];
mounted = true;
}
},
p(ctx, dirty) {
const keyboardlayout_changes = {};
if (!updating_KeyboardObject && dirty[0] & /*KeyboardObject*/ 512) {
updating_KeyboardObject = true;
keyboardlayout_changes.KeyboardObject = /*KeyboardObject*/ ctx[9];
add_flush_callback(() => updating_KeyboardObject = false);
}
if (!updating_KeyboardStateDict && dirty[0] & /*KeyboardStateDict*/ 1024) {
updating_KeyboardStateDict = true;
keyboardlayout_changes.KeyboardStateDict = /*KeyboardStateDict*/ ctx[10];
add_flush_callback(() => updating_KeyboardStateDict = false);
}
if (!updating_visibleCommands && dirty[0] & /*visibleCommands*/ 16) {
updating_visibleCommands = true;
keyboardlayout_changes.visibleCommands = /*visibleCommands*/ ctx[4];
add_flush_callback(() => updating_visibleCommands = false);
}
keyboardlayout.$set(keyboardlayout_changes);
const searchmenu_changes = {};
if (!updating_inputHTML && dirty[0] & /*input*/ 128) {
updating_inputHTML = true;
searchmenu_changes.inputHTML = /*input*/ ctx[7];
add_flush_callback(() => updating_inputHTML = false);
}
if (!updating_search && dirty[0] & /*search*/ 8) {
updating_search = true;
searchmenu_changes.search = /*search*/ ctx[3];
add_flush_callback(() => updating_search = false);
}
if (!updating_searchCommandsCount && dirty[0] & /*searchCommandsCount*/ 4096) {
updating_searchCommandsCount = true;
searchmenu_changes.searchCommandsCount = /*searchCommandsCount*/ ctx[12];
add_flush_callback(() => updating_searchCommandsCount = false);
}
if (!updating_searchHotkeysCount && dirty[0] & /*searchHotkeysCount*/ 2048) {
updating_searchHotkeysCount = true;
searchmenu_changes.searchHotkeysCount = /*searchHotkeysCount*/ ctx[11];
add_flush_callback(() => updating_searchHotkeysCount = false);
}
if (!updating_keyboardListenerIsActive && dirty[0] & /*keyboardListenerIsActive*/ 256) {
updating_keyboardListenerIsActive = true;
searchmenu_changes.keyboardListenerIsActive = /*keyboardListenerIsActive*/ ctx[8];
add_flush_callback(() => updating_keyboardListenerIsActive = false);
}
if (!updating_FilterSettings && dirty[0] & /*settings*/ 2) {
updating_FilterSettings = true;
searchmenu_changes.FilterSettings = /*settings*/ ctx[1].filterSettings;
add_flush_callback(() => updating_FilterSettings = false);
}
if (!updating_plugin && dirty[0] & /*plugin*/ 1) {
updating_plugin = true;
searchmenu_changes.plugin = /*plugin*/ ctx[0];
add_flush_callback(() => updating_plugin = false);
}
searchmenu.$set(searchmenu_changes);
const commandslist_changes = {};
if (!updating_visibleCommands_1 && dirty[0] & /*visibleCommands*/ 16) {
updating_visibleCommands_1 = true;
commandslist_changes.visibleCommands = /*visibleCommands*/ ctx[4];
add_flush_callback(() => updating_visibleCommands_1 = false);
}
if (!updating_settings && dirty[0] & /*settings*/ 2) {
updating_settings = true;
commandslist_changes.settings = /*settings*/ ctx[1];
add_flush_callback(() => updating_settings = false);
}
commandslist.$set(commandslist_changes);
if (!current || dirty[0] & /*viewMode*/ 64 && div2_class_value !== (div2_class_value = "" + (/*viewMode*/ ctx[6] + " " + (/*viewMode*/ ctx[6] === 'xs' ? 'is-mobile' : '')))) {
attr(div2, "class", div2_class_value);
}
},
i(local) {
if (current) return;
transition_in(keyboardlayout.$$.fragment, local);
transition_in(searchmenu.$$.fragment, local);
transition_in(commandslist.$$.fragment, local);
current = true;
},
o(local) {
transition_out(keyboardlayout.$$.fragment, local);
transition_out(searchmenu.$$.fragment, local);
transition_out(commandslist.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div2);
destroy_component(keyboardlayout);
destroy_component(searchmenu);
destroy_component(commandslist);
div2_resize_listener();
mounted = false;
run_all(dispose);
}
};
}
// sort commands by featured commands first
function sortByFeaturedFirst(cmds, featured) {
let sortedCmds = [];
let featuredCmds = [];
let otherCmds = [];
// sort commands by name when type is name
(cmds.forEach(cmd => {
if (featured.includes(cmd.id)) {
featuredCmds.push(cmd);
} else {
otherCmds.push(cmd);
}
}), sortedCmds = featuredCmds.concat(otherCmds));
return sortedCmds;
}
// function to update amount of hotkeys for all commands
function updateCommandsCount(array) {
return array.length;
}
// function to count hotkeys for all commands
function countHotkeys(array) {
let hotkeysCount = 0;
for (let command of array) {
hotkeysCount += command.hotkeys.length;
}
return hotkeysCount;
}
function instance($$self, $$props, $$invalidate) {
let visibleCommands;
let searchCommandsCount;
let searchHotkeysCount;
let $activeKey;
let $activeModifiers;
component_subscribe($$self, activeKey, $$value => $$invalidate(23, $activeKey = $$value));
component_subscribe($$self, activeModifiers, $$value => $$invalidate(24, $activeModifiers = $$value));
let { app } = $$props;
let { plugin } = $$props;
let { settings } = $$props;
let { view } = $$props;
let viewWidth;
let viewMode = 'desktop';
// INITIALIZE SEARCH MENU
let search = '';
let input;
let keyboardListenerIsActive = false;
// Implements Cmd+F functionality for focus on input field
// thanks to @Fevol - https://discord.com/channels/686053708261228577/840286264964022302/1005131941240115221
const view_scope = new obsidian.Scope(app.scope);
view_scope.register(['Mod'], 'f', e => {
if (e.ctrlKey && e.key === 'f') {
if (input === document.activeElement && keyboardListenerIsActive === false) {
$$invalidate(8, keyboardListenerIsActive = true);
} else if (input === document.activeElement && keyboardListenerIsActive === true) {
$$invalidate(8, keyboardListenerIsActive = false);
} else {
input.focus();
}
return false;
}
});
let kbLayout_main = mainSectionQwerty;
let kbLayout_other = keyboardOther;
let kbLayout_num = keyboardNum;
let KeyboardObject = [kbLayout_main, kbLayout_other, kbLayout_num]; // kbLayout_num //Keyboard
let KeyboardStateDict;
// COMMANDS LIST
let commands = getHotkeysV2(app);
// 0. prepare commands array from commands object
let commandsArray = Object.keys(commands).map(key => commands[key]);
// 1. refresh commands array
function refreshCommandsList() {
$$invalidate(21, commands = getHotkeysV2(app));
$$invalidate(22, commandsArray = Object.keys(commands).map(key => commands[key]));
}
function triggerRenderCommands() {
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
// filter commands array by search string
function filterCommandsArray(cmds, search, activeSearchModifiers, activeSearchKey) {
refreshCommandsList();
let filteredCmds = [];
// function to filter commands by search string
function filterByName(command) {
let CommandName = command.pluginName.toLocaleLowerCase() + ' ' + command.cmdName.toLowerCase();
// get array of search words and search in fullName
let searchWords = search.toLocaleLowerCase().split(' ').filter(word => word.length > 0);
// return true if all search word are in fullName, hotkeys or key
return searchWords.every(word => {
return CommandName.includes(word) || command.hotkeys.some(hotkey => {
return hotkey.key.toLocaleLowerCase().includes(word) || getConvertedModifiers(hotkey.modifiers).some(modifier => modifier.toLocaleLowerCase().includes(word));
});
});
}
// filter commands by activeSearchModifiers
// if no activeSearchModifiers, filter by all commands
function filterByModifiers(command, activeModifiers, strictHotkeyChecker) {
if (strictHotkeyChecker === false) {
return command.hotkeys.some(hotkey => {
return activeModifiers.every(modifier => {
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
});
});
} else if (strictHotkeyChecker === true) {
command.hotkeys = command.hotkeys.filter(hotkey => {
if (hotkey.modifiers.length === activeModifiers.length && activeModifiers.every(modifier => {
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
})) {
return true;
}
});
return command.hotkeys.every(hotkey => {
return activeModifiers.every(modifier => {
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
});
});
}
}
// filter commands by activeSearchModifiers
function filterByKey(command) {
return command.hotkeys.some(hotkey => {
return hotkey.key.toLocaleLowerCase() === $activeKey.toLocaleLowerCase();
});
}
filteredCmds = cmds.filter(command => {
return filterByName(command) && (activeSearchModifiers.length === 0 || filterByModifiers(command, activeSearchModifiers, settings.filterSettings.StrictSearch)) && (activeSearchKey === '' || filterByKey(command));
}).sort((a, b) => {
return a.pluginName.localeCompare(b.pluginName);
}).filter(command => command.hotkeys.length > 0);
if (settings.filterSettings.FeaturedFirst) {
filteredCmds = sortByFeaturedFirst(filteredCmds, settings.featuredCommandIDs);
}
return filteredCmds;
}
// HANDLE COMPONENT EVENTS
// 1. if plugin name clicked inside commands list
function handlePluginNameClicked(event) {
let pluginName = event.detail;
if (search === '' || search === undefined) {
// scroll to input field
input.focus();
$$invalidate(3, search = pluginName);
} else if (search.startsWith(pluginName)) {
$$invalidate(3, search = search.replace(pluginName, ''));
} else {
$$invalidate(3, search = pluginName + search);
}
}
function handleFeaturedFirstOptionClicked(event) {
$$invalidate(1, settings.filterSettings.FeaturedFirst = !settings.filterSettings.FeaturedFirst, settings);
plugin.saveSettings();
triggerRenderCommands();
}
function handleDuplicateHotkeyClicked(event) {
let duplicativeHotkey = event.detail;
let duplicativeModifiers = getConvertedModifiers(duplicativeHotkey.modifiers);
let duplicativeKey = duplicativeHotkey.key;
// check if modifiers and key already active search then remove them
if ($activeModifiers.every(modifier => {
return duplicativeModifiers.includes(modifier);
}) && $activeKey.toLocaleLowerCase() === duplicativeKey.toLocaleLowerCase()) {
set_store_value(activeModifiers, $activeModifiers = [], $activeModifiers);
set_store_value(activeKey, $activeKey = '', $activeKey);
} else {
set_store_value(activeModifiers, $activeModifiers = duplicativeModifiers, $activeModifiers);
set_store_value(activeKey, $activeKey = duplicativeKey, $activeKey);
$$invalidate(3, search = '');
}
}
function handleStarIconClicked(event) {
let pluginName = event.detail;
if (settings.featuredCommandIDs.includes(pluginName)) {
$$invalidate(1, settings.featuredCommandIDs = settings.featuredCommandIDs.filter(id => id !== pluginName), settings);
plugin.saveSettings();
} else {
// add pluginName to settings.featuredCommandIDs
settings.featuredCommandIDs.push(pluginName);
$$invalidate(1, settings);
plugin.saveSettings();
}
triggerRenderCommands();
}
// 2. if refresh button is clicked
function handleRefreshClicked() {
refreshCommandsList();
}
// track resize and assign device classes to each width
function handleResize() {
if (viewWidth >= 1400) {
$$invalidate(6, viewMode = 'xxl');
} else if (viewWidth >= 1200 && viewWidth < 1400) {
$$invalidate(6, viewMode = 'xl');
} else if (viewWidth >= 992 && viewWidth < 1200) {
$$invalidate(6, viewMode = 'lg');
} else if (viewWidth >= 768 && viewWidth < 992) {
$$invalidate(6, viewMode = 'md');
} else if (viewWidth >= 576 && viewWidth < 768) {
$$invalidate(6, viewMode = 'sm');
} else if (viewWidth < 576) {
$$invalidate(6, viewMode = 'xs');
}
}
onMount(() => {
input.focus();
});
onDestroy(() => {
app.keymap.popScope(view_scope);
});
function keyboardlayout_KeyboardObject_binding(value) {
KeyboardObject = value;
$$invalidate(9, KeyboardObject);
}
function keyboardlayout_KeyboardStateDict_binding(value) {
KeyboardStateDict = value;
$$invalidate(10, KeyboardStateDict);
}
function keyboardlayout_visibleCommands_binding(value) {
visibleCommands = value;
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function searchmenu_inputHTML_binding(value) {
input = value;
$$invalidate(7, input);
}
function searchmenu_search_binding(value) {
search = value;
$$invalidate(3, search);
}
function searchmenu_searchCommandsCount_binding(value) {
searchCommandsCount = value;
((((($$invalidate(12, searchCommandsCount), $$invalidate(4, visibleCommands)), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function searchmenu_searchHotkeysCount_binding(value) {
searchHotkeysCount = value;
((((($$invalidate(11, searchHotkeysCount), $$invalidate(4, visibleCommands)), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function searchmenu_keyboardListenerIsActive_binding(value) {
keyboardListenerIsActive = value;
$$invalidate(8, keyboardListenerIsActive);
}
function searchmenu_FilterSettings_binding(value) {
if ($$self.$$.not_equal(settings.filterSettings, value)) {
settings.filterSettings = value;
$$invalidate(1, settings);
}
}
function searchmenu_plugin_binding(value) {
plugin = value;
$$invalidate(0, plugin);
}
function commandslist_visibleCommands_binding(value) {
visibleCommands = value;
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function commandslist_settings_binding(value) {
settings = value;
$$invalidate(1, settings);
}
function div2_elementresize_handler() {
viewWidth = this.offsetWidth;
$$invalidate(5, viewWidth);
}
const mouseenter_handler = () => {
app.keymap.pushScope(view_scope);
};
const mouseleave_handler = () => {
app.keymap.popScope(view_scope);
};
$$self.$$set = $$props => {
if ('app' in $$props) $$invalidate(2, app = $$props.app);
if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin);
if ('settings' in $$props) $$invalidate(1, settings = $$props.settings);
if ('view' in $$props) $$invalidate(20, view = $$props.view);
};
$$self.$$.update = () => {
if ($$self.$$.dirty[0] & /*commandsArray, search, $activeModifiers, $activeKey*/ 29360136) {
// REACTIVE PROPERTIES
$$invalidate(4, visibleCommands = filterCommandsArray(commandsArray, search, $activeModifiers, $activeKey));
}
if ($$self.$$.dirty[0] & /*visibleCommands*/ 16) {
// COUNTERS
$$invalidate(12, searchCommandsCount = updateCommandsCount(visibleCommands));
}
if ($$self.$$.dirty[0] & /*visibleCommands*/ 16) {
$$invalidate(11, searchHotkeysCount = countHotkeys(visibleCommands));
}
if ($$self.$$.dirty[0] & /*app, plugin, settings, view, commands*/ 3145735) ;
};
return [
plugin,
settings,
app,
search,
visibleCommands,
viewWidth,
viewMode,
input,
keyboardListenerIsActive,
KeyboardObject,
KeyboardStateDict,
searchHotkeysCount,
searchCommandsCount,
view_scope,
handlePluginNameClicked,
handleFeaturedFirstOptionClicked,
handleDuplicateHotkeyClicked,
handleStarIconClicked,
handleRefreshClicked,
handleResize,
view,
commands,
commandsArray,
$activeKey,
$activeModifiers,
keyboardlayout_KeyboardObject_binding,
keyboardlayout_KeyboardStateDict_binding,
keyboardlayout_visibleCommands_binding,
searchmenu_inputHTML_binding,
searchmenu_search_binding,
searchmenu_searchCommandsCount_binding,
searchmenu_searchHotkeysCount_binding,
searchmenu_keyboardListenerIsActive_binding,
searchmenu_FilterSettings_binding,
searchmenu_plugin_binding,
commandslist_visibleCommands_binding,
commandslist_settings_binding,
div2_elementresize_handler,
mouseenter_handler,
mouseleave_handler
];
}
class KeyboardComponent extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance, create_fragment, safe_not_equal, { app: 2, plugin: 0, settings: 1, view: 20 }, null, [-1, -1]);
}
}
class ShortcutsView extends obsidian.ItemView {
constructor(leaf, plugin) {
super(leaf);
this.navigation = true;
this.plugin = plugin;
}
onload() {
const _super = Object.create(null, {
onload: { get: () => super.onload }
});
return __awaiter(this, void 0, void 0, function* () {
_super.onload.call(this);
});
}
getViewType() {
return VIEW_TYPE_SHORTCUTS_ANALYZER;
}
getDisplayText() {
return 'Keyboard Shortcuts';
}
onOpen() {
return __awaiter(this, void 0, void 0, function* () {
yield this.draw();
});
}
onClose() {
return Promise.resolve();
}
draw() {
return __awaiter(this, void 0, void 0, function* () {
const { app, contentEl } = this;
const { settings } = this.plugin;
contentEl.empty();
contentEl.setAttribute(`id`, `KB-view`);
contentEl.style.padding = '0';
this.component = new KeyboardComponent({
target: contentEl,
props: {
app,
plugin: this.plugin,
settings,
view: this,
},
});
});
}
}
class KeyboardAnalizerPlugin extends obsidian.Plugin {
get full() {
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER);
const leaf = leaves.length ? leaves[0] : null;
if (leaf && leaf.view && leaf.view instanceof ShortcutsView)
return leaf.view;
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
yield this.loadSettings();
this.registerPluginHotkeys();
this.addStatusBarIndicator.apply(this);
this.registerView(VIEW_TYPE_SHORTCUTS_ANALYZER, (leaf) => new ShortcutsView(leaf, this));
// This adds a settings tab so the user can configure various aspects of the plugin
// this.addSettingTab(new KeyboardAnalyzerSettingTab(this.app, this))
});
}
onunload() {
return __awaiter(this, void 0, void 0, function* () {
this.app.workspace.detachLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER);
});
}
loadSettings() {
return __awaiter(this, void 0, void 0, function* () {
this.settings = Object.assign({}, DEFAULT_PLUGIN_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __awaiter(this, void 0, void 0, function* () {
yield this.saveData(this.settings);
});
}
addStatusBarIndicator() {
// This adds a status bar item to the bottom of the app. Does not work on mobile apps.
const statusBarIcon = this.addStatusBarItem();
statusBarIcon.addClass('mod-clickable');
statusBarIcon.setAttribute('aria-label', 'Keyboard Shortcuts');
statusBarIcon.style.order = '10';
// create the status bar icon
const icon = statusBarIcon.createSpan('icon');
// register click handler
obsidian.setIcon(icon, 'keyboard-glyph'); // inject svg icon
icon.addEventListener('click', (evt) => this.onStatusBarClick(evt));
// TODO update view on click
// TODO update view when commands added or hotkeys changed
}
onStatusBarClick(evt) {
return __awaiter(this, void 0, void 0, function* () {
if (evt.ctrlKey == true) {
this.addShortcutsView(true);
}
else {
this.addShortcutsView();
}
});
}
addShortcutsView(newLeaf = false) {
return __awaiter(this, void 0, void 0, function* () {
let checkResult = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER)
.length === 0;
if (checkResult) {
if (newLeaf) {
this.app.workspace
.getLeaf(true)
.setViewState({ type: VIEW_TYPE_SHORTCUTS_ANALYZER });
}
else {
this.app.workspace
.getLeaf()
.setViewState({ type: VIEW_TYPE_SHORTCUTS_ANALYZER });
}
}
});
}
registerPluginHotkeys() {
this.addCommand({
id: 'show-shortcuts-analyzer-view',
name: 'Open keyboard shortcuts view',
checkCallback: (checking) => {
let checkResult = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER)
.length === 0;
if (checkResult) {
// Only perform work when checking is false
if (!checking) {
this.addShortcutsView();
// openView(this.app, VIEW_TYPE_SHORTCUTS_ANALYZER, ShortcutsView)
}
return true;
}
},
});
}
}
// class KeyboardAnalyzerSettingTab extends PluginSettingTab {
// plugin: KeyboardAnalizerPlugin
// constructor(app: App, plugin: KeyboardAnalizerPlugin) {
// super(app, plugin)
// this.plugin = plugin
// }
// display(): void {
// const { containerEl } = this
// containerEl.empty()
// containerEl.createEl('h2', { text: 'Settings for my awesome plugin.' })
// // checkbox for showing status bar item
// new Setting(containerEl)
// .setName('Show Status Bar Item')
// .setDesc('Show the status bar item')
// .addToggle((checkbox: any) =>
// checkbox
// .setChecked(this.plugin.settings.showStatusBarItem)
// .onChange(async (value: boolean) => {
// this.plugin.settings.showStatusBarItem = value
// await this.plugin.saveSettings()
// })
// )
// }
// }
module.exports = KeyboardAnalizerPlugin;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3QvZmVhdGhlci5qcyIsInNyYy9Db25zdGFudHMudHMiLCJub2RlX21vZHVsZXMvc3ZlbHRlL2ludGVybmFsL2luZGV4Lm1qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvY29sbGVjdGlvbi11dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvZWxlbWVudC11dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvbGlzdGVuZXItaGFuZGxlci5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvaWQtZ2VuZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1oYW5kbGVyLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9yZXBvcnRlci5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvYnJvd3Nlci1kZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9iYXRjaC1wcm9jZXNzb3Ivc3JjL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2JhdGNoLXByb2Nlc3Nvci9zcmMvYmF0Y2gtcHJvY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9zdGF0ZS1oYW5kbGVyLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvc2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUtd2F0Y2gtcmVzaXplL2xpYi9pbmRleC5lcy5qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUvc3RvcmUvaW5kZXgubWpzIiwic3JjL0FwcFNob3J0Y3V0cy50cyIsInNyYy9Db21wb25lbnRzL2FjdGl2ZUtleXNTdG9yZS5qcyIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2RlZmF1bHRBdHRyaWJ1dGVzLmpzIiwibm9kZV9tb2R1bGVzL2x1Y2lkZS1zdmVsdGUvZGlzdC9lc20vSWNvbi5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtZG90LnN2ZWx0ZSIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2ljb25zL2NvZmZlZS5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9maWx0ZXIuc3ZlbHRlIiwibm9kZV9tb2R1bGVzL2x1Y2lkZS1zdmVsdGUvZGlzdC9lc20vaWNvbnMvcmVmcmVzaC1jdy5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9zdGFyLnN2ZWx0ZSIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2ljb25zL3guc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvS2V5Ym9hcmRLZXkuc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvS2V5Ym9hcmRMYXlvdXQuc3ZlbHRlIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9lYXNpbmcvaW5kZXgubWpzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS90cmFuc2l0aW9uL2luZGV4Lm1qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUtdXNlLWNsaWNrLW91dHNpZGUvZGlzdC9pbmRleC5qcyIsInNyYy9Db21wb25lbnRzL2xvbmdwcmVzcy5qcyIsInNyYy9Db21wb25lbnRzL1NlYXJjaE1lbnUuc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvQ29tbWFuZHNMaXN0LnN2ZWx0ZSIsInNyYy9Db21wb25lbnRzL0tleWJvYXJkQ29tcG9uZW50LnN2ZWx0ZSIsInNyYy9TaG9ydGN1dHNWaWV3LnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInRoaXMiLCJ1dGlscyIsImZvckVhY2giLCJyZXF1aXJlJCQwIiwiaWRIYW5kbGVyIiwiaWRHZW5lcmF0b3IiLCJpZEdlbmVyYXRvck1ha2VyIiwiaWRIYW5kbGVyTWFrZXIiLCJyZXBvcnRlciIsInJlcG9ydGVyTWFrZXIiLCJiYXRjaFByb2Nlc3NvciIsImJhdGNoUHJvY2Vzc29yTWFrZXIiLCJsaXN0ZW5lckhhbmRsZXJNYWtlciIsImVsZW1lbnRVdGlscyIsImVsZW1lbnRVdGlsc01ha2VyIiwic2Nyb2xsU3RyYXRlZ3lNYWtlciIsIm9iamVjdFN0cmF0ZWd5TWFrZXIiLCJlbGVtZW50UmVzaXplRGV0ZWN0b3JNYWtlciIsIlBsYXRmb3JtIiwiY3JlYXRlX2lmX2Jsb2NrIiwibGluZWFyIiwiY3JlYXRlX2lmX2Jsb2NrXzEiLCJTY29wZSIsIkl0ZW1WaWV3IiwiUGx1Z2luIiwic2V0SWNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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QyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8s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S0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWCxRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsUUFBUTtBQUNiLFFBQUEsSUFBSSxFQUFFLFNBQVM7QUFDZixRQUFBLE9BQU8sRUFBRSxLQUFLO0FBQ2YsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsUUFBUTtBQUNiLFFBQUEsSUFBSSxFQUFFLGVBQWU7QUFDckIsUUFBQSxPQUFPLEVBQUUsS0FBSztBQUNmLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFFRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2YsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTs7Ozs7QUFLRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxVQUFVO0FBQ2pCLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLGFBQWE7QUFDbEIsUUFBQSxJQUFJLEVBQUUsYUFBYTtBQUNwQixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZUFBZTtBQUN0QixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3ZCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxlQUFlO0FBQ3RCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxTQUFTO0FBQ2QsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2pCLFFBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbEIsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxhQUFhO0FBQ3BCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLENBQUksRUFBQSxDQUFBO0FBQ1QsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsT0FBTztBQUNkLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLGNBQWM7QUFDckIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE9BQU87QUFDZCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxpQkFBaUI7QUFDdEIsUUFBQSxJQUFJLEVBQUUsaUJBQWlCO0FBQ3hCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLGdCQUFnQjtBQUNyQixRQUFBLElBQUksRUFBRSxnQkFBZ0I7QUFDdkIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsb0JBQW9CO0FBQ3pCLFFBQUEsSUFBSSxFQUFFLG9CQUFvQjtBQUMzQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxnQkFBZ0I7QUFDckIsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3ZCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLFlBQVk7QUFDakIsUUFBQSxJQUFJLEVBQUUsWUFBWTtBQUNsQixRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsaUJBQWlCO0FBQ3RCLFFBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbkIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsaUJBQWlCO0FBQ3RCLFFBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbkIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsZUFBZTtBQUNwQixRQUFBLElBQUksRUFBRSxVQUFVO0FBQ2pCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE9BQU87QUFDZCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsT0FBTztBQUNkLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2YsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE9BQU87QUFDZCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsUUFBUTtBQUNmLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxhQUFhO0FBQ3BCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxhQUFhO0FBQ3BCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsTUFBTTtBQUNYLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDWixRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsVUFBVTtBQUNmLFFBQUEsSUFBSSxFQUFFLFVBQVU7QUFDaEIsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxlQUFlO0FBQ3RCLEtBQUE7Q0FDRjs7QUM3cENELFNBQVMsSUFBSSxHQUFHLEdBQUc7QUFDbkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzFCO0FBQ0EsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUc7QUFDdkIsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBU0QsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFO0FBQ2pCLElBQUksT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNoQixDQUFDO0FBQ0QsU0FBUyxZQUFZLEdBQUc7QUFDeEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUNELFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUN0QixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUM1QixJQUFJLE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO0FBQ3ZDLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzlCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEtBQUssT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7QUFDbEcsQ0FBQztBQVlELFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRTtBQUN2QixJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFNRCxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxTQUFTLEVBQUU7QUFDeEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFDdkIsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLO0FBQ0wsSUFBSSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDaEQsSUFBSSxPQUFPLEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ2pFLENBQUM7QUFNRCxTQUFTLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0FBQ3pELElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0FBQ25ELElBQUksSUFBSSxVQUFVLEVBQUU7QUFDcEIsUUFBUSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4RSxRQUFRLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7QUFDeEQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO0FBQzlCLFVBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELFVBQVUsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDO0FBQ0QsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDMUQsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ3pDLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDdEMsWUFBWSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDOUIsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwRSxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3QyxnQkFBZ0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELGFBQWE7QUFDYixZQUFZLE9BQU8sTUFBTSxDQUFDO0FBQzFCLFNBQVM7QUFDVCxRQUFRLE9BQU8sT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDcEMsS0FBSztBQUNMLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3pCLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUU7QUFDbEcsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixRQUFRLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDbEcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsQ0FBQztBQUtELFNBQVMsd0JBQXdCLENBQUMsT0FBTyxFQUFFO0FBQzNDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7QUFDakMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDL0MsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFCLFNBQVM7QUFDVCxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsU0FBUyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUs7QUFDekIsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHO0FBQ3hCLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDekMsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUs7QUFDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztBQUN4QyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBaUJELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtBQUM5QixJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3RDLENBQUM7QUFDRCxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUM1QyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckIsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLGFBQWEsRUFBRTtBQUN6QyxJQUFJLE9BQU8sYUFBYSxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDOUYsQ0FBQztBQUNEO0FBQ0EsTUFBTSxTQUFTLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDO0FBQ2hELElBQUksR0FBRyxHQUFHLFNBQVM7QUFDbkIsTUFBTSxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQ3BDLE1BQU0sTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkIsSUFBSSxHQUFHLEdBQUcsU0FBUyxHQUFHLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFRN0Q7QUFDQSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRTtBQUN4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO0FBQzFCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDMUIsWUFBWSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLFlBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3JCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDeEIsUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQU9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3hCLElBQUksSUFBSSxJQUFJLENBQUM7QUFDYixJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ3hCLFFBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksT0FBTztBQUNYLFFBQVEsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSTtBQUN4QyxZQUFZLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMxRCxTQUFTLENBQUM7QUFDVixRQUFRLEtBQUssR0FBRztBQUNoQixZQUFZLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOLENBQUM7QUF1R0QsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUM5QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFO0FBQ3ZELElBQUksTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUU7QUFDMUQsUUFBUSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQztBQUNsQyxRQUFRLEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBQ25DLFFBQVEsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkQsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLElBQUksRUFBRTtBQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJO0FBQ2IsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QixJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDNUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQzNCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQzlCLENBQUM7QUFDRCxTQUFTLHVCQUF1QixDQUFDLElBQUksRUFBRTtBQUN2QyxJQUFJLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQyxJQUFJLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQy9ELElBQUksT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO0FBQy9CLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDeEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQXlCRCxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUN0QyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBU0QsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7QUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELFFBQVEsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRTtBQUN2QixJQUFJLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBZ0JELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUMzQixJQUFJLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BCLElBQUksT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFDRCxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDL0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxJQUFJLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBNkJELFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO0FBQ3RDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSTtBQUNyQixRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSztBQUNuRCxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFzQkQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO0FBQzlDLElBQUksS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0wsQ0FBQztBQWlDRCxTQUFTLFFBQVEsQ0FBQyxPQUFPLEVBQUU7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUF1SEQsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7QUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixDQUFDO0FBQ0QsU0FBUyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN2QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQzdDLENBQUM7QUFTRCxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDaEQsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDeEIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLEtBQUs7QUFDTCxDQUFDO0FBd0JEO0FBQ0E7QUFDQSxJQUFJLFdBQVcsQ0FBQztBQUNoQixTQUFTLGNBQWMsR0FBRztBQUMxQixJQUFJLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtBQUNuQyxRQUFRLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDNUIsUUFBUSxJQUFJO0FBQ1osWUFBWSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQ2hFLGdCQUFnQixLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQzVDLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRTtBQUN0QixZQUFZLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDL0IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUM7QUFDRCxTQUFTLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDdkMsSUFBSSxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksY0FBYyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDOUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDekMsS0FBSztBQUNMLElBQUksTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0ZBQWtGO0FBQ25ILFFBQVEsNkVBQTZFLENBQUMsQ0FBQztBQUN2RixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QixJQUFJLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ3pDLElBQUksSUFBSSxXQUFXLENBQUM7QUFDcEIsSUFBSSxJQUFJLFdBQVcsRUFBRTtBQUNyQixRQUFRLE1BQU0sQ0FBQyxHQUFHLEdBQUcsZ0ZBQWdGLENBQUM7QUFDdEcsUUFBUSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEtBQUs7QUFDM0QsWUFBWSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLGFBQWE7QUFDckQsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO0FBQ3JCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLFNBQVM7QUFDVCxRQUFRLE1BQU0sQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDO0FBQ25DLFFBQVEsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNO0FBQzlCLFlBQVksV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyRSxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pCLElBQUksT0FBTyxNQUFNO0FBQ2pCLFFBQVEsSUFBSSxXQUFXLEVBQUU7QUFDekIsWUFBWSxXQUFXLEVBQUUsQ0FBQztBQUMxQixTQUFTO0FBQ1QsYUFBYSxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO0FBQ3RELFlBQVksV0FBVyxFQUFFLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQztBQUNOLENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUM3QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBQ0QsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNsRixJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbEQsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pELElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDO0FBNEVEO0FBQ0E7QUFDQTtBQUNBLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2Y7QUFDQSxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDbkIsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLElBQUksT0FBTyxDQUFDLEVBQUU7QUFDZCxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsU0FBUyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzdDLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFFLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUU7QUFDckUsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQzFCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3ZDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsUUFBUSxTQUFTLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksR0FBRyxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsSUFBSSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RCLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQixRQUFRLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEYsS0FBSztBQUNMLElBQUksTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO0FBQ2pELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEgsSUFBSSxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ2hCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDakMsSUFBSSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsSUFBSSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDckMsVUFBVSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3hDLFVBQVUsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pELEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2xELElBQUksSUFBSSxPQUFPLEVBQUU7QUFDakIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9DLFFBQVEsTUFBTSxJQUFJLE9BQU8sQ0FBQztBQUMxQixRQUFRLElBQUksQ0FBQyxNQUFNO0FBQ25CLFlBQVksV0FBVyxFQUFFLENBQUM7QUFDMUIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLFdBQVcsR0FBRztBQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNO0FBQ2QsUUFBUSxJQUFJLE1BQU07QUFDbEIsWUFBWSxPQUFPO0FBQ25CLFFBQVEsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7QUFDdkMsWUFBWSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3hDLFlBQVksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDL0MsWUFBWSxPQUFPLENBQUMsRUFBRTtBQUN0QixnQkFBZ0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBc0VEO0FBQ0EsSUFBSSxpQkFBaUIsQ0FBQztBQUN0QixTQUFTLHFCQUFxQixDQUFDLFNBQVMsRUFBRTtBQUMxQyxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsR0FBRztBQUNqQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7QUFDMUIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDNUUsSUFBSSxPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUM7QUFJRCxTQUFTLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDckIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFJRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLEVBQUU7QUFDdkIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFDRCxTQUFTLHFCQUFxQixHQUFHO0FBQ2pDLElBQUksTUFBTSxTQUFTLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztBQUM5QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztBQUMxRCxRQUFRLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFFBQVEsSUFBSSxTQUFTLEVBQUU7QUFDdkI7QUFDQTtBQUNBLFlBQVksTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLFlBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDNUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQzNDLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLENBQUM7QUF3QkQ7QUFDQSxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUU1QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0MsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFDN0IsU0FBUyxlQUFlLEdBQUc7QUFDM0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDM0IsUUFBUSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsUUFBUSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsS0FBSztBQUNMLENBQUM7QUFLRCxTQUFTLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtBQUNqQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0QsU0FBUyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNqQixTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLElBQUksR0FBRztBQUNQO0FBQ0E7QUFDQSxRQUFRLE9BQU8sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtBQUNuRCxZQUFZLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELFlBQVksUUFBUSxFQUFFLENBQUM7QUFDdkIsWUFBWSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNULFFBQVEscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLE9BQU8saUJBQWlCLENBQUMsTUFBTTtBQUN2QyxZQUFZLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDN0QsWUFBWSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxZQUFZLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQy9DO0FBQ0EsZ0JBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsZ0JBQWdCLFFBQVEsRUFBRSxDQUFDO0FBQzNCLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLEtBQUssUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7QUFDdEMsSUFBSSxPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDbkMsUUFBUSxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNoQyxLQUFLO0FBQ0wsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFDN0IsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsSUFBSSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFO0FBQ3BCLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbEMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3JELEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxJQUFJLE9BQU8sQ0FBQztBQUNaLFNBQVMsSUFBSSxHQUFHO0FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNsQixRQUFRLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDcEMsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDM0IsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUNELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxNQUFNLENBQUM7QUFDWCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLE1BQU0sR0FBRztBQUNiLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixRQUFRLENBQUMsRUFBRSxFQUFFO0FBQ2IsUUFBUSxDQUFDLEVBQUUsTUFBTTtBQUNqQixLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUyxZQUFZLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsS0FBSztBQUNMLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDckMsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDeEQsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMvQixZQUFZLE9BQU87QUFDbkIsUUFBUSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUM1QixZQUFZLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsWUFBWSxJQUFJLFFBQVEsRUFBRTtBQUMxQixnQkFBZ0IsSUFBSSxNQUFNO0FBQzFCLG9CQUFvQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLGdCQUFnQixRQUFRLEVBQUUsQ0FBQztBQUMzQixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLFNBQVMsSUFBSSxRQUFRLEVBQUU7QUFDdkIsUUFBUSxRQUFRLEVBQUUsQ0FBQztBQUNuQixLQUFLO0FBQ0wsQ0FBQztBQUNELE1BQU0sZUFBZSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3hDLFNBQVMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7QUFDaEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLElBQUksSUFBSSxjQUFjLENBQUM7QUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQztBQUNiLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLElBQUksU0FBUyxPQUFPLEdBQUc7QUFDdkIsUUFBUSxJQUFJLGNBQWM7QUFDMUIsWUFBWSxXQUFXLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLEtBQUs7QUFDTCxJQUFJLFNBQVMsRUFBRSxHQUFHO0FBQ2xCLFFBQVEsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxJQUFJLGVBQWUsQ0FBQztBQUM3RyxRQUFRLElBQUksR0FBRztBQUNmLFlBQVksY0FBYyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMxRixRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkIsUUFBUSxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDekMsUUFBUSxNQUFNLFFBQVEsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDO0FBQy9DLFFBQVEsSUFBSSxJQUFJO0FBQ2hCLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pCLFFBQVEsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFRLG1CQUFtQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqRSxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJO0FBQzNCLFlBQVksSUFBSSxPQUFPLEVBQUU7QUFDekIsZ0JBQWdCLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRTtBQUNyQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixvQkFBb0IsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEQsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBQzlCLG9CQUFvQixPQUFPLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDM0MsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUU7QUFDdkMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLElBQUksUUFBUSxDQUFDLENBQUM7QUFDcEUsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLE9BQU8sQ0FBQztBQUMzQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUN4QixJQUFJLE9BQU87QUFDWCxRQUFRLEtBQUssR0FBRztBQUNoQixZQUFZLElBQUksT0FBTztBQUN2QixnQkFBZ0IsT0FBTztBQUN2QixZQUFZLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDM0IsWUFBWSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNyQyxnQkFBZ0IsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2xDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsRUFBRSxFQUFFLENBQUM7QUFDckIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLFVBQVUsR0FBRztBQUNyQixZQUFZLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDNUIsU0FBUztBQUNULFFBQVEsR0FBRyxHQUFHO0FBQ2QsWUFBWSxJQUFJLE9BQU8sRUFBRTtBQUN6QixnQkFBZ0IsT0FBTyxFQUFFLENBQUM7QUFDMUIsZ0JBQWdCLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDaEMsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRTtBQUNqRCxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDdkIsSUFBSSxJQUFJLGNBQWMsQ0FBQztBQUN2QixJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUN6QixJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLElBQUksU0FBUyxFQUFFLEdBQUc7QUFDbEIsUUFBUSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDO0FBQzdHLFFBQVEsSUFBSSxHQUFHO0FBQ2YsWUFBWSxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25GLFFBQVEsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3pDLFFBQVEsTUFBTSxRQUFRLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQztBQUMvQyxRQUFRLG1CQUFtQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsRSxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUk7QUFDcEIsWUFBWSxJQUFJLE9BQU8sRUFBRTtBQUN6QixnQkFBZ0IsSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFO0FBQ3JDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLG9CQUFvQixRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRCxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQztBQUNBO0FBQ0Esd0JBQXdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMscUJBQXFCO0FBQ3JCLG9CQUFvQixPQUFPLEtBQUssQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRTtBQUN2QyxvQkFBb0IsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQztBQUNwRSxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sT0FBTyxDQUFDO0FBQzNCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDN0IsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUMxQjtBQUNBLFlBQVksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQzlCLFlBQVksRUFBRSxFQUFFLENBQUM7QUFDakIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDYixLQUFLO0FBQ0wsSUFBSSxPQUFPO0FBQ1gsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFO0FBQ25CLFlBQVksSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtBQUN0QyxnQkFBZ0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsYUFBYTtBQUNiLFlBQVksSUFBSSxPQUFPLEVBQUU7QUFDekIsZ0JBQWdCLElBQUksY0FBYztBQUNsQyxvQkFBb0IsV0FBVyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN0RCxnQkFBZ0IsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOLENBQUM7QUFDRCxTQUFTLCtCQUErQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUNsRSxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixJQUFJLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztBQUMvQixJQUFJLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztBQUMvQixJQUFJLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztBQUM5QixJQUFJLFNBQVMsZUFBZSxHQUFHO0FBQy9CLFFBQVEsSUFBSSxjQUFjO0FBQzFCLFlBQVksV0FBVyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUM5QyxLQUFLO0FBQ0wsSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQ3JDLFFBQVEsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFRLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsT0FBTztBQUNmLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsWUFBWSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEIsWUFBWSxDQUFDO0FBQ2IsWUFBWSxRQUFRO0FBQ3BCLFlBQVksS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0FBQ2hDLFlBQVksR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUTtBQUN6QyxZQUFZLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztBQUNoQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDbkIsUUFBUSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDO0FBQzdHLFFBQVEsTUFBTSxPQUFPLEdBQUc7QUFDeEIsWUFBWSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSztBQUNoQyxZQUFZLENBQUM7QUFDYixTQUFTLENBQUM7QUFDVixRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDaEI7QUFDQSxZQUFZLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ25DLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsSUFBSSxlQUFlLElBQUksZUFBZSxFQUFFO0FBQ2hELFlBQVksZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUN0QyxTQUFTO0FBQ1QsYUFBYTtBQUNiO0FBQ0E7QUFDQSxZQUFZLElBQUksR0FBRyxFQUFFO0FBQ3JCLGdCQUFnQixlQUFlLEVBQUUsQ0FBQztBQUNsQyxnQkFBZ0IsY0FBYyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RixhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUM7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0IsWUFBWSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RCxZQUFZLG1CQUFtQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLElBQUk7QUFDeEIsZ0JBQWdCLElBQUksZUFBZSxJQUFJLEdBQUcsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFO0FBQ3BFLG9CQUFvQixlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RSxvQkFBb0IsZUFBZSxHQUFHLElBQUksQ0FBQztBQUMzQyxvQkFBb0IsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9ELG9CQUFvQixJQUFJLEdBQUcsRUFBRTtBQUM3Qix3QkFBd0IsZUFBZSxFQUFFLENBQUM7QUFDMUMsd0JBQXdCLGNBQWMsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEkscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxlQUFlLEVBQUU7QUFDckMsb0JBQW9CLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUU7QUFDcEQsd0JBQXdCLElBQUksQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0Qsd0JBQXdCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRSx3QkFBd0IsSUFBSSxDQUFDLGVBQWUsRUFBRTtBQUM5QztBQUNBLDRCQUE0QixJQUFJLGVBQWUsQ0FBQyxDQUFDLEVBQUU7QUFDbkQ7QUFDQSxnQ0FBZ0MsZUFBZSxFQUFFLENBQUM7QUFDbEQsNkJBQTZCO0FBQzdCLGlDQUFpQztBQUNqQztBQUNBLGdDQUFnQyxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUQsb0NBQW9DLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFDekIsd0JBQXdCLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDL0MscUJBQXFCO0FBQ3JCLHlCQUF5QixJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFO0FBQzNELHdCQUF3QixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztBQUM5RCx3QkFBd0IsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6Ryx3QkFBd0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixnQkFBZ0IsT0FBTyxDQUFDLEVBQUUsZUFBZSxJQUFJLGVBQWUsQ0FBQyxDQUFDO0FBQzlELGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU87QUFDWCxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDZixZQUFZLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3JDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUNsQztBQUNBLG9CQUFvQixNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDdEMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUI7QUFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsR0FBRyxHQUFHO0FBQ2QsWUFBWSxlQUFlLEVBQUUsQ0FBQztBQUM5QixZQUFZLGVBQWUsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQ3JELFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixDQUFDO0FBOEZELFNBQVMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNoRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNO0FBQ3RDLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBU0QsU0FBUyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3hJLElBQUksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUM5QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLE9BQU8sQ0FBQyxFQUFFO0FBQ2QsUUFBUSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxJQUFJLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUMxQixJQUFJLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDakMsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNWLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNoQixRQUFRLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEIsWUFBWSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxhQUFhLElBQUksT0FBTyxFQUFFO0FBQzFCLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsU0FBUztBQUNULFFBQVEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ25ELFFBQVEsSUFBSSxHQUFHLElBQUksV0FBVztBQUM5QixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsS0FBSztBQUNMLElBQUksTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7QUFDM0IsUUFBUSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUIsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUMzQixRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ1osS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25CLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFRLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3RDLFFBQVEsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUN0QyxRQUFRLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtBQUNyQztBQUNBLFlBQVksSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDbkMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzNDO0FBQ0EsWUFBWSxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZDLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsU0FBUztBQUNULGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqRSxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QixTQUFTO0FBQ1QsYUFBYSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDeEMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsYUFBYSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1RCxZQUFZLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsWUFBWSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNoQixRQUFRLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDMUMsWUFBWSxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQztBQUNaLFFBQVEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFXRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUM1QyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN0QixJQUFJLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLE1BQU0sYUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3pDLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDaEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsUUFBUSxJQUFJLENBQUMsRUFBRTtBQUNmLFlBQVksS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDakMsZ0JBQWdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQy9CLG9CQUFvQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLGFBQWE7QUFDYixZQUFZLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ2pDLGdCQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3pDLG9CQUFvQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLG9CQUFvQixhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRTtBQUNqQyxnQkFBZ0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUM7QUFDNUIsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLFlBQVksRUFBRTtBQUN6QyxJQUFJLE9BQU8sT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksS0FBSyxJQUFJLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN6RixDQUFDO0FBZ05EO0FBQ0EsU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDekMsSUFBSSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUM3QixRQUFRLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxRQUFRLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7QUFDakMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFJRCxTQUFTLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUU7QUFDbkUsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUMxRSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7QUFDeEI7QUFDQSxRQUFRLG1CQUFtQixDQUFDLE1BQU07QUFDbEMsWUFBWSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RSxZQUFZLElBQUksVUFBVSxFQUFFO0FBQzVCLGdCQUFnQixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7QUFDbkQsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN4QyxhQUFhO0FBQ2IsWUFBWSxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDdkMsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUNqRCxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDNUIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQzlCLFFBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvQixRQUFRLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEQ7QUFDQTtBQUNBLFFBQVEsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMzQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRTtBQUNsQyxJQUFJLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDdEMsUUFBUSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekMsUUFBUSxlQUFlLEVBQUUsQ0FBQztBQUMxQixRQUFRLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0wsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFDRCxTQUFTLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1RyxJQUFJLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7QUFDL0MsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQyxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLEdBQUc7QUFDOUIsUUFBUSxRQUFRLEVBQUUsSUFBSTtBQUN0QixRQUFRLEdBQUcsRUFBRSxJQUFJO0FBQ2pCO0FBQ0EsUUFBUSxLQUFLO0FBQ2IsUUFBUSxNQUFNLEVBQUUsSUFBSTtBQUNwQixRQUFRLFNBQVM7QUFDakIsUUFBUSxLQUFLLEVBQUUsWUFBWSxFQUFFO0FBQzdCO0FBQ0EsUUFBUSxRQUFRLEVBQUUsRUFBRTtBQUNwQixRQUFRLFVBQVUsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsYUFBYSxFQUFFLEVBQUU7QUFDekIsUUFBUSxhQUFhLEVBQUUsRUFBRTtBQUN6QixRQUFRLFlBQVksRUFBRSxFQUFFO0FBQ3hCLFFBQVEsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRztBQUNBLFFBQVEsU0FBUyxFQUFFLFlBQVksRUFBRTtBQUNqQyxRQUFRLEtBQUs7QUFDYixRQUFRLFVBQVUsRUFBRSxLQUFLO0FBQ3pCLFFBQVEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDeEQsS0FBSyxDQUFDO0FBQ04sSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN0QixJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsUUFBUTtBQUNyQixVQUFVLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxLQUFLO0FBQ3hFLFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3RELFlBQVksSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUU7QUFDbkUsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pELG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLGdCQUFnQixJQUFJLEtBQUs7QUFDekIsb0JBQW9CLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLENBQUM7QUFDdkIsU0FBUyxDQUFDO0FBQ1YsVUFBVSxFQUFFLENBQUM7QUFDYixJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNoQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxFQUFFLENBQUMsUUFBUSxHQUFHLGVBQWUsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNwRSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUN4QixRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUU3QixZQUFZLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkQ7QUFDQSxZQUFZLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQsWUFBWSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLFNBQVM7QUFDVCxhQUFhO0FBQ2I7QUFDQSxZQUFZLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzQyxTQUFTO0FBQ1QsUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLO0FBQ3pCLFlBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakQsUUFBUSxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFMUYsUUFBUSxLQUFLLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0wsSUFBSSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUE4Q0Q7QUFDQTtBQUNBO0FBQ0EsTUFBTSxlQUFlLENBQUM7QUFDdEIsSUFBSSxRQUFRLEdBQUc7QUFDZixRQUFRLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzdCLEtBQUs7QUFDTCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ3hCLFFBQVEsTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RixRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsUUFBUSxPQUFPLE1BQU07QUFDckIsWUFBWSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RELFlBQVksSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQzVCLGdCQUFnQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2xCLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzlDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QyxTQUFTO0FBQ1QsS0FBSztBQUNMOzs7QUMxOERBO0FBQ0EsSUFBSSxLQUFLLEdBQUcsTUFBaUIsQ0FBQSxPQUFBLEdBQUEsRUFBRSxDQUFDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLENBQUMsT0FBTyxHQUFHLFNBQVMsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUMvQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9DLFFBQVEsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsR0FBRyxNQUFNLEVBQUU7QUFDbkIsWUFBWSxPQUFPLE1BQU0sQ0FBQztBQUMxQixTQUFTO0FBQ1QsS0FBSztBQUNMLENBQUMsQ0FBQTs7O0FDaEJELElBQWMsWUFBQSxHQUFHLFNBQVMsT0FBTyxFQUFFO0FBQ25DLElBQUksSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUNuQyxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxRQUFRLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0FBQzdDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0FBQ3ZDLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDN0IsUUFBUSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNyQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN4QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLFlBQVksRUFBRSxZQUFZO0FBQ2xDLFFBQVEsZ0JBQWdCLEVBQUUsZ0JBQWdCO0FBQzFDLFFBQVEsTUFBTSxFQUFFLE1BQU07QUFDdEIsUUFBUSxRQUFRLEVBQUUsUUFBUTtBQUMxQixLQUFLLENBQUM7QUFDTixDQUFDOztBQ2pERCxJQUFjLGVBQUEsR0FBRyxTQUFTLFNBQVMsRUFBRTtBQUNyQyxJQUFJLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QztBQUNBLFFBQVEsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzlCLFlBQVksT0FBTyxFQUFFLENBQUM7QUFDdEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxPQUFPLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QztBQUNBLFFBQVEsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNoQyxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDcEMsU0FBUztBQUNUO0FBQ0EsUUFBUSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtBQUMvQyxRQUFRLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDOUQsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7QUFDM0MsY0FBYyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxjQUFjLE1BQU07QUFDcEIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRTtBQUNqQyxNQUFNLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLFFBQVEsR0FBRyxFQUFFLFlBQVk7QUFDekIsUUFBUSxHQUFHLEVBQUUsV0FBVztBQUN4QixRQUFRLGNBQWMsRUFBRSxjQUFjO0FBQ3RDLFFBQVEsa0JBQWtCLEVBQUUsa0JBQWtCO0FBQzlDLEtBQUssQ0FBQztBQUNOLENBQUM7O0FDekRELElBQUEsV0FBYyxHQUFHLFdBQVc7QUFDNUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztBQUN4QixRQUFRLE9BQU8sT0FBTyxFQUFFLENBQUM7QUFDekIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsUUFBUSxRQUFRLEVBQUUsUUFBUTtBQUMxQixLQUFLLENBQUM7QUFDTixDQUFDOztBQ2ZELElBQWMsU0FBQSxHQUFHLFNBQVMsT0FBTyxFQUFFO0FBQ25DLElBQUksSUFBSSxXQUFXLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUM5QyxJQUFJLElBQUksUUFBUSxVQUFVLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDNUIsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzdDLFlBQVksT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQzVCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDNUIsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEIsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7QUFDNUYsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDeEM7QUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLEdBQUcsRUFBRSxLQUFLO0FBQ2xCLFFBQVEsR0FBRyxFQUFFLEtBQUs7QUFDbEIsS0FBSyxDQUFDO0FBQ04sQ0FBQzs7QUM1Q0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFjLFFBQUEsR0FBRyxTQUFTLEtBQUssRUFBRTtBQUNqQyxJQUFJLFNBQVMsSUFBSSxHQUFHO0FBQ3BCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRztBQUNuQixRQUFRLEdBQUcsRUFBRSxJQUFJO0FBQ2pCLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDbEIsUUFBUSxLQUFLLEVBQUUsSUFBSTtBQUNuQixLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQ2pDLFFBQVEsSUFBSSxjQUFjLEdBQUcsU0FBUyxRQUFRLEVBQUUsSUFBSSxFQUFFO0FBQ3REO0FBQ0E7QUFDQSxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLGFBQWEsR0FBRztBQUN0RCxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDN0Isb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELGlCQUFpQixNQUFNO0FBQ3ZCLG9CQUFvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvRCx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYSxDQUFDO0FBQ2QsU0FBUyxDQUFDO0FBQ1Y7QUFDQSxRQUFRLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsUUFBUSxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLFFBQVEsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUM7OztBQ3pDRDtBQUNBLElBQUksUUFBUSxHQUFHLE1BQWlCLENBQUEsT0FBQSxHQUFBLEVBQUUsQ0FBQztBQUNuQztBQUNBLFFBQVEsQ0FBQyxJQUFJLEdBQUcsU0FBUyxPQUFPLEVBQUU7QUFDbEMsSUFBSSxTQUFTLGNBQWMsR0FBRztBQUM5QixRQUFRLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdEQsUUFBUSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pILEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQzFCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSztBQUNMO0FBQ0EsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxJQUFJLFVBQVU7QUFDL0IsUUFBUSxJQUFJLEtBQUs7QUFDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQztBQUNqQixZQUFZLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUMvQyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxRQUFRLEdBQUc7QUFDWCxZQUFZLEdBQUcsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztBQUMvRSxTQUFTO0FBQ1QsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkI7QUFDQSxRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDVDtBQUNBLElBQUksT0FBTyxPQUFPLEtBQUssU0FBUyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUNGO0FBQ0EsUUFBUSxDQUFDLGFBQWEsR0FBRyxXQUFXO0FBQ3BDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMxQixDQUFDLENBQUE7Ozs7QUNyQ0Q7QUFDQSxJQUFJLEtBQUssR0FBRyxNQUFpQixDQUFBLE9BQUEsR0FBQSxFQUFFLENBQUM7QUFDaEM7QUFDQSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUM1QjtBQUNBLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0FBQ2hELElBQUksSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDOUUsUUFBUSxPQUFPLFlBQVksQ0FBQztBQUM1QixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUE7OztBQ1ZBLElBQUEsY0FBYyxHQUFHLFNBQVMsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0FBQ3ZELElBQUksT0FBTyxlQUFlLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDeEMsSUFBSSxJQUFJLFFBQVEsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzNDLElBQUksSUFBSSxZQUFZLE1BQU1DLE9BQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRSxJQUFJLElBQUksV0FBVyxPQUFPQSxPQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakU7QUFDQSxJQUFJLEdBQUcsV0FBVyxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3JDLFFBQVEsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztBQUM1SCxRQUFRLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUN4QixJQUFJLElBQUksaUJBQWlCLENBQUM7QUFDMUIsSUFBSSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDN0I7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBUSxHQUFHLENBQUMsWUFBWSxJQUFJLFdBQVcsSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtBQUMvRTtBQUNBO0FBQ0EsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hDLFNBQVM7QUFDVDtBQUNBLFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztBQUM1QjtBQUNBO0FBQ0EsUUFBUSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFFBQVEsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDN0IsWUFBWSxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDeEMsWUFBWSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDNUIsWUFBWSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdEMsU0FBUztBQUNULFFBQVEsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUM3QixLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUU7QUFDbEQsUUFBUSxJQUFJLFlBQVksRUFBRTtBQUMxQixZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxHQUFHLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtBQUM1QyxZQUFZLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUM3QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLEdBQUcsaUJBQWlCLEVBQUU7QUFDOUIsWUFBWSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMzQyxZQUFZLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUNyQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLEdBQUcsaUJBQWlCLEVBQUU7QUFDOUIsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hDLFNBQVMsTUFBTTtBQUNmLFlBQVksWUFBWSxFQUFFLENBQUM7QUFDM0IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxpQkFBaUIsR0FBRztBQUNqQyxRQUFRLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN2RCxLQUFLO0FBUUw7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLFFBQVEsRUFBRTtBQUNuQztBQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQ2xDLFFBQVEsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxRQUFRLEVBQUU7QUFDcEM7QUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM3RCxRQUFRLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLFFBQVEsR0FBRyxFQUFFLFdBQVc7QUFDeEIsUUFBUSxLQUFLLEVBQUUsaUJBQWlCO0FBQ2hDLEtBQUssQ0FBQztBQUNOLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxLQUFLLEdBQUc7QUFDakIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7QUFDekIsSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLFFBQVEsTUFBTSxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEI7QUFDQSxJQUFJLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDNUIsUUFBUSxHQUFHLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDdEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxHQUFHLEtBQUssR0FBRyxRQUFRLEVBQUU7QUFDN0IsWUFBWSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzdCLFNBQVMsTUFBTSxHQUFHLEtBQUssR0FBRyxXQUFXLEVBQUU7QUFDdkMsWUFBWSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLFNBQVM7QUFDVDtBQUNBLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMxQixZQUFZLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUIsU0FBUztBQUNUO0FBQ0EsUUFBUSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0FBQ3ZCLFFBQVEsSUFBSSxJQUFJLEtBQUssR0FBRyxXQUFXLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUNqRSxZQUFZLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQztBQUNBLFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7QUFDckIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0FBQ3ZCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsUUFBUSxHQUFHLEVBQUUsR0FBRztBQUNoQixRQUFRLE9BQU8sRUFBRSxPQUFPO0FBQ3hCLFFBQVEsSUFBSSxFQUFFLE9BQU87QUFDckIsS0FBSyxDQUFDO0FBQ047O0FDdklBLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNsQjtBQUNBLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFFBQVEsQ0FBQyxPQUFPLEVBQUU7QUFDM0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxPQUFPLEVBQUU7QUFDN0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBQ0Q7QUFDQSxJQUFBLFlBQWMsR0FBRztBQUNqQixJQUFJLFNBQVMsRUFBRSxTQUFTO0FBQ3hCLElBQUksUUFBUSxFQUFFLFFBQVE7QUFDdEIsSUFBSSxVQUFVLEVBQUUsVUFBVTtBQUMxQixDQUFDOzs7Ozs7QUNmRDtBQUNxRDtBQUNyRDtBQUNBLElBQWMsTUFBQSxHQUFHLFNBQVMsT0FBTyxFQUFFO0FBQ25DLElBQUksT0FBTyxlQUFlLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDeEMsSUFBSSxJQUFJLFFBQVEsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzNDLElBQUksSUFBSSxjQUFjLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUNqRCxJQUFJLElBQUksUUFBUSxVQUFVLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0FBQ3hEO0FBQ0EsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ2xCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQ2xFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtBQUM1QyxRQUFRLFNBQVMsYUFBYSxHQUFHO0FBQ2pDLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVDtBQUNBLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3BDO0FBQ0EsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHO0FBQ3ZDLGdCQUFnQixLQUFLLEVBQUUsYUFBYTtBQUNwQyxhQUFhLENBQUM7QUFDZCxZQUFZLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzNELFNBQVMsTUFBTTtBQUNmLFlBQVksSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDO0FBQ0EsWUFBWSxHQUFHLENBQUMsTUFBTSxFQUFFO0FBQ3hCLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFDL0UsYUFBYTtBQUNiO0FBQ0EsWUFBWSxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsUUFBUSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDbkU7QUFDQSxRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMxRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDeEQsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3ZCLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDOUIsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDaEMsUUFBb0IsT0FBTyxDQUFDLE1BQU07QUFDbEM7QUFDQSxRQUFRLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDakQsWUFBWSxJQUFJLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBQ25QO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFJLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUMvQztBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RCxZQUFZLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDNUMsWUFBWSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQzlDO0FBQ0EsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHO0FBQzFDLGdCQUFnQixLQUFLLEVBQUUsS0FBSztBQUM1QixnQkFBZ0IsTUFBTSxFQUFFLE1BQU07QUFDOUIsYUFBYSxDQUFDO0FBQ2Q7QUFDQSxZQUFZLFNBQVMsU0FBUyxHQUFHO0FBQ2pDLGdCQUFnQixTQUFTLG1CQUFtQixHQUFHO0FBQy9DLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQ3BELHdCQUF3QixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hIO0FBQ0Esd0JBQXdCLElBQUksb0JBQW9CLEdBQUcsU0FBUyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDaEcsNEJBQTRCLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO0FBQzlELGdDQUFnQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLDZCQUE2QjtBQUM3QjtBQUNBLDRCQUE0QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEQ7QUFDQSw0QkFBNEIsR0FBRyxLQUFLLEtBQUssTUFBTSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUNyRixnQ0FBZ0MsUUFBUSxDQUFDLElBQUksQ0FBQyxpREFBaUQsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxpSEFBaUgsR0FBRyxRQUFRLEdBQUcsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDblMsZ0NBQWdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDL0csNkJBQTZCO0FBQzdCLHlCQUF5QixDQUFDO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5RSx3QkFBd0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEYsd0JBQXdCLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pGLHdCQUF3QixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0JBQWdCLFNBQVMsWUFBWSxHQUFHO0FBQ3hDO0FBQ0Esb0JBQW9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtBQUNqRCx3QkFBd0IsbUJBQW1CLEVBQUUsQ0FBQztBQUM5QyxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO0FBQ3JELDRCQUE0QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUQsNEJBQTRCLElBQUksS0FBSyxDQUFDLCtCQUErQixFQUFFO0FBQ3ZFLGdDQUFnQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQzNGLDZCQUE2QjtBQUM3Qiw0QkFBNEIsS0FBSyxDQUFDLCtCQUErQixHQUFHLFVBQVUsQ0FBQyxTQUFTLHNCQUFzQixHQUFHO0FBQ2pILGdDQUFnQyxLQUFLLENBQUMsK0JBQStCLEdBQUcsQ0FBQyxDQUFDO0FBQzFFLGdDQUFnQyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9ELDZCQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsNEJBQTRCLE9BQU87QUFDbkMseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUQscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDN0M7QUFDQTtBQUNBLG9CQUFvQixXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMscUJBQXFCLENBQUMsY0FBYyxFQUFFO0FBQzlGO0FBQ0Esd0JBQXdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRTtBQUMzQyxvQkFBb0IsbUJBQW1CLENBQU0sQ0FBQyxDQUFDO0FBQy9DLG9CQUFvQixzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDbEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5RCxnQkFBZ0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQ3BELGdCQUFnQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLGdCQUFnQixNQUFNLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQUMxQyxnQkFBZ0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0QsZ0JBQWdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFO0FBQzVDLG9CQUFvQixNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQUNoRCxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4QztBQUNBLG9CQUFvQixPQUFPO0FBQzNCLGlCQUFpQjtBQUNqQjtBQUNBLGdCQUFnQixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLGdCQUFnQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNsRDtBQUNBO0FBQ0EsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFO0FBQzNDLG9CQUFvQixNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQUNoRCxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxHQUFHLGNBQWMsRUFBRTtBQUMvQixnQkFBZ0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QyxhQUFhLE1BQU07QUFDbkIsZ0JBQWdCLFNBQVMsRUFBRSxDQUFDO0FBQzVCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixTQUFTLE1BQU07QUFDZixZQUFZLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUMsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ2hDLFFBQVEsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3hDLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNoQyxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEM7QUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsWUFBWSxPQUFPO0FBQ25CLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLFlBQVksT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFELFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLCtCQUErQixFQUFFO0FBQy9ELFlBQVksTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUNuRixTQUFTO0FBQ1Q7QUFDQSxRQUFRLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLGNBQWMsRUFBRSxjQUFjO0FBQ3RDLFFBQVEsV0FBVyxFQUFFLFdBQVc7QUFDaEMsUUFBUSxTQUFTLEVBQUUsU0FBUztBQUM1QixLQUFLLENBQUM7QUFDTixDQUFDOzs7Ozs7QUNoUEQ7QUFDQSxJQUFJQyxTQUFPLEdBQUdDLGVBQThCLENBQUMsT0FBTyxDQUFDO0FBQ3JEO0FBQ0EsSUFBYyxNQUFBLEdBQUcsU0FBUyxPQUFPLEVBQUU7QUFDbkMsSUFBSSxPQUFPLGVBQWUsT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUN4QyxJQUFJLElBQUksUUFBUSxVQUFVLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDM0MsSUFBSSxJQUFJLGNBQWMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ2pELElBQUksSUFBSSxRQUFRLFVBQVUsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDeEQsSUFBMEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTO0FBQ3hELElBQUksSUFBSSxTQUFTLFNBQVMsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUM1QztBQUNBLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtBQUN6QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbkIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFDbEUsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksY0FBYyxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDN0M7QUFDQSxJQUFJLElBQUksT0FBTyxHQUFHLHNDQUFzQyxDQUFDO0FBQ3pELElBQUksSUFBSSx1QkFBdUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNuRTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsY0FBYyxFQUFFO0FBQzFDO0FBQ0E7QUFDQSxRQUFRLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUM1RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEM7QUFDQSxJQUFJLFNBQVMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO0FBQ3ZDLFFBQVEsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQ25FO0FBQ0EsUUFBUSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUQsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0FBQ2pDLFFBQVEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ3pCO0FBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFFBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3BMO0FBQ0EsUUFBUSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELFFBQVEsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEdBQUcsS0FBSyxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNwUjtBQUNBLFFBQVEsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQztBQUNBLFFBQVEsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEU7QUFDQSxRQUFRLElBQUksU0FBUyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO0FBQ3RELFFBQVEsSUFBSSxVQUFVLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7QUFDekQ7QUFDQSxRQUFRLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsUUFBUSxPQUFPO0FBQ2YsWUFBWSxLQUFLLEVBQUUsU0FBUztBQUM1QixZQUFZLE1BQU0sRUFBRSxVQUFVO0FBQzlCLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtBQUN4RSxRQUFRLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDNUMsWUFBWSxNQUFNLEdBQUcsTUFBTSxJQUFJLFVBQVUsT0FBTyxFQUFFO0FBQ2xELGdCQUFnQixjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RCxhQUFhLENBQUM7QUFDZDtBQUNBLFlBQVksSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRSxZQUFZLFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQzNDLFlBQVksWUFBWSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDdEMsWUFBWSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDakMsWUFBWSxPQUFPLFlBQVksQ0FBQztBQUNoQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3JELFlBQVksSUFBSSx1QkFBdUIsR0FBRyxjQUFjLEdBQUcsWUFBWSxDQUFDO0FBQ3hFLFlBQVksSUFBSSw2QkFBNkIsR0FBRyxjQUFjLEdBQUcsbUJBQW1CLENBQUM7QUFDckYsWUFBWSxJQUFJLEtBQUssR0FBRyx5REFBeUQsQ0FBQztBQUNsRixZQUFZLEtBQUssSUFBSSxHQUFHLEdBQUcsY0FBYyxHQUFHLDhCQUE4QixHQUFHLGtCQUFrQixDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDOUgsWUFBWSxLQUFLLElBQUksR0FBRyxHQUFHLDZCQUE2QixHQUFHLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLGtDQUFrQyxFQUFFLDBCQUEwQixFQUFFLDBCQUEwQixHQUFHLHVCQUF1QixFQUFFLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDclEsWUFBWSxLQUFLLElBQUkscUJBQXFCLEdBQUcsdUJBQXVCLElBQUksb0VBQW9FLENBQUM7QUFDN0ksWUFBWSxLQUFLLElBQUksYUFBYSxHQUFHLHVCQUF1QixZQUFZLGtFQUFrRSxDQUFDO0FBQzNJLFlBQVksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0FBQ3hDLFFBQVEsT0FBTyxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsdUJBQXVCLEdBQUcsbUJBQW1CLENBQUM7QUFDakYsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFRLElBQUksRUFBRSxDQUFDLGdCQUFnQixFQUFFO0FBQ2pDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxTQUFTLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0FBQ2xDLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFDckYsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDdkMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRTtBQUNwQyxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0MsU0FBUyxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRTtBQUNsQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxTQUFTLE1BQU07QUFDZixZQUFZLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0FBQ3hGLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0FBQ3ZDLFFBQVEsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDdkMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNwRDtBQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDN0IsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNUO0FBQ0EsUUFBUSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDeEQsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3ZCLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDOUIsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDaEM7QUFDQSxRQUFRLFNBQVMsS0FBSyxHQUFHO0FBQ3pCLFlBQVksSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQy9CLGdCQUFnQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakUsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNqRSxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtBQUN4QyxvQkFBb0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELGlCQUFpQixNQUFNO0FBQ3ZCLG9CQUFvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxRCx3QkFBd0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRTtBQUNyQyxZQUFZLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUMzQyxnQkFBZ0IsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BHLGdCQUFnQixPQUFPLE9BQU8sS0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDO0FBQ2hJLGFBQWE7QUFDYjtBQUNBLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4QyxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiO0FBQ0E7QUFDQSxZQUFZLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtBQUMzRCxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUN2QztBQUNBLFlBQVksSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsWUFBWSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0QsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRSxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsUUFBUSxHQUFHO0FBQzVCO0FBQ0E7QUFDQSxZQUFZLElBQUksWUFBWSxjQUFjLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzRSxZQUFZLElBQUksS0FBSyxxQkFBcUIsRUFBRSxDQUFDO0FBQzdDLFlBQVksS0FBSyxDQUFDLFFBQVEsZ0JBQWdCLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDaEUsWUFBWSxLQUFLLENBQUMsS0FBSyxtQkFBbUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUM5RCxZQUFZLEtBQUssQ0FBQyxNQUFNLGtCQUFrQixPQUFPLENBQUMsWUFBWSxDQUFDO0FBQy9ELFlBQVksS0FBSyxDQUFDLEdBQUcscUJBQXFCLFlBQVksQ0FBQyxHQUFHLENBQUM7QUFDM0QsWUFBWSxLQUFLLENBQUMsS0FBSyxtQkFBbUIsWUFBWSxDQUFDLEtBQUssQ0FBQztBQUM3RCxZQUFZLEtBQUssQ0FBQyxNQUFNLGtCQUFrQixZQUFZLENBQUMsTUFBTSxDQUFDO0FBQzlELFlBQVksS0FBSyxDQUFDLElBQUksb0JBQW9CLFlBQVksQ0FBQyxJQUFJLENBQUM7QUFDNUQsWUFBWSxLQUFLLENBQUMsUUFBUSxnQkFBZ0IsWUFBWSxDQUFDLEtBQUssQ0FBQztBQUM3RCxZQUFZLEtBQUssQ0FBQyxTQUFTLGVBQWUsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUM5RCxZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxjQUFjLEdBQUc7QUFDbEMsWUFBWSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNuQyxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUc7QUFDMUMsZ0JBQWdCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztBQUNsQyxnQkFBZ0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO0FBQ3BDLGFBQWEsQ0FBQztBQUNkLFlBQVksS0FBSyxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyRSxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsYUFBYSxHQUFHO0FBQ2pDLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDN0MsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLFVBQVUsR0FBRztBQUM5QixZQUFZLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNwQyxnQkFBZ0IsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDdkUsZ0JBQWdCLE9BQU87QUFDdkIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNuQyxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzVDLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUMxRCxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ2hELFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUM7QUFDbkQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtBQUNoRCxZQUFZLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNELFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxjQUFjLEdBQUc7QUFDbEMsWUFBWSxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoRCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsZUFBZSxHQUFHO0FBQ25DLFlBQVksT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDakQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsWUFBWSxPQUFPLEtBQUssR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDakQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDekMsWUFBWSxPQUFPLE1BQU0sR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFDbkQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsWUFBWSxPQUFPLEtBQUssR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDaEQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDekMsWUFBWSxPQUFPLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFDbEQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQzVELFlBQVksSUFBSSxNQUFNLFlBQVksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUQsWUFBWSxJQUFJLE1BQU0sWUFBWSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1RCxZQUFZLElBQUksV0FBVyxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLElBQUksWUFBWSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxZQUFZLElBQUksV0FBVyxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLElBQUksWUFBWSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxZQUFZLE1BQU0sQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUFDO0FBQzlDLFlBQVksTUFBTSxDQUFDLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDL0MsWUFBWSxNQUFNLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQztBQUM5QyxZQUFZLE1BQU0sQ0FBQyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQy9DLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxzQkFBc0IsR0FBRztBQUMxQyxZQUFZLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDeEQ7QUFDQSxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDNUIsZ0JBQWdCLFNBQVMscUJBQXFCLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUUsZ0JBQWdCLFNBQVMsQ0FBQyxTQUFTLFdBQVcsdUJBQXVCLENBQUM7QUFDdEUsZ0JBQWdCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxPQUFPLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDdk0sZ0JBQWdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3hELGdCQUFnQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxnQkFBZ0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQztBQUNBLGdCQUFnQixJQUFJLGdCQUFnQixHQUFHLFlBQVk7QUFDbkQsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ25GLGlCQUFpQixDQUFDO0FBQ2xCO0FBQ0EsZ0JBQWdCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN4RTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ3RFLGFBQWE7QUFDYjtBQUNBLFlBQVksT0FBTyxTQUFTLENBQUM7QUFDN0IsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLG9CQUFvQixHQUFHO0FBQ3hDLFlBQVksU0FBUyxtQkFBbUIsR0FBRztBQUMzQyxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNwRDtBQUNBLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQ2hELG9CQUFvQixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzNHO0FBQ0Esb0JBQW9CLElBQUksb0JBQW9CLEdBQUcsU0FBUyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDNUYsd0JBQXdCLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO0FBQzFELDRCQUE0QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLHlCQUF5QjtBQUN6QjtBQUNBLHdCQUF3QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEQ7QUFDQSx3QkFBd0IsR0FBRyxLQUFLLEtBQUssTUFBTSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUNqRiw0QkFBNEIsUUFBUSxDQUFDLElBQUksQ0FBQyxpREFBaUQsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxpSEFBaUgsR0FBRyxRQUFRLEdBQUcsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL1IsNEJBQTRCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELHlCQUF5QjtBQUN6QixxQkFBcUIsQ0FBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUUsb0JBQW9CLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVFLG9CQUFvQixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM3RSxvQkFBb0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0UsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDNUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEQsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQ7QUFDQSxnQkFBZ0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNoRyxhQUFhO0FBQ2I7QUFDQSxZQUFZLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0EsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3BDLGdCQUFnQixLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUN2RSxnQkFBZ0IsT0FBTztBQUN2QixhQUFhO0FBQ2I7QUFDQSxZQUFZLG1CQUFtQixFQUFFLENBQUM7QUFDbEM7QUFDQSxZQUFZLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDNUQ7QUFDQSxZQUFZLElBQUksQ0FBQyxhQUFhLEVBQUU7QUFDaEMsZ0JBQWdCLGFBQWEsR0FBRyxzQkFBc0IsRUFBRSxDQUFDO0FBQ3pELGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQUksY0FBYyxZQUFZLGNBQWMsQ0FBQyxLQUFLLENBQUM7QUFDL0QsWUFBWSxJQUFJLGVBQWUsV0FBVyxjQUFjLENBQUMsTUFBTSxDQUFDO0FBQ2hFLFlBQVksSUFBSSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwTixZQUFZLElBQUksY0FBYyxZQUFZLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuUixZQUFZLElBQUksV0FBVyxlQUFlLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUMzTCxZQUFZLElBQUksV0FBVyxlQUFlLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUMzTCxZQUFZLElBQUksZ0JBQWdCLFVBQVUsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMxRyxZQUFZLElBQUksZ0JBQWdCLFVBQVUsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUNwSDtBQUNBLFlBQVksSUFBSSxrQkFBa0IsUUFBUSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFlBQVksSUFBSSxTQUFTLGlCQUFpQixRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFlBQVksSUFBSSxNQUFNLG9CQUFvQixRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFlBQVksSUFBSSxXQUFXLGVBQWUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RSxZQUFZLElBQUksTUFBTSxvQkFBb0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RSxZQUFZLElBQUksV0FBVyxlQUFlLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEU7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQixLQUFLLENBQUM7QUFDeEQ7QUFDQSxZQUFZLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsWUFBWSxrQkFBa0IsQ0FBQyxTQUFTLFVBQVUsdUJBQXVCLENBQUM7QUFDMUUsWUFBWSxTQUFTLENBQUMsU0FBUyxtQkFBbUIsdUJBQXVCLENBQUM7QUFDMUUsWUFBWSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sZUFBZSxjQUFjLENBQUM7QUFDakUsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sa0JBQWtCLFdBQVcsQ0FBQztBQUM5RCxZQUFZLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxhQUFhLGdCQUFnQixDQUFDO0FBQ25FLFlBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLGtCQUFrQixXQUFXLENBQUM7QUFDOUQsWUFBWSxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sYUFBYSxnQkFBZ0IsQ0FBQztBQUNuRTtBQUNBLFlBQVksTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM1QyxZQUFZLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUMsWUFBWSxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFlBQVksU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxZQUFZLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0RCxZQUFZLGFBQWEsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUMxRDtBQUNBLFlBQVksU0FBUyxjQUFjLEdBQUc7QUFDdEMsZ0JBQWdCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QyxnQkFBZ0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtBQUM3QyxvQkFBb0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3JDLGlCQUFpQixNQUFNO0FBQ3ZCLG9CQUFvQixLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztBQUMxRixpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxTQUFTLGNBQWMsR0FBRztBQUN0QyxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLGdCQUFnQixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQzdDLG9CQUFvQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDckMsaUJBQWlCLE1BQU07QUFDdkIsb0JBQW9CLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO0FBQzFGLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQSxZQUFZLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZELFlBQVksUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUM5RCxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBQzlELFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxvQ0FBb0MsR0FBRztBQUN4RCxZQUFZLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDOUQsZ0JBQWdCLElBQUksV0FBVyxlQUFlLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdFLGdCQUFnQixJQUFJLFdBQVcsZUFBZSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEUsZ0JBQWdCLElBQUksWUFBWSxjQUFjLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RSxnQkFBZ0IsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDakgsZ0JBQWdCLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxZQUFZLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ25ILGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUU7QUFDbEQsZ0JBQWdCLElBQUksS0FBSyxhQUFhLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDMUQsZ0JBQWdCLElBQUksTUFBTSxZQUFZLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDM0Q7QUFDQTtBQUNBLGdCQUFnQixJQUFJLFdBQVcsR0FBRyxLQUFLLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNuSDtBQUNBLGdCQUFnQixLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsdUJBQXVCLEdBQUc7QUFDekUsb0JBQW9CLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDdEMsd0JBQXdCLE9BQU87QUFDL0IscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUMsd0JBQXdCLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQy9FLHdCQUF3QixPQUFPO0FBQy9CLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtBQUNoRCx3QkFBd0IsS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7QUFDN0Ysd0JBQXdCLE9BQU87QUFDL0IscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtBQUN2Qyx3QkFBd0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNwRCx3QkFBd0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNyRDtBQUNBLHdCQUF3QixJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUN6RCw0QkFBNEIsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLHlEQUF5RCxDQUFDLENBQUM7QUFDN0gseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdELGlCQUFpQixDQUFDLENBQUM7QUFDbkI7QUFDQSxnQkFBZ0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxnQkFBZ0IsR0FBRztBQUNsRTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1Qyx3QkFBd0IsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDL0Usd0JBQXdCLE9BQU87QUFDL0IscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO0FBQ2hELHdCQUF3QixLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQUM3Rix3QkFBd0IsT0FBTztBQUMvQixxQkFBcUI7QUFDckI7QUFDQSxvQkFBb0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRCxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsZ0JBQWdCLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtBQUN6QyxvQkFBb0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsWUFBWTtBQUN0RCx3QkFBd0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNoRCw0QkFBNEIsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDbkYsNEJBQTRCLE9BQU87QUFDbkMseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO0FBQ3BELDBCQUEwQixLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQUMvRiwwQkFBMEIsT0FBTztBQUNqQyx5QkFBeUI7QUFDekI7QUFDQSx3QkFBd0IsSUFBSSxFQUFFLENBQUM7QUFDL0IscUJBQXFCLENBQUMsQ0FBQztBQUN2QixpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxTQUFTLG1CQUFtQixHQUFHO0FBQzNDLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JELGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyx1QkFBdUIsR0FBRztBQUMvQyxnQkFBZ0IsU0FBUyxhQUFhLEdBQUc7QUFDekMsb0JBQW9CLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQztBQUM3RSxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDekQ7QUFDQSxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxhQUFhLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDakksb0JBQW9CLE9BQU8sS0FBSyxDQUFDLDRGQUE0RixDQUFDLENBQUM7QUFDL0gsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtBQUNsSCxvQkFBb0IsT0FBTyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUN6RSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGdCQUFnQixLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDMUQsZ0JBQWdCLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0FBQzVELGdCQUFnQkQsU0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxRQUFRLEVBQUU7QUFDekUsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxZQUFZLEdBQUc7QUFDcEMsZ0JBQWdCLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ25EO0FBQ0EsZ0JBQWdCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzNDLG9CQUFvQixLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUMzRSxvQkFBb0IsT0FBTztBQUMzQixpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDM0MsZ0JBQWdCLElBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZELGdCQUFnQixJQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RCxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtBQUM1SCxvQkFBb0IsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7QUFDbkYsb0JBQW9CLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDcEUsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxZQUFZLEdBQUc7QUFDcEMsZ0JBQWdCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsZ0JBQWdCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzNDO0FBQ0Esb0JBQW9CLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0FBQzlFLG9CQUFvQixPQUFPO0FBQzNCLGlCQUFpQjtBQUNqQjtBQUNBLGdCQUFnQixzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ2hFLGFBQWE7QUFDYjtBQUNBLFlBQVksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDbkU7QUFDQSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDcEMsZ0JBQWdCLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ3ZFLGdCQUFnQixPQUFPO0FBQ3ZCLGFBQWE7QUFDYjtBQUNBLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7QUFDeEQsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztBQUN0RCxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBQ3REO0FBQ0EsWUFBWSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hELFlBQVksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pFLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxtQkFBbUIsR0FBRztBQUN2QyxZQUFZLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3BDLGdCQUFnQixLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUN2RSxnQkFBZ0IsT0FBTztBQUN2QixhQUFhO0FBQ2I7QUFDQSxZQUFZLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEQsWUFBWSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakUsWUFBWSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkUsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLEtBQUssR0FBRztBQUN6QixZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsT0FBTyxHQUFHO0FBQzNCLFlBQVksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLFlBQVksYUFBYSxFQUFFLENBQUM7QUFDNUIsWUFBWSxjQUFjLEVBQUUsQ0FBQztBQUM3QjtBQUNBLFlBQVksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUMsWUFBWSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3hELFlBQVksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztBQUN4RSxZQUFZLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDdkQsWUFBWSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsUUFBUSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqQyxZQUFZLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsWUFBWSxzQkFBc0IsRUFBRSxDQUFDO0FBQ3JDO0FBQ0EsWUFBWSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUMxRDtBQUNBLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3ZELGdCQUFnQixLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUNqRCxnQkFBZ0IsT0FBTyxFQUFFLENBQUM7QUFDMUIsYUFBYSxDQUFDO0FBQ2QsU0FBUyxNQUFNO0FBQ2YsWUFBWSxPQUFPLEVBQUUsQ0FBQztBQUN0QixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDaEMsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEI7QUFDQSxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQUssQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdkcsUUFBUSxLQUFLLENBQUMsY0FBYyxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZHLFFBQVEsS0FBSyxDQUFDLGdCQUFnQixJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3pHO0FBQ0EsUUFBUSxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hFLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLFFBQVEsY0FBYyxFQUFFLGNBQWM7QUFDdEMsUUFBUSxXQUFXLEVBQUUsV0FBVztBQUNoQyxRQUFRLFNBQVMsRUFBRSxTQUFTO0FBQzVCLFFBQVEsWUFBWSxFQUFFLFlBQVk7QUFDbEMsS0FBSyxDQUFDO0FBQ04sQ0FBQzs7QUM3cEJELElBQUksT0FBTyxtQkFBbUJDLGVBQTZCLENBQUMsT0FBTyxDQUFDO0FBQ1g7QUFDRztBQUNKO0FBQ0Y7QUFDRjtBQUNRO0FBQ0g7QUFDQTtBQUN6RDtBQUNBO0FBQ3dFO0FBQ0E7QUFDeEU7QUFDQSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFDMUQsQ0FBQztBQUNEO0FBQ0EsU0FBUyxPQUFPLENBQUMsVUFBVSxFQUFFO0FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDcEMsUUFBUSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBUSxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxFQUFFO0FBQzNDLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxNQUFNO0FBQ1gsUUFBUSxPQUFPLFVBQVUsQ0FBQztBQUMxQixLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQ3hCLElBQUksT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQWMscUJBQUEsR0FBRyxTQUFTLE9BQU8sRUFBRTtBQUNuQyxJQUFJLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzVCO0FBQ0E7QUFDQSxJQUFJLElBQUlDLFdBQVMsQ0FBQztBQUNsQjtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQzNCO0FBQ0E7QUFDQSxRQUFRQSxXQUFTLEdBQUc7QUFDcEIsWUFBWSxHQUFHLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ3BGLFlBQVksR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRztBQUN0QyxTQUFTLENBQUM7QUFDVixLQUFLLE1BQU07QUFDWCxRQUFRLElBQUlDLGFBQVcsR0FBR0MsV0FBZ0IsRUFBRSxDQUFDO0FBQzdDLFFBQVEsSUFBSSxnQkFBZ0IsR0FBR0MsU0FBYyxDQUFDO0FBQzlDLFlBQVksV0FBVyxFQUFFRixhQUFXO0FBQ3BDLFlBQVksWUFBWSxFQUFFLFlBQVk7QUFDdEMsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRRCxXQUFTLEdBQUcsZ0JBQWdCLENBQUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUlJLFVBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3BDO0FBQ0EsSUFBSSxHQUFHLENBQUNBLFVBQVEsRUFBRTtBQUNsQjtBQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUdBLFVBQVEsS0FBSyxLQUFLLENBQUM7QUFDdkMsUUFBUUEsVUFBUSxHQUFHQyxRQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUlDLGdCQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRUMsY0FBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRUgsVUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNHO0FBQ0E7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLGFBQWEsQ0FBQyxTQUFTLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLElBQUksYUFBYSxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkU7QUFDQSxJQUFJLElBQUksb0JBQW9CLE1BQU1JLGVBQW9CLENBQUNSLFdBQVMsQ0FBQyxDQUFDO0FBQ2xFLElBQUksSUFBSVMsY0FBWSxjQUFjQyxZQUFpQixDQUFDO0FBQ3BELFFBQVEsWUFBWSxFQUFFLFlBQVk7QUFDbEMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0EsSUFBSSxJQUFJLGlCQUFpQixDQUFDO0FBQzFCLElBQUksSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbkUsSUFBSSxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25FLElBQUksSUFBSSxlQUFlLEdBQUc7QUFDMUIsUUFBUSxRQUFRLEVBQUVOLFVBQVE7QUFDMUIsUUFBUSxjQUFjLEVBQUVFLGdCQUFjO0FBQ3RDLFFBQVEsWUFBWSxFQUFFLFlBQVk7QUFDbEMsUUFBUSxTQUFTLEVBQUVOLFdBQVM7QUFDNUIsUUFBUSxTQUFTLEVBQUUsaUJBQWlCO0FBQ3BDLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxHQUFHLGVBQWUsS0FBSyxRQUFRLEVBQUU7QUFDckMsUUFBUSxJQUFJLGVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRTtBQUM3QyxZQUFZSSxVQUFRLENBQUMsSUFBSSxDQUFDLGdGQUFnRixDQUFDLENBQUM7QUFDNUcsWUFBWSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3ZDLFNBQVMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDNUMsWUFBWUEsVUFBUSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO0FBQ25HLFlBQVksZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUN2QyxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSxHQUFHLGVBQWUsS0FBSyxRQUFRLEVBQUU7QUFDckMsUUFBUSxpQkFBaUIsR0FBR08sTUFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNqRSxLQUFLLE1BQU0sR0FBRyxlQUFlLEtBQUssUUFBUSxFQUFFO0FBQzVDLFFBQVEsaUJBQWlCLEdBQUdDLE1BQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDakUsS0FBSyxNQUFNO0FBQ1gsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBQ3JFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO0FBQ25ELFFBQVEsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDM0MsWUFBWSxJQUFJLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUQsWUFBWSxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO0FBQ3BFLGdCQUFnQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzNELFlBQVksb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4RDtBQUNBLFlBQVksR0FBRyxTQUFTLEVBQUU7QUFDMUIsZ0JBQWdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLEdBQUcsQ0FBQyxRQUFRLEVBQUU7QUFDdEIsWUFBWSxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ2hDLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDekIsU0FBUztBQUNUO0FBQ0EsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ3RCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQzlELFNBQVM7QUFDVDtBQUNBLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRTtBQUN0QixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUNsRCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ2pDO0FBQ0EsWUFBWSxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxTQUFTLE1BQU0sSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDM0M7QUFDQTtBQUNBLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxTQUFTLE1BQU07QUFDZixZQUFZLE9BQU9SLFVBQVEsQ0FBQyxLQUFLLENBQUMsMkVBQTJFLENBQUMsQ0FBQztBQUMvRyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztBQUM5QjtBQUNBLFFBQVEsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pGLFFBQVEsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDaEYsUUFBUSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckU7QUFDQSxRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUU7QUFDcEUsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqRCxnQkFBZ0IsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRCxnQkFBZ0JKLFdBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBR0EsV0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QztBQUNBLFlBQVksS0FBSyxJQUFJSSxVQUFRLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoRjtBQUNBLFlBQVksR0FBRyxDQUFDSyxjQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3BELGdCQUFnQixLQUFLLElBQUlMLFVBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDN0QsZ0JBQWdCLEdBQUdLLGNBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDakQsb0JBQW9CLEtBQUssSUFBSUwsVUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztBQUNsRjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUQsb0JBQW9CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0RSxvQkFBb0IsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsT0FBTyxHQUFHO0FBQ2pFLHdCQUF3QixhQUFhLEVBQUUsQ0FBQztBQUN4QztBQUNBLHdCQUF3QixHQUFHLGFBQWEsS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzlELDRCQUE0QixlQUFlLEVBQUUsQ0FBQztBQUM5Qyx5QkFBeUI7QUFDekIscUJBQXFCLENBQUMsQ0FBQztBQUN2QixvQkFBb0IsT0FBTztBQUMzQixpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsS0FBSyxJQUFJQSxVQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2xFO0FBQ0EsZ0JBQWdCSyxjQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxnQkFBZ0IsT0FBTyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLG1CQUFtQixDQUFDLE9BQU8sRUFBRTtBQUN2SixvQkFBb0IsS0FBSyxJQUFJTCxVQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3JFO0FBQ0Esb0JBQW9CLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4RCx3QkFBd0JLLGNBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvRCx3QkFBd0JBLGNBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlELHdCQUF3QixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDakYsd0JBQXdCLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSx3QkFBd0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtBQUN0RCw0QkFBNEIsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUM1RCw0QkFBNEIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUM5RCw0QkFBNEIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO0FBQ3RHLGdDQUFnQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxRCw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDakQsNEJBQTRCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLFFBQVEsRUFBRTtBQUM3RSxnQ0FBZ0MsUUFBUSxFQUFFLENBQUM7QUFDM0MsNkJBQTZCLENBQUMsQ0FBQztBQUMvQix5QkFBeUI7QUFDekIscUJBQXFCLE1BQU07QUFDM0I7QUFDQSx3QkFBd0IsS0FBSyxJQUFJTCxVQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQ2xHLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixPQUFPLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0FBQ0Esb0JBQW9CLGFBQWEsRUFBRSxDQUFDO0FBQ3BDLG9CQUFvQixHQUFHLGFBQWEsS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzFELHdCQUF3QixlQUFlLEVBQUUsQ0FBQztBQUMxQyxxQkFBcUI7QUFDckIsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2I7QUFDQSxZQUFZLEtBQUssSUFBSUEsVUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUscUNBQXFDLENBQUMsQ0FBQztBQUM3RTtBQUNBO0FBQ0EsWUFBWSxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RCxZQUFZLGFBQWEsRUFBRSxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7QUFDQSxRQUFRLEdBQUcsYUFBYSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDOUMsWUFBWSxlQUFlLEVBQUUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxRQUFRLEVBQUU7QUFDakMsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ3RCLFlBQVksT0FBT0EsVUFBUSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQ3ZFLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDakM7QUFDQSxZQUFZLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLFNBQVMsTUFBTSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzQztBQUNBO0FBQ0EsWUFBWSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDLFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBT0EsVUFBUSxDQUFDLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0FBQy9HLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLE9BQU8sRUFBRTtBQUM3QyxZQUFZLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdELFlBQVksaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELFlBQVksWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QyxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsY0FBYyxFQUFFO0FBQzFDLFFBQVEsaUJBQWlCLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN6RixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLFFBQVEsRUFBRSxRQUFRO0FBQzFCLFFBQVEsY0FBYyxFQUFFLG9CQUFvQixDQUFDLGNBQWM7QUFDM0QsUUFBUSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxrQkFBa0I7QUFDbkUsUUFBUSxTQUFTLEVBQUUsU0FBUztBQUM1QixRQUFRLFlBQVksRUFBRSxZQUFZO0FBQ2xDLEtBQUssQ0FBQztBQUNOLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDaEQsSUFBSSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUI7QUFDQSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUM5RSxRQUFRLE9BQU8sWUFBWSxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakI7O0FDclVBLElBQUksR0FBRyxHQUFHUyxxQkFBMEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQzdELFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxJQUFJLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUNqQyxJQUFJLE9BQU87QUFDWCxRQUFRLE1BQU0sRUFBRSxVQUFVLFVBQVUsRUFBRTtBQUN0QyxZQUFZLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3hELFlBQVksR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUMsWUFBWSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLFNBQVM7QUFDVCxRQUFRLE9BQU8sRUFBRSxZQUFZO0FBQzdCLFlBQVksR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDeEQsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOOztBQ2JBLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBVzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRTtBQUN2QyxJQUFJLElBQUksSUFBSSxDQUFDO0FBQ2IsSUFBSSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLElBQUksU0FBUyxHQUFHLENBQUMsU0FBUyxFQUFFO0FBQzVCLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQzlDLFlBQVksS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUM5QixZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3RCLGdCQUFnQixNQUFNLFNBQVMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztBQUMzRCxnQkFBZ0IsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7QUFDdEQsb0JBQW9CLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BDLG9CQUFvQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxTQUFTLEVBQUU7QUFDL0Isb0JBQW9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN6RSx3QkFBd0IsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUscUJBQXFCO0FBQ3JCLG9CQUFvQixnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUN4QixRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRTtBQUMvQyxRQUFRLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDcEMsWUFBWSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN0QyxTQUFTO0FBQ1QsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkIsUUFBUSxPQUFPLE1BQU07QUFDckIsWUFBWSxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNDLFlBQVksSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtBQUN4QyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7QUFDdkIsZ0JBQWdCLElBQUksR0FBRyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3RDOztBQ3RETSxTQUFVLFlBQVksQ0FBQyxHQUFRLEVBQUE7O0lBRW5DLElBQUksVUFBVSxHQUFlLEVBQWdCLENBQUE7QUFFN0MsSUFBQSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFBO0FBRTdCLElBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFJO0FBQzlELFFBQUEsSUFBSSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO1FBQzNELElBQUksVUFBVSxHQUFXLGdCQUFnQjtBQUN2QyxjQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEUsY0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakMsSUFBSSxPQUFPLEdBQVcsZ0JBQWdCO2NBQ2xDLE9BQU8sQ0FBQyxJQUFJO0FBQ2Q7QUFDRSxnQkFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlDLElBQUksT0FBTyxJQUFjLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUNqRCxZQUFBLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ2pDLFlBQUEsRUFBRSxDQUFhLENBQUE7O1FBR2pCLFNBQVMsYUFBYSxDQUFDLE1BQWMsRUFBQTtZQUNuQyxJQUFJLFNBQVMsR0FBZ0IsRUFBaUIsQ0FBQTtZQUM5QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDcEIsZ0JBQUEsU0FBUyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFBO0FBQ3RDLGdCQUFBLFNBQVMsQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQy9DLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ1osYUFBQTtBQUNELFlBQUEsU0FBUyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBO1lBQzFCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUV4RCxZQUFBLE9BQU8sU0FBUyxDQUFBO1NBQ2pCOztBQUdELFFBQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSTtBQUN6QixZQUFBLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxZQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25CLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRztvQkFDZixFQUFFO29CQUNGLFVBQVU7b0JBQ1YsT0FBTztvQkFDUCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3JCLENBQUE7QUFDRixhQUFBO0FBQU0saUJBQUE7Z0JBQ0wsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDdkMsYUFBQTtBQUNILFNBQUMsQ0FBQyxDQUFBO0FBQ0osS0FBQyxDQUFDLENBQUE7QUFDRixJQUFBLE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUM7QUFVRDtBQUNBO0FBQ0E7QUFDQTtTQUNnQixrQkFBa0IsQ0FBQyxFQUFVLEVBQUUsTUFBYyxFQUFFLEdBQVEsRUFBQTtJQUNyRSxJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUE7SUFDN0IsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakQsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUV6RCxJQUFBLElBQUksVUFBVSxFQUFFO0FBQ2QsUUFBQSxLQUFLLElBQUksWUFBWSxJQUFJLFVBQVUsRUFBRTs7WUFFbkMsSUFDRSxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQ3pELFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSTtvQkFDL0MsT0FBTyxRQUFRLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUM3QyxpQkFBQyxDQUFDO0FBQ0YsZ0JBQUEsWUFBWSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUMvQjtnQkFDQSxRQUFRLEdBQUcsSUFBSSxDQUFBO0FBQ2hCLGFBQUE7QUFBTSxpQkFBQTtnQkFDTCxRQUFRLEdBQUcsS0FBSyxDQUFBO0FBQ2pCLGFBQUE7QUFDRixTQUFBO0FBQ0YsS0FBQTs7SUFHRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7QUFDN0IsUUFBQSxLQUFLLElBQUksYUFBYSxJQUFJLFdBQVcsRUFBRTtZQUNyQyxJQUNFLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDMUQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFJO29CQUNoRCxPQUFPLFFBQVEsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLGlCQUFDLENBQUM7QUFDRixnQkFBQSxhQUFhLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQ2hDO2dCQUNBLFFBQVEsR0FBRyxLQUFLLENBQUE7QUFDakIsYUFBQTtBQUFNLGlCQUFBO2dCQUNMLFFBQVEsR0FBRyxJQUFJLENBQUE7QUFDaEIsYUFBQTtBQUNGLFNBQUE7QUFDRixLQUFBO1NBQU0sSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1FBQ3BDLFFBQVEsR0FBRyxJQUFJLENBQUE7QUFDaEIsS0FBQTtBQUNELElBQUEsT0FBTyxRQUFRLENBQUE7QUFDakIsQ0FBQztBQUVEO0FBQ2dCLFNBQUEsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxNQUFjLEVBQUE7SUFDakUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFBO0FBQ3ZCLElBQUEsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLEtBQUssSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM1QyxRQUFBLElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pDLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFFdkMsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7QUFDbEMsWUFBQSxLQUFLLElBQUksYUFBYSxJQUFJLGNBQWMsRUFBRTtBQUN4QyxnQkFBQSxJQUNFLGFBQWEsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUc7b0JBQ2hDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTTtvQkFDMUQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFJO3dCQUNoRCxPQUFPLFFBQVEsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLHFCQUFDLENBQUMsRUFDRjtvQkFDQSxXQUFXLEdBQUcsSUFBSSxDQUFBO0FBQ25CLGlCQUFBO0FBQ0YsYUFBQTtBQUNGLFNBQUE7QUFDRixLQUFBO0FBRUQsSUFBQSxPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUssU0FBVSxxQkFBcUIsQ0FBQyxTQUFxQixFQUFBO0lBQ3pELElBQUksa0JBQWtCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtCLEtBQUk7UUFDNUQsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFOztBQUV0QixZQUFBLElBQUlDLGlCQUFRLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUM3QixnQkFBQSxPQUFPLEtBQUssQ0FBQTtBQUNiLGFBQUE7QUFBTSxpQkFBQTtBQUNMLGdCQUFBLE9BQU8sTUFBTSxDQUFBO0FBQ2QsYUFBQTtBQUNGLFNBQUE7UUFDRCxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7O0FBRXZCLFlBQUEsSUFBSUEsaUJBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzdCLGdCQUFBLE9BQU8sS0FBSyxDQUFBO0FBQ2IsYUFBQTtBQUFNLGlCQUFBO0FBQ0wsZ0JBQUEsT0FBTyxLQUFLLENBQUE7QUFDYixhQUFBO0FBQ0YsU0FBQTtBQUNELFFBQUEsT0FBTyxRQUFRLENBQUE7QUFDakIsS0FBQyxDQUFDLENBQUE7QUFDRixJQUFBLE9BQU8sa0JBQThCLENBQUE7QUFDdkMsQ0FBQztBQXlCRDtBQUNNLFNBQVUsYUFBYSxDQUFDLFNBQWdDLEVBQUE7SUFDNUQsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFTLEtBQUk7UUFDNUQsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2YsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNWLFNBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDZixZQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ1QsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ1YsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUNoQixZQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ1QsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ1YsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUNoQixZQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ1QsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFDLENBQUE7QUFDVixTQUFBO1FBQ0QsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ2YsWUFBQSxPQUFPLENBQUMsQ0FBQTtBQUNULFNBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNWLFNBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUU7QUFDakIsWUFBQSxPQUFPLENBQUMsQ0FBQTtBQUNULFNBQUE7QUFDSCxLQUFDLENBQUMsQ0FBQTtBQUNGLElBQUEsT0FBTyxlQUE2QixDQUFBO0FBQ3RDOztBQ3pOTyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFDO0FBQzlCLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxFQUFFOztBQ0gxQyxJQUFJLGlCQUFpQixHQUFHO0FBQ3hCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QjtBQUNyQyxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ1gsRUFBRSxNQUFNLEVBQUUsRUFBRTtBQUNaLEVBQUUsT0FBTyxFQUFFLFdBQVc7QUFDdEIsRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNkLEVBQUUsTUFBTSxFQUFFLGNBQWM7QUFDeEIsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUNuQixFQUFFLGdCQUFnQixFQUFFLE9BQU87QUFDM0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPO0FBQzVCLENBQUM7Ozs7Ozs7Ozs7OztFQ0RLLGlCQUFpQjtrQkFDakIsR0FBVyxDQUFBLENBQUEsQ0FBQTtvQkFDUixHQUFJLENBQUEsQ0FBQSxDQUFBLEVBQUE7cUJBQ0gsR0FBSSxDQUFBLENBQUEsQ0FBQSxFQUFBO3NCQUNKLEdBQUssQ0FBQSxDQUFBLENBQUEsRUFBQTtvQ0FDQyxHQUFXLENBQUEsQ0FBQSxDQUFBLEVBQUE7O0FBQ1csR0FBQSxLQUFBLEVBQUEsZUFBQSxHQUFBLENBQUEsMEJBQUEsV0FBQSxHQUFJLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxjQUFBLEdBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxLQUFLLElBQUksRUFBRSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBUGpFLE1BVUssQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBVEMsaUJBQWlCO2tEQUNqQixHQUFXLENBQUEsQ0FBQSxDQUFBOzBEQUNSLEdBQUksQ0FBQSxDQUFBLENBQUEsRUFBQTsyREFDSCxHQUFJLENBQUEsQ0FBQSxDQUFBLEVBQUE7NkRBQ0osR0FBSyxDQUFBLENBQUEsQ0FBQSxFQUFBO2lGQUNDLEdBQVcsQ0FBQSxDQUFBLENBQUEsRUFBQTtBQUNXLElBQUEsQ0FBQSxDQUFBLE9BQUEsSUFBQSxLQUFBLHFCQUFBLEVBQUEsSUFBQSxlQUFBLE1BQUEsZUFBQSxHQUFBLENBQUEsMEJBQUEsV0FBQSxHQUFJLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxjQUFBLEdBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxLQUFLLElBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLGVBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FicEQsSUFBQSxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFBLEVBQUEsS0FBSyxHQUFHLGNBQWEsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUNyQixDQUFBLElBQUEsRUFBQSxJQUFJLEdBQUcsRUFBQSxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ1AsQ0FBQSxJQUFBLEVBQUEsV0FBVyxHQUFHLENBQUEsRUFBQSxHQUFBLE9BQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQXpCLE1BQStCLENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7R0FDL0IsTUFBOEIsQ0FBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpRUFGSixHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUdBQVAsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ0NqQyxNQUFtQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ25DLE1BQW1ELENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7R0FDbkQsTUFBa0MsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOztHQUNsQyxNQUFvQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ3BDLE1BQW9DLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkRBTGQsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lHQUFQLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQzdCLE1BQThELENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZEQUR4QyxHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUdBQVAsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NDN0IsTUFBcUIsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOztHQUNyQixNQUFzQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ3RDLE1BQXFCLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7R0FDckIsTUFBdUMsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUVBSmIsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lHQUFQLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQ2pDLE1BQWlILENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJEQUQ3RixHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUdBQVAsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ0MzQixNQUFvQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ3BDLE1BQW9DLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0RBRm5CLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpR0FBUCxHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkMrQ2YsR0FBTyxDQUFBLENBQUEsQ0FBQSxnQkFBSSxHQUFPLENBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRTtlQUFHLEdBQU8sQ0FBQSxDQUFBLENBQUE7Z0JBQUcsR0FBUSxDQUFBLENBQUEsQ0FBQSxJQUFBLEVBQUEsQ0FBQTs7Ozs7Ozs7Ozs7a0VBUnhDLEdBQVMsQ0FBQSxDQUFBLENBQUE7QUFBRyxLQUFBLGFBQWEsZUFBQyxHQUFTLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FBSSxDQUFDLENBQUEsQ0FBQTs7d0NBQ3hDLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0gsR0FBQSxZQUFBLENBQUEsR0FBQSxFQUFBLFdBQUEsWUFBQSxHQUFLLFFBQUssUUFBUSxDQUFBLENBQUE7aURBQ2pCLEdBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7OztBQUNYLGVBQUEsR0FBTSxRQUFLLENBQUM7OEJBQWdCLEdBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7TUFBUSxRQUFROzs7Ozs7O0FBQy9DLGNBQUEsR0FBSyxRQUFLLENBQUM7NkJBQWdCLEdBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7TUFBUSxRQUFROzs7OztHQVByRSxNQVdNLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7OzttREFITSxHQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7bUZBRWQsR0FBTyxDQUFBLENBQUEsQ0FBQSxnQkFBSSxHQUFPLENBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRTtpQkFBRyxHQUFPLENBQUEsQ0FBQSxDQUFBO2tCQUFHLEdBQVEsQ0FBQSxDQUFBLENBQUEsSUFBQSxFQUFBLENBQUEsRUFBQSxHQUFBLENBQUEsU0FBQSxHQUFBLFNBQUE7bUdBUnhDLEdBQVMsQ0FBQSxDQUFBLENBQUE7QUFBRyxLQUFBLGFBQWEsZUFBQyxHQUFTLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FBSSxDQUFDLENBQUEsRUFBQTs7Ozs7eUNBQ3hDLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7O0FBQ0gsSUFBQSxZQUFBLENBQUEsR0FBQSxFQUFBLFdBQUEsWUFBQSxHQUFLLFFBQUssUUFBUSxDQUFBLENBQUE7Ozs7a0RBQ2pCLEdBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7O0FBQ1gsZ0JBQUEsR0FBTSxRQUFLLENBQUM7K0JBQWdCLEdBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7T0FBUSxRQUFROzs7Ozs7Ozs7QUFDL0MsZUFBQSxHQUFLLFFBQUssQ0FBQzs4QkFBZ0IsR0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQTtPQUFRLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FWaEQsR0FBSyxDQUFBLENBQUEsQ0FBQTs2QkFBZ0IsR0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQTtNQUFRLFFBQVE7Ozs7O0dBRi9ELE1BR0UsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7O2VBRG1CLEdBQUssQ0FBQSxDQUFBLENBQUE7OEJBQWdCLEdBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7T0FBUSxRQUFROzs7Ozs7Ozs7Ozs7Ozs7QUFINUQsRUFBQSxpQkFBQSxHQUFRLFFBQUssT0FBTyxFQUFBLE9BQUFDLGlCQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbEJkLFNBQUEsYUFBYSxDQUFDLE1BQWMsRUFBQTtBQUMvQixDQUFBLElBQUEsTUFBTSxJQUFJLENBQUMsRUFBQTtTQUNOLENBQUMsQ0FBQTtBQUNDLEVBQUEsTUFBQSxJQUFBLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBQTtTQUMxQixNQUFNLENBQUE7O1NBRU4sQ0FBQyxDQUFBOzs7OztBQW5CRCxDQUFBLElBQUEsRUFBQSxRQUFRLEdBQVcsRUFBRSxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ3JCLENBQUEsSUFBQSxFQUFBLFNBQVMsR0FBVyxFQUFFLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDdEIsQ0FBQSxJQUFBLEVBQUEsT0FBTyxJQUFZLENBQUMsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUNwQixDQUFBLElBQUEsRUFBQSxTQUFTLEdBQVcsQ0FBQyxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ3JCLENBQUEsSUFBQSxFQUFBLFNBQVMsR0FBWSxLQUFLLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDMUIsQ0FBQSxJQUFBLEVBQUEsS0FBSyxHQUFXLENBQUMsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUNqQixDQUFBLElBQUEsRUFBQSxNQUFNLEdBQVcsQ0FBQyxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ2xCLENBQUEsSUFBQSxFQUFBLE9BQU8sR0FBVyxFQUFFLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDcEIsS0FBK0QsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQWVwRSxDQUFBLE1BQUEsUUFBUSxHQUFHLHFCQUFxQixFQUFBLENBQUE7O09BQ2hDLFdBQVcsR0FBQSxNQUFBO0FBQ1gsRUFBQSxJQUFBLEtBQUssS0FBSyxVQUFVLEVBQUE7QUFDdEIsR0FBQSxRQUFRLENBQUMsY0FBYyxFQUFHLENBQUEsT0FBTyxFQUFFLFNBQVMsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQytONUIsRUFBQSxRQUFBLFVBQUEsR0FBRyxLQUFDLEtBQUs7QUFDUixFQUFBLFNBQUEsd0JBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE1BQU07QUFDckMsRUFBQSxPQUFBLHdCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxPQUFPO0FBQ2xDLEVBQUEsU0FBQSx3QkFBQSxHQUFpQixDQUFDLENBQUEsQ0FBQSxTQUFBLEdBQUcsQ0FBQyxFQUFBLENBQUEsQ0FBQSxLQUFLLEVBQUUsU0FBUztBQUN4QyxFQUFBLE9BQUEsd0JBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE9BQU87QUFDdEMsRUFBQSxLQUFBLFVBQUEsR0FBRyxLQUFDLEtBQUs7QUFDUixFQUFBLE1BQUEsVUFBQSxHQUFHLEtBQUMsTUFBTTs7O0FBQ0YsQ0FBQSwwQkFBQSxHQUFpQixDQUFDLENBQUEsQ0FBQSxTQUFBLEdBQUcsQ0FBQyxFQUFBLENBQUEsQ0FBQSxLQUFLLEVBQUUsTUFBTSxLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQW5DLEVBQUEsaUJBQUEsQ0FBQSxTQUFBLHlCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxNQUFNLENBQUE7OztBQUN2QyxDQUFBLDBCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxLQUFLLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBbEMsRUFBQSxpQkFBQSxDQUFBLEtBQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLEtBQUssQ0FBQTs7Ozs7O29EQUM3QixHQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7OztBQVRyQixHQUFBLElBQUEsS0FBQSxzQkFBQSxDQUFBLEVBQUEsbUJBQUEsQ0FBQSxRQUFBLFdBQUEsR0FBRyxLQUFDLEtBQUssQ0FBQTtBQUNSLEdBQUEsSUFBQSxLQUFBLHlDQUFBLENBQUEsRUFBQSxtQkFBQSxDQUFBLFNBQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE1BQU0sQ0FBQTtBQUNyQyxHQUFBLElBQUEsS0FBQSx5Q0FBQSxDQUFBLEVBQUEsbUJBQUEsQ0FBQSxPQUFBLHlCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxPQUFPLENBQUE7QUFDbEMsR0FBQSxJQUFBLEtBQUEseUNBQUEsQ0FBQSxFQUFBLG1CQUFBLENBQUEsU0FBQSx5QkFBQSxHQUFpQixDQUFDLENBQUEsQ0FBQSxTQUFBLEdBQUcsQ0FBQyxFQUFBLENBQUEsQ0FBQSxLQUFLLEVBQUUsU0FBUyxDQUFBO0FBQ3hDLEdBQUEsSUFBQSxLQUFBLHlDQUFBLENBQUEsRUFBQSxtQkFBQSxDQUFBLE9BQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE9BQU8sQ0FBQTtBQUN0QyxHQUFBLElBQUEsS0FBQSxzQkFBQSxDQUFBLEVBQUEsbUJBQUEsQ0FBQSxLQUFBLFdBQUEsR0FBRyxLQUFDLEtBQUssQ0FBQTtBQUNSLEdBQUEsSUFBQSxLQUFBLHNCQUFBLENBQUEsRUFBQSxtQkFBQSxDQUFBLE1BQUEsV0FBQSxHQUFHLEtBQUMsTUFBTSxDQUFBOzs7O0FBQ0YsSUFBQSxtQkFBQSxDQUFBLFNBQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE1BQU0sQ0FBQTs7Ozs7O0FBQ3ZDLElBQUEsbUJBQUEsQ0FBQSxLQUFBLHlCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxLQUFLLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBVjNDLEdBQUcsQ0FBQSxFQUFBLENBQUEsQ0FBQTs7O2tDQUFSLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkFBQyxHQUFHLENBQUEsRUFBQSxDQUFBLENBQUE7OztpQ0FBUixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7OzswQkFBSixNQUFJLEVBQUEsQ0FBQSxHQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7OztvQ0FBSixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBREQsQ0FBQSxJQUFBLFlBQUEsZUFBQSxHQUFPLEtBQUMsSUFBSSxDQUFBOzs7a0NBQWpCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBREksR0FBQSxJQUFBLENBQUEsR0FBQSxFQUFBLE9BQUEsRUFBQSxlQUFBLEdBQUEsRUFBQSxJQUFBLGFBQUEsYUFBQSxHQUFPLEtBQUMsSUFBSSxDQUFBLEdBQUEsZ0JBQUEsQ0FBQSxDQUFBLENBQUE7OztHQUF4QixNQWtCTSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUFqQkcsSUFBQSxZQUFBLGVBQUEsR0FBTyxLQUFDLElBQUksQ0FBQTs7O2lDQUFqQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7OzswQkFBSixNQUFJLEVBQUEsQ0FBQSxHQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7OztBQURJLEdBQUEsSUFBQSxDQUFBLE9BQUEsSUFBQSxLQUFBLHNCQUFBLENBQUEsSUFBQSxlQUFBLE1BQUEsZUFBQSxHQUFBLEVBQUEsSUFBQSxhQUFBLGFBQUEsR0FBTyxLQUFDLElBQUksQ0FBQSxHQUFBLGdCQUFBLENBQUEsQ0FBQSxFQUFBOzs7Ozs7O29DQUNwQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FDQUZILEdBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7O2dDQUFuQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7NENBMEJlLEVBQUUsRUFBQSxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7YUFDZixnQkFFUixDQUFBLENBQUE7Ozs7OzRDQTlCdUQsYUFBYSxDQUFBLENBQUE7OztHQUF0RSxNQStCTSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7R0FUSixNQVFNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBSkosTUFFTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7OztvQ0EzQkQsR0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7K0JBQW5CLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7O3dCQUFKLE1BQUksRUFBQSxDQUFBLEdBQUEsV0FBQSxDQUFBLE1BQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7O2tDQUFKLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBck9GLElBQUEsYUFBYSxHQUFXLG1CQUFtQixDQUFBOzs7Ozs7O09BTHBDLGVBQThCLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FHOUIsY0FBd0IsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUN4QixpQkFBaUIsR0FBQSxFQUFBLEVBQUEsR0FBQSxPQUFBLENBQUE7O0FBb0JuQixDQUFBLFNBQUEsYUFBYSxDQUFDLFFBQWdCLEVBQUUsSUFBM0MsR0FBbUUsTUFBTSxFQUFBO0FBQzVELEVBQUEsS0FBQSxJQUFBLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFBLEVBQUE7QUFFaEQsR0FBQSxJQUFBLElBQUksS0FBSyxNQUFNLElBQ2YsUUFBUSxDQUFDLGlCQUFpQixFQUFPLEtBQUEsT0FBTyxDQUFDLENBQUMsQ0FBRSxDQUFBLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQSxFQUFBO1dBRTFELE9BQU8sQ0FBQTtBQUVkLElBQUEsTUFBQSxJQUFBLElBQUksS0FBSyxNQUFNLElBQ2YsUUFBUSxDQUFDLGlCQUFpQixFQUFPLEtBQUEsT0FBTyxDQUFDLENBQUMsQ0FBRSxDQUFBLElBQUksQ0FBQyxpQkFBaUIsRUFBQSxJQUNsRSxRQUFRLENBQUMsaUJBQWlCLEVBQUEsQ0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDL0MsS0FBQSxPQUFPLENBQUMsQ0FBQyxDQUFFLENBQUEsR0FBRyxDQUFDLGlCQUFpQixFQUFBLEVBQUE7V0FFM0IsT0FBTyxDQUFBO0FBQ0wsSUFBQSxNQUFBLElBQUEsUUFBUSxLQUFLLE9BQU8sRUFBQTtBQUNyQixJQUFBLE9BQUEsQ0FBQSxPQUFPLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7QUFLM0MsQ0FBQSxTQUFBLFlBQVksQ0FDbkIsY0FBd0IsRUFDeEIsZUFBOEIsRUFDOUIscUJBQStCLEVBQUE7TUFFM0IsWUFBWSxHQUFBLEVBQUEsQ0FBQTs7QUFXUCxFQUFBLEtBQUEsSUFBQSxPQUFPLElBQUksY0FBYyxFQUFBO1lBQ3ZCLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFBO0FBQ2pCLElBQUEsS0FBQSxJQUFBLEdBQUcsSUFBSSxHQUFHLEVBQUE7U0FDYixVQUFVLEdBQVEsR0FBRyxDQUFDLFVBQVU7QUFDaEMsT0FBQSxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUE7T0FDL0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQTs7U0FDdkIsU0FBUyxHQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUE7U0FDN0IsWUFBaUIsQ0FBQTs7U0FFakIsR0FBRyxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUE7TUFDdkIsWUFBWSxHQUFBO09BQ1YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLO0FBQ2pCLE9BQUEsT0FBTyxHQUFHLENBQUM7QUFDWCxPQUFBLEtBQUssRUFBRSxPQUFPOzs7QUFHaEIsTUFBQSxTQUFTLEdBQUcsR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFBOzs7QUFFL0QsTUFBQSxJQUFBLFNBQVMsS0FBSyxTQUFTLEVBQUE7QUFDekIsT0FBQSxTQUFTLEdBQUcsTUFBTSxDQUFBOztPQUNsQixZQUFZLEdBQUE7QUFDVixRQUFBLE1BQU0sRUFBRSxNQUFNO0FBQ2QsUUFBQSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSztRQUN2QyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNyQixRQUFBLE9BQU8sRUFBRSxNQUFNOztBQUVSLE9BQUEsTUFBQSxJQUFBLFNBQVMsS0FBSyxNQUFNLEVBQUE7V0FDekJELGlCQUFRLENBQUMsT0FBTyxLQUFLLElBQUksRUFBQTtRQUMzQixZQUFZLEdBQUE7QUFDVixTQUFBLE1BQU0sRUFBRSxHQUFHO0FBQ1gsU0FBQSxPQUFPLEVBQUUsRUFBRTtBQUNYLFNBQUEsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUs7QUFDdkMsU0FBQSxPQUFPLEVBQUUsR0FBRzs7O1FBR2QsWUFBWSxHQUFBO0FBQ1YsU0FBQSxNQUFNLEVBQUUsS0FBSztBQUNiLFNBQUEsS0FBSyxFQUFFLFVBQVU7QUFDakIsU0FBQSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSztTQUN2QyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNyQixTQUFBLE9BQU8sRUFBRSxHQUFHOzs7QUFHUCxPQUFBLE1BQUEsSUFBQSxTQUFTLEtBQUssS0FBSyxFQUFBO1dBQ3hCQSxpQkFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUE7UUFDM0IsWUFBWSxHQUFBO0FBQ1YsU0FBQSxNQUFNLEVBQUUsR0FBRztBQUNYLFNBQUEsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUs7QUFDdkMsU0FBQSxPQUFPLEVBQUUsRUFBRTtBQUNYLFNBQUEsT0FBTyxFQUFFLEdBQUc7OztBQUdkLFFBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQTs7UUFDakIsWUFBWSxHQUFBO0FBQ1YsU0FBQSxNQUFNLEVBQUUsS0FBSztBQUNiLFNBQUEsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUs7U0FDdkMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7Ozs7T0FJekIsWUFBWSxHQUFBO0FBQ1YsUUFBQSxNQUFNLEVBQUUsU0FBUztRQUNqQixPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNyQixRQUFBLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxLQUFLO1FBQ3ZDLE9BQU8sRUFBRSxHQUFHLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxPQUFPLEdBQUcsRUFBRTs7Ozs7O0FBTXRELEtBQUEsSUFBQSxlQUFlLEtBQUssSUFBSSxFQUFBO0FBRXhCLE1BQUEsSUFBQSxZQUFZLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUNyQyxLQUFBLGVBQWUsQ0FBQyxpQkFBaUIsRUFBQSxFQUFBO09BRWpDLFlBQVksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBOzs7OztTQUs3QixxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFBO0FBQzlCLE1BQUEsSUFBQSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQSxFQUFBO09BQ3BELFlBQVksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBOzs7O0FBSWpDLEtBQUEsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFBOzs7OztTQUtyQyxZQUFZLENBQUE7OztVQUdaLGdCQUFnQixDQUN2QixlQUE4QixFQUM5QixZQVNDLEVBQUE7O0FBR1EsRUFBQSxLQUFBLElBQUEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFBLEVBQUE7QUFDekMsR0FBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUcsQ0FBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLEVBQUEsaUJBQUEsQ0FBQSxDQUFBOzs7QUFHaEMsR0FBQSxJQUFBLFNBQVMsR0FBRyxDQUFDLENBQUE7O0FBRVIsR0FBQSxLQUFBLElBQUEsT0FBTyxJQUFJLGVBQWUsRUFBQTthQUN4QixNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBQTtTQUU5QixNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFBLEtBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBQSxFQUFBO01BRWxFLFNBQVMsRUFBQSxDQUFBOzs7Y0FFRixRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBQTtBQUVqQyxNQUFBLElBQUEscUJBQXFCLENBQUUsQ0FBQSxRQUFRLENBQUcsQ0FBQSxDQUFBLENBQUMsQ0FBRSxDQUFBLGlCQUFpQixFQUN0RCxLQUFBLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQSxNQUFNLENBQUMsaUJBQWlCLEVBQUEsRUFBQTtPQUUvQixTQUFTLEVBQUEsQ0FBQTs7Ozs7O0FBS2pCLEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFHLENBQUEsQ0FBQSxNQUFNLEdBQUcsU0FBUyxFQUFBLGlCQUFBLENBQUEsQ0FBQTs7OztBQUl2QyxDQUFBLFNBQUEsY0FBYyxDQUFDLENBQWMsRUFBQTtBQUNoQyxFQUFBLElBQUEsT0FBTyxHQUFXLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUE7QUFDckMsRUFBQSxJQUFBLFNBQVMsR0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBRTlCLEVBQVksaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUc7QUFDMUMsRUFBWSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSTs7O0FBRzNDLEVBQUEsSUFBQSxPQUFPLEtBQUssRUFBRSxJQUFJLE9BQU8sS0FBSyxFQUFFLElBQUksT0FBTyxLQUFLLEVBQUUsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFBOztPQUdsRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFBLEVBQUE7cUNBQ3JDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDdkMsUUFBUSxJQUFLLFFBQVEsS0FBSyxTQUFTLENBQUEsRUFBQSxnQkFBQSxDQUFBLENBQUE7OztxQ0FJdEMsZ0JBQWdCLEdBQUEsQ0FBQSxHQUFPLGdCQUFnQixFQUFFLFNBQVMsQ0FBQSxFQUFBLGdCQUFBLENBQUEsQ0FBQTs7OztBQUloRCxHQUFBLElBQUEsVUFBVSxLQUFLLFNBQVMsRUFBQTtBQUMxQixJQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTs7QUFFZixJQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLFNBQVMsRUFBQSxVQUFBLENBQUEsQ0FBQTs7Ozs7O0FBMkJGLEVBQUEsSUFBQSxNQUFBLENBQUEsRUFBQSxDQUFBLFNBQUEsQ0FBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQSxLQUFBLENBQUEsRUFBQTtBQUFuQyxHQUFBLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFBLEtBQUEsQ0FBQTs7Ozs7O0FBQ3ZDLEVBQUEsSUFBQSxNQUFBLENBQUEsRUFBQSxDQUFBLFNBQUEsQ0FBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQSxLQUFBLENBQUEsRUFBQTtBQUFsQyxHQUFBLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFBLEtBQUEsQ0FBQTs7Ozs7QUFVdEMsQ0FBQSxNQUFBLGFBQUEsR0FBQSxNQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsUUFBUSxDQUFBLENBQUE7Ozs7Ozs7Ozs7R0EvQnBFLFlBQUEsQ0FBQSxDQUFBLEVBQUUsaUJBQWlCLEdBQUcsWUFBWSxDQUNqQyxjQUFjLEVBQ2QsVUFBVSxFQUNWLGdCQUFnQixDQUFBLENBQUEsQ0FBQTs7OztBQUxsQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkx4RCxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUU7QUFDdkIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoRixDQUFDO0FBSUQsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JCLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzNCOztBQ2xDQSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDdEcsSUFBSSxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztBQUMxQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzFELElBQUksTUFBTSxFQUFFLEdBQUcsY0FBYyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUM5QyxJQUFJLE9BQU87QUFDWCxRQUFRLEtBQUs7QUFDYixRQUFRLFFBQVE7QUFDaEIsUUFBUSxNQUFNO0FBQ2QsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDcEcsS0FBSyxDQUFDO0FBQ04sQ0FBQztBQUNELFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUdFLFFBQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN6RSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzlDLElBQUksT0FBTztBQUNYLFFBQVEsS0FBSztBQUNiLFFBQVEsUUFBUTtBQUNoQixRQUFRLE1BQU07QUFDZCxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEtBQUssQ0FBQztBQUNOLENBQUM7QUFlRCxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUM1RSxJQUFJLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLElBQUksTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ25DLElBQUksTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QyxJQUFJLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQsSUFBSSxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNELElBQUksTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuRCxJQUFJLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQsSUFBSSxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDOUQsSUFBSSxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNwRSxJQUFJLE9BQU87QUFDWCxRQUFRLEtBQUs7QUFDYixRQUFRLFFBQVE7QUFDaEIsUUFBUSxNQUFNO0FBQ2QsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQjtBQUNyQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3hELFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztBQUNoRCxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7QUFDdEQsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO0FBQ3BELFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO0FBQzFELFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDO0FBQ2hFLEtBQUssQ0FBQztBQUNOOzs7QUN4RkEsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBdUIsQ0FBQSxZQUFBLEdBQUEsS0FBSyxDQUFDLENBQUM7QUFDOUIsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUNyQyxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQ25DLFFBQVEsT0FBTyxJQUFJO0FBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDeEMsWUFBWSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7QUFDbkMsWUFBWSxPQUFPLEVBQUUsQ0FBQztBQUN0QixLQUFLLENBQUM7QUFDTixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELElBQUksT0FBTztBQUNYLFFBQVEsT0FBTyxFQUFFLFlBQVk7QUFDN0IsWUFBWSxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRSxTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sQ0FBQztBQUNELE9BQUEsQ0FBQSxZQUFBLEdBQXVCLFlBQVksQ0FBQztBQUNwQzs7O0FDbEJPLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDMUMsRUFBRSxJQUFJLE1BQUs7QUFDWDtBQUNBLEVBQUUsTUFBTSxlQUFlLEdBQUcsTUFBTTtBQUNoQyxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTTtBQUM3QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBQztBQUM1RCxLQUFLLEVBQUUsUUFBUSxFQUFDO0FBQ2hCLElBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxhQUFhLEdBQUcsTUFBTTtBQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDaEIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFDO0FBQzFELEtBQUssTUFBTTtBQUNYLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBQztBQUN6QixLQUFLO0FBQ0wsSUFBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBQztBQUNyRCxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFDO0FBQ2pEO0FBQ0EsRUFBRSxPQUFPO0FBQ1QsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLFlBQVc7QUFDNUIsS0FBSztBQUNMLElBQUksT0FBTyxHQUFHO0FBQ2QsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBQztBQUM1RCxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFDO0FBQ3hELEtBQUs7QUFDTCxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQzhLZSxDQUFBLElBQUEsVUFBQSxHQUFBLGFBQWEsc0JBQUMsR0FBZ0IsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Z0NBQW5DLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7OztBQWFELENBQUEsSUFBQSxRQUFBLGtCQUFBLEdBQVUsU0FBSyxFQUFFLElBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYmYsSUFBQSxVQUFBLEdBQUEsYUFBYSxzQkFBQyxHQUFnQixDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUE7OzsrQkFBbkMsTUFBSSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBQUosTUFBSSxFQUFBLENBQUEsR0FBQSxXQUFBLENBQUEsTUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUE7Ozs7Ozs7QUFhRCxHQUFBLG1CQUFBLEdBQVUsU0FBSyxFQUFFLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQWJwQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBVUUsR0FBUSxDQUFBLEVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQVRkLE1BVUMsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztpR0FESyxHQUFRLENBQUEsRUFBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsRUFBQSxPQUFBLENBQUEsQ0FBQTs7Ozs7OztBQVBBLElBQUEsU0FBQSxHQUFBLG9CQUFBLENBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxHQUFHLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7OztBQUNiLEdBQUEsU0FBQSxHQUFBLHFCQUFBLENBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxFQUFFLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0J0QixDQUFBLElBQUEsT0FBQSxHQUFBLGdCQUFBLEdBQVUsUUFBSSxjQUFjO0FBQzFCLEdBQUEsY0FBYyxnQkFBQyxHQUFVLENBQUEsRUFBQSxDQUFBLENBQUE7a0JBQ3pCLEdBQVUsQ0FBQSxFQUFBLENBQUEsQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN2QixtQkFBQSxHQUFVLEtBQUMsV0FBVyxFQUFBO21CQUN0QixHQUFVLENBQUEsRUFBQSxDQUFBLElBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FWaEIsTUFXTSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUFMRixHQUFBLElBQUEsQ0FBQSxDQUFBLE9BQUEsSUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLGtCQUFBLElBQUEsS0FBQSxPQUFBLE1BQUEsT0FBQSxHQUFBLGdCQUFBLEdBQVUsUUFBSSxjQUFjO0FBQzFCLEtBQUEsY0FBYyxnQkFBQyxHQUFVLENBQUEsRUFBQSxDQUFBLENBQUE7b0JBQ3pCLEdBQVUsQ0FBQSxFQUFBLENBQUEsQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN2QixxQkFBQSxHQUFVLEtBQUMsV0FBVyxFQUFBO3FCQUN0QixHQUFVLENBQUEsRUFBQSxDQUFBLElBQUEsRUFBQSxDQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsRUFBQSxPQUFBLENBQUEsQ0FBQTs7Ozs7OztBQVRGLElBQUEsU0FBQSxHQUFBLG9CQUFBLENBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxHQUFHLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7OztBQUNiLEdBQUEsU0FBQSxHQUFBLHFCQUFBLENBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxFQUFFLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdGTixHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsYUFBYSxDQUFBLENBQUE7Ozs7OztBQWdCNUIsR0FBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLFlBQVksQ0FBQSxDQUFBOzs7Ozs7QUFrQjNCLEdBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxZQUFBLHFCQUFBLEdBQWMsSUFBQyxlQUFlLENBQUEsQ0FBQTs7Ozs7O0FBbUI5QixHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsbUJBQW1CLENBQUEsQ0FBQTs7Ozs7O0FBb0JsQyxHQUFBLFlBQUEsQ0FBQSxLQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsVUFBVSxDQUFBLENBQUE7Ozs7K0ZBL0ViLEdBQVksQ0FBQSxDQUFBLENBQUEsR0FBRyxTQUFTLEdBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQTs7O0dBVG5FLE1BMkdNLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtHQWhHSixNQTZGTSxDQUFBLEtBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQTtHQTVGSixNQWVNLENBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBZEosTUFVTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQUxKLE1BSUUsQ0FBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7QUFEYyxHQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxhQUFhLENBQUE7O0dBRzlDLE1BRU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7O0dBRVIsTUFpQk0sQ0FBQSxLQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0FoQkosTUFjTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQUxKLE1BSUUsQ0FBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7QUFEYyxHQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxZQUFZLENBQUE7O0dBRzdDLE1BQXFFLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBOztHQUV2RSxNQWtCTSxDQUFBLEtBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQWpCSixNQWFNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBTEosTUFJRSxDQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtBQURjLEdBQUEsTUFBQSxDQUFBLE9BQUEsc0JBQUEsR0FBYyxJQUFDLGVBQWUsQ0FBQTs7R0FHaEQsTUFFTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7R0FFUixNQW1CTSxDQUFBLEtBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQTtHQWxCSixNQWNNLENBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBTEosTUFJRSxDQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtBQURjLEdBQUEsTUFBQSxDQUFBLE9BQUEsc0JBQUEsR0FBYyxJQUFDLG1CQUFtQixDQUFBOztHQUdwRCxNQUVNLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOztHQUVSLE1Ba0JNLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBO0dBakJKLE1BYU0sQ0FBQSxLQUFBLEVBQUEsS0FBQSxDQUFBLENBQUE7R0FMSixNQUlFLENBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBO0FBRGMsR0FBQSxNQUFBLENBQUEsT0FBQSxzQkFBQSxHQUFjLElBQUMsVUFBVSxDQUFBOztHQUczQyxNQUVNLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOztHQUlWLE1BQTRDLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOzs7Ozs7b0VBMUY1QixHQUFvQyxDQUFBLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztBQUs5QixJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxhQUFhLENBQUE7Ozs7QUFOMUIsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLGFBQWEsQ0FBQSxDQUFBOzs7O0FBMEI5QixJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxZQUFZLENBQUE7Ozs7QUFWekIsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLFlBQVksQ0FBQSxDQUFBOzs7O0FBMkI3QixJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxlQUFlLENBQUE7Ozs7QUFUNUIsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLGVBQWUsQ0FBQSxDQUFBOzs7O0FBNkJoQyxJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxtQkFBbUIsQ0FBQTs7OztBQVZoQyxJQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsbUJBQW1CLENBQUEsQ0FBQTs7OztBQTZCcEMsSUFBQSxNQUFBLENBQUEsT0FBQSxzQkFBQSxHQUFjLElBQUMsVUFBVSxDQUFBOzs7O0FBVHZCLElBQUEsWUFBQSxDQUFBLEtBQUEsRUFBQSxZQUFBLHFCQUFBLEdBQWMsSUFBQyxVQUFVLENBQUEsQ0FBQTs7O29KQS9FYixHQUFZLENBQUEsQ0FBQSxDQUFBLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQSxDQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpSGpFLE1BQTBELENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7O0FBQXpDLEtBQUEsVUFBQSxHQUFBLG9CQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxHQUFHLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0NBSDNCLEdBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUFDLFVBQVEsQ0FBQSxDQUFBO3FDQUFDLEdBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUFDLE9BQ25ELENBQUEsQ0FBQTs7O0dBRkEsTUFFTyxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7aUZBREosR0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO21GQUFVLEdBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7QUFEakMsS0FBQSxVQUFBLEdBQUEsb0JBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEVBQUEsUUFBUSxFQUFFLEdBQUcsRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXhNekIsQ0FBQSxJQUFBLFNBQUEsR0FBQSxzQkFBQSxHQUFnQixLQUFDLE1BQU0sR0FBRyxDQUFDLG1CQUFJLEdBQVUsU0FBSyxJQUFJLEtBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTtvREEwRDlCLEVBQUUsRUFBQSxFQUFBLENBQUEsQ0FBQTs0Q0FNTixFQUFFLEVBQUEsRUFBQSxDQUFBLENBQUE7OENBZVAsRUFBRSxFQUFBLEVBQUEsQ0FBQSxDQUFBO2tDQUVqQixHQUFZLENBQUEsQ0FBQSxDQUFBLElBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTs7O0FBc0hWLEVBQUEsNEJBQUEsR0FBbUIsUUFBSyxDQUFDLEVBQUEsT0FBQUQsaUJBQUEsQ0FBQTtBQUlwQixFQUFBLDRCQUFBLEdBQW1CLFFBQUssQ0FBQyxFQUFBLE9BQUFFLG1CQUFBLENBQUE7Ozs7O2dEQVVoQixFQUFFLEVBQUEsRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dHQTNLWSxHQUF3QixDQUFBLENBQUEsQ0FBQSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBOztpRkFDdEQsR0FBd0IsQ0FBQSxDQUFBLENBQUE7S0FDaEMsc0NBQXNDO2NBRXBDLHFCQUFxQixDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSx5Q0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7O3VEQWhEQSxHQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7aUVBMEVuRCxHQUFZLENBQUEsQ0FBQSxDQUFBLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQSxDQUFBOzs7Ozs7OztvRUEwSS9CLEdBQWUsQ0FBQSxDQUFBLENBQUEsR0FBRyxxQkFBcUIsR0FBRyxFQUFFLENBQUEsQ0FBQTs7OztHQXROdkQsTUEyTk0sQ0FBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBO0dBek5KLE1BdUVNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBdEVKLE1BOEJNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBOzs7R0FDTixNQXNDTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQXJDSixNQU9FLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBO3FDQUpZLEdBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7R0FLcEIsTUE0Qk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0ExQkosTUFrQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7OztHQUlOLE1BRU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7OztHQUtaLE1BVVMsQ0FBQSxJQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7Ozs7O0dBa0hULE1BWU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7OztHQUNOLE1BT1MsQ0FBQSxJQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozt3REF0S1MsR0FBd0IsQ0FBQSxFQUFBLENBQUEsQ0FBQTtpREFDbkIsR0FBRyxDQUFBLENBQUE7OzsyQ0FjbUIsR0FBVyxDQUFBLEVBQUEsQ0FBQSxDQUFBOztzREFvSjVDLEdBQW1CLENBQUEsRUFBQSxDQUFBLENBQUE7bURBdk5rQixHQUFpQixDQUFBLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7O0FBSXpELEdBQUEseUJBQUEsR0FBZ0IsS0FBQyxNQUFNLEdBQUcsQ0FBQyxtQkFBSSxHQUFVLFNBQUssSUFBSSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2REFrQ3pDLEdBQU0sQ0FBQSxDQUFBLENBQUEsRUFBQTtzQ0FBTixHQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7OytKQVFXLEdBQXdCLENBQUEsQ0FBQSxDQUFBLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQSxDQUFBLEVBQUE7Ozs7Z0pBQ3RELEdBQXdCLENBQUEsQ0FBQSxDQUFBO0tBQ2hDLHNDQUFzQztjQUVwQyxxQkFBcUIsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEseUNBQUEsQ0FBQSxDQUFBLEVBQUE7Ozs7O3dEQWhEQSxHQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7O3NIQTBFbkQsR0FBWSxDQUFBLENBQUEsQ0FBQSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUEsRUFBQTs7Ozt3QkFTbkMsR0FBWSxDQUFBLENBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEhBaUlSLEdBQWUsQ0FBQSxDQUFBLENBQUEsR0FBRyxxQkFBcUIsR0FBRyxFQUFFLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWpZMUMsTUFBOEIsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUc5QixTQUEyQixFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQzNCLENBQUEsSUFBQSxFQUFBLE1BQU0sR0FBVyxFQUFFLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDbkIsbUJBQTJCLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDM0Isa0JBQTBCLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDakMsQ0FBQSxJQUFBLGNBQWMsR0FBWSxLQUFLLENBQUE7T0FFeEIsY0FBOEIsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUU5QixDQUFBLElBQUEsRUFBQSx3QkFBd0IsR0FBWSxLQUFLLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDaEQsQ0FBQSxJQUFBLFlBQVksR0FBWSxLQUFLLENBQUE7QUFDN0IsQ0FBQSxJQUFBLGVBQWUsR0FBWSxLQUFLLENBQUE7O09BRTlCLFdBQVcsR0FBQSxNQUFBO0FBQ1gsRUFBQSxJQUFBLE1BQU0sS0FBSyxFQUFFLEVBQUE7b0NBQ2YsZ0JBQWdCLEdBQUEsRUFBQSxFQUFBLGdCQUFBLENBQUEsQ0FBQTtBQUNoQixHQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUNmLEdBQUEsU0FBUyxDQUFDLEtBQUssRUFBQSxDQUFBOztBQUVmLEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxNQUFNLEdBQUcsRUFBRSxDQUFBLENBQUE7QUFDWCxHQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUEsQ0FBQTs7OztPQUliLHdCQUF3QixHQUFBLE1BQUE7QUFDNUIsRUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLHdCQUF3QixJQUFJLHdCQUF3QixDQUFBLENBQUE7QUFDcEQsRUFBQSxTQUFTLENBQUMsS0FBSyxFQUFBLENBQUE7Ozs7QUFJWCxDQUFBLE1BQUEsUUFBUSxHQUFHLHFCQUFxQixFQUFBLENBQUE7OztVQUc3QixtQkFBbUIsR0FBQTtBQUMxQixFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsZUFBZSxHQUFHLElBQUksQ0FBQSxDQUFBOzs7RUFFdEIsVUFBVTs7QUFDUixJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQSxDQUFBOztHQUN0QixJQUFJOzs7QUFDUCxFQUFBLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBOzs7VUFHcEIsb0NBQW9DLEdBQUE7QUFDM0MsRUFBQSxRQUFRLENBQUMsaUNBQWlDLENBQUEsQ0FBQTs7Ozs7O0FBTXRDLENBQUEsTUFBQSxpQkFBaUIsR0FBSSxDQUFnQixJQUFBOztBQUVoQyxFQUFBLFNBQUEsWUFBWSxDQUFDLFFBQWdCLEVBQUE7UUFDL0IsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQSxFQUFBO3FDQUNyQyxnQkFBZ0IsR0FBQSxDQUFBLEdBQU8sZ0JBQWdCLEVBQUUsUUFBUSxDQUFBLEVBQUEsZ0JBQUEsQ0FBQSxDQUFBOzs7O0FBSTVDLEVBQUEsU0FBQSxjQUFjLENBQUMsUUFBa0IsRUFBQTs7b0NBRXhDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDdkMsY0FBYyxJQUFLLGNBQWMsS0FBSyxRQUFRLENBQUEsRUFBQSxnQkFBQSxDQUFBLENBQUE7OztBQUlqRCxFQUFBLElBQUEsd0JBQXdCLEtBQ3ZCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ3pCLElBQUEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQSxJQUN4QixDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFBLENBQUEsRUFBQTtBQUV0QixHQUFBLFFBQUEsQ0FBQyxDQUFDLEdBQUc7U0FDTixPQUFPO1NBQ04sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQSxFQUFBO0FBQ25DLE1BQUEsY0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFBOztBQUV0QixNQUFBLFlBQVksQ0FBQyxPQUFPLENBQUEsQ0FBQTs7O1NBR25CLEtBQUs7U0FDSixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFBLEVBQUE7QUFDakMsTUFBQSxjQUFjLENBQUMsS0FBSyxDQUFBLENBQUE7O0FBRXBCLE1BQUEsWUFBWSxDQUFDLEtBQUssQ0FBQSxDQUFBOzs7U0FHakIsTUFBTTs7U0FFTCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBLEVBQUE7QUFDbEMsTUFBQSxjQUFjLENBQUMsTUFBTSxDQUFBLENBQUE7O0FBRXJCLE1BQUEsWUFBWSxDQUFDLE1BQU0sQ0FBQSxDQUFBOzs7U0FHbEIsU0FBUztTQUNSLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUEsRUFBQTtBQUNsQyxNQUFBLGNBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBQTs7QUFFckIsTUFBQSxZQUFZLENBQUMsTUFBTSxDQUFBLENBQUE7Ozs7O0FBS3JCLEtBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUE7S0FDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQSxDQUFBOzs7Ozs7YUFLNUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUE7T0FDdkIsd0JBQXdCLEVBQUE7QUFDMUIsSUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLHdCQUF3QixHQUFHLEtBQUssQ0FBQSxDQUFBO0FBQ3ZCLElBQUEsTUFBQSxJQUFBLHdCQUF3QixLQUFLLEtBQUssRUFBQTtBQUMzQyxJQUFBLFNBQVMsQ0FBQyxJQUFJLEVBQUEsQ0FBQTs7YUFFUCxDQUFDLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBQTs7QUFFMUIsR0FBQSxJQUFBLHdCQUF3QixLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssV0FBVyxFQUFBO0FBQ2pFLElBQUEsQ0FBQyxDQUFDLGNBQWMsRUFBQSxDQUFBO0FBQ2hCLElBQUEsZUFBQSxDQUFBLFNBQUEsRUFBQSxVQUFVLEdBQUcsV0FBVyxFQUFBLFVBQUEsQ0FBQSxDQUFBO0FBRXhCLElBQUEsTUFBQSxJQUFBLHdCQUF3QixLQUFLLElBQUksSUFDakMsVUFBVSxLQUFLLFdBQVcsRUFBQTtBQUUxQixJQUFBLENBQUMsQ0FBQyxjQUFjLEVBQUEsQ0FBQTtBQUNoQixJQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUNOLElBQUEsTUFBQSxJQUFBLHdCQUF3QixLQUFLLEtBQUssRUFBQTtBQUN2QyxJQUFBLElBQUEsTUFBTSxLQUFLLEVBQUUsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLENBQUMsRUFBQTtBQUM3QyxLQUFBLElBQUEsVUFBVSxLQUFLLEVBQUUsRUFBQTtBQUNuQixNQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUNOLE1BQUEsTUFBQSxJQUFBLFVBQVUsS0FBSyxFQUFFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQTt1Q0FDekQsZ0JBQWdCLEdBQUEsQ0FBQSxHQUNYLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLEVBQUEsZ0JBQUEsQ0FBQSxDQUFBOzs7O2FBS3ZELENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFBO0FBQ3pCLEdBQUEsQ0FBQyxDQUFDLGNBQWMsRUFBQSxDQUFBO0FBQ1AsR0FBQSxNQUFBLElBQUEsd0JBQXdCLEtBQUssSUFBSSxFQUFBOztBQUV0QyxHQUFBLElBQUEsWUFBWSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBQTs7T0FFMUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUE7QUFDakMsSUFBQSxDQUFDLENBQUMsY0FBYyxFQUFBLENBQUE7O0FBRVosSUFBQSxJQUFBLFlBQVksQ0FBQyxJQUFJLEtBQUssUUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUE7Z0NBQ25ELFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFBLFVBQUEsQ0FBQSxDQUFBOztnQ0FFOUIsVUFBVSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUEsVUFBQSxDQUFBLENBQUE7O2NBRy9CLFlBQVksQ0FBQyxHQUFHLEtBQUssVUFBVSxJQUMvQixZQUFZLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBQTtBQUVoQyxJQUFBLENBQUMsQ0FBQyxjQUFjLEVBQUEsQ0FBQTs7UUFFWixVQUFVLEtBQUssWUFBWSxDQUFDLElBQUksRUFBQTtBQUNsQyxLQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtlQUNOLFVBQVUsS0FBSyxZQUFZLENBQUMsR0FBRyxFQUFBO0FBQ3hDLEtBQUEsZUFBQSxDQUFBLFNBQUEsRUFBQSxVQUFVLEdBQUcsRUFBRSxFQUFBLFVBQUEsQ0FBQSxDQUFBOzs7TUFHZixDQUFDLENBQUMsT0FBTyxJQUFJLGlCQUFpQixDQUFBO01BQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBQTtBQUN4RCxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQTs7Ozs7O21DQWlCaEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUN2QyxjQUFjLElBQUssY0FBYyxLQUFLLFFBQVEsQ0FBQSxFQUFBLGdCQUFBLENBQUEsQ0FBQTtBQUVqRCxFQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUEsQ0FBQTs7O0FBVUEsQ0FBQSxNQUFBLGVBQUEsR0FBQSxNQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTs7O0VBY3hCLE1BQU0sR0FBQSxJQUFBLENBQUEsS0FBQSxDQUFBOzs7Ozs7R0FDUCxTQUFTLEdBQUEsT0FBQSxDQUFBOzs7OztBQUNILENBQUEsTUFBQSxhQUFBLEdBQUEsTUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLGNBQWMsR0FBRyxJQUFJLENBQUEsQ0FBQTtBQUN0QixDQUFBLE1BQUEsWUFBQSxHQUFBLE1BQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxjQUFjLEdBQUcsS0FBSyxDQUFBLENBQUE7OztBQWNsQyxFQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUEsQ0FBQTtBQUNmLEVBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSx3QkFBd0IsR0FBRyxJQUFJLENBQUEsQ0FBQTs7OztBQUcvQixFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsd0JBQXdCLEdBQUcsS0FBSyxDQUFBLENBQUE7Ozs7O0FBcUJ0QyxFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsWUFBWSxJQUFJLFlBQVksQ0FBQSxDQUFBOzs7O0FBMkJOLEVBQUEsY0FBYyxDQUFDLGFBQWEsR0FBQSxJQUFBLENBQUEsT0FBQSxDQUFBOzs7OztBQW9CNUIsRUFBQSxjQUFjLENBQUMsWUFBWSxHQUFBLElBQUEsQ0FBQSxPQUFBLENBQUE7Ozs7O0FBUnpDLEVBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxjQUFjLENBQUMsWUFBWSxHQUFJLENBQUEsY0FBYyxDQUFDLFlBQVksRUFBQSxjQUFBLENBQUEsQ0FBQTtBQUMxRCxFQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUEsQ0FBQTtFQUNuQixtQkFBbUIsRUFBQSxDQUFBOzs7O0FBdUJMLEVBQUEsY0FBYyxDQUFDLGVBQWUsR0FBQSxJQUFBLENBQUEsT0FBQSxDQUFBOzs7OztBQVA1QyxFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsY0FBYyxDQUFDLGVBQWUsR0FBSSxDQUFBLGNBQWMsQ0FBQyxlQUFlLEVBQUEsY0FBQSxDQUFBLENBQUE7QUFDaEUsRUFBQSxNQUFNLENBQUMsWUFBWSxFQUFBLENBQUE7Ozs7QUEwQkwsRUFBQSxjQUFjLENBQUMsbUJBQW1CLEdBQUEsSUFBQSxDQUFBLE9BQUEsQ0FBQTs7Ozs7QUFSaEQsRUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLGNBQWMsQ0FBQyxtQkFBbUIsR0FDL0IsQ0FBQSxjQUFjLENBQUMsbUJBQW1CLEVBQUEsY0FBQSxDQUFBLENBQUE7QUFDckMsRUFBQSxNQUFNLENBQUMsWUFBWSxFQUFBLENBQUE7Ozs7QUF5QkwsRUFBQSxjQUFjLENBQUMsVUFBVSxHQUFBLElBQUEsQ0FBQSxPQUFBLENBQUE7Ozs7O0FBUHZDLEVBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxjQUFjLENBQUMsVUFBVSxHQUFJLENBQUEsY0FBYyxDQUFDLFVBQVUsRUFBQSxjQUFBLENBQUEsQ0FBQTtBQUN0RCxFQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUEsQ0FBQTs7OztDQXhGekIsVUFBVTs7T0FDSixZQUFZLEVBQUE7QUFDZCxJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsWUFBWSxHQUFHLEtBQUssQ0FBQSxDQUFBOzs7RUFFckIsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsTkUsQ0FBQSxJQUFBLE9BQUEsZ0JBQUEsR0FBUSxJQUFDLEVBQUUsR0FBQSxFQUFBLENBQUE7Ozs7Ozs7OztHQURkLE1BRVEsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7O0FBREwsR0FBQSxJQUFBLEtBQUEsdUJBQUEsQ0FBQSxJQUFBLE9BQUEsTUFBQSxPQUFBLGdCQUFBLEdBQVEsSUFBQyxFQUFFLEdBQUEsRUFBQSxDQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsRUFBQSxPQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUFvQk4sQ0FBQSxJQUFBLE9BQUEsb0JBQUEsR0FBWSxlQUFDLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQTs7Ozs7Ozs7QUFGQSxHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsZUFBQSxhQUFBLEdBQU0sS0FBQyxRQUFRLGlCQUNsQyxHQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsY0FBYyxDQUFDLGVBQWUsQ0FBQSxDQUFBOzs7R0FIM0MsTUFLQyxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7QUFERyxHQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLElBQUEsT0FBQSxNQUFBLE9BQUEsb0JBQUEsR0FBWSxlQUFDLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7OztBQUZBLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxlQUFBLGFBQUEsR0FBTSxLQUFDLFFBQVEsaUJBQ2xDLEdBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxjQUFjLENBQUMsZUFBZSxDQUFBLENBQUE7Ozs7Ozs7Ozs7OztBQU52QyxDQUFBLElBQUEsT0FBQSxvQkFBQSxHQUFZLGVBQUMsR0FBTSxDQUFBLEVBQUEsQ0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7OzttREFIRCxHQUFRLENBQUEsQ0FBQSxDQUFBLENBQUMsY0FBYyxDQUN4QyxtQkFBbUIsQ0FBQSxDQUFBOzs7R0FIeEIsTUFNQyxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUFERyxHQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLElBQUEsT0FBQSxNQUFBLE9BQUEsb0JBQUEsR0FBWSxlQUFDLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7OztvREFIRCxHQUFRLENBQUEsQ0FBQSxDQUFBLENBQUMsY0FBYyxDQUN4QyxtQkFBbUIsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFKckIsRUFBQSxJQUFBLE9BQUEsSUFBQSxJQUFBLEVBQUEsT0FBQSxHQUFBLENBQUEsQ0FBQSxpQkFBaUIsY0FBQyxHQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsRUFBRSxhQUFFLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBckJ6QyxDQUFBLElBQUEsUUFBQSxnQkFBQSxHQUFRLElBQUMsVUFBVSxHQUFBLEVBQUEsQ0FBQTs7OztBQUVNLENBQUEsSUFBQSxRQUFBLGdCQUFBLEdBQVEsSUFBQyxPQUFPLEdBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7OzBDQU8xQixFQUFFLEVBQUEsRUFBQSxDQUFBLENBQUE7Ozs7Ozs2QkFHakIsR0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFDLGNBQWMsQ0FBQyxVQUFVLElBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTtBQVE5QixDQUFBLElBQUEsWUFBQSxnQkFBQSxHQUFRLElBQUMsT0FBTyxDQUFBOzs7a0NBQXJCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTNCUSxHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxlQUFBLEdBQVEsSUFBQyxrQkFBa0IsQ0FBQyxRQUFRLGNBQUMsR0FBUSxJQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUE7Ozs7R0FGcEUsTUFpRE0sQ0FBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBO0dBM0NKLE1Bb0JNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBbkJKLE1BYU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0FaSixNQUVPLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOzs7R0FDUCxNQUFvRCxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQTs7O0dBQ3BELE1BT00sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7Ozs7O0dBUVYsTUFxQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0FwQkosTUFtQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7OytDQXZDc0MsR0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7QUFDckQsR0FBQSxJQUFBLENBQUEsQ0FBQSxPQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLEtBQUEsUUFBQSxNQUFBLFFBQUEsZ0JBQUEsR0FBUSxJQUFDLFVBQVUsR0FBQSxFQUFBLENBQUEsRUFBQSxRQUFBLENBQUEsRUFBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBO0FBRU0sR0FBQSxJQUFBLENBQUEsQ0FBQSxPQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLEtBQUEsUUFBQSxNQUFBLFFBQUEsZ0JBQUEsR0FBUSxJQUFDLE9BQU8sR0FBQSxFQUFBLENBQUEsRUFBQSxRQUFBLENBQUEsRUFBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBOztvQkFVekMsR0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUE7Ozs7Ozs7Ozs7Ozs7O0FBUTlCLElBQUEsWUFBQSxnQkFBQSxHQUFRLElBQUMsT0FBTyxDQUFBOzs7aUNBQXJCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7O3NDQUFKLE1BQUksQ0FBQTs7OztBQTNCUSxJQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxlQUFBLEdBQVEsSUFBQyxrQkFBa0IsQ0FBQyxRQUFRLGNBQUMsR0FBUSxJQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUgvRCxHQUFlLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFBYyxDQUFBLE1BQUEsT0FBQSxHQUFBLEdBQUEsaUJBQUEsR0FBUSxJQUFDLEVBQUUsQ0FBQTs7Z0NBQTdDLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUxWLE1BMERNLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtHQXRESixNQXFETSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7OztxQ0FwREcsR0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7a0NBQXBCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F4Q0csZUFBOEIsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUU5QixRQUF3QixFQUFBLEdBQUEsT0FBQSxDQUFBOztBQUUxQixDQUFBLFNBQUEsWUFBWSxDQUFDLE1BQWMsRUFBQTtBQUM5QixFQUFBLElBQUEsZUFBZSxHQUNqQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO0lBQ3pCLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBLEdBQ2pFLEtBQUs7SUFDTCxFQUFFLENBQUE7O0FBQ0osRUFBQSxJQUFBLEdBQUcsR0FDTCxNQUFNLENBQUMsR0FBRyxJQUFJLGNBQWM7SUFDeEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUE7QUFDekIsSUFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDO0tBQ3ZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFBO0FBQ3RCLEtBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7QUFDVCxFQUFBLE9BQUEsZUFBZSxHQUFHLEdBQUcsQ0FBQTs7O0FBR3hCLENBQUEsTUFBQSxRQUFRLEdBQUcscUJBQXFCLEVBQUEsQ0FBQTs7QUFDN0IsQ0FBQSxTQUFBLGNBQWMsQ0FBQyxDQUFNLEVBQUE7QUFDdEIsRUFBQSxNQUFBLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtFQUNsQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFBLENBQUE7Ozs7QUFrQzNCLEVBQUEsUUFBUSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFBLENBQUE7OzttQ0FvQmxCLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxNQUFNLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUNpVXZELEdBQUssQ0FBQSxDQUFBLENBQUEsS0FBQSxLQUFBLENBQUEsRUFBQTt5Q0FBTCxHQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxDQUFBLGlCQUFBLEdBQVEsSUFBQyxjQUFjLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdkIsRUFBQSxnQkFBQSxDQUFBLGNBQUEsZ0JBQUEsR0FBUSxJQUFDLGNBQWMsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O3dGQUVSLEdBQWdDLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQTs2REFDL0MsR0FBb0IsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFNeEIsR0FBcUIsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOytFQUNULEdBQTRCLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQTtxRUFDakMsR0FBdUIsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBcEMzQyxHQUFBLElBQUEsQ0FBQSxJQUFBLEVBQUEsT0FBQSxFQUFBLGdCQUFBLEdBQUEsRUFBQSxpQkFBQSxHQUFRLDBCQUFHLEdBQVEsQ0FBQSxDQUFBLENBQUEsS0FBSyxJQUFJLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7OztHQUZ6RCxNQXlDTSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7R0E3QkosTUFNTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7O0dBQ04sTUFxQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7Ozs7Ozs7OztvRUFyQ1csR0FBWSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkNBbUJULEdBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQSxrQkFBQSxDQUFBLGNBQUEsZ0JBQUEsR0FBUSxJQUFDLGNBQWMsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBekJ4QyxHQUFBLElBQUEsQ0FBQSxPQUFBLElBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxnQkFBQSxFQUFBLElBQUEsZ0JBQUEsTUFBQSxnQkFBQSxHQUFBLEVBQUEsaUJBQUEsR0FBUSwwQkFBRyxHQUFRLENBQUEsQ0FBQSxDQUFBLEtBQUssSUFBSSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQTdROUMsbUJBQW1CLENBQUMsSUFBbUIsRUFBRSxRQUFrQixFQUFBO0tBQzlELFVBQVUsR0FBQSxFQUFBLENBQUE7S0FDVixZQUFZLEdBQUEsRUFBQSxDQUFBO0tBQ1osU0FBUyxHQUFBLEVBQUEsQ0FBQTs7O0VBR2IsSUFBSSxDQUFDLE9BQU8sQ0FBRSxHQUFpQixJQUFBO0FBQ3pCLEVBQUEsSUFBQSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUEsRUFBQTtHQUMxQixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBOztHQUVyQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBOztBQUduQixFQUFBLENBQUEsRUFBQSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUEsRUFBQTs7UUFDdEMsVUFBVSxDQUFBOzs7O0FBNk1WLFNBQUEsbUJBQW1CLENBQUMsS0FBb0IsRUFBQTtRQUV2QixLQUFLLENBQUMsTUFBTSxDQUFBOzs7O0FBSTdCLFNBQUEsWUFBWSxDQUFDLEtBQW9CLEVBQUE7QUFDcEMsQ0FBQSxJQUFBLFlBQVksR0FBVyxDQUFDLENBQUE7O0FBQ25CLENBQUEsS0FBQSxJQUFBLE9BQU8sSUFBSSxLQUFLLEVBQUE7QUFDdkIsRUFBQSxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7OztRQUVqQyxZQUFZLENBQUE7Ozs7Ozs7Ozs7O09BdlRWLEdBQVEsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUNSLE1BQThCLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDOUIsUUFBd0IsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUN4QixJQUFtQixFQUFBLEdBQUEsT0FBQSxDQUFBO0tBQzFCLFNBQWlCLENBQUE7QUFDakIsQ0FBQSxJQUFBLFFBQVEsR0FBVyxTQUFTLENBQUE7OztBQUc1QixDQUFBLElBQUEsTUFBTSxHQUFXLEVBQUUsQ0FBQTs7S0FDbkIsS0FBdUIsQ0FBQTtBQUN2QixDQUFBLElBQUEsd0JBQXdCLEdBQVksS0FBSyxDQUFBOzs7O0FBSXZDLENBQUEsTUFBQSxVQUFVLEdBQU8sSUFBQUMsY0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQTs7QUFDdEMsQ0FBQSxVQUFVLENBQUMsUUFBUSxDQUFBLENBQUUsS0FBSyxDQUFHLEVBQUEsR0FBRyxFQUFHLENBQUMsSUFBQTtBQUM5QixFQUFBLElBQUEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBQTtBQUUxQixHQUFBLElBQUEsS0FBSyxLQUFLLFFBQVEsQ0FBQyxhQUFhLElBQ2hDLHdCQUF3QixLQUFLLEtBQUssRUFBQTtBQUVsQyxJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsd0JBQXdCLEdBQUcsSUFBSSxDQUFBLENBQUE7QUFFL0IsSUFBQSxNQUFBLElBQUEsS0FBSyxLQUFLLFFBQVEsQ0FBQyxhQUFhLElBQ2hDLHdCQUF3QixLQUFLLElBQUksRUFBQTtBQUVqQyxJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsd0JBQXdCLEdBQUcsS0FBSyxDQUFBLENBQUE7O0FBRWhDLElBQUEsS0FBSyxDQUFDLEtBQUssRUFBQSxDQUFBOzs7VUFFTixLQUFLLENBQUE7Ozs7QUFJWixDQUFBLElBQUEsYUFBYSxHQUFHLGlCQUFpQixDQUFBO0FBQ2pDLENBQUEsSUFBQSxjQUFjLEdBQUcsYUFBYSxDQUFBO0FBQzlCLENBQUEsSUFBQSxZQUFZLEdBQUcsV0FBVyxDQUFBO0FBRTFCLENBQUEsSUFBQSxjQUFjLEdBQWMsQ0FBQSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQSxDQUFBO0tBQ3ZFLGlCQUFzQixDQUFBOzs7S0FHdEIsUUFBUSxHQUFlLFlBQVksQ0FBQyxHQUFHLENBQUEsQ0FBQTs7O0FBR3ZDLENBQUEsSUFBQSxhQUFhLEdBQWtCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUEsR0FBRyxDQUN6RCxHQUFXLElBQUssUUFBUSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUE7OztVQUl0QixtQkFBbUIsR0FBQTttQkFDMUIsUUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzNCLEVBQUEsWUFBQSxDQUFBLEVBQUEsRUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBQSxHQUFHLENBQUUsR0FBVyxJQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7OztVQUdoRSxxQkFBcUIsR0FBQTs7Ozs7QUE0Q3JCLENBQUEsU0FBQSxtQkFBbUIsQ0FDMUIsSUFBbUIsRUFDbkIsTUFBYyxFQUNkLHFCQUErQixFQUMvQixlQUF1QixFQUFBO0VBRXZCLG1CQUFtQixFQUFBLENBQUE7TUFDZixZQUFZLEdBQUEsRUFBQSxDQUFBOzs7QUFHUCxFQUFBLFNBQUEsWUFBWSxDQUFDLE9BQXFCLEVBQUE7QUFDckMsR0FBQSxJQUFBLFdBQVcsR0FDYixPQUFPLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUNwQyxHQUFBLEdBQUcsR0FDSCxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBQSxDQUFBOzs7QUFHekIsR0FBQSxJQUFBLFdBQVcsR0FBRyxNQUFNLENBQ3JCLGlCQUFpQixFQUFBLENBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQ1QsQ0FBQSxNQUFNLENBQUUsSUFBSSxJQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUE7OztVQUc1QixXQUFXLENBQUMsS0FBSyxDQUFFLElBQUksSUFBQTtXQUUxQixXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQSxJQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxNQUFNLElBQUE7WUFFeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQSxDQUFHLFFBQVEsQ0FBQyxJQUFJLENBQzVDLElBQUEscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLElBQUksQ0FBRSxRQUFRLElBQ3BELFFBQVEsQ0FBQyxpQkFBaUIsRUFBQSxDQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBOzs7Ozs7O0FBVTdDLEVBQUEsU0FBQSxpQkFBaUIsQ0FDeEIsT0FBcUIsRUFDckIsZUFBeUIsRUFDekIsbUJBQTRCLEVBQUE7QUFFeEIsR0FBQSxJQUFBLG1CQUFtQixLQUFLLEtBQUssRUFBQTtBQUN4QixJQUFBLE9BQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsTUFBTSxJQUFBO1lBQzFCLGVBQWUsQ0FBQyxLQUFLLENBQUUsUUFBUSxJQUFBO0FBQzdCLE1BQUEsT0FBQSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFFLENBQUEsUUFBUSxDQUFDLFFBQVEsQ0FBQSxDQUFBOzs7QUFHM0QsSUFBQSxNQUFBLElBQUEsbUJBQW1CLEtBQUssSUFBSSxFQUFBO0lBQ3JDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUUsTUFBTSxJQUFBO0FBRTVDLEtBQUEsSUFBQSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsTUFBTSxJQUNsRCxlQUFlLENBQUMsS0FBSyxDQUFFLFFBQVEsSUFBQTtBQUN0QixNQUFBLE9BQUEscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBRSxDQUFBLFFBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBQTs7YUFHM0QsSUFBSSxDQUFBOzs7O0FBSVIsSUFBQSxPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFFLE1BQU0sSUFBQTtZQUMzQixlQUFlLENBQUMsS0FBSyxDQUFFLFFBQVEsSUFBQTtBQUM3QixNQUFBLE9BQUEscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBRSxDQUFBLFFBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBQTs7Ozs7OztBQU8vRCxFQUFBLFNBQUEsV0FBVyxDQUFDLE9BQXFCLEVBQUE7QUFDakMsR0FBQSxPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLE1BQU0sSUFBQTtBQUMxQixJQUFBLE9BQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBTyxLQUFBLFVBQVUsQ0FBQyxpQkFBaUIsRUFBQSxDQUFBOzs7O0FBa0IxRSxFQUFBLFlBQVksR0FBRyxJQUFJLENBQ2hCLE1BQU0sQ0FBRSxPQUFPLElBQUE7VUFFWixZQUFZLENBQUMsT0FBTyxDQUFBLEtBQ25CLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQ2pDLGlCQUFpQixDQUNmLE9BQU8sRUFDUCxxQkFBcUIsRUFDckIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUEsQ0FBQSxLQUV2QyxlQUFlLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBO0tBR2pELElBQUksQ0FBQSxDQUFFLENBQWUsRUFBRSxDQUFlLEtBQUE7QUFDOUIsR0FBQSxPQUFBLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUEsQ0FBQTtLQUUvQyxNQUFNLENBQUUsT0FBTyxJQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxDQUFBOztNQUU3QyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBQTtBQUN2QyxHQUFBLFlBQVksR0FBRyxtQkFBbUIsQ0FDaEMsWUFBWSxFQUNaLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBOzs7U0FJeEIsWUFBWSxDQUFBOzs7OztBQWNaLENBQUEsU0FBQSx1QkFBdUIsQ0FBQyxLQUFrQixFQUFBO01BQzdDLFVBQVUsR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFBOztBQUNqQyxFQUFBLElBQUEsTUFBTSxLQUFLLEVBQUUsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFBOztBQUV2QyxHQUFBLEtBQUssQ0FBQyxLQUFLLEVBQUEsQ0FBQTs7QUFDWCxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBTSxHQUFHLFVBQVUsQ0FBQSxDQUFBO2FBQ1YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUEsRUFBQTtBQUNyQyxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUE7O21CQUV0QyxNQUFNLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQSxDQUFBOzs7O0FBSXZCLENBQUEsU0FBQSxnQ0FBZ0MsQ0FBQyxLQUFrQixFQUFBO2tCQUMxRCxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsSUFDbEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUEsUUFBQSxDQUFBLENBQUE7QUFDeEMsRUFBQSxNQUFNLENBQUMsWUFBWSxFQUFBLENBQUE7RUFDbkIscUJBQXFCLEVBQUEsQ0FBQTs7O0FBR2QsQ0FBQSxTQUFBLDRCQUE0QixDQUFDLEtBQWtCLEVBQUE7TUFDbEQsaUJBQWlCLEdBQVcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtBQUN4QyxFQUFBLElBQUEsb0JBQW9CLEdBQWEscUJBQXFCLENBQ3hELGlCQUFpQixDQUFDLFNBQVMsQ0FBQSxDQUFBO01BRXpCLGNBQWMsR0FBVyxpQkFBaUIsQ0FBQyxHQUFHLENBQUE7OztNQUloRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUUsUUFBZ0IsSUFBQTtVQUMvQixvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFBLENBQUE7QUFFL0MsR0FBQSxDQUFBLElBQUEsVUFBVSxDQUFDLGlCQUFpQixFQUFPLEtBQUEsY0FBYyxDQUFDLGlCQUFpQixFQUFBLEVBQUE7b0NBRW5FLGdCQUFnQixHQUFBLEVBQUEsRUFBQSxnQkFBQSxDQUFBLENBQUE7QUFDaEIsR0FBQSxlQUFBLENBQUEsU0FBQSxFQUFBLFVBQVUsR0FBRyxFQUFFLEVBQUEsVUFBQSxDQUFBLENBQUE7O0FBRWYsR0FBQSxlQUFBLENBQUEsZUFBQSxFQUFBLGdCQUFnQixHQUFHLG9CQUFvQixFQUFBLGdCQUFBLENBQUEsQ0FBQTtBQUN2QyxHQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLGNBQWMsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUMzQixHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBTSxHQUFHLEVBQUUsQ0FBQSxDQUFBOzs7O0FBSU4sQ0FBQSxTQUFBLHFCQUFxQixDQUFDLEtBQWtCLEVBQUE7TUFDM0MsVUFBVSxHQUFXLEtBQUssQ0FBQyxNQUFNLENBQUE7O0FBRWpDLEVBQUEsSUFBQSxRQUFRLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQSxFQUFBO0FBQ2pELEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FDN0QsRUFBVSxJQUFLLEVBQUUsS0FBSyxVQUFVLENBQUEsRUFBQSxRQUFBLENBQUEsQ0FBQTtBQUVuQyxHQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUEsQ0FBQTs7O0FBR25CLEdBQUEsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUEsQ0FBQTs7O0FBRTNDLEdBQUEsTUFBTSxDQUFDLFlBQVksRUFBQSxDQUFBOzs7RUFFckIscUJBQXFCLEVBQUEsQ0FBQTs7OztVQUlkLG9CQUFvQixHQUFBO0VBQzNCLG1CQUFtQixFQUFBLENBQUE7Ozs7VUF1QlosWUFBWSxHQUFBO0FBQ2YsRUFBQSxJQUFBLFNBQVMsSUFBSSxJQUFJLEVBQUE7QUFDbkIsR0FBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLFFBQVEsR0FBRyxLQUFLLENBQUEsQ0FBQTtBQUNQLEdBQUEsTUFBQSxJQUFBLFNBQVMsSUFBSSxJQUFJLElBQUksU0FBUyxHQUFHLElBQUksRUFBQTtBQUM5QyxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsUUFBUSxHQUFHLElBQUksQ0FBQSxDQUFBO0FBQ04sR0FBQSxNQUFBLElBQUEsU0FBUyxJQUFJLEdBQUcsSUFBSSxTQUFTLEdBQUcsSUFBSSxFQUFBO0FBQzdDLEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFBLENBQUE7QUFDTixHQUFBLE1BQUEsSUFBQSxTQUFTLElBQUksR0FBRyxJQUFJLFNBQVMsR0FBRyxHQUFHLEVBQUE7QUFDNUMsR0FBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLFFBQVEsR0FBRyxJQUFJLENBQUEsQ0FBQTtBQUNOLEdBQUEsTUFBQSxJQUFBLFNBQVMsSUFBSSxHQUFHLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBQTtBQUM1QyxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsUUFBUSxHQUFHLElBQUksQ0FBQSxDQUFBO0FBQ04sR0FBQSxNQUFBLElBQUEsU0FBUyxHQUFHLEdBQUcsRUFBQTtBQUN4QixHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsUUFBUSxHQUFHLElBQUksQ0FBQSxDQUFBOzs7O0NBSW5CLE9BQU8sQ0FBQSxNQUFBO0FBQ0wsRUFBQSxLQUFLLENBQUMsS0FBSyxFQUFBLENBQUE7OztDQUdiLFNBQVMsQ0FBQSxNQUFBO0FBQ1AsRUFBQSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtDWixLQUFLLEdBQUEsS0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsRUFBQSxJQUFBLE1BQUEsQ0FBQSxFQUFBLENBQUEsU0FBQSxDQUFBLFFBQVEsQ0FBQyxjQUFjLEVBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdkIsR0FBQSxRQUFRLENBQUMsY0FBYyxHQUFBLEtBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdkI5QixTQUFTLEdBQUEsSUFBQSxDQUFBLFdBQUEsQ0FBQTs7Ozs7QUFFekIsRUFBQSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUEsQ0FBQTs7OztBQUcvQixFQUFBLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7O0dBekkvQixZQUFBLENBQUEsQ0FBQSxFQUFFLGVBQWUsR0FBRyxtQkFBbUIsQ0FDdEMsYUFBYSxFQUNiLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsVUFBVSxDQUFBLENBQUEsQ0FBQTs7Ozs7QUF3RVosR0FBRyxZQUFBLENBQUEsRUFBQSxFQUFBLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLGVBQWUsQ0FBQSxDQUFBLENBQUE7Ozs7QUFDNUQsR0FBRyxZQUFBLENBQUEsRUFBQSxFQUFBLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvVWpDLE1BQUEsYUFBYyxTQUFRQyxpQkFBUSxDQUFBO0lBTWpELFdBQVksQ0FBQSxJQUFtQixFQUFFLE1BQThCLEVBQUE7UUFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBSGIsSUFBVSxDQUFBLFVBQUEsR0FBRyxJQUFJLENBQUE7QUFJZixRQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0tBQ3JCO0lBRUssTUFBTSxHQUFBOzs7OztBQUNWLFlBQUEsTUFBQSxDQUFNLE1BQU0sQ0FBRSxJQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7U0FDZixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUQsV0FBVyxHQUFBO0FBQ1QsUUFBQSxPQUFPLDRCQUE0QixDQUFBO0tBQ3BDO0lBRUQsY0FBYyxHQUFBO0FBQ1osUUFBQSxPQUFPLG9CQUFvQixDQUFBO0tBQzVCO0lBRUssTUFBTSxHQUFBOztBQUNWLFlBQUEsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7U0FDbEIsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7S0FDekI7SUFFSyxJQUFJLEdBQUE7O0FBQ1IsWUFBQSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQTtBQUMvQixZQUFBLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1lBRWhDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtBQUNqQixZQUFBLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUEsT0FBQSxDQUFTLENBQUMsQ0FBQTtBQUN2QyxZQUFBLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQTtBQUM3QixZQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztBQUNyQyxnQkFBQSxNQUFNLEVBQUUsU0FBUztBQUNqQixnQkFBQSxLQUFLLEVBQUU7b0JBQ0wsR0FBRztvQkFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVE7QUFDUixvQkFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLGlCQUFBO0FBQ0YsYUFBQSxDQUFDLENBQUE7U0FDSCxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQ0Y7O0FDL0JvQixNQUFBLHNCQUF1QixTQUFRQyxlQUFNLENBQUE7QUFHeEQsSUFBQSxJQUFJLElBQUksR0FBQTtBQUNOLFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUMvQyw0QkFBNEIsQ0FDN0IsQ0FBQTtBQUNELFFBQUEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQzdDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksWUFBWSxhQUFhO1lBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtLQUNuQjtJQUVLLE1BQU0sR0FBQTs7QUFDVixZQUFBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1lBRXpCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0FBQzVCLFlBQUEsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUV0QyxZQUFBLElBQUksQ0FBQyxZQUFZLENBQ2YsNEJBQTRCLEVBQzVCLENBQUMsSUFBbUIsS0FBSyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQ3ZELENBQUE7OztTQUlGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxRQUFRLEdBQUE7O1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtTQUNwRSxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssWUFBWSxHQUFBOztBQUNoQixZQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDM0IsRUFBRSxFQUNGLHVCQUF1QixFQUN2QixNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FDdEIsQ0FBQTtTQUNGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxZQUFZLEdBQUE7O1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDbkMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVELHFCQUFxQixHQUFBOztBQUVuQixRQUFBLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0FBQzdDLFFBQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN2QyxRQUFBLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLENBQUE7QUFDOUQsUUFBQSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7O1FBR2hDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7O0FBRzdDLFFBQUFDLGdCQUFPLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUE7QUFDL0IsUUFBQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBOzs7S0FHcEU7QUFFSyxJQUFBLGdCQUFnQixDQUFDLEdBQWUsRUFBQTs7QUFDcEMsWUFBQSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO0FBQ3ZCLGdCQUFBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM1QixhQUFBO0FBQU0saUJBQUE7Z0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7QUFDeEIsYUFBQTtTQUNGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxnQkFBZ0IsQ0FBQyxVQUFtQixLQUFLLEVBQUE7O1lBQzdDLElBQUksV0FBVyxHQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDN0QsTUFBTSxLQUFLLENBQUMsQ0FBQTtBQUVqQixZQUFBLElBQUksV0FBVyxFQUFFO0FBQ2YsZ0JBQUEsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTO3lCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDYix5QkFBQSxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyxDQUFBO0FBQ3hELGlCQUFBO0FBQU0scUJBQUE7b0JBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTO0FBQ2YseUJBQUEsT0FBTyxFQUFFO0FBQ1QseUJBQUEsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQTtBQUN4RCxpQkFBQTtBQUNGLGFBQUE7U0FDRixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUQscUJBQXFCLEdBQUE7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNkLFlBQUEsRUFBRSxFQUFFLDhCQUE4QjtBQUNsQyxZQUFBLElBQUksRUFBRSw4QkFBOEI7QUFDcEMsWUFBQSxhQUFhLEVBQUUsQ0FBQyxRQUFpQixLQUFJO2dCQUNuQyxJQUFJLFdBQVcsR0FDYixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUM7cUJBQzdELE1BQU0sS0FBSyxDQUFDLENBQUE7QUFFakIsZ0JBQUEsSUFBSSxXQUFXLEVBQUU7O29CQUVmLElBQUksQ0FBQyxRQUFRLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7O0FBRXhCLHFCQUFBO0FBQ0Qsb0JBQUEsT0FBTyxJQUFJLENBQUE7QUFDWixpQkFBQTthQUNGO0FBQ0YsU0FBQSxDQUFDLENBQUE7S0FDSDtBQUVGLENBQUE7QUFFRDtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7In0=