obsidian-dev-utils 3.25.1 → 3.26.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/CHANGELOG.md
CHANGED
@@ -50,6 +50,8 @@ var __process = globalThis["process"] ?? {
|
|
50
50
|
"env": {},
|
51
51
|
"platform": "android"
|
52
52
|
};
|
53
|
+
const specialRenames = [];
|
54
|
+
const deletedMetadataCacheMap = /* @__PURE__ */ new Map();
|
53
55
|
function registerRenameDeleteHandlers(plugin, settingsBuilder) {
|
54
56
|
const renameDeleteHandlersMap = getRenameDeleteHandlersMap(plugin.app);
|
55
57
|
const pluginId = plugin.manifest.id;
|
@@ -76,6 +78,11 @@ function registerRenameDeleteHandlers(plugin, settingsBuilder) {
|
|
76
78
|
(0, import_ChainedPromise.chainAsyncFn)(app, () => handleRename(app, file, oldPath));
|
77
79
|
})
|
78
80
|
);
|
81
|
+
plugin.registerEvent(
|
82
|
+
app.metadataCache.on("deleted", (file, prevCache) => {
|
83
|
+
handleMetadataDeleted(file, prevCache);
|
84
|
+
})
|
85
|
+
);
|
79
86
|
}
|
80
87
|
function shouldInvokeHandler(app, pluginId, handlerType) {
|
81
88
|
const renameDeleteHandlerPluginIds = getRenameDeleteHandlersMap(app);
|
@@ -93,7 +100,6 @@ function logPluginSettingsOrder(app) {
|
|
93
100
|
const renameDeleteHandlersMap = getRenameDeleteHandlersMap(app);
|
94
101
|
console.debug(`Rename/delete handlers will use plugin settings in the following order: ${Array.from(renameDeleteHandlersMap.keys()).join(", ")}`);
|
95
102
|
}
|
96
|
-
const specialRenames = [];
|
97
103
|
async function handleRename(app, file, oldPath) {
|
98
104
|
console.debug(`Handle Rename ${oldPath} -> ${file.path}`);
|
99
105
|
if (!(file instanceof import_obsidian.TFile)) {
|
@@ -137,15 +143,31 @@ async function handleDelete(app, file) {
|
|
137
143
|
if (!(0, import_TAbstractFile.isNote)(file)) {
|
138
144
|
return;
|
139
145
|
}
|
146
|
+
const settings = getSettings(app);
|
147
|
+
if (!settings.shouldDeleteOrphanAttachments) {
|
148
|
+
return;
|
149
|
+
}
|
150
|
+
const cache = deletedMetadataCacheMap.get(file.path);
|
151
|
+
deletedMetadataCacheMap.delete(file.path);
|
152
|
+
if (cache) {
|
153
|
+
const links = (0, import_MetadataCache.getAllLinks)(cache);
|
154
|
+
for (const link of links) {
|
155
|
+
const attachmentFile = (0, import_Link.extractLinkFile)(app, link, file.path);
|
156
|
+
if (!attachmentFile) {
|
157
|
+
continue;
|
158
|
+
}
|
159
|
+
if ((0, import_TAbstractFile.isNote)(attachmentFile)) {
|
160
|
+
continue;
|
161
|
+
}
|
162
|
+
await (0, import_Vault.deleteSafe)(app, attachmentFile, file.path, settings.shouldDeleteEmptyFolders);
|
163
|
+
}
|
164
|
+
}
|
140
165
|
const attachmentFolderPath = await (0, import_AttachmentPath.getAttachmentFolderPath)(app, file.path);
|
141
166
|
const attachmentFolder = app.vault.getFolderByPath(attachmentFolderPath);
|
142
167
|
if (!attachmentFolder) {
|
143
168
|
return;
|
144
169
|
}
|
145
|
-
|
146
|
-
if (settings.shouldDeleteOrphanAttachments) {
|
147
|
-
await (0, import_Vault.deleteSafe)(app, attachmentFolder, file.path, false, settings.shouldDeleteEmptyFolders);
|
148
|
-
}
|
170
|
+
await (0, import_Vault.deleteSafe)(app, attachmentFolder, file.path, false, settings.shouldDeleteEmptyFolders);
|
149
171
|
}
|
150
172
|
async function fillRenameMap(app, file, oldPath, renameMap) {
|
151
173
|
if (!(0, import_TAbstractFile.isNote)(file)) {
|
@@ -317,8 +339,13 @@ function getSettings(app) {
|
|
317
339
|
}
|
318
340
|
return settings;
|
319
341
|
}
|
342
|
+
function handleMetadataDeleted(file, prevCache) {
|
343
|
+
if (prevCache) {
|
344
|
+
deletedMetadataCacheMap.set(file.path, prevCache);
|
345
|
+
}
|
346
|
+
}
|
320
347
|
// Annotate the CommonJS export names for ESM import in node:
|
321
348
|
0 && (module.exports = {
|
322
349
|
registerRenameDeleteHandlers
|
323
350
|
});
|
324
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKT0+e2lmKHR5cGVvZiBfX2ZpbGVuYW1lIT09XCJzdHJpbmdcIil7cmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpfXJldHVybiByZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7XG4gIEFwcCxcbiAgVEZpbGUsXG4gIFZhdWx0XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ2FudmFzRGF0YSB9IGZyb20gJ29ic2lkaWFuL2NhbnZhcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVURmlsZUluc3RhbmNlIH0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgeyB0b0pzb24gfSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZSxcbiAgcmVsYXRpdmVcbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuL0FwcC50cyc7XG5pbXBvcnQgeyBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuaW1wb3J0IHsgY2hhaW5Bc3luY0ZuIH0gZnJvbSAnLi9DaGFpbmVkUHJvbWlzZS50cyc7XG5pbXBvcnQge1xuICBleHRyYWN0TGlua0ZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5GaWxlXG59IGZyb20gJy4vTGluay50cyc7XG5pbXBvcnQge1xuICBnZXRBbGxMaW5rcyxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUsXG4gIGdldEJhY2tsaW5rc01hcCxcbiAgZ2V0Q2FjaGVTYWZlXG59IGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5pbXBvcnQge1xuICBpc0NhbnZhc0ZpbGUsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9UQWJzdHJhY3RGaWxlLnRzJztcbmltcG9ydCB7XG4gIGFwcGx5RmlsZUNoYW5nZXMsXG4gIGNyZWF0ZUZvbGRlclNhZmUsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBkZWxldGVTYWZlLFxuICBwcm9jZXNzV2l0aFJldHJ5XG59IGZyb20gJy4vVmF1bHQudHMnO1xuXG5pbnRlcmZhY2UgU3BlY2lhbFJlbmFtZSB7XG4gIG9sZFBhdGg6IHN0cmluZztcbiAgbmV3UGF0aDogc3RyaW5nO1xuICB0ZW1wUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNldHRpbmdzIGZvciB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBjb25mbGljdGluZyBhdHRhY2htZW50cy5cbiAgICovXG4gIHNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIGVtcHR5IGZvbGRlcnMuXG4gICAqL1xuICBzaG91bGREZWxldGVFbXB0eUZvbGRlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIG9ycGhhbiBhdHRhY2htZW50cyBhZnRlciBhIGRlbGV0ZS5cbiAgICovXG4gIHNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZpbGVzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZvbGRlciB3aGVuIGEgbm90ZSBpcyByZW5hbWVkLlxuICAgICovXG4gIHNob3VsZFJlbmFtZUF0dGFjaG1lbnRGb2xkZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGZpbGVuYW1lIGFsaWFzZXMgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgbGlua3Mgd2hlbiBhIG5vdGUgb3IgYXR0YWNobWVudCBpcyByZW5hbWVkLlxuICAgKi9cbiAgc2hvdWxkVXBkYXRlTGlua3M6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXJzLlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gaW5zdGFuY2UuXG4gKiBAcGFyYW0gc2V0dGluZ3NCdWlsZGVyIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHNldHRpbmdzIGZvciB0aGUgcmVuYW1lIGRlbGV0ZSBoYW5kbGVyLlxuICogQHJldHVybnMgdm9pZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJSZW5hbWVEZWxldGVIYW5kbGVycyhwbHVnaW46IFBsdWdpbiwgc2V0dGluZ3NCdWlsZGVyOiAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4pOiB2b2lkIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAgPSBnZXRSZW5hbWVEZWxldGVIYW5kbGVyc01hcChwbHVnaW4uYXBwKTtcbiAgY29uc3QgcGx1Z2luSWQgPSBwbHVnaW4ubWFuaWZlc3QuaWQ7XG5cbiAgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAuc2V0KHBsdWdpbklkLCBzZXR0aW5nc0J1aWxkZXIpO1xuICBsb2dQbHVnaW5TZXR0aW5nc09yZGVyKHBsdWdpbi5hcHApO1xuXG4gIHBsdWdpbi5yZWdpc3RlcigoKSA9PiB7XG4gICAgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAuZGVsZXRlKHBsdWdpbklkKTtcbiAgICBsb2dQbHVnaW5TZXR0aW5nc09yZGVyKHBsdWdpbi5hcHApO1xuICB9KTtcblxuICBjb25zdCBhcHAgPSBwbHVnaW4uYXBwO1xuICBwbHVnaW4ucmVnaXN0ZXJFdmVudChcbiAgICBhcHAudmF1bHQub24oJ2RlbGV0ZScsIChmaWxlKSA9PiB7XG4gICAgICBpZiAoIXNob3VsZEludm9rZUhhbmRsZXIoYXBwLCBwbHVnaW5JZCwgJ0RlbGV0ZScpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNoYWluQXN5bmNGbihhcHAsICgpID0+IGhhbmRsZURlbGV0ZShhcHAsIGZpbGUpKTtcbiAgICB9KVxuICApO1xuXG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbigncmVuYW1lJywgKGZpbGUsIG9sZFBhdGgpID0+IHtcbiAgICAgIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihhcHAsIHBsdWdpbklkLCAnUmVuYW1lJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2hhaW5Bc3luY0ZuKGFwcCwgKCkgPT4gaGFuZGxlUmVuYW1lKGFwcCwgZmlsZSwgb2xkUGF0aCkpO1xuICAgIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEludm9rZUhhbmRsZXIoYXBwOiBBcHAsIHBsdWdpbklkOiBzdHJpbmcsIGhhbmRsZXJUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlclBsdWdpbklkcyA9IGdldFJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwKGFwcCk7XG4gIGNvbnN0IG1haW5QbHVnaW5JZCA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlclBsdWdpbklkcy5rZXlzKCkpWzBdO1xuICBpZiAobWFpblBsdWdpbklkICE9PSBwbHVnaW5JZCkge1xuICAgIGNvbnNvbGUuZGVidWcoYCR7aGFuZGxlclR5cGV9IGhhbmRsZXIgZm9yIHBsdWdpbiAke3BsdWdpbklkfSBpcyBza2lwcGVkLCBiZWNhdXNlIGl0IGlzIGhhbmRsZWQgYnkgcGx1Z2luICR7bWFpblBsdWdpbklkID8/ICcobm9uZSknfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwOiBBcHApOiBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdyZW5hbWVEZWxldGVIYW5kbGVyc01hcCcsIG5ldyBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+KCkpLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBsb2dQbHVnaW5TZXR0aW5nc09yZGVyKGFwcDogQXBwKTogdm9pZCB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc29sZS5kZWJ1ZyhgUmVuYW1lL2RlbGV0ZSBoYW5kbGVycyB3aWxsIHVzZSBwbHVnaW4gc2V0dGluZ3MgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogJHtBcnJheS5mcm9tKHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLmtleXMoKSkuam9pbignLCAnKX1gKTtcbn1cblxuY29uc3Qgc3BlY2lhbFJlbmFtZXM6IFNwZWNpYWxSZW5hbWVbXSA9IFtdO1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVSZW5hbWUoYXBwOiBBcHAsIGZpbGU6IFRBYnN0cmFjdEZpbGUsIG9sZFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmRlYnVnKGBIYW5kbGUgUmVuYW1lICR7b2xkUGF0aH0gLT4gJHtmaWxlLnBhdGh9YCk7XG5cbiAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNwZWNpYWxSZW5hbWUgPSBzcGVjaWFsUmVuYW1lcy5maW5kKCh4KSA9PiB4Lm9sZFBhdGggPT09IGZpbGUucGF0aCk7XG4gIGlmIChzcGVjaWFsUmVuYW1lKSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LnJlbmFtZShmaWxlLCBzcGVjaWFsUmVuYW1lLnRlbXBQYXRoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUgJiYgb2xkUGF0aC50b0xvd2VyQ2FzZSgpID09PSBmaWxlLnBhdGgudG9Mb3dlckNhc2UoKSAmJiBkaXJuYW1lKG9sZFBhdGgpID09PSBkaXJuYW1lKGZpbGUucGF0aCkpIHtcbiAgICBzcGVjaWFsUmVuYW1lcy5wdXNoKHtcbiAgICAgIG9sZFBhdGgsXG4gICAgICBuZXdQYXRoOiBmaWxlLnBhdGgsXG4gICAgICB0ZW1wUGF0aDogam9pbihmaWxlLnBhcmVudD8ucGF0aCA/PyAnJywgJ19fdGVtcF9fJyArIGZpbGUubmFtZSlcbiAgICB9KTtcblxuICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUoZmlsZSwgb2xkUGF0aCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuICBjb25zdCB1cGRhdGVBbGxMaW5rcyA9IGFwcC5maWxlTWFuYWdlci51cGRhdGVBbGxMaW5rcztcbiAgdHJ5IHtcbiAgICBhcHAuZmlsZU1hbmFnZXIudXBkYXRlQWxsTGlua3MgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAvLyBkbyBub3RoaW5nXG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmFtZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgYXdhaXQgZmlsbFJlbmFtZU1hcChhcHAsIGZpbGUsIG9sZFBhdGgsIHJlbmFtZU1hcCk7XG4gICAgcmVuYW1lTWFwLnNldChvbGRQYXRoLCBmaWxlLnBhdGgpO1xuXG4gICAgZm9yIChjb25zdCBbb2xkUGF0aDIsIG5ld1BhdGgyXSBvZiByZW5hbWVNYXAuZW50cmllcygpKSB7XG4gICAgICBhd2FpdCBwcm9jZXNzUmVuYW1lKGFwcCwgb2xkUGF0aDIsIG5ld1BhdGgyLCByZW5hbWVNYXApO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhcHAuZmlsZU1hbmFnZXIudXBkYXRlQWxsTGlua3MgPSB1cGRhdGVBbGxMaW5rcztcblxuICAgIGNvbnN0IHNwZWNpYWxSZW5hbWUgPSBzcGVjaWFsUmVuYW1lcy5maW5kKCh4KSA9PiB4LnRlbXBQYXRoID09PSBmaWxlLnBhdGgpO1xuICAgIGlmIChzcGVjaWFsUmVuYW1lKSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKGZpbGUsIHNwZWNpYWxSZW5hbWUubmV3UGF0aCk7XG4gICAgICBzcGVjaWFsUmVuYW1lcy5yZW1vdmUoc3BlY2lhbFJlbmFtZSk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZURlbGV0ZShhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmRlYnVnKGBIYW5kbGUgRGVsZXRlICR7ZmlsZS5wYXRofWApO1xuICBpZiAoIWlzTm90ZShmaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBmaWxlLnBhdGgpO1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG5cbiAgaWYgKCFhdHRhY2htZW50Rm9sZGVyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBpZiAoc2V0dGluZ3Muc2hvdWxkRGVsZXRlT3JwaGFuQXR0YWNobWVudHMpIHtcbiAgICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZvbGRlciwgZmlsZS5wYXRoLCBmYWxzZSwgc2V0dGluZ3Muc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBmaWxsUmVuYW1lTWFwKGFwcDogQXBwLCBmaWxlOiBURmlsZSwgb2xkUGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc05vdGUoZmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG5cbiAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIG9sZFBhdGgpO1xuICBjb25zdCBuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCA9IHNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGb2xkZXJcbiAgICA/IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcCwgZmlsZS5wYXRoKVxuICAgIDogb2xkQXR0YWNobWVudEZvbGRlclBhdGg7XG4gIGNvbnN0IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIGpvaW4oZGlybmFtZShvbGRQYXRoKSwgJ0RVTU1ZX0ZJTEUubWQnKSk7XG5cbiAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlciA9IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghb2xkQXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gbmV3QXR0YWNobWVudEZvbGRlclBhdGggJiYgIXNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNoaWxkcmVuOiBURmlsZVtdID0gW107XG5cbiAgaWYgKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSBkdW1teU9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKSB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBmaWxlKTtcbiAgICBpZiAoIWNhY2hlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgbGluayBvZiBnZXRBbGxMaW5rcyhjYWNoZSkpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgb2xkUGF0aCk7XG4gICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXR0YWNobWVudEZpbGUucGF0aC5zdGFydHNXaXRoKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKSkge1xuICAgICAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShhcHAsIGF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgaWYgKGJhY2tsaW5rcy5rZXlzKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChhdHRhY2htZW50RmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKG9sZEF0dGFjaG1lbnRGb2xkZXIsIChjaGlsZCkgPT4ge1xuICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBvbGROb3RlQmFzZU5hbWUgPSBiYXNlbmFtZShvbGRQYXRoLCBleHRuYW1lKG9sZFBhdGgpKTtcblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgaWYgKGlzTm90ZShjaGlsZCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgY2hpbGQucGF0aCk7XG4gICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICBjb25zdCBuZXdDaGlsZEJhc2VuYW1lID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzXG4gICAgICA/IGNoaWxkLmJhc2VuYW1lLnJlcGxhY2VBbGwob2xkTm90ZUJhc2VOYW1lLCBmaWxlLmJhc2VuYW1lKVxuICAgICAgOiBjaGlsZC5iYXNlbmFtZTtcbiAgICBsZXQgbmV3Q2hpbGRQYXRoID0gam9pbihuZXdEaXIsIG1ha2VGaWxlTmFtZShuZXdDaGlsZEJhc2VuYW1lLCBjaGlsZC5leHRlbnNpb24pKTtcbiAgICBpZiAoY2hpbGQucGF0aCAhPT0gbmV3Q2hpbGRQYXRoKSB7XG4gICAgICBpZiAoc2V0dGluZ3Muc2hvdWxkRGVsZXRlQ29uZmxpY3RpbmdBdHRhY2htZW50cykge1xuICAgICAgICBjb25zdCBuZXdDaGlsZEZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChuZXdDaGlsZFBhdGgpO1xuICAgICAgICBpZiAobmV3Q2hpbGRGaWxlKSB7XG4gICAgICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShuZXdDaGlsZEZpbGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdDaGlsZFBhdGggPSBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKG5ld0RpciwgbmV3Q2hpbGRCYXNlbmFtZSksIGNoaWxkLmV4dGVuc2lvbik7XG4gICAgICB9XG4gICAgICByZW5hbWVNYXAuc2V0KGNoaWxkLnBhdGgsIG5ld0NoaWxkUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NSZW5hbWUoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBsZXQgb2xkRmlsZSA9IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG9sZFBhdGgpO1xuICBsZXQgbmV3RmlsZSA9IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG5ld1BhdGgpO1xuXG4gIGlmIChvbGRGaWxlKSB7XG4gICAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIGRpcm5hbWUobmV3UGF0aCkpO1xuICAgIGNvbnN0IG9sZEZvbGRlciA9IG9sZEZpbGUucGFyZW50O1xuICAgIHRyeSB7XG4gICAgICBpZiAobmV3RmlsZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUobmV3RmlsZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChuZXdQYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3UGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5ld1BhdGgpIHx8IGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgob2xkUGF0aCkpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycykge1xuICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwLCBvbGRGb2xkZXIpO1xuICAgIH1cbiAgfVxuXG4gIG9sZEZpbGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKGFwcC52YXVsdCwgb2xkUGF0aCk7XG4gIG5ld0ZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChuZXdQYXRoKTtcblxuICBpZiAoIW9sZEZpbGUuZGVsZXRlZCB8fCAhbmV3RmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHJlbmFtZSAke29sZFBhdGh9IHRvICR7bmV3UGF0aH1gKTtcbiAgfVxuXG4gIGlmICghc2V0dGluZ3Muc2hvdWxkVXBkYXRlTGlua3MpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NNYXAoYXBwLCBbb2xkRmlsZSwgbmV3RmlsZV0pO1xuXG4gIGZvciAoY29uc3QgcGFyZW50Tm90ZVBhdGggb2YgYmFja2xpbmtzLmtleXMoKSkge1xuICAgIGxldCBwYXJlbnROb3RlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGFyZW50Tm90ZVBhdGgpO1xuICAgIGlmICghcGFyZW50Tm90ZSkge1xuICAgICAgY29uc3QgbmV3UGFyZW50Tm90ZVBhdGggPSByZW5hbWVNYXAuZ2V0KHBhcmVudE5vdGVQYXRoKTtcbiAgICAgIGlmIChuZXdQYXJlbnROb3RlUGF0aCkge1xuICAgICAgICBwYXJlbnROb3RlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgobmV3UGFyZW50Tm90ZVBhdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGFyZW50Tm90ZSkge1xuICAgICAgY29uc29sZS53YXJuKGBQYXJlbnQgbm90ZSBub3QgZm91bmQ6ICR7cGFyZW50Tm90ZVBhdGh9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBhd2FpdCBhcHBseUZpbGVDaGFuZ2VzKGFwcCwgcGFyZW50Tm90ZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYmFja2xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzTWFwKGFwcCwgW29sZEZpbGUsIG5ld0ZpbGVdKTtcbiAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChwYXJlbnROb3RlUGF0aCkgPz8gW107XG4gICAgICBjb25zdCBjaGFuZ2VzID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0SW5kZXg6IGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgICAgIGVuZEluZGV4OiBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQsXG4gICAgICAgICAgb2xkQ29udGVudDogbGluay5vcmlnaW5hbCxcbiAgICAgICAgICBuZXdDb250ZW50OiB1cGRhdGVMaW5rKHtcbiAgICAgICAgICAgIGFwcDogYXBwLFxuICAgICAgICAgICAgbGluayxcbiAgICAgICAgICAgIHBhdGhPckZpbGU6IG5ld0ZpbGUsXG4gICAgICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICAgICAgc291cmNlUGF0aE9yRmlsZTogcGFyZW50Tm90ZSxcbiAgICAgICAgICAgIHJlbmFtZU1hcCxcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhbmdlcztcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpc0NhbnZhc0ZpbGUobmV3RmlsZSkpIHtcbiAgICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgbmV3RmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNhbnZhc0RhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENhbnZhc0RhdGE7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY2FudmFzRGF0YS5ub2Rlcykge1xuICAgICAgICBpZiAobm9kZS50eXBlICE9PSAnZmlsZScpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdQYXRoID0gcmVuYW1lTWFwLmdldChub2RlLmZpbGUpO1xuICAgICAgICBpZiAoIW5ld1BhdGgpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmZpbGUgPSBuZXdQYXRoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRvSnNvbihjYW52YXNEYXRhKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcmtkb3duRmlsZShuZXdGaWxlKSkge1xuICAgIGF3YWl0IHVwZGF0ZUxpbmtzSW5GaWxlKHtcbiAgICAgIGFwcDogYXBwLFxuICAgICAgcGF0aE9yRmlsZTogbmV3RmlsZSxcbiAgICAgIG9sZFBhdGhPckZpbGU6IG9sZFBhdGgsXG4gICAgICByZW5hbWVNYXAsXG4gICAgICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzOiBzZXR0aW5ncy5zaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzZXNcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhhcHA6IEFwcCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+ID0ge307XG4gIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHNldHRpbmdzQnVpbGRlcigpO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzKSBhcyBba2V5b2YgUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzLCBib29sZWFuXVtdKSB7XG4gICAgICBzZXR0aW5nc1trZXldIHx8PSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3M7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBLHNCQUlPO0FBRVAsNkJBQW9DO0FBRXBDLG9CQUF1QjtBQUN2QixrQkFPTztBQUNQLGlCQUF5QztBQUN6Qyw0QkFBd0M7QUFDeEMsNEJBQTZCO0FBQzdCLGtCQUlPO0FBQ1AsMkJBS087QUFDUCwyQkFJTztBQUNQLG1CQU1PO0FBcERQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLE1BQUcsT0FBTyxlQUFhLFVBQVM7QUFBQyxXQUFPLElBQUksSUFBSSxPQUFPLFNBQVMsSUFBSTtBQUFBLEVBQUM7QUFBQyxTQUFPLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVTtBQUFDLEdB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QUFBQSxVQUNYLFlBQVksS0FBSyxTQUFTLE1BQU07QUFBQSxVQUNoQyxVQUFVLEtBQUssU0FBUyxJQUFJO0FBQUEsVUFDNUIsWUFBWSxLQUFLO0FBQUEsVUFDakIsZ0JBQVksd0JBQVc7QUFBQSxZQUNyQjtBQUFBLFlBQ0E7QUFBQSxZQUNBLFlBQVk7QUFBQSxZQUNaLGVBQWU7QUFBQSxZQUNmLGtCQUFrQjtBQUFBLFlBQ2xCO0FBQUEsWUFDQSwyQkFBMkIsU0FBUztBQUFBLFVBQ3RDLENBQUM7QUFBQSxRQUNILENBQUM7QUFBQSxNQUNIO0FBRUEsYUFBTztBQUFBLElBQ1QsQ0FBQztBQUFBLEVBQ0g7QUFFQSxVQUFJLG1DQUFhLE9BQU8sR0FBRztBQUN6QixjQUFNLCtCQUFpQixLQUFLLFNBQVMsQ0FBQyxZQUFZO0FBQ2hELFlBQU0sYUFBYSxLQUFLLE1BQU0sT0FBTztBQUNyQyxpQkFBVyxRQUFRLFdBQVcsT0FBTztBQUNuQyxZQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCO0FBQUEsUUFDRjtBQUNBLGNBQU1DLFdBQVUsVUFBVSxJQUFJLEtBQUssSUFBSTtBQUN2QyxZQUFJLENBQUNBLFVBQVM7QUFDWjtBQUFBLFFBQ0Y7QUFDQSxhQUFLLE9BQU9BO0FBQUEsTUFDZDtBQUNBLGlCQUFPLHNCQUFPLFVBQVU7QUFBQSxJQUMxQixDQUFDO0FBQUEsRUFDSCxlQUFXLHFDQUFlLE9BQU8sR0FBRztBQUNsQyxjQUFNLCtCQUFrQjtBQUFBLE1BQ3RCO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixlQUFlO0FBQUEsTUFDZjtBQUFBLE1BQ0EsMkJBQTJCLFNBQVM7QUFBQSxJQUN0QyxDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyxZQUFZLEtBQWdEO0FBQ25FLFFBQU0sMEJBQTBCLDJCQUEyQixHQUFHO0FBQzlELFFBQU0sbUJBQW1CLE1BQU0sS0FBSyx3QkFBd0IsT0FBTyxDQUFDLEVBQUUsUUFBUTtBQUU5RSxRQUFNLFdBQWlELENBQUM7QUFDeEQsYUFBVyxtQkFBbUIsa0JBQWtCO0FBQzlDLFVBQU0sY0FBYyxnQkFBZ0I7QUFDcEMsZUFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxXQUFXLEdBQXFEO0FBQ3hHLGVBQVMsR0FBRyxNQUFNO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJzcGVjaWFsUmVuYW1lIiwgImJhY2tsaW5rcyIsICJuZXdQYXRoIl0KfQo=
|
351
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKT0+e2lmKHR5cGVvZiBfX2ZpbGVuYW1lIT09XCJzdHJpbmdcIil7cmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpfXJldHVybiByZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHtcbiAgQ2FjaGVkTWV0YWRhdGEsXG4gIFBsdWdpbixcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBBcHAsXG4gIFRGaWxlLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9jYW52YXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlVEZpbGVJbnN0YW5jZSB9IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luLFxuICBtYWtlRmlsZU5hbWUsXG4gIHJlbGF0aXZlXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi9BcHAudHMnO1xuaW1wb3J0IHsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGggfSBmcm9tICcuL0F0dGFjaG1lbnRQYXRoLnRzJztcbmltcG9ydCB7IGNoYWluQXN5bmNGbiB9IGZyb20gJy4vQ2hhaW5lZFByb21pc2UudHMnO1xuaW1wb3J0IHtcbiAgZXh0cmFjdExpbmtGaWxlLFxuICB1cGRhdGVMaW5rLFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL0xpbmsudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRCYWNrbGlua3NNYXAsXG4gIGdldENhY2hlU2FmZVxufSBmcm9tICcuL01ldGFkYXRhQ2FjaGUudHMnO1xuaW1wb3J0IHtcbiAgaXNDYW52YXNGaWxlLFxuICBpc01hcmtkb3duRmlsZSxcbiAgaXNOb3RlXG59IGZyb20gJy4vVEFic3RyYWN0RmlsZS50cyc7XG5pbXBvcnQge1xuICBhcHBseUZpbGVDaGFuZ2VzLFxuICBjcmVhdGVGb2xkZXJTYWZlLFxuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZGVsZXRlU2FmZSxcbiAgcHJvY2Vzc1dpdGhSZXRyeVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuY29uc3Qgc3BlY2lhbFJlbmFtZXM6IFNwZWNpYWxSZW5hbWVbXSA9IFtdO1xuY29uc3QgZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVkTWV0YWRhdGE+KCk7XG5cbmludGVyZmFjZSBTcGVjaWFsUmVuYW1lIHtcbiAgb2xkUGF0aDogc3RyaW5nO1xuICBuZXdQYXRoOiBzdHJpbmc7XG4gIHRlbXBQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2V0dGluZ3MgZm9yIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIGNvbmZsaWN0aW5nIGF0dGFjaG1lbnRzLlxuICAgKi9cbiAgc2hvdWxkRGVsZXRlQ29uZmxpY3RpbmdBdHRhY2htZW50czogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkZWxldGUgZW1wdHkgZm9sZGVycy5cbiAgICovXG4gIHNob3VsZERlbGV0ZUVtcHR5Rm9sZGVyczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkZWxldGUgb3JwaGFuIGF0dGFjaG1lbnRzIGFmdGVyIGEgZGVsZXRlLlxuICAgKi9cbiAgc2hvdWxkRGVsZXRlT3JwaGFuQXR0YWNobWVudHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVuYW1lIGF0dGFjaG1lbnQgZmlsZXMgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlczogYm9vbGVhbjtcblxuICAvKipcbiAgICAqIFdoZXRoZXIgdG8gcmVuYW1lIGF0dGFjaG1lbnQgZm9sZGVyIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAgKi9cbiAgc2hvdWxkUmVuYW1lQXR0YWNobWVudEZvbGRlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgZmlsZW5hbWUgYWxpYXNlcyB3aGVuIGEgbm90ZSBpcyByZW5hbWVkLlxuICAgKi9cbiAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc2VzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBsaW5rcyB3aGVuIGEgbm90ZSBvciBhdHRhY2htZW50IGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRVcGRhdGVMaW5rczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIHJlbmFtZS9kZWxldGUgaGFuZGxlcnMuXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBzZXR0aW5nc0J1aWxkZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgc2V0dGluZ3MgZm9yIHRoZSByZW5hbWUgZGVsZXRlIGhhbmRsZXIuXG4gKiBAcmV0dXJucyB2b2lkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclJlbmFtZURlbGV0ZUhhbmRsZXJzKHBsdWdpbjogUGx1Z2luLCBzZXR0aW5nc0J1aWxkZXI6ICgpID0+IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPik6IHZvaWQge1xuICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyc01hcCA9IGdldFJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwKHBsdWdpbi5hcHApO1xuICBjb25zdCBwbHVnaW5JZCA9IHBsdWdpbi5tYW5pZmVzdC5pZDtcblxuICByZW5hbWVEZWxldGVIYW5kbGVyc01hcC5zZXQocGx1Z2luSWQsIHNldHRpbmdzQnVpbGRlcik7XG4gIGxvZ1BsdWdpblNldHRpbmdzT3JkZXIocGx1Z2luLmFwcCk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyKCgpID0+IHtcbiAgICByZW5hbWVEZWxldGVIYW5kbGVyc01hcC5kZWxldGUocGx1Z2luSWQpO1xuICAgIGxvZ1BsdWdpblNldHRpbmdzT3JkZXIocGx1Z2luLmFwcCk7XG4gIH0pO1xuXG4gIGNvbnN0IGFwcCA9IHBsdWdpbi5hcHA7XG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbignZGVsZXRlJywgKGZpbGUpID0+IHtcbiAgICAgIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihhcHAsIHBsdWdpbklkLCAnRGVsZXRlJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2hhaW5Bc3luY0ZuKGFwcCwgKCkgPT4gaGFuZGxlRGVsZXRlKGFwcCwgZmlsZSkpO1xuICAgIH0pXG4gICk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLnZhdWx0Lm9uKCdyZW5hbWUnLCAoZmlsZSwgb2xkUGF0aCkgPT4ge1xuICAgICAgaWYgKCFzaG91bGRJbnZva2VIYW5kbGVyKGFwcCwgcGx1Z2luSWQsICdSZW5hbWUnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGFpbkFzeW5jRm4oYXBwLCAoKSA9PiBoYW5kbGVSZW5hbWUoYXBwLCBmaWxlLCBvbGRQYXRoKSk7XG4gICAgfSlcbiAgKTtcblxuICBwbHVnaW4ucmVnaXN0ZXJFdmVudChcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbignZGVsZXRlZCcsIChmaWxlLCBwcmV2Q2FjaGUpID0+IHtcbiAgICAgIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChmaWxlLCBwcmV2Q2FjaGUpO1xuICAgIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEludm9rZUhhbmRsZXIoYXBwOiBBcHAsIHBsdWdpbklkOiBzdHJpbmcsIGhhbmRsZXJUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlclBsdWdpbklkcyA9IGdldFJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwKGFwcCk7XG4gIGNvbnN0IG1haW5QbHVnaW5JZCA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlclBsdWdpbklkcy5rZXlzKCkpWzBdO1xuICBpZiAobWFpblBsdWdpbklkICE9PSBwbHVnaW5JZCkge1xuICAgIGNvbnNvbGUuZGVidWcoYCR7aGFuZGxlclR5cGV9IGhhbmRsZXIgZm9yIHBsdWdpbiAke3BsdWdpbklkfSBpcyBza2lwcGVkLCBiZWNhdXNlIGl0IGlzIGhhbmRsZWQgYnkgcGx1Z2luICR7bWFpblBsdWdpbklkID8/ICcobm9uZSknfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwOiBBcHApOiBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdyZW5hbWVEZWxldGVIYW5kbGVyc01hcCcsIG5ldyBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+KCkpLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBsb2dQbHVnaW5TZXR0aW5nc09yZGVyKGFwcDogQXBwKTogdm9pZCB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc29sZS5kZWJ1ZyhgUmVuYW1lL2RlbGV0ZSBoYW5kbGVycyB3aWxsIHVzZSBwbHVnaW4gc2V0dGluZ3MgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogJHtBcnJheS5mcm9tKHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLmtleXMoKSkuam9pbignLCAnKX1gKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlUmVuYW1lKGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlLCBvbGRQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5kZWJ1ZyhgSGFuZGxlIFJlbmFtZSAke29sZFBhdGh9IC0+ICR7ZmlsZS5wYXRofWApO1xuXG4gIGlmICghKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzcGVjaWFsUmVuYW1lID0gc3BlY2lhbFJlbmFtZXMuZmluZCgoeCkgPT4geC5vbGRQYXRoID09PSBmaWxlLnBhdGgpO1xuICBpZiAoc3BlY2lhbFJlbmFtZSkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUoZmlsZSwgc3BlY2lhbFJlbmFtZS50ZW1wUGF0aCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlICYmIG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gZmlsZS5wYXRoLnRvTG93ZXJDYXNlKCkgJiYgZGlybmFtZShvbGRQYXRoKSA9PT0gZGlybmFtZShmaWxlLnBhdGgpKSB7XG4gICAgc3BlY2lhbFJlbmFtZXMucHVzaCh7XG4gICAgICBvbGRQYXRoLFxuICAgICAgbmV3UGF0aDogZmlsZS5wYXRoLFxuICAgICAgdGVtcFBhdGg6IGpvaW4oZmlsZS5wYXJlbnQ/LnBhdGggPz8gJycsICdfX3RlbXBfXycgKyBmaWxlLm5hbWUpXG4gICAgfSk7XG5cbiAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKGZpbGUsIG9sZFBhdGgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbiAgY29uc3QgdXBkYXRlQWxsTGlua3MgPSBhcHAuZmlsZU1hbmFnZXIudXBkYXRlQWxsTGlua3M7XG4gIHRyeSB7XG4gICAgYXBwLmZpbGVNYW5hZ2VyLnVwZGF0ZUFsbExpbmtzID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH07XG5cbiAgICBjb25zdCByZW5hbWVNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGF3YWl0IGZpbGxSZW5hbWVNYXAoYXBwLCBmaWxlLCBvbGRQYXRoLCByZW5hbWVNYXApO1xuICAgIHJlbmFtZU1hcC5zZXQob2xkUGF0aCwgZmlsZS5wYXRoKTtcblxuICAgIGZvciAoY29uc3QgW29sZFBhdGgyLCBuZXdQYXRoMl0gb2YgcmVuYW1lTWFwLmVudHJpZXMoKSkge1xuICAgICAgYXdhaXQgcHJvY2Vzc1JlbmFtZShhcHAsIG9sZFBhdGgyLCBuZXdQYXRoMiwgcmVuYW1lTWFwKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXBwLmZpbGVNYW5hZ2VyLnVwZGF0ZUFsbExpbmtzID0gdXBkYXRlQWxsTGlua3M7XG5cbiAgICBjb25zdCBzcGVjaWFsUmVuYW1lID0gc3BlY2lhbFJlbmFtZXMuZmluZCgoeCkgPT4geC50ZW1wUGF0aCA9PT0gZmlsZS5wYXRoKTtcbiAgICBpZiAoc3BlY2lhbFJlbmFtZSkge1xuICAgICAgYXdhaXQgYXBwLnZhdWx0LnJlbmFtZShmaWxlLCBzcGVjaWFsUmVuYW1lLm5ld1BhdGgpO1xuICAgICAgc3BlY2lhbFJlbmFtZXMucmVtb3ZlKHNwZWNpYWxSZW5hbWUpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGUoYXBwOiBBcHAsIGZpbGU6IFRBYnN0cmFjdEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5kZWJ1ZyhgSGFuZGxlIERlbGV0ZSAke2ZpbGUucGF0aH1gKTtcbiAgaWYgKCFpc05vdGUoZmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG4gIGlmICghc2V0dGluZ3Muc2hvdWxkRGVsZXRlT3JwaGFuQXR0YWNobWVudHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjYWNoZSA9IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmdldChmaWxlLnBhdGgpO1xuICBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5kZWxldGUoZmlsZS5wYXRoKTtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbGlua3MgPSBnZXRBbGxMaW5rcyhjYWNoZSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgZmlsZS5wYXRoKTtcbiAgICAgIGlmICghYXR0YWNobWVudEZpbGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc05vdGUoYXR0YWNobWVudEZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZpbGUsIGZpbGUucGF0aCwgc2V0dGluZ3Muc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcCwgZmlsZS5wYXRoKTtcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgoYXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghYXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IGRlbGV0ZVNhZmUoYXBwLCBhdHRhY2htZW50Rm9sZGVyLCBmaWxlLnBhdGgsIGZhbHNlLCBzZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaWxsUmVuYW1lTWFwKGFwcDogQXBwLCBmaWxlOiBURmlsZSwgb2xkUGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc05vdGUoZmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG5cbiAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIG9sZFBhdGgpO1xuICBjb25zdCBuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCA9IHNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGb2xkZXJcbiAgICA/IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcCwgZmlsZS5wYXRoKVxuICAgIDogb2xkQXR0YWNobWVudEZvbGRlclBhdGg7XG4gIGNvbnN0IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIGpvaW4oZGlybmFtZShvbGRQYXRoKSwgJ0RVTU1ZX0ZJTEUubWQnKSk7XG5cbiAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlciA9IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghb2xkQXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gbmV3QXR0YWNobWVudEZvbGRlclBhdGggJiYgIXNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNoaWxkcmVuOiBURmlsZVtdID0gW107XG5cbiAgaWYgKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSBkdW1teU9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKSB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBmaWxlKTtcbiAgICBpZiAoIWNhY2hlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgbGluayBvZiBnZXRBbGxMaW5rcyhjYWNoZSkpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgb2xkUGF0aCk7XG4gICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXR0YWNobWVudEZpbGUucGF0aC5zdGFydHNXaXRoKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKSkge1xuICAgICAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShhcHAsIGF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgaWYgKGJhY2tsaW5rcy5rZXlzKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChhdHRhY2htZW50RmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKG9sZEF0dGFjaG1lbnRGb2xkZXIsIChjaGlsZCkgPT4ge1xuICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBvbGROb3RlQmFzZU5hbWUgPSBiYXNlbmFtZShvbGRQYXRoLCBleHRuYW1lKG9sZFBhdGgpKTtcblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgaWYgKGlzTm90ZShjaGlsZCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgY2hpbGQucGF0aCk7XG4gICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICBjb25zdCBuZXdDaGlsZEJhc2VuYW1lID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzXG4gICAgICA/IGNoaWxkLmJhc2VuYW1lLnJlcGxhY2VBbGwob2xkTm90ZUJhc2VOYW1lLCBmaWxlLmJhc2VuYW1lKVxuICAgICAgOiBjaGlsZC5iYXNlbmFtZTtcbiAgICBsZXQgbmV3Q2hpbGRQYXRoID0gam9pbihuZXdEaXIsIG1ha2VGaWxlTmFtZShuZXdDaGlsZEJhc2VuYW1lLCBjaGlsZC5leHRlbnNpb24pKTtcbiAgICBpZiAoY2hpbGQucGF0aCAhPT0gbmV3Q2hpbGRQYXRoKSB7XG4gICAgICBpZiAoc2V0dGluZ3Muc2hvdWxkRGVsZXRlQ29uZmxpY3RpbmdBdHRhY2htZW50cykge1xuICAgICAgICBjb25zdCBuZXdDaGlsZEZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChuZXdDaGlsZFBhdGgpO1xuICAgICAgICBpZiAobmV3Q2hpbGRGaWxlKSB7XG4gICAgICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShuZXdDaGlsZEZpbGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdDaGlsZFBhdGggPSBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKG5ld0RpciwgbmV3Q2hpbGRCYXNlbmFtZSksIGNoaWxkLmV4dGVuc2lvbik7XG4gICAgICB9XG4gICAgICByZW5hbWVNYXAuc2V0KGNoaWxkLnBhdGgsIG5ld0NoaWxkUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NSZW5hbWUoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBsZXQgb2xkRmlsZSA9IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG9sZFBhdGgpO1xuICBsZXQgbmV3RmlsZSA9IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG5ld1BhdGgpO1xuXG4gIGlmIChvbGRGaWxlKSB7XG4gICAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIGRpcm5hbWUobmV3UGF0aCkpO1xuICAgIGNvbnN0IG9sZEZvbGRlciA9IG9sZEZpbGUucGFyZW50O1xuICAgIHRyeSB7XG4gICAgICBpZiAobmV3RmlsZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUobmV3RmlsZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChuZXdQYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3UGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5ld1BhdGgpIHx8IGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgob2xkUGF0aCkpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycykge1xuICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwLCBvbGRGb2xkZXIpO1xuICAgIH1cbiAgfVxuXG4gIG9sZEZpbGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKGFwcC52YXVsdCwgb2xkUGF0aCk7XG4gIG5ld0ZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChuZXdQYXRoKTtcblxuICBpZiAoIW9sZEZpbGUuZGVsZXRlZCB8fCAhbmV3RmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHJlbmFtZSAke29sZFBhdGh9IHRvICR7bmV3UGF0aH1gKTtcbiAgfVxuXG4gIGlmICghc2V0dGluZ3Muc2hvdWxkVXBkYXRlTGlua3MpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NNYXAoYXBwLCBbb2xkRmlsZSwgbmV3RmlsZV0pO1xuXG4gIGZvciAoY29uc3QgcGFyZW50Tm90ZVBhdGggb2YgYmFja2xpbmtzLmtleXMoKSkge1xuICAgIGxldCBwYXJlbnROb3RlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGFyZW50Tm90ZVBhdGgpO1xuICAgIGlmICghcGFyZW50Tm90ZSkge1xuICAgICAgY29uc3QgbmV3UGFyZW50Tm90ZVBhdGggPSByZW5hbWVNYXAuZ2V0KHBhcmVudE5vdGVQYXRoKTtcbiAgICAgIGlmIChuZXdQYXJlbnROb3RlUGF0aCkge1xuICAgICAgICBwYXJlbnROb3RlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgobmV3UGFyZW50Tm90ZVBhdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGFyZW50Tm90ZSkge1xuICAgICAgY29uc29sZS53YXJuKGBQYXJlbnQgbm90ZSBub3QgZm91bmQ6ICR7cGFyZW50Tm90ZVBhdGh9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBhd2FpdCBhcHBseUZpbGVDaGFuZ2VzKGFwcCwgcGFyZW50Tm90ZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYmFja2xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzTWFwKGFwcCwgW29sZEZpbGUsIG5ld0ZpbGVdKTtcbiAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChwYXJlbnROb3RlUGF0aCkgPz8gW107XG4gICAgICBjb25zdCBjaGFuZ2VzID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0SW5kZXg6IGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgICAgIGVuZEluZGV4OiBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQsXG4gICAgICAgICAgb2xkQ29udGVudDogbGluay5vcmlnaW5hbCxcbiAgICAgICAgICBuZXdDb250ZW50OiB1cGRhdGVMaW5rKHtcbiAgICAgICAgICAgIGFwcDogYXBwLFxuICAgICAgICAgICAgbGluayxcbiAgICAgICAgICAgIHBhdGhPckZpbGU6IG5ld0ZpbGUsXG4gICAgICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICAgICAgc291cmNlUGF0aE9yRmlsZTogcGFyZW50Tm90ZSxcbiAgICAgICAgICAgIHJlbmFtZU1hcCxcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhbmdlcztcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpc0NhbnZhc0ZpbGUobmV3RmlsZSkpIHtcbiAgICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgbmV3RmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNhbnZhc0RhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENhbnZhc0RhdGE7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY2FudmFzRGF0YS5ub2Rlcykge1xuICAgICAgICBpZiAobm9kZS50eXBlICE9PSAnZmlsZScpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdQYXRoID0gcmVuYW1lTWFwLmdldChub2RlLmZpbGUpO1xuICAgICAgICBpZiAoIW5ld1BhdGgpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmZpbGUgPSBuZXdQYXRoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRvSnNvbihjYW52YXNEYXRhKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcmtkb3duRmlsZShuZXdGaWxlKSkge1xuICAgIGF3YWl0IHVwZGF0ZUxpbmtzSW5GaWxlKHtcbiAgICAgIGFwcDogYXBwLFxuICAgICAgcGF0aE9yRmlsZTogbmV3RmlsZSxcbiAgICAgIG9sZFBhdGhPckZpbGU6IG9sZFBhdGgsXG4gICAgICByZW5hbWVNYXAsXG4gICAgICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzOiBzZXR0aW5ncy5zaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzZXNcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhhcHA6IEFwcCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+ID0ge307XG4gIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHNldHRpbmdzQnVpbGRlcigpO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzKSBhcyBba2V5b2YgUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzLCBib29sZWFuXVtdKSB7XG4gICAgICBzZXR0aW5nc1trZXldIHx8PSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChmaWxlOiBUQWJzdHJhY3RGaWxlLCBwcmV2Q2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCk6IHZvaWQge1xuICBpZiAocHJldkNhY2hlKSB7XG4gICAgZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXAuc2V0KGZpbGUucGF0aCwgcHJldkNhY2hlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFJTztBQUVQLDZCQUFvQztBQUVwQyxvQkFBdUI7QUFDdkIsa0JBT087QUFDUCxpQkFBeUM7QUFDekMsNEJBQXdDO0FBQ3hDLDRCQUE2QjtBQUM3QixrQkFJTztBQUNQLDJCQUtPO0FBQ1AsMkJBSU87QUFDUCxtQkFNTztBQXJEUCxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxNQUFHLE9BQU8sZUFBYSxVQUFTO0FBQUMsV0FBTyxJQUFJLElBQUksT0FBTyxTQUFTLElBQUk7QUFBQSxFQUFDO0FBQUMsU0FBTyxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVU7QUFBQyxHQUFHO0FBQzVMLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFrREEsTUFBTSxpQkFBa0MsQ0FBQztBQUN6QyxNQUFNLDBCQUEwQixvQkFBSSxJQUE0QjtBQXNEekQsU0FBUyw2QkFBNkIsUUFBZ0IsaUJBQW1FO0FBQzlILFFBQU0sMEJBQTBCLDJCQUEyQixPQUFPLEdBQUc7QUFDckUsUUFBTSxXQUFXLE9BQU8sU0FBUztBQUVqQywwQkFBd0IsSUFBSSxVQUFVLGVBQWU7QUFDckQseUJBQXVCLE9BQU8sR0FBRztBQUVqQyxTQUFPLFNBQVMsTUFBTTtBQUNwQiw0QkFBd0IsT0FBTyxRQUFRO0FBQ3ZDLDJCQUF1QixPQUFPLEdBQUc7QUFBQSxFQUNuQyxDQUFDO0FBRUQsUUFBTSxNQUFNLE9BQU87QUFDbkIsU0FBTztBQUFBLElBQ0wsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVM7QUFDL0IsVUFBSSxDQUFDLG9CQUFvQixLQUFLLFVBQVUsUUFBUSxHQUFHO0FBQ2pEO0FBQUEsTUFDRjtBQUNBLDhDQUFhLEtBQUssTUFBTSxhQUFhLEtBQUssSUFBSSxDQUFDO0FBQUEsSUFDakQsQ0FBQztBQUFBLEVBQ0g7QUFFQSxTQUFPO0FBQUEsSUFDTCxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxZQUFZO0FBQ3hDLFVBQUksQ0FBQyxvQkFBb0IsS0FBSyxVQUFVLFFBQVEsR0FBRztBQUNqRDtBQUFBLE1BQ0Y7QUFDQSw4Q0FBYSxLQUFLLE1BQU0sYUFBYSxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFDMUQsQ0FBQztBQUFBLEVBQ0g7QUFFQSxTQUFPO0FBQUEsSUFDTCxJQUFJLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxjQUFjO0FBQ25ELDRCQUFzQixNQUFNLFNBQVM7QUFBQSxJQUN2QyxDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyxvQkFBb0IsS0FBVSxVQUFrQixhQUE4QjtBQUNyRixRQUFNLCtCQUErQiwyQkFBMkIsR0FBRztBQUNuRSxRQUFNLGVBQWUsTUFBTSxLQUFLLDZCQUE2QixLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3RFLE1BQUksaUJBQWlCLFVBQVU7QUFDN0IsWUFBUSxNQUFNLEdBQUcsV0FBVyx1QkFBdUIsUUFBUSxnREFBZ0QsZ0JBQWdCLFFBQVEsRUFBRTtBQUNySSxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDVDtBQUVBLFNBQVMsMkJBQTJCLEtBQW1FO0FBQ3JHLGFBQU8scUNBQXlCLEtBQUssMkJBQTJCLG9CQUFJLElBQXdELENBQUMsRUFBRTtBQUNqSTtBQUVBLFNBQVMsdUJBQXVCLEtBQWdCO0FBQzlDLFFBQU0sMEJBQTBCLDJCQUEyQixHQUFHO0FBQzlELFVBQVEsTUFBTSwyRUFBMkUsTUFBTSxLQUFLLHdCQUF3QixLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO0FBQ2xKO0FBRUEsZUFBZSxhQUFhLEtBQVUsTUFBcUIsU0FBZ0M7QUFDekYsVUFBUSxNQUFNLGlCQUFpQixPQUFPLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFFeEQsTUFBSSxFQUFFLGdCQUFnQix3QkFBUTtBQUM1QjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGdCQUFnQixlQUFlLEtBQUssQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLElBQUk7QUFDeEUsTUFBSSxlQUFlO0FBQ2pCLFVBQU0sSUFBSSxNQUFNLE9BQU8sTUFBTSxjQUFjLFFBQVE7QUFDbkQ7QUFBQSxFQUNGO0FBRUEsTUFBSSxJQUFJLE1BQU0sUUFBUSxlQUFlLFFBQVEsWUFBWSxNQUFNLEtBQUssS0FBSyxZQUFZLFNBQUsscUJBQVEsT0FBTyxVQUFNLHFCQUFRLEtBQUssSUFBSSxHQUFHO0FBQ2pJLG1CQUFlLEtBQUs7QUFBQSxNQUNsQjtBQUFBLE1BQ0EsU0FBUyxLQUFLO0FBQUEsTUFDZCxjQUFVLGtCQUFLLEtBQUssUUFBUSxRQUFRLElBQUksYUFBYSxLQUFLLElBQUk7QUFBQSxJQUNoRSxDQUFDO0FBRUQsVUFBTSxJQUFJLE1BQU0sT0FBTyxNQUFNLE9BQU87QUFDcEM7QUFBQSxFQUNGO0FBR0EsUUFBTSxpQkFBaUIsSUFBSSxZQUFZO0FBQ3ZDLE1BQUk7QUFDRixRQUFJLFlBQVksaUJBQWlCLFlBQTJCO0FBQUEsSUFFNUQ7QUFFQSxVQUFNLFlBQVksb0JBQUksSUFBb0I7QUFDMUMsVUFBTSxjQUFjLEtBQUssTUFBTSxTQUFTLFNBQVM7QUFDakQsY0FBVSxJQUFJLFNBQVMsS0FBSyxJQUFJO0FBRWhDLGVBQVcsQ0FBQyxVQUFVLFFBQVEsS0FBSyxVQUFVLFFBQVEsR0FBRztBQUN0RCxZQUFNLGNBQWMsS0FBSyxVQUFVLFVBQVUsU0FBUztBQUFBLElBQ3hEO0FBQUEsRUFDRixVQUFFO0FBQ0EsUUFBSSxZQUFZLGlCQUFpQjtBQUVqQyxVQUFNQSxpQkFBZ0IsZUFBZSxLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsS0FBSyxJQUFJO0FBQ3pFLFFBQUlBLGdCQUFlO0FBQ2pCLFlBQU0sSUFBSSxNQUFNLE9BQU8sTUFBTUEsZUFBYyxPQUFPO0FBQ2xELHFCQUFlLE9BQU9BLGNBQWE7QUFBQSxJQUNyQztBQUFBLEVBQ0Y7QUFDRjtBQUVBLGVBQWUsYUFBYSxLQUFVLE1BQW9DO0FBQ3hFLFVBQVEsTUFBTSxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7QUFDMUMsTUFBSSxLQUFDLDZCQUFPLElBQUksR0FBRztBQUNqQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQVcsWUFBWSxHQUFHO0FBQ2hDLE1BQUksQ0FBQyxTQUFTLCtCQUErQjtBQUMzQztBQUFBLEVBQ0Y7QUFFQSxRQUFNLFFBQVEsd0JBQXdCLElBQUksS0FBSyxJQUFJO0FBQ25ELDBCQUF3QixPQUFPLEtBQUssSUFBSTtBQUN4QyxNQUFJLE9BQU87QUFDVCxVQUFNLFlBQVEsa0NBQVksS0FBSztBQUUvQixlQUFXLFFBQVEsT0FBTztBQUN4QixZQUFNLHFCQUFpQiw2QkFBZ0IsS0FBSyxNQUFNLEtBQUssSUFBSTtBQUMzRCxVQUFJLENBQUMsZ0JBQWdCO0FBQ25CO0FBQUEsTUFDRjtBQUVBLGNBQUksNkJBQU8sY0FBYyxHQUFHO0FBQzFCO0FBQUEsTUFDRjtBQUVBLGdCQUFNLHlCQUFXLEtBQUssZ0JBQWdCLEtBQUssTUFBTSxTQUFTLHdCQUF3QjtBQUFBLElBQ3BGO0FBQUEsRUFDRjtBQUVBLFFBQU0sdUJBQXVCLFVBQU0sK0NBQXdCLEtBQUssS0FBSyxJQUFJO0FBQ3pFLFFBQU0sbUJBQW1CLElBQUksTUFBTSxnQkFBZ0Isb0JBQW9CO0FBRXZFLE1BQUksQ0FBQyxrQkFBa0I7QUFDckI7QUFBQSxFQUNGO0FBRUEsWUFBTSx5QkFBVyxLQUFLLGtCQUFrQixLQUFLLE1BQU0sT0FBTyxTQUFTLHdCQUF3QjtBQUM3RjtBQUVBLGVBQWUsY0FBYyxLQUFVLE1BQWEsU0FBaUIsV0FBK0M7QUFDbEgsTUFBSSxLQUFDLDZCQUFPLElBQUksR0FBRztBQUNqQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQVcsWUFBWSxHQUFHO0FBRWhDLFFBQU0sMEJBQTBCLFVBQU0sK0NBQXdCLEtBQUssT0FBTztBQUMxRSxRQUFNLDBCQUEwQixTQUFTLCtCQUNyQyxVQUFNLCtDQUF3QixLQUFLLEtBQUssSUFBSSxJQUM1QztBQUNKLFFBQU0sK0JBQStCLFVBQU0sK0NBQXdCLFNBQUssc0JBQUsscUJBQVEsT0FBTyxHQUFHLGVBQWUsQ0FBQztBQUUvRyxRQUFNLHNCQUFzQixJQUFJLE1BQU0sZ0JBQWdCLHVCQUF1QjtBQUU3RSxNQUFJLENBQUMscUJBQXFCO0FBQ3hCO0FBQUEsRUFDRjtBQUVBLE1BQUksNEJBQTRCLDJCQUEyQixDQUFDLFNBQVMsNkJBQTZCO0FBQ2hHO0FBQUEsRUFDRjtBQUVBLFFBQU0sV0FBb0IsQ0FBQztBQUUzQixNQUFJLDRCQUE0Qiw4QkFBOEI7QUFDNUQsVUFBTSxRQUFRLFVBQU0sbUNBQWEsS0FBSyxJQUFJO0FBQzFDLFFBQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxJQUNGO0FBQ0EsZUFBVyxZQUFRLGtDQUFZLEtBQUssR0FBRztBQUNyQyxZQUFNLHFCQUFpQiw2QkFBZ0IsS0FBSyxNQUFNLE9BQU87QUFDekQsVUFBSSxDQUFDLGdCQUFnQjtBQUNuQjtBQUFBLE1BQ0Y7QUFFQSxVQUFJLGVBQWUsS0FBSyxXQUFXLHVCQUF1QixHQUFHO0FBQzNELGNBQU0sWUFBWSxVQUFNLDhDQUF3QixLQUFLLGNBQWM7QUFDbkUsWUFBSSxVQUFVLEtBQUssRUFBRSxXQUFXLEdBQUc7QUFDakMsbUJBQVMsS0FBSyxjQUFjO0FBQUEsUUFDOUI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsT0FBTztBQUNMLDBCQUFNLGdCQUFnQixxQkFBcUIsQ0FBQyxVQUFVO0FBQ3BELFVBQUksaUJBQWlCLHVCQUFPO0FBQzFCLGlCQUFTLEtBQUssS0FBSztBQUFBLE1BQ3JCO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sc0JBQWtCLHNCQUFTLGFBQVMscUJBQVEsT0FBTyxDQUFDO0FBRTFELGFBQVcsU0FBUyxVQUFVO0FBQzVCLFlBQUksNkJBQU8sS0FBSyxHQUFHO0FBQ2pCO0FBQUEsSUFDRjtBQUNBLFVBQU0sbUJBQWUsc0JBQVMseUJBQXlCLE1BQU0sSUFBSTtBQUNqRSxVQUFNLGFBQVMsa0JBQUssNkJBQXlCLHFCQUFRLFlBQVksQ0FBQztBQUNsRSxVQUFNLG1CQUFtQixTQUFTLDhCQUM5QixNQUFNLFNBQVMsV0FBVyxpQkFBaUIsS0FBSyxRQUFRLElBQ3hELE1BQU07QUFDVixRQUFJLG1CQUFlLGtCQUFLLFlBQVEsMEJBQWEsa0JBQWtCLE1BQU0sU0FBUyxDQUFDO0FBQy9FLFFBQUksTUFBTSxTQUFTLGNBQWM7QUFDL0IsVUFBSSxTQUFTLG9DQUFvQztBQUMvQyxjQUFNLGVBQWUsSUFBSSxNQUFNLGNBQWMsWUFBWTtBQUN6RCxZQUFJLGNBQWM7QUFDaEIsZ0JBQU0sSUFBSSxZQUFZLFVBQVUsWUFBWTtBQUFBLFFBQzlDO0FBQUEsTUFDRixPQUFPO0FBQ0wsdUJBQWUsSUFBSSxNQUFNLHFCQUFpQixrQkFBSyxRQUFRLGdCQUFnQixHQUFHLE1BQU0sU0FBUztBQUFBLE1BQzNGO0FBQ0EsZ0JBQVUsSUFBSSxNQUFNLE1BQU0sWUFBWTtBQUFBLElBQ3hDO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxjQUFjLEtBQVUsU0FBaUIsU0FBaUIsV0FBK0M7QUFDdEgsUUFBTSxXQUFXLFlBQVksR0FBRztBQUNoQyxNQUFJLFVBQVUsSUFBSSxNQUFNLGNBQWMsT0FBTztBQUM3QyxNQUFJLFVBQVUsSUFBSSxNQUFNLGNBQWMsT0FBTztBQUU3QyxNQUFJLFNBQVM7QUFDWCxjQUFNLCtCQUFpQixTQUFLLHFCQUFRLE9BQU8sQ0FBQztBQUM1QyxVQUFNLFlBQVksUUFBUTtBQUMxQixRQUFJO0FBQ0YsVUFBSSxTQUFTO0FBQ1gsWUFBSTtBQUNGLGdCQUFNLElBQUksWUFBWSxVQUFVLE9BQU87QUFBQSxRQUN6QyxTQUFTLEdBQUc7QUFDVixjQUFJLElBQUksTUFBTSxzQkFBc0IsT0FBTyxHQUFHO0FBQzVDLGtCQUFNO0FBQUEsVUFDUjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsWUFBTSxJQUFJLE1BQU0sT0FBTyxTQUFTLE9BQU87QUFBQSxJQUN6QyxTQUFTLEdBQUc7QUFDVixVQUFJLENBQUMsSUFBSSxNQUFNLHNCQUFzQixPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixPQUFPLEdBQUc7QUFDekYsY0FBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQ0EsUUFBSSxTQUFTLDBCQUEwQjtBQUNyQyxnQkFBTSx5Q0FBMkIsS0FBSyxTQUFTO0FBQUEsSUFDakQ7QUFBQSxFQUNGO0FBRUEsZ0JBQVUsNENBQW9CLElBQUksT0FBTyxPQUFPO0FBQ2hELFlBQVUsSUFBSSxNQUFNLGNBQWMsT0FBTztBQUV6QyxNQUFJLENBQUMsUUFBUSxXQUFXLENBQUMsU0FBUztBQUNoQyxVQUFNLElBQUksTUFBTSxvQkFBb0IsT0FBTyxPQUFPLE9BQU8sRUFBRTtBQUFBLEVBQzdEO0FBRUEsTUFBSSxDQUFDLFNBQVMsbUJBQW1CO0FBQy9CO0FBQUEsRUFDRjtBQUVBLFFBQU0sWUFBWSxVQUFNLHNDQUFnQixLQUFLLENBQUMsU0FBUyxPQUFPLENBQUM7QUFFL0QsYUFBVyxrQkFBa0IsVUFBVSxLQUFLLEdBQUc7QUFDN0MsUUFBSSxhQUFhLElBQUksTUFBTSxjQUFjLGNBQWM7QUFDdkQsUUFBSSxDQUFDLFlBQVk7QUFDZixZQUFNLG9CQUFvQixVQUFVLElBQUksY0FBYztBQUN0RCxVQUFJLG1CQUFtQjtBQUNyQixxQkFBYSxJQUFJLE1BQU0sY0FBYyxpQkFBaUI7QUFBQSxNQUN4RDtBQUFBLElBQ0Y7QUFFQSxRQUFJLENBQUMsWUFBWTtBQUNmLGNBQVEsS0FBSywwQkFBMEIsY0FBYyxFQUFFO0FBQ3ZEO0FBQUEsSUFDRjtBQUVBLGNBQU0sK0JBQWlCLEtBQUssWUFBWSxZQUFZO0FBQ2xELFlBQU1DLGFBQVksVUFBTSxzQ0FBZ0IsS0FBSyxDQUFDLFNBQVMsT0FBTyxDQUFDO0FBQy9ELFlBQU0sUUFBUUEsV0FBVSxJQUFJLGNBQWMsS0FBSyxDQUFDO0FBQ2hELFlBQU0sVUFBVSxDQUFDO0FBRWpCLGlCQUFXLFFBQVEsT0FBTztBQUN4QixnQkFBUSxLQUFLO0FBQUEsVUFDWCxZQUFZLEtBQUssU0FBUyxNQUFNO0FBQUEsVUFDaEMsVUFBVSxLQUFLLFNBQVMsSUFBSTtBQUFBLFVBQzVCLFlBQVksS0FBSztBQUFBLFVBQ2pCLGdCQUFZLHdCQUFXO0FBQUEsWUFDckI7QUFBQSxZQUNBO0FBQUEsWUFDQSxZQUFZO0FBQUEsWUFDWixlQUFlO0FBQUEsWUFDZixrQkFBa0I7QUFBQSxZQUNsQjtBQUFBLFlBQ0EsMkJBQTJCLFNBQVM7QUFBQSxVQUN0QyxDQUFDO0FBQUEsUUFDSCxDQUFDO0FBQUEsTUFDSDtBQUVBLGFBQU87QUFBQSxJQUNULENBQUM7QUFBQSxFQUNIO0FBRUEsVUFBSSxtQ0FBYSxPQUFPLEdBQUc7QUFDekIsY0FBTSwrQkFBaUIsS0FBSyxTQUFTLENBQUMsWUFBWTtBQUNoRCxZQUFNLGFBQWEsS0FBSyxNQUFNLE9BQU87QUFDckMsaUJBQVcsUUFBUSxXQUFXLE9BQU87QUFDbkMsWUFBSSxLQUFLLFNBQVMsUUFBUTtBQUN4QjtBQUFBLFFBQ0Y7QUFDQSxjQUFNQyxXQUFVLFVBQVUsSUFBSSxLQUFLLElBQUk7QUFDdkMsWUFBSSxDQUFDQSxVQUFTO0FBQ1o7QUFBQSxRQUNGO0FBQ0EsYUFBSyxPQUFPQTtBQUFBLE1BQ2Q7QUFDQSxpQkFBTyxzQkFBTyxVQUFVO0FBQUEsSUFDMUIsQ0FBQztBQUFBLEVBQ0gsZUFBVyxxQ0FBZSxPQUFPLEdBQUc7QUFDbEMsY0FBTSwrQkFBa0I7QUFBQSxNQUN0QjtBQUFBLE1BQ0EsWUFBWTtBQUFBLE1BQ1osZUFBZTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLDJCQUEyQixTQUFTO0FBQUEsSUFDdEMsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLFNBQVMsWUFBWSxLQUFnRDtBQUNuRSxRQUFNLDBCQUEwQiwyQkFBMkIsR0FBRztBQUM5RCxRQUFNLG1CQUFtQixNQUFNLEtBQUssd0JBQXdCLE9BQU8sQ0FBQyxFQUFFLFFBQVE7QUFFOUUsUUFBTSxXQUFpRCxDQUFDO0FBQ3hELGFBQVcsbUJBQW1CLGtCQUFrQjtBQUM5QyxVQUFNLGNBQWMsZ0JBQWdCO0FBQ3BDLGVBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxPQUFPLFFBQVEsV0FBVyxHQUFxRDtBQUN4RyxlQUFTLEdBQUcsTUFBTTtBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVBLFNBQVMsc0JBQXNCLE1BQXFCLFdBQXdDO0FBQzFGLE1BQUksV0FBVztBQUNiLDRCQUF3QixJQUFJLEtBQUssTUFBTSxTQUFTO0FBQUEsRUFDbEQ7QUFDRjsiLAogICJuYW1lcyI6IFsic3BlY2lhbFJlbmFtZSIsICJiYWNrbGlua3MiLCAibmV3UGF0aCJdCn0K
|
package/package.json
CHANGED