obsidian-dev-utils 46.10.0 → 46.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/obsidian/FileSystem.cjs +2 -1
- package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +3 -2
- package/dist/lib/cjs/obsidian/Vault.cjs +6 -6
- package/dist/lib/cjs/obsidian/Vault.d.cts +4 -4
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/obsidian/FileSystem.mjs +2 -1
- package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +3 -2
- package/dist/lib/esm/obsidian/Vault.d.mts +4 -4
- package/dist/lib/esm/obsidian/Vault.mjs +6 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/lib/cjs/Library.cjs
CHANGED
|
@@ -126,7 +126,7 @@ __export(Library_exports, {
|
|
|
126
126
|
LIBRARY_VERSION: () => LIBRARY_VERSION
|
|
127
127
|
});
|
|
128
128
|
module.exports = __toCommonJS(Library_exports);
|
|
129
|
-
const LIBRARY_VERSION = "46.
|
|
129
|
+
const LIBRARY_VERSION = "46.11.0";
|
|
130
130
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
131
131
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
132
132
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -331,6 +331,7 @@ function trimMarkdownExtension(app, file) {
|
|
|
331
331
|
return (0, import_String.trimEnd)(file.path, `.${MARKDOWN_FILE_EXTENSION}`);
|
|
332
332
|
}
|
|
333
333
|
function getFileInternal(app, path, isCaseInsensitive) {
|
|
334
|
+
isCaseInsensitive ??= app.vault.adapter.insensitive;
|
|
334
335
|
if (isCaseInsensitive) {
|
|
335
336
|
return app.vault.getAbstractFileByPathInsensitive(path);
|
|
336
337
|
}
|
|
@@ -370,4 +371,4 @@ function getResolvedPath(path) {
|
|
|
370
371
|
isNote,
|
|
371
372
|
trimMarkdownExtension
|
|
372
373
|
});
|
|
373
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB7QGxpbmsgVEFic3RyYWN0RmlsZX0sIHtAbGluayBURmlsZX0sIGFuZCB7QGxpbmsgVEZvbGRlcn0gaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBub3JtYWxpemVQYXRoLFxuICBUQWJzdHJhY3RGaWxlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgY3JlYXRlVEZpbGVJbnN0YW5jZSxcbiAgY3JlYXRlVEZvbGRlckluc3RhbmNlLFxuICBwYXJlbnRGb2xkZXJQYXRoXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgZXh0bmFtZSxcbiAgcmVzb2x2ZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBleHRlbnNpb24gZm9yIGBiYXNlYCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBU0VfRklMRV9FWFRFTlNJT04gPSAnYmFzZSc7XG5cbi8qKlxuICogQSBmaWxlIGV4dGVuc2lvbiBmb3IgYGNhbnZhc2AgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBBIGZpbGUgZXh0ZW5zaW9uIGZvciBgbWFya2Rvd25gIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhbiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhIGZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZpbGUgPSBzdHJpbmcgfCBURmlsZTtcblxuLyoqXG4gKiBBIHBhdGggb3IgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZmlsZXMuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiBmaWxlcy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IG9mIHRoZSBhYnN0cmFjdCBmaWxlcyBhcmUgbm90IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogVEZpbGVbXSB7XG4gIHJldHVybiBhYnN0cmFjdEZpbGVzLm1hcCgoYWJzdHJhY3RGaWxlKSA9PiBhc0ZpbGUoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZm9sZGVycy5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBhYnN0cmFjdCBmaWxlcyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZvbGRlcnMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFueSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMgYXJlIG5vdCBmb2xkZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRm9sZGVycyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBURm9sZGVyW10ge1xuICByZXR1cm4gYWJzdHJhY3RGaWxlcy5tYXAoKGFic3RyYWN0RmlsZSkgPT4gYXNGb2xkZXIoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYWJzdHJhY3QgZmlsZSB0byBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZShhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogVEZpbGUge1xuICByZXR1cm4gYXNGaWxlT3JOdWxsKGFic3RyYWN0RmlsZSkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlJykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic3RyYWN0IGZpbGUgdG8gYSBmaWxlIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGaWxlIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZvbGRlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXIoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IFRGb2xkZXIge1xuICByZXR1cm4gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZvbGRlcicpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgb3IgYG51bGxgLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0ZvbGRlck9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGb2xkZXIge1xuICBpZiAoYWJzdHJhY3RGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICByZXR1cm4gYWJzdHJhY3RGaWxlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXInKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBvciBmaWxlIGhhcyB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0V4dGVuc2lvbihhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybiBwYXRoT3JGaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXRoT3JGaWxlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHJldHVybiBmaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBleHRuYW1lKHBhdGhPckZpbGUpLnNsaWNlKDEpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgYWJzdHJhY3QgZmlsZSBmb3IuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBhYnN0cmFjdCBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEFic3RyYWN0RmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgZmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWJzdHJhY3QgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJldHJpZXZlLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5maWxlTWFwW3BhdGhPckZpbGUucGF0aF0gPz8gcGF0aE9yRmlsZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlSW50ZXJuYWwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG5cbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcblxuICBpZiAocmVzb2x2ZWRQYXRoID09PSBwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZ2V0RmlsZUludGVybmFsKGFwcCwgcmVzb2x2ZWRQYXRoLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmaWxlIGZvci5cbiAqIEBwYXJhbSBzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGluY2x1ZGUgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZpbGUgaXMgY3JlYXRlZCBmb3IgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZmlsZSA9IGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwLCBwYXRoT3JGaWxlIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgZmlsZSwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBhcHAncyB2YXVsdCB0byByZXRyaWV2ZSB0aGUgZmlsZSBieSBpdHMgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZS5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRGaWxlIHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZvbGRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwIGFuZCBwYXRoT3JGb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nIC0gV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZvbGRlciBpcyBjcmVhdGVkIGZvciB0aGUgcHJvdmlkZWQgcGF0aC5cbiAqICBJZiBgZmFsc2VgLCBhbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSByZXRyaWV2ZWQgZm9sZGVyLlxuICogQHRocm93cyBJZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZz86IGJvb2xlYW4sIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRGb2xkZXIge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZm9sZGVyKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZm9sZGVyID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGF0aE9yRm9sZGVyIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm9sZGVyIG5vdCBmb3VuZDogJHtwYXRoT3JGb2xkZXIgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmb2xkZXI7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZm9sZGVyIG9yIGBudWxsYCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIGZvbGRlciBmcm9tLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIGlmIGZvdW5kLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBURm9sZGVyIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcyB3aXRoaW4gYSBzcGVjaWZpZWQgZm9sZGVyIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBtYXJrZG93biBmaWxlcyBmcm9tLlxuICogQHBhcmFtIGlzUmVjdXJzaXZlIC0gT3B0aW9uYWwuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgbWFya2Rvd24gZmlsZXMgd2l0aGluIHN1YmZvbGRlcnMuIERlZmF1bHQgaXMgZmFsc2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBmaWxlcyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcyhhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGlzUmVjdXJzaXZlPzogYm9vbGVhbik6IFRGaWxlW10ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIGxldCBtYXJrZG93bkZpbGVzOiBURmlsZVtdID0gW107XG5cbiAgaWYgKGlzUmVjdXJzaXZlKSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgYWJzdHJhY3RGaWxlKSAmJiBhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICBtYXJrZG93bkZpbGVzLnB1c2goYWJzdHJhY3RGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRpbmcgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGdldE9yQ3JlYXRlRm9sZGVyKGFwcCwgZm9sZGVyUGF0aCk7XG5cbiAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZm9sZGVyIGZvciB0aGUgZ2l2ZW4gcGF0aCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIHJlcHJlc2VudGluZyB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZvbGRlcj4ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGUucGF0aDtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnN0cmFjdEZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEFic3RyYWN0RmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiAgIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGJhc2UgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBiYXNlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2VGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihhcHAsIHBhdGhPckZpbGUsIEJBU0VfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGNhbnZhcyBmaWxlIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBDQU5WQVNfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEZpbGUge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIGlzIGEgZm9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZGVyKGZpbGU6IHVua25vd24pOiBmaWxlIGlzIFRGb2xkZXIge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgTWFya2Rvd24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZG93bkZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKGFwcCwgcGF0aE9yRmlsZSwgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0NhbnZhc0ZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0Jhc2VGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tIHRoZSBmaWxlIHBhdGggaWYgdGhlIGZpbGUgaXMgYSBtYXJrZG93biBmaWxlLlxuICogSWYgdGhlIGZpbGUgaXMgbm90IGEgbWFya2Rvd24gZmlsZSwgdGhlIG9yaWdpbmFsIGZpbGUgcGF0aCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gdHJpbSB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBwYXRoIHdpdGggdGhlIG1hcmtkb3duIGV4dGVuc2lvbiB0cmltbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbU1hcmtkb3duRXh0ZW5zaW9uKGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIGZpbGUpKSB7XG4gICAgcmV0dXJuIGZpbGUucGF0aDtcbiAgfVxuXG4gIHJldHVybiB0cmltRW5kKGZpbGUucGF0aCwgYC4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApO1xufVxuXG5mdW5jdGlvbiBnZXRGaWxlSW50ZXJuYWwoYXBwOiBBcHAsIHBhdGg6IHN0cmluZywgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAoaXNDYXNlSW5zZW5zaXRpdmUpIHtcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aEluc2Vuc2l0aXZlKHBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aCkgYXMgbnVsbCB8IFRGaWxlO1xufVxuXG5mdW5jdGlvbiBnZXRSZXNvbHZlZFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgocmVzb2x2ZSgnLycsIHBhdGgpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsc0JBTU87QUFDUCw2QkFJTztBQUVQLG1CQUFnQztBQUNoQyxrQkFHTztBQUNQLG9CQUF3QjtBQUtqQixNQUFNLHNCQUFzQjtBQUs1QixNQUFNLHdCQUF3QjtBQUs5QixNQUFNLDBCQUEwQjtBQXdCaEMsU0FBUyxlQUFlLGVBQXlDO0FBQ3RFLFNBQU8sY0FBYyxJQUFJLENBQUMsaUJBQWlCLE9BQU8sWUFBWSxDQUFDO0FBQ2pFO0FBU08sU0FBUyxpQkFBaUIsZUFBMkM7QUFDMUUsU0FBTyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsU0FBUyxZQUFZLENBQUM7QUFDbkU7QUFTTyxTQUFTLE9BQU8sY0FBMkM7QUFDaEUsU0FBTyxhQUFhLFlBQVksU0FBSyw4QkFBZ0IsSUFBSSxNQUFNLDZCQUE2QixD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
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB7QGxpbmsgVEFic3RyYWN0RmlsZX0sIHtAbGluayBURmlsZX0sIGFuZCB7QGxpbmsgVEZvbGRlcn0gaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBub3JtYWxpemVQYXRoLFxuICBUQWJzdHJhY3RGaWxlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgY3JlYXRlVEZpbGVJbnN0YW5jZSxcbiAgY3JlYXRlVEZvbGRlckluc3RhbmNlLFxuICBwYXJlbnRGb2xkZXJQYXRoXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgZXh0bmFtZSxcbiAgcmVzb2x2ZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBleHRlbnNpb24gZm9yIGBiYXNlYCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBU0VfRklMRV9FWFRFTlNJT04gPSAnYmFzZSc7XG5cbi8qKlxuICogQSBmaWxlIGV4dGVuc2lvbiBmb3IgYGNhbnZhc2AgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBBIGZpbGUgZXh0ZW5zaW9uIGZvciBgbWFya2Rvd25gIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhbiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhIGZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZpbGUgPSBzdHJpbmcgfCBURmlsZTtcblxuLyoqXG4gKiBBIHBhdGggb3IgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZmlsZXMuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiBmaWxlcy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IG9mIHRoZSBhYnN0cmFjdCBmaWxlcyBhcmUgbm90IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogVEZpbGVbXSB7XG4gIHJldHVybiBhYnN0cmFjdEZpbGVzLm1hcCgoYWJzdHJhY3RGaWxlKSA9PiBhc0ZpbGUoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZm9sZGVycy5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBhYnN0cmFjdCBmaWxlcyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZvbGRlcnMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFueSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMgYXJlIG5vdCBmb2xkZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRm9sZGVycyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBURm9sZGVyW10ge1xuICByZXR1cm4gYWJzdHJhY3RGaWxlcy5tYXAoKGFic3RyYWN0RmlsZSkgPT4gYXNGb2xkZXIoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYWJzdHJhY3QgZmlsZSB0byBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZShhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogVEZpbGUge1xuICByZXR1cm4gYXNGaWxlT3JOdWxsKGFic3RyYWN0RmlsZSkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlJykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic3RyYWN0IGZpbGUgdG8gYSBmaWxlIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGaWxlIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZvbGRlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXIoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IFRGb2xkZXIge1xuICByZXR1cm4gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZvbGRlcicpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgb3IgYG51bGxgLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0ZvbGRlck9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGb2xkZXIge1xuICBpZiAoYWJzdHJhY3RGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICByZXR1cm4gYWJzdHJhY3RGaWxlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXInKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBvciBmaWxlIGhhcyB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0V4dGVuc2lvbihhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybiBwYXRoT3JGaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXRoT3JGaWxlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHJldHVybiBmaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBleHRuYW1lKHBhdGhPckZpbGUpLnNsaWNlKDEpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgYWJzdHJhY3QgZmlsZSBmb3IuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBhYnN0cmFjdCBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEFic3RyYWN0RmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgZmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWJzdHJhY3QgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJldHJpZXZlLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5maWxlTWFwW3BhdGhPckZpbGUucGF0aF0gPz8gcGF0aE9yRmlsZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlSW50ZXJuYWwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG5cbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcblxuICBpZiAocmVzb2x2ZWRQYXRoID09PSBwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZ2V0RmlsZUludGVybmFsKGFwcCwgcmVzb2x2ZWRQYXRoLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmaWxlIGZvci5cbiAqIEBwYXJhbSBzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGluY2x1ZGUgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZpbGUgaXMgY3JlYXRlZCBmb3IgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZmlsZSA9IGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwLCBwYXRoT3JGaWxlIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgZmlsZSwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBhcHAncyB2YXVsdCB0byByZXRyaWV2ZSB0aGUgZmlsZSBieSBpdHMgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZS5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRGaWxlIHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZvbGRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwIGFuZCBwYXRoT3JGb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nIC0gV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZvbGRlciBpcyBjcmVhdGVkIGZvciB0aGUgcHJvdmlkZWQgcGF0aC5cbiAqICBJZiBgZmFsc2VgLCBhbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSByZXRyaWV2ZWQgZm9sZGVyLlxuICogQHRocm93cyBJZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZz86IGJvb2xlYW4sIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRGb2xkZXIge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZm9sZGVyKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZm9sZGVyID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGF0aE9yRm9sZGVyIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm9sZGVyIG5vdCBmb3VuZDogJHtwYXRoT3JGb2xkZXIgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmb2xkZXI7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZm9sZGVyIG9yIGBudWxsYCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIGZvbGRlciBmcm9tLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIGlmIGZvdW5kLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBURm9sZGVyIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcyB3aXRoaW4gYSBzcGVjaWZpZWQgZm9sZGVyIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBtYXJrZG93biBmaWxlcyBmcm9tLlxuICogQHBhcmFtIGlzUmVjdXJzaXZlIC0gT3B0aW9uYWwuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgbWFya2Rvd24gZmlsZXMgd2l0aGluIHN1YmZvbGRlcnMuIERlZmF1bHQgaXMgZmFsc2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBmaWxlcyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcyhhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGlzUmVjdXJzaXZlPzogYm9vbGVhbik6IFRGaWxlW10ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIGxldCBtYXJrZG93bkZpbGVzOiBURmlsZVtdID0gW107XG5cbiAgaWYgKGlzUmVjdXJzaXZlKSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgYWJzdHJhY3RGaWxlKSAmJiBhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICBtYXJrZG93bkZpbGVzLnB1c2goYWJzdHJhY3RGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRpbmcgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGdldE9yQ3JlYXRlRm9sZGVyKGFwcCwgZm9sZGVyUGF0aCk7XG5cbiAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZm9sZGVyIGZvciB0aGUgZ2l2ZW4gcGF0aCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIHJlcHJlc2VudGluZyB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZvbGRlcj4ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGUucGF0aDtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnN0cmFjdEZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEFic3RyYWN0RmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiAgIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGJhc2UgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBiYXNlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2VGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihhcHAsIHBhdGhPckZpbGUsIEJBU0VfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGNhbnZhcyBmaWxlIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBDQU5WQVNfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEZpbGUge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIGlzIGEgZm9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZGVyKGZpbGU6IHVua25vd24pOiBmaWxlIGlzIFRGb2xkZXIge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgTWFya2Rvd24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZG93bkZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKGFwcCwgcGF0aE9yRmlsZSwgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0NhbnZhc0ZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0Jhc2VGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tIHRoZSBmaWxlIHBhdGggaWYgdGhlIGZpbGUgaXMgYSBtYXJrZG93biBmaWxlLlxuICogSWYgdGhlIGZpbGUgaXMgbm90IGEgbWFya2Rvd24gZmlsZSwgdGhlIG9yaWdpbmFsIGZpbGUgcGF0aCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gdHJpbSB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBwYXRoIHdpdGggdGhlIG1hcmtkb3duIGV4dGVuc2lvbiB0cmltbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbU1hcmtkb3duRXh0ZW5zaW9uKGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIGZpbGUpKSB7XG4gICAgcmV0dXJuIGZpbGUucGF0aDtcbiAgfVxuXG4gIHJldHVybiB0cmltRW5kKGZpbGUucGF0aCwgYC4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApO1xufVxuXG5mdW5jdGlvbiBnZXRGaWxlSW50ZXJuYWwoYXBwOiBBcHAsIHBhdGg6IHN0cmluZywgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpc0Nhc2VJbnNlbnNpdGl2ZSA/Pz0gYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmU7XG4gIGlmIChpc0Nhc2VJbnNlbnNpdGl2ZSkge1xuICAgIHJldHVybiBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoSW5zZW5zaXRpdmUocGF0aCk7XG4gIH1cblxuICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChwYXRoKSBhcyBudWxsIHwgVEZpbGU7XG59XG5cbmZ1bmN0aW9uIGdldFJlc29sdmVkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplUGF0aChyZXNvbHZlKCcvJywgcGF0aCkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFNTztBQUNQLDZCQUlPO0FBRVAsbUJBQWdDO0FBQ2hDLGtCQUdPO0FBQ1Asb0JBQXdCO0FBS2pCLE1BQU0sc0JBQXNCO0FBSzVCLE1BQU0sd0JBQXdCO0FBSzlCLE1BQU0sMEJBQTBCO0FBd0JoQyxTQUFTLGVBQWUsZUFBeUM7QUFDdEUsU0FBTyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsT0FBTyxZQUFZLENBQUM7QUFDakU7QUFTTyxTQUFTLGlCQUFpQixlQUEyQztBQUMxRSxTQUFPLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixTQUFTLFlBQVksQ0FBQztBQUNuRTtBQVNPLFNBQVMsT0FBTyxj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
|
|
@@ -132,10 +132,11 @@ var import_AbortController = require('../AbortController.cjs');
|
|
|
132
132
|
var import_Async = require('../Async.cjs');
|
|
133
133
|
var import_String = require('../String.cjs');
|
|
134
134
|
var import_ValueProvider = require('../ValueProvider.cjs');
|
|
135
|
+
var import_FileSystem = require('./FileSystem.cjs');
|
|
135
136
|
var import_Vault = require('./Vault.cjs');
|
|
136
137
|
async function getCodeBlockMarkdownInfo(options) {
|
|
137
138
|
const { app, ctx, el, source } = options;
|
|
138
|
-
const sourceFile =
|
|
139
|
+
const sourceFile = (0, import_FileSystem.getFileOrNull)(app, ctx.sourcePath);
|
|
139
140
|
if (!sourceFile) {
|
|
140
141
|
throw new Error(`Source file ${ctx.sourcePath} not found.`);
|
|
141
142
|
}
|
|
@@ -361,4 +362,4 @@ function isSuitableCodeBlock(match, language, sourceLf, isInCallout) {
|
|
|
361
362
|
removeCodeBlock,
|
|
362
363
|
replaceCodeBlock
|
|
363
364
|
});
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQge1xuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIsXG4gIGhhc1NpbmdsZU9jY3VycmVuY2UsXG4gIGluZGVudCxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHtcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0fSBvYmplY3QuXG4gICAqL1xuICBjdHg6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIEhUTUxFbGVtZW50fSByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgc291cmNlIG9mIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGluc2VydEFmdGVyQ29kZUJsb2NrfSAvIHtAbGluayBpbnNlcnRCZWZvcmVDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc2VydENvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbnVtYmVyIG9mIGxpbmVzIHRvIG9mZnNldCB0aGUgaW5zZXJ0aW9uIGJ5LiBEZWZhdWx0IGlzIGAwYC5cbiAgICovXG4gIGxpbmVPZmZzZXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlc2VydmUgdGhlIGxpbmUgcHJlZml4IG9mIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRleHQgdG8gaW5zZXJ0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW1vdmVDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZUNvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8ga2VlcCB0aGUgZ2FwIGFmdGVyIHJlbW92aW5nIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRLZWVwR2FwPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVwbGFjZUNvZGVCbG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBuZXcgY29kZSBibG9jay5cbiAgICovXG4gIGNvZGVCbG9ja1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPHN0cmluZywgW3N0cmluZ10+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGtlZXAgdGhlIGdhcCB3aGVuIHRoZSBuZXcgY29kZSBibG9jayBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkS2VlcEdhcFdoZW5FbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlc2VydmUgdGhlIGxpbmUgcHJlZml4IG9mIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXg/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoT3B0aW9ucyB7XG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uO1xuICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudDogbnVtYmVyO1xuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheTtcbiAgbm90ZUNvbnRlbnQ6IHN0cmluZztcbiAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dDogc3RyaW5nO1xuICBzb3VyY2VMaW5lc0NvdW50OiBudW1iZXI7XG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zKTogUHJvbWlzZTxDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBlbCwgc291cmNlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgYXdhaXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMoKTtcbiAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBzb3VyY2VGaWxlKTtcblxuICBsZXQgbWFya2Rvd25JbmZvOiBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgYXdhaXQgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcCwgc291cmNlRmlsZSwgKG5vdGVDb250ZW50KSA9PiB7XG4gICAgY29uc3Qgbm90ZUNvbnRlbnRMZiA9IGVuc3VyZUxmRW5kaW5ncyhub3RlQ29udGVudCk7XG5cbiAgICBjb25zdCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiA9IHtcbiAgICAgIGxpbmVFbmQ6IG5vdGVDb250ZW50TGYuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgICBsaW5lU3RhcnQ6IDAsXG4gICAgICB0ZXh0OiBub3RlQ29udGVudExmXG4gICAgfTtcblxuICAgIGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCA9IGVuc3VyZUxmRW5kaW5ncyhhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQpO1xuICAgIGNvbnN0IHNvdXJjZUxmID0gZW5zdXJlTGZFbmRpbmdzKHNvdXJjZSk7XG5cbiAgICBpZiAoIWhhc1NpbmdsZU9jY3VycmVuY2Uobm90ZUNvbnRlbnRMZiwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb25PZmZzZXQgPSBub3RlQ29udGVudExmLmluZGV4T2YoYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgICBjb25zdCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCA9IG5vdGVDb250ZW50TGYuc2xpY2UoMCwgc2VjdGlvbk9mZnNldCkuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBpc0luQ2FsbG91dCA9ICEhZWwucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYWxsb3V0LWNvbnRlbnQnKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gICAgY29uc3Qgc291cmNlTGluZXMgPSBzb3VyY2VMZi5zcGxpdCgnXFxuJyk7XG5cbiAgICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IHRleHRMaW5lT2Zmc2V0cyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgdGV4dExpbmVPZmZzZXRzLnNldChsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCwgc2VjdGlvbk9mZnNldCk7XG5cbiAgICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGV4dExpbmUgPSB0ZXh0TGluZXNbaV0gPz8gJyc7XG4gICAgICBjb25zdCBsaW5lT2Zmc2V0ID0gbGFzdFRleHRMaW5lT2Zmc2V0ICsgdGV4dExpbmUubGVuZ3RoICsgMTtcbiAgICAgIHRleHRMaW5lT2Zmc2V0cy5zZXQobGluZXNCZWZvcmVTZWN0aW9uQ291bnQgKyBpICsgMSwgbGluZU9mZnNldCk7XG4gICAgICBsYXN0VGV4dExpbmVPZmZzZXQgPSBsaW5lT2Zmc2V0O1xuICAgIH1cblxuICAgIGNvbnN0IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcyA9IHRleHRMaW5lcy5tYXAoKGxpbmUsIGluZGV4KSA9PlxuICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lU3RhcnQgPD0gaW5kZXggJiYgaW5kZXggPD0gYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lRW5kID8gbGluZSA6ICcnXG4gICAgKTtcbiAgICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0ID0gcG90ZW50aWFsQ29kZUJsb2NrVGV4dExpbmVzLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgUkVHX0VYUCA9XG4gICAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gICAgZm9yIChjb25zdCBtYXRjaCBvZiBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0Lm1hdGNoQWxsKFJFR19FWFApKSB7XG4gICAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2VMZiwgaXNJbkNhbGxvdXQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFya2Rvd25JbmZvKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHtcbiAgICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICAgICAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBub3RlQ29udGVudCxcbiAgICAgICAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCxcbiAgICAgICAgc291cmNlTGluZXNDb3VudDogc291cmNlTGluZXMubGVuZ3RoLFxuICAgICAgICB0ZXh0TGluZU9mZnNldHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vdGVDb250ZW50TGYgPT09IG5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGZPZmZzZXRNYXBwZXIgPSBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyKG5vdGVDb250ZW50KTtcbiAgICBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0ID0gbGZPZmZzZXRNYXBwZXIobWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0Lm9mZnNldCk7XG4gICAgbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLmVuZC5vZmZzZXQgPSBsZk9mZnNldE1hcHBlcihtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXJrZG93bkluZm87XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEFmdGVyQ29kZUJsb2NrKG9wdGlvbnM6IEluc2VydENvZGVCbG9ja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgbGluZU9mZnNldCA9IDAsIHRleHQgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGN0eC5zb3VyY2VQYXRoLCBhc3luYyAoX2Fib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRMaW5lSW5kZXggPSBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLmxpbmUgKyBsaW5lT2Zmc2V0ICsgMTtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGJlZm9yZSB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnNlcnRCZWZvcmVDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8ob3B0aW9ucyk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50ICE9PSBtYXJrZG93bkluZm8ubm90ZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5saW5lIC0gbGluZU9mZnNldDtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVDb2RlQmxvY2sob3B0aW9uczogUmVtb3ZlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXBsYWNlQ29kZUJsb2NrKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvZGVCbG9ja1Byb3ZpZGVyOiAnJyxcbiAgICBzaG91bGRLZWVwR2FwV2hlbkVtcHR5OiBvcHRpb25zLnNob3VsZEtlZXBHYXAgPz8gZmFsc2VcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUNvZGVCbG9jayhvcHRpb25zOiBSZXBsYWNlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY29kZUJsb2NrUHJvdmlkZXIsIGN0eCB9ID0gb3B0aW9ucztcbiAgb3B0aW9ucy5hYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChhYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGFib3J0U2lnbmFsID0gYWJvcnRTaWduYWxBbnkoYWJvcnRTaWduYWwsIG9wdGlvbnMuYWJvcnRTaWduYWwpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgb2xkQ29kZUJsb2NrID0gY29udGVudC5zbGljZShtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0LCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KSB7XG4gICAgICBvbGRDb2RlQmxvY2sgPSB1bmluZGVudChvbGRDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29kZUJsb2NrID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvZGVCbG9ja1Byb3ZpZGVyLCBhYm9ydFNpZ25hbCwgb2xkQ29kZUJsb2NrKTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2gob3B0aW9uczogQ3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoT3B0aW9ucyk6IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24ge1xuICBjb25zdCB7XG4gICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCxcbiAgICBtYXRjaCxcbiAgICBub3RlQ29udGVudCxcbiAgICBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0LFxuICAgIHNvdXJjZUxpbmVzQ291bnQsXG4gICAgdGV4dExpbmVPZmZzZXRzXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzQ291bnQgKyAxO1xuXG4gIHJldHVybiB7XG4gICAgYXJnczogY29kZUJsb2NrQXJnc1N0ci5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSxcbiAgICBlbmREZWxpbWl0ZXI6IGNvZGVCbG9ja0VuZERlbGltaXRlcixcbiAgICBsYW5ndWFnZSxcbiAgICBsaW5lUHJlZml4LFxuICAgIG5vdGVDb250ZW50LFxuICAgIHBvc2l0aW9uSW5Ob3RlOiB7XG4gICAgICBlbmQ6IHtcbiAgICAgICAgY29sOiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lKSA/PyAwKSAtIDEsXG4gICAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICAgIG9mZnNldDogKHRleHRMaW5lT2Zmc2V0cy5nZXQoZW5kTGluZSArIDEpID8/IDApIC0gMVxuICAgICAgfSxcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgICBvZmZzZXQ6IHRleHRMaW5lT2Zmc2V0cy5nZXQoc3RhcnRMaW5lKSA/PyAwXG4gICAgICB9XG4gICAgfSxcbiAgICByYXdBcmdzU3RyOiBjb2RlQmxvY2tBcmdzU3RyLFxuICAgIHNlY3Rpb25JbmZvOiB7XG4gICAgICBsaW5lRW5kOiBwcmV2aW91c1RleHRMaW5lc0NvdW50ICsgc291cmNlTGluZXNDb3VudCArIDEsXG4gICAgICBsaW5lU3RhcnQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQsXG4gICAgICB0ZXh0OiBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHRcbiAgICB9LFxuICAgIHN0YXJ0RGVsaW1pdGVyOiBjb2RlQmxvY2tTdGFydERlbGltaXRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRMYW5ndWFnZUZyb21FbGVtZW50KGVsOiBIVE1MRWxlbWVudCk6IHN0cmluZyB7XG4gIGNvbnN0IEJMT0NLX0xBTkdVQUdFX1BSRUZJWCA9ICdibG9jay1sYW5ndWFnZS0nO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5jbGFzc0xpc3QpLmZpbmQoKGNscykgPT4gY2xzLnN0YXJ0c1dpdGgoQkxPQ0tfTEFOR1VBR0VfUFJFRklYKSk/LnNsaWNlKEJMT0NLX0xBTkdVQUdFX1BSRUZJWC5sZW5ndGgpID8/ICcnO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRUZXh0KGNvbnRlbnQ6IHN0cmluZywgaW5zZXJ0TGluZUluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IG5ld0xpbmVzID0gbGluZXMuc2xpY2UoKTtcbiAgY29uc3QgdGV4dExpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG5cbiAgaWYgKGluc2VydExpbmVJbmRleCA8IDApIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSAwO1xuICB9XG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPiBsaW5lcy5sZW5ndGgpIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSBsaW5lcy5sZW5ndGg7XG4gIH1cblxuICBjb25zdCBQUkVGSVhfTElORV9SRUdfRVhQID0gL14gezAsM30oPzo+IHsxLDN9KSovZztcbiAgY29uc3QgbWF0Y2ggPSAobGluZXNbaW5zZXJ0TGluZUluZGV4XSA/PyAnJykubWF0Y2goUFJFRklYX0xJTkVfUkVHX0VYUCk7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaD8uWzBdID8/ICcnO1xuICBuZXdMaW5lcy5zcGxpY2UoaW5zZXJ0TGluZUluZGV4LCAwLCAuLi4oc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4ID8gdGV4dExpbmVzLm1hcCgobGluZSkgPT4gaW5kZW50KGxpbmUsIGxpbmVQcmVmaXgpKSA6IHRleHRMaW5lcykpO1xuICByZXR1cm4gbmV3TGluZXMuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGlzU3VpdGFibGVDb2RlQmxvY2soXG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICBsYW5ndWFnZTogc3RyaW5nLFxuICBzb3VyY2VMZjogc3RyaW5nLFxuICBpc0luQ2FsbG91dDogYm9vbGVhblxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvZGVCbG9ja0xhbmd1YWdlID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0xhbmd1YWdlJ10gPz8gJyc7XG4gIGlmIChjb2RlQmxvY2tMYW5ndWFnZSAhPT0gbGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2guZ3JvdXBzPy5bJ0xpbmVQcmVmaXgnXSA/PyAnJztcblxuICBpZiAoaXNJbkNhbGxvdXQgJiYgIWxpbmVQcmVmaXguaW5jbHVkZXMoJz4gJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb2RlQmxvY2tDb250ZW50ID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0NvbnRlbnQnXSA/PyAnJztcbiAgY29uc3QgY2xlYW5Db2RlQmxvY2tDb250ZW50ID0gY29kZUJsb2NrQ29udGVudC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKGxpbmVQcmVmaXgubGVuZ3RoKSkuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGNsZWFuQ29kZUJsb2NrQ29udGVudCA9PT0gc291cmNlTGY7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsNkJBQStCO0FBQy9CLG1CQUEyQztBQUMzQyxvQkFNTztBQUNQLDJCQUE2QjtBQUM3QixtQkFJTztBQWtHUCxlQUFzQix5QkFBeUIsU0FBd0Y7QUFDckksUUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLE9BQU8sSUFBSTtBQUVqQyxRQUFNLGFBQWEsSUFBSSxNQUFNLGNBQWMsSUFBSSxVQUFVO0FBQ3pELE1BQUksQ0FBQyxZQUFZO0FBQ2YsVUFBTSxJQUFJLE1BQU0sZUFBZSxJQUFJLFVBQVUsYUFBYTtBQUFBLEVBQzVEO0FBRUEsWUFBTSx5Q0FBMkI7QUFDakMsWUFBTSx1QkFBUyxLQUFLLFVBQVU7QUFFOUIsTUFBSSxlQUFvRDtBQUV4RCxZQUFNLHVDQUF5QixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7QUFDL0QsVUFBTSxvQkFBZ0IsK0JB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
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQge1xuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIsXG4gIGhhc1NpbmdsZU9jY3VycmVuY2UsXG4gIGluZGVudCxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgZ2V0RmlsZU9yTnVsbCB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBpbnZva2VXaXRoRmlsZVN5c3RlbUxvY2ssXG4gIHByb2Nlc3MsXG4gIHNhdmVOb3RlXG59IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm99LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHR9IG9iamVjdC5cbiAgICovXG4gIGN0eDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dDtcblxuICAvKipcbiAgICogQSB7QGxpbmsgSFRNTEVsZW1lbnR9IHJlcHJlc2VudGluZyB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIGVsOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgaW5zZXJ0QWZ0ZXJDb2RlQmxvY2t9IC8ge0BsaW5rIGluc2VydEJlZm9yZUNvZGVCbG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogQSBudW1iZXIgb2YgbGluZXMgdG8gb2Zmc2V0IHRoZSBpbnNlcnRpb24gYnkuIERlZmF1bHQgaXMgYDBgLlxuICAgKi9cbiAgbGluZU9mZnNldD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmVzZXJ2ZSB0aGUgbGluZSBwcmVmaXggb2YgdGhlIGNvZGUgYmxvY2suIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgdGV4dCB0byBpbnNlcnQgYWZ0ZXIgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbW92ZUNvZGVCbG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlQ29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBrZWVwIHRoZSBnYXAgYWZ0ZXIgcmVtb3ZpbmcgdGhlIGNvZGUgYmxvY2suIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEtlZXBHYXA/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZXBsYWNlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlQ29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogQW4gYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIG5ldyBjb2RlIGJsb2NrLlxuICAgKi9cbiAgY29kZUJsb2NrUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8c3RyaW5nLCBbc3RyaW5nXT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8ga2VlcCB0aGUgZ2FwIHdoZW4gdGhlIG5ldyBjb2RlIGJsb2NrIGlzIGVtcHR5LiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRLZWVwR2FwV2hlbkVtcHR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmVzZXJ2ZSB0aGUgbGluZSBwcmVmaXggb2YgdGhlIGNvZGUgYmxvY2suIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2hPcHRpb25zIHtcbiAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbzogTWFya2Rvd25TZWN0aW9uSW5mb3JtYXRpb247XG4gIGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50OiBudW1iZXI7XG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5O1xuICBub3RlQ29udGVudDogc3RyaW5nO1xuICBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0OiBzdHJpbmc7XG4gIHNvdXJjZUxpbmVzQ291bnQ6IG51bWJlcjtcbiAgdGV4dExpbmVPZmZzZXRzOiBNYXA8bnVtYmVyLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGEgY29kZSBibG9jayBpbiBhIE1hcmtkb3duIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2RlIGJsb2NrIGluIHRoZSBNYXJrZG93biBzZWN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnM6IEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMpOiBQcm9taXNlPENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGVsLCBzb3VyY2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgYXdhaXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMoKTtcbiAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBzb3VyY2VGaWxlKTtcblxuICBsZXQgbWFya2Rvd25JbmZvOiBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgYXdhaXQgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcCwgc291cmNlRmlsZSwgKG5vdGVDb250ZW50KSA9PiB7XG4gICAgY29uc3Qgbm90ZUNvbnRlbnRMZiA9IGVuc3VyZUxmRW5kaW5ncyhub3RlQ29udGVudCk7XG5cbiAgICBjb25zdCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiA9IHtcbiAgICAgIGxpbmVFbmQ6IG5vdGVDb250ZW50TGYuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgICBsaW5lU3RhcnQ6IDAsXG4gICAgICB0ZXh0OiBub3RlQ29udGVudExmXG4gICAgfTtcblxuICAgIGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCA9IGVuc3VyZUxmRW5kaW5ncyhhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQpO1xuICAgIGNvbnN0IHNvdXJjZUxmID0gZW5zdXJlTGZFbmRpbmdzKHNvdXJjZSk7XG5cbiAgICBpZiAoIWhhc1NpbmdsZU9jY3VycmVuY2Uobm90ZUNvbnRlbnRMZiwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb25PZmZzZXQgPSBub3RlQ29udGVudExmLmluZGV4T2YoYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgICBjb25zdCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCA9IG5vdGVDb250ZW50TGYuc2xpY2UoMCwgc2VjdGlvbk9mZnNldCkuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBpc0luQ2FsbG91dCA9ICEhZWwucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYWxsb3V0LWNvbnRlbnQnKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gICAgY29uc3Qgc291cmNlTGluZXMgPSBzb3VyY2VMZi5zcGxpdCgnXFxuJyk7XG5cbiAgICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IHRleHRMaW5lT2Zmc2V0cyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgdGV4dExpbmVPZmZzZXRzLnNldChsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCwgc2VjdGlvbk9mZnNldCk7XG5cbiAgICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGV4dExpbmUgPSB0ZXh0TGluZXNbaV0gPz8gJyc7XG4gICAgICBjb25zdCBsaW5lT2Zmc2V0ID0gbGFzdFRleHRMaW5lT2Zmc2V0ICsgdGV4dExpbmUubGVuZ3RoICsgMTtcbiAgICAgIHRleHRMaW5lT2Zmc2V0cy5zZXQobGluZXNCZWZvcmVTZWN0aW9uQ291bnQgKyBpICsgMSwgbGluZU9mZnNldCk7XG4gICAgICBsYXN0VGV4dExpbmVPZmZzZXQgPSBsaW5lT2Zmc2V0O1xuICAgIH1cblxuICAgIGNvbnN0IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcyA9IHRleHRMaW5lcy5tYXAoKGxpbmUsIGluZGV4KSA9PlxuICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lU3RhcnQgPD0gaW5kZXggJiYgaW5kZXggPD0gYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lRW5kID8gbGluZSA6ICcnXG4gICAgKTtcbiAgICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0ID0gcG90ZW50aWFsQ29kZUJsb2NrVGV4dExpbmVzLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgUkVHX0VYUCA9XG4gICAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gICAgZm9yIChjb25zdCBtYXRjaCBvZiBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0Lm1hdGNoQWxsKFJFR19FWFApKSB7XG4gICAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2VMZiwgaXNJbkNhbGxvdXQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFya2Rvd25JbmZvKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHtcbiAgICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICAgICAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBub3RlQ29udGVudCxcbiAgICAgICAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCxcbiAgICAgICAgc291cmNlTGluZXNDb3VudDogc291cmNlTGluZXMubGVuZ3RoLFxuICAgICAgICB0ZXh0TGluZU9mZnNldHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vdGVDb250ZW50TGYgPT09IG5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGZPZmZzZXRNYXBwZXIgPSBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyKG5vdGVDb250ZW50KTtcbiAgICBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0ID0gbGZPZmZzZXRNYXBwZXIobWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0Lm9mZnNldCk7XG4gICAgbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLmVuZC5vZmZzZXQgPSBsZk9mZnNldE1hcHBlcihtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXJrZG93bkluZm87XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEFmdGVyQ29kZUJsb2NrKG9wdGlvbnM6IEluc2VydENvZGVCbG9ja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgbGluZU9mZnNldCA9IDAsIHRleHQgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGN0eC5zb3VyY2VQYXRoLCBhc3luYyAoX2Fib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRMaW5lSW5kZXggPSBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLmxpbmUgKyBsaW5lT2Zmc2V0ICsgMTtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGJlZm9yZSB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnNlcnRCZWZvcmVDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8ob3B0aW9ucyk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50ICE9PSBtYXJrZG93bkluZm8ubm90ZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5saW5lIC0gbGluZU9mZnNldDtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVDb2RlQmxvY2sob3B0aW9uczogUmVtb3ZlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXBsYWNlQ29kZUJsb2NrKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvZGVCbG9ja1Byb3ZpZGVyOiAnJyxcbiAgICBzaG91bGRLZWVwR2FwV2hlbkVtcHR5OiBvcHRpb25zLnNob3VsZEtlZXBHYXAgPz8gZmFsc2VcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUNvZGVCbG9jayhvcHRpb25zOiBSZXBsYWNlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY29kZUJsb2NrUHJvdmlkZXIsIGN0eCB9ID0gb3B0aW9ucztcbiAgb3B0aW9ucy5hYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChhYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGFib3J0U2lnbmFsID0gYWJvcnRTaWduYWxBbnkoYWJvcnRTaWduYWwsIG9wdGlvbnMuYWJvcnRTaWduYWwpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgb2xkQ29kZUJsb2NrID0gY29udGVudC5zbGljZShtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0LCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KSB7XG4gICAgICBvbGRDb2RlQmxvY2sgPSB1bmluZGVudChvbGRDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29kZUJsb2NrID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvZGVCbG9ja1Byb3ZpZGVyLCBhYm9ydFNpZ25hbCwgb2xkQ29kZUJsb2NrKTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2gob3B0aW9uczogQ3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoT3B0aW9ucyk6IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24ge1xuICBjb25zdCB7XG4gICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCxcbiAgICBtYXRjaCxcbiAgICBub3RlQ29udGVudCxcbiAgICBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0LFxuICAgIHNvdXJjZUxpbmVzQ291bnQsXG4gICAgdGV4dExpbmVPZmZzZXRzXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzQ291bnQgKyAxO1xuXG4gIHJldHVybiB7XG4gICAgYXJnczogY29kZUJsb2NrQXJnc1N0ci5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSxcbiAgICBlbmREZWxpbWl0ZXI6IGNvZGVCbG9ja0VuZERlbGltaXRlcixcbiAgICBsYW5ndWFnZSxcbiAgICBsaW5lUHJlZml4LFxuICAgIG5vdGVDb250ZW50LFxuICAgIHBvc2l0aW9uSW5Ob3RlOiB7XG4gICAgICBlbmQ6IHtcbiAgICAgICAgY29sOiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lKSA/PyAwKSAtIDEsXG4gICAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICAgIG9mZnNldDogKHRleHRMaW5lT2Zmc2V0cy5nZXQoZW5kTGluZSArIDEpID8/IDApIC0gMVxuICAgICAgfSxcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgICBvZmZzZXQ6IHRleHRMaW5lT2Zmc2V0cy5nZXQoc3RhcnRMaW5lKSA/PyAwXG4gICAgICB9XG4gICAgfSxcbiAgICByYXdBcmdzU3RyOiBjb2RlQmxvY2tBcmdzU3RyLFxuICAgIHNlY3Rpb25JbmZvOiB7XG4gICAgICBsaW5lRW5kOiBwcmV2aW91c1RleHRMaW5lc0NvdW50ICsgc291cmNlTGluZXNDb3VudCArIDEsXG4gICAgICBsaW5lU3RhcnQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQsXG4gICAgICB0ZXh0OiBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHRcbiAgICB9LFxuICAgIHN0YXJ0RGVsaW1pdGVyOiBjb2RlQmxvY2tTdGFydERlbGltaXRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRMYW5ndWFnZUZyb21FbGVtZW50KGVsOiBIVE1MRWxlbWVudCk6IHN0cmluZyB7XG4gIGNvbnN0IEJMT0NLX0xBTkdVQUdFX1BSRUZJWCA9ICdibG9jay1sYW5ndWFnZS0nO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5jbGFzc0xpc3QpLmZpbmQoKGNscykgPT4gY2xzLnN0YXJ0c1dpdGgoQkxPQ0tfTEFOR1VBR0VfUFJFRklYKSk/LnNsaWNlKEJMT0NLX0xBTkdVQUdFX1BSRUZJWC5sZW5ndGgpID8/ICcnO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRUZXh0KGNvbnRlbnQ6IHN0cmluZywgaW5zZXJ0TGluZUluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IG5ld0xpbmVzID0gbGluZXMuc2xpY2UoKTtcbiAgY29uc3QgdGV4dExpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG5cbiAgaWYgKGluc2VydExpbmVJbmRleCA8IDApIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSAwO1xuICB9XG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPiBsaW5lcy5sZW5ndGgpIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSBsaW5lcy5sZW5ndGg7XG4gIH1cblxuICBjb25zdCBQUkVGSVhfTElORV9SRUdfRVhQID0gL14gezAsM30oPzo+IHsxLDN9KSovZztcbiAgY29uc3QgbWF0Y2ggPSAobGluZXNbaW5zZXJ0TGluZUluZGV4XSA/PyAnJykubWF0Y2goUFJFRklYX0xJTkVfUkVHX0VYUCk7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaD8uWzBdID8/ICcnO1xuICBuZXdMaW5lcy5zcGxpY2UoaW5zZXJ0TGluZUluZGV4LCAwLCAuLi4oc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4ID8gdGV4dExpbmVzLm1hcCgobGluZSkgPT4gaW5kZW50KGxpbmUsIGxpbmVQcmVmaXgpKSA6IHRleHRMaW5lcykpO1xuICByZXR1cm4gbmV3TGluZXMuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGlzU3VpdGFibGVDb2RlQmxvY2soXG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICBsYW5ndWFnZTogc3RyaW5nLFxuICBzb3VyY2VMZjogc3RyaW5nLFxuICBpc0luQ2FsbG91dDogYm9vbGVhblxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvZGVCbG9ja0xhbmd1YWdlID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0xhbmd1YWdlJ10gPz8gJyc7XG4gIGlmIChjb2RlQmxvY2tMYW5ndWFnZSAhPT0gbGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2guZ3JvdXBzPy5bJ0xpbmVQcmVmaXgnXSA/PyAnJztcblxuICBpZiAoaXNJbkNhbGxvdXQgJiYgIWxpbmVQcmVmaXguaW5jbHVkZXMoJz4gJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb2RlQmxvY2tDb250ZW50ID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0NvbnRlbnQnXSA/PyAnJztcbiAgY29uc3QgY2xlYW5Db2RlQmxvY2tDb250ZW50ID0gY29kZUJsb2NrQ29udGVudC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKGxpbmVQcmVmaXgubGVuZ3RoKSkuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGNsZWFuQ29kZUJsb2NrQ29udGVudCA9PT0gc291cmNlTGY7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsNkJBQStCO0FBQy9CLG1CQUEyQztBQUMzQyxvQkFNTztBQUNQLDJCQUE2QjtBQUM3Qix3QkFBOEI7QUFDOUIsbUJBSU87QUFrR1AsZUFBc0IseUJBQXlCLFNBQXdGO0FBQ3JJLFFBQU0sRUFBRSxLQUFLLEtBQUssSUFBSSxPQUFPLElBQUk7QUFFakMsUUFBTSxpQkFBYSxpQ0FBYyxLQUFLLElBQUksVUFBVTtBQUNwRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLGVBQWUsSUFBSSxVQUFVLGFBQWE7QUFBQSxFQUM1RDtBQUVBLFlBQU0seUNBQTJCO0FBQ2pDLFlBQU0sdUJBQVMsS0FBSyxVQUFVO0FBRTlCLE1BQUksZUFBb0Q7QUFFeEQs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
|
|
@@ -233,21 +233,21 @@ function getNoteFilesSorted(app) {
|
|
|
233
233
|
return app.vault.getAllLoadedFiles().filter((file) => (0, import_FileSystem.isFile)(file) && (0, import_FileSystem.isNote)(app, file)).sort((a, b) => a.path.localeCompare(b.path));
|
|
234
234
|
}
|
|
235
235
|
async function getOrCreateFileSafe(app, path) {
|
|
236
|
-
const file = (0, import_FileSystem.getAbstractFileOrNull)(app, path
|
|
236
|
+
const file = (0, import_FileSystem.getAbstractFileOrNull)(app, path);
|
|
237
237
|
if ((0, import_FileSystem.isFile)(file)) {
|
|
238
238
|
return file;
|
|
239
239
|
}
|
|
240
240
|
return await app.vault.create(getAvailablePath(app, path), "");
|
|
241
241
|
}
|
|
242
242
|
async function getOrCreateFolderSafe(app, path) {
|
|
243
|
-
const folder = (0, import_FileSystem.getAbstractFileOrNull)(app, path
|
|
243
|
+
const folder = (0, import_FileSystem.getAbstractFileOrNull)(app, path);
|
|
244
244
|
if ((0, import_FileSystem.isFolder)(folder)) {
|
|
245
245
|
return folder;
|
|
246
246
|
}
|
|
247
247
|
return await app.vault.createFolder(getAvailablePath(app, path));
|
|
248
248
|
}
|
|
249
|
-
function getSafeRenamePath(app,
|
|
250
|
-
const oldPath = (0, import_FileSystem.getPath)(app,
|
|
249
|
+
function getSafeRenamePath(app, oldPathOrAbstractFile, newPath) {
|
|
250
|
+
const oldPath = (0, import_FileSystem.getPath)(app, oldPathOrAbstractFile);
|
|
251
251
|
if (app.vault.adapter.insensitive) {
|
|
252
252
|
let folderPath = (0, import_Path.dirname)(newPath);
|
|
253
253
|
let nonExistingPath = (0, import_Path.basename)(newPath);
|
|
@@ -393,7 +393,7 @@ async function readSafe(app, pathOrFile) {
|
|
|
393
393
|
return content;
|
|
394
394
|
}
|
|
395
395
|
async function renameSafe(app, oldPathOrFile, newPath) {
|
|
396
|
-
const oldFile = (0, import_FileSystem.getFile)(app, oldPathOrFile
|
|
396
|
+
const oldFile = (0, import_FileSystem.getFile)(app, oldPathOrFile);
|
|
397
397
|
const newAvailablePath = getSafeRenamePath(app, oldPathOrFile, newPath);
|
|
398
398
|
if (oldFile.path.toLowerCase() === newAvailablePath.toLowerCase()) {
|
|
399
399
|
if (oldFile.path !== newPath) {
|
|
@@ -462,4 +462,4 @@ async function invokeFileActionSafe(app, pathOrFile, fileAction) {
|
|
|
462
462
|
renameSafe,
|
|
463
463
|
saveNote
|
|
464
464
|
});
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgTGlzdGVkRmlsZXMsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXRoT3JBYnN0cmFjdEZpbGUsXG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbEFueSB9IGZyb20gJy4uL0Fib3J0Q29udHJvbGxlci50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0Tm90aWNlIH0gZnJvbSAnLi9Bc3luY1dpdGhOb3RpY2UudHMnO1xuaW1wb3J0IHtcbiAgbG9ja0VkaXRvcixcbiAgdW5sb2NrRWRpdG9yXG59IGZyb20gJy4vRWRpdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNGb2xkZXIsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHByb2Nlc3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZmFpbCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxvY2sgdGhlIGVkaXRvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSBmaWxlLiBBcHBsaWNhYmxlIG9ubHkgZm9yIG1hcmtkb3duIGZpbGVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGNvcGllZCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGZpbGUucGF0aCA9PT0gbmV3UGF0aCkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3UGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNvcHkoZmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoKTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUoZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgsIGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKGdldEF2YWlsYWJsZVBhdGgoYXBwLCBwYXRoKSwgJycpO1xufVxuXG4vKipcbiAqIEdldHMgb3IgY3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmb2xkZXIgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZm9sZGVyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgsIGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRm9sZGVyKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKGdldEF2YWlsYWJsZVBhdGgoYXBwLCBwYXRoKSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgb2xkUGF0aCA9IGdldFBhdGgoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFRoZXJlIGlzIG5vIGVsZWdhbnQgd2F5IHRvIHBlcmZvcm0gaW5maW5pdGUgbG9vcHMuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgIGZuKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZChhcHA6IEFwcCwgYTogUGF0aE9yQWJzdHJhY3RGaWxlLCBiOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgY29uc3QgYVBhdGggPSBnZXRQYXRoKGFwcCwgYSk7XG4gIGNvbnN0IGJQYXRoID0gZ2V0UGF0aChhcHAsIGIpO1xuICByZXR1cm4gYVBhdGguc3RhcnRzV2l0aChgJHtiUGF0aH0vYCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgdGhlIHNlY29uZCBwYXRoIG9yIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkT3JTZWxmKGFwcDogQXBwLCBhOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGI6IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICBjb25zdCBhUGF0aCA9IGdldFBhdGgoYXBwLCBhKTtcbiAgY29uc3QgYlBhdGggPSBnZXRQYXRoKGFwcCwgYik7XG4gIHJldHVybiBhUGF0aCA9PT0gYlBhdGggfHwgaXNDaGlsZChhcHAsIGEsIGIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBpcyBlbXB0eS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIGlzIGVtcHR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbGlzdGVkRmlsZXMgPSBhd2FpdCBsaXN0U2FmZShhcHAsIGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpKTtcbiAgcmV0dXJuIGxpc3RlZEZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCAmJiBsaXN0ZWRGaWxlcy5mb2xkZXJzLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gbGlzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgTGlzdGVkRmlsZXN9IG9iamVjdCBjb250YWluaW5nIHRoZSBsaXN0ZWQgZmlsZXMgYW5kIGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2FmZShhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPExpc3RlZEZpbGVzPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKTtcbiAgY29uc3QgRU1QVFkgPSB7IGZpbGVzOiBbXSwgZm9sZGVyczogW10gfTtcblxuICBpZiAoKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCkpPy50eXBlICE9PSAnZm9sZGVyJykge1xuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmxpc3QocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZmlsZSB3aXRoIHJldHJ5IGxvZ2ljLCB1cGRhdGluZyBpdHMgY29udGVudCBiYXNlZCBvbiBhIHByb3ZpZGVkIHZhbHVlIG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UsIHR5cGljYWxseSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIHZhdWx0LlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGJlIHByb2Nlc3NlZC4gSXQgY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCBvciBhIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIG5ld0NvbnRlbnRQcm92aWRlciAtIEEgdmFsdWUgcHJvdmlkZXIgdGhhdCByZXR1cm5zIHRoZSBuZXcgY29udGVudCBiYXNlZCBvbiB0aGUgb2xkIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvbGQgY29udGVudCBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQuXG4gKiBJZiBmdW5jdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHJldHVybiBgbnVsbGAgaWYgdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJldHJpZWQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIG9wdGlvbnMgZm9yIHByb2Nlc3NpbmcvcmV0cnlpbmcgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHByb2Nlc3MgaXMgY29tcGxldGUuXG4gKlxuICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwcm9jZXNzIGZhaWxzIGFmdGVyIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHJldHJpZXMgb3IgdGltZW91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3MoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBuZXdDb250ZW50UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8bnVsbCB8IHN0cmluZywgW3N0cmluZ10+LFxuICBvcHRpb25zOiBQcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiB0cnVlLFxuICAgIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc6IHRydWUsXG4gICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IHRydWUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRGVmYXVsdCB2YWx1ZS5cbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDUwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgbGV0IGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZjogRXZlbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkTG9ja0VkaXRvcldoaWxlUHJvY2Vzc2luZykge1xuICAgIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWYgPSBhcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZikgPT4ge1xuICAgICAgaWYgKGxlYWY/LnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbCkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChvbGRDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKG5ld0NvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwsIG9sZENvbnRlbnQpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChuZXdDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzU3VjY2VzcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgIGdldExpYkRlYnVnZ2VyKCdWYXVsdDpwcm9jZXNzJykoJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZG9lc0ZpbGVFeGlzdCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzU3VjY2VzcztcblxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVNaXNzaW5nRmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAnJHtwYXRofScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnZhdWx0LnByb2Nlc3NGaWxlLCB7IGZpbGVQYXRoOiBwYXRoIH0pLFxuICAgICAgcmV0cnlPcHRpb25zOiBmdWxsT3B0aW9ucyxcbiAgICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBmdWxsT3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZVxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZj8uZS5vZmZyZWYoYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmKTtcbiAgICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgIHVubG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgfSk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFJlbmFtZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKiBJZiB0aGUgbmV3IHBhdGggYWxyZWFkeSBleGlzdHMsIHRoZSBmaWxlIHdpbGwgYmUgcmVuYW1lZCB0byBhbiBhdmFpbGFibGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG9sZEZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSwgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IG5ld0F2YWlsYWJsZVBhdGggPSBnZXRTYWZlUmVuYW1lUGF0aChhcHAsIG9sZFBhdGhPckZpbGUsIG5ld1BhdGgpO1xuXG4gIGlmIChvbGRGaWxlLnBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3QXZhaWxhYmxlUGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgaWYgKG9sZEZpbGUucGF0aCAhPT0gbmV3UGF0aCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkRmlsZS5wYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIG5vdGUgdG8gYmUgc2F2ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5vdGUgaXMgc2F2ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWlzTWFya2Rvd25GaWxlKGFwcCwgcGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoICYmIGxlYWYudmlldy5kaXJ0eSkge1xuICAgICAgYXdhaXQgbGVhZi52aWV3LnNhdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZpbGVBY3Rpb24oZmlsZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgTGlzdGVkRmlsZXMsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXRoT3JBYnN0cmFjdEZpbGUsXG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbEFueSB9IGZyb20gJy4uL0Fib3J0Q29udHJvbGxlci50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0Tm90aWNlIH0gZnJvbSAnLi9Bc3luY1dpdGhOb3RpY2UudHMnO1xuaW1wb3J0IHtcbiAgbG9ja0VkaXRvcixcbiAgdW5sb2NrRWRpdG9yXG59IGZyb20gJy4vRWRpdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNGb2xkZXIsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHByb2Nlc3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZmFpbCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxvY2sgdGhlIGVkaXRvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSBmaWxlLiBBcHBsaWNhYmxlIG9ubHkgZm9yIG1hcmtkb3duIGZpbGVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGNvcGllZCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGZpbGUucGF0aCA9PT0gbmV3UGF0aCkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3UGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNvcHkoZmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoKTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUoZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUoZ2V0QXZhaWxhYmxlUGF0aChhcHAsIHBhdGgpLCAnJyk7XG59XG5cbi8qKlxuICogR2V0cyBvciBjcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZvbGRlciBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIHRoZSBmb2xkZXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFRGb2xkZXI+IHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihnZXRBdmFpbGFibGVQYXRoKGFwcCwgcGF0aCkpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIHJlbmFtZSBwYXRoIGZvciBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgLSBUaGUgb2xkIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGFic3RyYWN0IGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGFic3RyYWN0IGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG9sZFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlKTtcblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFRoZXJlIGlzIG5vIGVsZWdhbnQgd2F5IHRvIHBlcmZvcm0gaW5maW5pdGUgbG9vcHMuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgIGZuKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZChhcHA6IEFwcCwgYTogUGF0aE9yQWJzdHJhY3RGaWxlLCBiOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgY29uc3QgYVBhdGggPSBnZXRQYXRoKGFwcCwgYSk7XG4gIGNvbnN0IGJQYXRoID0gZ2V0UGF0aChhcHAsIGIpO1xuICByZXR1cm4gYVBhdGguc3RhcnRzV2l0aChgJHtiUGF0aH0vYCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgdGhlIHNlY29uZCBwYXRoIG9yIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkT3JTZWxmKGFwcDogQXBwLCBhOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGI6IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICBjb25zdCBhUGF0aCA9IGdldFBhdGgoYXBwLCBhKTtcbiAgY29uc3QgYlBhdGggPSBnZXRQYXRoKGFwcCwgYik7XG4gIHJldHVybiBhUGF0aCA9PT0gYlBhdGggfHwgaXNDaGlsZChhcHAsIGEsIGIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBpcyBlbXB0eS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIGlzIGVtcHR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbGlzdGVkRmlsZXMgPSBhd2FpdCBsaXN0U2FmZShhcHAsIGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpKTtcbiAgcmV0dXJuIGxpc3RlZEZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCAmJiBsaXN0ZWRGaWxlcy5mb2xkZXJzLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gbGlzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgTGlzdGVkRmlsZXN9IG9iamVjdCBjb250YWluaW5nIHRoZSBsaXN0ZWQgZmlsZXMgYW5kIGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2FmZShhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPExpc3RlZEZpbGVzPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKTtcbiAgY29uc3QgRU1QVFkgPSB7IGZpbGVzOiBbXSwgZm9sZGVyczogW10gfTtcblxuICBpZiAoKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCkpPy50eXBlICE9PSAnZm9sZGVyJykge1xuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmxpc3QocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZmlsZSB3aXRoIHJldHJ5IGxvZ2ljLCB1cGRhdGluZyBpdHMgY29udGVudCBiYXNlZCBvbiBhIHByb3ZpZGVkIHZhbHVlIG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UsIHR5cGljYWxseSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIHZhdWx0LlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGJlIHByb2Nlc3NlZC4gSXQgY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCBvciBhIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIG5ld0NvbnRlbnRQcm92aWRlciAtIEEgdmFsdWUgcHJvdmlkZXIgdGhhdCByZXR1cm5zIHRoZSBuZXcgY29udGVudCBiYXNlZCBvbiB0aGUgb2xkIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvbGQgY29udGVudCBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQuXG4gKiBJZiBmdW5jdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHJldHVybiBgbnVsbGAgaWYgdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJldHJpZWQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIG9wdGlvbnMgZm9yIHByb2Nlc3NpbmcvcmV0cnlpbmcgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHByb2Nlc3MgaXMgY29tcGxldGUuXG4gKlxuICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwcm9jZXNzIGZhaWxzIGFmdGVyIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHJldHJpZXMgb3IgdGltZW91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3MoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBuZXdDb250ZW50UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8bnVsbCB8IHN0cmluZywgW3N0cmluZ10+LFxuICBvcHRpb25zOiBQcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiB0cnVlLFxuICAgIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc6IHRydWUsXG4gICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IHRydWUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRGVmYXVsdCB2YWx1ZS5cbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDUwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgbGV0IGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZjogRXZlbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkTG9ja0VkaXRvcldoaWxlUHJvY2Vzc2luZykge1xuICAgIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWYgPSBhcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZikgPT4ge1xuICAgICAgaWYgKGxlYWY/LnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbCkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChvbGRDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKG5ld0NvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwsIG9sZENvbnRlbnQpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChuZXdDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzU3VjY2VzcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgIGdldExpYkRlYnVnZ2VyKCdWYXVsdDpwcm9jZXNzJykoJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZG9lc0ZpbGVFeGlzdCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzU3VjY2VzcztcblxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVNaXNzaW5nRmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAnJHtwYXRofScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnZhdWx0LnByb2Nlc3NGaWxlLCB7IGZpbGVQYXRoOiBwYXRoIH0pLFxuICAgICAgcmV0cnlPcHRpb25zOiBmdWxsT3B0aW9ucyxcbiAgICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBmdWxsT3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZVxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZj8uZS5vZmZyZWYoYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmKTtcbiAgICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgIHVubG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgfSk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFJlbmFtZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKiBJZiB0aGUgbmV3IHBhdGggYWxyZWFkeSBleGlzdHMsIHRoZSBmaWxlIHdpbGwgYmUgcmVuYW1lZCB0byBhbiBhdmFpbGFibGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG9sZEZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSwgbmV3UGF0aCk7XG5cbiAgaWYgKG9sZEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkRmlsZS5wYXRoICE9PSBuZXdQYXRoKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIucmVuYW1lRmlsZShvbGRGaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG4gIH1cblxuICBjb25zdCBuZXdGb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChuZXdBdmFpbGFibGVQYXRoKTtcbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0ZvbGRlclBhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRGaWxlLnBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIFNhdmVzIHRoZSBzcGVjaWZpZWQgbm90ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgbm90ZSB0byBiZSBzYXZlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZmlsZUFjdGlvbjogKGZpbGU6IFRGaWxlKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -106,11 +106,11 @@ export declare function getOrCreateFolderSafe(app: App, path: string): Promise<T
|
|
|
106
106
|
* Gets a safe rename path for a file.
|
|
107
107
|
*
|
|
108
108
|
* @param app - The application instance.
|
|
109
|
-
* @param
|
|
110
|
-
* @param newPath - The new path to rename the file to.
|
|
111
|
-
* @returns The safe rename path for the file.
|
|
109
|
+
* @param oldPathOrAbstractFile - The old path or abstract file to rename.
|
|
110
|
+
* @param newPath - The new path to rename the abstract file to.
|
|
111
|
+
* @returns The safe rename path for the abstract file.
|
|
112
112
|
*/
|
|
113
|
-
export declare function getSafeRenamePath(app: App,
|
|
113
|
+
export declare function getSafeRenamePath(app: App, oldPathOrAbstractFile: PathOrAbstractFile, newPath: string): string;
|
|
114
114
|
/**
|
|
115
115
|
* Invokes a function with the file system lock.
|
|
116
116
|
*
|
package/dist/lib/esm/Library.mjs
CHANGED
|
@@ -19,7 +19,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
19
19
|
globalThis.process = browserProcess;
|
|
20
20
|
})();
|
|
21
21
|
|
|
22
|
-
const LIBRARY_VERSION = "46.
|
|
22
|
+
const LIBRARY_VERSION = "46.11.0";
|
|
23
23
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
24
24
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
25
25
|
export {
|
|
@@ -212,6 +212,7 @@ function trimMarkdownExtension(app, file) {
|
|
|
212
212
|
return trimEnd(file.path, `.${MARKDOWN_FILE_EXTENSION}`);
|
|
213
213
|
}
|
|
214
214
|
function getFileInternal(app, path, isCaseInsensitive) {
|
|
215
|
+
isCaseInsensitive ??= app.vault.adapter.insensitive;
|
|
215
216
|
if (isCaseInsensitive) {
|
|
216
217
|
return app.vault.getAbstractFileByPathInsensitive(path);
|
|
217
218
|
}
|
|
@@ -250,4 +251,4 @@ export {
|
|
|
250
251
|
isNote,
|
|
251
252
|
trimMarkdownExtension
|
|
252
253
|
};
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB7QGxpbmsgVEFic3RyYWN0RmlsZX0sIHtAbGluayBURmlsZX0sIGFuZCB7QGxpbmsgVEZvbGRlcn0gaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBub3JtYWxpemVQYXRoLFxuICBUQWJzdHJhY3RGaWxlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgY3JlYXRlVEZpbGVJbnN0YW5jZSxcbiAgY3JlYXRlVEZvbGRlckluc3RhbmNlLFxuICBwYXJlbnRGb2xkZXJQYXRoXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgZXh0bmFtZSxcbiAgcmVzb2x2ZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBleHRlbnNpb24gZm9yIGBiYXNlYCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBU0VfRklMRV9FWFRFTlNJT04gPSAnYmFzZSc7XG5cbi8qKlxuICogQSBmaWxlIGV4dGVuc2lvbiBmb3IgYGNhbnZhc2AgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBBIGZpbGUgZXh0ZW5zaW9uIGZvciBgbWFya2Rvd25gIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhbiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhIGZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZpbGUgPSBzdHJpbmcgfCBURmlsZTtcblxuLyoqXG4gKiBBIHBhdGggb3IgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZmlsZXMuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiBmaWxlcy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IG9mIHRoZSBhYnN0cmFjdCBmaWxlcyBhcmUgbm90IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogVEZpbGVbXSB7XG4gIHJldHVybiBhYnN0cmFjdEZpbGVzLm1hcCgoYWJzdHJhY3RGaWxlKSA9PiBhc0ZpbGUoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZm9sZGVycy5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBhYnN0cmFjdCBmaWxlcyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZvbGRlcnMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFueSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMgYXJlIG5vdCBmb2xkZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRm9sZGVycyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBURm9sZGVyW10ge1xuICByZXR1cm4gYWJzdHJhY3RGaWxlcy5tYXAoKGFic3RyYWN0RmlsZSkgPT4gYXNGb2xkZXIoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYWJzdHJhY3QgZmlsZSB0byBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZShhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogVEZpbGUge1xuICByZXR1cm4gYXNGaWxlT3JOdWxsKGFic3RyYWN0RmlsZSkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlJykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic3RyYWN0IGZpbGUgdG8gYSBmaWxlIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGaWxlIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZvbGRlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXIoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IFRGb2xkZXIge1xuICByZXR1cm4gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZvbGRlcicpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgb3IgYG51bGxgLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0ZvbGRlck9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGb2xkZXIge1xuICBpZiAoYWJzdHJhY3RGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICByZXR1cm4gYWJzdHJhY3RGaWxlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXInKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBvciBmaWxlIGhhcyB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0V4dGVuc2lvbihhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybiBwYXRoT3JGaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXRoT3JGaWxlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHJldHVybiBmaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBleHRuYW1lKHBhdGhPckZpbGUpLnNsaWNlKDEpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgYWJzdHJhY3QgZmlsZSBmb3IuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBhYnN0cmFjdCBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEFic3RyYWN0RmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgZmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWJzdHJhY3QgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJldHJpZXZlLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5maWxlTWFwW3BhdGhPckZpbGUucGF0aF0gPz8gcGF0aE9yRmlsZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlSW50ZXJuYWwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG5cbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcblxuICBpZiAocmVzb2x2ZWRQYXRoID09PSBwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZ2V0RmlsZUludGVybmFsKGFwcCwgcmVzb2x2ZWRQYXRoLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmaWxlIGZvci5cbiAqIEBwYXJhbSBzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGluY2x1ZGUgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZpbGUgaXMgY3JlYXRlZCBmb3IgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZmlsZSA9IGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwLCBwYXRoT3JGaWxlIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgZmlsZSwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBhcHAncyB2YXVsdCB0byByZXRyaWV2ZSB0aGUgZmlsZSBieSBpdHMgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZS5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRGaWxlIHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZvbGRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwIGFuZCBwYXRoT3JGb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nIC0gV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZvbGRlciBpcyBjcmVhdGVkIGZvciB0aGUgcHJvdmlkZWQgcGF0aC5cbiAqICBJZiBgZmFsc2VgLCBhbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSByZXRyaWV2ZWQgZm9sZGVyLlxuICogQHRocm93cyBJZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZz86IGJvb2xlYW4sIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRGb2xkZXIge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZm9sZGVyKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZm9sZGVyID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGF0aE9yRm9sZGVyIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm9sZGVyIG5vdCBmb3VuZDogJHtwYXRoT3JGb2xkZXIgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmb2xkZXI7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZm9sZGVyIG9yIGBudWxsYCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIGZvbGRlciBmcm9tLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIGlmIGZvdW5kLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBURm9sZGVyIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcyB3aXRoaW4gYSBzcGVjaWZpZWQgZm9sZGVyIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBtYXJrZG93biBmaWxlcyBmcm9tLlxuICogQHBhcmFtIGlzUmVjdXJzaXZlIC0gT3B0aW9uYWwuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgbWFya2Rvd24gZmlsZXMgd2l0aGluIHN1YmZvbGRlcnMuIERlZmF1bHQgaXMgZmFsc2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBmaWxlcyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcyhhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGlzUmVjdXJzaXZlPzogYm9vbGVhbik6IFRGaWxlW10ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIGxldCBtYXJrZG93bkZpbGVzOiBURmlsZVtdID0gW107XG5cbiAgaWYgKGlzUmVjdXJzaXZlKSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgYWJzdHJhY3RGaWxlKSAmJiBhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICBtYXJrZG93bkZpbGVzLnB1c2goYWJzdHJhY3RGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRpbmcgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGdldE9yQ3JlYXRlRm9sZGVyKGFwcCwgZm9sZGVyUGF0aCk7XG5cbiAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZm9sZGVyIGZvciB0aGUgZ2l2ZW4gcGF0aCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIHJlcHJlc2VudGluZyB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZvbGRlcj4ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGUucGF0aDtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnN0cmFjdEZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEFic3RyYWN0RmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiAgIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGJhc2UgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBiYXNlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2VGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihhcHAsIHBhdGhPckZpbGUsIEJBU0VfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGNhbnZhcyBmaWxlIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBDQU5WQVNfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEZpbGUge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIGlzIGEgZm9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZGVyKGZpbGU6IHVua25vd24pOiBmaWxlIGlzIFRGb2xkZXIge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgTWFya2Rvd24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZG93bkZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKGFwcCwgcGF0aE9yRmlsZSwgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0NhbnZhc0ZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0Jhc2VGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tIHRoZSBmaWxlIHBhdGggaWYgdGhlIGZpbGUgaXMgYSBtYXJrZG93biBmaWxlLlxuICogSWYgdGhlIGZpbGUgaXMgbm90IGEgbWFya2Rvd24gZmlsZSwgdGhlIG9yaWdpbmFsIGZpbGUgcGF0aCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gdHJpbSB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBwYXRoIHdpdGggdGhlIG1hcmtkb3duIGV4dGVuc2lvbiB0cmltbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbU1hcmtkb3duRXh0ZW5zaW9uKGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIGZpbGUpKSB7XG4gICAgcmV0dXJuIGZpbGUucGF0aDtcbiAgfVxuXG4gIHJldHVybiB0cmltRW5kKGZpbGUucGF0aCwgYC4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApO1xufVxuXG5mdW5jdGlvbiBnZXRGaWxlSW50ZXJuYWwoYXBwOiBBcHAsIHBhdGg6IHN0cmluZywgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAoaXNDYXNlSW5zZW5zaXRpdmUpIHtcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aEluc2Vuc2l0aXZlKHBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aCkgYXMgbnVsbCB8IFRGaWxlO1xufVxuXG5mdW5jdGlvbiBnZXRSZXNvbHZlZFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgocmVzb2x2ZSgnLycsIHBhdGgpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyx1QkFBdUI7QUFDaEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUFLakIsTUFBTSxzQkFBc0I7QUFLNUIsTUFBTSx3QkFBd0I7QUFLOUIsTUFBTSwwQkFBMEI7QUF3QmhDLFNBQVMsZUFBZSxlQUF5QztBQUN0RSxTQUFPLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixPQUFPLFlBQVksQ0FBQztBQUNqRTtBQVNPLFNBQVMsaUJBQWlCLGVBQTJDO0FBQzFFLFNBQU8sY0FBYyxJQUFJLENBQUMsaUJBQWlCLFNBQVMsWUFBWSxDQUFDO0FBQ25FO0FBU08sU0FBUyxPQUFPLGNBQTJDO0FBQ2hFLFNBQU8sYUFBYSxZQUFZLEtBQUssZ0JBQWdCLElBQUksTUFBTSw2QkFBNkIsQ0FBQztBQUMvRjtBQVNPLFNBQVMsYUFBYSxjQUFrRDtBQUM3RSxNQUFJLGlCQUFpQixNQUFNO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSx3QkFBd0IsT0FBTztBQUNqQyxXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sSUFBSSxNQUFNLDZC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
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB7QGxpbmsgVEFic3RyYWN0RmlsZX0sIHtAbGluayBURmlsZX0sIGFuZCB7QGxpbmsgVEZvbGRlcn0gaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBub3JtYWxpemVQYXRoLFxuICBUQWJzdHJhY3RGaWxlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgY3JlYXRlVEZpbGVJbnN0YW5jZSxcbiAgY3JlYXRlVEZvbGRlckluc3RhbmNlLFxuICBwYXJlbnRGb2xkZXJQYXRoXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgZXh0bmFtZSxcbiAgcmVzb2x2ZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIEEgZmlsZSBleHRlbnNpb24gZm9yIGBiYXNlYCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBU0VfRklMRV9FWFRFTlNJT04gPSAnYmFzZSc7XG5cbi8qKlxuICogQSBmaWxlIGV4dGVuc2lvbiBmb3IgYGNhbnZhc2AgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBBIGZpbGUgZXh0ZW5zaW9uIGZvciBgbWFya2Rvd25gIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhbiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIEEgcGF0aCBvciBhIGZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZpbGUgPSBzdHJpbmcgfCBURmlsZTtcblxuLyoqXG4gKiBBIHBhdGggb3IgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZmlsZXMuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiBmaWxlcy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IG9mIHRoZSBhYnN0cmFjdCBmaWxlcyBhcmUgbm90IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogVEZpbGVbXSB7XG4gIHJldHVybiBhYnN0cmFjdEZpbGVzLm1hcCgoYWJzdHJhY3RGaWxlKSA9PiBhc0ZpbGUoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgYWJzdHJhY3QgZmlsZXMgdG8gYW4gYXJyYXkgb2YgZm9sZGVycy5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBhYnN0cmFjdCBmaWxlcyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZvbGRlcnMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFueSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMgYXJlIG5vdCBmb2xkZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheU9mRm9sZGVycyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBURm9sZGVyW10ge1xuICByZXR1cm4gYWJzdHJhY3RGaWxlcy5tYXAoKGFic3RyYWN0RmlsZSkgPT4gYXNGb2xkZXIoYWJzdHJhY3RGaWxlKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYWJzdHJhY3QgZmlsZSB0byBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZShhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogVEZpbGUge1xuICByZXR1cm4gYXNGaWxlT3JOdWxsKGFic3RyYWN0RmlsZSkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlJykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic3RyYWN0IGZpbGUgdG8gYSBmaWxlIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG9yIGBudWxsYC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGaWxlIHtcbiAgaWYgKGFic3RyYWN0RmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZvbGRlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNGb2xkZXIoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IFRGb2xkZXIge1xuICByZXR1cm4gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZvbGRlcicpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnN0cmFjdCBmaWxlIHRvIGEgZm9sZGVyIG9yIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBmb2xkZXIgb3IgYG51bGxgLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0ZvbGRlck9yTnVsbChhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogbnVsbCB8IFRGb2xkZXIge1xuICBpZiAoYWJzdHJhY3RGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICByZXR1cm4gYWJzdHJhY3RGaWxlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmb2xkZXInKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBvciBmaWxlIGhhcyB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0V4dGVuc2lvbihhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybiBwYXRoT3JGaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXRoT3JGaWxlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHJldHVybiBmaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBleHRuYW1lKHBhdGhPckZpbGUpLnNsaWNlKDEpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgYWJzdHJhY3QgZmlsZSBmb3IuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBhYnN0cmFjdCBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEFic3RyYWN0RmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgZmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWJzdHJhY3QgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJldHJpZXZlLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5maWxlTWFwW3BhdGhPckZpbGUucGF0aF0gPz8gcGF0aE9yRmlsZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlSW50ZXJuYWwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG5cbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcblxuICBpZiAocmVzb2x2ZWRQYXRoID09PSBwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZ2V0RmlsZUludGVybmFsKGFwcCwgcmVzb2x2ZWRQYXRoLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmaWxlIGZvci5cbiAqIEBwYXJhbSBzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGluY2x1ZGUgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZpbGUgaXMgY3JlYXRlZCBmb3IgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZmlsZSA9IGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwLCBwYXRoT3JGaWxlIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZmlsZSBvciBgbnVsbGAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgZmlsZSwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBhcHAncyB2YXVsdCB0byByZXRyaWV2ZSB0aGUgZmlsZSBieSBpdHMgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZS5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRGaWxlIHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGZvbGRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwIGFuZCBwYXRoT3JGb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nIC0gV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IGZvbGRlciBpcyBjcmVhdGVkIGZvciB0aGUgcHJvdmlkZWQgcGF0aC5cbiAqICBJZiBgZmFsc2VgLCBhbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSByZXRyaWV2ZWQgZm9sZGVyLlxuICogQHRocm93cyBJZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZz86IGJvb2xlYW4sIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRGb2xkZXIge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZm9sZGVyKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZm9sZGVyID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGF0aE9yRm9sZGVyIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm9sZGVyIG5vdCBmb3VuZDogJHtwYXRoT3JGb2xkZXIgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmb2xkZXI7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZm9sZGVyIG9yIGBudWxsYCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIGZvbGRlciBmcm9tLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIGlmIGZvdW5kLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBURm9sZGVyIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcyB3aXRoaW4gYSBzcGVjaWZpZWQgZm9sZGVyIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBtYXJrZG93biBmaWxlcyBmcm9tLlxuICogQHBhcmFtIGlzUmVjdXJzaXZlIC0gT3B0aW9uYWwuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgbWFya2Rvd24gZmlsZXMgd2l0aGluIHN1YmZvbGRlcnMuIERlZmF1bHQgaXMgZmFsc2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBmaWxlcyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcyhhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGlzUmVjdXJzaXZlPzogYm9vbGVhbik6IFRGaWxlW10ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIGxldCBtYXJrZG93bkZpbGVzOiBURmlsZVtdID0gW107XG5cbiAgaWYgKGlzUmVjdXJzaXZlKSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgYWJzdHJhY3RGaWxlKSAmJiBhYnN0cmFjdEZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICBtYXJrZG93bkZpbGVzLnB1c2goYWJzdHJhY3RGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRpbmcgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGdldE9yQ3JlYXRlRm9sZGVyKGFwcCwgZm9sZGVyUGF0aCk7XG5cbiAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZm9sZGVyIGZvciB0aGUgZ2l2ZW4gcGF0aCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyIHJlcHJlc2VudGluZyB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZvbGRlcj4ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGUucGF0aDtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldFJlc29sdmVkUGF0aChwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnN0cmFjdEZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEFic3RyYWN0RmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEFic3RyYWN0RmlsZTtcbn1cblxuLyoqXG4gKiAgIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGJhc2UgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBiYXNlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2VGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihhcHAsIHBhdGhPckZpbGUsIEJBU0VfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGNhbnZhcyBmaWxlIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBDQU5WQVNfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEZpbGUge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIGlzIGEgZm9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZGVyKGZpbGU6IHVua25vd24pOiBmaWxlIGlzIFRGb2xkZXIge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgTWFya2Rvd24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZG93bkZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKGFwcCwgcGF0aE9yRmlsZSwgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0NhbnZhc0ZpbGUoYXBwLCBwYXRoT3JGaWxlKSB8fCBpc0Jhc2VGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tIHRoZSBmaWxlIHBhdGggaWYgdGhlIGZpbGUgaXMgYSBtYXJrZG93biBmaWxlLlxuICogSWYgdGhlIGZpbGUgaXMgbm90IGEgbWFya2Rvd24gZmlsZSwgdGhlIG9yaWdpbmFsIGZpbGUgcGF0aCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gdHJpbSB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBwYXRoIHdpdGggdGhlIG1hcmtkb3duIGV4dGVuc2lvbiB0cmltbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbU1hcmtkb3duRXh0ZW5zaW9uKGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIGZpbGUpKSB7XG4gICAgcmV0dXJuIGZpbGUucGF0aDtcbiAgfVxuXG4gIHJldHVybiB0cmltRW5kKGZpbGUucGF0aCwgYC4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApO1xufVxuXG5mdW5jdGlvbiBnZXRGaWxlSW50ZXJuYWwoYXBwOiBBcHAsIHBhdGg6IHN0cmluZywgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpc0Nhc2VJbnNlbnNpdGl2ZSA/Pz0gYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmU7XG4gIGlmIChpc0Nhc2VJbnNlbnNpdGl2ZSkge1xuICAgIHJldHVybiBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoSW5zZW5zaXRpdmUocGF0aCk7XG4gIH1cblxuICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChwYXRoKSBhcyBudWxsIHwgVEZpbGU7XG59XG5cbmZ1bmN0aW9uIGdldFJlc29sdmVkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplUGF0aChyZXNvbHZlKCcvJywgcGF0aCkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHVCQUF1QjtBQUNoQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUtqQixNQUFNLHNCQUFzQjtBQUs1QixNQUFNLHdCQUF3QjtBQUs5QixNQUFNLDBCQUEwQjtBQXdCaEMsU0FBUyxlQUFlLGVBQXlDO0FBQ3RFLFNBQU8sY0FBYyxJQUFJLENBQUMsaUJBQWlCLE9BQU8sWUFBWSxDQUFDO0FBQ2pFO0FBU08sU0FBUyxpQkFBaUIsZUFBMkM7QUFDMUUsU0FBTyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsU0FBUyxZQUFZLENBQUM7QUFDbkU7QUFTTyxTQUFTLE9BQU8sY0FBMkM7QUFDaEUsU0FBTyxhQUFhLFlBQVksS0FBSyxnQkFBZ0IsSUFBSSxNQUFNLDZCQUE2QixDQUFDO0FBQy9GO0FBU08sU0FBUyxhQUFhLGNBQWtEO0FBQzdFLE1BQUksaUJBQWlCLE1BQU07QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJ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
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
unindent
|
|
30
30
|
} from "../String.mjs";
|
|
31
31
|
import { resolveValue } from "../ValueProvider.mjs";
|
|
32
|
+
import { getFileOrNull } from "./FileSystem.mjs";
|
|
32
33
|
import {
|
|
33
34
|
invokeWithFileSystemLock,
|
|
34
35
|
process,
|
|
@@ -36,7 +37,7 @@ import {
|
|
|
36
37
|
} from "./Vault.mjs";
|
|
37
38
|
async function getCodeBlockMarkdownInfo(options) {
|
|
38
39
|
const { app, ctx, el, source } = options;
|
|
39
|
-
const sourceFile = app
|
|
40
|
+
const sourceFile = getFileOrNull(app, ctx.sourcePath);
|
|
40
41
|
if (!sourceFile) {
|
|
41
42
|
throw new Error(`Source file ${ctx.sourcePath} not found.`);
|
|
42
43
|
}
|
|
@@ -261,4 +262,4 @@ export {
|
|
|
261
262
|
removeCodeBlock,
|
|
262
263
|
replaceCodeBlock
|
|
263
264
|
};
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQge1xuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIsXG4gIGhhc1NpbmdsZU9jY3VycmVuY2UsXG4gIGluZGVudCxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHtcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0fSBvYmplY3QuXG4gICAqL1xuICBjdHg6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIEhUTUxFbGVtZW50fSByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgc291cmNlIG9mIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGluc2VydEFmdGVyQ29kZUJsb2NrfSAvIHtAbGluayBpbnNlcnRCZWZvcmVDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc2VydENvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbnVtYmVyIG9mIGxpbmVzIHRvIG9mZnNldCB0aGUgaW5zZXJ0aW9uIGJ5LiBEZWZhdWx0IGlzIGAwYC5cbiAgICovXG4gIGxpbmVPZmZzZXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlc2VydmUgdGhlIGxpbmUgcHJlZml4IG9mIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRleHQgdG8gaW5zZXJ0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW1vdmVDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZUNvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8ga2VlcCB0aGUgZ2FwIGFmdGVyIHJlbW92aW5nIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRLZWVwR2FwPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVwbGFjZUNvZGVCbG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBuZXcgY29kZSBibG9jay5cbiAgICovXG4gIGNvZGVCbG9ja1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPHN0cmluZywgW3N0cmluZ10+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGtlZXAgdGhlIGdhcCB3aGVuIHRoZSBuZXcgY29kZSBibG9jayBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkS2VlcEdhcFdoZW5FbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlc2VydmUgdGhlIGxpbmUgcHJlZml4IG9mIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXg/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoT3B0aW9ucyB7XG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uO1xuICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudDogbnVtYmVyO1xuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheTtcbiAgbm90ZUNvbnRlbnQ6IHN0cmluZztcbiAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dDogc3RyaW5nO1xuICBzb3VyY2VMaW5lc0NvdW50OiBudW1iZXI7XG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zKTogUHJvbWlzZTxDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBlbCwgc291cmNlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgYXdhaXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMoKTtcbiAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBzb3VyY2VGaWxlKTtcblxuICBsZXQgbWFya2Rvd25JbmZvOiBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgYXdhaXQgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcCwgc291cmNlRmlsZSwgKG5vdGVDb250ZW50KSA9PiB7XG4gICAgY29uc3Qgbm90ZUNvbnRlbnRMZiA9IGVuc3VyZUxmRW5kaW5ncyhub3RlQ29udGVudCk7XG5cbiAgICBjb25zdCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiA9IHtcbiAgICAgIGxpbmVFbmQ6IG5vdGVDb250ZW50TGYuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgICBsaW5lU3RhcnQ6IDAsXG4gICAgICB0ZXh0OiBub3RlQ29udGVudExmXG4gICAgfTtcblxuICAgIGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCA9IGVuc3VyZUxmRW5kaW5ncyhhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQpO1xuICAgIGNvbnN0IHNvdXJjZUxmID0gZW5zdXJlTGZFbmRpbmdzKHNvdXJjZSk7XG5cbiAgICBpZiAoIWhhc1NpbmdsZU9jY3VycmVuY2Uobm90ZUNvbnRlbnRMZiwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb25PZmZzZXQgPSBub3RlQ29udGVudExmLmluZGV4T2YoYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgICBjb25zdCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCA9IG5vdGVDb250ZW50TGYuc2xpY2UoMCwgc2VjdGlvbk9mZnNldCkuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBpc0luQ2FsbG91dCA9ICEhZWwucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYWxsb3V0LWNvbnRlbnQnKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gICAgY29uc3Qgc291cmNlTGluZXMgPSBzb3VyY2VMZi5zcGxpdCgnXFxuJyk7XG5cbiAgICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IHRleHRMaW5lT2Zmc2V0cyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgdGV4dExpbmVPZmZzZXRzLnNldChsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCwgc2VjdGlvbk9mZnNldCk7XG5cbiAgICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGV4dExpbmUgPSB0ZXh0TGluZXNbaV0gPz8gJyc7XG4gICAgICBjb25zdCBsaW5lT2Zmc2V0ID0gbGFzdFRleHRMaW5lT2Zmc2V0ICsgdGV4dExpbmUubGVuZ3RoICsgMTtcbiAgICAgIHRleHRMaW5lT2Zmc2V0cy5zZXQobGluZXNCZWZvcmVTZWN0aW9uQ291bnQgKyBpICsgMSwgbGluZU9mZnNldCk7XG4gICAgICBsYXN0VGV4dExpbmVPZmZzZXQgPSBsaW5lT2Zmc2V0O1xuICAgIH1cblxuICAgIGNvbnN0IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcyA9IHRleHRMaW5lcy5tYXAoKGxpbmUsIGluZGV4KSA9PlxuICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lU3RhcnQgPD0gaW5kZXggJiYgaW5kZXggPD0gYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lRW5kID8gbGluZSA6ICcnXG4gICAgKTtcbiAgICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0ID0gcG90ZW50aWFsQ29kZUJsb2NrVGV4dExpbmVzLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgUkVHX0VYUCA9XG4gICAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gICAgZm9yIChjb25zdCBtYXRjaCBvZiBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0Lm1hdGNoQWxsKFJFR19FWFApKSB7XG4gICAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2VMZiwgaXNJbkNhbGxvdXQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFya2Rvd25JbmZvKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHtcbiAgICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICAgICAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBub3RlQ29udGVudCxcbiAgICAgICAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCxcbiAgICAgICAgc291cmNlTGluZXNDb3VudDogc291cmNlTGluZXMubGVuZ3RoLFxuICAgICAgICB0ZXh0TGluZU9mZnNldHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vdGVDb250ZW50TGYgPT09IG5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGZPZmZzZXRNYXBwZXIgPSBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyKG5vdGVDb250ZW50KTtcbiAgICBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0ID0gbGZPZmZzZXRNYXBwZXIobWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0Lm9mZnNldCk7XG4gICAgbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLmVuZC5vZmZzZXQgPSBsZk9mZnNldE1hcHBlcihtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXJrZG93bkluZm87XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEFmdGVyQ29kZUJsb2NrKG9wdGlvbnM6IEluc2VydENvZGVCbG9ja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgbGluZU9mZnNldCA9IDAsIHRleHQgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGN0eC5zb3VyY2VQYXRoLCBhc3luYyAoX2Fib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRMaW5lSW5kZXggPSBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLmxpbmUgKyBsaW5lT2Zmc2V0ICsgMTtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGJlZm9yZSB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnNlcnRCZWZvcmVDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8ob3B0aW9ucyk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50ICE9PSBtYXJrZG93bkluZm8ubm90ZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5saW5lIC0gbGluZU9mZnNldDtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVDb2RlQmxvY2sob3B0aW9uczogUmVtb3ZlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXBsYWNlQ29kZUJsb2NrKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvZGVCbG9ja1Byb3ZpZGVyOiAnJyxcbiAgICBzaG91bGRLZWVwR2FwV2hlbkVtcHR5OiBvcHRpb25zLnNob3VsZEtlZXBHYXAgPz8gZmFsc2VcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUNvZGVCbG9jayhvcHRpb25zOiBSZXBsYWNlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY29kZUJsb2NrUHJvdmlkZXIsIGN0eCB9ID0gb3B0aW9ucztcbiAgb3B0aW9ucy5hYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChhYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGFib3J0U2lnbmFsID0gYWJvcnRTaWduYWxBbnkoYWJvcnRTaWduYWwsIG9wdGlvbnMuYWJvcnRTaWduYWwpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgb2xkQ29kZUJsb2NrID0gY29udGVudC5zbGljZShtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0LCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KSB7XG4gICAgICBvbGRDb2RlQmxvY2sgPSB1bmluZGVudChvbGRDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29kZUJsb2NrID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvZGVCbG9ja1Byb3ZpZGVyLCBhYm9ydFNpZ25hbCwgb2xkQ29kZUJsb2NrKTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2gob3B0aW9uczogQ3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoT3B0aW9ucyk6IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24ge1xuICBjb25zdCB7XG4gICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCxcbiAgICBtYXRjaCxcbiAgICBub3RlQ29udGVudCxcbiAgICBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0LFxuICAgIHNvdXJjZUxpbmVzQ291bnQsXG4gICAgdGV4dExpbmVPZmZzZXRzXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzQ291bnQgKyAxO1xuXG4gIHJldHVybiB7XG4gICAgYXJnczogY29kZUJsb2NrQXJnc1N0ci5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSxcbiAgICBlbmREZWxpbWl0ZXI6IGNvZGVCbG9ja0VuZERlbGltaXRlcixcbiAgICBsYW5ndWFnZSxcbiAgICBsaW5lUHJlZml4LFxuICAgIG5vdGVDb250ZW50LFxuICAgIHBvc2l0aW9uSW5Ob3RlOiB7XG4gICAgICBlbmQ6IHtcbiAgICAgICAgY29sOiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lKSA/PyAwKSAtIDEsXG4gICAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICAgIG9mZnNldDogKHRleHRMaW5lT2Zmc2V0cy5nZXQoZW5kTGluZSArIDEpID8/IDApIC0gMVxuICAgICAgfSxcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgICBvZmZzZXQ6IHRleHRMaW5lT2Zmc2V0cy5nZXQoc3RhcnRMaW5lKSA/PyAwXG4gICAgICB9XG4gICAgfSxcbiAgICByYXdBcmdzU3RyOiBjb2RlQmxvY2tBcmdzU3RyLFxuICAgIHNlY3Rpb25JbmZvOiB7XG4gICAgICBsaW5lRW5kOiBwcmV2aW91c1RleHRMaW5lc0NvdW50ICsgc291cmNlTGluZXNDb3VudCArIDEsXG4gICAgICBsaW5lU3RhcnQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQsXG4gICAgICB0ZXh0OiBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHRcbiAgICB9LFxuICAgIHN0YXJ0RGVsaW1pdGVyOiBjb2RlQmxvY2tTdGFydERlbGltaXRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRMYW5ndWFnZUZyb21FbGVtZW50KGVsOiBIVE1MRWxlbWVudCk6IHN0cmluZyB7XG4gIGNvbnN0IEJMT0NLX0xBTkdVQUdFX1BSRUZJWCA9ICdibG9jay1sYW5ndWFnZS0nO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5jbGFzc0xpc3QpLmZpbmQoKGNscykgPT4gY2xzLnN0YXJ0c1dpdGgoQkxPQ0tfTEFOR1VBR0VfUFJFRklYKSk/LnNsaWNlKEJMT0NLX0xBTkdVQUdFX1BSRUZJWC5sZW5ndGgpID8/ICcnO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRUZXh0KGNvbnRlbnQ6IHN0cmluZywgaW5zZXJ0TGluZUluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IG5ld0xpbmVzID0gbGluZXMuc2xpY2UoKTtcbiAgY29uc3QgdGV4dExpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG5cbiAgaWYgKGluc2VydExpbmVJbmRleCA8IDApIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSAwO1xuICB9XG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPiBsaW5lcy5sZW5ndGgpIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSBsaW5lcy5sZW5ndGg7XG4gIH1cblxuICBjb25zdCBQUkVGSVhfTElORV9SRUdfRVhQID0gL14gezAsM30oPzo+IHsxLDN9KSovZztcbiAgY29uc3QgbWF0Y2ggPSAobGluZXNbaW5zZXJ0TGluZUluZGV4XSA/PyAnJykubWF0Y2goUFJFRklYX0xJTkVfUkVHX0VYUCk7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaD8uWzBdID8/ICcnO1xuICBuZXdMaW5lcy5zcGxpY2UoaW5zZXJ0TGluZUluZGV4LCAwLCAuLi4oc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4ID8gdGV4dExpbmVzLm1hcCgobGluZSkgPT4gaW5kZW50KGxpbmUsIGxpbmVQcmVmaXgpKSA6IHRleHRMaW5lcykpO1xuICByZXR1cm4gbmV3TGluZXMuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGlzU3VpdGFibGVDb2RlQmxvY2soXG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICBsYW5ndWFnZTogc3RyaW5nLFxuICBzb3VyY2VMZjogc3RyaW5nLFxuICBpc0luQ2FsbG91dDogYm9vbGVhblxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvZGVCbG9ja0xhbmd1YWdlID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0xhbmd1YWdlJ10gPz8gJyc7XG4gIGlmIChjb2RlQmxvY2tMYW5ndWFnZSAhPT0gbGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2guZ3JvdXBzPy5bJ0xpbmVQcmVmaXgnXSA/PyAnJztcblxuICBpZiAoaXNJbkNhbGxvdXQgJiYgIWxpbmVQcmVmaXguaW5jbHVkZXMoJz4gJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb2RlQmxvY2tDb250ZW50ID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0NvbnRlbnQnXSA/PyAnJztcbiAgY29uc3QgY2xlYW5Db2RlQmxvY2tDb250ZW50ID0gY29kZUJsb2NrQ29udGVudC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKGxpbmVQcmVmaXgubGVuZ3RoKSkuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGNsZWFuQ29kZUJsb2NrQ29udGVudCA9PT0gc291cmNlTGY7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGtDQUFrQztBQUMzQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWtHUCxlQUFzQix5QkFBeUIsU0FBd0Y7QUFDckksUUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLE9BQU8sSUFBSTtBQUVqQyxRQUFNLGFBQWEsSUFBSSxNQUFNLGNBQWMsSUFBSSxVQUFVO0FBQ3pELE1BQUksQ0FBQyxZQUFZO0FBQ2YsVUFBTSxJQUFJLE1BQU0sZUFBZSxJQUFJLFVBQVUsYUFBYTtBQUFBLEVBQzVEO0FBRUEsUUFBTSwyQkFBMkI7QUFDakMsUUFBTSxTQUFTLEtBQUssVUFBVTtBQUU5QixNQUFJLGVBQW9EO0FBRXhELFFBQU0seUJBQXlCLEtBQUssWUFBWSxDQUFDLGdCQUFnQjtBQUMvRCxVQUFNLGdCQUFnQixnQkFBZ0IsV0FBVztBQUVqRCxVQUFNLHlCQUFxRDtBQUFBLE1BQ3pELFNBQVMs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
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQge1xuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIsXG4gIGhhc1NpbmdsZU9jY3VycmVuY2UsXG4gIGluZGVudCxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgZ2V0RmlsZU9yTnVsbCB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBpbnZva2VXaXRoRmlsZVN5c3RlbUxvY2ssXG4gIHByb2Nlc3MsXG4gIHNhdmVOb3RlXG59IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm99LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHR9IG9iamVjdC5cbiAgICovXG4gIGN0eDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dDtcblxuICAvKipcbiAgICogQSB7QGxpbmsgSFRNTEVsZW1lbnR9IHJlcHJlc2VudGluZyB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIGVsOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgaW5zZXJ0QWZ0ZXJDb2RlQmxvY2t9IC8ge0BsaW5rIGluc2VydEJlZm9yZUNvZGVCbG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogQSBudW1iZXIgb2YgbGluZXMgdG8gb2Zmc2V0IHRoZSBpbnNlcnRpb24gYnkuIERlZmF1bHQgaXMgYDBgLlxuICAgKi9cbiAgbGluZU9mZnNldD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmVzZXJ2ZSB0aGUgbGluZSBwcmVmaXggb2YgdGhlIGNvZGUgYmxvY2suIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgdGV4dCB0byBpbnNlcnQgYWZ0ZXIgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbW92ZUNvZGVCbG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlQ29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBrZWVwIHRoZSBnYXAgYWZ0ZXIgcmVtb3ZpbmcgdGhlIGNvZGUgYmxvY2suIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEtlZXBHYXA/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZXBsYWNlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlQ29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogQW4gYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIG5ldyBjb2RlIGJsb2NrLlxuICAgKi9cbiAgY29kZUJsb2NrUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8c3RyaW5nLCBbc3RyaW5nXT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8ga2VlcCB0aGUgZ2FwIHdoZW4gdGhlIG5ldyBjb2RlIGJsb2NrIGlzIGVtcHR5LiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRLZWVwR2FwV2hlbkVtcHR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmVzZXJ2ZSB0aGUgbGluZSBwcmVmaXggb2YgdGhlIGNvZGUgYmxvY2suIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2hPcHRpb25zIHtcbiAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbzogTWFya2Rvd25TZWN0aW9uSW5mb3JtYXRpb247XG4gIGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50OiBudW1iZXI7XG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5O1xuICBub3RlQ29udGVudDogc3RyaW5nO1xuICBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0OiBzdHJpbmc7XG4gIHNvdXJjZUxpbmVzQ291bnQ6IG51bWJlcjtcbiAgdGV4dExpbmVPZmZzZXRzOiBNYXA8bnVtYmVyLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGEgY29kZSBibG9jayBpbiBhIE1hcmtkb3duIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2RlIGJsb2NrIGluIHRoZSBNYXJrZG93biBzZWN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnM6IEdldENvZGVCbG9ja01hcmtkb3duSW5mb09wdGlvbnMpOiBQcm9taXNlPENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGVsLCBzb3VyY2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgYXdhaXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMoKTtcbiAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBzb3VyY2VGaWxlKTtcblxuICBsZXQgbWFya2Rvd25JbmZvOiBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgYXdhaXQgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcCwgc291cmNlRmlsZSwgKG5vdGVDb250ZW50KSA9PiB7XG4gICAgY29uc3Qgbm90ZUNvbnRlbnRMZiA9IGVuc3VyZUxmRW5kaW5ncyhub3RlQ29udGVudCk7XG5cbiAgICBjb25zdCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiA9IHtcbiAgICAgIGxpbmVFbmQ6IG5vdGVDb250ZW50TGYuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgICBsaW5lU3RhcnQ6IDAsXG4gICAgICB0ZXh0OiBub3RlQ29udGVudExmXG4gICAgfTtcblxuICAgIGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCA9IGVuc3VyZUxmRW5kaW5ncyhhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQpO1xuICAgIGNvbnN0IHNvdXJjZUxmID0gZW5zdXJlTGZFbmRpbmdzKHNvdXJjZSk7XG5cbiAgICBpZiAoIWhhc1NpbmdsZU9jY3VycmVuY2Uobm90ZUNvbnRlbnRMZiwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb25PZmZzZXQgPSBub3RlQ29udGVudExmLmluZGV4T2YoYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgICBjb25zdCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCA9IG5vdGVDb250ZW50TGYuc2xpY2UoMCwgc2VjdGlvbk9mZnNldCkuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBpc0luQ2FsbG91dCA9ICEhZWwucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYWxsb3V0LWNvbnRlbnQnKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gICAgY29uc3Qgc291cmNlTGluZXMgPSBzb3VyY2VMZi5zcGxpdCgnXFxuJyk7XG5cbiAgICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IHRleHRMaW5lT2Zmc2V0cyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgdGV4dExpbmVPZmZzZXRzLnNldChsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCwgc2VjdGlvbk9mZnNldCk7XG5cbiAgICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGV4dExpbmUgPSB0ZXh0TGluZXNbaV0gPz8gJyc7XG4gICAgICBjb25zdCBsaW5lT2Zmc2V0ID0gbGFzdFRleHRMaW5lT2Zmc2V0ICsgdGV4dExpbmUubGVuZ3RoICsgMTtcbiAgICAgIHRleHRMaW5lT2Zmc2V0cy5zZXQobGluZXNCZWZvcmVTZWN0aW9uQ291bnQgKyBpICsgMSwgbGluZU9mZnNldCk7XG4gICAgICBsYXN0VGV4dExpbmVPZmZzZXQgPSBsaW5lT2Zmc2V0O1xuICAgIH1cblxuICAgIGNvbnN0IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcyA9IHRleHRMaW5lcy5tYXAoKGxpbmUsIGluZGV4KSA9PlxuICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lU3RhcnQgPD0gaW5kZXggJiYgaW5kZXggPD0gYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lRW5kID8gbGluZSA6ICcnXG4gICAgKTtcbiAgICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0ID0gcG90ZW50aWFsQ29kZUJsb2NrVGV4dExpbmVzLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgUkVHX0VYUCA9XG4gICAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gICAgZm9yIChjb25zdCBtYXRjaCBvZiBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0Lm1hdGNoQWxsKFJFR19FWFApKSB7XG4gICAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2VMZiwgaXNJbkNhbGxvdXQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFya2Rvd25JbmZvKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHtcbiAgICAgICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICAgICAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBub3RlQ29udGVudCxcbiAgICAgICAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCxcbiAgICAgICAgc291cmNlTGluZXNDb3VudDogc291cmNlTGluZXMubGVuZ3RoLFxuICAgICAgICB0ZXh0TGluZU9mZnNldHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vdGVDb250ZW50TGYgPT09IG5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGZPZmZzZXRNYXBwZXIgPSBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyKG5vdGVDb250ZW50KTtcbiAgICBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0ID0gbGZPZmZzZXRNYXBwZXIobWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0Lm9mZnNldCk7XG4gICAgbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLmVuZC5vZmZzZXQgPSBsZk9mZnNldE1hcHBlcihtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXJrZG93bkluZm87XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEFmdGVyQ29kZUJsb2NrKG9wdGlvbnM6IEluc2VydENvZGVCbG9ja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgbGluZU9mZnNldCA9IDAsIHRleHQgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGN0eC5zb3VyY2VQYXRoLCBhc3luYyAoX2Fib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRMaW5lSW5kZXggPSBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLmxpbmUgKyBsaW5lT2Zmc2V0ICsgMTtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGJlZm9yZSB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnNlcnRCZWZvcmVDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8ob3B0aW9ucyk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50ICE9PSBtYXJrZG93bkluZm8ubm90ZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5saW5lIC0gbGluZU9mZnNldDtcbiAgICByZXR1cm4gaW5zZXJ0VGV4dChjb250ZW50LCBpbnNlcnRMaW5lSW5kZXgsIHRleHQsIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVDb2RlQmxvY2sob3B0aW9uczogUmVtb3ZlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXBsYWNlQ29kZUJsb2NrKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvZGVCbG9ja1Byb3ZpZGVyOiAnJyxcbiAgICBzaG91bGRLZWVwR2FwV2hlbkVtcHR5OiBvcHRpb25zLnNob3VsZEtlZXBHYXAgPz8gZmFsc2VcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUNvZGVCbG9jayhvcHRpb25zOiBSZXBsYWNlQ29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY29kZUJsb2NrUHJvdmlkZXIsIGN0eCB9ID0gb3B0aW9ucztcbiAgb3B0aW9ucy5hYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChhYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGFib3J0U2lnbmFsID0gYWJvcnRTaWduYWxBbnkoYWJvcnRTaWduYWwsIG9wdGlvbnMuYWJvcnRTaWduYWwpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnMpO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCAhPT0gbWFya2Rvd25JbmZvLm5vdGVDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgb2xkQ29kZUJsb2NrID0gY29udGVudC5zbGljZShtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0LCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuZW5kLm9mZnNldCk7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KSB7XG4gICAgICBvbGRDb2RlQmxvY2sgPSB1bmluZGVudChvbGRDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29kZUJsb2NrID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvZGVCbG9ja1Byb3ZpZGVyLCBhYm9ydFNpZ25hbCwgb2xkQ29kZUJsb2NrKTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2gob3B0aW9uczogQ3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoT3B0aW9ucyk6IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24ge1xuICBjb25zdCB7XG4gICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyxcbiAgICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCxcbiAgICBtYXRjaCxcbiAgICBub3RlQ29udGVudCxcbiAgICBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0LFxuICAgIHNvdXJjZUxpbmVzQ291bnQsXG4gICAgdGV4dExpbmVPZmZzZXRzXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzQ291bnQgKyAxO1xuXG4gIHJldHVybiB7XG4gICAgYXJnczogY29kZUJsb2NrQXJnc1N0ci5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSxcbiAgICBlbmREZWxpbWl0ZXI6IGNvZGVCbG9ja0VuZERlbGltaXRlcixcbiAgICBsYW5ndWFnZSxcbiAgICBsaW5lUHJlZml4LFxuICAgIG5vdGVDb250ZW50LFxuICAgIHBvc2l0aW9uSW5Ob3RlOiB7XG4gICAgICBlbmQ6IHtcbiAgICAgICAgY29sOiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lKSA/PyAwKSAtIDEsXG4gICAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICAgIG9mZnNldDogKHRleHRMaW5lT2Zmc2V0cy5nZXQoZW5kTGluZSArIDEpID8/IDApIC0gMVxuICAgICAgfSxcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgICBvZmZzZXQ6IHRleHRMaW5lT2Zmc2V0cy5nZXQoc3RhcnRMaW5lKSA/PyAwXG4gICAgICB9XG4gICAgfSxcbiAgICByYXdBcmdzU3RyOiBjb2RlQmxvY2tBcmdzU3RyLFxuICAgIHNlY3Rpb25JbmZvOiB7XG4gICAgICBsaW5lRW5kOiBwcmV2aW91c1RleHRMaW5lc0NvdW50ICsgc291cmNlTGluZXNDb3VudCArIDEsXG4gICAgICBsaW5lU3RhcnQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQsXG4gICAgICB0ZXh0OiBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHRcbiAgICB9LFxuICAgIHN0YXJ0RGVsaW1pdGVyOiBjb2RlQmxvY2tTdGFydERlbGltaXRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRMYW5ndWFnZUZyb21FbGVtZW50KGVsOiBIVE1MRWxlbWVudCk6IHN0cmluZyB7XG4gIGNvbnN0IEJMT0NLX0xBTkdVQUdFX1BSRUZJWCA9ICdibG9jay1sYW5ndWFnZS0nO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5jbGFzc0xpc3QpLmZpbmQoKGNscykgPT4gY2xzLnN0YXJ0c1dpdGgoQkxPQ0tfTEFOR1VBR0VfUFJFRklYKSk/LnNsaWNlKEJMT0NLX0xBTkdVQUdFX1BSRUZJWC5sZW5ndGgpID8/ICcnO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRUZXh0KGNvbnRlbnQ6IHN0cmluZywgaW5zZXJ0TGluZUluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IG5ld0xpbmVzID0gbGluZXMuc2xpY2UoKTtcbiAgY29uc3QgdGV4dExpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG5cbiAgaWYgKGluc2VydExpbmVJbmRleCA8IDApIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSAwO1xuICB9XG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPiBsaW5lcy5sZW5ndGgpIHtcbiAgICBpbnNlcnRMaW5lSW5kZXggPSBsaW5lcy5sZW5ndGg7XG4gIH1cblxuICBjb25zdCBQUkVGSVhfTElORV9SRUdfRVhQID0gL14gezAsM30oPzo+IHsxLDN9KSovZztcbiAgY29uc3QgbWF0Y2ggPSAobGluZXNbaW5zZXJ0TGluZUluZGV4XSA/PyAnJykubWF0Y2goUFJFRklYX0xJTkVfUkVHX0VYUCk7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaD8uWzBdID8/ICcnO1xuICBuZXdMaW5lcy5zcGxpY2UoaW5zZXJ0TGluZUluZGV4LCAwLCAuLi4oc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4ID8gdGV4dExpbmVzLm1hcCgobGluZSkgPT4gaW5kZW50KGxpbmUsIGxpbmVQcmVmaXgpKSA6IHRleHRMaW5lcykpO1xuICByZXR1cm4gbmV3TGluZXMuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGlzU3VpdGFibGVDb2RlQmxvY2soXG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICBsYW5ndWFnZTogc3RyaW5nLFxuICBzb3VyY2VMZjogc3RyaW5nLFxuICBpc0luQ2FsbG91dDogYm9vbGVhblxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvZGVCbG9ja0xhbmd1YWdlID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0xhbmd1YWdlJ10gPz8gJyc7XG4gIGlmIChjb2RlQmxvY2tMYW5ndWFnZSAhPT0gbGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2guZ3JvdXBzPy5bJ0xpbmVQcmVmaXgnXSA/PyAnJztcblxuICBpZiAoaXNJbkNhbGxvdXQgJiYgIWxpbmVQcmVmaXguaW5jbHVkZXMoJz4gJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb2RlQmxvY2tDb250ZW50ID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0NvbnRlbnQnXSA/PyAnJztcbiAgY29uc3QgY2xlYW5Db2RlQmxvY2tDb250ZW50ID0gY29kZUJsb2NrQ29udGVudC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKGxpbmVQcmVmaXgubGVuZ3RoKSkuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGNsZWFuQ29kZUJsb2NrQ29udGVudCA9PT0gc291cmNlTGY7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGtDQUFrQztBQUMzQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMscUJBQXFCO0FBQzlCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWtHUCxlQUFzQix5QkFBeUIsU0FBd0Y7QUFDckksUUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLE9BQU8sSUFBSTtBQUVqQyxRQUFNLGFBQWEsY0FBYyxLQUFLLElBQUksVUFBVTtBQUNwRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLGVBQWUsSUFBSSxVQUFVLGFBQWE7QUFBQSxFQUM1RDtBQUVBLFFBQU0sMkJBQTJCO0FBQ2pDLFFBQU0sU0FBUyxLQUFLLFVBQVU7QUFFOUIsTUFBSSxlQUFvRDtBQUV4RCxRQUFNLHlCQUF5QixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7QUFDL0Qs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
|
|
@@ -106,11 +106,11 @@ export declare function getOrCreateFolderSafe(app: App, path: string): Promise<T
|
|
|
106
106
|
* Gets a safe rename path for a file.
|
|
107
107
|
*
|
|
108
108
|
* @param app - The application instance.
|
|
109
|
-
* @param
|
|
110
|
-
* @param newPath - The new path to rename the file to.
|
|
111
|
-
* @returns The safe rename path for the file.
|
|
109
|
+
* @param oldPathOrAbstractFile - The old path or abstract file to rename.
|
|
110
|
+
* @param newPath - The new path to rename the abstract file to.
|
|
111
|
+
* @returns The safe rename path for the abstract file.
|
|
112
112
|
*/
|
|
113
|
-
export declare function getSafeRenamePath(app: App,
|
|
113
|
+
export declare function getSafeRenamePath(app: App, oldPathOrAbstractFile: PathOrAbstractFile, newPath: string): string;
|
|
114
114
|
/**
|
|
115
115
|
* Invokes a function with the file system lock.
|
|
116
116
|
*
|
|
@@ -132,21 +132,21 @@ function getNoteFilesSorted(app) {
|
|
|
132
132
|
return app.vault.getAllLoadedFiles().filter((file) => isFile(file) && isNote(app, file)).sort((a, b) => a.path.localeCompare(b.path));
|
|
133
133
|
}
|
|
134
134
|
async function getOrCreateFileSafe(app, path) {
|
|
135
|
-
const file = getAbstractFileOrNull(app, path
|
|
135
|
+
const file = getAbstractFileOrNull(app, path);
|
|
136
136
|
if (isFile(file)) {
|
|
137
137
|
return file;
|
|
138
138
|
}
|
|
139
139
|
return await app.vault.create(getAvailablePath(app, path), "");
|
|
140
140
|
}
|
|
141
141
|
async function getOrCreateFolderSafe(app, path) {
|
|
142
|
-
const folder = getAbstractFileOrNull(app, path
|
|
142
|
+
const folder = getAbstractFileOrNull(app, path);
|
|
143
143
|
if (isFolder(folder)) {
|
|
144
144
|
return folder;
|
|
145
145
|
}
|
|
146
146
|
return await app.vault.createFolder(getAvailablePath(app, path));
|
|
147
147
|
}
|
|
148
|
-
function getSafeRenamePath(app,
|
|
149
|
-
const oldPath = getPath(app,
|
|
148
|
+
function getSafeRenamePath(app, oldPathOrAbstractFile, newPath) {
|
|
149
|
+
const oldPath = getPath(app, oldPathOrAbstractFile);
|
|
150
150
|
if (app.vault.adapter.insensitive) {
|
|
151
151
|
let folderPath = dirname(newPath);
|
|
152
152
|
let nonExistingPath = basename(newPath);
|
|
@@ -292,7 +292,7 @@ async function readSafe(app, pathOrFile) {
|
|
|
292
292
|
return content;
|
|
293
293
|
}
|
|
294
294
|
async function renameSafe(app, oldPathOrFile, newPath) {
|
|
295
|
-
const oldFile = getFile(app, oldPathOrFile
|
|
295
|
+
const oldFile = getFile(app, oldPathOrFile);
|
|
296
296
|
const newAvailablePath = getSafeRenamePath(app, oldPathOrFile, newPath);
|
|
297
297
|
if (oldFile.path.toLowerCase() === newAvailablePath.toLowerCase()) {
|
|
298
298
|
if (oldFile.path !== newPath) {
|
|
@@ -360,4 +360,4 @@ export {
|
|
|
360
360
|
renameSafe,
|
|
361
361
|
saveNote
|
|
362
362
|
};
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgTGlzdGVkRmlsZXMsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXRoT3JBYnN0cmFjdEZpbGUsXG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbEFueSB9IGZyb20gJy4uL0Fib3J0Q29udHJvbGxlci50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0Tm90aWNlIH0gZnJvbSAnLi9Bc3luY1dpdGhOb3RpY2UudHMnO1xuaW1wb3J0IHtcbiAgbG9ja0VkaXRvcixcbiAgdW5sb2NrRWRpdG9yXG59IGZyb20gJy4vRWRpdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNGb2xkZXIsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHByb2Nlc3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZmFpbCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxvY2sgdGhlIGVkaXRvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSBmaWxlLiBBcHBsaWNhYmxlIG9ubHkgZm9yIG1hcmtkb3duIGZpbGVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGNvcGllZCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGZpbGUucGF0aCA9PT0gbmV3UGF0aCkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3UGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNvcHkoZmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoKTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUoZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgsIGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKGdldEF2YWlsYWJsZVBhdGgoYXBwLCBwYXRoKSwgJycpO1xufVxuXG4vKipcbiAqIEdldHMgb3IgY3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmb2xkZXIgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZm9sZGVyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgsIGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRm9sZGVyKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKGdldEF2YWlsYWJsZVBhdGgoYXBwLCBwYXRoKSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgb2xkUGF0aCA9IGdldFBhdGgoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFRoZXJlIGlzIG5vIGVsZWdhbnQgd2F5IHRvIHBlcmZvcm0gaW5maW5pdGUgbG9vcHMuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgIGZuKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZChhcHA6IEFwcCwgYTogUGF0aE9yQWJzdHJhY3RGaWxlLCBiOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgY29uc3QgYVBhdGggPSBnZXRQYXRoKGFwcCwgYSk7XG4gIGNvbnN0IGJQYXRoID0gZ2V0UGF0aChhcHAsIGIpO1xuICByZXR1cm4gYVBhdGguc3RhcnRzV2l0aChgJHtiUGF0aH0vYCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgdGhlIHNlY29uZCBwYXRoIG9yIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkT3JTZWxmKGFwcDogQXBwLCBhOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGI6IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICBjb25zdCBhUGF0aCA9IGdldFBhdGgoYXBwLCBhKTtcbiAgY29uc3QgYlBhdGggPSBnZXRQYXRoKGFwcCwgYik7XG4gIHJldHVybiBhUGF0aCA9PT0gYlBhdGggfHwgaXNDaGlsZChhcHAsIGEsIGIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBpcyBlbXB0eS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIGlzIGVtcHR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbGlzdGVkRmlsZXMgPSBhd2FpdCBsaXN0U2FmZShhcHAsIGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpKTtcbiAgcmV0dXJuIGxpc3RlZEZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCAmJiBsaXN0ZWRGaWxlcy5mb2xkZXJzLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gbGlzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgTGlzdGVkRmlsZXN9IG9iamVjdCBjb250YWluaW5nIHRoZSBsaXN0ZWQgZmlsZXMgYW5kIGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2FmZShhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPExpc3RlZEZpbGVzPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKTtcbiAgY29uc3QgRU1QVFkgPSB7IGZpbGVzOiBbXSwgZm9sZGVyczogW10gfTtcblxuICBpZiAoKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCkpPy50eXBlICE9PSAnZm9sZGVyJykge1xuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmxpc3QocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZmlsZSB3aXRoIHJldHJ5IGxvZ2ljLCB1cGRhdGluZyBpdHMgY29udGVudCBiYXNlZCBvbiBhIHByb3ZpZGVkIHZhbHVlIG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UsIHR5cGljYWxseSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIHZhdWx0LlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGJlIHByb2Nlc3NlZC4gSXQgY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCBvciBhIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIG5ld0NvbnRlbnRQcm92aWRlciAtIEEgdmFsdWUgcHJvdmlkZXIgdGhhdCByZXR1cm5zIHRoZSBuZXcgY29udGVudCBiYXNlZCBvbiB0aGUgb2xkIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvbGQgY29udGVudCBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQuXG4gKiBJZiBmdW5jdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHJldHVybiBgbnVsbGAgaWYgdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJldHJpZWQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIG9wdGlvbnMgZm9yIHByb2Nlc3NpbmcvcmV0cnlpbmcgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHByb2Nlc3MgaXMgY29tcGxldGUuXG4gKlxuICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwcm9jZXNzIGZhaWxzIGFmdGVyIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHJldHJpZXMgb3IgdGltZW91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3MoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBuZXdDb250ZW50UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8bnVsbCB8IHN0cmluZywgW3N0cmluZ10+LFxuICBvcHRpb25zOiBQcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiB0cnVlLFxuICAgIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc6IHRydWUsXG4gICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IHRydWUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRGVmYXVsdCB2YWx1ZS5cbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDUwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgbGV0IGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZjogRXZlbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkTG9ja0VkaXRvcldoaWxlUHJvY2Vzc2luZykge1xuICAgIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWYgPSBhcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZikgPT4ge1xuICAgICAgaWYgKGxlYWY/LnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbCkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChvbGRDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKG5ld0NvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwsIG9sZENvbnRlbnQpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChuZXdDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzU3VjY2VzcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgIGdldExpYkRlYnVnZ2VyKCdWYXVsdDpwcm9jZXNzJykoJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZG9lc0ZpbGVFeGlzdCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzU3VjY2VzcztcblxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVNaXNzaW5nRmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAnJHtwYXRofScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnZhdWx0LnByb2Nlc3NGaWxlLCB7IGZpbGVQYXRoOiBwYXRoIH0pLFxuICAgICAgcmV0cnlPcHRpb25zOiBmdWxsT3B0aW9ucyxcbiAgICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBmdWxsT3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZVxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZj8uZS5vZmZyZWYoYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmKTtcbiAgICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgIHVubG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgfSk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFJlbmFtZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKiBJZiB0aGUgbmV3IHBhdGggYWxyZWFkeSBleGlzdHMsIHRoZSBmaWxlIHdpbGwgYmUgcmVuYW1lZCB0byBhbiBhdmFpbGFibGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG9sZEZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSwgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IG5ld0F2YWlsYWJsZVBhdGggPSBnZXRTYWZlUmVuYW1lUGF0aChhcHAsIG9sZFBhdGhPckZpbGUsIG5ld1BhdGgpO1xuXG4gIGlmIChvbGRGaWxlLnBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3QXZhaWxhYmxlUGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgaWYgKG9sZEZpbGUucGF0aCAhPT0gbmV3UGF0aCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkRmlsZS5wYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIG5vdGUgdG8gYmUgc2F2ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5vdGUgaXMgc2F2ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWlzTWFya2Rvd25GaWxlKGFwcCwgcGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoICYmIGxlYWYudmlldy5kaXJ0eSkge1xuICAgICAgYXdhaXQgbGVhZi52aWV3LnNhdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZpbGVBY3Rpb24oZmlsZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsU0FBUyxvQkFBb0I7QUFDN0I7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
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgTGlzdGVkRmlsZXMsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBQYXRoT3JBYnN0cmFjdEZpbGUsXG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbEFueSB9IGZyb20gJy4uL0Fib3J0Q29udHJvbGxlci50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0Tm90aWNlIH0gZnJvbSAnLi9Bc3luY1dpdGhOb3RpY2UudHMnO1xuaW1wb3J0IHtcbiAgbG9ja0VkaXRvcixcbiAgdW5sb2NrRWRpdG9yXG59IGZyb20gJy4vRWRpdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNGb2xkZXIsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHByb2Nlc3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NPcHRpb25zIGV4dGVuZHMgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZmFpbCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxvY2sgdGhlIGVkaXRvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSBmaWxlLiBBcHBsaWNhYmxlIG9ubHkgZm9yIG1hcmtkb3duIGZpbGVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGNvcGllZCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGZpbGUucGF0aCA9PT0gbmV3UGF0aCkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3UGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNvcHkoZmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoKTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUoZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUoZ2V0QXZhaWxhYmxlUGF0aChhcHAsIHBhdGgpLCAnJyk7XG59XG5cbi8qKlxuICogR2V0cyBvciBjcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZvbGRlciBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIHRoZSBmb2xkZXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFRGb2xkZXI+IHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChpc0ZvbGRlcihmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihnZXRBdmFpbGFibGVQYXRoKGFwcCwgcGF0aCkpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIHJlbmFtZSBwYXRoIGZvciBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgLSBUaGUgb2xkIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGFic3RyYWN0IGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGFic3RyYWN0IGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG9sZFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlKTtcblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFRoZXJlIGlzIG5vIGVsZWdhbnQgd2F5IHRvIHBlcmZvcm0gaW5maW5pdGUgbG9vcHMuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgIGZuKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZChhcHA6IEFwcCwgYTogUGF0aE9yQWJzdHJhY3RGaWxlLCBiOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgY29uc3QgYVBhdGggPSBnZXRQYXRoKGFwcCwgYSk7XG4gIGNvbnN0IGJQYXRoID0gZ2V0UGF0aChhcHAsIGIpO1xuICByZXR1cm4gYVBhdGguc3RhcnRzV2l0aChgJHtiUGF0aH0vYCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgdGhlIHNlY29uZCBwYXRoIG9yIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkT3JTZWxmKGFwcDogQXBwLCBhOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGI6IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICBjb25zdCBhUGF0aCA9IGdldFBhdGgoYXBwLCBhKTtcbiAgY29uc3QgYlBhdGggPSBnZXRQYXRoKGFwcCwgYik7XG4gIHJldHVybiBhUGF0aCA9PT0gYlBhdGggfHwgaXNDaGlsZChhcHAsIGEsIGIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBpcyBlbXB0eS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIGlzIGVtcHR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbGlzdGVkRmlsZXMgPSBhd2FpdCBsaXN0U2FmZShhcHAsIGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpKTtcbiAgcmV0dXJuIGxpc3RlZEZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCAmJiBsaXN0ZWRGaWxlcy5mb2xkZXJzLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gbGlzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgTGlzdGVkRmlsZXN9IG9iamVjdCBjb250YWluaW5nIHRoZSBsaXN0ZWQgZmlsZXMgYW5kIGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2FmZShhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPExpc3RlZEZpbGVzPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKTtcbiAgY29uc3QgRU1QVFkgPSB7IGZpbGVzOiBbXSwgZm9sZGVyczogW10gfTtcblxuICBpZiAoKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCkpPy50eXBlICE9PSAnZm9sZGVyJykge1xuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmxpc3QocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZmlsZSB3aXRoIHJldHJ5IGxvZ2ljLCB1cGRhdGluZyBpdHMgY29udGVudCBiYXNlZCBvbiBhIHByb3ZpZGVkIHZhbHVlIG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UsIHR5cGljYWxseSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIHZhdWx0LlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGJlIHByb2Nlc3NlZC4gSXQgY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCBvciBhIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIG5ld0NvbnRlbnRQcm92aWRlciAtIEEgdmFsdWUgcHJvdmlkZXIgdGhhdCByZXR1cm5zIHRoZSBuZXcgY29udGVudCBiYXNlZCBvbiB0aGUgb2xkIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvbGQgY29udGVudCBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQuXG4gKiBJZiBmdW5jdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHJldHVybiBgbnVsbGAgaWYgdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJldHJpZWQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIG9wdGlvbnMgZm9yIHByb2Nlc3NpbmcvcmV0cnlpbmcgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHByb2Nlc3MgaXMgY29tcGxldGUuXG4gKlxuICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwcm9jZXNzIGZhaWxzIGFmdGVyIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHJldHJpZXMgb3IgdGltZW91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3MoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBuZXdDb250ZW50UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8bnVsbCB8IHN0cmluZywgW3N0cmluZ10+LFxuICBvcHRpb25zOiBQcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiB0cnVlLFxuICAgIHNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3Npbmc6IHRydWUsXG4gICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IHRydWUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRGVmYXVsdCB2YWx1ZS5cbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDUwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgbGV0IGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZjogRXZlbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkTG9ja0VkaXRvcldoaWxlUHJvY2Vzc2luZykge1xuICAgIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWYgPSBhcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZikgPT4ge1xuICAgICAgaWYgKGxlYWY/LnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgbG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgcmV0cnlXaXRoVGltZW91dE5vdGljZSh7XG4gICAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbCkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChvbGRDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKG5ld0NvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwsIG9sZENvbnRlbnQpO1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICAgIGlmIChuZXdDb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzU3VjY2VzcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgIGdldExpYkRlYnVnZ2VyKCdWYXVsdDpwcm9jZXNzJykoJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZG9lc0ZpbGVFeGlzdCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzU3VjY2VzcztcblxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVNaXNzaW5nRmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAnJHtwYXRofScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnZhdWx0LnByb2Nlc3NGaWxlLCB7IGZpbGVQYXRoOiBwYXRoIH0pLFxuICAgICAgcmV0cnlPcHRpb25zOiBmdWxsT3B0aW9ucyxcbiAgICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBmdWxsT3B0aW9ucy5zaG91bGRTaG93VGltZW91dE5vdGljZVxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZj8uZS5vZmZyZWYoYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmKTtcbiAgICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgIHVubG9ja0VkaXRvcihsZWFmLnZpZXcuZWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgfSk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFJlbmFtZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKiBJZiB0aGUgbmV3IHBhdGggYWxyZWFkeSBleGlzdHMsIHRoZSBmaWxlIHdpbGwgYmUgcmVuYW1lZCB0byBhbiBhdmFpbGFibGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG9sZEZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSwgbmV3UGF0aCk7XG5cbiAgaWYgKG9sZEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkRmlsZS5wYXRoICE9PSBuZXdQYXRoKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIucmVuYW1lRmlsZShvbGRGaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG4gIH1cblxuICBjb25zdCBuZXdGb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChuZXdBdmFpbGFibGVQYXRoKTtcbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0ZvbGRlclBhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRGaWxlLnBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIFNhdmVzIHRoZSBzcGVjaWZpZWQgbm90ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgbm90ZSB0byBiZSBzYXZlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZmlsZUFjdGlvbjogKGZpbGU6IFRGaWxlKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxF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
|