@verified-network/verified-custody 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/babel.config.json +12 -0
- package/dist/index.d.mts +165 -0
- package/dist/index.d.ts +165 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +31 -38
- package/src/components/overlays.tsx +61 -0
- package/src/components/search.tsx +381 -0
- package/src/components/slider.tsx +29 -0
- package/src/components/success.tsx +142 -0
- package/src/customTypes.d.ts +37 -0
- package/src/index.ts +17 -0
- package/src/pages/addCosigners.tsx +1014 -0
- package/src/pages/contact.tsx +280 -0
- package/src/pages/createPin.tsx +693 -0
- package/src/pages/enterPin.tsx +821 -0
- package/src/pages/ftu.tsx +244 -0
- package/src/pages/index.tsx +170 -0
- package/src/pages/otp.tsx +410 -0
- package/src/services/contracts.ts +817 -0
- package/src/services/store.tsx +65 -0
- package/src/style.css +2030 -0
- package/src/utils/config.ts +103 -0
- package/src/utils/constants.ts +1966 -0
- package/src/utils/helpers.tsx +334 -0
- package/src/utils/types.ts +85 -0
- package/tsconfig.json +16 -0
- package/tsup.config.ts +36 -0
- package/README.md +0 -93
- package/dist/assets/icon128.png +0 -0
- package/dist/assets/icon16.png +0 -0
- package/dist/assets/icon32.png +0 -0
- package/dist/assets/icon48.png +0 -0
- package/dist/autoreload-bg.1777342b.js +0 -392
- package/dist/autoreload.af9e0afa.js +0 -393
- package/dist/main.js +0 -2
- package/dist/main.js.LICENSE.txt +0 -190
- package/dist/manifest.json +0 -39
- package/dist/src/scripts/background.js +0 -866
- package/dist/src/scripts/content.js +0 -22029
- package/dist/src/static/options.b1269179.js +0 -22033
- package/dist/src/static/options.html +0 -9
- package/dist/src/static/popup.e3c8c7b7.js +0 -22043
- package/dist/src/static/popup.html +0 -9
- package/dist/webext-prod/assets/icon128.png +0 -0
- package/dist/webext-prod/assets/icon16.png +0 -0
- package/dist/webext-prod/assets/icon32.png +0 -0
- package/dist/webext-prod/assets/icon48.png +0 -0
- package/dist/webext-prod/manifest.json +0 -36
- package/dist/webext-prod/src/scripts/background.js +0 -2
- package/dist/webext-prod/src/scripts/background.js.map +0 -1
- package/dist/webext-prod/src/scripts/content.js +0 -35
- package/dist/webext-prod/src/scripts/content.js.map +0 -1
- package/dist/webext-prod/src/static/options.a111dcd9.js +0 -2
- package/dist/webext-prod/src/static/options.a111dcd9.js.map +0 -1
- package/dist/webext-prod/src/static/options.html +0 -1
- package/dist/webext-prod/src/static/popup.70071e3e.js +0 -35
- package/dist/webext-prod/src/static/popup.70071e3e.js.map +0 -1
- package/dist/webext-prod/src/static/popup.cc04f56e.js +0 -2
- package/dist/webext-prod/src/static/popup.cc04f56e.js.map +0 -1
- package/dist/webext-prod/src/static/popup.e8a65b8a.js +0 -35
- package/dist/webext-prod/src/static/popup.e8a65b8a.js.map +0 -1
- package/dist/webext-prod/src/static/popup.html +0 -1
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
// modules are defined as an array
|
|
2
|
-
// [ module function, map of requires ]
|
|
3
|
-
//
|
|
4
|
-
// map of requires is short require name -> numeric require
|
|
5
|
-
//
|
|
6
|
-
// anything defined in a previous bundle is accessed via the
|
|
7
|
-
// orig method which is the require for previous bundles
|
|
8
|
-
|
|
9
|
-
(function(modules, entry, mainEntry, parcelRequireName, globalName) {
|
|
10
|
-
/* eslint-disable no-undef */
|
|
11
|
-
var globalObject =
|
|
12
|
-
typeof globalThis !== 'undefined'
|
|
13
|
-
? globalThis
|
|
14
|
-
: typeof self !== 'undefined'
|
|
15
|
-
? self
|
|
16
|
-
: typeof window !== 'undefined'
|
|
17
|
-
? window
|
|
18
|
-
: typeof global !== 'undefined'
|
|
19
|
-
? global
|
|
20
|
-
: {};
|
|
21
|
-
/* eslint-enable no-undef */
|
|
22
|
-
|
|
23
|
-
// Save the require from previous bundle to this closure if any
|
|
24
|
-
var previousRequire =
|
|
25
|
-
typeof globalObject[parcelRequireName] === 'function' &&
|
|
26
|
-
globalObject[parcelRequireName];
|
|
27
|
-
|
|
28
|
-
var cache = previousRequire.cache || {};
|
|
29
|
-
// Do not use `require` to prevent Webpack from trying to bundle this call
|
|
30
|
-
var nodeRequire =
|
|
31
|
-
typeof module !== 'undefined' &&
|
|
32
|
-
typeof module.require === 'function' &&
|
|
33
|
-
module.require.bind(module);
|
|
34
|
-
|
|
35
|
-
function newRequire(name, jumped) {
|
|
36
|
-
if (!cache[name]) {
|
|
37
|
-
if (!modules[name]) {
|
|
38
|
-
// if we cannot find the module within our internal map or
|
|
39
|
-
// cache jump to the current global require ie. the last bundle
|
|
40
|
-
// that was added to the page.
|
|
41
|
-
var currentRequire =
|
|
42
|
-
typeof globalObject[parcelRequireName] === 'function' &&
|
|
43
|
-
globalObject[parcelRequireName];
|
|
44
|
-
if (!jumped && currentRequire) {
|
|
45
|
-
return currentRequire(name, true);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// If there are other bundles on this page the require from the
|
|
49
|
-
// previous one is saved to 'previousRequire'. Repeat this as
|
|
50
|
-
// many times as there are bundles until the module is found or
|
|
51
|
-
// we exhaust the require chain.
|
|
52
|
-
if (previousRequire) {
|
|
53
|
-
return previousRequire(name, true);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Try the node require function if it exists.
|
|
57
|
-
if (nodeRequire && typeof name === 'string') {
|
|
58
|
-
return nodeRequire(name);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
var err = new Error("Cannot find module '" + name + "'");
|
|
62
|
-
err.code = 'MODULE_NOT_FOUND';
|
|
63
|
-
throw err;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
localRequire.resolve = resolve;
|
|
67
|
-
localRequire.cache = {};
|
|
68
|
-
|
|
69
|
-
var module = (cache[name] = new newRequire.Module(name));
|
|
70
|
-
|
|
71
|
-
modules[name][0].call(
|
|
72
|
-
module.exports,
|
|
73
|
-
localRequire,
|
|
74
|
-
module,
|
|
75
|
-
module.exports,
|
|
76
|
-
this,
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return cache[name].exports;
|
|
81
|
-
|
|
82
|
-
function localRequire(x) {
|
|
83
|
-
return newRequire(localRequire.resolve(x));
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function resolve(x) {
|
|
87
|
-
return modules[name][1][x] || x;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function Module(moduleName) {
|
|
92
|
-
this.id = moduleName;
|
|
93
|
-
this.bundle = newRequire;
|
|
94
|
-
this.exports = {};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
newRequire.isParcelRequire = true;
|
|
98
|
-
newRequire.Module = Module;
|
|
99
|
-
newRequire.modules = modules;
|
|
100
|
-
newRequire.cache = cache;
|
|
101
|
-
newRequire.parent = previousRequire;
|
|
102
|
-
newRequire.register = function(id, exports) {
|
|
103
|
-
modules[id] = [
|
|
104
|
-
function(require, module) {
|
|
105
|
-
module.exports = exports;
|
|
106
|
-
},
|
|
107
|
-
{},
|
|
108
|
-
];
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
Object.defineProperty(newRequire, 'root', {
|
|
112
|
-
get: function() {
|
|
113
|
-
return globalObject[parcelRequireName];
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
globalObject[parcelRequireName] = newRequire;
|
|
118
|
-
|
|
119
|
-
for (var i = 0; i < entry.length; i++) {
|
|
120
|
-
newRequire(entry[i]);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (mainEntry) {
|
|
124
|
-
// Expose entry point to Node, AMD or browser globals
|
|
125
|
-
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
|
|
126
|
-
var mainExports = newRequire(mainEntry);
|
|
127
|
-
|
|
128
|
-
// CommonJS
|
|
129
|
-
if (typeof exports === 'object' && typeof module !== 'undefined') {
|
|
130
|
-
module.exports = mainExports;
|
|
131
|
-
|
|
132
|
-
// RequireJS
|
|
133
|
-
} else if (typeof define === 'function' && define.amd) {
|
|
134
|
-
define(function() {
|
|
135
|
-
return mainExports;
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// <script>
|
|
139
|
-
} else if (globalName) {
|
|
140
|
-
this[globalName] = mainExports;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
})({"55RhX":[function(require,module,exports) {
|
|
144
|
-
var HMR_HOST = "localhost";
|
|
145
|
-
var HMR_PORT = null;
|
|
146
|
-
var HMR_SECURE = false;
|
|
147
|
-
var HMR_ENV_HASH = "d751713988987e9331980363e24189ce";
|
|
148
|
-
module.bundle.HMR_BUNDLE_ID = "f344c156756277e744aacd87af9e0afa"; // @flow
|
|
149
|
-
/* global HMR_HOST, HMR_PORT, HMR_ENV_HASH, HMR_SECURE */ /*::
|
|
150
|
-
import type {
|
|
151
|
-
HMRAsset,
|
|
152
|
-
HMRMessage,
|
|
153
|
-
} from '@parcel/reporter-dev-server/src/HMRServer.js';
|
|
154
|
-
interface ParcelRequire {
|
|
155
|
-
(string): mixed;
|
|
156
|
-
cache: {|[string]: ParcelModule|};
|
|
157
|
-
hotData: mixed;
|
|
158
|
-
Module: any;
|
|
159
|
-
parent: ?ParcelRequire;
|
|
160
|
-
isParcelRequire: true;
|
|
161
|
-
modules: {|[string]: [Function, {|[string]: string|}]|};
|
|
162
|
-
HMR_BUNDLE_ID: string;
|
|
163
|
-
root: ParcelRequire;
|
|
164
|
-
}
|
|
165
|
-
interface ParcelModule {
|
|
166
|
-
hot: {|
|
|
167
|
-
data: mixed,
|
|
168
|
-
accept(cb: (Function) => void): void,
|
|
169
|
-
dispose(cb: (mixed) => void): void,
|
|
170
|
-
// accept(deps: Array<string> | string, cb: (Function) => void): void,
|
|
171
|
-
// decline(): void,
|
|
172
|
-
_acceptCallbacks: Array<(Function) => void>,
|
|
173
|
-
_disposeCallbacks: Array<(mixed) => void>,
|
|
174
|
-
|};
|
|
175
|
-
}
|
|
176
|
-
declare var module: {bundle: ParcelRequire, ...};
|
|
177
|
-
declare var HMR_HOST: string;
|
|
178
|
-
declare var HMR_PORT: string;
|
|
179
|
-
declare var HMR_ENV_HASH: string;
|
|
180
|
-
declare var HMR_SECURE: boolean;
|
|
181
|
-
*/ var OVERLAY_ID = '__parcel__error__overlay__';
|
|
182
|
-
var OldModule = module.bundle.Module;
|
|
183
|
-
function Module(moduleName) {
|
|
184
|
-
OldModule.call(this, moduleName);
|
|
185
|
-
this.hot = {
|
|
186
|
-
data: module.bundle.hotData,
|
|
187
|
-
_acceptCallbacks: [],
|
|
188
|
-
_disposeCallbacks: [],
|
|
189
|
-
accept: function(fn) {
|
|
190
|
-
this._acceptCallbacks.push(fn || function() {
|
|
191
|
-
});
|
|
192
|
-
},
|
|
193
|
-
dispose: function(fn) {
|
|
194
|
-
this._disposeCallbacks.push(fn);
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
module.bundle.hotData = undefined;
|
|
198
|
-
}
|
|
199
|
-
module.bundle.Module = Module;
|
|
200
|
-
var checkedAssets/*: {|[string]: boolean|} */ , acceptedAssets/*: {|[string]: boolean|} */ , assetsToAccept/*: Array<[ParcelRequire, string]> */ ;
|
|
201
|
-
function getHostname() {
|
|
202
|
-
return HMR_HOST || (location.protocol.indexOf('http') === 0 ? location.hostname : 'localhost');
|
|
203
|
-
}
|
|
204
|
-
function getPort() {
|
|
205
|
-
return HMR_PORT || location.port;
|
|
206
|
-
}
|
|
207
|
-
// eslint-disable-next-line no-redeclare
|
|
208
|
-
var parent = module.bundle.parent;
|
|
209
|
-
if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
|
|
210
|
-
var hostname = getHostname();
|
|
211
|
-
var port = getPort();
|
|
212
|
-
var protocol = HMR_SECURE || location.protocol == 'https:' && !/localhost|127.0.0.1|0.0.0.0/.test(hostname) ? 'wss' : 'ws';
|
|
213
|
-
var ws = new WebSocket(protocol + '://' + hostname + (port ? ':' + port : '') + '/');
|
|
214
|
-
// $FlowFixMe
|
|
215
|
-
ws.onmessage = function(event/*: {data: string, ...} */ ) {
|
|
216
|
-
checkedAssets = {
|
|
217
|
-
};
|
|
218
|
-
acceptedAssets = {
|
|
219
|
-
};
|
|
220
|
-
assetsToAccept = [];
|
|
221
|
-
var data = JSON.parse(event.data);
|
|
222
|
-
if (data.type === 'update') {
|
|
223
|
-
// Remove error overlay if there is one
|
|
224
|
-
removeErrorOverlay();
|
|
225
|
-
let assets = data.assets.filter((asset)=>asset.envHash === HMR_ENV_HASH
|
|
226
|
-
);
|
|
227
|
-
// Handle HMR Update
|
|
228
|
-
var handled = false;
|
|
229
|
-
assets.forEach((asset)=>{
|
|
230
|
-
var didAccept = asset.type === 'css' || asset.type === 'js' && hmrAcceptCheck(module.bundle.root, asset.id, asset.depsByBundle);
|
|
231
|
-
if (didAccept) handled = true;
|
|
232
|
-
});
|
|
233
|
-
if (handled) {
|
|
234
|
-
console.clear();
|
|
235
|
-
assets.forEach(function(asset) {
|
|
236
|
-
hmrApply(module.bundle.root, asset);
|
|
237
|
-
});
|
|
238
|
-
for(var i = 0; i < assetsToAccept.length; i++){
|
|
239
|
-
var id = assetsToAccept[i][1];
|
|
240
|
-
if (!acceptedAssets[id]) hmrAcceptRun(assetsToAccept[i][0], id);
|
|
241
|
-
}
|
|
242
|
-
} else window.location.reload();
|
|
243
|
-
}
|
|
244
|
-
if (data.type === 'error') {
|
|
245
|
-
// Log parcel errors to console
|
|
246
|
-
for (let ansiDiagnostic of data.diagnostics.ansi){
|
|
247
|
-
let stack = ansiDiagnostic.codeframe ? ansiDiagnostic.codeframe : ansiDiagnostic.stack;
|
|
248
|
-
console.error('🚨 [parcel]: ' + ansiDiagnostic.message + '\n' + stack + '\n\n' + ansiDiagnostic.hints.join('\n'));
|
|
249
|
-
}
|
|
250
|
-
// Render the fancy html overlay
|
|
251
|
-
removeErrorOverlay();
|
|
252
|
-
var overlay = createErrorOverlay(data.diagnostics.html);
|
|
253
|
-
// $FlowFixMe
|
|
254
|
-
document.body.appendChild(overlay);
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
ws.onerror = function(e) {
|
|
258
|
-
console.error(e.message);
|
|
259
|
-
};
|
|
260
|
-
ws.onclose = function(e) {
|
|
261
|
-
console.warn('[parcel] 🚨 Connection to the HMR server was lost');
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
function removeErrorOverlay() {
|
|
265
|
-
var overlay = document.getElementById(OVERLAY_ID);
|
|
266
|
-
if (overlay) {
|
|
267
|
-
overlay.remove();
|
|
268
|
-
console.log('[parcel] ✨ Error resolved');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
function createErrorOverlay(diagnostics) {
|
|
272
|
-
var overlay = document.createElement('div');
|
|
273
|
-
overlay.id = OVERLAY_ID;
|
|
274
|
-
let errorHTML = '<div style="background: black; opacity: 0.85; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; font-family: Menlo, Consolas, monospace; z-index: 9999;">';
|
|
275
|
-
for (let diagnostic of diagnostics){
|
|
276
|
-
let stack = diagnostic.codeframe ? diagnostic.codeframe : diagnostic.stack;
|
|
277
|
-
errorHTML += `\n <div>\n <div style="font-size: 18px; font-weight: bold; margin-top: 20px;">\n 🚨 ${diagnostic.message}\n </div>\n <pre>\n ${stack}\n </pre>\n <div>\n ${diagnostic.hints.map((hint)=>'<div>' + hint + '</div>'
|
|
278
|
-
).join('')}\n </div>\n </div>\n `;
|
|
279
|
-
}
|
|
280
|
-
errorHTML += '</div>';
|
|
281
|
-
overlay.innerHTML = errorHTML;
|
|
282
|
-
return overlay;
|
|
283
|
-
}
|
|
284
|
-
function getParents(bundle, id) /*: Array<[ParcelRequire, string]> */ {
|
|
285
|
-
var modules = bundle.modules;
|
|
286
|
-
if (!modules) return [];
|
|
287
|
-
var parents = [];
|
|
288
|
-
var k, d, dep;
|
|
289
|
-
for(k in modules)for(d in modules[k][1]){
|
|
290
|
-
dep = modules[k][1][d];
|
|
291
|
-
if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) parents.push([
|
|
292
|
-
bundle,
|
|
293
|
-
k
|
|
294
|
-
]);
|
|
295
|
-
}
|
|
296
|
-
if (bundle.parent) parents = parents.concat(getParents(bundle.parent, id));
|
|
297
|
-
return parents;
|
|
298
|
-
}
|
|
299
|
-
function updateLink(link) {
|
|
300
|
-
var newLink = link.cloneNode();
|
|
301
|
-
newLink.onload = function() {
|
|
302
|
-
if (link.parentNode !== null) // $FlowFixMe
|
|
303
|
-
link.parentNode.removeChild(link);
|
|
304
|
-
};
|
|
305
|
-
newLink.setAttribute('href', // $FlowFixMe
|
|
306
|
-
link.getAttribute('href').split('?')[0] + '?' + Date.now());
|
|
307
|
-
// $FlowFixMe
|
|
308
|
-
link.parentNode.insertBefore(newLink, link.nextSibling);
|
|
309
|
-
}
|
|
310
|
-
var cssTimeout = null;
|
|
311
|
-
function reloadCSS() {
|
|
312
|
-
if (cssTimeout) return;
|
|
313
|
-
cssTimeout = setTimeout(function() {
|
|
314
|
-
var links = document.querySelectorAll('link[rel="stylesheet"]');
|
|
315
|
-
for(var i = 0; i < links.length; i++){
|
|
316
|
-
// $FlowFixMe[incompatible-type]
|
|
317
|
-
var href = links[i].getAttribute('href');
|
|
318
|
-
var hostname = getHostname();
|
|
319
|
-
var servedFromHMRServer = hostname === 'localhost' ? new RegExp('^(https?:\\/\\/(0.0.0.0|127.0.0.1)|localhost):' + getPort()).test(href) : href.indexOf(hostname + ':' + getPort());
|
|
320
|
-
var absolute = /^https?:\/\//i.test(href) && href.indexOf(window.location.origin) !== 0 && !servedFromHMRServer;
|
|
321
|
-
if (!absolute) updateLink(links[i]);
|
|
322
|
-
}
|
|
323
|
-
cssTimeout = null;
|
|
324
|
-
}, 50);
|
|
325
|
-
}
|
|
326
|
-
function hmrApply(bundle/*: ParcelRequire */ , asset/*: HMRAsset */ ) {
|
|
327
|
-
var modules = bundle.modules;
|
|
328
|
-
if (!modules) return;
|
|
329
|
-
if (asset.type === 'css') {
|
|
330
|
-
reloadCSS();
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
let deps = asset.depsByBundle[bundle.HMR_BUNDLE_ID];
|
|
334
|
-
if (deps) {
|
|
335
|
-
var fn = new Function('require', 'module', 'exports', asset.output);
|
|
336
|
-
modules[asset.id] = [
|
|
337
|
-
fn,
|
|
338
|
-
deps
|
|
339
|
-
];
|
|
340
|
-
} else if (bundle.parent) hmrApply(bundle.parent, asset);
|
|
341
|
-
}
|
|
342
|
-
function hmrAcceptCheck(bundle/*: ParcelRequire */ , id/*: string */ , depsByBundle/*: ?{ [string]: { [string]: string } }*/ ) {
|
|
343
|
-
var modules = bundle.modules;
|
|
344
|
-
if (!modules) return;
|
|
345
|
-
if (depsByBundle && !depsByBundle[bundle.HMR_BUNDLE_ID]) {
|
|
346
|
-
// If we reached the root bundle without finding where the asset should go,
|
|
347
|
-
// there's nothing to do. Mark as "accepted" so we don't reload the page.
|
|
348
|
-
if (!bundle.parent) return true;
|
|
349
|
-
return hmrAcceptCheck(bundle.parent, id, depsByBundle);
|
|
350
|
-
}
|
|
351
|
-
if (checkedAssets[id]) return;
|
|
352
|
-
checkedAssets[id] = true;
|
|
353
|
-
var cached = bundle.cache[id];
|
|
354
|
-
assetsToAccept.push([
|
|
355
|
-
bundle,
|
|
356
|
-
id
|
|
357
|
-
]);
|
|
358
|
-
if (cached && cached.hot && cached.hot._acceptCallbacks.length) return true;
|
|
359
|
-
return getParents(module.bundle.root, id).some(function(v) {
|
|
360
|
-
return hmrAcceptCheck(v[0], v[1], null);
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
function hmrAcceptRun(bundle/*: ParcelRequire */ , id/*: string */ ) {
|
|
364
|
-
var cached = bundle.cache[id];
|
|
365
|
-
bundle.hotData = {
|
|
366
|
-
};
|
|
367
|
-
if (cached && cached.hot) cached.hot.data = bundle.hotData;
|
|
368
|
-
if (cached && cached.hot && cached.hot._disposeCallbacks.length) cached.hot._disposeCallbacks.forEach(function(cb) {
|
|
369
|
-
cb(bundle.hotData);
|
|
370
|
-
});
|
|
371
|
-
delete bundle.cache[id];
|
|
372
|
-
bundle(id);
|
|
373
|
-
cached = bundle.cache[id];
|
|
374
|
-
if (cached && cached.hot && cached.hot._acceptCallbacks.length) cached.hot._acceptCallbacks.forEach(function(cb) {
|
|
375
|
-
var assetsToAlsoAccept = cb(function() {
|
|
376
|
-
return getParents(module.bundle.root, id);
|
|
377
|
-
});
|
|
378
|
-
if (assetsToAlsoAccept && assetsToAccept.length) assetsToAccept.push.apply(assetsToAccept, assetsToAlsoAccept);
|
|
379
|
-
});
|
|
380
|
-
acceptedAssets[id] = true;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
},{}],"48PW8":[function(require,module,exports) {
|
|
384
|
-
"use strict";
|
|
385
|
-
/* global window */ window.addEventListener('beforeunload', function() {
|
|
386
|
-
(window.chrome || window.browser).runtime.sendMessage({
|
|
387
|
-
__parcel_hmr_reload__: true
|
|
388
|
-
});
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
},{}]},["55RhX","48PW8"], "48PW8", "parcelRequire5c9f")
|
|
392
|
-
|
|
393
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sVUFBVSxFQUFFO1lBQ3pDLGtCQUFrQixHQUFHLEVBQUU7bUJBQ2xCLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFOztZQUV0QyxrQkFBa0IsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUM3QyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsa0JBQWtCOztJQUlsRSxjQUFjLENBQUMsRUFBRSxJQUFJLElBQUk7Ozs7Q0M3VzNCLFVBQVk7QUFFWixFQUFBLGVBQUEsRUFBbUIsQ0FDbkIsTUFBTSxDQUFDLGdCQUFnQixFQUFDLFlBQWM7S0FDbkMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ25ELHFCQUFxQixFQUFFLElBQUkiLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9AcGFyY2VsL2NvbmZpZy13ZWJleHRlbnNpb24vbm9kZV9tb2R1bGVzL0BwYXJjZWwvcnVudGltZS1icm93c2VyLWhtci9saWIvcnVudGltZS0wYTYwNmY2M2Y0OGFmMjMyZDFjNjYyYmUxMzRkY2VhOS5qcyIsIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3RyYW5zZm9ybWVyLXdlYmV4dGVuc2lvbi9saWIvcnVudGltZS9hdXRvcmVsb2FkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBITVJfSE9TVCA9IFwibG9jYWxob3N0XCI7dmFyIEhNUl9QT1JUID0gbnVsbDt2YXIgSE1SX1NFQ1VSRSA9IGZhbHNlO3ZhciBITVJfRU5WX0hBU0ggPSBcImQ3NTE3MTM5ODg5ODdlOTMzMTk4MDM2M2UyNDE4OWNlXCI7bW9kdWxlLmJ1bmRsZS5ITVJfQlVORExFX0lEID0gXCJmMzQ0YzE1Njc1NjI3N2U3NDRhYWNkODdhZjllMGFmYVwiOy8vIEBmbG93XG4vKiBnbG9iYWwgSE1SX0hPU1QsIEhNUl9QT1JULCBITVJfRU5WX0hBU0gsIEhNUl9TRUNVUkUgKi9cblxuLyo6OlxuaW1wb3J0IHR5cGUge1xuICBITVJBc3NldCxcbiAgSE1STWVzc2FnZSxcbn0gZnJvbSAnQHBhcmNlbC9yZXBvcnRlci1kZXYtc2VydmVyL3NyYy9ITVJTZXJ2ZXIuanMnO1xuaW50ZXJmYWNlIFBhcmNlbFJlcXVpcmUge1xuICAoc3RyaW5nKTogbWl4ZWQ7XG4gIGNhY2hlOiB7fFtzdHJpbmddOiBQYXJjZWxNb2R1bGV8fTtcbiAgaG90RGF0YTogbWl4ZWQ7XG4gIE1vZHVsZTogYW55O1xuICBwYXJlbnQ6ID9QYXJjZWxSZXF1aXJlO1xuICBpc1BhcmNlbFJlcXVpcmU6IHRydWU7XG4gIG1vZHVsZXM6IHt8W3N0cmluZ106IFtGdW5jdGlvbiwge3xbc3RyaW5nXTogc3RyaW5nfH1dfH07XG4gIEhNUl9CVU5ETEVfSUQ6IHN0cmluZztcbiAgcm9vdDogUGFyY2VsUmVxdWlyZTtcbn1cbmludGVyZmFjZSBQYXJjZWxNb2R1bGUge1xuICBob3Q6IHt8XG4gICAgZGF0YTogbWl4ZWQsXG4gICAgYWNjZXB0KGNiOiAoRnVuY3Rpb24pID0+IHZvaWQpOiB2b2lkLFxuICAgIGRpc3Bvc2UoY2I6IChtaXhlZCkgPT4gdm9pZCk6IHZvaWQsXG4gICAgLy8gYWNjZXB0KGRlcHM6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcsIGNiOiAoRnVuY3Rpb24pID0+IHZvaWQpOiB2b2lkLFxuICAgIC8vIGRlY2xpbmUoKTogdm9pZCxcbiAgICBfYWNjZXB0Q2FsbGJhY2tzOiBBcnJheTwoRnVuY3Rpb24pID0+IHZvaWQ+LFxuICAgIF9kaXNwb3NlQ2FsbGJhY2tzOiBBcnJheTwobWl4ZWQpID0+IHZvaWQ+LFxuICB8fTtcbn1cbmRlY2xhcmUgdmFyIG1vZHVsZToge2J1bmRsZTogUGFyY2VsUmVxdWlyZSwgLi4ufTtcbmRlY2xhcmUgdmFyIEhNUl9IT1NUOiBzdHJpbmc7XG5kZWNsYXJlIHZhciBITVJfUE9SVDogc3RyaW5nO1xuZGVjbGFyZSB2YXIgSE1SX0VOVl9IQVNIOiBzdHJpbmc7XG5kZWNsYXJlIHZhciBITVJfU0VDVVJFOiBib29sZWFuO1xuKi9cblxudmFyIE9WRVJMQVlfSUQgPSAnX19wYXJjZWxfX2Vycm9yX19vdmVybGF5X18nO1xuXG52YXIgT2xkTW9kdWxlID0gbW9kdWxlLmJ1bmRsZS5Nb2R1bGU7XG5cbmZ1bmN0aW9uIE1vZHVsZShtb2R1bGVOYW1lKSB7XG4gIE9sZE1vZHVsZS5jYWxsKHRoaXMsIG1vZHVsZU5hbWUpO1xuICB0aGlzLmhvdCA9IHtcbiAgICBkYXRhOiBtb2R1bGUuYnVuZGxlLmhvdERhdGEsXG4gICAgX2FjY2VwdENhbGxiYWNrczogW10sXG4gICAgX2Rpc3Bvc2VDYWxsYmFja3M6IFtdLFxuICAgIGFjY2VwdDogZnVuY3Rpb24oZm4pIHtcbiAgICAgIHRoaXMuX2FjY2VwdENhbGxiYWNrcy5wdXNoKGZuIHx8IGZ1bmN0aW9uKCkge30pO1xuICAgIH0sXG4gICAgZGlzcG9zZTogZnVuY3Rpb24oZm4pIHtcbiAgICAgIHRoaXMuX2Rpc3Bvc2VDYWxsYmFja3MucHVzaChmbik7XG4gICAgfSxcbiAgfTtcbiAgbW9kdWxlLmJ1bmRsZS5ob3REYXRhID0gdW5kZWZpbmVkO1xufVxubW9kdWxlLmJ1bmRsZS5Nb2R1bGUgPSBNb2R1bGU7XG5cbnZhciBjaGVja2VkQXNzZXRzIC8qOiB7fFtzdHJpbmddOiBib29sZWFufH0gKi8sXG4gIGFjY2VwdGVkQXNzZXRzIC8qOiB7fFtzdHJpbmddOiBib29sZWFufH0gKi8sXG4gIGFzc2V0c1RvQWNjZXB0IC8qOiBBcnJheTxbUGFyY2VsUmVxdWlyZSwgc3RyaW5nXT4gKi87XG5cbmZ1bmN0aW9uIGdldEhvc3RuYW1lKCkge1xuICByZXR1cm4gKFxuICAgIEhNUl9IT1NUIHx8XG4gICAgKGxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gMCA/IGxvY2F0aW9uLmhvc3RuYW1lIDogJ2xvY2FsaG9zdCcpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFBvcnQoKSB7XG4gIHJldHVybiBITVJfUE9SVCB8fCBsb2NhdGlvbi5wb3J0O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG52YXIgcGFyZW50ID0gbW9kdWxlLmJ1bmRsZS5wYXJlbnQ7XG5pZiAoKCFwYXJlbnQgfHwgIXBhcmVudC5pc1BhcmNlbFJlcXVpcmUpICYmIHR5cGVvZiBXZWJTb2NrZXQgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBob3N0bmFtZSA9IGdldEhvc3RuYW1lKCk7XG4gIHZhciBwb3J0ID0gZ2V0UG9ydCgpO1xuICB2YXIgcHJvdG9jb2wgPVxuICAgIEhNUl9TRUNVUkUgfHxcbiAgICAobG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgJiZcbiAgICAgICEvbG9jYWxob3N0fDEyNy4wLjAuMXwwLjAuMC4wLy50ZXN0KGhvc3RuYW1lKSlcbiAgICAgID8gJ3dzcydcbiAgICAgIDogJ3dzJztcbiAgdmFyIHdzID0gbmV3IFdlYlNvY2tldChcbiAgICBwcm90b2NvbCArICc6Ly8nICsgaG9zdG5hbWUgKyAocG9ydCA/ICc6JyArIHBvcnQgOiAnJykgKyAnLycsXG4gICk7XG4gIC8vICRGbG93Rml4TWVcbiAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQgLyo6IHtkYXRhOiBzdHJpbmcsIC4uLn0gKi8pIHtcbiAgICBjaGVja2VkQXNzZXRzID0gKHt9IC8qOiB7fFtzdHJpbmddOiBib29sZWFufH0gKi8pO1xuICAgIGFjY2VwdGVkQXNzZXRzID0gKHt9IC8qOiB7fFtzdHJpbmddOiBib29sZWFufH0gKi8pO1xuICAgIGFzc2V0c1RvQWNjZXB0ID0gW107XG5cbiAgICB2YXIgZGF0YSAvKjogSE1STWVzc2FnZSAqLyA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG5cbiAgICBpZiAoZGF0YS50eXBlID09PSAndXBkYXRlJykge1xuICAgICAgLy8gUmVtb3ZlIGVycm9yIG92ZXJsYXkgaWYgdGhlcmUgaXMgb25lXG4gICAgICByZW1vdmVFcnJvck92ZXJsYXkoKTtcblxuICAgICAgbGV0IGFzc2V0cyA9IGRhdGEuYXNzZXRzLmZpbHRlcihhc3NldCA9PiBhc3NldC5lbnZIYXNoID09PSBITVJfRU5WX0hBU0gpO1xuXG4gICAgICAvLyBIYW5kbGUgSE1SIFVwZGF0ZVxuICAgICAgdmFyIGhhbmRsZWQgPSBmYWxzZTtcbiAgICAgIGFzc2V0cy5mb3JFYWNoKGFzc2V0ID0+IHtcbiAgICAgICAgdmFyIGRpZEFjY2VwdCA9XG4gICAgICAgICAgYXNzZXQudHlwZSA9PT0gJ2NzcycgfHxcbiAgICAgICAgICAoYXNzZXQudHlwZSA9PT0gJ2pzJyAmJlxuICAgICAgICAgICAgaG1yQWNjZXB0Q2hlY2sobW9kdWxlLmJ1bmRsZS5yb290LCBhc3NldC5pZCwgYXNzZXQuZGVwc0J5QnVuZGxlKSk7XG4gICAgICAgIGlmIChkaWRBY2NlcHQpIHtcbiAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChoYW5kbGVkKSB7XG4gICAgICAgIGNvbnNvbGUuY2xlYXIoKTtcblxuICAgICAgICBhc3NldHMuZm9yRWFjaChmdW5jdGlvbihhc3NldCkge1xuICAgICAgICAgIGhtckFwcGx5KG1vZHVsZS5idW5kbGUucm9vdCwgYXNzZXQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzc2V0c1RvQWNjZXB0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGlkID0gYXNzZXRzVG9BY2NlcHRbaV1bMV07XG4gICAgICAgICAgaWYgKCFhY2NlcHRlZEFzc2V0c1tpZF0pIHtcbiAgICAgICAgICAgIGhtckFjY2VwdFJ1bihhc3NldHNUb0FjY2VwdFtpXVswXSwgaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIC8vIExvZyBwYXJjZWwgZXJyb3JzIHRvIGNvbnNvbGVcbiAgICAgIGZvciAobGV0IGFuc2lEaWFnbm9zdGljIG9mIGRhdGEuZGlhZ25vc3RpY3MuYW5zaSkge1xuICAgICAgICBsZXQgc3RhY2sgPSBhbnNpRGlhZ25vc3RpYy5jb2RlZnJhbWVcbiAgICAgICAgICA/IGFuc2lEaWFnbm9zdGljLmNvZGVmcmFtZVxuICAgICAgICAgIDogYW5zaURpYWdub3N0aWMuc3RhY2s7XG5cbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAn8J+aqCBbcGFyY2VsXTogJyArXG4gICAgICAgICAgICBhbnNpRGlhZ25vc3RpYy5tZXNzYWdlICtcbiAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgIHN0YWNrICtcbiAgICAgICAgICAgICdcXG5cXG4nICtcbiAgICAgICAgICAgIGFuc2lEaWFnbm9zdGljLmhpbnRzLmpvaW4oJ1xcbicpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW5kZXIgdGhlIGZhbmN5IGh0bWwgb3ZlcmxheVxuICAgICAgcmVtb3ZlRXJyb3JPdmVybGF5KCk7XG4gICAgICB2YXIgb3ZlcmxheSA9IGNyZWF0ZUVycm9yT3ZlcmxheShkYXRhLmRpYWdub3N0aWNzLmh0bWwpO1xuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICB9XG4gIH07XG4gIHdzLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICB9O1xuICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5QQVJDRUxfQlVJTERfRU5WICE9PSAndGVzdCcpIHtcbiAgICAgIGNvbnNvbGUud2FybignW3BhcmNlbF0g8J+aqCBDb25uZWN0aW9uIHRvIHRoZSBITVIgc2VydmVyIHdhcyBsb3N0Jyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiByZW1vdmVFcnJvck92ZXJsYXkoKSB7XG4gIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoT1ZFUkxBWV9JRCk7XG4gIGlmIChvdmVybGF5KSB7XG4gICAgb3ZlcmxheS5yZW1vdmUoKTtcbiAgICBjb25zb2xlLmxvZygnW3BhcmNlbF0g4pyoIEVycm9yIHJlc29sdmVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JPdmVybGF5KGRpYWdub3N0aWNzKSB7XG4gIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG92ZXJsYXkuaWQgPSBPVkVSTEFZX0lEO1xuXG4gIGxldCBlcnJvckhUTUwgPVxuICAgICc8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZDogYmxhY2s7IG9wYWNpdHk6IDAuODU7IGZvbnQtc2l6ZTogMTZweDsgY29sb3I6IHdoaXRlOyBwb3NpdGlvbjogZml4ZWQ7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IHRvcDogMHB4OyBsZWZ0OiAwcHg7IHBhZGRpbmc6IDMwcHg7IGZvbnQtZmFtaWx5OiBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTsgei1pbmRleDogOTk5OTtcIj4nO1xuXG4gIGZvciAobGV0IGRpYWdub3N0aWMgb2YgZGlhZ25vc3RpY3MpIHtcbiAgICBsZXQgc3RhY2sgPSBkaWFnbm9zdGljLmNvZGVmcmFtZSA/IGRpYWdub3N0aWMuY29kZWZyYW1lIDogZGlhZ25vc3RpYy5zdGFjaztcblxuICAgIGVycm9ySFRNTCArPSBgXG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxOHB4OyBmb250LXdlaWdodDogYm9sZDsgbWFyZ2luLXRvcDogMjBweDtcIj5cbiAgICAgICAgICDwn5qoICR7ZGlhZ25vc3RpYy5tZXNzYWdlfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHByZT5cbiAgICAgICAgICAke3N0YWNrfVxuICAgICAgICA8L3ByZT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAke2RpYWdub3N0aWMuaGludHMubWFwKGhpbnQgPT4gJzxkaXY+JyArIGhpbnQgKyAnPC9kaXY+Jykuam9pbignJyl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIGVycm9ySFRNTCArPSAnPC9kaXY+JztcblxuICBvdmVybGF5LmlubmVySFRNTCA9IGVycm9ySFRNTDtcblxuICByZXR1cm4gb3ZlcmxheTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50cyhidW5kbGUsIGlkKSAvKjogQXJyYXk8W1BhcmNlbFJlcXVpcmUsIHN0cmluZ10+ICovIHtcbiAgdmFyIG1vZHVsZXMgPSBidW5kbGUubW9kdWxlcztcbiAgaWYgKCFtb2R1bGVzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIHBhcmVudHMgPSBbXTtcbiAgdmFyIGssIGQsIGRlcDtcblxuICBmb3IgKGsgaW4gbW9kdWxlcykge1xuICAgIGZvciAoZCBpbiBtb2R1bGVzW2tdWzFdKSB7XG4gICAgICBkZXAgPSBtb2R1bGVzW2tdWzFdW2RdO1xuXG4gICAgICBpZiAoZGVwID09PSBpZCB8fCAoQXJyYXkuaXNBcnJheShkZXApICYmIGRlcFtkZXAubGVuZ3RoIC0gMV0gPT09IGlkKSkge1xuICAgICAgICBwYXJlbnRzLnB1c2goW2J1bmRsZSwga10pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChidW5kbGUucGFyZW50KSB7XG4gICAgcGFyZW50cyA9IHBhcmVudHMuY29uY2F0KGdldFBhcmVudHMoYnVuZGxlLnBhcmVudCwgaWQpKTtcbiAgfVxuXG4gIHJldHVybiBwYXJlbnRzO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVMaW5rKGxpbmspIHtcbiAgdmFyIG5ld0xpbmsgPSBsaW5rLmNsb25lTm9kZSgpO1xuICBuZXdMaW5rLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChsaW5rLnBhcmVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgIGxpbmsucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB9XG4gIH07XG4gIG5ld0xpbmsuc2V0QXR0cmlidXRlKFxuICAgICdocmVmJyxcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgbGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zcGxpdCgnPycpWzBdICsgJz8nICsgRGF0ZS5ub3coKSxcbiAgKTtcbiAgLy8gJEZsb3dGaXhNZVxuICBsaW5rLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld0xpbmssIGxpbmsubmV4dFNpYmxpbmcpO1xufVxuXG52YXIgY3NzVGltZW91dCA9IG51bGw7XG5mdW5jdGlvbiByZWxvYWRDU1MoKSB7XG4gIGlmIChjc3NUaW1lb3V0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY3NzVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdJyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV1cbiAgICAgIHZhciBocmVmIC8qOiBzdHJpbmcgKi8gPSBsaW5rc1tpXS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgIHZhciBob3N0bmFtZSA9IGdldEhvc3RuYW1lKCk7XG4gICAgICB2YXIgc2VydmVkRnJvbUhNUlNlcnZlciA9XG4gICAgICAgIGhvc3RuYW1lID09PSAnbG9jYWxob3N0J1xuICAgICAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgJ14oaHR0cHM/OlxcXFwvXFxcXC8oMC4wLjAuMHwxMjcuMC4wLjEpfGxvY2FsaG9zdCk6JyArIGdldFBvcnQoKSxcbiAgICAgICAgICAgICkudGVzdChocmVmKVxuICAgICAgICAgIDogaHJlZi5pbmRleE9mKGhvc3RuYW1lICsgJzonICsgZ2V0UG9ydCgpKTtcbiAgICAgIHZhciBhYnNvbHV0ZSA9XG4gICAgICAgIC9eaHR0cHM/OlxcL1xcLy9pLnRlc3QoaHJlZikgJiZcbiAgICAgICAgaHJlZi5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pICE9PSAwICYmXG4gICAgICAgICFzZXJ2ZWRGcm9tSE1SU2VydmVyO1xuICAgICAgaWYgKCFhYnNvbHV0ZSkge1xuICAgICAgICB1cGRhdGVMaW5rKGxpbmtzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjc3NUaW1lb3V0ID0gbnVsbDtcbiAgfSwgNTApO1xufVxuXG5mdW5jdGlvbiBobXJBcHBseShidW5kbGUgLyo6IFBhcmNlbFJlcXVpcmUgKi8sIGFzc2V0IC8qOiAgSE1SQXNzZXQgKi8pIHtcbiAgdmFyIG1vZHVsZXMgPSBidW5kbGUubW9kdWxlcztcbiAgaWYgKCFtb2R1bGVzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFzc2V0LnR5cGUgPT09ICdjc3MnKSB7XG4gICAgcmVsb2FkQ1NTKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGRlcHMgPSBhc3NldC5kZXBzQnlCdW5kbGVbYnVuZGxlLkhNUl9CVU5ETEVfSURdO1xuICBpZiAoZGVwcykge1xuICAgIHZhciBmbiA9IG5ldyBGdW5jdGlvbigncmVxdWlyZScsICdtb2R1bGUnLCAnZXhwb3J0cycsIGFzc2V0Lm91dHB1dCk7XG4gICAgbW9kdWxlc1thc3NldC5pZF0gPSBbZm4sIGRlcHNdO1xuICB9IGVsc2UgaWYgKGJ1bmRsZS5wYXJlbnQpIHtcbiAgICBobXJBcHBseShidW5kbGUucGFyZW50LCBhc3NldCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaG1yQWNjZXB0Q2hlY2soXG4gIGJ1bmRsZSAvKjogUGFyY2VsUmVxdWlyZSAqLyxcbiAgaWQgLyo6IHN0cmluZyAqLyxcbiAgZGVwc0J5QnVuZGxlIC8qOiA/eyBbc3RyaW5nXTogeyBbc3RyaW5nXTogc3RyaW5nIH0gfSovLFxuKSB7XG4gIHZhciBtb2R1bGVzID0gYnVuZGxlLm1vZHVsZXM7XG4gIGlmICghbW9kdWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkZXBzQnlCdW5kbGUgJiYgIWRlcHNCeUJ1bmRsZVtidW5kbGUuSE1SX0JVTkRMRV9JRF0pIHtcbiAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSByb290IGJ1bmRsZSB3aXRob3V0IGZpbmRpbmcgd2hlcmUgdGhlIGFzc2V0IHNob3VsZCBnbyxcbiAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uIE1hcmsgYXMgXCJhY2NlcHRlZFwiIHNvIHdlIGRvbid0IHJlbG9hZCB0aGUgcGFnZS5cbiAgICBpZiAoIWJ1bmRsZS5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBobXJBY2NlcHRDaGVjayhidW5kbGUucGFyZW50LCBpZCwgZGVwc0J5QnVuZGxlKTtcbiAgfVxuXG4gIGlmIChjaGVja2VkQXNzZXRzW2lkXSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNoZWNrZWRBc3NldHNbaWRdID0gdHJ1ZTtcblxuICB2YXIgY2FjaGVkID0gYnVuZGxlLmNhY2hlW2lkXTtcblxuICBhc3NldHNUb0FjY2VwdC5wdXNoKFtidW5kbGUsIGlkXSk7XG5cbiAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuaG90ICYmIGNhY2hlZC5ob3QuX2FjY2VwdENhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBnZXRQYXJlbnRzKG1vZHVsZS5idW5kbGUucm9vdCwgaWQpLnNvbWUoZnVuY3Rpb24odikge1xuICAgIHJldHVybiBobXJBY2NlcHRDaGVjayh2WzBdLCB2WzFdLCBudWxsKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhtckFjY2VwdFJ1bihidW5kbGUgLyo6IFBhcmNlbFJlcXVpcmUgKi8sIGlkIC8qOiBzdHJpbmcgKi8pIHtcbiAgdmFyIGNhY2hlZCA9IGJ1bmRsZS5jYWNoZVtpZF07XG4gIGJ1bmRsZS5ob3REYXRhID0ge307XG4gIGlmIChjYWNoZWQgJiYgY2FjaGVkLmhvdCkge1xuICAgIGNhY2hlZC5ob3QuZGF0YSA9IGJ1bmRsZS5ob3REYXRhO1xuICB9XG5cbiAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuaG90ICYmIGNhY2hlZC5ob3QuX2Rpc3Bvc2VDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgY2FjaGVkLmhvdC5fZGlzcG9zZUNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKGNiKSB7XG4gICAgICBjYihidW5kbGUuaG90RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxldGUgYnVuZGxlLmNhY2hlW2lkXTtcbiAgYnVuZGxlKGlkKTtcblxuICBjYWNoZWQgPSBidW5kbGUuY2FjaGVbaWRdO1xuICBpZiAoY2FjaGVkICYmIGNhY2hlZC5ob3QgJiYgY2FjaGVkLmhvdC5fYWNjZXB0Q2FsbGJhY2tzLmxlbmd0aCkge1xuICAgIGNhY2hlZC5ob3QuX2FjY2VwdENhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKGNiKSB7XG4gICAgICB2YXIgYXNzZXRzVG9BbHNvQWNjZXB0ID0gY2IoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRQYXJlbnRzKG1vZHVsZS5idW5kbGUucm9vdCwgaWQpO1xuICAgICAgfSk7XG4gICAgICBpZiAoYXNzZXRzVG9BbHNvQWNjZXB0ICYmIGFzc2V0c1RvQWNjZXB0Lmxlbmd0aCkge1xuICAgICAgICBhc3NldHNUb0FjY2VwdC5wdXNoLmFwcGx5KGFzc2V0c1RvQWNjZXB0LCBhc3NldHNUb0Fsc29BY2NlcHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGFjY2VwdGVkQXNzZXRzW2lkXSA9IHRydWU7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZ2xvYmFsIHdpbmRvdyAqL1xud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgKHdpbmRvdy5jaHJvbWUgfHwgd2luZG93LmJyb3dzZXIpLnJ1bnRpbWUuc2VuZE1lc3NhZ2Uoe1xuICAgIF9fcGFyY2VsX2htcl9yZWxvYWRfXzogdHJ1ZVxuICB9KTtcbn0pOyJdLCJuYW1lcyI6W10sInZlcnNpb24iOjMsImZpbGUiOiJhdXRvcmVsb2FkLkhBU0hfUkVGX2YzNDRjMTU2NzU2Mjc3ZTc0NGFhY2Q4N2FmOWUwYWZhLmpzLm1hcCJ9
|