@mnaoumov/obsidian-lib 5.2.0 → 6.0.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/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +1 -1
- package/dist/lib/cjs/__merged.cjs +8 -24
- package/dist/lib/cjs/__merged.d.cts +4 -4
- package/dist/lib/cjs/async-with-notice.cjs +7 -7
- package/dist/lib/cjs/backlink-index.cjs +3 -3
- package/dist/lib/cjs/callout.cjs +2 -2
- package/dist/lib/cjs/case-insensitive-file-index.cjs +5 -5
- package/dist/lib/cjs/community-plugins.cjs +3 -3
- package/dist/lib/cjs/components/async-error-handler-component.cjs +2 -2
- package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
- package/dist/lib/cjs/components/plugin-context-component.cjs +1 -3
- package/dist/lib/cjs/components/plugin-context-component.d.cts +1 -2
- package/dist/lib/cjs/components/plugin-gate-component.cjs +15 -15
- package/dist/lib/cjs/components/plugin-notice-component.cjs +75 -7
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +24 -1
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +7 -5
- package/dist/lib/cjs/components/release-notes-component.cjs +2 -2
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +10 -10
- package/dist/lib/cjs/css-class.cjs +2 -2
- package/dist/lib/cjs/css-class.d.cts +8 -11
- package/dist/lib/cjs/dataview.cjs +4 -4
- package/dist/lib/cjs/debug.cjs +2 -22
- package/dist/lib/cjs/debug.d.cts +0 -5
- package/dist/lib/cjs/frontmatter.cjs +3 -3
- package/dist/lib/cjs/frontmatter.d.cts +1 -1
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/html-element.cjs +1 -1
- package/dist/lib/cjs/html-element.d.cts +1 -1
- package/dist/lib/cjs/i18n/i18n.cjs +1 -1
- package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
- package/dist/lib/cjs/i18n/locales/en.cjs +2 -2
- package/dist/lib/cjs/i18n/locales/en.d.cts +1 -1
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -1
- package/dist/lib/cjs/index.cjs +4 -4
- package/dist/lib/cjs/index.d.cts +1 -1
- package/dist/lib/cjs/library-styles.cjs +7 -14
- package/dist/lib/cjs/library-styles.d.cts +9 -23
- package/dist/lib/cjs/library.cjs +1 -4
- package/dist/lib/cjs/library.d.cts +3 -11
- package/dist/lib/cjs/link.cjs +3 -3
- package/dist/lib/cjs/markdown.cjs +3 -3
- package/dist/lib/cjs/metadata-cache.cjs +4 -4
- package/dist/lib/cjs/modals/alert.cjs +2 -2
- package/dist/lib/cjs/modals/confirm.cjs +3 -3
- package/dist/lib/cjs/modals/prompt.cjs +3 -3
- package/dist/lib/cjs/obsidian-lib-state.cjs +148 -0
- package/dist/lib/cjs/obsidian-lib-state.d.cts +30 -0
- package/dist/lib/cjs/path-settings.cjs +6 -6
- package/dist/lib/cjs/plugin/index.cjs +1 -4
- package/dist/lib/cjs/plugin/index.d.cts +0 -1
- package/dist/lib/cjs/plugin/plugin-api.cjs +3 -3
- package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -41
- package/dist/lib/cjs/plugin/plugin-context.cjs +1 -6
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +5 -5
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -40
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +8 -62
- package/dist/lib/cjs/plugin/plugin.cjs +2 -2
- package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
- package/dist/lib/cjs/popovers/popover.cjs +3 -3
- package/dist/lib/cjs/queue.cjs +4 -4
- package/dist/lib/cjs/resource-lock.cjs +9 -9
- package/dist/lib/cjs/vault-delete.cjs +2 -2
- package/dist/lib/cjs/vault-transaction.cjs +17 -2
- package/dist/lib/cjs/vault-transaction.d.cts +2 -1
- package/dist/lib/cjs/vault.cjs +2 -2
- package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +1 -1
- package/dist/lib/esm/__merged.d.mts +4 -4
- package/dist/lib/esm/__merged.mjs +8 -24
- package/dist/lib/esm/async-with-notice.mjs +7 -7
- package/dist/lib/esm/backlink-index.mjs +3 -3
- package/dist/lib/esm/callout.mjs +2 -2
- package/dist/lib/esm/case-insensitive-file-index.mjs +5 -5
- package/dist/lib/esm/community-plugins.mjs +3 -3
- package/dist/lib/esm/components/async-error-handler-component.mjs +2 -2
- package/dist/lib/esm/components/monkey-around-component.mjs +3 -3
- package/dist/lib/esm/components/plugin-context-component.d.mts +1 -2
- package/dist/lib/esm/components/plugin-context-component.mjs +1 -3
- package/dist/lib/esm/components/plugin-gate-component.mjs +15 -15
- package/dist/lib/esm/components/plugin-notice-component.d.mts +24 -1
- package/dist/lib/esm/components/plugin-notice-component.mjs +75 -7
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +7 -5
- package/dist/lib/esm/components/release-notes-component.mjs +2 -2
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +10 -10
- package/dist/lib/esm/css-class.d.mts +8 -11
- package/dist/lib/esm/css-class.mjs +2 -2
- package/dist/lib/esm/dataview.mjs +4 -4
- package/dist/lib/esm/debug.d.mts +0 -5
- package/dist/lib/esm/debug.mjs +3 -26
- package/dist/lib/esm/frontmatter.d.mts +1 -1
- package/dist/lib/esm/frontmatter.mjs +3 -3
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/html-element.d.mts +1 -1
- package/dist/lib/esm/html-element.mjs +1 -1
- package/dist/lib/esm/i18n/i18n.d.mts +1 -1
- package/dist/lib/esm/i18n/i18n.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +1 -1
- package/dist/lib/esm/i18n/locales/en.mjs +2 -2
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -1
- package/dist/lib/esm/index.d.mts +1 -1
- package/dist/lib/esm/index.mjs +3 -3
- package/dist/lib/esm/library-styles.d.mts +9 -23
- package/dist/lib/esm/library-styles.mjs +7 -12
- package/dist/lib/esm/library.d.mts +3 -11
- package/dist/lib/esm/library.mjs +1 -3
- package/dist/lib/esm/link.mjs +3 -3
- package/dist/lib/esm/markdown.mjs +3 -3
- package/dist/lib/esm/metadata-cache.mjs +4 -4
- package/dist/lib/esm/modals/alert.mjs +2 -2
- package/dist/lib/esm/modals/confirm.mjs +3 -3
- package/dist/lib/esm/modals/prompt.mjs +3 -3
- package/dist/lib/esm/obsidian-lib-state.d.mts +30 -0
- package/dist/lib/esm/obsidian-lib-state.mjs +59 -0
- package/dist/lib/esm/path-settings.mjs +6 -6
- package/dist/lib/esm/plugin/index.d.mts +0 -1
- package/dist/lib/esm/plugin/index.mjs +1 -3
- package/dist/lib/esm/plugin/plugin-api.d.mts +5 -41
- package/dist/lib/esm/plugin/plugin-api.mjs +3 -3
- package/dist/lib/esm/plugin/plugin-context.mjs +1 -7
- package/dist/lib/esm/plugin/plugin-install-state.mjs +5 -5
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +8 -62
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -37
- package/dist/lib/esm/plugin/plugin.d.mts +1 -1
- package/dist/lib/esm/plugin/plugin.mjs +2 -2
- package/dist/lib/esm/popovers/popover.mjs +3 -3
- package/dist/lib/esm/queue.mjs +4 -4
- package/dist/lib/esm/resource-lock.mjs +9 -9
- package/dist/lib/esm/vault-delete.mjs +2 -2
- package/dist/lib/esm/vault-transaction.d.mts +2 -1
- package/dist/lib/esm/vault-transaction.mjs +17 -2
- package/dist/lib/esm/vault.mjs +2 -2
- package/dist/styles.css +174 -168
- package/package.json +1 -1
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +0 -177
- package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +0 -50
- package/dist/lib/cjs/plugin/plugin-api-schema.cjs +0 -127
- package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +0 -37
- package/dist/lib/esm/obsidian-dev-utils-state.d.mts +0 -50
- package/dist/lib/esm/obsidian-dev-utils-state.mjs +0 -86
- package/dist/lib/esm/plugin/plugin-api-schema.d.mts +0 -37
- package/dist/lib/esm/plugin/plugin-api-schema.mjs +0 -41
- package/plugin/plugin-api-schema/package.json +0 -6
|
@@ -263,7 +263,7 @@ class LinkDomEventsHandlers {
|
|
|
263
263
|
onExternalLinkClick($event, targetEl, linkText) {
|
|
264
264
|
$event.preventDefault();
|
|
265
265
|
if (!(0, import_url.isUrl)(linkText)) {
|
|
266
|
-
new import_obsidian.Notice((0, import_i18next.t)(($) => $.
|
|
266
|
+
new import_obsidian.Notice((0, import_i18next.t)(($) => $.obsidianLib.notices.failedToOpenUrl, { url: linkText }));
|
|
267
267
|
return;
|
|
268
268
|
}
|
|
269
269
|
const modifierPaneType = import_obsidian.Keymap.isModEvent($event);
|
|
@@ -438,7 +438,7 @@ async function renderInternalLink(params) {
|
|
|
438
438
|
}
|
|
439
439
|
function addCopyMenuItem(menu, targetEl) {
|
|
440
440
|
menu.addItem((item) => {
|
|
441
|
-
item.setSection("clipboard").setTitle((0, import_i18next.t)(($) => $.
|
|
441
|
+
item.setSection("clipboard").setTitle((0, import_i18next.t)(($) => $.obsidianLib.menu.copy)).setIcon("lucide-copy").onClick(() => {
|
|
442
442
|
(0, import_async.invokeAsyncSafely)(() => targetEl.win.navigator.clipboard.writeText(targetEl.getText()));
|
|
443
443
|
});
|
|
444
444
|
});
|
|
@@ -455,4 +455,4 @@ async function openAfterSettling(app, file) {
|
|
|
455
455
|
renderExternalLink,
|
|
456
456
|
renderInternalLink
|
|
457
457
|
});
|
|
458
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgTWFya2Rvd24gY29udGVudCBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBEb21FdmVudHNIYW5kbGVyc0luZm8sXG4gIEVtYmVkUmVnaXN0cnlFbWJlZEJ5RXh0ZW5zaW9uUmVjb3JkXG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIHNsZWVwXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQge1xuICBnZXRaSW5kZXgsXG4gIHdhaXRVbnRpbENvbm5lY3RlZFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvaHRtbC1lbGVtZW50JztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgaXNVcmwgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdXJsJztcbmltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG92ZXJQb3BvdmVyLFxuICBLZXltYXAsXG4gIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLFxuICBNYXJrZG93blJlbmRlcmVyLFxuICBNZW51LFxuICBOb3RpY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckFic3RyYWN0RmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBGb2xkZXJOb3RlTG9jYXRpb24gfSBmcm9tICcuL2ZvbGRlci1ub3RlLnRzJztcblxuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IHJldmVhbEluRmlsZUV4cGxvcmVyIH0gZnJvbSAnLi9maWxlLWV4cGxvcmVyLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIHJlc29sdmVGb2xkZXJOb3RlLFxuICByZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1xufSBmcm9tICcuL2ZvbGRlci1ub3RlLnRzJztcblxuLyoqXG4gKiBIb3cgbG9uZyB0byBsZXQgT2JzaWRpYW4gc2V0dGxlIGJlZm9yZSBvcGVuaW5nIGEgZm9sZGVyIG5vdGUuIFRoZSBjbGljayBjYW4gbGFuZCByaWdodCBhZnRlciBhblxuICogb3BlcmF0aW9uIHRoYXQgY3JlYXRlZCwgcmV3cm90ZSBhbmQgdHJhc2hlZCBub3RlcywgYW5kIG9wZW5pbmcgaW50byB0aGUgbWlkZGxlIG9mIE9ic2lkaWFuJ3Mgb3duXG4gKiByZWFjdGlvbiB0byB0aGF0IHNob3dzIHRoZSBub3RlIGJlZm9yZSBpdHMgbWV0YWRhdGEgaGFzIGNhdWdodCB1cC5cbiAqL1xuY29uc3QgREVMQVlfQkVGT1JFX09QRU5fSU5fTUlMTElTRUNPTkRTID0gMjAwO1xuXG4vKipcbiAqIFRoZSBzZWN0aW9ucyBhbiBleHRlcm5hbCBsaW5rJ3MgY29udGV4dCBtZW51IGRlY2xhcmVzLCBpbiBPYnNpZGlhbidzIG93biBvcmRlci4gVGhlIG9yZGVyIGlzIHdoYXRcbiAqIHtAbGluayBNZW51LnNvcnR9IGdyb3VwcyB0aGUgaXRlbXMgYnksIHNvIGl0IGhhcyB0byBtYXRjaCB3aGF0XG4gKiB7QGxpbmsgV29ya3NwYWNlLmhhbmRsZUV4dGVybmFsTGlua0NvbnRleHRNZW51fSBhbmQgZXZlcnkgYHVybC1tZW51YCBsaXN0ZW5lciBleHBlY3QgdG8gZmlsbC5cbiAqL1xuY29uc3QgRVhURVJOQUxfTElOS19NRU5VX1NFQ1RJT05TID0gW1xuICAndGl0bGUnLFxuICAnb3BlbicsXG4gICdzZWxlY3Rpb24nLFxuICAnY2xpcGJvYXJkJyxcbiAgJ2luZm8nLFxuICAnYWN0aW9uJyxcbiAgJ3ZpZXcnLFxuICAnJyxcbiAgJ2Rhbmdlcidcbl07XG5cbi8qKlxuICogVGhlIHNlY3Rpb25zIGFuIGludGVybmFsIGxpbmsncyBjb250ZXh0IG1lbnUgZGVjbGFyZXMsIGluIE9ic2lkaWFuJ3Mgb3duIG9yZGVyLiBTZWVcbiAqIHtAbGluayBFWFRFUk5BTF9MSU5LX01FTlVfU0VDVElPTlN9IOKAlCB0aGUgY291bnRlcnBhcnQgZm9yIGBmaWxlLW1lbnVgIGxpc3RlbmVycy5cbiAqL1xuY29uc3QgSU5URVJOQUxfTElOS19NRU5VX1NFQ1RJT05TID0gW1xuICAndGl0bGUnLFxuICAnb3BlbicsXG4gICdhY3Rpb24nLFxuICAnY2xpcGJvYXJkJyxcbiAgJ3ZpZXcnLFxuICAnaW5mbycsXG4gICcnLFxuICAnZGFuZ2VyJ1xuXTtcblxuLyoqXG4gKiBUaGUgcGFyYW1zIGZvciB0aGUgZnVsbCByZW5kZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbFJlbmRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBDb21wb25lbnQgaW5zdGFuY2UgdG8gdXNlIGZvciB0aGUgcmVuZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50PzogQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTEVsZW1lbnQgdG8gcmVuZGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgTWFya2Rvd24gc3RyaW5nIHRvIHJlbmRlci5cbiAgICovXG4gIHJlYWRvbmx5IG1hcmtkb3duOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVnaXN0ZXIgbGluayBoYW5kbGVycyBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBwYXRoIHRvIHJlc29sdmUgcmVsYXRpdmUgbGlua3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnLydgXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBtYXJrZG93blRvSHRtbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25Ub0h0bWxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgTWFya2Rvd24gc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqL1xuICByZWFkb25seSBtYXJrZG93bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcnYFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVnaXN0ZXJMaW5rSGFuZGxlcnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyTGlua0hhbmRsZXJzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IHRvIHJlZ2lzdGVyIGxpbmsgaGFuZGxlcnMgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcyBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZW5kZXJFeHRlcm5hbExpbmt9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckV4dGVybmFsTGlua1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBleHRlcm5hbCBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gcmVuZGVyIHRoZSBleHRlcm5hbCBsaW5rIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBmb2xkZXItbm90ZSBzZXR1cCB7QGxpbmsgcmVuZGVySW50ZXJuYWxMaW5rfSByZXNvbHZlcyBhIGZvbGRlciBsaW5rJ3Mgbm90ZSB3aXRoIOKAlCBldmVyeXRoaW5nXG4gKiB7QGxpbmsgcmVzb2x2ZUZvbGRlck5vdGVDb25maWd9IHRha2VzIGV4Y2VwdCB0aGUgYXBwLCB3aGljaCB0aGUgbGluayBhbHJlYWR5IGNhcnJpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySW50ZXJuYWxMaW5rRm9sZGVyTm90ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbnMgYSBmb2xkZXIgbm90ZSBtYXkgY2FycnkuIFNlZSB7QGxpbmsgUmVzb2x2ZUZvbGRlck5vdGVDb25maWdQYXJhbXMuZXh0ZW5zaW9uc30uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbJ21kJ11gXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb25zPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvbGRlciBub3RlIGlzIGhpZGRlbiBpbiB0aGUgZmlsZSBleHBsb3Jlci4gU2VlXG4gICAqIHtAbGluayBSZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1BhcmFtcy5pc0hpZGRlbn0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzSGlkZGVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlcmUgdGhlIG5vdGUgc2l0cyByZWxhdGl2ZSB0byBpdHMgZm9sZGVyLiBTZWUge0BsaW5rIFJlc29sdmVGb2xkZXJOb3RlQ29uZmlnUGFyYW1zLmxvY2F0aW9ufS5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfVxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb24/OiBGb2xkZXJOb3RlTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIE5hbWVzIHRoZSBmb2xkZXIgbm90ZSBvZiBhIGZvbGRlci4gU2VlIHtAbGluayBSZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1BhcmFtcy5yZXNvbHZlTmFtZX0uXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXIgLSBUaGUgZm9sZGVyIHdob3NlIG5vdGUgaXMgYmVpbmcgbmFtZWQuXG4gICAqIEByZXR1cm5zIFRoZSBub3RlJ3MgbmFtZS5cbiAgICogQGRlZmF1bHQgYChmb2xkZXIpID0+IGZvbGRlci5uYW1lYFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZU5hbWU/OiAoZm9sZGVyOiBURm9sZGVyKSA9PiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlbmRlckludGVybmFsTGlua30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySW50ZXJuYWxMaW5rUGFyYW1zIHtcbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBhIGNsaWNrIGhhcyByZXZlYWxlZCB0aGUgbGluaydzIGRlc3RpbmF0aW9uIGluIHRoZSBmaWxlIGV4cGxvcmVyLCBvbmNlIHRoZSBleHBsb3JlciBoYXNcbiAgICogZmluaXNoZWQgdGFraW5nIHRoZSBmb2N1cyBmb3IgaXQg4oCUIHNvIHRoaXMgaXMgd2hlcmUgYSBjYWxsZXIgbW92ZXMgdGhlIGZvY3VzIHNvbWV3aGVyZSBlbHNlLlxuICAgKlxuICAgKiBBd2FpdGVkLCBhbmQgY2FsbGVkIG9ubHkgZm9yIGEgY2xpY2sgdGhhdCByZXZlYWxzOiBhbHdheXMgZm9yIGEgZm9sZGVyIGxpbmssIGFuZCBmb3IgYSBmaWxlIGxpbmsgb25seVxuICAgKiB3aXRoIHtAbGluayBSZW5kZXJJbnRlcm5hbExpbmtQYXJhbXMuc2hvdWxkUmV2ZWFsRmlsZX0gYW5kIGEgZGVzdGluYXRpb24gdGhhdCBleGlzdHMuIFdpdGggdGhlIGZpbGVcbiAgICogZXhwbG9yZXIgZGlzYWJsZWQgaXQgaXMgc3RpbGwgY2FsbGVkLCByaWdodCBhd2F5LCBzaW5jZSB0aGVyZSBpcyB0aGVuIG5vdGhpbmcgdG8gd2FpdCBmb3IuXG4gICAqL1xuICByZWFkb25seSBhZnRlclJldmVhbD86ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBpbnRlcm5hbCBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvdyB0byBhbnN3ZXIgd2hpY2ggbm90ZSBpcyBhIGZvbGRlcidzIGZvbGRlciBub3RlLCB3aGVuIHRoZSBsaW5rIG5hbWVzIGEgRk9MREVSLlxuICAgKlxuICAgKiBPbWl0dGVkIG1lYW5zIHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uQXV0b306IHRoZSBpbnN0YWxsZWQgYGZvbGRlci1ub3Rlc2AgcGx1Z2luJ3MgbGl2ZVxuICAgKiBjb25maWd1cmF0aW9uLCBvciBhIG5vdGUgbmFtZWQgYWZ0ZXIgaXRzIGZvbGRlciwgaW5zaWRlIGl0LCB3aGVuIHRoYXQgcGx1Z2luIGlzIGFic2VudC4gUGFzc1xuICAgKiBgeyBsb2NhdGlvbjogRm9sZGVyTm90ZUxvY2F0aW9uLk5vbmUgfWAgZm9yIGEgZm9sZGVyIGxpbmsgdGhhdCBtdXN0IG9ubHkgZXZlciByZXZlYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB7fWBcbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlck5vdGU/OiBSZW5kZXJJbnRlcm5hbExpbmtGb2xkZXJOb3RlT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZW5kZXIgdGhlIGludGVybmFsIGxpbmsgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yQWJzdHJhY3RGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgYSBGSUxFIGxpbmsgYWxzbyBoaWdobGlnaHRzIHRoYXQgZmlsZSBpbiB0aGUgZmlsZSBleHBsb3Jlciwgb24gdG9wIG9mIHRoZSBvcGVuXG4gICAqIE9ic2lkaWFuJ3Mgb3duIGxpbmsgaGFuZGxlciBwZXJmb3Jtcy5cbiAgICpcbiAgICogT3B0LWluLCB1bmxpa2UgdGhlIGZvbGRlciBicmFuY2g6IGEgZm9sZGVyIGxpbmsgaGFzIGFsd2F5cyByZXZlYWxlZCAocmV2ZWFsaW5nIHdhcyBhbGwgaXRzIGNsaWNrXG4gICAqIGNvdWxkIG1lYW4pLCB3aGVyZWFzIGEgZmlsZSBsaW5rIGhhcyBhbHdheXMgb25seSBvcGVuZWQg4oCUIHNvIHR1cm5pbmcgdGhpcyBvbiBieSBkZWZhdWx0IHdvdWxkIGNoYW5nZVxuICAgKiB3aGF0IGV2ZXJ5IGV4aXN0aW5nIGNhbGxlcidzIGxpbmsgZG9lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmV2ZWFsRmlsZT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mb0NvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5jbGFzcyBFbWJlZEJ5RXh0ZW5zaW9uTWRQYXRjaENvbXBvbmVudCBleHRlbmRzIE1vbmtleUFyb3VuZENvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVtYmVkQnlFeHRlbnNpb246IEVtYmVkUmVnaXN0cnlFbWJlZEJ5RXh0ZW5zaW9uUmVjb3JkKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3Rlck1ldGhvZFBhdGNoKHtcbiAgICAgICRvYmplY3Q6IHRoaXMuZW1iZWRCeUV4dGVuc2lvbixcbiAgICAgIG1ldGhvZE5hbWU6ICdtZCcsXG4gICAgICBwYXRjaEhhbmRsZXI6ICh7XG4gICAgICAgIGZhbGxiYWNrLFxuICAgICAgICBvcmlnaW5hbEFyZ3VtZW50czogW2NvbnRleHRdXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGlzcGxheU1vZGUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm8gaW1wbGVtZW50cyBEb21FdmVudHNIYW5kbGVyc0luZm8ge1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgaG92ZXJQb3BvdmVyKCk6IEhvdmVyUG9wb3ZlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9ob3ZlclBvcG92ZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IGhvdmVyUG9wb3Zlcihob3ZlclBvcG92ZXI6IEhvdmVyUG9wb3ZlciB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3ZlclBvcG92ZXIgPSBob3ZlclBvcG92ZXI7XG4gICAgaWYgKGhvdmVyUG9wb3ZlciAmJiB0aGlzLnpJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBob3ZlclBvcG92ZXIuaG92ZXJFbC5zZXRDc3NTdHlsZXMoe1xuICAgICAgICB6SW5kZXg6IFN0cmluZyh0aGlzLnpJbmRleClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hvdmVyUG9wb3ZlcjogSG92ZXJQb3BvdmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSB6SW5kZXg/OiBudW1iZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm9Db25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnBhdGggPSBwYXJhbXMucGF0aDtcbiAgICB0aGlzLmVsID0gcGFyYW1zLmVsO1xuXG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgd2FpdFVudGlsQ29ubmVjdGVkKHRoaXMuZWwpO1xuICAgICAgdGhpcy51cGRhdGVaSW5kZXgodGhpcy5lbCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVpJbmRleChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuekluZGV4ID0gZ2V0WkluZGV4KGVsZW1lbnQpICsgMTtcbiAgfVxufVxuXG4vKipcbiAqIFdoYXQgYSByZW5kZXJlZCBsaW5rIERPRVMgd2hlbiBpdCBpcyBjbGlja2VkLCBob3ZlcmVkLCBkcmFnZ2VkIG9yIHJpZ2h0LWNsaWNrZWQuXG4gKlxuICoge0BsaW5rIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzfSBvbmx5IHBlcmZvcm1zIHRoZSBERUxFR0FUSU9OIGhhbGYg4oCUIHdoaWNoIGVsZW1lbnQgYW5cbiAqIGV2ZW50IGxhbmRlZCBvbiwgd2hpY2ggbGluayB0ZXh0IGl0IGNhcnJpZXMsIGFuZCB3aGljaCBvZiB0aGVzZSBtZXRob2RzIHRvIGNhbGwuIFRoZSBoYWxmIGl0IGRvZXMgbm90XG4gKiBwcm92aWRlIGlzIHRoaXMgb25lLCBhbmQgT2JzaWRpYW4ga2VlcHMgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBwcml2YXRlOiB0aGUgb25seSBoYW5kbGUgb24gaXQgaXMgdGhlXG4gKiBpbnN0YW5jZSBhIGxpdmUgcHJldmlldyB2aWV3IHBhc3NlcyBpbi4ge0BsaW5rIGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3J9IHVzZWQgdG8gb2J0YWluIGl0IGJ5XG4gKiBvcGVuaW5nIGEgcmVhbCBsZWFmIG9uIGFuIGFyYml0cmFyeSBub3RlIGFuZCBpbnRlcmNlcHRpbmcgdGhhdCBjYWxsIOKAlCB3aGljaCBtdXRhdGVkIHRoZSB1c2VyJ3NcbiAqIHdvcmtzcGFjZSBvbiBFVkVSWSBjb25zdW1lcidzIGxvYWQgKGEgdGFiIG9wZW5pbmcgYW5kIGNsb3NpbmcsIHR3byBgZmlsZS1vcGVuYCBhbmQgdHdvXG4gKiBgYWN0aXZlLWxlYWYtY2hhbmdlYCBldmVudHMsIGFuIHVucmVsYXRlZCBub3RlIHJlbmRlcmVkIGluIHByZXZpZXcpLlxuICpcbiAqIFRoZXNlIGJvZGllcyBhcmUgYSBwb3J0IG9mIHRoYXQgY2xhc3MsIHNvIG5vdGhpbmcgaGFzIHRvIGJlIG9wZW5lZC4gS2VlcGluZ1xuICoge0BsaW5rIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzfSBmb3IgdGhlIGRlbGVnYXRpb24gaXMgd2hhdCBrZWVwcyBmb290bm90ZSBsaW5rcyxcbiAqIHRhZ3MsIGV4dGVybmFsIGxpbmtzLCBtb2QtY2xpY2sgYW5kIGRyYWcgYmVoYXZpbmcgZXhhY3RseSBhcyB0aGV5IGRvIGluc2lkZSBhIHJlYWwgcHJldmlldy5cbiAqL1xuY2xhc3MgTGlua0RvbUV2ZW50c0hhbmRsZXJzIGltcGxlbWVudHMgRG9tRXZlbnRzSGFuZGxlcnMge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmZvOiBEb21FdmVudHNIYW5kbGVyc0luZm8pIHt9XG5cbiAgcHVibGljIG9uRXh0ZXJuYWxMaW5rQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXRFbDogSFRNTEVsZW1lbnQsIGxpbmtUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIWlzVXJsKGxpbmtUZXh0KSkge1xuICAgICAgbmV3IE5vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMubm90aWNlcy5mYWlsZWRUb09wZW5VcmwsIHsgdXJsOiBsaW5rVGV4dCB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW9kaWZpZXJQYW5lVHlwZSA9IEtleW1hcC5pc01vZEV2ZW50KCRldmVudCk7XG4gICAgdGFyZ2V0RWwud2luLm9wZW4obGlua1RleHQsIHR5cGVvZiBtb2RpZmllclBhbmVUeXBlID09PSAnYm9vbGVhbicgPyAnJyA6IG1vZGlmaWVyUGFuZVR5cGUpO1xuICB9XG5cbiAgcHVibGljIG9uRXh0ZXJuYWxMaW5rUmlnaHRDbGljaygkZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldEVsOiBIVE1MRWxlbWVudCwgbGlua1RleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG1lbnUgPSBNZW51LmZvckV2ZW50KCRldmVudCk7XG4gICAgbWVudS5hZGRTZWN0aW9ucyhFWFRFUk5BTF9MSU5LX01FTlVfU0VDVElPTlMpO1xuICAgIGFkZENvcHlNZW51SXRlbShtZW51LCB0YXJnZXRFbCk7XG4gICAgdGhpcy5pbmZvLmFwcC53b3Jrc3BhY2UuaGFuZGxlRXh0ZXJuYWxMaW5rQ29udGV4dE1lbnUobWVudSwgbGlua1RleHQpO1xuICB9XG5cbiAgcHVibGljIG9uSW50ZXJuYWxMaW5rQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCBfdGFyZ2V0RWw6IEhUTUxFbGVtZW50LCBsaW5rVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5pbmZvLmFwcC53b3Jrc3BhY2Uub3BlbkxpbmtUZXh0KGxpbmtUZXh0LCB0aGlzLmluZm8ucGF0aCwgS2V5bWFwLmlzTW9kRXZlbnQoJGV2ZW50KSkpO1xuICB9XG5cbiAgcHVibGljIG9uSW50ZXJuYWxMaW5rRHJhZygkZXZlbnQ6IERyYWdFdmVudCwgX3RhcmdldEVsOiBIVE1MRWxlbWVudCwgbGlua1RleHQ6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkcmFnTWFuYWdlciA9IHRoaXMuaW5mby5hcHAuZHJhZ01hbmFnZXI7XG4gICAgZHJhZ01hbmFnZXIub25EcmFnU3RhcnQoJGV2ZW50LCBkcmFnTWFuYWdlci5kcmFnTGluaygkZXZlbnQsIGxpbmtUZXh0LCB0aGlzLmluZm8ucGF0aCwgdGl0bGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkludGVybmFsTGlua01vdXNlb3ZlcigkZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldEVsOiBIVE1MRWxlbWVudCwgbGlua1RleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIGBob3ZlclBhcmVudGAgaXMgdGhlIGluZm8gb2JqZWN0IGl0c2VsZiwgZXhhY3RseSBhcyBPYnNpZGlhbiBwYXNzZXMgaXRzIG93biDigJQgd2hpY2ggaXMgd2hhdCBrZWVwc1xuICAgIC8vIGBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mb2AncyBwb3BvdmVyIHotaW5kZXggZml4IGluIHBsYXkuXG4gICAgdGhpcy5pbmZvLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignaG92ZXItbGluaycsIHtcbiAgICAgIGV2ZW50OiAkZXZlbnQsXG4gICAgICBob3ZlclBhcmVudDogdGhpcy5pbmZvLFxuICAgICAgbGlua3RleHQ6IGxpbmtUZXh0LFxuICAgICAgc291cmNlOiAncHJldmlldycsXG4gICAgICBzb3VyY2VQYXRoOiB0aGlzLmluZm8ucGF0aCxcbiAgICAgIHRhcmdldEVsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25JbnRlcm5hbExpbmtSaWdodENsaWNrKCRldmVudDogTW91c2VFdmVudCwgdGFyZ2V0RWw6IEhUTUxFbGVtZW50LCBsaW5rVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbWVudSA9IE1lbnUuZm9yRXZlbnQoJGV2ZW50KTtcbiAgICBtZW51LnNldFBhcmVudEVsZW1lbnQodGFyZ2V0RWwpO1xuICAgIG1lbnUuYWRkU2VjdGlvbnMoSU5URVJOQUxfTElOS19NRU5VX1NFQ1RJT05TKTtcbiAgICBhZGRDb3B5TWVudUl0ZW0obWVudSwgdGFyZ2V0RWwpO1xuICAgIHRoaXMuaW5mby5hcHAud29ya3NwYWNlLmhhbmRsZUxpbmtDb250ZXh0TWVudShtZW51LCBsaW5rVGV4dCwgdGhpcy5pbmZvLnBhdGgpO1xuICB9XG5cbiAgcHVibGljIG9uVGFnQ2xpY2soXyRldmVudDogTW91c2VFdmVudCwgX3RhcmdldEVsOiBIVE1MRWxlbWVudCwgdGFnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBgcmVnaXN0ZXJEb21FdmVudHNgIGhhcyBhbHJlYWR5IGNhbGxlZCBgcHJldmVudERlZmF1bHQoKWAgZm9yIGEgdGFnIGNsaWNrLlxuICAgIHRoaXMuaW5mby5hcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5HbG9iYWxTZWFyY2gpPy5vcGVuR2xvYmFsU2VhcmNoKGB0YWc6JHt0YWd9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW5kZXIgdGhlIG1hcmtkb3duIGFuZCBlbWJlZHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVsbCByZW5kZXIuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVsbCByZW5kZXIgaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmdWxsUmVuZGVyKHBhcmFtczogRnVsbFJlbmRlclBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzb3VyY2VQYXRoID0gcGFyYW1zLnNvdXJjZVBhdGggPz8gJy8nO1xuICBsZXQgc2hvdWxkVW5sb2FkQ29tcG9uZW50ID0gZmFsc2U7XG4gIGxldCBjb21wb25lbnQ6IENvbXBvbmVudDtcbiAgaWYgKHBhcmFtcy5jb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQgPSBwYXJhbXMuY29tcG9uZW50O1xuICB9IGVsc2Uge1xuICAgIGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnQoKTtcbiAgICBjb21wb25lbnQubG9hZCgpO1xuICAgIHNob3VsZFVubG9hZENvbXBvbmVudCA9IHRydWU7XG4gIH1cblxuICB1c2luZyBfID0gY29tcG9uZW50LmFkZENoaWxkKG5ldyBFbWJlZEJ5RXh0ZW5zaW9uTWRQYXRjaENvbXBvbmVudChwYXJhbXMuYXBwLmVtYmVkUmVnaXN0cnkuZW1iZWRCeUV4dGVuc2lvbikpO1xuXG4gIGF3YWl0IE1hcmtkb3duUmVuZGVyZXIucmVuZGVyKHBhcmFtcy5hcHAsIHBhcmFtcy5tYXJrZG93biwgcGFyYW1zLmVsLCBzb3VyY2VQYXRoLCBjb21wb25lbnQpO1xuXG4gIGlmIChzaG91bGRVbmxvYWRDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQudW5sb2FkKCk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzKSB7XG4gICAgcmVnaXN0ZXJMaW5rSGFuZGxlcnMobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFJlZ2lzdGVyTGlua0hhbmRsZXJzUGFyYW1zPih7XG4gICAgICBhcHA6IHBhcmFtcy5hcHAsXG4gICAgICBlbDogcGFyYW1zLmVsLFxuICAgICAgc291cmNlUGF0aDogcGFyYW1zLnNvdXJjZVBhdGhcbiAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBNYXJrZG93biB0byBIVE1MLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNvbnZlcnNpb24uXG4gKiBAcmV0dXJucyBUaGUgSFRNTCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYXJrZG93blRvSHRtbChwYXJhbXM6IE1hcmtkb3duVG9IdG1sUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBtYXJrZG93bixcbiAgICBzb3VyY2VQYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnQoKTtcbiAgY29tcG9uZW50LmxvYWQoKTtcbiAgY29uc3QgcmVuZGVyRGl2ID0gY3JlYXRlRGl2KCk7XG4gIGF3YWl0IE1hcmtkb3duUmVuZGVyZXIucmVuZGVyKGFwcCwgbWFya2Rvd24sIHJlbmRlckRpdiwgc291cmNlUGF0aCA/PyAnJywgY29tcG9uZW50KTtcbiAgY29uc3QgaHRtbCA9IHJlbmRlckRpdi5pbm5lckhUTUw7XG4gIGNvbXBvbmVudC51bmxvYWQoKTtcbiAgcmV0dXJuIGh0bWw7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGxpbmsgaGFuZGxlcnMgZm9yIHRoZSBnaXZlbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVnaXN0ZXJpbmcgbGluayBoYW5kbGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTGlua0hhbmRsZXJzKHBhcmFtczogUmVnaXN0ZXJMaW5rSGFuZGxlcnNQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBlbCxcbiAgICBzb3VyY2VQYXRoXG4gIH0gPSBwYXJhbXM7XG4gIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzKFxuICAgIGVsLFxuICAgIG5ldyBMaW5rRG9tRXZlbnRzSGFuZGxlcnMoXG4gICAgICBuZXcgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm8oe1xuICAgICAgICBhcHAsXG4gICAgICAgIGVsLFxuICAgICAgICBwYXRoOiBzb3VyY2VQYXRoID8/ICcnXG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIGV4dGVybmFsIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgSFRNTEFuY2hvckVsZW1lbnQgY29udGFpbmluZyB0aGUgcmVuZGVyZWQgZXh0ZXJuYWwgbGluay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckV4dGVybmFsTGluayhwYXJhbXM6IFJlbmRlckV4dGVybmFsTGlua1BhcmFtcyk6IFByb21pc2U8SFRNTEFuY2hvckVsZW1lbnQ+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICB1cmxcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgZGlzcGxheVRleHQgPSBwYXJhbXMuZGlzcGxheVRleHQgPz8gdXJsO1xuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgWyR7ZGlzcGxheVRleHR9XSgke3VybH0pYFxuICB9KTtcbiAgY29uc3QgYUVsID0gd3JhcHBlckVsLmZpbmQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgcmVnaXN0ZXJMaW5rSGFuZGxlcnMoe1xuICAgIGFwcCxcbiAgICBlbDogYUVsXG4gIH0pO1xuICByZXR1cm4gYUVsO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaW50ZXJuYWwgbGluay5cbiAqXG4gKiBXaGF0IGNsaWNraW5nIHRoZSByZW5kZXJlZCBsaW5rIGRvZXMgZGVwZW5kcyBvbiB3aGF0IGl0IG5hbWVzOlxuICpcbiAqIC0gQSBGSUxFIGlzIG9wZW5lZCBieSBPYnNpZGlhbidzIG93biBsaW5rIGhhbmRsZXIg4oCUIGFuZCwgd2l0aFxuICogICB7QGxpbmsgUmVuZGVySW50ZXJuYWxMaW5rUGFyYW1zLnNob3VsZFJldmVhbEZpbGV9LCBhZGRpdGlvbmFsbHkgcmV2ZWFsZWQgaW4gdGhlIGZpbGUgZXhwbG9yZXIuXG4gKiAtIEEgRk9MREVSIGNhbm5vdCBiZSBvcGVuZWQsIHNvIGl0cyBGT0xERVIgTk9URSBpcyDigJQgdGhlIG5vdGUgd2hvc2UgcHJvcGVydGllcyBkZXNjcmliZSB0aGUgZm9sZGVyXG4gKiAgIGl0c2VsZiwgcmVzb2x2ZWQgdGhyb3VnaCB7QGxpbmsgcmVzb2x2ZUZvbGRlck5vdGV9IChieSBkZWZhdWx0IGZyb20gdGhlIGluc3RhbGxlZCBgZm9sZGVyLW5vdGVzYFxuICogICBwbHVnaW4ncyBsaXZlIGNvbmZpZ3VyYXRpb24pLiBUaGUgcmV2ZWFsIGxhbmRzIG9uIHRoYXQgbm90ZSwgdW5sZXNzIHRoZSBub3RlIGlzIGhpZGRlbiBpbiB0aGVcbiAqICAgZXhwbG9yZXIsIGluIHdoaWNoIGNhc2UgaXQgbGFuZHMgb24gdGhlIGZvbGRlciDigJQgcmV2ZWFsaW5nIGEgaGlkZGVuIG5vdGUgd291bGQgaGlnaGxpZ2h0IG5vdGhpbmcuXG4gKiAgIEEgZm9sZGVyIHdpdGggTk8gZm9sZGVyIG5vdGUgcmV2ZWFscyB0aGUgZm9sZGVyIGFuZCBvcGVucyBub3RoaW5nOiBub3RoaW5nIGhlcmUgZXZlciBjcmVhdGVzIGEgbm90ZS5cbiAqXG4gKiBFdmVyeXRoaW5nIGlzIHJlc29sdmVkIGF0IENMSUNLIHRpbWUgcmF0aGVyIHRoYW4gYXQgcmVuZGVyIHRpbWUsIGRlbGliZXJhdGVseTogYSByZW5kZXJlZCBsaW5rIG91dGxpdmVzXG4gKiB0aGUgb3BlcmF0aW9uIHRoYXQgcHJvZHVjZWQgaXQsIHNvIGEgZGVzdGluYXRpb24gcmVuYW1lZCBpbiBiZXR3ZWVuIHN0aWxsIHJldmVhbHMgdGhlIHJpZ2h0IGl0ZW0sIGFuZCBhXG4gKiBmb2xkZXIgbm90ZSB3cml0dGVuIGFmdGVyIHRoZSBsaW5rIGFwcGVhcmVkIGlzIHN0aWxsIGZvdW5kLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBpbnRlcm5hbCBsaW5rLlxuICogQHJldHVybnMgVGhlIEhUTUxBbmNob3JFbGVtZW50IGNvbnRhaW5pbmcgdGhlIHJlbmRlcmVkIGludGVybmFsIGxpbmsuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJJbnRlcm5hbExpbmsocGFyYW1zOiBSZW5kZXJJbnRlcm5hbExpbmtQYXJhbXMpOiBQcm9taXNlPEhUTUxBbmNob3JFbGVtZW50PiB7XG4gIGNvbnN0IHtcbiAgICBhZnRlclJldmVhbCxcbiAgICBhcHAsXG4gICAgZm9sZGVyTm90ZSxcbiAgICBwYXRoT3JBYnN0cmFjdEZpbGUsXG4gICAgc2hvdWxkUmV2ZWFsRmlsZVxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIEEgRE9NIGxpc3RlbmVyIGNhbm5vdCBhd2FpdCwgc28gdGhlIHJldmVhbCwgYW5kIHRoZSBob29rIG9yZGVyZWQgYWZ0ZXIgaXQsIHJ1biBkZXRhY2hlZC5cbiAgZnVuY3Rpb24gcmV2ZWFsKGFic3RyYWN0RmlsZVRvUmV2ZWFsOiBUQWJzdHJhY3RGaWxlKTogdm9pZCB7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcmV2ZWFsSW5GaWxlRXhwbG9yZXIoeyBhYnN0cmFjdEZpbGU6IGFic3RyYWN0RmlsZVRvUmV2ZWFsLCBhcHAgfSk7XG4gICAgICBhd2FpdCBhZnRlclJldmVhbD8uKCk7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgYWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBwYXRoT3JBYnN0cmFjdEZpbGUgfSk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yQWJzdHJhY3RGaWxlKTtcbiAgY29uc3QgZGlzcGxheVRleHQgPSBwYXJhbXMuZGlzcGxheVRleHQgPz8gcGF0aDtcbiAgaWYgKGlzRm9sZGVyKGFic3RyYWN0RmlsZSkpIHtcbiAgICByZXR1cm4gY3JlYXRlRWwoJ2EnLCB7IHRleHQ6IGRpc3BsYXlUZXh0IH0sIChhRWwpID0+IHtcbiAgICAgIGFFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnKHsgYXBwLCAuLi5mb2xkZXJOb3RlIH0pO1xuICAgICAgICBjb25zdCBmb2xkZXJOb3RlRmlsZSA9IHJlc29sdmVGb2xkZXJOb3RlKHsgYXBwLCBjb25maWcsIGZvbGRlcjogYWJzdHJhY3RGaWxlIH0pO1xuICAgICAgICByZXZlYWwoZm9sZGVyTm90ZUZpbGUgJiYgIWNvbmZpZy5pc0hpZGRlbiA/IGZvbGRlck5vdGVGaWxlIDogYWJzdHJhY3RGaWxlKTtcbiAgICAgICAgaWYgKGZvbGRlck5vdGVGaWxlKSB7XG4gICAgICAgICAgLy8gQSBET00gbGlzdGVuZXIgY2Fubm90IGF3YWl0LCBhbmQgdGhlIG9wZW4gaGFzIHRvIG91dGxpdmUgdGhpcyBoYW5kbGVyOiBpdCBzZXR0bGVzIGZpcnN0LCBmb3JcbiAgICAgICAgICAvLyB0aGUgY2xpY2sgdGhhdCBsYW5kcyByaWdodCBhcyBhbiBvcGVyYXRpb24gZmluaXNoZXMgd3JpdGluZy5cbiAgICAgICAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBvcGVuQWZ0ZXJTZXR0bGluZyhhcHAsIGZvbGRlck5vdGVGaWxlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgd3JhcHBlckVsID0gY3JlYXRlU3BhbigpO1xuICBhd2FpdCBmdWxsUmVuZGVyKHtcbiAgICBhcHAsXG4gICAgZWw6IHdyYXBwZXJFbCxcbiAgICBtYXJrZG93bjogYFtbJHtwYXRofXwke2Rpc3BsYXlUZXh0fV1dYFxuICB9KTtcbiAgY29uc3QgYUVsID0gd3JhcHBlckVsLmZpbmQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgcmVnaXN0ZXJMaW5rSGFuZGxlcnMoe1xuICAgIGFwcCxcbiAgICBlbDogYUVsXG4gIH0pO1xuICBpZiAoc2hvdWxkUmV2ZWFsRmlsZSA/PyBmYWxzZSkge1xuICAgIGFFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIC8vIExheWVyZWQgT04gVE9QIG9mIE9ic2lkaWFuJ3Mgb3duIGhhbmRsZXIg4oCUIG5vIGBwcmV2ZW50RGVmYXVsdGAsIHNvIHRoZSBvcGVuIGlzIHVudG91Y2hlZC4gQSBwYXRoXG4gICAgICAvLyB0aGF0IHJlc29sdmVzIHRvIG5vdGhpbmcgZ2V0cyBubyByZXZlYWw6IGFuIHVucmVzb2x2ZWQgbGluayBoYXMgbm90aGluZyB0byByZXZlYWwsIGFuZCBjbGlja2luZ1xuICAgICAgLy8gb25lIENSRUFURVMgdGhlIG5vdGUgaXQgbmFtZXMuXG4gICAgICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBwYXRoT3JBYnN0cmFjdEZpbGUgfSk7XG4gICAgICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgIHJldmVhbChmaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gYUVsO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIGBjbGlwYm9hcmRgLXNlY3Rpb24gQ29weSBpdGVtIGV2ZXJ5IGxpbmsgY29udGV4dCBtZW51IGNhcnJpZXMsIGNvcHlpbmcgdGhlIGxpbmsncyBESVNQTEFZXG4gKiB0ZXh0IOKAlCB3aGljaCBpcyB3aGF0IE9ic2lkaWFuJ3Mgb3duIG1lbnUgY29waWVzLCBub3QgdGhlIHRhcmdldCBwYXRoLlxuICpcbiAqIEBwYXJhbSBtZW51IC0gVGhlIG1lbnUgdG8gYWRkIHRoZSBpdGVtIHRvLlxuICogQHBhcmFtIHRhcmdldEVsIC0gVGhlIGxpbmsgZWxlbWVudCB0aGUgbWVudSB3YXMgb3BlbmVkIG9uLlxuICovXG5mdW5jdGlvbiBhZGRDb3B5TWVudUl0ZW0obWVudTogTWVudSwgdGFyZ2V0RWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgIGl0ZW1cbiAgICAgIC5zZXRTZWN0aW9uKCdjbGlwYm9hcmQnKVxuICAgICAgLnNldFRpdGxlKHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5tZW51LmNvcHkpKVxuICAgICAgLnNldEljb24oJ2x1Y2lkZS1jb3B5JylcbiAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGFyZ2V0RWwud2luLm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRhcmdldEVsLmdldFRleHQoKSkpO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIE9wZW5zIGEgZmlsZSBpbiB0aGUgYWN0aXZlIGxlYWYsIG9uY2UgdGhlIHZhdWx0IGhhcyBzZXR0bGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBvcGVuLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBmaWxlIGlzIG9wZW4uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9wZW5BZnRlclNldHRsaW5nKGFwcDogQXBwLCBmaWxlOiBURmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBzbGVlcCh7IG1pbGxpc2Vjb25kczogREVMQVlfQkVGT1JFX09QRU5fSU5fTUlMTElTRUNPTkRTIH0pO1xuICBhd2FpdCBhcHAud29ya3NwYWNlLmdldExlYWYoKS5vcGVuRmlsZShmaWxlLCB7IGFjdGl2ZTogdHJ1ZSB9KTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0JBLG1CQUdPO0FBQ1AsMEJBR087QUFDUCwwQkFBNEM7QUFDNUMsaUJBQXNCO0FBQ3RCLDZCQUFtQztBQUNuQyxxQkFBa0I7QUFD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
|
|
458
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgTWFya2Rvd24gY29udGVudCBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBEb21FdmVudHNIYW5kbGVyc0luZm8sXG4gIEVtYmVkUmVnaXN0cnlFbWJlZEJ5RXh0ZW5zaW9uUmVjb3JkXG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIHNsZWVwXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQge1xuICBnZXRaSW5kZXgsXG4gIHdhaXRVbnRpbENvbm5lY3RlZFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvaHRtbC1lbGVtZW50JztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgaXNVcmwgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdXJsJztcbmltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG92ZXJQb3BvdmVyLFxuICBLZXltYXAsXG4gIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLFxuICBNYXJrZG93blJlbmRlcmVyLFxuICBNZW51LFxuICBOb3RpY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckFic3RyYWN0RmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBGb2xkZXJOb3RlTG9jYXRpb24gfSBmcm9tICcuL2ZvbGRlci1ub3RlLnRzJztcblxuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IHJldmVhbEluRmlsZUV4cGxvcmVyIH0gZnJvbSAnLi9maWxlLWV4cGxvcmVyLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIHJlc29sdmVGb2xkZXJOb3RlLFxuICByZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1xufSBmcm9tICcuL2ZvbGRlci1ub3RlLnRzJztcblxuLyoqXG4gKiBIb3cgbG9uZyB0byBsZXQgT2JzaWRpYW4gc2V0dGxlIGJlZm9yZSBvcGVuaW5nIGEgZm9sZGVyIG5vdGUuIFRoZSBjbGljayBjYW4gbGFuZCByaWdodCBhZnRlciBhblxuICogb3BlcmF0aW9uIHRoYXQgY3JlYXRlZCwgcmV3cm90ZSBhbmQgdHJhc2hlZCBub3RlcywgYW5kIG9wZW5pbmcgaW50byB0aGUgbWlkZGxlIG9mIE9ic2lkaWFuJ3Mgb3duXG4gKiByZWFjdGlvbiB0byB0aGF0IHNob3dzIHRoZSBub3RlIGJlZm9yZSBpdHMgbWV0YWRhdGEgaGFzIGNhdWdodCB1cC5cbiAqL1xuY29uc3QgREVMQVlfQkVGT1JFX09QRU5fSU5fTUlMTElTRUNPTkRTID0gMjAwO1xuXG4vKipcbiAqIFRoZSBzZWN0aW9ucyBhbiBleHRlcm5hbCBsaW5rJ3MgY29udGV4dCBtZW51IGRlY2xhcmVzLCBpbiBPYnNpZGlhbidzIG93biBvcmRlci4gVGhlIG9yZGVyIGlzIHdoYXRcbiAqIHtAbGluayBNZW51LnNvcnR9IGdyb3VwcyB0aGUgaXRlbXMgYnksIHNvIGl0IGhhcyB0byBtYXRjaCB3aGF0XG4gKiB7QGxpbmsgV29ya3NwYWNlLmhhbmRsZUV4dGVybmFsTGlua0NvbnRleHRNZW51fSBhbmQgZXZlcnkgYHVybC1tZW51YCBsaXN0ZW5lciBleHBlY3QgdG8gZmlsbC5cbiAqL1xuY29uc3QgRVhURVJOQUxfTElOS19NRU5VX1NFQ1RJT05TID0gW1xuICAndGl0bGUnLFxuICAnb3BlbicsXG4gICdzZWxlY3Rpb24nLFxuICAnY2xpcGJvYXJkJyxcbiAgJ2luZm8nLFxuICAnYWN0aW9uJyxcbiAgJ3ZpZXcnLFxuICAnJyxcbiAgJ2Rhbmdlcidcbl07XG5cbi8qKlxuICogVGhlIHNlY3Rpb25zIGFuIGludGVybmFsIGxpbmsncyBjb250ZXh0IG1lbnUgZGVjbGFyZXMsIGluIE9ic2lkaWFuJ3Mgb3duIG9yZGVyLiBTZWVcbiAqIHtAbGluayBFWFRFUk5BTF9MSU5LX01FTlVfU0VDVElPTlN9IOKAlCB0aGUgY291bnRlcnBhcnQgZm9yIGBmaWxlLW1lbnVgIGxpc3RlbmVycy5cbiAqL1xuY29uc3QgSU5URVJOQUxfTElOS19NRU5VX1NFQ1RJT05TID0gW1xuICAndGl0bGUnLFxuICAnb3BlbicsXG4gICdhY3Rpb24nLFxuICAnY2xpcGJvYXJkJyxcbiAgJ3ZpZXcnLFxuICAnaW5mbycsXG4gICcnLFxuICAnZGFuZ2VyJ1xuXTtcblxuLyoqXG4gKiBUaGUgcGFyYW1zIGZvciB0aGUgZnVsbCByZW5kZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbFJlbmRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBDb21wb25lbnQgaW5zdGFuY2UgdG8gdXNlIGZvciB0aGUgcmVuZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50PzogQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTEVsZW1lbnQgdG8gcmVuZGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgTWFya2Rvd24gc3RyaW5nIHRvIHJlbmRlci5cbiAgICovXG4gIHJlYWRvbmx5IG1hcmtkb3duOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVnaXN0ZXIgbGluayBoYW5kbGVycyBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBwYXRoIHRvIHJlc29sdmUgcmVsYXRpdmUgbGlua3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnLydgXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBtYXJrZG93blRvSHRtbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25Ub0h0bWxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgTWFya2Rvd24gc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqL1xuICByZWFkb25seSBtYXJrZG93bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcnYFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVnaXN0ZXJMaW5rSGFuZGxlcnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyTGlua0hhbmRsZXJzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IHRvIHJlZ2lzdGVyIGxpbmsgaGFuZGxlcnMgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcyBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZW5kZXJFeHRlcm5hbExpbmt9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckV4dGVybmFsTGlua1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBleHRlcm5hbCBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gcmVuZGVyIHRoZSBleHRlcm5hbCBsaW5rIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBmb2xkZXItbm90ZSBzZXR1cCB7QGxpbmsgcmVuZGVySW50ZXJuYWxMaW5rfSByZXNvbHZlcyBhIGZvbGRlciBsaW5rJ3Mgbm90ZSB3aXRoIOKAlCBldmVyeXRoaW5nXG4gKiB7QGxpbmsgcmVzb2x2ZUZvbGRlck5vdGVDb25maWd9IHRha2VzIGV4Y2VwdCB0aGUgYXBwLCB3aGljaCB0aGUgbGluayBhbHJlYWR5IGNhcnJpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySW50ZXJuYWxMaW5rRm9sZGVyTm90ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbnMgYSBmb2xkZXIgbm90ZSBtYXkgY2FycnkuIFNlZSB7QGxpbmsgUmVzb2x2ZUZvbGRlck5vdGVDb25maWdQYXJhbXMuZXh0ZW5zaW9uc30uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbJ21kJ11gXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb25zPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvbGRlciBub3RlIGlzIGhpZGRlbiBpbiB0aGUgZmlsZSBleHBsb3Jlci4gU2VlXG4gICAqIHtAbGluayBSZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1BhcmFtcy5pc0hpZGRlbn0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzSGlkZGVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlcmUgdGhlIG5vdGUgc2l0cyByZWxhdGl2ZSB0byBpdHMgZm9sZGVyLiBTZWUge0BsaW5rIFJlc29sdmVGb2xkZXJOb3RlQ29uZmlnUGFyYW1zLmxvY2F0aW9ufS5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEZvbGRlck5vdGVMb2NhdGlvbi5BdXRvfVxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb24/OiBGb2xkZXJOb3RlTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIE5hbWVzIHRoZSBmb2xkZXIgbm90ZSBvZiBhIGZvbGRlci4gU2VlIHtAbGluayBSZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1BhcmFtcy5yZXNvbHZlTmFtZX0uXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXIgLSBUaGUgZm9sZGVyIHdob3NlIG5vdGUgaXMgYmVpbmcgbmFtZWQuXG4gICAqIEByZXR1cm5zIFRoZSBub3RlJ3MgbmFtZS5cbiAgICogQGRlZmF1bHQgYChmb2xkZXIpID0+IGZvbGRlci5uYW1lYFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZU5hbWU/OiAoZm9sZGVyOiBURm9sZGVyKSA9PiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlbmRlckludGVybmFsTGlua30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySW50ZXJuYWxMaW5rUGFyYW1zIHtcbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBhIGNsaWNrIGhhcyByZXZlYWxlZCB0aGUgbGluaydzIGRlc3RpbmF0aW9uIGluIHRoZSBmaWxlIGV4cGxvcmVyLCBvbmNlIHRoZSBleHBsb3JlciBoYXNcbiAgICogZmluaXNoZWQgdGFraW5nIHRoZSBmb2N1cyBmb3IgaXQg4oCUIHNvIHRoaXMgaXMgd2hlcmUgYSBjYWxsZXIgbW92ZXMgdGhlIGZvY3VzIHNvbWV3aGVyZSBlbHNlLlxuICAgKlxuICAgKiBBd2FpdGVkLCBhbmQgY2FsbGVkIG9ubHkgZm9yIGEgY2xpY2sgdGhhdCByZXZlYWxzOiBhbHdheXMgZm9yIGEgZm9sZGVyIGxpbmssIGFuZCBmb3IgYSBmaWxlIGxpbmsgb25seVxuICAgKiB3aXRoIHtAbGluayBSZW5kZXJJbnRlcm5hbExpbmtQYXJhbXMuc2hvdWxkUmV2ZWFsRmlsZX0gYW5kIGEgZGVzdGluYXRpb24gdGhhdCBleGlzdHMuIFdpdGggdGhlIGZpbGVcbiAgICogZXhwbG9yZXIgZGlzYWJsZWQgaXQgaXMgc3RpbGwgY2FsbGVkLCByaWdodCBhd2F5LCBzaW5jZSB0aGVyZSBpcyB0aGVuIG5vdGhpbmcgdG8gd2FpdCBmb3IuXG4gICAqL1xuICByZWFkb25seSBhZnRlclJldmVhbD86ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBpbnRlcm5hbCBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvdyB0byBhbnN3ZXIgd2hpY2ggbm90ZSBpcyBhIGZvbGRlcidzIGZvbGRlciBub3RlLCB3aGVuIHRoZSBsaW5rIG5hbWVzIGEgRk9MREVSLlxuICAgKlxuICAgKiBPbWl0dGVkIG1lYW5zIHtAbGluayBGb2xkZXJOb3RlTG9jYXRpb24uQXV0b306IHRoZSBpbnN0YWxsZWQgYGZvbGRlci1ub3Rlc2AgcGx1Z2luJ3MgbGl2ZVxuICAgKiBjb25maWd1cmF0aW9uLCBvciBhIG5vdGUgbmFtZWQgYWZ0ZXIgaXRzIGZvbGRlciwgaW5zaWRlIGl0LCB3aGVuIHRoYXQgcGx1Z2luIGlzIGFic2VudC4gUGFzc1xuICAgKiBgeyBsb2NhdGlvbjogRm9sZGVyTm90ZUxvY2F0aW9uLk5vbmUgfWAgZm9yIGEgZm9sZGVyIGxpbmsgdGhhdCBtdXN0IG9ubHkgZXZlciByZXZlYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB7fWBcbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlck5vdGU/OiBSZW5kZXJJbnRlcm5hbExpbmtGb2xkZXJOb3RlT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZW5kZXIgdGhlIGludGVybmFsIGxpbmsgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yQWJzdHJhY3RGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgYSBGSUxFIGxpbmsgYWxzbyBoaWdobGlnaHRzIHRoYXQgZmlsZSBpbiB0aGUgZmlsZSBleHBsb3Jlciwgb24gdG9wIG9mIHRoZSBvcGVuXG4gICAqIE9ic2lkaWFuJ3Mgb3duIGxpbmsgaGFuZGxlciBwZXJmb3Jtcy5cbiAgICpcbiAgICogT3B0LWluLCB1bmxpa2UgdGhlIGZvbGRlciBicmFuY2g6IGEgZm9sZGVyIGxpbmsgaGFzIGFsd2F5cyByZXZlYWxlZCAocmV2ZWFsaW5nIHdhcyBhbGwgaXRzIGNsaWNrXG4gICAqIGNvdWxkIG1lYW4pLCB3aGVyZWFzIGEgZmlsZSBsaW5rIGhhcyBhbHdheXMgb25seSBvcGVuZWQg4oCUIHNvIHR1cm5pbmcgdGhpcyBvbiBieSBkZWZhdWx0IHdvdWxkIGNoYW5nZVxuICAgKiB3aGF0IGV2ZXJ5IGV4aXN0aW5nIGNhbGxlcidzIGxpbmsgZG9lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmV2ZWFsRmlsZT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mb0NvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5jbGFzcyBFbWJlZEJ5RXh0ZW5zaW9uTWRQYXRjaENvbXBvbmVudCBleHRlbmRzIE1vbmtleUFyb3VuZENvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVtYmVkQnlFeHRlbnNpb246IEVtYmVkUmVnaXN0cnlFbWJlZEJ5RXh0ZW5zaW9uUmVjb3JkKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3Rlck1ldGhvZFBhdGNoKHtcbiAgICAgICRvYmplY3Q6IHRoaXMuZW1iZWRCeUV4dGVuc2lvbixcbiAgICAgIG1ldGhvZE5hbWU6ICdtZCcsXG4gICAgICBwYXRjaEhhbmRsZXI6ICh7XG4gICAgICAgIGZhbGxiYWNrLFxuICAgICAgICBvcmlnaW5hbEFyZ3VtZW50czogW2NvbnRleHRdXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGlzcGxheU1vZGUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm8gaW1wbGVtZW50cyBEb21FdmVudHNIYW5kbGVyc0luZm8ge1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgaG92ZXJQb3BvdmVyKCk6IEhvdmVyUG9wb3ZlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9ob3ZlclBvcG92ZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IGhvdmVyUG9wb3Zlcihob3ZlclBvcG92ZXI6IEhvdmVyUG9wb3ZlciB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3ZlclBvcG92ZXIgPSBob3ZlclBvcG92ZXI7XG4gICAgaWYgKGhvdmVyUG9wb3ZlciAmJiB0aGlzLnpJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBob3ZlclBvcG92ZXIuaG92ZXJFbC5zZXRDc3NTdHlsZXMoe1xuICAgICAgICB6SW5kZXg6IFN0cmluZyh0aGlzLnpJbmRleClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hvdmVyUG9wb3ZlcjogSG92ZXJQb3BvdmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSB6SW5kZXg/OiBudW1iZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm9Db25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnBhdGggPSBwYXJhbXMucGF0aDtcbiAgICB0aGlzLmVsID0gcGFyYW1zLmVsO1xuXG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgd2FpdFVudGlsQ29ubmVjdGVkKHRoaXMuZWwpO1xuICAgICAgdGhpcy51cGRhdGVaSW5kZXgodGhpcy5lbCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVpJbmRleChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuekluZGV4ID0gZ2V0WkluZGV4KGVsZW1lbnQpICsgMTtcbiAgfVxufVxuXG4vKipcbiAqIFdoYXQgYSByZW5kZXJlZCBsaW5rIERPRVMgd2hlbiBpdCBpcyBjbGlja2VkLCBob3ZlcmVkLCBkcmFnZ2VkIG9yIHJpZ2h0LWNsaWNrZWQuXG4gKlxuICoge0BsaW5rIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzfSBvbmx5IHBlcmZvcm1zIHRoZSBERUxFR0FUSU9OIGhhbGYg4oCUIHdoaWNoIGVsZW1lbnQgYW5cbiAqIGV2ZW50IGxhbmRlZCBvbiwgd2hpY2ggbGluayB0ZXh0IGl0IGNhcnJpZXMsIGFuZCB3aGljaCBvZiB0aGVzZSBtZXRob2RzIHRvIGNhbGwuIFRoZSBoYWxmIGl0IGRvZXMgbm90XG4gKiBwcm92aWRlIGlzIHRoaXMgb25lLCBhbmQgT2JzaWRpYW4ga2VlcHMgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBwcml2YXRlOiB0aGUgb25seSBoYW5kbGUgb24gaXQgaXMgdGhlXG4gKiBpbnN0YW5jZSBhIGxpdmUgcHJldmlldyB2aWV3IHBhc3NlcyBpbi4ge0BsaW5rIGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3J9IHVzZWQgdG8gb2J0YWluIGl0IGJ5XG4gKiBvcGVuaW5nIGEgcmVhbCBsZWFmIG9uIGFuIGFyYml0cmFyeSBub3RlIGFuZCBpbnRlcmNlcHRpbmcgdGhhdCBjYWxsIOKAlCB3aGljaCBtdXRhdGVkIHRoZSB1c2VyJ3NcbiAqIHdvcmtzcGFjZSBvbiBFVkVSWSBjb25zdW1lcidzIGxvYWQgKGEgdGFiIG9wZW5pbmcgYW5kIGNsb3NpbmcsIHR3byBgZmlsZS1vcGVuYCBhbmQgdHdvXG4gKiBgYWN0aXZlLWxlYWYtY2hhbmdlYCBldmVudHMsIGFuIHVucmVsYXRlZCBub3RlIHJlbmRlcmVkIGluIHByZXZpZXcpLlxuICpcbiAqIFRoZXNlIGJvZGllcyBhcmUgYSBwb3J0IG9mIHRoYXQgY2xhc3MsIHNvIG5vdGhpbmcgaGFzIHRvIGJlIG9wZW5lZC4gS2VlcGluZ1xuICoge0BsaW5rIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzfSBmb3IgdGhlIGRlbGVnYXRpb24gaXMgd2hhdCBrZWVwcyBmb290bm90ZSBsaW5rcyxcbiAqIHRhZ3MsIGV4dGVybmFsIGxpbmtzLCBtb2QtY2xpY2sgYW5kIGRyYWcgYmVoYXZpbmcgZXhhY3RseSBhcyB0aGV5IGRvIGluc2lkZSBhIHJlYWwgcHJldmlldy5cbiAqL1xuY2xhc3MgTGlua0RvbUV2ZW50c0hhbmRsZXJzIGltcGxlbWVudHMgRG9tRXZlbnRzSGFuZGxlcnMge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmZvOiBEb21FdmVudHNIYW5kbGVyc0luZm8pIHt9XG5cbiAgcHVibGljIG9uRXh0ZXJuYWxMaW5rQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXRFbDogSFRNTEVsZW1lbnQsIGxpbmtUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIWlzVXJsKGxpbmtUZXh0KSkge1xuICAgICAgbmV3IE5vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLm5vdGljZXMuZmFpbGVkVG9PcGVuVXJsLCB7IHVybDogbGlua1RleHQgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGlmaWVyUGFuZVR5cGUgPSBLZXltYXAuaXNNb2RFdmVudCgkZXZlbnQpO1xuICAgIHRhcmdldEVsLndpbi5vcGVuKGxpbmtUZXh0LCB0eXBlb2YgbW9kaWZpZXJQYW5lVHlwZSA9PT0gJ2Jvb2xlYW4nID8gJycgOiBtb2RpZmllclBhbmVUeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkV4dGVybmFsTGlua1JpZ2h0Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXRFbDogSFRNTEVsZW1lbnQsIGxpbmtUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtZW51ID0gTWVudS5mb3JFdmVudCgkZXZlbnQpO1xuICAgIG1lbnUuYWRkU2VjdGlvbnMoRVhURVJOQUxfTElOS19NRU5VX1NFQ1RJT05TKTtcbiAgICBhZGRDb3B5TWVudUl0ZW0obWVudSwgdGFyZ2V0RWwpO1xuICAgIHRoaXMuaW5mby5hcHAud29ya3NwYWNlLmhhbmRsZUV4dGVybmFsTGlua0NvbnRleHRNZW51KG1lbnUsIGxpbmtUZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkludGVybmFsTGlua0NsaWNrKCRldmVudDogTW91c2VFdmVudCwgX3RhcmdldEVsOiBIVE1MRWxlbWVudCwgbGlua1RleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMuaW5mby5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChsaW5rVGV4dCwgdGhpcy5pbmZvLnBhdGgsIEtleW1hcC5pc01vZEV2ZW50KCRldmVudCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkludGVybmFsTGlua0RyYWcoJGV2ZW50OiBEcmFnRXZlbnQsIF90YXJnZXRFbDogSFRNTEVsZW1lbnQsIGxpbmtUZXh0OiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ01hbmFnZXIgPSB0aGlzLmluZm8uYXBwLmRyYWdNYW5hZ2VyO1xuICAgIGRyYWdNYW5hZ2VyLm9uRHJhZ1N0YXJ0KCRldmVudCwgZHJhZ01hbmFnZXIuZHJhZ0xpbmsoJGV2ZW50LCBsaW5rVGV4dCwgdGhpcy5pbmZvLnBhdGgsIHRpdGxlKSk7XG4gIH1cblxuICBwdWJsaWMgb25JbnRlcm5hbExpbmtNb3VzZW92ZXIoJGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXRFbDogSFRNTEVsZW1lbnQsIGxpbmtUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBgaG92ZXJQYXJlbnRgIGlzIHRoZSBpbmZvIG9iamVjdCBpdHNlbGYsIGV4YWN0bHkgYXMgT2JzaWRpYW4gcGFzc2VzIGl0cyBvd24g4oCUIHdoaWNoIGlzIHdoYXQga2VlcHNcbiAgICAvLyBgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm9gJ3MgcG9wb3ZlciB6LWluZGV4IGZpeCBpbiBwbGF5LlxuICAgIHRoaXMuaW5mby5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2hvdmVyLWxpbmsnLCB7XG4gICAgICBldmVudDogJGV2ZW50LFxuICAgICAgaG92ZXJQYXJlbnQ6IHRoaXMuaW5mbyxcbiAgICAgIGxpbmt0ZXh0OiBsaW5rVGV4dCxcbiAgICAgIHNvdXJjZTogJ3ByZXZpZXcnLFxuICAgICAgc291cmNlUGF0aDogdGhpcy5pbmZvLnBhdGgsXG4gICAgICB0YXJnZXRFbFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uSW50ZXJuYWxMaW5rUmlnaHRDbGljaygkZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldEVsOiBIVE1MRWxlbWVudCwgbGlua1RleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG1lbnUgPSBNZW51LmZvckV2ZW50KCRldmVudCk7XG4gICAgbWVudS5zZXRQYXJlbnRFbGVtZW50KHRhcmdldEVsKTtcbiAgICBtZW51LmFkZFNlY3Rpb25zKElOVEVSTkFMX0xJTktfTUVOVV9TRUNUSU9OUyk7XG4gICAgYWRkQ29weU1lbnVJdGVtKG1lbnUsIHRhcmdldEVsKTtcbiAgICB0aGlzLmluZm8uYXBwLndvcmtzcGFjZS5oYW5kbGVMaW5rQ29udGV4dE1lbnUobWVudSwgbGlua1RleHQsIHRoaXMuaW5mby5wYXRoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhZ0NsaWNrKF8kZXZlbnQ6IE1vdXNlRXZlbnQsIF90YXJnZXRFbDogSFRNTEVsZW1lbnQsIHRhZzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gYHJlZ2lzdGVyRG9tRXZlbnRzYCBoYXMgYWxyZWFkeSBjYWxsZWQgYHByZXZlbnREZWZhdWx0KClgIGZvciBhIHRhZyBjbGljay5cbiAgICB0aGlzLmluZm8uYXBwLmludGVybmFsUGx1Z2lucy5nZXRFbmFibGVkUGx1Z2luQnlJZChJbnRlcm5hbFBsdWdpbk5hbWUuR2xvYmFsU2VhcmNoKT8ub3Blbkdsb2JhbFNlYXJjaChgdGFnOiR7dGFnfWApO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBtYXJrZG93biBhbmQgZW1iZWRzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZ1bGwgcmVuZGVyLlxuICogQHJldHVybnMgVGhlIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bGwgcmVuZGVyIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZnVsbFJlbmRlcihwYXJhbXM6IEZ1bGxSZW5kZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc291cmNlUGF0aCA9IHBhcmFtcy5zb3VyY2VQYXRoID8/ICcvJztcbiAgbGV0IHNob3VsZFVubG9hZENvbXBvbmVudCA9IGZhbHNlO1xuICBsZXQgY29tcG9uZW50OiBDb21wb25lbnQ7XG4gIGlmIChwYXJhbXMuY29tcG9uZW50KSB7XG4gICAgY29tcG9uZW50ID0gcGFyYW1zLmNvbXBvbmVudDtcbiAgfSBlbHNlIHtcbiAgICBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50KCk7XG4gICAgY29tcG9uZW50LmxvYWQoKTtcbiAgICBzaG91bGRVbmxvYWRDb21wb25lbnQgPSB0cnVlO1xuICB9XG5cbiAgdXNpbmcgXyA9IGNvbXBvbmVudC5hZGRDaGlsZChuZXcgRW1iZWRCeUV4dGVuc2lvbk1kUGF0Y2hDb21wb25lbnQocGFyYW1zLmFwcC5lbWJlZFJlZ2lzdHJ5LmVtYmVkQnlFeHRlbnNpb24pKTtcblxuICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlcihwYXJhbXMuYXBwLCBwYXJhbXMubWFya2Rvd24sIHBhcmFtcy5lbCwgc291cmNlUGF0aCwgY29tcG9uZW50KTtcblxuICBpZiAoc2hvdWxkVW5sb2FkQ29tcG9uZW50KSB7XG4gICAgY29tcG9uZW50LnVubG9hZCgpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zaG91bGRSZWdpc3RlckxpbmtIYW5kbGVycykge1xuICAgIHJlZ2lzdGVyTGlua0hhbmRsZXJzKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxSZWdpc3RlckxpbmtIYW5kbGVyc1BhcmFtcz4oe1xuICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgZWw6IHBhcmFtcy5lbCxcbiAgICAgIHNvdXJjZVBhdGg6IHBhcmFtcy5zb3VyY2VQYXRoXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgTWFya2Rvd24gdG8gSFRNTC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjb252ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIEhUTUwgc3RyaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFya2Rvd25Ub0h0bWwocGFyYW1zOiBNYXJrZG93blRvSHRtbFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbWFya2Rvd24sXG4gICAgc291cmNlUGF0aFxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50KCk7XG4gIGNvbXBvbmVudC5sb2FkKCk7XG4gIGNvbnN0IHJlbmRlckRpdiA9IGNyZWF0ZURpdigpO1xuICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlcihhcHAsIG1hcmtkb3duLCByZW5kZXJEaXYsIHNvdXJjZVBhdGggPz8gJycsIGNvbXBvbmVudCk7XG4gIGNvbnN0IGh0bWwgPSByZW5kZXJEaXYuaW5uZXJIVE1MO1xuICBjb21wb25lbnQudW5sb2FkKCk7XG4gIHJldHVybiBodG1sO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBsaW5rIGhhbmRsZXJzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlZ2lzdGVyaW5nIGxpbmsgaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckxpbmtIYW5kbGVycyhwYXJhbXM6IFJlZ2lzdGVyTGlua0hhbmRsZXJzUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZWwsXG4gICAgc291cmNlUGF0aFxuICB9ID0gcGFyYW1zO1xuICBNYXJrZG93blByZXZpZXdSZW5kZXJlci5yZWdpc3RlckRvbUV2ZW50cyhcbiAgICBlbCxcbiAgICBuZXcgTGlua0RvbUV2ZW50c0hhbmRsZXJzKFxuICAgICAgbmV3IEZpeGVkWkluZGV4RG9tRXZlbnRzSGFuZGxlcnNJbmZvKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBlbCxcbiAgICAgICAgcGF0aDogc291cmNlUGF0aCA/PyAnJ1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBleHRlcm5hbCBsaW5rLlxuICogQHJldHVybnMgVGhlIEhUTUxBbmNob3JFbGVtZW50IGNvbnRhaW5pbmcgdGhlIHJlbmRlcmVkIGV4dGVybmFsIGxpbmsuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJFeHRlcm5hbExpbmsocGFyYW1zOiBSZW5kZXJFeHRlcm5hbExpbmtQYXJhbXMpOiBQcm9taXNlPEhUTUxBbmNob3JFbGVtZW50PiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgdXJsXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGRpc3BsYXlUZXh0ID0gcGFyYW1zLmRpc3BsYXlUZXh0ID8/IHVybDtcbiAgY29uc3Qgd3JhcHBlckVsID0gY3JlYXRlU3BhbigpO1xuICBhd2FpdCBmdWxsUmVuZGVyKHtcbiAgICBhcHAsXG4gICAgZWw6IHdyYXBwZXJFbCxcbiAgICBtYXJrZG93bjogYFske2Rpc3BsYXlUZXh0fV0oJHt1cmx9KWBcbiAgfSk7XG4gIGNvbnN0IGFFbCA9IHdyYXBwZXJFbC5maW5kKCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gIHJlZ2lzdGVyTGlua0hhbmRsZXJzKHtcbiAgICBhcHAsXG4gICAgZWw6IGFFbFxuICB9KTtcbiAgcmV0dXJuIGFFbDtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGludGVybmFsIGxpbmsuXG4gKlxuICogV2hhdCBjbGlja2luZyB0aGUgcmVuZGVyZWQgbGluayBkb2VzIGRlcGVuZHMgb24gd2hhdCBpdCBuYW1lczpcbiAqXG4gKiAtIEEgRklMRSBpcyBvcGVuZWQgYnkgT2JzaWRpYW4ncyBvd24gbGluayBoYW5kbGVyIOKAlCBhbmQsIHdpdGhcbiAqICAge0BsaW5rIFJlbmRlckludGVybmFsTGlua1BhcmFtcy5zaG91bGRSZXZlYWxGaWxlfSwgYWRkaXRpb25hbGx5IHJldmVhbGVkIGluIHRoZSBmaWxlIGV4cGxvcmVyLlxuICogLSBBIEZPTERFUiBjYW5ub3QgYmUgb3BlbmVkLCBzbyBpdHMgRk9MREVSIE5PVEUgaXMg4oCUIHRoZSBub3RlIHdob3NlIHByb3BlcnRpZXMgZGVzY3JpYmUgdGhlIGZvbGRlclxuICogICBpdHNlbGYsIHJlc29sdmVkIHRocm91Z2gge0BsaW5rIHJlc29sdmVGb2xkZXJOb3RlfSAoYnkgZGVmYXVsdCBmcm9tIHRoZSBpbnN0YWxsZWQgYGZvbGRlci1ub3Rlc2BcbiAqICAgcGx1Z2luJ3MgbGl2ZSBjb25maWd1cmF0aW9uKS4gVGhlIHJldmVhbCBsYW5kcyBvbiB0aGF0IG5vdGUsIHVubGVzcyB0aGUgbm90ZSBpcyBoaWRkZW4gaW4gdGhlXG4gKiAgIGV4cGxvcmVyLCBpbiB3aGljaCBjYXNlIGl0IGxhbmRzIG9uIHRoZSBmb2xkZXIg4oCUIHJldmVhbGluZyBhIGhpZGRlbiBub3RlIHdvdWxkIGhpZ2hsaWdodCBub3RoaW5nLlxuICogICBBIGZvbGRlciB3aXRoIE5PIGZvbGRlciBub3RlIHJldmVhbHMgdGhlIGZvbGRlciBhbmQgb3BlbnMgbm90aGluZzogbm90aGluZyBoZXJlIGV2ZXIgY3JlYXRlcyBhIG5vdGUuXG4gKlxuICogRXZlcnl0aGluZyBpcyByZXNvbHZlZCBhdCBDTElDSyB0aW1lIHJhdGhlciB0aGFuIGF0IHJlbmRlciB0aW1lLCBkZWxpYmVyYXRlbHk6IGEgcmVuZGVyZWQgbGluayBvdXRsaXZlc1xuICogdGhlIG9wZXJhdGlvbiB0aGF0IHByb2R1Y2VkIGl0LCBzbyBhIGRlc3RpbmF0aW9uIHJlbmFtZWQgaW4gYmV0d2VlbiBzdGlsbCByZXZlYWxzIHRoZSByaWdodCBpdGVtLCBhbmQgYVxuICogZm9sZGVyIG5vdGUgd3JpdHRlbiBhZnRlciB0aGUgbGluayBhcHBlYXJlZCBpcyBzdGlsbCBmb3VuZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgaW50ZXJuYWwgbGluay5cbiAqIEByZXR1cm5zIFRoZSBIVE1MQW5jaG9yRWxlbWVudCBjb250YWluaW5nIHRoZSByZW5kZXJlZCBpbnRlcm5hbCBsaW5rLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVySW50ZXJuYWxMaW5rKHBhcmFtczogUmVuZGVySW50ZXJuYWxMaW5rUGFyYW1zKTogUHJvbWlzZTxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICBjb25zdCB7XG4gICAgYWZ0ZXJSZXZlYWwsXG4gICAgYXBwLFxuICAgIGZvbGRlck5vdGUsXG4gICAgcGF0aE9yQWJzdHJhY3RGaWxlLFxuICAgIHNob3VsZFJldmVhbEZpbGVcbiAgfSA9IHBhcmFtcztcblxuICAvLyBBIERPTSBsaXN0ZW5lciBjYW5ub3QgYXdhaXQsIHNvIHRoZSByZXZlYWwsIGFuZCB0aGUgaG9vayBvcmRlcmVkIGFmdGVyIGl0LCBydW4gZGV0YWNoZWQuXG4gIGZ1bmN0aW9uIHJldmVhbChhYnN0cmFjdEZpbGVUb1JldmVhbDogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICAgIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHJldmVhbEluRmlsZUV4cGxvcmVyKHsgYWJzdHJhY3RGaWxlOiBhYnN0cmFjdEZpbGVUb1JldmVhbCwgYXBwIH0pO1xuICAgICAgYXdhaXQgYWZ0ZXJSZXZlYWw/LigpO1xuICAgIH0pO1xuICB9XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aE9yQWJzdHJhY3RGaWxlIH0pO1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckFic3RyYWN0RmlsZSk7XG4gIGNvbnN0IGRpc3BsYXlUZXh0ID0gcGFyYW1zLmRpc3BsYXlUZXh0ID8/IHBhdGg7XG4gIGlmIChpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKCdhJywgeyB0ZXh0OiBkaXNwbGF5VGV4dCB9LCAoYUVsKSA9PiB7XG4gICAgICBhRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoJGV2ZW50KSA9PiB7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjb25maWcgPSByZXNvbHZlRm9sZGVyTm90ZUNvbmZpZyh7IGFwcCwgLi4uZm9sZGVyTm90ZSB9KTtcbiAgICAgICAgY29uc3QgZm9sZGVyTm90ZUZpbGUgPSByZXNvbHZlRm9sZGVyTm90ZSh7IGFwcCwgY29uZmlnLCBmb2xkZXI6IGFic3RyYWN0RmlsZSB9KTtcbiAgICAgICAgcmV2ZWFsKGZvbGRlck5vdGVGaWxlICYmICFjb25maWcuaXNIaWRkZW4gPyBmb2xkZXJOb3RlRmlsZSA6IGFic3RyYWN0RmlsZSk7XG4gICAgICAgIGlmIChmb2xkZXJOb3RlRmlsZSkge1xuICAgICAgICAgIC8vIEEgRE9NIGxpc3RlbmVyIGNhbm5vdCBhd2FpdCwgYW5kIHRoZSBvcGVuIGhhcyB0byBvdXRsaXZlIHRoaXMgaGFuZGxlcjogaXQgc2V0dGxlcyBmaXJzdCwgZm9yXG4gICAgICAgICAgLy8gdGhlIGNsaWNrIHRoYXQgbGFuZHMgcmlnaHQgYXMgYW4gb3BlcmF0aW9uIGZpbmlzaGVzIHdyaXRpbmcuXG4gICAgICAgICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gb3BlbkFmdGVyU2V0dGxpbmcoYXBwLCBmb2xkZXJOb3RlRmlsZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHdyYXBwZXJFbCA9IGNyZWF0ZVNwYW4oKTtcbiAgYXdhaXQgZnVsbFJlbmRlcih7XG4gICAgYXBwLFxuICAgIGVsOiB3cmFwcGVyRWwsXG4gICAgbWFya2Rvd246IGBbWyR7cGF0aH18JHtkaXNwbGF5VGV4dH1dXWBcbiAgfSk7XG4gIGNvbnN0IGFFbCA9IHdyYXBwZXJFbC5maW5kKCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gIHJlZ2lzdGVyTGlua0hhbmRsZXJzKHtcbiAgICBhcHAsXG4gICAgZWw6IGFFbFxuICB9KTtcbiAgaWYgKHNob3VsZFJldmVhbEZpbGUgPz8gZmFsc2UpIHtcbiAgICBhRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAvLyBMYXllcmVkIE9OIFRPUCBvZiBPYnNpZGlhbidzIG93biBoYW5kbGVyIOKAlCBubyBgcHJldmVudERlZmF1bHRgLCBzbyB0aGUgb3BlbiBpcyB1bnRvdWNoZWQuIEEgcGF0aFxuICAgICAgLy8gdGhhdCByZXNvbHZlcyB0byBub3RoaW5nIGdldHMgbm8gcmV2ZWFsOiBhbiB1bnJlc29sdmVkIGxpbmsgaGFzIG5vdGhpbmcgdG8gcmV2ZWFsLCBhbmQgY2xpY2tpbmdcbiAgICAgIC8vIG9uZSBDUkVBVEVTIHRoZSBub3RlIGl0IG5hbWVzLlxuICAgICAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogcGF0aE9yQWJzdHJhY3RGaWxlIH0pO1xuICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICByZXZlYWwoZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGFFbDtcbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBgY2xpcGJvYXJkYC1zZWN0aW9uIENvcHkgaXRlbSBldmVyeSBsaW5rIGNvbnRleHQgbWVudSBjYXJyaWVzLCBjb3B5aW5nIHRoZSBsaW5rJ3MgRElTUExBWVxuICogdGV4dCDigJQgd2hpY2ggaXMgd2hhdCBPYnNpZGlhbidzIG93biBtZW51IGNvcGllcywgbm90IHRoZSB0YXJnZXQgcGF0aC5cbiAqXG4gKiBAcGFyYW0gbWVudSAtIFRoZSBtZW51IHRvIGFkZCB0aGUgaXRlbSB0by5cbiAqIEBwYXJhbSB0YXJnZXRFbCAtIFRoZSBsaW5rIGVsZW1lbnQgdGhlIG1lbnUgd2FzIG9wZW5lZCBvbi5cbiAqL1xuZnVuY3Rpb24gYWRkQ29weU1lbnVJdGVtKG1lbnU6IE1lbnUsIHRhcmdldEVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICBpdGVtXG4gICAgICAuc2V0U2VjdGlvbignY2xpcGJvYXJkJylcbiAgICAgIC5zZXRUaXRsZSh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLm1lbnUuY29weSkpXG4gICAgICAuc2V0SWNvbignbHVjaWRlLWNvcHknKVxuICAgICAgLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0YXJnZXRFbC53aW4ubmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGFyZ2V0RWwuZ2V0VGV4dCgpKSk7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogT3BlbnMgYSBmaWxlIGluIHRoZSBhY3RpdmUgbGVhZiwgb25jZSB0aGUgdmF1bHQgaGFzIHNldHRsZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIG9wZW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGZpbGUgaXMgb3Blbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gb3BlbkFmdGVyU2V0dGxpbmcoYXBwOiBBcHAsIGZpbGU6IFRGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHNsZWVwKHsgbWlsbGlzZWNvbmRzOiBERUxBWV9CRUZPUkVfT1BFTl9JTl9NSUxMSVNFQ09ORFMgfSk7XG4gIGF3YWl0IGFwcC53b3Jrc3BhY2UuZ2V0TGVhZigpLm9wZW5GaWxlKGZpbGUsIHsgYWN0aXZlOiB0cnVlIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQkEsbUJBR087QUFDUCwwQkFHTztBQUNQLDBCQUE0QztBQUM1QyxpQkFBc0I7QUFDdEIsNkJBQW1DO0FBQ25DLHFCQUFrQjtBQUNsQixzQkFRTztB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
|
|
@@ -195,7 +195,7 @@ var import_file_system = require('./file-system.cjs');
|
|
|
195
195
|
var import_frontmatter_link_cache_with_offsets = require('./frontmatter-link-cache-with-offsets.cjs');
|
|
196
196
|
var import_frontmatter = require('./frontmatter.cjs');
|
|
197
197
|
var import_i18n = require('./i18n/i18n.cjs');
|
|
198
|
-
var
|
|
198
|
+
var import_obsidian_lib_state = require('./obsidian-lib-state.cjs');
|
|
199
199
|
var import_parse_link = require('./parse-link.cjs');
|
|
200
200
|
var import_plugin_api = require('./plugin/plugin-api.cjs');
|
|
201
201
|
var import_reference = require('./reference.cjs');
|
|
@@ -298,7 +298,7 @@ async function getBacklinksForFileSafe(params) {
|
|
|
298
298
|
}
|
|
299
299
|
return true;
|
|
300
300
|
},
|
|
301
|
-
operationName: (0, import_i18n.t)(($) => $.
|
|
301
|
+
operationName: (0, import_i18n.t)(($) => $.obsidianLib.metadataCache.getBacklinksForFilePath, { filePath: (0, import_file_system.getPath)(app, pathOrFile) }),
|
|
302
302
|
pluginNoticeComponent: null,
|
|
303
303
|
retryOptions: options,
|
|
304
304
|
shouldShowTimeoutNotice: options.shouldShowTimeoutNotice ?? true
|
|
@@ -501,7 +501,7 @@ function findAdvancedMetadataCacheBacklinksApi() {
|
|
|
501
501
|
});
|
|
502
502
|
}
|
|
503
503
|
function getRegisteredFilesCounts() {
|
|
504
|
-
return (0,
|
|
504
|
+
return (0, import_obsidian_lib_state.getObsidianLibState)("registeredFilesCounts", /* @__PURE__ */ new Map()).value;
|
|
505
505
|
}
|
|
506
506
|
function isNullableBacklinksDict(value) {
|
|
507
507
|
return value === null || typeof value === "object" && Reflect.get(value, "data") instanceof Map && typeof Reflect.get(value, "get") === "function" && typeof Reflect.get(value, "keys") === "function";
|
|
@@ -562,4 +562,4 @@ function toParsedCachedMetadataEx(params) {
|
|
|
562
562
|
unregisterFileCacheForNonExistingFile,
|
|
563
563
|
unregisterFiles
|
|
564
564
|
});
|
|
565
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRhZGF0YS1jYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcGlDb250cmFjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hcGktY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQXJndW1lbnRzU2NoZW1hLFxuICBjcmVhdGVUeXBlR3VhcmRTY2hlbWFcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQgeyBDYWxsYmFja0Rpc3Bvc2FibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGdldE5lc3RlZFByb3BlcnR5VmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7XG4gIEN1c3RvbUFycmF5RGljdEltcGwsXG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGUsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRGcm9udG1hdHRlciB9IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSxcbiAgUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0cyxcbiAgUGFyc2VMaW5rUmVmZXJlbmNlXG59IGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5cbmltcG9ydCB7IHJldHJ5V2l0aFRpbWVvdXROb3RpY2UgfSBmcm9tICcuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmltcG9ydCB7IGdldEluZGV4ZWRCYWNrbGlua3NGb3JGaWxlIH0gZnJvbSAnLi9iYWNrbGluay1pbmRleC50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc1BhdGhPckZpbGVcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1zdGF0ZS50cyc7XG5pbXBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyTGlua3MsXG4gIHBhcnNlTGlua3MsXG4gIHRvUGFyc2VMaW5rUmVmZXJlbmNlXG59IGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5pbXBvcnQgeyBmaW5kUGx1Z2luQXBpIH0gZnJvbSAnLi9wbHVnaW4vcGx1Z2luLWFwaS50cyc7XG5pbXBvcnQgeyBzb3J0UmVmZXJlbmNlcyB9IGZyb20gJy4vcmVmZXJlbmNlLnRzJztcbmltcG9ydCB7XG4gIHJlYWRTYWZlLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL3ZhdWx0LnRzJztcblxuLyoqXG4gKiBBIHBhcnNpbmcgZmVhdHVyZSB0aGF0IHdhcyBhcHBsaWVkIHdoZW4gY29tcHV0aW5nIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LlxuICovXG5leHBvcnQgZW51bSBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gdGhlIG5vdGUgY29udGVudCBib2R5LlxuICAgKi9cbiAgRXh0ZXJuYWxMaW5rcyA9ICdFeHRlcm5hbExpbmtzJyxcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHNpbmdsZS1saW5rIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gJ0Zyb250bWF0dGVyRXh0ZXJuYWxMaW5rcycsXG5cbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9ICdNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzJyxcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMsIHdoaWNoIE9ic2lkaWFuIGRvZXMgbm90IG5hdGl2ZWx5IGNhY2hlLlxuICAgKi9cbiAgTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MgPSAnTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MnLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIG5hdGl2ZSBtZXRhZGF0YSBwYXJzaW5nIChpbnRlcm5hbCBsaW5rcywgZW1iZWRzLCBmcm9udG1hdHRlciBsaW5rcykuXG4gICAqL1xuICBOYXRpdmUgPSAnTmF0aXZlJ1xufVxuXG4vKipcbiAqIEFuIGV4dGVuZGVkIHtAbGluayBDYWNoZWRNZXRhZGF0YX0gdGhhdCByZWNvcmRzIHdoaWNoIHBhcnNpbmcge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlfXMgd2VyZVxuICogYXBwbGllZCAodmlhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4LmZlYXR1cmVzfSkgYW5kIGNhcnJpZXMgdGhlIHJlc3VsdGluZyBleHRlcm5hbCBsaW5rcy4gRWFjaCBsaW5rc1xuICogYXJyYXkgaXMgcG9wdWxhdGVkIG9ubHkgd2hlbiBpdHMgY29ycmVzcG9uZGluZyBmZWF0dXJlIGlzIHByZXNlbnQgaW4ge0BsaW5rIENhY2hlZE1ldGFkYXRhRXguZmVhdHVyZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlZE1ldGFkYXRhRXggZXh0ZW5kcyBDYWNoZWRNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gdGhlIG5vdGUgY29udGVudCBib2R5LiBQb3B1bGF0ZWQgb25seSB3aGVuXG4gICAqIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5FeHRlcm5hbExpbmtzfSBpcyBhcHBsaWVkLlxuICAgKi9cbiAgZXh0ZXJuYWxMaW5rcz86IFBhcnNlTGlua1JlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyc2luZyBmZWF0dXJlcyB0aGF0IHdlcmUgYXBwbGllZCB3aGVuIGNvbXB1dGluZyB0aGlzIGNhY2hlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZXM6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlW107XG5cbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBzaW5nbGUtbGluayAoc2luZ2xlLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy4gUG9wdWxhdGVkIG9ubHlcbiAgICogd2hlbiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzfSBpcyBhcHBsaWVkLlxuICAgKi9cbiAgZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy4gUG9wdWxhdGVkIG9ubHkgd2hlblxuICAgKiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rc30gaXMgYXBwbGllZC5cbiAgICovXG4gIG11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVdpdGhPZmZzZXRzW107XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuIFBvcHVsYXRlZCBvbmx5IHdoZW5cbiAgICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzfSBpcyBhcHBsaWVkLlxuICAgKi9cbiAgbXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M/OiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVdpdGhPZmZzZXRzW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZU9wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgdGltZW91dCBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVQYXJhbXMgZXh0ZW5kcyBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q2FjaGVTYWZlfS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0Q2FjaGVTYWZlT3B0aW9ucyA9IFBhcnNlQ2FjaGVPcHRpb25zO1xuXG4vKipcbiAqIFBhcmFtcyBmb3Ige0BsaW5rIGdldExpbmtzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRMaW5rc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY2FjaGVkIG1ldGFkYXRhIHRvIHJldHJpZXZlIHRoZSBsaW5rcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGU6IENhY2hlZE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGVtYmVkcyAoYGNhY2hlLmVtYmVkc2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVFbWJlZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHRoZSBub3RlIGJvZHkuIFJlcXVpcmVzIHRoZSBjYWNoZSB0byBiZSBhXG4gICAqIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHNpbmdsZS1saW5rIChzaW5nbGUtdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXJcbiAgICogdmFsdWVzLiBSZXF1aXJlcyB0aGUgY2FjaGUgdG8gYmUgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGZyb250bWF0dGVyIGxpbmtzIChgY2FjaGUuZnJvbnRtYXR0ZXJMaW5rc2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMsXG4gICAqIGkuZS4gdGhlIG9mZnNldC1jYXJyeWluZyBmcm9udG1hdHRlciBleHRlcm5hbCBsaW5rcyAobmFycm93ZWQgdmlhXG4gICAqIHtAbGluayBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHN9KS4gUmVxdWlyZXMgdGhlIGNhY2hlIHRvIGJlIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgaW50ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKiBSZXF1aXJlcyB0aGUgY2FjaGUgdG8gYmUgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgcmVmZXJlbmNlIGxpbmtzIChgY2FjaGUubGlua3NgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlUmVmZXJlbmNlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHBhcnNpbmcgcGVyZm9ybWVkIGJ5IHtAbGluayBnZXRDYWNoZVNhZmV9IGFuZCB7QGxpbmsgcGFyc2VNZXRhZGF0YX0gYmV5b25kIE9ic2lkaWFuJ3NcbiAqIG5hdGl2ZSBtZXRhZGF0YSBwYXJzaW5nLiBFYWNoIG9wdGlvbiBpcyBvcHQtaW47IGVuYWJsaW5nIGl0IGFkZHMgdGhlIGNvcnJlc3BvbmRpbmdcbiAqIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZX0gYW5kIHBvcHVsYXRlcyB0aGUgbWF0Y2hpbmcgbGlua3MgYXJyYXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VDYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBwYXJzZSB0aGUgZXh0ZXJuYWwgbGlua3MgZnJvbSB0aGUgbm90ZSBjb250ZW50IGJvZHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFBhcnNlRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcGFyc2UgdGhlIGV4dGVybmFsIGxpbmtzIGZyb20gc2luZ2xlLWxpbmsgKHNpbmdsZS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFBhcnNlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJzZSB0aGUgZXh0ZXJuYWwgbGlua3MgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcGFyc2UgdGhlIGludGVybmFsIGxpbmtzIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcGFyc2VNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnNlTWV0YWRhdGFPcHRpb25zID0gUGFyc2VDYWNoZU9wdGlvbnM7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIGNhY2hlIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGU6IENhY2hlZE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIHRvIHJlZ2lzdGVyIHRoZSBmaWxlIGNhY2hlIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogVGhlIHNsaWNlIG9mIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAncyBwdWJsaXNoZWQgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBkZWNsYXJlZCBoZXJlIHJhdGhlciB0aGFuIGltcG9ydGVkLFxuICogYmVjYXVzZSB0aGF0IHBsdWdpbiBpcyBub3QgYSBkZXBlbmRlbmN5IChydWxlIEw5IGluIGBBR0VOVFMubWRgKS4gSXRzIGBhcGkuZC50c2AgZGVjbGFyZXMgdGhlIHdob2xlIG9mIGl0LlxuICovXG5pbnRlcmZhY2UgQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpIHtcbiAgLyoqXG4gICAqIEFuc3dlcnMgZnJvbSB0aGUgcGx1Z2luJ3MgYmFja2xpbmsgY2FjaGUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gICAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MsIG9yIGBudWxsYCB3aGlsZSB0aGUgcGx1Z2luJ3MgYEJhY2tsaW5rc2AgbW9kdWxlIGlzIG9mZi5cbiAgICovXG4gIGdldEJhY2tsaW5rc0ZvckZpbGU6IChwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKSA9PiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgZnJvbSB0aGUgcGx1Z2luJ3MgYmFja2xpbmsgY2FjaGUgb25jZSB0aGUgcGVuZGluZyBmaWxlIGNoYW5nZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYmFja2xpbmtzLCBvciB0byBgbnVsbGAgd2hpbGUgdGhlIHBsdWdpbidzIGBCYWNrbGlua3NgXG4gICAqICAgbW9kdWxlIGlzIG9mZi5cbiAgICovXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlOiAocGF0aE9yRmlsZTogUGF0aE9yRmlsZSkgPT4gUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB8IG51bGw+O1xufVxuXG4vKipcbiAqIEEgc2VsZWN0b3IgZm9yIGEgZmVhdHVyZS1nYXRlZCBsaW5rIGNhdGVnb3J5IGluIHtAbGluayBnZXRMaW5rc30uXG4gKi9cbmludGVyZmFjZSBGZWF0dXJlTGlua1NlbGVjdG9yIHtcbiAgLyoqXG4gICAqIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGxpbmsgY2F0ZWdvcnksIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmVhdHVyZSB0aGF0IG11c3QgYmUgcHJlc2VudCBpbiB0aGUgY2FjaGUgZm9yIHRoaXMgY2F0ZWdvcnkgdG8gYmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmU7XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGxpbmtzIGZvciB0aGlzIGNhdGVnb3J5IGZyb20gdGhlIGNhY2hlLlxuICAgKi9cbiAgc2VsZWN0OiAoY2FjaGU6IENhY2hlZE1ldGFkYXRhRXgpID0+IFJlZmVyZW5jZVtdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhpcyBjYXRlZ29yeS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4fS5cbiAqL1xuaW50ZXJmYWNlIFRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcGxhaW4gY2FjaGVkIG1ldGFkYXRhIHRvIHdyYXAuXG4gICAqL1xuICByZWFkb25seSBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBub3RlIGNvbnRlbnQgdGhlIG9mZnNldHMgaW5kZXggaW50bywgdXNlZCBmb3IgYm9keSBleHRlcm5hbC1saW5rIHBhcnNpbmcuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGxpbmtzIHRvIHBhcnNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogUGFyc2VDYWNoZU9wdGlvbnM7XG59XG5cbi8qKlxuICogVGhlIHBsdWdpbiBpZCBvZiB0aGUgYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCBwbHVnaW4sIHRoZSBzdWNjZXNzb3IgdG8gYEJhY2tsaW5rIENhY2hlYC5cbiAqXG4gKiBVc2VkIGJ5IHtAbGluayBoYXNCYWNrbGlua0NhY2hlUGx1Z2lufSwgYW5kIGFzIHRoZSBwcm92aWRlciBpZCB1bmRlciB3aGljaCB7QGxpbmsgZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aH0gYW5kIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZX0gbG9vayB1cCB0aGUgcGx1Z2luJ3MgcHVibGlzaGVkIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRCA9ICdhZHZhbmNlZC1tZXRhZGF0YS1jYWNoZSc7XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IHZlcnNpb25zIG9mIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAncyBBUEkgdGhpcyBtb2R1bGUgY29tcGlsZWQgYWdhaW5zdC4gYDEuMy4wYCBpcyB0aGUgZmlyc3QgdG8gY2FycnkgdGhlIHR3byBiYWNrbGluayBtZXRob2RzLlxuICovXG5jb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfQVBJX1ZFUlNJT05fUkFOR0UgPSAnXjEuMy4wJztcblxuLyoqXG4gKiBUaGUgc2NoZW1hcyBvZiBhIGJhY2tsaW5rIG1ldGhvZCdzIHBheWxvYWRzOiB0aGUgb25lIHBhdGgtb3ItZmlsZSBhcmd1bWVudCwgYW5kIHRoZSBiYWNrbGlua3Mgb3IgYG51bGxgLlxuICpcbiAqIEEgY29weSBvZiB0aGUgYGdldEJhY2tsaW5rc0ZvckZpbGVgIGFuZCBgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmVgIGVudHJpZXMgb2YgYEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0FQSV9DT05UUkFDVGAsIHdoaWNoIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAgc2hpcHMgYXNcbiAqIGl0cyByb290IGBhcGktY29udHJhY3QudHNgIGFuZCBwdWJsaXNoZXMuIEtlZXAgdGhlIGd1YXJkcyBpbiBhZ3JlZW1lbnQgd2l0aCB0aGF0IGZpbGUsIHNvIHRoZSBwcm92aWRlciBhbmQgdGhpcyBjb25zdW1lciBjaGVjayBvbmUgZGVmaW5pdGlvbi5cbiAqL1xuY29uc3QgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX01FVEhPRF9DT05UUkFDVCA9IHtcbiAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGF0aE9yRmlsZTogUGF0aE9yRmlsZV0+KFt7IGV4cGVjdGVkOiAnYSBwYXRoIG9yIGEgZmlsZScsIHR5cGVHdWFyZDogaXNQYXRoT3JGaWxlIH1dKSxcbiAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2EgYmFja2xpbmtzIGRpY3Rpb25hcnkgb3IgbnVsbCcsIHR5cGVHdWFyZDogaXNOdWxsYWJsZUJhY2tsaW5rc0RpY3QgfSlcbn07XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IG9mIHRoZSBtZW1iZXJzIG9mIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAncyBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIHNvIGEgcmVjb3JkIHRoYXQgbGFja3MgZWl0aGVyIGlzIHBhc3NlZCBvdmVyLCBhbmQgYSBwYXlsb2FkIHRoYXQgYnJlYWtzIGl0cyBzaWduYXR1cmUgaXMgcmVwb3J0ZWQgd2hpbGUgdGhlIGBvYnNpZGlhbi1saWI6dmFsaWRhdGUtcGx1Z2luLWFwaS1wYXlsb2Fkc2AgZGVidWcgc3dpdGNoIGlzIG9uLlxuICovXG5jb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfQVBJX0NPTlRSQUNUOiBBcGlDb250cmFjdDxBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGk+ID0ge1xuICBnZXRCYWNrbGlua3NGb3JGaWxlOiBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfTUVUSE9EX0NPTlRSQUNULFxuICBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZTogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX01FVEhPRF9DT05UUkFDVFxufTtcblxuLyoqXG4gKiBUaGUgcGx1Z2luIGlkIG9mIHRoZSByZXRpcmVkIGBCYWNrbGluayBDYWNoZWAgcGx1Z2luLCBzdXBlcnNlZGVkIGJ5IHtAbGluayBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9QTFVHSU5fSUR9LlxuICpcbiAqIFN0aWxsIHJlY29nbml6ZWQgYnkge0BsaW5rIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW59LCBkZWxpYmVyYXRlbHkuIFJlbW92aW5nIGEgcGx1Z2luIGZyb20gdGhlIGNvbW11bml0eSByZWdpc3RyeSBibG9ja3MgbmV3IGluc3RhbGxzOyBpdCB1bmluc3RhbGxzIG5vdGhpbmcsIHNvIGV2ZXJ5IGV4aXN0aW5nIHVzZXIga2VlcHMgaXQgdW50aWwgdGhleSBtaWdyYXRlIGJ5IGhhbmQuXG4gKlxuICogSXQgbWF5IGJlIGRyb3BwZWQgd2hlbiBhbGwgdGhyZWUgb2YgdGhlIGZvbGxvd2luZyBob2xkLCBhbmQgbm90IGJlZm9yZTogYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCBpcyBsaXN0ZWQgaW4gdGhlIGNvbW11bml0eSByZWdpc3RyeSwgc28gbWlncmF0aW5nIGlzIHBvc3NpYmxlIGF0IGFsbDsgdGhlIGZpbmFsIGBCYWNrbGluayBDYWNoZWAgaGFuZG92ZXIgcmVsZWFzZSBoYXMgYmVlbiBvdXQgZm9yIGF0IGxlYXN0IHR3ZWx2ZSBtb250aHM7IGFuZCB0aGlzIGxpYnJhcnkgaXMgY3V0dGluZyBhIG1ham9yIHJlbGVhc2UgYW55d2F5LCBiZWNhdXNlIGRyb3BwaW5nIHRoZSBpZCBzaWxlbnRseSB1bi1nYXRlcyBjYW52YXMgbGluayBoYW5kbGluZyBmb3IgYW55b25lIHdobyBoYXMgbm90IG1pZ3JhdGVkLiBUaGVyZSBpcyBubyBjb3N0IHByZXNzdXJlIHRvIGRyb3AgaXQgZWFybGllciAtIHJlY29nbml6aW5nIGEgZGVhZCBpZCBpcyBvbmUgc3RyaW5nIGNvbXBhcmlzb24gb24gYSBwYXRoIHRoYXQgYWxyZWFkeSByZWFkcyBhIHBsdWdpbiByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tMSU5LX0NBQ0hFX1BMVUdJTl9JRCA9ICdiYWNrbGluay1jYWNoZSc7XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeSBmb3IgYWxsIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGFwcC5tZXRhZGF0YUNhY2hlLm9uQ2xlYW5DYWNoZShyZXNvbHZlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBvciBwYXRoLlxuICogTk9URTogVGhlIGZpbGUgbWF5IGJlIG5vbi1leGlzdGVudC5cbiAqXG4gKiBXaGVuIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAgcHVibGlzaGVzIGl0cyBiYWNrbGlua3MgQVBJIGFuZCBpdHMgYEJhY2tsaW5rc2AgbW9kdWxlIGlzIG9uLCBpdHMgY2FjaGUgYW5zd2Vycy5cbiAqIE90aGVyd2lzZSB0aGUgYW5zd2VyIGNvbWVzIGZyb20gYSBiYWNrbGluayBpbmRleCB3aG9zZSBjb3N0IGlzIHByb3BvcnRpb25hbCB0byB0aGUgY2FuZGlkYXRlIG5vdGVzIHJhdGhlciB0aGFuXG4gKiB0byBldmVyeSByZWZlcmVuY2UgaW4gdGhlIHZhdWx0LCBhbmQgd2hpY2ggZ2l2ZXMgdGhlIHNhbWUgcmVmZXJlbmNlcyBPYnNpZGlhbidzIG93biBgZ2V0QmFja2xpbmtzRm9yRmlsZWAgZ2l2ZXMuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgYmFja2xpbmtzIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIHVzaW5nIF9yZWdpc3RyYXRpb24gPSByZWdpc3RlckZpbGVzKGFwcCwgW2ZpbGVdKTtcbiAgcmV0dXJuIGZpbmRBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGkoKT8uZ2V0QmFja2xpbmtzRm9yRmlsZShmaWxlKSA/PyBnZXRJbmRleGVkQmFja2xpbmtzRm9yRmlsZShhcHAsIGZpbGUpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgc2FmZWx5LlxuICpcbiAqIFdoZW4gYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCBwdWJsaXNoZXMgaXRzIGJhY2tsaW5rcyBBUEkgYW5kIGl0cyBgQmFja2xpbmtzYCBtb2R1bGUgaXMgb24sIHRoYXQgQVBJIGFuc3dlcnMuXG4gKlxuICogT3RoZXJ3aXNlIHRoaXMgaXMgTk9UIGEgcHVyZSByZWFkLiBJdCB2ZXJpZmllc1xuICogZWFjaCBiYWNrbGluayBhZ2FpbnN0IHRoZSBub3RlJ3MgY3VycmVudCB0ZXh0LCBhbmQgdG8gZG8gdGhhdCBpdCBjYWxscyB7QGxpbmsgc2F2ZU5vdGV9IG9uIGV2ZXJ5XG4gKiBub3RlIHRoYXQgbGlua3MgdG8gdGhlIGZpbGUsIHdoaWNoIHNhdmVzIGFueSBvcGVuIGVkaXRvciB2aWV3IG9mIHRob3NlIG5vdGVzIHRoYXQgaGFzIHVuc2F2ZWRcbiAqIGNoYW5nZXMuIENhbGwgaXQgZnJvbSBhbiBleHBsaWNpdCB1c2VyIGFjdGlvbi4gRG8gbm90IGNhbGwgaXQgZnJvbSBhbiBhdXRvbWF0aWMgdHJpZ2dlciAoYSB2YXVsdCBvclxuICogbWV0YWRhdGEgZXZlbnQsIGEgc2F2ZSBvciByZW5kZXIgcGF0Y2gpIHRoYXQgb25seSBkZWNpZGVzIHdoZXRoZXIgdG8gYWN0LiBUaGVyZSwgYSBmb3JjZWQgc2F2ZSBjYW5cbiAqIHJhY2UgYW5vdGhlciBwbHVnaW4ncyBpbi1mbGlnaHQgZWRpdG9yIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJldHJpZXZpbmcgdGhlIGJhY2tsaW5rcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgZGljdGlvbmFyeSBvZiBiYWNrbGlua3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShwYXJhbXM6IEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlUGFyYW1zKTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj4ge1xuICBjb25zdCB7IGFwcCwgcGF0aE9yRmlsZSwgLi4ub3B0aW9ucyB9ID0gcGFyYW1zO1xuICBjb25zdCBjYWNoZWRCYWNrbGlua3MgPSBhd2FpdCBmaW5kQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpKCk/LmdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHBhdGhPckZpbGUpO1xuICBpZiAoY2FjaGVkQmFja2xpbmtzKSB7XG4gICAgcmV0dXJuIGNhY2hlZEJhY2tsaW5rcztcbiAgfVxuXG4gIGxldCBiYWNrbGlua3M6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+ID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHtcbiAgICBhc3luYyBvcGVyYXRpb25GdW5jdGlvbihhYm9ydFNpZ25hbCkge1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlIH0pO1xuICAgICAgYXdhaXQgZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5KGFwcCk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgYmFja2xpbmtzID0gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHAsIGZpbGUpO1xuICAgICAgZm9yIChjb25zdCBub3RlUGF0aCBvZiBiYWNrbGlua3Mua2V5cygpKSB7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGNvbnN0IG5vdGUgPSBnZXRGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBub3RlUGF0aCB9KTtcbiAgICAgICAgaWYgKCFub3RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQSBjYW52YXMgaG9sZGVyIGNhbm5vdCBiZSBjaGVja2VkIGFnYWluc3QgaXRzIHRleHQuIEl0cyBmaWxlLW5vZGUgcmVmZXJlbmNlcyBjYXJyeSBubyBwb3NpdGlvbiwgYW5kXG4gICAgICAgIC8vIE9ic2lkaWFuIHJlcG9ydHMgYSB0ZXh0LW5vZGUgZW1iZWQgd2l0aCBhIHBvc2l0aW9uIGludG8gdGhhdCBub2RlJ3Mgb3duIHRleHQsIG5vdCBpbnRvIHRoZSBjYW52YXMgSlNPTixcbiAgICAgICAgLy8gc28gc2xpY2luZyB0aGUgZmlsZSBhdCBpdCBuZXZlciBnaXZlcyB0aGUgbGluayBiYWNrIGFuZCB0aGUgcmV0cnkgd291bGQgbmV2ZXIgZW5kLlxuICAgICAgICBpZiAoaXNDYW52YXNGaWxlKG5vdGUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBzYXZlTm90ZShhcHAsIG5vdGUpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIG5vdGUpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGlua3MgPSBiYWNrbGlua3MuZ2V0KG5vdGVQYXRoKTtcbiAgICAgICAgaWYgKCFsaW5rcykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcnNlZCBvbmx5IHdoZW4gYSBmcm9udG1hdHRlciBsaW5rIG5lZWRzIGl0OiBhIG5vdGUgd2hvc2UgWUFNTCBkb2VzIG5vdCBwYXJzZSBzdGlsbCBob2xkcyBib2R5IGxpbmtzLFxuICAgICAgICAvLyBhbmQgYG51bGxgIG1hcmtzIGEgcGFyc2UgdGhhdCBmYWlsZWQsIHNvIGl0cyBmcm9udG1hdHRlciBsaW5rcyBhcmUgc2tpcHBlZCByYXRoZXIgdGhhbiByZXRyaWVkIGZvcmV2ZXIuXG4gICAgICAgIGxldCBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICAgIGxldCBhY3R1YWxMaW5rOiBzdHJpbmc7XG4gICAgICAgICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykpIHtcbiAgICAgICAgICAgIGFjdHVhbExpbmsgPSBjb250ZW50LnNsaWNlKGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LCBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSkge1xuICAgICAgICAgICAgaWYgKGZyb250bWF0dGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgZnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyT3JOdWxsKGNvbnRlbnQsIG5vdGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmcm9udG1hdHRlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGlua1dpdGhPZmZzZXRzID0gdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspO1xuICAgICAgICAgICAgYWN0dWFsTGluayA9IHByb3BlcnR5VmFsdWUuc2xpY2UobGlua1dpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0LCBsaW5rV2l0aE9mZnNldHMuZW5kT2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZVBhdGgsIHsgZmlsZVBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSB9KSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwsXG4gICAgcmV0cnlPcHRpb25zOiBvcHRpb25zLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBvcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWVcbiAgfSk7XG5cbiAgcmV0dXJuIGJhY2tsaW5rcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBmaWxlIG9yIHBhdGguXG4gKlxuICogVGhpcyBpcyBOT1QgYSBwdXJlIHJlYWQ6IGJlZm9yZSBpdCByZWFkcyB0aGUgY2FjaGUsIGl0IGNhbGxzIHtAbGluayBzYXZlTm90ZX0sIHdoaWNoIHNhdmVzIGFueVxuICogb3BlbiBlZGl0b3IgdmlldyBvZiB0aGUgbm90ZSB0aGF0IGhhcyB1bnNhdmVkIGNoYW5nZXMuIFRoYXQgc2F2ZSBpcyB3aHkgdGhlIGNhY2hlIG1hdGNoZXMgd2hhdCB0aGVcbiAqIHVzZXIgc2VlcywgYW5kIHdoeSBhIGNvbW1hbmQgdGhhdCByZXdyaXRlcyB0aGUgbm90ZSBjYW4gdXNlIHRoaXMgc2FmZWx5IHdpdGhvdXQgaXRzIHJld3JpdGUgYmVpbmdcbiAqIGNsb2JiZXJlZC4gSXQgaXMgYWxzbyBhIHdyaXRlIG9uIHRoZSBub3RlLiBTbyBkbyBub3QgY2FsbCB0aGlzIGZyb20gYW4gYXV0b21hdGljIHRyaWdnZXIgKGEgdmF1bHRcbiAqIG9yIG1ldGFkYXRhIGV2ZW50LCBhIHNhdmUgb3IgcmVuZGVyIHBhdGNoLCBhIGxheW91dCBob29rKSB0aGF0IG9ubHkgZGVjaWRlcyB3aGV0aGVyIHRvIGFjdDogYVxuICogZm9yY2VkIHNhdmUgb25lIHRpY2sgYWZ0ZXIgYW5vdGhlciBwbHVnaW4gaGFzIGRpc3BhdGNoZWQgYSBjaGFuZ2UgaW50byB0aGUgZWRpdG9yIGNhbiBsZWF2ZVxuICogT2JzaWRpYW4ncyBlZGl0b3IgcmVuZGVyaW5nIHN0YWxlIHN0YXRlLiBBIHJlYWQtb25seSBwcm9iZSBvbiB0aGUgbm90ZSdzIGN1cnJlbnQgdGV4dCBzaG91bGQgdXNlXG4gKiB7QGxpbmsgcGFyc2VNZXRhZGF0YX0gb24gdGhhdCB0ZXh0IGluc3RlYWQuIEl0IG5lZWRzIG5vIHZpZXcsIG5vIGNhY2hlIGFuZCBubyBzYXZlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVPclBhdGggLSBUaGUgZmlsZSBvciBwYXRoIHRvIHJldHJpZXZlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGFkZGl0aW9uYWwgbGlua3MgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgY2FjaGVkIG1ldGFkYXRhIGZvciB0aGUgZmlsZSwgb3IgYG51bGxgIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUsIG9wdGlvbnM6IEdldENhY2hlU2FmZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGFFeCB8IG51bGw+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGZpbGVPclBhdGggfSk7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsO1xuICAgIGlmIChmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gICAgICBjb25zdCBmaWxlQ2FjaGVFbnRyeSA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtmaWxlLnBhdGhdO1xuICAgICAgY29uc3QgaXNVcFRvRGF0ZSA9IGZpbGVDYWNoZUVudHJ5Py5tdGltZSA9PT0gZmlsZS5zdGF0Lm10aW1lXG4gICAgICAgICYmIGZpbGVDYWNoZUVudHJ5LnNpemUgPT09IGZpbGUuc3RhdC5zaXplXG4gICAgICAgICYmIE9iamVjdC5oYXNPd24oYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZSwgZmlsZUNhY2hlRW50cnkuaGFzaCk7XG4gICAgICBpZiAoIWlzVXBUb0RhdGUpIHtcbiAgICAgICAgYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZUZpbGVNZXRhZGF0YUFzeW5jKGZpbGUpO1xuICAgICAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICAgIH1cbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgIH1cblxuICAgIGlmIChjYWNoZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gT25seSB0aGUgYm9keS1leHRlcm5hbCBwYXJzZSBuZWVkcyB0aGUgZmlsZSBjb250ZW50OyBmcm9udG1hdHRlciBwYXJzaW5nIHVzZXMgdGhlIGNhY2hlZFxuICAgIC8vIGZyb250bWF0dGVyLCBzbyBhdm9pZCByZWFkaW5nIHRoZSBjb250ZW50IHVubGVzcyBpdCBpcyBhY3R1YWxseSBuZWVkZWQuXG4gICAgY29uc3QgY29udGVudCA9IG9wdGlvbnMuc2hvdWxkUGFyc2VFeHRlcm5hbExpbmtzID8gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkgOiAnJztcbiAgICByZXR1cm4gdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4KHsgY2FjaGUsIGNvbnRlbnQsIG9wdGlvbnMgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZyb250IG1hdHRlciBmcm9tIHRoZSBtZXRhZGF0YSBjYWNoZSBzYWZlbHkuXG4gKlxuICogSXQgcmVhZHMgdGhyb3VnaCB7QGxpbmsgZ2V0Q2FjaGVTYWZlfSwgc28gaXQgc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhlIG5vdGUgdGhhdCBoYXNcbiAqIHVuc2F2ZWQgY2hhbmdlcy4gU2VlIHtAbGluayBnZXRDYWNoZVNhZmV9IGZvciB3aGVuIHRoYXQgc2F2ZSBtYXR0ZXJzIGFuZCB3aGF0IHRvIHVzZSBpbnN0ZWFkLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIGZyb250IG1hdHRlciBmcm9tLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZyb250bWF0dGVyU2FmZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPj4ge1xuICBjb25zdCBjYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICByZXR1cm4gKGNhY2hlPy5mcm9udG1hdHRlciA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzZWxlY3RlZCBsaW5rcyBmcm9tIHRoZSBwcm92aWRlZCBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJldHJpZXZpbmcgdGhlIGxpbmtzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVmZXJlbmNlcyByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGVkIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua3MocGFyYW1zOiBHZXRMaW5rc1BhcmFtcyk6IFJlZmVyZW5jZVtdIHtcbiAgY29uc3Qge1xuICAgIGNhY2hlLFxuICAgIHNob3VsZEluY2x1ZGVFbWJlZHMgPSB0cnVlLFxuICAgIHNob3VsZEluY2x1ZGVFeHRlcm5hbExpbmtzID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzID0gdHJ1ZSxcbiAgICBzaG91bGRJbmNsdWRlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzID0gdHJ1ZVxuICB9ID0gcGFyYW1zO1xuXG4gIGxldCBsaW5rczogUmVmZXJlbmNlW10gPSBbXG4gICAgLi4uKHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzID8gY2FjaGUubGlua3MgPz8gW10gOiBbXSksXG4gICAgLi4uKHNob3VsZEluY2x1ZGVFbWJlZHMgPyBjYWNoZS5lbWJlZHMgPz8gW10gOiBbXSksXG4gICAgLi4uKHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzID8gY2FjaGUuZnJvbnRtYXR0ZXJMaW5rcyA/PyBbXSA6IFtdKVxuICBdO1xuXG4gIGNvbnN0IGZlYXR1cmVMaW5rU2VsZWN0b3JzOiBGZWF0dXJlTGlua1NlbGVjdG9yW10gPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdib2R5IGV4dGVybmFsIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkV4dGVybmFsTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4LmV4dGVybmFsTGlua3MsXG4gICAgICBzaG91bGRJbmNsdWRlOiBzaG91bGRJbmNsdWRlRXh0ZXJuYWxMaW5rc1xuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdmcm9udG1hdHRlciBleHRlcm5hbCBsaW5rcycsXG4gICAgICBmZWF0dXJlOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5Gcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4LmZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckV4dGVybmFsTGlua3NcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnbXVsdGktdmFsdWUgZnJvbnRtYXR0ZXIgZXh0ZXJuYWwgbGlua3MnLFxuICAgICAgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNlbGVjdDogKGNhY2hlRXgpID0+IGNhY2hlRXgubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogJ211bHRpLXZhbHVlIGZyb250bWF0dGVyIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzLFxuICAgICAgc2VsZWN0OiAoY2FjaGVFeCkgPT4gY2FjaGVFeC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc1xuICAgIH1cbiAgXTtcblxuICBmb3IgKGNvbnN0IGZlYXR1cmVMaW5rU2VsZWN0b3Igb2YgZmVhdHVyZUxpbmtTZWxlY3RvcnMpIHtcbiAgICBpZiAoIWZlYXR1cmVMaW5rU2VsZWN0b3Iuc2hvdWxkSW5jbHVkZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhY2hlZE1ldGFkYXRhRXgoY2FjaGUpIHx8ICFjYWNoZS5mZWF0dXJlcy5pbmNsdWRlcyhmZWF0dXJlTGlua1NlbGVjdG9yLmZlYXR1cmUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbmNsdWRlICR7ZmVhdHVyZUxpbmtTZWxlY3Rvci5kZXNjcmlwdGlvbn06IHRoZSBjYWNoZSB3YXMgbm90IGNvbXB1dGVkIHdpdGggdGhlICR7ZmVhdHVyZUxpbmtTZWxlY3Rvci5mZWF0dXJlfSBmZWF0dXJlLmApO1xuICAgIH1cblxuICAgIGxpbmtzLnB1c2goLi4uZW5zdXJlTm9uTnVsbGFibGUoZmVhdHVyZUxpbmtTZWxlY3Rvci5zZWxlY3QoY2FjaGUpKSk7XG4gIH1cblxuICBzb3J0UmVmZXJlbmNlcyhsaW5rcyk7XG5cbiAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gIGxpbmtzID0gbGlua3MuZmlsdGVyKChsaW5rLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMaW5rID0gZW5zdXJlTm9uTnVsbGFibGUobGlua3NbaW5kZXggLSAxXSk7XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgYmFja2xpbmsgY2FjaGUgcGx1Z2luIGlzIGN1cnJlbnRseSBsb2FkZWQgLSBlaXRoZXIgYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCAoe0BsaW5rIEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRH0pIG9yIGl0cyByZXRpcmVkIHByZWRlY2Vzc29yIGBCYWNrbGluayBDYWNoZWAgKHtAbGluayBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUR9KS5cbiAqXG4gKiBTdWNoIGEgcGx1Z2luIGtlZXBzIGEgZHJhaW4tb24tcmVhZCBiYWNrbGluayBpbmRleCBhbmQgaW5kZXhlcyBjYW52YXMgbWV0YWRhdGEsIHNvIGEgY2FsbGVyIHRoYXQgY29tcGVuc2F0ZXMgZm9yIE9ic2lkaWFuJ3Mgb3duIGdhcHMgY2FuIHN0YW5kIGRvd24gd2hpbGUgb25lIGlzIHByZXNlbnQuIEJvdGggaWRzIGFyZSByZWNvZ25pemVkOyB7QGxpbmsgQkFDS0xJTktfQ0FDSEVfUExVR0lOX0lEfSByZWNvcmRzIHdoZW4gdGhlIHJldGlyZWQgb25lIG1heSBiZSBkcm9wcGVkLlxuICpcbiAqIFRoaXMgcmVhZHMgdGhlIExPQURFRCBwbHVnaW4gaW5zdGFuY2UgcmF0aGVyIHRoYW4gYGFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zYCwgZGVsaWJlcmF0ZWx5OiB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgcGx1Z2luJ3MgcGF0Y2hlcyBhcmUgaW4gcGxhY2UgcmlnaHQgbm93LCBhbmQgdGhleSBhcmUgbm90IHVudGlsIGl0IGhhcyBsb2FkZWQuIFBsdWdpbnMgbG9hZCBpbiBhbiB1bnNwZWNpZmllZCBvcmRlciwgc28gY2FsbCB0aGlzIGZyb20gYSB1c2VyLWRyaXZlbiBwYXRoIHJhdGhlciB0aGFuIGZyb20gcGx1Z2luIGxvYWQgLSBzZWUgcnVsZSBMMjUgaW4gYEFHRU5UUy5tZGAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYSBiYWNrbGluayBjYWNoZSBwbHVnaW4gaXMgbG9hZGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW4oYXBwOiBBcHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGFwcC5wbHVnaW5zLmdldFBsdWdpbihBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9QTFVHSU5fSUQpICE9PSBudWxsIHx8IGFwcC5wbHVnaW5zLmdldFBsdWdpbihCQUNLTElOS19DQUNIRV9QTFVHSU5fSUQpICE9PSBudWxsO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGNhY2hlIGlzIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9IChpLmUuIGl0IHdhcyBjb21wdXRlZCB3aXRoIGV4dGVybmFsLWxpbmtcbiAqIHBhcnNpbmcgZW5hYmxlZCkuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIGNhY2hlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjYWNoZSBpcyBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhY2hlZE1ldGFkYXRhRXgoY2FjaGU6IENhY2hlZE1ldGFkYXRhKTogY2FjaGUgaXMgQ2FjaGVkTWV0YWRhdGFFeCB7XG4gIHJldHVybiAnZmVhdHVyZXMnIGluIGNhY2hlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIHBhcnNlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGFkZGl0aW9uYWwgbGlua3MgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIG1ldGFkYXRhLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VNZXRhZGF0YShhcHA6IEFwcCwgJHN0cmluZzogc3RyaW5nLCBvcHRpb25zOiBQYXJzZU1ldGFkYXRhT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDYWNoZWRNZXRhZGF0YUV4PiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgYnVmZmVyID0gZW5jb2Rlci5lbmNvZGUoJHN0cmluZykuYnVmZmVyO1xuICBjb25zdCBjYWNoZSA9IGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVNZXRhZGF0YUFzeW5jKGJ1ZmZlcikgPz8ge307XG4gIHJldHVybiB0b1BhcnNlZENhY2hlZE1ldGFkYXRhRXgoeyBjYWNoZSwgY29udGVudDogJHN0cmluZywgb3B0aW9ucyB9KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgZm9yIGEgbm9uLWV4aXN0aW5nIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyB0aGUgZmlsZSBjYWNoZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGV9IHRoYXQgdW5yZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgd2hlbiBkaXNwb3NlZCwgZm9yIHVzZSB3aXRoIGB1c2luZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZShwYXJhbXM6IFJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlUGFyYW1zKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IHsgYXBwLCBjYWNoZSwgcGF0aE9yRmlsZSB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZSwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmlsZSBpcyBleGlzdGluZycpO1xuICB9XG5cbiAgYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF0gPSB7XG4gICAgaGFzaDogZmlsZS5wYXRoLFxuICAgIG10aW1lOiAwLFxuICAgIHNpemU6IDBcbiAgfTtcblxuICBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2ZpbGUucGF0aF0gPSBjYWNoZTtcblxuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUoYXBwLCBmaWxlKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBmaWxlcyBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHJlZ2lzdGVyLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZXMgd2hlbiBkaXNwb3NlZCwgZm9yIHVzZSB3aXRoIGB1c2luZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IHJlZ2lzdGVyZWRGaWxlc0NvdW50cyA9IGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpO1xuXG4gIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICB3aGlsZSAoZmlsZS5kZWxldGVkKSB7XG4gICAgICBsZXQgY291bnQgPSByZWdpc3RlcmVkRmlsZXNDb3VudHMuZ2V0KGZpbGUucGF0aCkgPz8gMDtcbiAgICAgIGNvdW50Kys7XG4gICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuc2V0KGZpbGUucGF0aCwgY291bnQpO1xuXG4gICAgICBhcHAudmF1bHQuZmlsZU1hcFtmaWxlLnBhdGhdID0gZmlsZTtcblxuICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICBhcHAubWV0YWRhdGFDYWNoZS51bmlxdWVGaWxlTG9va3VwLmFkZChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKSwgZmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGZpbGUgPSBnZXRGb2xkZXIoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHBhdGhPckZvbGRlcjogcGFyZW50Rm9sZGVyUGF0aChmaWxlLnBhdGgpLFxuICAgICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgdW5yZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgZm9yIGEgbm9uLWV4aXN0aW5nIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gdW5yZWdpc3RlciB0aGUgZmlsZSBjYWNoZSBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogdm9pZCB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGV4aXN0aW5nJyk7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgZGVsZXRlIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZS5wYXRoXTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBmaWxlcyBmcm9tIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gdW5yZWdpc3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJGaWxlcyhhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IHZvaWQge1xuICBjb25zdCByZWdpc3RlcmVkRmlsZXNDb3VudHMgPSBnZXRSZWdpc3RlcmVkRmlsZXNDb3VudHMoKTtcblxuICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgd2hpbGUgKGZpbGUuZGVsZXRlZCkge1xuICAgICAgbGV0IGNvdW50ID0gcmVnaXN0ZXJlZEZpbGVzQ291bnRzLmdldChmaWxlLnBhdGgpID8/IDE7XG4gICAgICBjb3VudC0tO1xuICAgICAgcmVnaXN0ZXJlZEZpbGVzQ291bnRzLnNldChmaWxlLnBhdGgsIGNvdW50KTtcbiAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuZGVsZXRlKGZpbGUucGF0aCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgZGVsZXRlIGFwcC52YXVsdC5maWxlTWFwW2ZpbGUucGF0aF07XG5cbiAgICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmaWxlID0gZ2V0Rm9sZGVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBwYXRoT3JGb2xkZXI6IHBhcmVudEZvbGRlclBhdGgoZmlsZS5wYXRoKSxcbiAgICAgICAgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSgpOiBBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGkgfCBudWxsIHtcbiAgcmV0dXJuIGZpbmRQbHVnaW5BcGk8QWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpPih7XG4gICAgYXBpVmVyc2lvblJhbmdlOiBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfQVBJX1ZFUlNJT05fUkFOR0UsXG4gICAgY29udHJhY3Q6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19BUElfQ09OVFJBQ1QsXG4gICAgcGx1Z2luSWQ6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZEZpbGVzQ291bnRzKCk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKCdyZWdpc3RlcmVkRmlsZXNDb3VudHMnLCBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKS52YWx1ZTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmFsbHkgcmVjb2duaXplcyB0aGUgYmFja2xpbmtzIGRpY3Rpb25hcnkgYW5vdGhlciBwbHVnaW4ncyBjb3B5IGJ1aWx0LCBvciBgbnVsbGAuIFRoZSBjbGFzcyBpdCB3YXMgYnVpbHQgZnJvbSBsaXZlcyBpbiB0aGF0IGNvcHksIHNvIGBpbnN0YW5jZW9mYCBjYW5ub3QgYmUgdXNlZCAocnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIHJlYWRzIGFzIGEgYmFja2xpbmtzIGRpY3Rpb25hcnkuXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbGFibGVCYWNrbGlua3NEaWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gfCBudWxsIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsXG4gICAgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICYmIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZGF0YScpIGluc3RhbmNlb2YgTWFwXG4gICAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdnZXQnKSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAna2V5cycpID09PSAnZnVuY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VFeHRlcm5hbEJvZHlMaW5rcyhjb250ZW50OiBzdHJpbmcsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFBhcnNlTGlua1JlZmVyZW5jZVtdIHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJFbmRPZmZzZXQgPSBjYWNoZS5mcm9udG1hdHRlclBvc2l0aW9uPy5lbmQub2Zmc2V0ID8/IDA7XG4gIHJldHVybiBwYXJzZUxpbmtzKGNvbnRlbnQpXG4gICAgLmZpbHRlcigocGFyc2VMaW5rUmVzdWx0KSA9PiBwYXJzZUxpbmtSZXN1bHQuaXNFeHRlcm5hbCAmJiBwYXJzZUxpbmtSZXN1bHQuc3RhcnRPZmZzZXQgPj0gZnJvbnRtYXR0ZXJFbmRPZmZzZXQpXG4gICAgLm1hcCgocGFyc2VMaW5rUmVzdWx0KSA9PiB0b1BhcnNlTGlua1JlZmVyZW5jZSh7IGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdCB9KSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJPck51bGwoY29udGVudDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+IHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZyb250bWF0dGVyIHBhcnNpbmcgZmFpbGVkIGluICR7cGF0aH1gLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4KHBhcmFtczogVG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4UGFyYW1zKTogQ2FjaGVkTWV0YWRhdGFFeCB7XG4gIGNvbnN0IHsgY2FjaGUsIGNvbnRlbnQsIG9wdGlvbnMgfSA9IHBhcmFtcztcbiAgY29uc3QgZmVhdHVyZXM6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlW10gPSBbQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTmF0aXZlXTtcbiAgY29uc3QgcmVzdWx0OiBDYWNoZWRNZXRhZGF0YUV4ID0geyAuLi5jYWNoZSwgZmVhdHVyZXMgfTtcblxuICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZUV4dGVybmFsTGlua3MpIHtcbiAgICByZXN1bHQuZXh0ZXJuYWxMaW5rcyA9IHBhcnNlRXh0ZXJuYWxCb2R5TGlua3MoY29udGVudCwgY2FjaGUpO1xuICAgIGZlYXR1cmVzLnB1c2goQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRXh0ZXJuYWxMaW5rcyk7XG4gIH1cblxuICBpZiAoXG4gICAgb3B0aW9ucy5zaG91bGRQYXJzZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rc1xuICAgIHx8IG9wdGlvbnMuc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzXG4gICAgfHwgb3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzXG4gICkge1xuICAgIGNvbnN0IGZyb250bWF0dGVyTGlua3MgPSBwYXJzZUZyb250bWF0dGVyTGlua3MoY2FjaGUuZnJvbnRtYXR0ZXIpO1xuXG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUGFyc2VGcm9udG1hdHRlckV4dGVybmFsTGlua3MpIHtcbiAgICAgIHJlc3VsdC5mcm9udG1hdHRlckV4dGVybmFsTGlua3MgPSBmcm9udG1hdHRlckxpbmtzLmZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcztcbiAgICAgIGZlYXR1cmVzLnB1c2goQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MpIHtcbiAgICAgIHJlc3VsdC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gZnJvbnRtYXR0ZXJMaW5rcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzO1xuICAgICAgZmVhdHVyZXMucHVzaChDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzKSB7XG4gICAgICByZXN1bHQubXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MgPSBmcm9udG1hdHRlckxpbmtzLm11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzO1xuICAgICAgZmVhdHVyZXMucHVzaChDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7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QUNIO0FBRUEsU0FBUywyQkFBZ0Q7QUFDdkQsYUFBTywwREFBeUIseUJBQXlCLG9CQUFJLElBQW9CLENBQUMsRUFBRTtBQUN0RjtBQVFBLFNBQVMsd0JBQXdCLE9BQTREO0FBQzNGLFNBQU8sVUFBVSxRQUNYLE9BQU8sVUFBVSxZQUNoQixRQUFRLElBQUksT0FBTyxNQUFNLGFBQWEsT0FDdEMsT0FBTyxRQUFRLElBQUksT0FBTyxLQUFLLE1BQU0sY0FDckMsT0FBTyxRQUFRLElBQUksT0FBTyxNQUFNLE1BQU07QUFDL0M7QUFFQSxTQUFTLHVCQUF1QixTQUFpQixPQUE2QztBQUM1RixRQUFNLHVCQUF1QixNQUFNLHFCQUFxQixJQUFJLFVBQVU7QUFDdEUsYUFBTyw4QkFBVyxPQUFPLEVBQ3RCLE9BQU8sQ0FBQyxvQkFBb0IsZ0JBQWdCLGNBQWMsZ0JBQWdCLGVBQWUsb0JBQW9CLEVBQzdHLElBQUksQ0FBQyx3QkFBb0Isd0NBQXFCLEVBQUUsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2hGO0FBRUEsU0FBUyx1QkFBdUIsU0FBaUIsTUFBbUQ7QUFDbEcsTUFBSTtBQUNGLGVBQU8scUNBQWlCLE9BQU87QUFBQSxFQUNqQyxTQUFTLE9BQU87QUFDZCxpQ0FBVyxJQUFJLE1BQU0saUNBQWlDLElBQUksSUFBSSxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFDL0UsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLFNBQVMseUJBQXlCLFFBQTBEO0FBQzFGLFFBQU0sRUFBRSxPQUFPLFNBQVMsUUFBUSxJQUFJO0FBQ3BDLFFBQU0sV0FBc0MsQ0FBQyxxQkFBOEI7QUFDM0UsUUFBTSxTQUEyQixFQUFFLEdBQUcsT0FBTyxTQUFTO0FBRXRELE1BQUksUUFBUSwwQkFBMEI7QUFDcEMsV0FBTyxnQkFBZ0IsdUJBQXVCLFNBQVMsS0FBSztBQUM1RCxhQUFTLEtBQUssbUNBQXFDO0FBQUEsRUFDckQ7QUFFQSxNQUNFLFFBQVEsdUNBQ0wsUUFBUSxpREFDUixRQUFRLHVDQUNYO0FBQ0EsVUFBTSx1QkFBbUIseUNBQXNCLE1BQU0sV0FBVztBQUVoRSxRQUFJLFFBQVEscUNBQXFDO0FBQy9DLGFBQU8sMkJBQTJCLGlCQUFpQjtBQUNuRCxlQUFTLEtBQUsseURBQWdEO0FBQUEsSUFDaEU7QUFFQSxRQUFJLFFBQVEsK0NBQStDO0FBQ3pELGFBQU8scUNBQXFDLGlCQUFpQjtBQUM3RCxlQUFTLEtBQUssNkVBQTBEO0FBQUEsSUFDMUU7QUFFQSxRQUFJLFFBQVEsdUNBQXVDO0FBQ2pELGFBQU8sNkJBQTZCLGlCQUFpQjtBQUNyRCxlQUFTLEtBQUssNkRBQWtEO0FBQUEsSUFDbEU7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsIm5hbWVzIjpbIkNhY2hlZE1ldGFkYXRhRXhGZWF0dXJlIl19
|
|
565
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRhZGF0YS1jYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcGlDb250cmFjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hcGktY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQXJndW1lbnRzU2NoZW1hLFxuICBjcmVhdGVUeXBlR3VhcmRTY2hlbWFcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQgeyBDYWxsYmFja0Rpc3Bvc2FibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGdldE5lc3RlZFByb3BlcnR5VmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7XG4gIEN1c3RvbUFycmF5RGljdEltcGwsXG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGUsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRGcm9udG1hdHRlciB9IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSxcbiAgUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0cyxcbiAgUGFyc2VMaW5rUmVmZXJlbmNlXG59IGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5cbmltcG9ydCB7IHJldHJ5V2l0aFRpbWVvdXROb3RpY2UgfSBmcm9tICcuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmltcG9ydCB7IGdldEluZGV4ZWRCYWNrbGlua3NGb3JGaWxlIH0gZnJvbSAnLi9iYWNrbGluay1pbmRleC50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc1BhdGhPckZpbGVcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkxpYlN0YXRlIH0gZnJvbSAnLi9vYnNpZGlhbi1saWItc3RhdGUudHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlckxpbmtzLFxuICBwYXJzZUxpbmtzLFxuICB0b1BhcnNlTGlua1JlZmVyZW5jZVxufSBmcm9tICcuL3BhcnNlLWxpbmsudHMnO1xuaW1wb3J0IHsgZmluZFBsdWdpbkFwaSB9IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1hcGkudHMnO1xuaW1wb3J0IHsgc29ydFJlZmVyZW5jZXMgfSBmcm9tICcuL3JlZmVyZW5jZS50cyc7XG5pbXBvcnQge1xuICByZWFkU2FmZSxcbiAgc2F2ZU5vdGVcbn0gZnJvbSAnLi92YXVsdC50cyc7XG5cbi8qKlxuICogQSBwYXJzaW5nIGZlYXR1cmUgdGhhdCB3YXMgYXBwbGllZCB3aGVuIGNvbXB1dGluZyBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAqL1xuZXhwb3J0IGVudW0gQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUge1xuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHRoZSBub3RlIGNvbnRlbnQgYm9keS5cbiAgICovXG4gIEV4dGVybmFsTGlua3MgPSAnRXh0ZXJuYWxMaW5rcycsXG5cbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBzaW5nbGUtbGluayBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICovXG4gIEZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9ICdGcm9udG1hdHRlckV4dGVybmFsTGlua3MnLFxuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICovXG4gIE11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MgPSAnTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcycsXG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLCB3aGljaCBPYnNpZGlhbiBkb2VzIG5vdCBuYXRpdmVseSBjYWNoZS5cbiAgICovXG4gIE11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzID0gJ011bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBuYXRpdmUgbWV0YWRhdGEgcGFyc2luZyAoaW50ZXJuYWwgbGlua3MsIGVtYmVkcywgZnJvbnRtYXR0ZXIgbGlua3MpLlxuICAgKi9cbiAgTmF0aXZlID0gJ05hdGl2ZSdcbn1cblxuLyoqXG4gKiBBbiBleHRlbmRlZCB7QGxpbmsgQ2FjaGVkTWV0YWRhdGF9IHRoYXQgcmVjb3JkcyB3aGljaCBwYXJzaW5nIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZX1zIHdlcmVcbiAqIGFwcGxpZWQgKHZpYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeC5mZWF0dXJlc30pIGFuZCBjYXJyaWVzIHRoZSByZXN1bHRpbmcgZXh0ZXJuYWwgbGlua3MuIEVhY2ggbGlua3NcbiAqIGFycmF5IGlzIHBvcHVsYXRlZCBvbmx5IHdoZW4gaXRzIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBwcmVzZW50IGluIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4LmZlYXR1cmVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZWRNZXRhZGF0YUV4IGV4dGVuZHMgQ2FjaGVkTWV0YWRhdGEge1xuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHRoZSBub3RlIGNvbnRlbnQgYm9keS4gUG9wdWxhdGVkIG9ubHkgd2hlblxuICAgKiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRXh0ZXJuYWxMaW5rc30gaXMgYXBwbGllZC5cbiAgICovXG4gIGV4dGVybmFsTGlua3M/OiBQYXJzZUxpbmtSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogVGhlIHBhcnNpbmcgZmVhdHVyZXMgdGhhdCB3ZXJlIGFwcGxpZWQgd2hlbiBjb21wdXRpbmcgdGhpcyBjYWNoZS5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVzOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgKHNpbmdsZS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuIFBvcHVsYXRlZCBvbmx5XG4gICAqIHdoZW4ge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkZyb250bWF0dGVyRXh0ZXJuYWxMaW5rc30gaXMgYXBwbGllZC5cbiAgICovXG4gIGZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlW107XG5cbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuIFBvcHVsYXRlZCBvbmx5IHdoZW5cbiAgICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0c1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLiBQb3B1bGF0ZWQgb25seSB3aGVuXG4gICAqIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc30gaXMgYXBwbGllZC5cbiAgICovXG4gIG11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzPzogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0c1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlUGFyYW1zIGV4dGVuZHMgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGdldENhY2hlU2FmZX0uXG4gKi9cbmV4cG9ydCB0eXBlIEdldENhY2hlU2FmZU9wdGlvbnMgPSBQYXJzZUNhY2hlT3B0aW9ucztcblxuLyoqXG4gKiBQYXJhbXMgZm9yIHtAbGluayBnZXRMaW5rc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TGlua3NQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNhY2hlZCBtZXRhZGF0YSB0byByZXRyaWV2ZSB0aGUgbGlua3MgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlOiBDYWNoZWRNZXRhZGF0YTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBlbWJlZHMgKGBjYWNoZS5lbWJlZHNgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRW1iZWRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSB0aGUgbm90ZSBib2R5LiBSZXF1aXJlcyB0aGUgY2FjaGUgdG8gYmUgYVxuICAgKiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBzaW5nbGUtbGluayAoc2luZ2xlLXZhbHVlKSBub3RlIGZyb250bWF0dGVyXG4gICAqIHZhbHVlcy4gUmVxdWlyZXMgdGhlIGNhY2hlIHRvIGJlIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBmcm9udG1hdHRlciBsaW5rcyAoYGNhY2hlLmZyb250bWF0dGVyTGlua3NgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRnJvbnRtYXR0ZXJMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLFxuICAgKiBpLmUuIHRoZSBvZmZzZXQtY2FycnlpbmcgZnJvbnRtYXR0ZXIgZXh0ZXJuYWwgbGlua3MgKG5hcnJvd2VkIHZpYVxuICAgKiB7QGxpbmsgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzfSkuIFJlcXVpcmVzIHRoZSBjYWNoZSB0byBiZSBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZU11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGludGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICogUmVxdWlyZXMgdGhlIGNhY2hlIHRvIGJlIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIHJlZmVyZW5jZSBsaW5rcyAoYGNhY2hlLmxpbmtzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZVJlZmVyZW5jZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBwYXJzaW5nIHBlcmZvcm1lZCBieSB7QGxpbmsgZ2V0Q2FjaGVTYWZlfSBhbmQge0BsaW5rIHBhcnNlTWV0YWRhdGF9IGJleW9uZCBPYnNpZGlhbidzXG4gKiBuYXRpdmUgbWV0YWRhdGEgcGFyc2luZy4gRWFjaCBvcHRpb24gaXMgb3B0LWluOyBlbmFibGluZyBpdCBhZGRzIHRoZSBjb3JyZXNwb25kaW5nXG4gKiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmV9IGFuZCBwb3B1bGF0ZXMgdGhlIG1hdGNoaW5nIGxpbmtzIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlQ2FjaGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcGFyc2UgdGhlIGV4dGVybmFsIGxpbmtzIGZyb20gdGhlIG5vdGUgY29udGVudCBib2R5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRQYXJzZUV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcnNlIHRoZSBleHRlcm5hbCBsaW5rcyBmcm9tIHNpbmdsZS1saW5rIChzaW5nbGUtdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRQYXJzZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcGFyc2UgdGhlIGV4dGVybmFsIGxpbmtzIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcnNlIHRoZSBpbnRlcm5hbCBsaW5rcyBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHBhcnNlTWV0YWRhdGF9LlxuICovXG5leHBvcnQgdHlwZSBQYXJzZU1ldGFkYXRhT3B0aW9ucyA9IFBhcnNlQ2FjaGVPcHRpb25zO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBjYWNoZSB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlOiBDYWNoZWRNZXRhZGF0YTtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byByZWdpc3RlciB0aGUgZmlsZSBjYWNoZSBmb3IuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgJ3MgcHVibGlzaGVkIEFQSSB0aGlzIG1vZHVsZSBjYWxscywgZGVjbGFyZWQgaGVyZSByYXRoZXIgdGhhbiBpbXBvcnRlZCxcbiAqIGJlY2F1c2UgdGhhdCBwbHVnaW4gaXMgbm90IGEgZGVwZW5kZW5jeSAocnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuIEl0cyBgYXBpLmQudHNgIGRlY2xhcmVzIHRoZSB3aG9sZSBvZiBpdC5cbiAqL1xuaW50ZXJmYWNlIEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSB7XG4gIC8qKlxuICAgKiBBbnN3ZXJzIGZyb20gdGhlIHBsdWdpbidzIGJhY2tsaW5rIGNhY2hlLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBUaGUgYmFja2xpbmtzLCBvciBgbnVsbGAgd2hpbGUgdGhlIHBsdWdpbidzIGBCYWNrbGlua3NgIG1vZHVsZSBpcyBvZmYuXG4gICAqL1xuICBnZXRCYWNrbGlua3NGb3JGaWxlOiAocGF0aE9yRmlsZTogUGF0aE9yRmlsZSkgPT4gQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBbnN3ZXJzIGZyb20gdGhlIHBsdWdpbidzIGJhY2tsaW5rIGNhY2hlIG9uY2UgdGhlIHBlbmRpbmcgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBwcm9jZXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGJhY2tsaW5rcywgb3IgdG8gYG51bGxgIHdoaWxlIHRoZSBwbHVnaW4ncyBgQmFja2xpbmtzYFxuICAgKiAgIG1vZHVsZSBpcyBvZmYuXG4gICAqL1xuICBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZTogKHBhdGhPckZpbGU6IFBhdGhPckZpbGUpID0+IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gfCBudWxsPjtcbn1cblxuLyoqXG4gKiBBIHNlbGVjdG9yIGZvciBhIGZlYXR1cmUtZ2F0ZWQgbGluayBjYXRlZ29yeSBpbiB7QGxpbmsgZ2V0TGlua3N9LlxuICovXG5pbnRlcmZhY2UgRmVhdHVyZUxpbmtTZWxlY3RvciB7XG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBsaW5rIGNhdGVnb3J5LCB1c2VkIGluIGVycm9yIG1lc3NhZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZlYXR1cmUgdGhhdCBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIGNhY2hlIGZvciB0aGlzIGNhdGVnb3J5IHRvIGJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlO1xuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBsaW5rcyBmb3IgdGhpcyBjYXRlZ29yeSBmcm9tIHRoZSBjYWNoZS5cbiAgICovXG4gIHNlbGVjdDogKGNhY2hlOiBDYWNoZWRNZXRhZGF0YUV4KSA9PiBSZWZlcmVuY2VbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoaXMgY2F0ZWdvcnkuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtcyBmb3Ige0BsaW5rIHRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeH0uXG4gKi9cbmludGVyZmFjZSBUb1BhcnNlZENhY2hlZE1ldGFkYXRhRXhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBsYWluIGNhY2hlZCBtZXRhZGF0YSB0byB3cmFwLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGU6IENhY2hlZE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90ZSBjb250ZW50IHRoZSBvZmZzZXRzIGluZGV4IGludG8sIHVzZWQgZm9yIGJvZHkgZXh0ZXJuYWwtbGluayBwYXJzaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyc2Ugb3B0aW9ucyBjb250cm9sbGluZyB3aGljaCBsaW5rcyB0byBwYXJzZS5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlQ2FjaGVPcHRpb25zO1xufVxuXG4vKipcbiAqIFRoZSBwbHVnaW4gaWQgb2YgdGhlIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAgcGx1Z2luLCB0aGUgc3VjY2Vzc29yIHRvIGBCYWNrbGluayBDYWNoZWAuXG4gKlxuICogVXNlZCBieSB7QGxpbmsgaGFzQmFja2xpbmtDYWNoZVBsdWdpbn0sIGFuZCBhcyB0aGUgcHJvdmlkZXIgaWQgdW5kZXIgd2hpY2gge0BsaW5rIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGh9IGFuZCB7QGxpbmsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmV9IGxvb2sgdXAgdGhlIHBsdWdpbidzIHB1Ymxpc2hlZCBBUEkuXG4gKi9cbmV4cG9ydCBjb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9QTFVHSU5fSUQgPSAnYWR2YW5jZWQtbWV0YWRhdGEtY2FjaGUnO1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCB2ZXJzaW9ucyBvZiBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgJ3MgQVBJIHRoaXMgbW9kdWxlIGNvbXBpbGVkIGFnYWluc3QuIGAxLjMuMGAgaXMgdGhlIGZpcnN0IHRvIGNhcnJ5IHRoZSB0d28gYmFja2xpbmsgbWV0aG9kcy5cbiAqL1xuY29uc3QgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX0FQSV9WRVJTSU9OX1JBTkdFID0gJ14xLjMuMCc7XG5cbi8qKlxuICogVGhlIHNjaGVtYXMgb2YgYSBiYWNrbGluayBtZXRob2QncyBwYXlsb2FkczogdGhlIG9uZSBwYXRoLW9yLWZpbGUgYXJndW1lbnQsIGFuZCB0aGUgYmFja2xpbmtzIG9yIGBudWxsYC5cbiAqXG4gKiBBIGNvcHkgb2YgdGhlIGBnZXRCYWNrbGlua3NGb3JGaWxlYCBhbmQgYGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlYCBlbnRyaWVzIG9mIGBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9BUElfQ09OVFJBQ1RgLCB3aGljaCBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgIHNoaXBzIGFzXG4gKiBpdHMgcm9vdCBgYXBpLWNvbnRyYWN0LnRzYCBhbmQgcHVibGlzaGVzLiBLZWVwIHRoZSBndWFyZHMgaW4gYWdyZWVtZW50IHdpdGggdGhhdCBmaWxlLCBzbyB0aGUgcHJvdmlkZXIgYW5kIHRoaXMgY29uc3VtZXIgY2hlY2sgb25lIGRlZmluaXRpb24uXG4gKi9cbmNvbnN0IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19NRVRIT0RfQ09OVFJBQ1QgPSB7XG4gIGlucHV0OiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8W3BhdGhPckZpbGU6IFBhdGhPckZpbGVdPihbeyBleHBlY3RlZDogJ2EgcGF0aCBvciBhIGZpbGUnLCB0eXBlR3VhcmQ6IGlzUGF0aE9yRmlsZSB9XSksXG4gIG91dHB1dDogY3JlYXRlVHlwZUd1YXJkU2NoZW1hKHsgZXhwZWN0ZWQ6ICdhIGJhY2tsaW5rcyBkaWN0aW9uYXJ5IG9yIG51bGwnLCB0eXBlR3VhcmQ6IGlzTnVsbGFibGVCYWNrbGlua3NEaWN0IH0pXG59O1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCBvZiB0aGUgbWVtYmVycyBvZiBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgJ3MgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBzbyBhIHJlY29yZCB0aGF0IGxhY2tzIGVpdGhlciBpcyBwYXNzZWQgb3ZlciwgYW5kIGEgcGF5bG9hZCB0aGF0IGJyZWFrcyBpdHMgc2lnbmF0dXJlIGlzIHJlcG9ydGVkIHdoaWxlIHRoZSBgb2JzaWRpYW4tbGliOnZhbGlkYXRlLXBsdWdpbi1hcGktcGF5bG9hZHNgIGRlYnVnIHN3aXRjaCBpcyBvbi5cbiAqL1xuY29uc3QgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX0FQSV9DT05UUkFDVDogQXBpQ29udHJhY3Q8QWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpPiA9IHtcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZTogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX01FVEhPRF9DT05UUkFDVCxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmU6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19NRVRIT0RfQ09OVFJBQ1Rcbn07XG5cbi8qKlxuICogVGhlIHBsdWdpbiBpZCBvZiB0aGUgcmV0aXJlZCBgQmFja2xpbmsgQ2FjaGVgIHBsdWdpbiwgc3VwZXJzZWRlZCBieSB7QGxpbmsgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEfS5cbiAqXG4gKiBTdGlsbCByZWNvZ25pemVkIGJ5IHtAbGluayBoYXNCYWNrbGlua0NhY2hlUGx1Z2lufSwgZGVsaWJlcmF0ZWx5LiBSZW1vdmluZyBhIHBsdWdpbiBmcm9tIHRoZSBjb21tdW5pdHkgcmVnaXN0cnkgYmxvY2tzIG5ldyBpbnN0YWxsczsgaXQgdW5pbnN0YWxscyBub3RoaW5nLCBzbyBldmVyeSBleGlzdGluZyB1c2VyIGtlZXBzIGl0IHVudGlsIHRoZXkgbWlncmF0ZSBieSBoYW5kLlxuICpcbiAqIEl0IG1heSBiZSBkcm9wcGVkIHdoZW4gYWxsIHRocmVlIG9mIHRoZSBmb2xsb3dpbmcgaG9sZCwgYW5kIG5vdCBiZWZvcmU6IGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAgaXMgbGlzdGVkIGluIHRoZSBjb21tdW5pdHkgcmVnaXN0cnksIHNvIG1pZ3JhdGluZyBpcyBwb3NzaWJsZSBhdCBhbGw7IHRoZSBmaW5hbCBgQmFja2xpbmsgQ2FjaGVgIGhhbmRvdmVyIHJlbGVhc2UgaGFzIGJlZW4gb3V0IGZvciBhdCBsZWFzdCB0d2VsdmUgbW9udGhzOyBhbmQgdGhpcyBsaWJyYXJ5IGlzIGN1dHRpbmcgYSBtYWpvciByZWxlYXNlIGFueXdheSwgYmVjYXVzZSBkcm9wcGluZyB0aGUgaWQgc2lsZW50bHkgdW4tZ2F0ZXMgY2FudmFzIGxpbmsgaGFuZGxpbmcgZm9yIGFueW9uZSB3aG8gaGFzIG5vdCBtaWdyYXRlZC4gVGhlcmUgaXMgbm8gY29zdCBwcmVzc3VyZSB0byBkcm9wIGl0IGVhcmxpZXIgLSByZWNvZ25pemluZyBhIGRlYWQgaWQgaXMgb25lIHN0cmluZyBjb21wYXJpc29uIG9uIGEgcGF0aCB0aGF0IGFscmVhZHkgcmVhZHMgYSBwbHVnaW4gcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjb25zdCBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUQgPSAnYmFja2xpbmstY2FjaGUnO1xuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkgZm9yIGFsbCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbkNsZWFuQ2FjaGUocmVzb2x2ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgb3IgcGF0aC5cbiAqIE5PVEU6IFRoZSBmaWxlIG1heSBiZSBub24tZXhpc3RlbnQuXG4gKlxuICogV2hlbiBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgIHB1Ymxpc2hlcyBpdHMgYmFja2xpbmtzIEFQSSBhbmQgaXRzIGBCYWNrbGlua3NgIG1vZHVsZSBpcyBvbiwgaXRzIGNhY2hlIGFuc3dlcnMuXG4gKiBPdGhlcndpc2UgdGhlIGFuc3dlciBjb21lcyBmcm9tIGEgYmFja2xpbmsgaW5kZXggd2hvc2UgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIGNhbmRpZGF0ZSBub3RlcyByYXRoZXIgdGhhblxuICogdG8gZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdCwgYW5kIHdoaWNoIGdpdmVzIHRoZSBzYW1lIHJlZmVyZW5jZXMgT2JzaWRpYW4ncyBvd24gYGdldEJhY2tsaW5rc0ZvckZpbGVgIGdpdmVzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGJhY2tsaW5rcyBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZSwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuICB1c2luZyBfcmVnaXN0cmF0aW9uID0gcmVnaXN0ZXJGaWxlcyhhcHAsIFtmaWxlXSk7XG4gIHJldHVybiBmaW5kQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpKCk/LmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSkgPz8gZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUoYXBwLCBmaWxlKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAqXG4gKiBXaGVuIGBBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZWAgcHVibGlzaGVzIGl0cyBiYWNrbGlua3MgQVBJIGFuZCBpdHMgYEJhY2tsaW5rc2AgbW9kdWxlIGlzIG9uLCB0aGF0IEFQSSBhbnN3ZXJzLlxuICpcbiAqIE90aGVyd2lzZSB0aGlzIGlzIE5PVCBhIHB1cmUgcmVhZC4gSXQgdmVyaWZpZXNcbiAqIGVhY2ggYmFja2xpbmsgYWdhaW5zdCB0aGUgbm90ZSdzIGN1cnJlbnQgdGV4dCwgYW5kIHRvIGRvIHRoYXQgaXQgY2FsbHMge0BsaW5rIHNhdmVOb3RlfSBvbiBldmVyeVxuICogbm90ZSB0aGF0IGxpbmtzIHRvIHRoZSBmaWxlLCB3aGljaCBzYXZlcyBhbnkgb3BlbiBlZGl0b3IgdmlldyBvZiB0aG9zZSBub3RlcyB0aGF0IGhhcyB1bnNhdmVkXG4gKiBjaGFuZ2VzLiBDYWxsIGl0IGZyb20gYW4gZXhwbGljaXQgdXNlciBhY3Rpb24uIERvIG5vdCBjYWxsIGl0IGZyb20gYW4gYXV0b21hdGljIHRyaWdnZXIgKGEgdmF1bHQgb3JcbiAqIG1ldGFkYXRhIGV2ZW50LCBhIHNhdmUgb3IgcmVuZGVyIHBhdGNoKSB0aGF0IG9ubHkgZGVjaWRlcyB3aGV0aGVyIHRvIGFjdC4gVGhlcmUsIGEgZm9yY2VkIHNhdmUgY2FuXG4gKiByYWNlIGFub3RoZXIgcGx1Z2luJ3MgaW4tZmxpZ2h0IGVkaXRvciBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZXRyaWV2aW5nIHRoZSBiYWNrbGlua3MuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGRpY3Rpb25hcnkgb2YgYmFja2xpbmtzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUocGFyYW1zOiBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZVBhcmFtcyk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+IHtcbiAgY29uc3QgeyBhcHAsIHBhdGhPckZpbGUsIC4uLm9wdGlvbnMgfSA9IHBhcmFtcztcbiAgY29uc3QgY2FjaGVkQmFja2xpbmtzID0gYXdhaXQgZmluZEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSgpPy5nZXRCYWNrbGlua3NGb3JGaWxlU2FmZShwYXRoT3JGaWxlKTtcbiAgaWYgKGNhY2hlZEJhY2tsaW5rcykge1xuICAgIHJldHVybiBjYWNoZWRCYWNrbGlua3M7XG4gIH1cblxuICBsZXQgYmFja2xpbmtzOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiA9IG5ldyBDdXN0b21BcnJheURpY3RJbXBsPFJlZmVyZW5jZT4oKTtcbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgYXN5bmMgb3BlcmF0aW9uRnVuY3Rpb24oYWJvcnRTaWduYWwpIHtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBjb25zdCBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZSB9KTtcbiAgICAgIGF3YWl0IGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHApO1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBmaWxlKTtcbiAgICAgIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgYmFja2xpbmtzLmtleXMoKSkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICBjb25zdCBub3RlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogbm90ZVBhdGggfSk7XG4gICAgICAgIGlmICghbm90ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEEgY2FudmFzIGhvbGRlciBjYW5ub3QgYmUgY2hlY2tlZCBhZ2FpbnN0IGl0cyB0ZXh0LiBJdHMgZmlsZS1ub2RlIHJlZmVyZW5jZXMgY2Fycnkgbm8gcG9zaXRpb24sIGFuZFxuICAgICAgICAvLyBPYnNpZGlhbiByZXBvcnRzIGEgdGV4dC1ub2RlIGVtYmVkIHdpdGggYSBwb3NpdGlvbiBpbnRvIHRoYXQgbm9kZSdzIG93biB0ZXh0LCBub3QgaW50byB0aGUgY2FudmFzIEpTT04sXG4gICAgICAgIC8vIHNvIHNsaWNpbmcgdGhlIGZpbGUgYXQgaXQgbmV2ZXIgZ2l2ZXMgdGhlIGxpbmsgYmFjayBhbmQgdGhlIHJldHJ5IHdvdWxkIG5ldmVyIGVuZC5cbiAgICAgICAgaWYgKGlzQ2FudmFzRmlsZShub3RlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBub3RlKTtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZFNhZmUoYXBwLCBub3RlKTtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgaWYgKCFjb250ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChub3RlUGF0aCk7XG4gICAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQYXJzZWQgb25seSB3aGVuIGEgZnJvbnRtYXR0ZXIgbGluayBuZWVkcyBpdDogYSBub3RlIHdob3NlIFlBTUwgZG9lcyBub3QgcGFyc2Ugc3RpbGwgaG9sZHMgYm9keSBsaW5rcyxcbiAgICAgICAgLy8gYW5kIGBudWxsYCBtYXJrcyBhIHBhcnNlIHRoYXQgZmFpbGVkLCBzbyBpdHMgZnJvbnRtYXR0ZXIgbGlua3MgYXJlIHNraXBwZWQgcmF0aGVyIHRoYW4gcmV0cmllZCBmb3JldmVyLlxuICAgICAgICBsZXQgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGxpbmspKSB7XG4gICAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICAgIGlmIChmcm9udG1hdHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGZyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlck9yTnVsbChjb250ZW50LCBub3RlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZnJvbnRtYXR0ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgbGluay5rZXkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmtXaXRoT2Zmc2V0cyA9IHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKTtcbiAgICAgICAgICAgIGFjdHVhbExpbmsgPSBwcm9wZXJ0eVZhbHVlLnNsaWNlKGxpbmtXaXRoT2Zmc2V0cy5zdGFydE9mZnNldCwgbGlua1dpdGhPZmZzZXRzLmVuZE9mZnNldCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYWN0dWFsTGluayAhPT0gbGluay5vcmlnaW5hbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5MaWIubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlUGF0aCwgeyBmaWxlUGF0aDogZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpIH0pLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCxcbiAgICByZXRyeU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IG9wdGlvbnMuc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgPz8gdHJ1ZVxuICB9KTtcblxuICByZXR1cm4gYmFja2xpbmtzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY2FjaGVkIG1ldGFkYXRhIGZvciBhIGdpdmVuIGZpbGUgb3IgcGF0aC5cbiAqXG4gKiBUaGlzIGlzIE5PVCBhIHB1cmUgcmVhZDogYmVmb3JlIGl0IHJlYWRzIHRoZSBjYWNoZSwgaXQgY2FsbHMge0BsaW5rIHNhdmVOb3RlfSwgd2hpY2ggc2F2ZXMgYW55XG4gKiBvcGVuIGVkaXRvciB2aWV3IG9mIHRoZSBub3RlIHRoYXQgaGFzIHVuc2F2ZWQgY2hhbmdlcy4gVGhhdCBzYXZlIGlzIHdoeSB0aGUgY2FjaGUgbWF0Y2hlcyB3aGF0IHRoZVxuICogdXNlciBzZWVzLCBhbmQgd2h5IGEgY29tbWFuZCB0aGF0IHJld3JpdGVzIHRoZSBub3RlIGNhbiB1c2UgdGhpcyBzYWZlbHkgd2l0aG91dCBpdHMgcmV3cml0ZSBiZWluZ1xuICogY2xvYmJlcmVkLiBJdCBpcyBhbHNvIGEgd3JpdGUgb24gdGhlIG5vdGUuIFNvIGRvIG5vdCBjYWxsIHRoaXMgZnJvbSBhbiBhdXRvbWF0aWMgdHJpZ2dlciAoYSB2YXVsdFxuICogb3IgbWV0YWRhdGEgZXZlbnQsIGEgc2F2ZSBvciByZW5kZXIgcGF0Y2gsIGEgbGF5b3V0IGhvb2spIHRoYXQgb25seSBkZWNpZGVzIHdoZXRoZXIgdG8gYWN0OiBhXG4gKiBmb3JjZWQgc2F2ZSBvbmUgdGljayBhZnRlciBhbm90aGVyIHBsdWdpbiBoYXMgZGlzcGF0Y2hlZCBhIGNoYW5nZSBpbnRvIHRoZSBlZGl0b3IgY2FuIGxlYXZlXG4gKiBPYnNpZGlhbidzIGVkaXRvciByZW5kZXJpbmcgc3RhbGUgc3RhdGUuIEEgcmVhZC1vbmx5IHByb2JlIG9uIHRoZSBub3RlJ3MgY3VycmVudCB0ZXh0IHNob3VsZCB1c2VcbiAqIHtAbGluayBwYXJzZU1ldGFkYXRhfSBvbiB0aGF0IHRleHQgaW5zdGVhZC4gSXQgbmVlZHMgbm8gdmlldywgbm8gY2FjaGUgYW5kIG5vIHNhdmUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZU9yUGF0aCAtIFRoZSBmaWxlIG9yIHBhdGggdG8gcmV0cmlldmUgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMgY29udHJvbGxpbmcgd2hpY2ggYWRkaXRpb25hbCBsaW5rcyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIHRoZSBmaWxlLCBvciBgbnVsbGAgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENhY2hlU2FmZShhcHA6IEFwcCwgZmlsZU9yUGF0aDogUGF0aE9yRmlsZSwgb3B0aW9uczogR2V0Q2FjaGVTYWZlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDYWNoZWRNZXRhZGF0YUV4IHwgbnVsbD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogZmlsZU9yUGF0aCB9KTtcblxuICB0cnkge1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGw7XG4gICAgaWYgKGZpbGUuZGVsZXRlZCkge1xuICAgICAgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgZmlsZSk7XG5cbiAgICAgIGNvbnN0IGZpbGVDYWNoZUVudHJ5ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gICAgICBjb25zdCBpc1VwVG9EYXRlID0gZmlsZUNhY2hlRW50cnk/Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWVcbiAgICAgICAgJiYgZmlsZUNhY2hlRW50cnkuc2l6ZSA9PT0gZmlsZS5zdGF0LnNpemVcbiAgICAgICAgJiYgT2JqZWN0Lmhhc093bihhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlLCBmaWxlQ2FjaGVFbnRyeS5oYXNoKTtcbiAgICAgIGlmICghaXNVcFRvRGF0ZSkge1xuICAgICAgICBhd2FpdCBhcHAubWV0YWRhdGFDYWNoZS5jb21wdXRlRmlsZU1ldGFkYXRhQXN5bmMoZmlsZSk7XG4gICAgICAgIGF3YWl0IGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHApO1xuICAgICAgfVxuICAgICAgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBPbmx5IHRoZSBib2R5LWV4dGVybmFsIHBhcnNlIG5lZWRzIHRoZSBmaWxlIGNvbnRlbnQ7IGZyb250bWF0dGVyIHBhcnNpbmcgdXNlcyB0aGUgY2FjaGVkXG4gICAgLy8gZnJvbnRtYXR0ZXIsIHNvIGF2b2lkIHJlYWRpbmcgdGhlIGNvbnRlbnQgdW5sZXNzIGl0IGlzIGFjdHVhbGx5IG5lZWRlZC5cbiAgICBjb25zdCBjb250ZW50ID0gb3B0aW9ucy5zaG91bGRQYXJzZUV4dGVybmFsTGlua3MgPyBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlKSA6ICcnO1xuICAgIHJldHVybiB0b1BhcnNlZENhY2hlZE1ldGFkYXRhRXgoeyBjYWNoZSwgY29udGVudCwgb3B0aW9ucyB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZnJvbnQgbWF0dGVyIGZyb20gdGhlIG1ldGFkYXRhIGNhY2hlIHNhZmVseS5cbiAqXG4gKiBJdCByZWFkcyB0aHJvdWdoIHtAbGluayBnZXRDYWNoZVNhZmV9LCBzbyBpdCBzYXZlcyBhbnkgb3BlbiBlZGl0b3IgdmlldyBvZiB0aGUgbm90ZSB0aGF0IGhhc1xuICogdW5zYXZlZCBjaGFuZ2VzLiBTZWUge0BsaW5rIGdldENhY2hlU2FmZX0gZm9yIHdoZW4gdGhhdCBzYXZlIG1hdHRlcnMgYW5kIHdoYXQgdG8gdXNlIGluc3RlYWQuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZXRyaWV2ZSB0aGUgZnJvbnQgbWF0dGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgY29tYmluZWQgZnJvbnQgbWF0dGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RnJvbnRtYXR0ZXJTYWZlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+PiB7XG4gIGNvbnN0IGNhY2hlID0gYXdhaXQgZ2V0Q2FjaGVTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIHJldHVybiAoY2FjaGU/LmZyb250bWF0dGVyID8/IHt9KSBhcyBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHNlbGVjdGVkIGxpbmtzIGZyb20gdGhlIHByb3ZpZGVkIGNhY2hlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmV0cmlldmluZyB0aGUgbGlua3MuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiByZWZlcmVuY2VzIHJlcHJlc2VudGluZyB0aGUgc2VsZWN0ZWQgbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rcyhwYXJhbXM6IEdldExpbmtzUGFyYW1zKTogUmVmZXJlbmNlW10ge1xuICBjb25zdCB7XG4gICAgY2FjaGUsXG4gICAgc2hvdWxkSW5jbHVkZUVtYmVkcyA9IHRydWUsXG4gICAgc2hvdWxkSW5jbHVkZUV4dGVybmFsTGlua3MgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyTGlua3MgPSB0cnVlLFxuICAgIHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZVJlZmVyZW5jZXMgPSB0cnVlXG4gIH0gPSBwYXJhbXM7XG5cbiAgbGV0IGxpbmtzOiBSZWZlcmVuY2VbXSA9IFtcbiAgICAuLi4oc2hvdWxkSW5jbHVkZVJlZmVyZW5jZXMgPyBjYWNoZS5saW5rcyA/PyBbXSA6IFtdKSxcbiAgICAuLi4oc2hvdWxkSW5jbHVkZUVtYmVkcyA/IGNhY2hlLmVtYmVkcyA/PyBbXSA6IFtdKSxcbiAgICAuLi4oc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyTGlua3MgPyBjYWNoZS5mcm9udG1hdHRlckxpbmtzID8/IFtdIDogW10pXG4gIF07XG5cbiAgY29uc3QgZmVhdHVyZUxpbmtTZWxlY3RvcnM6IEZlYXR1cmVMaW5rU2VsZWN0b3JbXSA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogJ2JvZHkgZXh0ZXJuYWwgbGlua3MnLFxuICAgICAgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNlbGVjdDogKGNhY2hlRXgpID0+IGNhY2hlRXguZXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVFeHRlcm5hbExpbmtzXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogJ2Zyb250bWF0dGVyIGV4dGVybmFsIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNlbGVjdDogKGNhY2hlRXgpID0+IGNhY2hlRXguZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzLFxuICAgICAgc2hvdWxkSW5jbHVkZTogc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rc1xuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdtdWx0aS12YWx1ZSBmcm9udG1hdHRlciBleHRlcm5hbCBsaW5rcycsXG4gICAgICBmZWF0dXJlOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzLFxuICAgICAgc2VsZWN0OiAoY2FjaGVFeCkgPT4gY2FjaGVFeC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzLFxuICAgICAgc2hvdWxkSW5jbHVkZTogc2hvdWxkSW5jbHVkZU11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3NcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnbXVsdGktdmFsdWUgZnJvbnRtYXR0ZXIgbGlua3MnLFxuICAgICAgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4Lm11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzLFxuICAgICAgc2hvdWxkSW5jbHVkZTogc2hvdWxkSW5jbHVkZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzXG4gICAgfVxuICBdO1xuXG4gIGZvciAoY29uc3QgZmVhdHVyZUxpbmtTZWxlY3RvciBvZiBmZWF0dXJlTGlua1NlbGVjdG9ycykge1xuICAgIGlmICghZmVhdHVyZUxpbmtTZWxlY3Rvci5zaG91bGRJbmNsdWRlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ2FjaGVkTWV0YWRhdGFFeChjYWNoZSkgfHwgIWNhY2hlLmZlYXR1cmVzLmluY2x1ZGVzKGZlYXR1cmVMaW5rU2VsZWN0b3IuZmVhdHVyZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGluY2x1ZGUgJHtmZWF0dXJlTGlua1NlbGVjdG9yLmRlc2NyaXB0aW9ufTogdGhlIGNhY2hlIHdhcyBub3QgY29tcHV0ZWQgd2l0aCB0aGUgJHtmZWF0dXJlTGlua1NlbGVjdG9yLmZlYXR1cmV9IGZlYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgbGlua3MucHVzaCguLi5lbnN1cmVOb25OdWxsYWJsZShmZWF0dXJlTGlua1NlbGVjdG9yLnNlbGVjdChjYWNoZSkpKTtcbiAgfVxuXG4gIHNvcnRSZWZlcmVuY2VzKGxpbmtzKTtcblxuICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgbGlua3MgPSBsaW5rcy5maWx0ZXIoKGxpbmssIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xpbmsgPSBlbnN1cmVOb25OdWxsYWJsZShsaW5rc1tpbmRleCAtIDFdKTtcblxuICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGxpbmspICYmIGlzUmVmZXJlbmNlQ2FjaGUocHJldmlvdXNMaW5rKSkge1xuICAgICAgcmV0dXJuIGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0ICE9PSBwcmV2aW91c0xpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlKGxpbmspICYmIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocHJldmlvdXNMaW5rKSkge1xuICAgICAgY29uc3QgbGlua1N0YXJ0T2Zmc2V0ID0gaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspID8gbGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICBjb25zdCBwcmV2aW91c0xpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhwcmV2aW91c0xpbmspID8gcHJldmlvdXNMaW5rLnN0YXJ0T2Zmc2V0IDogMDtcbiAgICAgIHJldHVybiBsaW5rLmtleSAhPT0gcHJldmlvdXNMaW5rLmtleSB8fCBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMobGluaykgIT09IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhwcmV2aW91c0xpbmspXG4gICAgICAgIHx8IGxpbmtTdGFydE9mZnNldCAhPT0gcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBsaW5rcztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBiYWNrbGluayBjYWNoZSBwbHVnaW4gaXMgY3VycmVudGx5IGxvYWRlZCAtIGVpdGhlciBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgICh7QGxpbmsgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEfSkgb3IgaXRzIHJldGlyZWQgcHJlZGVjZXNzb3IgYEJhY2tsaW5rIENhY2hlYCAoe0BsaW5rIEJBQ0tMSU5LX0NBQ0hFX1BMVUdJTl9JRH0pLlxuICpcbiAqIFN1Y2ggYSBwbHVnaW4ga2VlcHMgYSBkcmFpbi1vbi1yZWFkIGJhY2tsaW5rIGluZGV4IGFuZCBpbmRleGVzIGNhbnZhcyBtZXRhZGF0YSwgc28gYSBjYWxsZXIgdGhhdCBjb21wZW5zYXRlcyBmb3IgT2JzaWRpYW4ncyBvd24gZ2FwcyBjYW4gc3RhbmQgZG93biB3aGlsZSBvbmUgaXMgcHJlc2VudC4gQm90aCBpZHMgYXJlIHJlY29nbml6ZWQ7IHtAbGluayBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUR9IHJlY29yZHMgd2hlbiB0aGUgcmV0aXJlZCBvbmUgbWF5IGJlIGRyb3BwZWQuXG4gKlxuICogVGhpcyByZWFkcyB0aGUgTE9BREVEIHBsdWdpbiBpbnN0YW5jZSByYXRoZXIgdGhhbiBgYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnNgLCBkZWxpYmVyYXRlbHk6IHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBwbHVnaW4ncyBwYXRjaGVzIGFyZSBpbiBwbGFjZSByaWdodCBub3csIGFuZCB0aGV5IGFyZSBub3QgdW50aWwgaXQgaGFzIGxvYWRlZC4gUGx1Z2lucyBsb2FkIGluIGFuIHVuc3BlY2lmaWVkIG9yZGVyLCBzbyBjYWxsIHRoaXMgZnJvbSBhIHVzZXItZHJpdmVuIHBhdGggcmF0aGVyIHRoYW4gZnJvbSBwbHVnaW4gbG9hZCAtIHNlZSBydWxlIEwyNSBpbiBgQUdFTlRTLm1kYC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhIGJhY2tsaW5rIGNhY2hlIHBsdWdpbiBpcyBsb2FkZWQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQmFja2xpbmtDYWNoZVBsdWdpbihhcHA6IEFwcCk6IGJvb2xlYW4ge1xuICByZXR1cm4gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRCkgIT09IG51bGwgfHwgYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKEJBQ0tMSU5LX0NBQ0hFX1BMVUdJTl9JRCkgIT09IG51bGw7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2FjaGUgaXMgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0gKGkuZS4gaXQgd2FzIGNvbXB1dGVkIHdpdGggZXh0ZXJuYWwtbGlua1xuICogcGFyc2luZyBlbmFibGVkKS5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgY2FjaGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNhY2hlIGlzIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FjaGVkTWV0YWRhdGFFeChjYWNoZTogQ2FjaGVkTWV0YWRhdGEpOiBjYWNoZSBpcyBDYWNoZWRNZXRhZGF0YUV4IHtcbiAgcmV0dXJuICdmZWF0dXJlcycgaW4gY2FjaGU7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gcGFyc2UgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMgY29udHJvbGxpbmcgd2hpY2ggYWRkaXRpb25hbCBsaW5rcyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU1ldGFkYXRhKGFwcDogQXBwLCAkc3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM6IFBhcnNlTWV0YWRhdGFPcHRpb25zID0ge30pOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhRXg+IHtcbiAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICBjb25zdCBidWZmZXIgPSBlbmNvZGVyLmVuY29kZSgkc3RyaW5nKS5idWZmZXI7XG4gIGNvbnN0IGNhY2hlID0gYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZU1ldGFkYXRhQXN5bmMoYnVmZmVyKSA/PyB7fTtcbiAgcmV0dXJuIHRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeCh7IGNhY2hlLCBjb250ZW50OiAkc3RyaW5nLCBvcHRpb25zIH0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSBmb3IgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBmaWxlIGNhY2hlLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSB3aGVuIGRpc3Bvc2VkLCBmb3IgdXNlIHdpdGggYHVzaW5nYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKHBhcmFtczogUmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGVQYXJhbXMpOiBEaXNwb3NhYmxlIHtcbiAgY29uc3QgeyBhcHAsIGNhY2hlLCBwYXRoT3JGaWxlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGV4aXN0aW5nJyk7XG4gIH1cblxuICBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXSA9IHtcbiAgICBoYXNoOiBmaWxlLnBhdGgsXG4gICAgbXRpbWU6IDAsXG4gICAgc2l6ZTogMFxuICB9O1xuXG4gIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZS5wYXRoXSA9IGNhY2hlO1xuXG4gIHJldHVybiBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgdW5yZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZShhcHAsIGZpbGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlfSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBmaWxlcyB3aGVuIGRpc3Bvc2VkLCBmb3IgdXNlIHdpdGggYHVzaW5nYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZXMoYXBwOiBBcHAsIGZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBEaXNwb3NhYmxlIHtcbiAgY29uc3QgcmVnaXN0ZXJlZEZpbGVzQ291bnRzID0gZ2V0UmVnaXN0ZXJlZEZpbGVzQ291bnRzKCk7XG5cbiAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgIHdoaWxlIChmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGxldCBjb3VudCA9IHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5nZXQoZmlsZS5wYXRoKSA/PyAwO1xuICAgICAgY291bnQrKztcbiAgICAgIHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5zZXQoZmlsZS5wYXRoLCBjb3VudCk7XG5cbiAgICAgIGFwcC52YXVsdC5maWxlTWFwW2ZpbGUucGF0aF0gPSBmaWxlO1xuXG4gICAgICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgIH1cblxuICAgICAgZmlsZSA9IGdldEZvbGRlcih7XG4gICAgICAgIGFwcCxcbiAgICAgICAgcGF0aE9yRm9sZGVyOiBwYXJlbnRGb2xkZXJQYXRoKGZpbGUucGF0aCksXG4gICAgICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgIGNhbGxiYWNrOiAoKTogdm9pZCA9PiB7XG4gICAgICB1bnJlZ2lzdGVyRmlsZXMoYXBwLCBmaWxlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSBmb3IgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byB1bnJlZ2lzdGVyIHRoZSBmaWxlIGNhY2hlIGZvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiB2b2lkIHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZSB9KTtcbiAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgZXhpc3RpbmcnKTtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gIGRlbGV0ZSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtmaWxlLnBhdGhdO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGZpbGVzIGZyb20gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byB1bnJlZ2lzdGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5yZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogdm9pZCB7XG4gIGNvbnN0IHJlZ2lzdGVyZWRGaWxlc0NvdW50cyA9IGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpO1xuXG4gIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICB3aGlsZSAoZmlsZS5kZWxldGVkKSB7XG4gICAgICBsZXQgY291bnQgPSByZWdpc3RlcmVkRmlsZXNDb3VudHMuZ2V0KGZpbGUucGF0aCkgPz8gMTtcbiAgICAgIGNvdW50LS07XG4gICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuc2V0KGZpbGUucGF0aCwgY291bnQpO1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5kZWxldGUoZmlsZS5wYXRoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgICBkZWxldGUgYXBwLnZhdWx0LmZpbGVNYXBbZmlsZS5wYXRoXTtcblxuICAgICAgICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgYXBwLm1ldGFkYXRhQ2FjaGUudW5pcXVlRmlsZUxvb2t1cC5yZW1vdmUoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCksIGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZpbGUgPSBnZXRGb2xkZXIoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHBhdGhPckZvbGRlcjogcGFyZW50Rm9sZGVyUGF0aChmaWxlLnBhdGgpLFxuICAgICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpKCk6IEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSB8IG51bGwge1xuICByZXR1cm4gZmluZFBsdWdpbkFwaTxBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGk+KHtcbiAgICBhcGlWZXJzaW9uUmFuZ2U6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19BUElfVkVSU0lPTl9SQU5HRSxcbiAgICBjb250cmFjdDogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX0FQSV9DT05UUkFDVCxcbiAgICBwbHVnaW5JZDogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRSZWdpc3RlcmVkRmlsZXNDb3VudHMoKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkxpYlN0YXRlKCdyZWdpc3RlcmVkRmlsZXNDb3VudHMnLCBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKS52YWx1ZTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmFsbHkgcmVjb2duaXplcyB0aGUgYmFja2xpbmtzIGRpY3Rpb25hcnkgYW5vdGhlciBwbHVnaW4ncyBjb3B5IGJ1aWx0LCBvciBgbnVsbGAuIFRoZSBjbGFzcyBpdCB3YXMgYnVpbHQgZnJvbSBsaXZlcyBpbiB0aGF0IGNvcHksIHNvIGBpbnN0YW5jZW9mYCBjYW5ub3QgYmUgdXNlZCAocnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIHJlYWRzIGFzIGEgYmFja2xpbmtzIGRpY3Rpb25hcnkuXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbGFibGVCYWNrbGlua3NEaWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gfCBudWxsIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsXG4gICAgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICYmIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZGF0YScpIGluc3RhbmNlb2YgTWFwXG4gICAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdnZXQnKSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAna2V5cycpID09PSAnZnVuY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VFeHRlcm5hbEJvZHlMaW5rcyhjb250ZW50OiBzdHJpbmcsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFBhcnNlTGlua1JlZmVyZW5jZVtdIHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJFbmRPZmZzZXQgPSBjYWNoZS5mcm9udG1hdHRlclBvc2l0aW9uPy5lbmQub2Zmc2V0ID8/IDA7XG4gIHJldHVybiBwYXJzZUxpbmtzKGNvbnRlbnQpXG4gICAgLmZpbHRlcigocGFyc2VMaW5rUmVzdWx0KSA9PiBwYXJzZUxpbmtSZXN1bHQuaXNFeHRlcm5hbCAmJiBwYXJzZUxpbmtSZXN1bHQuc3RhcnRPZmZzZXQgPj0gZnJvbnRtYXR0ZXJFbmRPZmZzZXQpXG4gICAgLm1hcCgocGFyc2VMaW5rUmVzdWx0KSA9PiB0b1BhcnNlTGlua1JlZmVyZW5jZSh7IGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdCB9KSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJPck51bGwoY29udGVudDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+IHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZyb250bWF0dGVyIHBhcnNpbmcgZmFpbGVkIGluICR7cGF0aH1gLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4KHBhcmFtczogVG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4UGFyYW1zKTogQ2FjaGVkTWV0YWRhdGFFeCB7XG4gIGNvbnN0IHsgY2FjaGUsIGNvbnRlbnQsIG9wdGlvbnMgfSA9IHBhcmFtcztcbiAgY29uc3QgZmVhdHVyZXM6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlW10gPSBbQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTmF0aXZlXTtcbiAgY29uc3QgcmVzdWx0OiBDYWNoZWRNZXRhZGF0YUV4ID0geyAuLi5jYWNoZSwgZmVhdHVyZXMgfTtcblxuICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZUV4dGVybmFsTGlua3MpIHtcbiAgICByZXN1bHQuZXh0ZXJuYWxMaW5rcyA9IHBhcnNlRXh0ZXJuYWxCb2R5TGlua3MoY29udGVudCwgY2FjaGUpO1xuICAgIGZlYXR1cmVzLnB1c2goQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRXh0ZXJuYWxMaW5rcyk7XG4gIH1cblxuICBpZiAoXG4gICAgb3B0aW9ucy5zaG91bGRQYXJzZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rc1xuICAgIHx8IG9wdGlvbnMuc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzXG4gICAgfHwgb3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzXG4gICkge1xuICAgIGNvbnN0IGZyb250bWF0dGVyTGlua3MgPSBwYXJzZUZyb250bWF0dGVyTGlua3MoY2FjaGUuZnJvbnRtYXR0ZXIpO1xuXG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUGFyc2VGcm9udG1hdHRlckV4dGVybmFsTGlua3MpIHtcbiAgICAgIHJlc3VsdC5mcm9udG1hdHRlckV4dGVybmFsTGlua3MgPSBmcm9udG1hdHRlckxpbmtzLmZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcztcbiAgICAgIGZlYXR1cmVzLnB1c2goQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MpIHtcbiAgICAgIHJlc3VsdC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gZnJvbnRtYXR0ZXJMaW5rcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzO1xuICAgICAgZmVhdHVyZXMucHVzaChDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzKSB7XG4gICAgICByZXN1bHQubXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MgPSBmcm9udG1hdHRlckxpbmtzLm11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzO1xuICAgICAgZmVhdHVyZXMucHVzaChDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Q3ZELGFBQU8sK0NBQW9CLHlCQUF5QixvQkFBSSxJQUFvQixDQUFDLEVBQUU7QUFDakY7QUFRQSxTQUFTLHdCQUF3QixPQUE0RDtBQUMzRixTQUFPLFVBQVUsUUFDWCxPQUFPLFVBQVUsWUFDaEIsUUFBUSxJQUFJLE9BQU8sTUFBTSxhQUFhLE9BQ3RDLE9BQU8sUUFBUSxJQUFJLE9BQU8sS0FBSyxNQUFNLGNBQ3JDLE9BQU8sUUFBUSxJQUFJLE9BQU8sTUFBTSxNQUFNO0FBQy9DO0FBRUEsU0FBUyx1QkFBdUIsU0FBaUIsT0FBNkM7QUFDNUYsUUFBTSx1QkFBdUIsTUFBTSxxQkFBcUIsSUFBSSxVQUFVO0FBQ3RFLGFBQU8sOEJBQVcsT0FBTyxFQUN0QixPQUFPLENBQUMsb0JBQW9CLGdCQUFnQixjQUFjLGdCQUFnQixlQUFlLG9CQUFvQixFQUM3RyxJQUFJLENBQUMsd0JBQW9CLHdDQUFxQixFQUFFLFNBQVMsZ0JBQWdCLENBQUMsQ0FBQztBQUNoRjtBQUVBLFNBQVMsdUJBQXVCLFNBQWlCLE1BQW1EO0FBQ2xHLE1BQUk7QUFDRixlQUFPLHFDQUFpQixPQUFPO0FBQUEsRUFDakMsU0FBUyxPQUFPO0FBQ2QsaUNBQVcsSUFBSSxNQUFNLGlDQUFpQyxJQUFJLElBQUksRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQy9FLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxTQUFTLHlCQUF5QixRQUEwRDtBQUMxRixRQUFNLEVBQUUsT0FBTyxTQUFTLFFBQVEsSUFBSTtBQUNwQyxRQUFNLFdBQXNDLENBQUMscUJBQThCO0FBQzNFLFFBQU0sU0FBMkIsRUFBRSxHQUFHLE9BQU8sU0FBUztBQUV0RCxNQUFJLFFBQVEsMEJBQTBCO0FBQ3BDLFdBQU8sZ0JBQWdCLHVCQUF1QixTQUFTLEtBQUs7QUFDNUQsYUFBUyxLQUFLLG1DQUFxQztBQUFBLEVBQ3JEO0FBRUEsTUFDRSxRQUFRLHVDQUNMLFFBQVEsaURBQ1IsUUFBUSx1Q0FDWDtBQUNBLFVBQU0sdUJBQW1CLHlDQUFzQixNQUFNLFdBQVc7QUFFaEUsUUFBSSxRQUFRLHFDQUFxQztBQUMvQyxhQUFPLDJCQUEyQixpQkFBaUI7QUFDbkQsZUFBUyxLQUFLLHlEQUFnRDtBQUFBLElBQ2hFO0FBRUEsUUFBSSxRQUFRLCtDQUErQztBQUN6RCxhQUFPLHFDQUFxQyxpQkFBaUI7QUFDN0QsZUFBUyxLQUFLLDZFQUEwRDtBQUFBLElBQzFFO0FBRUEsUUFBSSxRQUFRLHVDQUF1QztBQUNqRCxhQUFPLDZCQUE2QixpQkFBaUI7QUFDckQsZUFBUyxLQUFLLDZEQUFrRDtBQUFBLElBQ2xFO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLCJuYW1lcyI6WyJDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZSJdfQ==
|
|
@@ -129,7 +129,7 @@ class AlertModal extends import_modal.ModalBase {
|
|
|
129
129
|
super(params);
|
|
130
130
|
this.addCssClasses(import_css_class.CssClass.AlertModal);
|
|
131
131
|
this.message = params.message;
|
|
132
|
-
this.okButtonText = params.okButtonText ?? (0, import_i18next.t)(($) => $.
|
|
132
|
+
this.okButtonText = params.okButtonText ?? (0, import_i18next.t)(($) => $.obsidianLib.buttons.ok);
|
|
133
133
|
this.title = params.title ?? "";
|
|
134
134
|
}
|
|
135
135
|
onClose() {
|
|
@@ -157,4 +157,4 @@ async function alert(params) {
|
|
|
157
157
|
0 && (module.exports = {
|
|
158
158
|
alert
|
|
159
159
|
});
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RhbHMvYWxlcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgYWxlcnQgbW9kYWxzIGluIE9ic2lkaWFuLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBmdW5jdGlvbiB0byBkaXNwbGF5IGEgbW9kYWwgd2l0aCBhIG1lc3NhZ2UgaW4gT2JzaWRpYW4uIFRoZSBtb2RhbCBpbmNsdWRlcyBhbiBcIk9LXCIgYnV0dG9uIHRvIGNsb3NlIGl0LlxuICovXG5cbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtcyxcbiAgTW9kYWxQYXJhbXNCYXNlXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWxlcnRNb2RhbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRQYXJhbXMgZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0aXRsZSBvZiB0aGUgbW9kYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbn1cblxudHlwZSBBbGVydE1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBBbGVydFBhcmFtcyAmIE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zPHZvaWQ+O1xuXG5jbGFzcyBBbGVydE1vZGFsIGV4dGVuZHMgTW9kYWxCYXNlPHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9rQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFsZXJ0TW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkFsZXJ0TW9kYWwpO1xuICAgIHRoaXMubWVzc2FnZSA9IHBhcmFtcy5tZXNzYWdlO1xuICAgIHRoaXMub2tCdXR0b25UZXh0ID0gcGFyYW1zLm9rQnV0dG9uVGV4dCA/
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RhbHMvYWxlcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgYWxlcnQgbW9kYWxzIGluIE9ic2lkaWFuLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBmdW5jdGlvbiB0byBkaXNwbGF5IGEgbW9kYWwgd2l0aCBhIG1lc3NhZ2UgaW4gT2JzaWRpYW4uIFRoZSBtb2RhbCBpbmNsdWRlcyBhbiBcIk9LXCIgYnV0dG9uIHRvIGNsb3NlIGl0LlxuICovXG5cbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtcyxcbiAgTW9kYWxQYXJhbXNCYXNlXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWxlcnRNb2RhbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRQYXJhbXMgZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0aXRsZSBvZiB0aGUgbW9kYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbn1cblxudHlwZSBBbGVydE1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBBbGVydFBhcmFtcyAmIE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zPHZvaWQ+O1xuXG5jbGFzcyBBbGVydE1vZGFsIGV4dGVuZHMgTW9kYWxCYXNlPHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9rQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFsZXJ0TW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkFsZXJ0TW9kYWwpO1xuICAgIHRoaXMubWVzc2FnZSA9IHBhcmFtcy5tZXNzYWdlO1xuICAgIHRoaXMub2tCdXR0b25UZXh0ID0gcGFyYW1zLm9rQnV0dG9uVGV4dCA/PyB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLmJ1dHRvbnMub2spO1xuICAgIHRoaXMudGl0bGUgPSBwYXJhbXMudGl0bGUgPz8gJyc7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb21pc2VSZXNvbHZlKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25PcGVuKCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMudGl0bGUpO1xuICAgIHRoaXMuY29udGVudEVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiB0aGlzLm1lc3NhZ2UgfSk7XG4gICAgY29uc3Qgb2tCdXR0b24gPSBuZXcgQnV0dG9uQ29tcG9uZW50KHRoaXMuY29udGVudEVsKTtcbiAgICBva0J1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMub2tCdXR0b25UZXh0KTtcbiAgICBva0J1dHRvbi5zZXRDdGEoKTtcbiAgICBva0J1dHRvbi5vbkNsaWNrKHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgb2tCdXR0b24uc2V0Q2xhc3MoQ3NzQ2xhc3MuT2tCdXR0b24pO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gYWxlcnQgbW9kYWwgaW4gT2JzaWRpYW4gd2l0aCBhIHNwZWNpZmllZCBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGFsZXJ0IG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhbGVydChwYXJhbXM6IEFsZXJ0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHNob3dNb2RhbCgocHJvbWlzZVJlc29sdmUpID0+XG4gICAgbmV3IEFsZXJ0TW9kYWwoe1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgcHJvbWlzZVJlc29sdmVcbiAgICB9KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEscUJBQWtCO0FBQ2xCLHNCQUFnQztBQU9oQyx1QkFBeUI7QUFDekIsbUJBR087QUEwQlAsTUFBTSxtQkFBbUIsdUJBQWdCO0FBQUEsRUFDdEI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRVYsWUFBWSxRQUFxQztBQUN0RCxVQUFNLE1BQU07QUFDWixTQUFLLGNBQWMsMEJBQVMsVUFBVTtBQUN0QyxTQUFLLFVBQVUsT0FBTztBQUN0QixTQUFLLGVBQWUsT0FBTyxvQkFBZ0Isa0JBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxRQUFRLEVBQUU7QUFDNUUsU0FBSyxRQUFRLE9BQU8sU0FBUztBQUFBLEVBQy9CO0FBQUEsRUFFZ0IsVUFBZ0I7QUFDOUIsU0FBSyxlQUFlO0FBQUEsRUFDdEI7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFNBQUssUUFBUSxRQUFRLEtBQUssS0FBSztBQUMvQixTQUFLLFVBQVUsU0FBUyxLQUFLLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQztBQUNuRCxVQUFNLFdBQVcsSUFBSSxnQ0FBZ0IsS0FBSyxTQUFTO0FBQ25ELGFBQVMsY0FBYyxLQUFLLFlBQVk7QUFDeEMsYUFBUyxPQUFPO0FBQ2hCLGFBQVMsUUFBUSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDdEMsYUFBUyxTQUFTLDBCQUFTLFFBQVE7QUFBQSxFQUNyQztBQUNGO0FBUUEsZUFBc0IsTUFBTSxRQUFvQztBQUM5RCxZQUFNO0FBQUEsSUFBVSxDQUFDLG1CQUNmLElBQUksV0FBVztBQUFBLE1BQ2IsR0FBRztBQUFBLE1BQ0g7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwibmFtZXMiOltdfQ==
|
|
@@ -130,9 +130,9 @@ class ConfirmModal extends import_modal.ModalBase {
|
|
|
130
130
|
constructor(params) {
|
|
131
131
|
super(params);
|
|
132
132
|
this.addCssClasses(import_css_class.CssClass.ConfirmModal);
|
|
133
|
-
this.cancelButtonText = params.cancelButtonText ?? (0, import_i18n.t)(($) => $.
|
|
133
|
+
this.cancelButtonText = params.cancelButtonText ?? (0, import_i18n.t)(($) => $.obsidianLib.buttons.cancel);
|
|
134
134
|
this.message = params.message;
|
|
135
|
-
this.okButtonText = params.okButtonText ?? (0, import_i18n.t)(($) => $.
|
|
135
|
+
this.okButtonText = params.okButtonText ?? (0, import_i18n.t)(($) => $.obsidianLib.buttons.ok);
|
|
136
136
|
this.title = params.title ?? "";
|
|
137
137
|
}
|
|
138
138
|
onClose() {
|
|
@@ -167,4 +167,4 @@ async function confirm(params) {
|
|
|
167
167
|
0 && (module.exports = {
|
|
168
168
|
confirm
|
|
169
169
|
});
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RhbHMvY29uZmlybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVXRpbGl0eSBmb3IgZGlzcGxheWluZyBjb25maXJtIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIGEgZnVuY3Rpb24gdG8gZGlzcGxheSBhIG1vZGFsIHdpdGggYSBtZXNzYWdlIGluIE9ic2lkaWFuLiBUaGUgbW9kYWwgaW5jbHVkZXMgXCJPS1wiIGFuZCBcIkNhbmNlbFwiIGJ1dHRvbnMgdG8gY29uZmlybSBvciBjYW5jZWwgdGhlIGFjdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXMsXG4gIE1vZGFsUGFyYW1zQmFzZVxufSBmcm9tICcuL21vZGFsLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29uZmlybX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybVBhcmFtcyBleHRlbmRzIE1vZGFsUGFyYW1zQmFzZSB7XG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGV4dCBmb3IgdGhlIFwiT0tcIiBidXR0b24uXG4gICAqL1xuICByZWFkb25seSBva0J1dHRvblRleHQ/
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RhbHMvY29uZmlybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVXRpbGl0eSBmb3IgZGlzcGxheWluZyBjb25maXJtIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIGEgZnVuY3Rpb24gdG8gZGlzcGxheSBhIG1vZGFsIHdpdGggYSBtZXNzYWdlIGluIE9ic2lkaWFuLiBUaGUgbW9kYWwgaW5jbHVkZXMgXCJPS1wiIGFuZCBcIkNhbmNlbFwiIGJ1dHRvbnMgdG8gY29uZmlybSBvciBjYW5jZWwgdGhlIGFjdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXMsXG4gIE1vZGFsUGFyYW1zQmFzZVxufSBmcm9tICcuL21vZGFsLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29uZmlybX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybVBhcmFtcyBleHRlbmRzIE1vZGFsUGFyYW1zQmFzZSB7XG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGV4dCBmb3IgdGhlIFwiT0tcIiBidXR0b24uXG4gICAqL1xuICByZWFkb25seSBva0J1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG59XG5cbnR5cGUgQ29uZmlybU1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBDb25maXJtUGFyYW1zICYgTW9kYWxCYXNlQ29uc3RydWN0b3JQYXJhbXM8Ym9vbGVhbj47XG5cbmNsYXNzIENvbmZpcm1Nb2RhbCBleHRlbmRzIE1vZGFsQmFzZTxib29sZWFuPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIGlzQ29uZmlybWVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBva0J1dHRvblRleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0aXRsZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb25maXJtTW9kYWxDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5hZGRDc3NDbGFzc2VzKENzc0NsYXNzLkNvbmZpcm1Nb2RhbCk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gcGFyYW1zLmNhbmNlbEJ1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idXR0b25zLmNhbmNlbCk7XG4gICAgdGhpcy5tZXNzYWdlID0gcGFyYW1zLm1lc3NhZ2U7XG4gICAgdGhpcy5va0J1dHRvblRleHQgPSBwYXJhbXMub2tCdXR0b25UZXh0ID8/IHQoKCQpID0+ICQub2JzaWRpYW5MaWIuYnV0dG9ucy5vayk7XG4gICAgdGhpcy50aXRsZSA9IHBhcmFtcy50aXRsZSA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucHJvbWlzZVJlc29sdmUodGhpcy5pc0NvbmZpcm1lZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25PcGVuKCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMudGl0bGUpO1xuICAgIHRoaXMuY29udGVudEVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiB0aGlzLm1lc3NhZ2UgfSk7XG4gICAgY29uc3Qgb2tCdXR0b24gPSBuZXcgQnV0dG9uQ29tcG9uZW50KHRoaXMuY29udGVudEVsKTtcbiAgICBva0J1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMub2tCdXR0b25UZXh0KTtcbiAgICBva0J1dHRvbi5zZXRDdGEoKTtcbiAgICBva0J1dHRvbi5vbkNsaWNrKCgpID0+IHtcbiAgICAgIHRoaXMuaXNDb25maXJtZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICAgIG9rQnV0dG9uLnNldENsYXNzKENzc0NsYXNzLk9rQnV0dG9uKTtcblxuICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMuY2FuY2VsQnV0dG9uVGV4dCk7XG4gICAgY2FuY2VsQnV0dG9uLm9uQ2xpY2sodGhpcy5jbG9zZS5iaW5kKHRoaXMpKTtcbiAgICBjYW5jZWxCdXR0b24uc2V0Q2xhc3MoQ3NzQ2xhc3MuQ2FuY2VsQnV0dG9uKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXlzIGFuIGNvbmZpcm0gbW9kYWwgaW4gT2JzaWRpYW4gd2l0aCBhIHNwZWNpZmllZCBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNvbmZpcm0gbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgXCJPS1wiIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vY29uc2lzdGVudC1ib29sZWFuLW5hbWUgLS0gYGJvb2xlYW5gIGdpdmVzIGJldHRlciBEWCB0aGFuIGVudW0uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uZmlybShwYXJhbXM6IENvbmZpcm1QYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGF3YWl0IHNob3dNb2RhbDxib29sZWFuPigocHJvbWlzZVJlc29sdmUpID0+XG4gICAgbmV3IENvbmZpcm1Nb2RhbCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBwcm9taXNlUmVzb2x2ZVxuICAgIH0pXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFBZ0M7QUFPaEMsdUJBQXlCO0FBQ3pCLGtCQUFrQjtBQUNsQixtQkFHTztBQStCUCxNQUFNLHFCQUFxQix1QkFBbUI7QUFBQSxFQUMzQjtBQUFBLEVBQ1QsY0FBYztBQUFBLEVBQ0w7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRVYsWUFBWSxRQUF1QztBQUN4RCxVQUFNLE1BQU07QUFDWixTQUFLLGNBQWMsMEJBQVMsWUFBWTtBQUN4QyxTQUFLLG1CQUFtQixPQUFPLHdCQUFvQixlQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksUUFBUSxNQUFNO0FBQ3hGLFNBQUssVUFBVSxPQUFPO0FBQ3RCLFNBQUssZUFBZSxPQUFPLG9CQUFnQixlQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksUUFBUSxFQUFFO0FBQzVFLFNBQUssUUFBUSxPQUFPLFNBQVM7QUFBQSxFQUMvQjtBQUFBLEVBRWdCLFVBQWdCO0FBQzlCLFNBQUssZUFBZSxLQUFLLFdBQVc7QUFBQSxFQUN0QztBQUFBLEVBRWdCLFNBQWU7QUFDN0IsU0FBSyxRQUFRLFFBQVEsS0FBSyxLQUFLO0FBQy9CLFNBQUssVUFBVSxTQUFTLEtBQUssRUFBRSxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ25ELFVBQU0sV0FBVyxJQUFJLGdDQUFnQixLQUFLLFNBQVM7QUFDbkQsYUFBUyxjQUFjLEtBQUssWUFBWTtBQUN4QyxhQUFTLE9BQU87QUFDaEIsYUFBUyxRQUFRLE1BQU07QUFDckIsV0FBSyxjQUFjO0FBQ25CLFdBQUssTUFBTTtBQUFBLElBQ2IsQ0FBQztBQUNELGFBQVMsU0FBUywwQkFBUyxRQUFRO0FBRW5DLFVBQU0sZUFBZSxJQUFJLGdDQUFnQixLQUFLLFNBQVM7QUFDdkQsaUJBQWEsY0FBYyxLQUFLLGdCQUFnQjtBQUNoRCxpQkFBYSxRQUFRLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQztBQUMxQyxpQkFBYSxTQUFTLDBCQUFTLFlBQVk7QUFBQSxFQUM3QztBQUNGO0FBU0EsZUFBc0IsUUFBUSxRQUF5QztBQUNyRSxTQUFPLFVBQU07QUFBQSxJQUFtQixDQUFDLG1CQUMvQixJQUFJLGFBQWE7QUFBQSxNQUNmLEdBQUc7QUFBQSxNQUNIO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsIm5hbWVzIjpbXX0=
|