share-api-polyfill-cloudeight
Version:
This is a polyfill for the `Web Share API` that can be used in desktop too, so your users can share in their twitter, facebook, messenger, linkedin, sms, e-mail, print, telegram or whatsapp.
96 lines (94 loc) • 72.6 kB
JavaScript
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/share.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/share.js":
/*!**********************!*\
!*** ./src/share.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// a few references:\n// \t http://chriswren.github.io/native-social-interactions/\n// https://nimiq.github.io/web-share-shim/demo/\nnavigator.share = navigator.share || function () {\n var languages = {\n \"default\": {\n sms: \"SMS\",\n messenger: \"Messenger\",\n whatsapp: \"WhatsApp\",\n twitter: \"Twitter\",\n linkedin: \"Linkedin\",\n telegram: \"Telegram\",\n facebook: \"Facebook\",\n skype: \"Skype\"\n },\n cs: {\n shareTitle: \"Sdílet\",\n cancel: \"Zrušit\",\n copy: \"Kopírovat\",\n print: \"Tisk\",\n email: \"E-mail\",\n selectSms: \"Vyberte kontakt\"\n },\n sk: {\n shareTitle: \"Zdieľať\",\n cancel: \"Zrušiť\",\n copy: \"Kopírovat\",\n print: \"Tlač\",\n email: \"E-mail\",\n selectSms: \"Vyberte kontakt\"\n },\n ja: {\n shareTitle: \"共有する\",\n cancel: \"キャンセル\",\n copy: \"コピーする\",\n print: \"印刷する\",\n email: \"E-mail\",\n selectSms: \"連絡先を選択してください\"\n },\n zh: {\n shareTitle: \"分享\",\n cancel: \"取消\",\n copy: \"複製連結\",\n print: \"列印\",\n email: \"E-mail\",\n selectSms: \"選擇聯絡人\"\n },\n pt: {\n shareTitle: \"Compartilhar\",\n cancel: \"Cancelar\",\n copy: \"Copiar\",\n print: \"Imprimir\",\n email: \"E-mail\",\n selectSms: \"Selecione um contato\"\n },\n en: {\n shareTitle: \"Share\",\n cancel: \"Cancel\",\n copy: \"Copy\",\n print: \"Print\",\n email: \"E-mail\",\n selectSms: \"Pick a contact\"\n },\n es: {\n shareTitle: \"Compartir\",\n cancel: \"Cancelar\",\n copy: \"Copiar\",\n print: \"Imprimir\",\n email: \"Correo\",\n selectSms: \"Seleccionar un contacto\"\n },\n fr: {\n shareTitle: \"Partager\",\n cancel: \"Annuler\",\n copy: \"Copier\",\n print: \"Imprimer\",\n email: \"E-mail\",\n selectSms: \"Veuillez choisir un contact\"\n },\n de: {\n shareTitle: \"Teilen\",\n cancel: \"Abbrechen\",\n copy: \"Kopieren\",\n print: \"Drucken\",\n email: \"E-mail\",\n selectSms: \"Wählen Sie einen Kontakt aus\"\n },\n nl: {\n shareTitle: \"Delen\",\n cancel: \"Annuleren\",\n copy: \"Kopiëren\",\n print: \"Printen\",\n email: \"E-mail\",\n selectSms: \"Selecteer een contact\"\n },\n sv: {\n shareTitle: \"Dela\",\n cancel: \"Avbryt\",\n copy: \"Kopiera\",\n print: \"Skriv ut\",\n email: \"E-mail\",\n selectSms: \"Välj en kontakt\"\n },\n da: {\n shareTitle: \"Del\",\n cancel: \"Luk\",\n copy: \"Kopiér\",\n print: \"Udskriv\",\n email: \"E-mail\",\n selectSms: \"Vælg en kontaktperson\"\n },\n // Deprecated, use `da` instead.\n dk: {\n shareTitle: \"Del\",\n cancel: \"Luk\",\n copy: \"Kopiér\",\n print: \"Udskriv\",\n email: \"E-mail\",\n selectSms: \"Vælg en kontaktperson\"\n },\n ru: {\n shareTitle: \"Поделиться\",\n cancel: \"Отмена\",\n copy: \"Скопировать\",\n print: \"Печать\",\n email: \"Э-майл\",\n selectSms: \"Выбери контакт\"\n },\n tr: {\n shareTitle: \"Paylaş\",\n cancel: \"Vazgeç\",\n copy: \"Kopyala\",\n print: \"Yazdır\",\n email: \"E-posta\",\n selectSms: \"Bir kişi seç\"\n },\n ko: {\n shareTitle: \"공유\",\n cancel: \"취소\",\n copy: \"링크 복사\",\n print: \"인쇄\",\n email: \"E-mail\",\n selectSms: \"연락처를 선택하세요\"\n },\n ta: {\n shareTitle: \"பகிர்\",\n cancel: \"இரத்து\",\n copy: \"நகலெடு\",\n print: \"அச்சிடு\",\n email: \"மின்னஞ்சல்\",\n selectSms: \"ஒரு தொடர்பைத் தேர்வுசெய்க\"\n },\n pl: {\n shareTitle: \"Dzielić\",\n cancel: \"Anuluj\",\n copy: \"Kopiuj\",\n print: \"Wydrukować\",\n email: \"E-mail\",\n selectSms: \"Wybierz kontakt\"\n },\n is: {\n shareTitle: \"Deila\",\n cancel: \"Hætta við\",\n copy: \"Afrita\",\n print: \"Prenta\",\n email: \"Póstur\",\n selectSms: \"Veldu tengilið\"\n }\n };\n var android = navigator.userAgent.match(/Android/i);\n var ios = navigator.userAgent.match(/iPhone|iPad|iPod/i);\n var mac = navigator.userAgent.match(/iPhone|iPad|iPod|Macintosh/i); // Test if mac to use ios/mac share icon on title, used to invoke the familiary concept.\n\n var isDesktop = !(ios || android); // Cleaned up icons from material UI and Fontawsome\n // Colors pallete https://www.materialui.co/colors/grey/500\n // Icon Colors from https://brandcolors.net\n\n var icon = {\n share: mac ? '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 1000\"><g><path fill=\"#424242\" d=\"M381.9,181l95.8-95.8v525.9c0,13.4,8.9,22.3,22.3,22.3c13.4,0,22.3-8.9,22.3-22.3V85.2l95.8,95.8c4.5,4.5,8.9,6.7,15.6,6.7c6.7,0,11.1-2.2,15.6-6.7c8.9-8.9,8.9-22.3,0-31.2L515.6,16.1c-2.2-2.2-4.5-4.5-6.7-4.5c-4.5-2.2-11.1-2.2-17.8,0c-2.2,2.2-4.5,2.2-6.7,4.5L350.7,149.8c-8.9,8.9-8.9,22.3,0,31.2C359.6,190,373,190,381.9,181z M812,276.9H633.7v44.6H812v624H188v-624h178.3v-44.6H188c-24.5,0-44.6,20.1-44.6,44.6v624c0,24.5,20.1,44.6,44.6,44.6h624c24.5,0,44.6-20.1,44.6-44.6v-624C856.6,296.9,836.5,276.9,812,276.9z\"/></g></svg>' : '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path fill=\"#424242\" d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"/></svg>',\n email: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path fill=\"#424242\" d=\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z\"/></svg>',\n copy: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill=\"#424242\" d=\"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"></path></svg>',\n print: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#424242\" d=\"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>',\n sms: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#424242\" d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM9 11H7V9h2v2zm4 0h-2V9h2v2zm4 0h-2V9h2v2z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>',\n messenger: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill=\"#0084ff\" d=\"M224 32C15.9 32-77.5 278 84.6 400.6V480l75.7-42c142.2 39.8 285.4-59.9 285.4-198.7C445.8 124.8 346.5 32 224 32zm23.4 278.1L190 250.5 79.6 311.6l121.1-128.5 57.4 59.6 110.4-61.1-121.1 128.5z\"></path></svg>',\n facebook: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill=\"#3b5998\" d=\"M448 56.7v398.5c0 13.7-11.1 24.7-24.7 24.7H309.1V306.5h58.2l8.7-67.6h-67v-43.2c0-19.6 5.4-32.9 33.5-32.9h35.8v-60.5c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9h-58.4v67.6h58.4V480H24.7C11.1 480 0 468.9 0 455.3V56.7C0 43.1 11.1 32 24.7 32h398.5c13.7 0 24.8 11.1 24.8 24.7z\"></path></svg>',\n whatsapp: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill=\"#075e54\" d=\"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"></path></svg>',\n twitter: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"#1da1f2\" d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"></path></svg>',\n linkedin: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill=\"#0077b5\" d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"></path></svg>',\n telegram: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 496 512\"><path fill=\"#0088cc\" d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"></path></svg>',\n skype: '<svg class=\"the-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill=\"#00aff0\" d=\"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"></path></svg>'\n };\n\n function appendCSS(content) {\n var css = content,\n head = document.head || document.getElementsByTagName(\"head\")[0],\n style = document.createElement(\"style\");\n style.type = \"text/css\";\n\n if (style.styleSheet) {\n // This is required for IE8 and below.\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n\n style.id = \"shareAPIPolyfill-style\";\n head.appendChild(style);\n }\n\n return function ShareAPIPolyfill() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var configurations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new Promise(function (resolve, reject) {\n if (!data.title || typeof data.title !== \"string\" || !data.text || typeof data.text !== \"string\") {\n reject(\"Invalid Params\");\n }\n\n var title = data.title,\n url = data.url,\n fbId = data.fbId,\n hashtags = data.hashtags;\n\n var configs = _objectSpread(_objectSpread({}, {\n copy: true,\n print: true,\n email: true,\n sms: true,\n messenger: true,\n facebook: true,\n whatsapp: true,\n twitter: true,\n linkedin: true,\n telegram: true,\n skype: true,\n language: \"en\"\n }), configurations);\n /**\n * Users may want to force the choice of a specific language\n * if `configs.language` in `languages`) === force to use it\n *\n */\n\n\n var language = _objectSpread(_objectSpread({}, languages[\"default\"]), // looking for terms in the selected language (if supported)\n languages[configs.language] ? languages[configs.language] : // if not supported, we try and use the default navigator language, or English as fallback\n // if we have support for the specific navigator language (like es-AR, or pt-BR), we use it\n languages[navigator.language] || languages[navigator.language.substr(0, 2).toLowerCase()] || languages.en);\n\n var text = data.text || title;\n appendCSS(\"\\n#shareAPIPolyfill-backdrop,\\n#shareAPIPolyfill-container {\\n opacity: 0;\\n pointer-events: none;\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n margin: auto;\\n width: 100%;\\n height: 100%;\\n will-change: opacity;\\n z-index: 99999999;\\n}\\n#shareAPIPolyfill-backdrop {\\n transition: opacity linear 250ms;\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n#shareAPIPolyfill-container {\\n background-color: #f9f9f9;\\n top: auto;\\n max-width: 400px;\\n height: auto;\\n transition-property: transform,opacity;\\n transition-timing-function: linear;\\n transition-duration: 250ms;\\n transition-delay: 150ms;\\n transform: translateY(100%);\\n font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Oxygen\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", arial, sans-serif, \\\"Microsoft JhengHei\\\";\\n}\\n#shareAPIPolyfill-backdrop.visible,\\n#shareAPIPolyfill-container.visible {\\n opacity: 1;\\n pointer-events: all;\\n}\\n#shareAPIPolyfill-container.visible {\\n transform: translateY(0);\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-header {\\n background: #EEE;\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-header .shareAPIPolyfill-icons-container {\\n display: flex;\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-header-title {\\n background-color: #E0E0E0;\\n padding: 10px 18px;\\n color: #424242;\\n font-weight: 600;\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-body {\\n border-top: solid 1px #EEE;\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-footer {\\n width: 100%;\\n display: block;\\n border: none;\\n transition: opacity ease-in 250ms;\\n border-top: solid 1px #EEE;\\n background-color: #EEE;\\n text-align: center;\\n padding: 10px;\\n font-size:13px;\\n cursor: pointer;\\n opacity: .5;\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-footer:hover {\\n opacity: 1;\\n}\\n#shareAPIPolyfill-container .shareAPIPolyfill-icons-container {\\n display: flex;\\n flex-wrap: wrap;\\n}\\n#shareAPIPolyfill-container .tool-icon {\\n border: none;\\n display: inline-block;\\n width: 25%;\\n box-sizing: border-box;\\n font-weight: 400;\\n font-size: 12px;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-align: center;\\n cursor: pointer;\\n background-color: transparent;\\n padding: 20px 0;\\n}\\n#shareAPIPolyfill-container .tool-icon:hover {\\n box-shadow: inset 0 0 20px rgba(0,0,0, .125);\\n}\\n#shareAPIPolyfill-container .the-icon-title {\\n padding-top: 10px;\\n display: block;\\n}\\n.shareAPIPolyfill-header-title .the-icon {\\n\\tdisplay: inline-block;\\n\\theight: 20px;\\n\\twidth: 20px;\\n\\tpadding-right: 5px;\\n\\tvertical-align:\".concat(mac ? \"-2px\" : \"-4px\", \";\\n}\\n.shareAPIPolyfill-icons-container.title .tool-icon .the-icon,\\n.shareAPIPolyfill-icons-container.body .tool-icon .the-icon {\\n display: block;\\n margin: auto;\\n width: 42px;\\n height: 36px;\\n}\\n.shareAPIPolyfill-icons-container.title .tool-icon .the-icon {\\n height: 24px;\\n}\\n.shareAPIPolyfill-icons-container .hidden {\\n display: none !important;\\n}\\n\"));\n\n function closeShareUI() {\n var removeBackdrop = function removeBackdrop() {\n backdrop.removeEventListener(\"transitionend\", removeBackdrop);\n document.body.removeChild(backdrop);\n };\n\n var removeContainer = function removeContainer() {\n container.removeEventListener(\"transitionend\", removeContainer);\n document.body.removeChild(container);\n document.head.removeChild(document.querySelector(\"#shareAPIPolyfill-style\"));\n document.removeEventListener(\"keyup\", keyCloseEvent);\n };\n\n backdrop.classList.remove(\"visible\");\n container.classList.remove(\"visible\");\n backdrop.addEventListener(\"transitionend\", removeBackdrop);\n container.addEventListener(\"transitionend\", removeContainer);\n }\n\n var backdrop = document.createElement(\"div\");\n var container = document.createElement(\"div\");\n backdrop.id = \"shareAPIPolyfill-backdrop\";\n container.id = \"shareAPIPolyfill-container\";\n container.setAttribute(\"tabindex\", \"0\");\n container.innerHTML = \"\\n<div class=\\\"shareAPIPolyfill-header\\\">\\n <div class=\\\"shareAPIPolyfill-header-title\\\" tabindex=\\\"0\\\">\".concat(icon.share, \" \").concat(language.shareTitle, \"</div>\\n <div class=\\\"shareAPIPolyfill-icons-container title\\\">\\n <button class=\\\"\").concat(!configs.copy ? \"hidden\" : \"\", \" tool-icon copy\\\" data-tool=\\\"copy\\\">\\n \").concat(icon.copy, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.copy, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.print ? \"hidden\" : \"\", \" tool-icon print\\\" data-tool=\\\"print\\\">\\n \").concat(icon.print, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.print, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.email ? \"hidden\" : \"\", \" tool-icon email\\\" data-tool=\\\"email\\\">\\n \").concat(icon.email, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.email, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.sms ? \"hidden\" : \"\", \" tool-icon sms\\\" data-tool=\\\"sms\\\">\\n \").concat(icon.sms, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.sms, \"</span>\\n </button>\\n </div>\\n</div>\\n<div class=\\\"shareAPIPolyfill-body\\\">\\n <div class=\\\"shareAPIPolyfill-icons-container body\\\">\\n \").concat(fbId ? \"\\n <button class=\\\"tool-icon messenger \".concat(!configs.messenger ? \"hidden\" : \"\", \"\\\" data-tool=\\\"messenger\\\">\\n \").concat(icon.messenger, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.messenger, \"</span>\\n </button>\\n \") : \"\", \"\\n <button class=\\\"\").concat(!configs.facebook ? \"hidden\" : \"\", \" tool-icon facebook\\\" data-tool=\\\"facebook\\\">\\n \").concat(icon.facebook, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.facebook, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.whatsapp ? \"hidden\" : \"\", \" tool-icon whatsapp\\\" data-tool=\\\"whatsapp\\\">\\n \").concat(icon.whatsapp, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.whatsapp, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.twitter ? \"hidden\" : \"\", \" tool-icon twitter\\\" data-tool=\\\"twitter\\\">\\n \").concat(icon.twitter, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.twitter, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.linkedin ? \"hidden\" : \"\", \" tool-icon linkedin\\\" data-tool=\\\"linkedin\\\">\\n \").concat(icon.linkedin, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.linkedin, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.telegram ? \"hidden\" : \"\", \" tool-icon telegram\\\" data-tool=\\\"telegram\\\">\\n \").concat(icon.telegram, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.telegram, \"</span>\\n </button>\\n <button class=\\\"\").concat(!configs.skype ? \"hidden\" : \"\", \" tool-icon skype skype-share\\\" data-tool=\\\"skype\\\" data-href=\\\"\").concat(url, \"\\\" data-text=\\\"\").concat(title + \": \" + url, \"\\\">\\n \").concat(icon.skype, \"\\n <span class=\\\"the-icon-title\\\">\").concat(language.skype, \"</span>\\n </button>\\n </div>\\n <button class=\\\"shareAPIPolyfill-footer\\\">\\n \").concat(language.cancel, \"\\n </button>\\n</div>\\n\");\n backdrop.addEventListener(\"click\", function () {\n closeShareUI();\n });\n\n function keyCloseEvent(event) {\n if (event.keyCode === 27) {\n // ESC\n closeShareUI();\n }\n }\n\n if (configs.skype !== false) {\n addSkypeSupport();\n } // First, add the elements to the document in the current frame\n\n\n requestAnimationFrame(function (_) {\n document.body.appendChild(backdrop);\n document.body.appendChild(container);\n document.addEventListener(\"keyup\", keyCloseEvent);\n bindEvents(); // Then, once the elements are added, add the \"animatable status\" classes\n\n requestAnimationFrame(function () {\n backdrop.classList.add(\"visible\");\n container.classList.add(\"visible\");\n });\n document.getElementById(\"shareAPIPolyfill-container\").focus();\n });\n\n function addSkypeSupport() {\n (function (r, d, s) {\n r.loadSkypeWebSdkAsync = r.loadSkypeWebSdkAsync || function (p) {\n var js,\n sjs = d.getElementsByTagName(s)[0];\n\n if (d.getElementById(p.id)) {\n return;\n }\n\n js = d.createElement(s);\n js.id = p.id;\n js.src = p.scriptToLoad;\n js.onload = p.callback;\n sjs.parentNode.insertBefore(js, sjs);\n };\n\n var p = {\n scriptToLoad: \"https://swx.cdn.skype.com/shared/v/latest/skypewebsdk.js\",\n id: \"skype_web_sdk\"\n };\n r.loadSkypeWebSdkAsync(p);\n })(window, document, \"script\");\n }\n\n function bindEvents() {\n Array.from(container.querySelectorAll(\".tool-icon\")).forEach(function (tool) {\n tool.addEventListener(\"click\", function (event) {\n var payload = text + \": \" + url;\n\n switch (tool.dataset.tool) {\n case \"copy\":\n {\n navigator.clipboard.writeText(url);\n break;\n }\n\n case \"print\":\n {\n // to ensure it has been closed and the user has a clean view of the page\n setTimeout(function (_) {\n self.print();\n }, 500);\n break;\n }\n\n case \"email\":\n {\n window.open(\"mailto:\" + \"\" + \"?subject=\" + title + \"&body=\" + url);\n break;\n }\n\n case \"sms\":\n {\n // window.open(toolsUrls.sms(title + ': \\n' + url));\n location.href = \"sms:\".concat(language.selectSms, \"?&body=\").concat(title, \": \").concat(url); // window.open(\"sms:\"+''+'?subject='+title+'&body='+url);\n\n break;\n }\n\n case \"messenger\":\n {\n window.open(\"http://www.facebook.com/dialog/send?\" + \"app_id=\" + fbId + \"&display=popup\" + \"&href=\" + encodeURIComponent(url) + \"&link=\" + encodeURIComponent(url) + \"&redirect_uri=\" + encodeURIComponent(url) + \""e=\" + encodeURIComponent(text));\n break;\n }\n\n case \"facebook\":\n {\n window.open(\"https://www.facebook.com/sharer/sharer.php?\" + \"u=\" + encodeURIComponent(url) + \""e=\" + encodeURIComponent(text) + \"&hashtag=\" + encodeURIComponent(\"#\" + hashtags[0]));\n break;\n }\n\n case \"whatsapp\":\n {\n window.open((isDesktop ? \"https://api.whatsapp.com/send?text=\" : \"whatsapp://send?text=\") + encodeURIComponent(text + \"\\n\" + url));\n break;\n }\n\n case \"twitter\":\n {\n window.open(\"http://twitter.com/share?text=\".concat(text, \"&url=\").concat(url, \"&hashtags=\").concat(hashtags || \"\"));\n break;\n }\n\n case \"linkedin\":\n {\n window.open(\"https://www.linkedin.com/shareArticle?mini=true&url=\".concat(url, \"&title=\").concat(title, \"&summary=\").concat(text, \"&source=LinkedIn\"));\n break;\n }\n\n case \"telegram\":\n {\n window.open(isDesktop ? \"https://telegram.me/share/msg?url=\" + url + \"&text=\" + text : \"tg://msg?text=\" + payload);\n break;\n }\n }\n\n resolve();\n closeShareUI();\n });\n });\n container.querySelector(\".shareAPIPolyfill-footer\").addEventListener(\"click\", closeShareUI);\n }\n });\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2hhcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2hhcmUuanM/NjY2OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhIGZldyByZWZlcmVuY2VzOlxuLy8gXHQgIGh0dHA6Ly9jaHJpc3dyZW4uZ2l0aHViLmlvL25hdGl2ZS1zb2NpYWwtaW50ZXJhY3Rpb25zL1xuLy8gICAgaHR0cHM6Ly9uaW1pcS5naXRodWIuaW8vd2ViLXNoYXJlLXNoaW0vZGVtby9cblxubmF2aWdhdG9yLnNoYXJlID1cbiAgbmF2aWdhdG9yLnNoYXJlIHx8XG4gIChmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2VzID0ge1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBzbXM6IFwiU01TXCIsXG4gICAgICAgIG1lc3NlbmdlcjogXCJNZXNzZW5nZXJcIixcbiAgICAgICAgd2hhdHNhcHA6IFwiV2hhdHNBcHBcIixcbiAgICAgICAgdHdpdHRlcjogXCJUd2l0dGVyXCIsXG4gICAgICAgIGxpbmtlZGluOiBcIkxpbmtlZGluXCIsXG4gICAgICAgIHRlbGVncmFtOiBcIlRlbGVncmFtXCIsXG4gICAgICAgIGZhY2Vib29rOiBcIkZhY2Vib29rXCIsXG4gICAgICAgIHNreXBlOiBcIlNreXBlXCIsXG4gICAgICB9LFxuICAgICAgY3M6IHtcbiAgICAgICAgc2hhcmVUaXRsZTogXCJTZMOtbGV0XCIsXG4gICAgICAgIGNhbmNlbDogXCJacnXFoWl0XCIsXG4gICAgICAgIGNvcHk6IFwiS29ww61yb3ZhdFwiLFxuICAgICAgICBwcmludDogXCJUaXNrXCIsXG4gICAgICAgIGVtYWlsOiBcIkUtbWFpbFwiLFxuICAgICAgICBzZWxlY3RTbXM6IFwiVnliZXJ0ZSBrb250YWt0XCIsXG4gICAgICB9LFxuICAgICAgc2s6IHtcbiAgICAgICAgc2hhcmVUaXRsZTogXCJaZGllxL5hxaVcIixcbiAgICAgICAgY2FuY2VsOiBcIlpydcWhacWlXCIsXG4gICAgICAgIGNvcHk6IFwiS29ww61yb3ZhdFwiLFxuICAgICAgICBwcmludDogXCJUbGHEjVwiLFxuICAgICAgICBlbWFpbDogXCJFLW1haWxcIixcbiAgICAgICAgc2VsZWN0U21zOiBcIlZ5YmVydGUga29udGFrdFwiLFxuICAgICAgfSxcbiAgICAgIGphOiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwi5YWx5pyJ44GZ44KLXCIsXG4gICAgICAgIGNhbmNlbDogXCLjgq3jg6Pjg7Pjgrvjg6tcIixcbiAgICAgICAgY29weTogXCLjgrPjg5Tjg7zjgZnjgotcIixcbiAgICAgICAgcHJpbnQ6IFwi5Y2w5Yi344GZ44KLXCIsXG4gICAgICAgIGVtYWlsOiBcIkUtbWFpbFwiLFxuICAgICAgICBzZWxlY3RTbXM6IFwi6YCj57Wh5YWI44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEXCIsXG4gICAgICB9LFxuICAgICAgemg6IHtcbiAgICAgICAgc2hhcmVUaXRsZTogXCLliIbkuqtcIixcbiAgICAgICAgY2FuY2VsOiBcIuWPlua2iFwiLFxuICAgICAgICBjb3B5OiBcIuikh+ijvemAo+e1kFwiLFxuICAgICAgICBwcmludDogXCLliJfljbBcIixcbiAgICAgICAgZW1haWw6IFwiRS1tYWlsXCIsXG4gICAgICAgIHNlbGVjdFNtczogXCLpgbjmk4foga/ntaHkurpcIixcbiAgICAgIH0sXG4gICAgICBwdDoge1xuICAgICAgICBzaGFyZVRpdGxlOiBcIkNvbXBhcnRpbGhhclwiLFxuICAgICAgICBjYW5jZWw6IFwiQ2FuY2VsYXJcIixcbiAgICAgICAgY29weTogXCJDb3BpYXJcIixcbiAgICAgICAgcHJpbnQ6IFwiSW1wcmltaXJcIixcbiAgICAgICAgZW1haWw6IFwiRS1tYWlsXCIsXG4gICAgICAgIHNlbGVjdFNtczogXCJTZWxlY2lvbmUgdW0gY29udGF0b1wiLFxuICAgICAgfSxcbiAgICAgIGVuOiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwiU2hhcmVcIixcbiAgICAgICAgY2FuY2VsOiBcIkNhbmNlbFwiLFxuICAgICAgICBjb3B5OiBcIkNvcHlcIixcbiAgICAgICAgcHJpbnQ6IFwiUHJpbnRcIixcbiAgICAgICAgZW1haWw6IFwiRS1tYWlsXCIsXG4gICAgICAgIHNlbGVjdFNtczogXCJQaWNrIGEgY29udGFjdFwiLFxuICAgICAgfSxcbiAgICAgIGVzOiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwiQ29tcGFydGlyXCIsXG4gICAgICAgIGNhbmNlbDogXCJDYW5jZWxhclwiLFxuICAgICAgICBjb3B5OiBcIkNvcGlhclwiLFxuICAgICAgICBwcmludDogXCJJbXByaW1pclwiLFxuICAgICAgICBlbWFpbDogXCJDb3JyZW9cIixcbiAgICAgICAgc2VsZWN0U21zOiBcIlNlbGVjY2lvbmFyIHVuIGNvbnRhY3RvXCIsXG4gICAgICB9LFxuICAgICAgZnI6IHtcbiAgICAgICAgc2hhcmVUaXRsZTogXCJQYXJ0YWdlclwiLFxuICAgICAgICBjYW5jZWw6IFwiQW5udWxlclwiLFxuICAgICAgICBjb3B5OiBcIkNvcGllclwiLFxuICAgICAgICBwcmludDogXCJJbXByaW1lclwiLFxuICAgICAgICBlbWFpbDogXCJFLW1haWxcIixcbiAgICAgICAgc2VsZWN0U21zOiBcIlZldWlsbGV6IGNob2lzaXIgdW4gY29udGFjdFwiLFxuICAgICAgfSxcbiAgICAgIGRlOiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwiVGVpbGVuXCIsXG4gICAgICAgIGNhbmNlbDogXCJBYmJyZWNoZW5cIixcbiAgICAgICAgY29weTogXCJLb3BpZXJlblwiLFxuICAgICAgICBwcmludDogXCJEcnVja2VuXCIsXG4gICAgICAgIGVtYWlsOiBcIkUtbWFpbFwiLFxuICAgICAgICBzZWxlY3RTbXM6IFwiV8OkaGxlbiBTaWUgZWluZW4gS29udGFrdCBhdXNcIixcbiAgICAgIH0sXG4gICAgICBubDoge1xuICAgICAgICBzaGFyZVRpdGxlOiBcIkRlbGVuXCIsXG4gICAgICAgIGNhbmNlbDogXCJBbm51bGVyZW5cIixcbiAgICAgICAgY29weTogXCJLb3Bpw6tyZW5cIixcbiAgICAgICAgcHJpbnQ6IFwiUHJpbnRlblwiLFxuICAgICAgICBlbWFpbDogXCJFLW1haWxcIixcbiAgICAgICAgc2VsZWN0U21zOiBcIlNlbGVjdGVlciBlZW4gY29udGFjdFwiLFxuICAgICAgfSxcbiAgICAgIHN2OiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwiRGVsYVwiLFxuICAgICAgICBjYW5jZWw6IFwiQXZicnl0XCIsXG4gICAgICAgIGNvcHk6IFwiS29waWVyYVwiLFxuICAgICAgICBwcmludDogXCJTa3JpdiB1dFwiLFxuICAgICAgICBlbWFpbDogXCJFLW1haWxcIixcbiAgICAgICAgc2VsZWN0U21zOiBcIlbDpGxqIGVuIGtvbnRha3RcIixcbiAgICAgIH0sXG4gICAgICBkYToge1xuICAgICAgICBzaGFyZVRpdGxlOiBcIkRlbFwiLFxuICAgICAgICBjYW5jZWw6IFwiTHVrXCIsXG4gICAgICAgIGNvcHk6IFwiS29wacOpclwiLFxuICAgICAgICBwcmludDogXCJVZHNrcml2XCIsXG4gICAgICAgIGVtYWlsOiBcIkUtbWFpbFwiLFxuICAgICAgICBzZWxlY3RTbXM6IFwiVsOmbGcgZW4ga29udGFrdHBlcnNvblwiLFxuICAgICAgfSxcbiAgICAgIC8vIERlcHJlY2F0ZWQsIHVzZSBgZGFgIGluc3RlYWQuXG4gICAgICBkazoge1xuICAgICAgICBzaGFyZVRpdGxlOiBcIkRlbFwiLFxuICAgICAgICBjYW5jZWw6IFwiTHVrXCIsXG4gICAgICAgIGNvcHk6IFwiS29wacOpclwiLFxuICAgICAgICBwcmludDogXCJVZHNrcml2XCIsXG4gICAgICAgIGVtYWlsOiBcIkUtbWFpbFwiLFxuICAgICAgICBzZWxlY3RTbXM6IFwiVsOmbGcgZW4ga29udGFrdHBlcnNvblwiLFxuICAgICAgfSxcbiAgICAgIHJ1OiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwi0J/QvtC00LXQu9C40YLRjNGB0Y9cIixcbiAgICAgICAgY2FuY2VsOiBcItCe0YLQvNC10L3QsFwiLFxuICAgICAgICBjb3B5OiBcItCh0LrQvtC/0LjRgNC+0LLQsNGC0YxcIixcbiAgICAgICAgcHJpbnQ6IFwi0J/QtdGH0LDRgtGMXCIsXG4gICAgICAgIGVtYWlsOiBcItCtLdC80LDQudC7XCIsXG4gICAgICAgIHNlbGVjdFNtczogXCLQktGL0LHQtdGA0Lgg0LrQvtC90YLQsNC60YJcIixcbiAgICAgIH0sXG4gICAgICB0cjoge1xuICAgICAgICBzaGFyZVRpdGxlOiBcIlBheWxhxZ9cIixcbiAgICAgICAgY2FuY2VsOiBcIlZhemdlw6dcIixcbiAgICAgICAgY29weTogXCJLb3B5YWxhXCIsXG4gICAgICAgIHByaW50OiBcIllhemTEsXJcIixcbiAgICAgICAgZW1haWw6IFwiRS1wb3N0YVwiLFxuICAgICAgICBzZWxlY3RTbXM6IFwiQmlyIGtpxZ9pIHNlw6dcIixcbiAgICAgIH0sXG4gICAgICBrbzoge1xuICAgICAgICBzaGFyZVRpdGxlOiBcIuqzteycoFwiLFxuICAgICAgICBjYW5jZWw6IFwi7Leo7IaMXCIsXG4gICAgICAgIGNvcHk6IFwi66eB7YGsIOuzteyCrFwiLFxuICAgICAgICBwcmludDogXCLsnbjsh4RcIixcbiAgICAgICAgZW1haWw6IFwiRS1tYWlsXCIsXG4gICAgICAgIHNlbGVjdFNtczogXCLsl7Drnb3sspjrpbwg7ISg7YOd7ZWY7IS47JqUXCIsXG4gICAgICB9LFxuICAgICAgdGE6IHtcbiAgICAgICAgc2hhcmVUaXRsZTogXCLgrqrgrpXgrr/grrDgr41cIixcbiAgICAgICAgY2FuY2VsOiBcIuCuh+CusOCupOCvjeCupOCvgVwiLFxuICAgICAgICBjb3B5OiBcIuCuqOCuleCusuCvhuCun+CvgVwiLFxuICAgICAgICBwcmludDogXCLgroXgrprgr43grprgrr/grp/gr4FcIixcbiAgICAgICAgZW1haWw6IFwi4K6u4K6/4K6p4K+N4K6p4K6e4K+N4K6a4K6y4K+NXCIsXG4gICAgICAgIHNlbGVjdFNtczogXCLgrpLgrrDgr4Eg4K6k4K+K4K6f4K6w4K+N4K6q4K+I4K6k4K+NIOCupOCvh+CusOCvjeCuteCvgeCumuCvhuCur+CvjeCulVwiLFxuICAgICAgfSxcbiAgICAgIHBsOiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwiRHppZWxpxIdcIixcbiAgICAgICAgY2FuY2VsOiBcIkFudWx1alwiLFxuICAgICAgICBjb3B5OiBcIktvcGl1alwiLFxuICAgICAgICBwcmludDogXCJXeWRydWtvd2HEh1wiLFxuICAgICAgICBlbWFpbDogXCJFLW1haWxcIixcbiAgICAgICAgc2VsZWN0U21zOiBcIld5Ymllcnoga29udGFrdFwiLFxuICAgICAgfSxcbiAgICAgIGlzOiB7XG4gICAgICAgIHNoYXJlVGl0bGU6IFwiRGVpbGFcIixcbiAgICAgICAgY2FuY2VsOiBcIkjDpnR0YSB2acOwXCIsXG4gICAgICAgIGNvcHk6IFwiQWZyaXRhXCIsXG4gICAgICAgIHByaW50OiBcIlByZW50YVwiLFxuICAgICAgICBlbWFpbDogXCJQw7NzdHVyXCIsXG4gICAgICAgIHNlbGVjdFNtczogXCJWZWxkdSB0ZW5naWxpw7BcIixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGxldCBhbmRyb2lkID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKTtcbiAgICBsZXQgaW9zID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBob25lfGlQYWR8aVBvZC9pKTtcbiAgICBsZXQgbWFjID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBob25lfGlQYWR8aVBvZHxNYWNpbnRvc2gvaSk7IC8vIFRlc3QgaWYgbWFjIHRvIHVzZSBpb3MvbWFjIHNoYXJlIGljb24gb24gdGl0bGUsIHVzZWQgdG8gaW52b2tlIHRoZSBmYW1pbGlhcnkgY29uY2VwdC5cblxuICAgIGNvbnN0IGlzRGVza3RvcCA9ICEoaW9zIHx8IGFuZHJvaWQpO1xuXG4gICAgLy8gQ2xlYW5lZCB1cCBpY29ucyBmcm9tIG1hdGVyaWFsIFVJIGFuZCBGb250YXdzb21lXG4gICAgLy8gQ29sb3JzIHBhbGxldGUgaHR0cHM6Ly93d3cubWF0ZXJpYWx1aS5jby9jb2xvcnMvZ3JleS81MDBcbiAgICAvLyBJY29uIENvbG9ycyBmcm9tIGh0dHBzOi8vYnJhbmRjb2xvcnMubmV0XG4gICAgY29uc3QgaWNvbiA9IHtcbiAgICAgIHNoYXJlOiBtYWNcbiAgICAgICAgPyAnPHN2ZyBjbGFzcz1cInRoZS1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCI+PGc+PHBhdGggZmlsbD1cIiM0MjQyNDJcIiBkPVwiTTM4MS45LDE4MWw5NS44LTk1Ljh2NTI1LjljMCwxMy40LDguOSwyMi4zLDIyLjMsMjIuM2MxMy40LDAsMjIuMy04LjksMjIuMy0yMi4zVjg1LjJsOTUuOCw5NS44YzQuNSw0LjUsOC45LDYuNywxNS42LDYuN2M2LjcsMCwxMS4xLTIuMiwxNS42LTYuN2M4LjktOC45LDguOS0yMi4zLDAtMzEuMkw1MTUuNiwxNi4xYy0yLjItMi4yLTQuNS00LjUtNi43LTQuNWMtNC41LTIuMi0xMS4xLTIuMi0xNy44LDBjLTIuMiwyLjItNC41LDIuMi02LjcsNC41TDM1MC43LDE0OS44Yy04LjksOC45LTguOSwyMi4zLDAsMzEuMkMzNTkuNiwxOTAsMzczLDE5MCwzODEuOSwxODF6IE04MTIsMjc2LjlINjMzLjd2NDQuNkg4MTJ2NjI0SDE4OHYtNjI0aDE3OC4zdi00NC42SDE4OGMtMjQuNSwwLTQ0LjYsMjAuMS00NC42LDQ0LjZ2NjI0YzAsMjQuNSwyMC4xLDQ0LjYsNDQuNiw0NC42aDYyNGMyNC41LDAsNDQuNi0yMC4xLDQ0LjYtNDQuNnYtNjI0Qzg1Ni42LDI5Ni45LDgzNi41LDI3Ni45LDgxMiwyNzYuOXpcIi8+PC9nPjwvc3ZnPidcbiAgICAgICAgOiAnPHN2ZyBjbGFzcz1cInRoZS1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPjxwYXRoIGZpbGw9XCIjNDI0MjQyXCIgZD1cIk0xOCAxNi4wOGMtLjc2IDAtMS40NC4zLTEuOTYuNzdMOC45MSAxMi43Yy4wNS0uMjMuMDktLjQ2LjA5LS43cy0uMDQtLjQ3LS4wOS0uN2w3LjA1LTQuMTFjLjU0LjUgMS4yNS44MSAyLjA0LjgxIDEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDNjMCAuMjQuMDQuNDcuMDkuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MuNzkgMCAxLjUtLjMxIDIuMDQtLjgxbDcuMTIgNC4xNmMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjYxIDEuMzEgMi45MiAyLjkyIDIuOTIgMS42MSAwIDIuOTItMS4zMSAyLjkyLTIuOTJzLTEuMzEtMi45Mi0yLjkyLTIuOTJ6XCIvPjwvc3ZnPicsXG4gICAgICBlbWFpbDpcbiAgICAgICAgJzxzdmcgY2xhc3M9XCJ0aGUtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz48cGF0aCBmaWxsPVwiIzQyNDI0MlwiIGQ9XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWOGw4IDUgOC01djEwem0tOC03TDQgNmgxNmwtOCA1elwiLz48L3N2Zz4nLFxuICAgICAgY29weTpcbiAgICAgICAgJzxzdmcgY2xhc3M9XCJ0aGUtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIj48cGF0aCBmaWxsPVwiIzQyNDI0MlwiIGQ9XCJNMzIwIDQ0OHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYxMjBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDcydjI5NmMwIDMwLjg3OSAyNS4xMjEgNTYgNTYgNTZoMTY4em0wLTM0NFYwSDE1MmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djM2OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjcyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxMjhIMzQ0Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTIwLjk3MS0zMS4wMjlMMzc1LjAyOSA3LjAyOUEyNCAyNCAwIDAgMCAzNTguMDU5IDBIMzUydjk2aDk2di02LjA1OWEyNCAyNCAwIDAgMC03LjAyOS0xNi45N3pcIj48L3BhdGg+PC9zdmc+JyxcbiAgICAgIHByaW50OlxuICAgICAgICAnPHN2ZyBjbGFzcz1cInRoZS1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPVwiIzQyNDI0MlwiIGQ9XCJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6XCIvPjxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+PC9zdmc+JyxcbiAgICAgIHNtczpcbiAgICAgICAgJzxzdmcgY2xhc3M9XCJ0aGUtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggZmlsbD1cIiM0MjQyNDJcIiBkPVwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDExSDdWOWgydjJ6bTQgMGgtMlY5aDJ2MnptNCAwaC0yVjloMnYyelwiLz48cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPjwvc3ZnPicsXG4gICAgICBtZXNzZW5nZXI6XG4gICAgICAgICc8c3ZnIGNsYXNzPVwidGhlLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA0NDggNTEyXCI+PHBhdGggZmlsbD1cIiMwMDg0ZmZcIiBkPVwiTTIyNCAzMkMxNS45IDMyLTc3LjUgMjc4IDg0LjYgNDAwLjZWNDgwbDc1LjctNDJjMTQyLjIgMzkuOCAyODUuNC01OS45IDI4NS40LTE5OC43QzQ0NS44IDEyNC44IDM0Ni41IDMyIDIyNCAzMnptMjMuNCAyNzguMUwxOTAgMjUwLjUgNzkuNiAzMTEuNmwxMjEuMS0xMjguNSA1Ny40IDU5LjYgMTEwLjQtNjEuMS0xMjEuMSAxMjguNXpcIj48L3BhdGg+PC9zdmc+JyxcbiAgICAgIGZhY2Vib29rOlxuICAgICAgICAnPHN2ZyBjbGFzcz1cInRoZS1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNDQ4IDUxMlwiPjxwYXRoIGZpbGw9XCIjM2I1OTk4XCIgZD1cIk00NDggNTYuN3YzOTguNWMwIDEzLjctMTEuMSAyNC43LTI0LjcgMjQuN0gzMDkuMVYzMDYuNWg1OC4ybDguNy02Ny42aC02N3YtNDMuMmMwLTE5LjYgNS40LTMyLjkgMzMuNS0zMi45aDM1Ljh2LTYwLjVjLTYuMi0uOC0yNy40LTIuNy01Mi4yLTIuNy01MS42IDAtODcgMzEuNS04NyA4OS40djQ5LjloLTU4LjR2NjcuNmg1OC40VjQ4MEgyNC43QzExLjEgNDgwIDAgNDY4LjkgMCA0NTUuM1Y1Ni43QzAgNDMuMSAxMS4xIDMyIDI0LjcgMzJoMzk4LjVjMTMuNyAwIDI0LjggMTEuMSAyNC44IDI0Ljd6XCI+PC9wYXRoPjwvc3ZnPicsXG4gICAgICB3aGF0c2FwcDpcbiAgICAgICAgJzxzdmcgY2xhc3M9XCJ0aGUtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIj48cGF0aCBmaWxsPVwiIzA3NWU1NFwiIGQ9XCJNMjI0IDEyMi44Yy03Mi43IDAtMTMxLjggNTkuMS0xMzEuOSAxMzEuOCAwIDI0LjkgNyA0OS4yIDIwLjIgNzAuMWwzLjEgNS0xMy4zIDQ4LjYgNDkuOS0xMy4xIDQuOCAyLjljMjAuMiAxMiA0My40IDE4LjQgNjcuMSAxOC40aC4xYzcyLjYgMCAxMzMuMy01OS4xIDEzMy4zLTEzMS44IDAtMzUuMi0xNS4yLTY4LjMtNDAuMS05My4yLTI1LTI1LTU4LTM4LjctOTMuMi0zOC43em03Ny41IDE4OC40Yy0zLjMgOS4zLTE5LjEgMTcuNy0yNi43IDE4LjgtMTIuNiAxLjktMjIuNC45LTQ3LjUtOS45LTM5LjctMTcuMi02NS43LTU3LjItNjcuNy01OS44LTItMi42LTE2LjItMjEuNS0xNi4yLTQxczEwLjItMjkuMSAxMy45LTMzLjFjMy42LTQgNy45LTUgMTAuNi01IDIuNiAwIDUuMyAwIDcuNi4xIDIuNC4xIDUuNy0uOSA4LjkgNi44IDMuMyA3LjkgMTEuMiAyNy40IDEyLjIgMjkuNHMxLjcgNC4zLjMgNi45Yy03LjYgMTUuMi0xNS43IDE0LjYtMTEuNiAyMS42IDE1LjMgMjYuMyAzMC42IDM1LjQgNTMuOSA0Ny4xIDQgMiA2LjMgMS43IDguNi0xIDIuMy0yLjYgOS45LTExLjYgMTIuNS0xNS41IDIuNi00IDUuMy0zLjMgOC45LTIgMy42IDEuMyAyMy4xIDEwLjkgMjcuMSAxMi45czYuNiAzIDcuNiA0LjZjLjkgMS45LjkgOS45LTIuNCAxOS4xek00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjMuOSA0MTMuMmMtMjYuNiAwLTUyLjctNi43LTc1LjgtMTkuM0w2NCA0MTZsMjIuNS04Mi4yYy0xMy45LTI0LTIxLjItNTEuMy0yMS4yLTc5LjNDNjUuNCAxNjcuMSAxMzYuNSA5NiAyMjMuOSA5NmM0Mi40IDAgODIuMiAxNi41IDExMi4yIDQ2LjUgMjkuOSAzMCA0Ny45IDY5LjggNDcuOSAxMTIuMiAwIDg3LjQtNzIuNyAxNTguNS0xNjAuMSAxNTguNXpcIj48L3BhdGg+PC9zdmc+JyxcbiAgICAgIHR3aXR0ZXI6XG4gICAgICAgICc8c3ZnIGNsYXNzPVwidGhlLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+PHBhdGggZmlsbD1cIiMxZGExZjJcIiBkPVwiTTQ1OS4zNyAxNTEuNzE2Yy4zMjUgNC41NDguMzI1IDkuMDk3LjMyNSAxMy42NDUgMCAxMzguNzItMTA1LjU4MyAyOTguNTU4LTI5OC41NTggMjk4LjU1OC01OS40NTIgMC0xMTQuNjgtMTcuMjE5LTE2MS4xMzctNDcuMTA2IDguNDQ3Ljk3NCAxNi41NjggMS4yOTkgMjUuMzQgMS4yOTkgNDkuMDU1IDAgOTQuMjEzLTE2LjU2OCAxMzAuMjc0LTQ0LjgzMi00Ni4xMzItLjk3NS04NC43OTItMzEuMTg4LTk4LjExMi03Mi43NzIgNi40OTguOTc0IDEyLjk5NSAxLjYyNCAxOS44MTggMS42MjQgOS40MjEgMCAxOC44NDMtMS4zIDI3LjYxNC0zLjU3My00OC4wODEtOS43NDctODQuMTQzLTUxLjk4LTg0LjE0My0xMDIuOTg1di0xLjI5OWMxMy45NjkgNy43OTcgMzAuMjE0IDEyLjY3IDQ3LjQzMSAxMy4zMTktMjguMjY0LTE4Ljg0My00Ni43ODEtNTEuMDA1LTQ2Ljc4MS04Ny4zOTEgMC0xOS40OTIgNS4xOTctMzcuMzYgMTQuMjk0LTUyLjk1NCA1MS42NTUgNjMuNjc1IDEyOS4zIDEwNS4yNTggMjE2LjM2NSAxMDkuODA3LTEuNjI0LTcuNzk3LTIuNTk5LTE1LjkxOC0yLjU5OS0yNC4wNCAwLTU3LjgyOCA0Ni43ODItMTA0LjkzNCAxMDQuOTM0LTEwNC45MzQgMzAuMjEzIDAgNTcuNTAyIDEyLjY3IDc2LjY3IDMzLjEzNyAyMy43MTUtNC41NDggNDYuNDU2LTEzLjMyIDY2LjU5OS0yNS4zNC03Ljc5OCAyNC4zNjYtMjQuMzY2IDQ0LjgzMy00Ni4xMzIgNTcuODI3IDIxLjExNy0yLjI3MyA0MS41ODQtOC4xMjIgNjAuNDI2LTE2LjI0My0xNC4yOTIgMjAuNzkxLTMyLjE2MSAzOS4zMDgtNTIuNjI4IDU0LjI1M3pcIj48L3BhdGg+PC9zdmc+JyxcbiAgICAgIGxpbmtlZGluOlxuICAgICAgICAnPHN2ZyBjbGFzcz1cInRoZS1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNDQ4IDUxMlwiPjxwYXRoIGZpbGw9XCIjMDA3N2I1XCIgZD1cIk00MTYgMzJIMzEuOUMxNC4zIDMyIDAgNDYuNSAwIDY0LjN2MzgzLjRDMCA0NjUuNSAxNC4zIDQ4MCAzMS45IDQ4MEg0MTZjMTcuNiAwIDMyLTE0LjUgMzItMzIuM1Y2NC4zYzAtMTcuOC0xNC40LTMyLjMtMzItMzIuM3pNMTM1LjQgNDE2SDY5VjIwMi4yaDY2LjVWNDE2em0tMzMuMi0yNDNjLTIxLjMgMC0zOC41LTE3LjMtMzguNS0zOC41UzgwLjkgOTYgMTAyLjIgOTZjMjEuMiAwIDM4LjUgMTcuMyAzOC41IDM4LjUgMCAyMS4zLTE3LjIgMzguNS0zOC41IDM4LjV6bTI4Mi4xIDI0M2gtNjYuNFYzMTJjMC0yNC44LS41LTU2LjctMzQuNS01Ni43LTM0LjYgMC0zOS45IDI3LTM5LjkgNTQuOVY0MTZoLTY2LjRWMjAyLjJoNjMuN3YyOS4yaC45YzguOS0xNi44IDMwLjYtMzQuNSA2Mi45LTM0LjUgNjcuMiAwIDc5LjcgNDQuMyA3OS43IDEwMS45VjQxNnpcIj48L3BhdGg+PC9zdmc+JyxcbiAgICAgIHRlbGVncmFtOlxuICAgICAgICAnPHN2ZyBjbGFzcz1cInRoZS1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNDk2IDUxMlwiPjxwYXRoIGZpbGw9XCIjMDA4OGNjXCIgZD1cIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xMjEuOCAxNjkuOWwtNDAuNyAxOTEuOGMtMyAxMy42LTExLjEgMTYuOS0yMi40IDEwLjVsLTYyLTQ1LjctMjkuOSAyOC44Yy0zLjMgMy4zLTYuMSA2LjEtMTIuNSA2LjFsNC40LTYzLjEgMTE0LjktMTAzLjhjNS00LjQtMS4xLTYuOS03LjctMi41bC0xNDIgODkuNC02MS4yLTE5LjFjLTEzLjMtNC4yLTEzLjYtMTMuMyAyLjgtMTkuN2wyMzkuMS05Mi4yYzExLjEtNCAyMC44IDIuNyAxNy4yIDE5LjV6XCI+PC9wYXRoPjwvc3ZnPicsXG4gICAgICBza3lwZTpcbiAgICAgICAgJzxzdmcgY2xhc3M9XCJ0aGUtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIj48cGF0aCBmaWxsPVwiIzAwYWZmMFwiIGQ9XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIj48L3BhdGg+PC9zdmc+JyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYXBwZW5kQ1NTKGNvbnRlbnQpIHtcbiAgICAgIHZhciBjc3MgPSBjb250ZW50LFxuICAgICAgICBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0sXG4gICAgICAgIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXG4gICAgICBzdHlsZS50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuICAgICAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgSUU4IGFuZCBiZWxvdy5cbiAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlLmlkID0gXCJzaGFyZUFQSVBvbHlmaWxsLXN0eWxlXCI7XG5cbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBTaGFyZUFQSVBvbHlmaWxsKGRhdGEgPSB7fSwgY29uZmlndXJhdGlvbnMgPSB7fSkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFkYXRhLnRpdGxlIHx8XG4gICAgICAgICAgdHlwZW9mIGRhdGEudGl0bGUgIT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAhZGF0YS50ZXh0IHx8XG4gICAgICAgICAgdHlwZW9mIGRhdGEudGV4dCAhPT0gXCJzdHJpbmdcIlxuICAg