obsidian-dev-utils 37.0.0 → 37.1.1
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 +8 -0
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/String.cjs +33 -1
- package/dist/lib/cjs/String.d.cts +17 -0
- package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +3 -3
- package/dist/lib/cjs/obsidian/Vault.cjs +2 -1
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/String.d.mts +17 -0
- package/dist/lib/esm/String.mjs +31 -1
- package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +5 -3
- package/dist/lib/esm/obsidian/Vault.mjs +6 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/lib/cjs/Library.cjs
CHANGED
|
@@ -30,7 +30,7 @@ __export(Library_exports, {
|
|
|
30
30
|
LIBRARY_VERSION: () => LIBRARY_VERSION
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(Library_exports);
|
|
33
|
-
const LIBRARY_VERSION = "37.
|
|
33
|
+
const LIBRARY_VERSION = "37.1.1";
|
|
34
34
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
35
35
|
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-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.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/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.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;;;AChDF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;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&.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&.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";
|
|
36
36
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/lib/cjs/String.cjs
CHANGED
|
@@ -26,10 +26,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
26
26
|
var String_exports = {};
|
|
27
27
|
__export(String_exports, {
|
|
28
28
|
ensureEndsWith: () => ensureEndsWith,
|
|
29
|
+
ensureLfEndings: () => ensureLfEndings,
|
|
29
30
|
ensureStartsWith: () => ensureStartsWith,
|
|
30
31
|
escape: () => escape,
|
|
31
32
|
hasSingleOccurrence: () => hasSingleOccurrence,
|
|
32
33
|
indent: () => indent,
|
|
34
|
+
indexOfIgnoringLineEndings: () => indexOfIgnoringLineEndings,
|
|
33
35
|
insertAt: () => insertAt,
|
|
34
36
|
makeValidVariableName: () => makeValidVariableName,
|
|
35
37
|
normalize: () => normalize,
|
|
@@ -63,6 +65,9 @@ for (const [key, value] of Object.entries(ESCAPE_MAP)) {
|
|
|
63
65
|
function ensureEndsWith(str, suffix) {
|
|
64
66
|
return str.endsWith(suffix) ? str : str + suffix;
|
|
65
67
|
}
|
|
68
|
+
function ensureLfEndings(str) {
|
|
69
|
+
return str.replaceAll(/\r\n?/g, "\n");
|
|
70
|
+
}
|
|
66
71
|
function ensureStartsWith(str, prefix) {
|
|
67
72
|
return str.startsWith(prefix) ? str : prefix + str;
|
|
68
73
|
}
|
|
@@ -77,6 +82,31 @@ function hasSingleOccurrence(str, searchValue) {
|
|
|
77
82
|
function indent(text, prefix) {
|
|
78
83
|
return text.split("\n").map((line) => `${prefix}${line}`).join("\n");
|
|
79
84
|
}
|
|
85
|
+
function indexOfIgnoringLineEndings(str, substr) {
|
|
86
|
+
const CR = "\r";
|
|
87
|
+
const LF = "\n";
|
|
88
|
+
const CRLF_LENGTH = 2;
|
|
89
|
+
const NOT_FOUND_INDEX = -1;
|
|
90
|
+
const strLf = ensureLfEndings(str);
|
|
91
|
+
const substrLf = ensureLfEndings(substr);
|
|
92
|
+
const offsetLf = strLf.indexOf(substrLf);
|
|
93
|
+
if (offsetLf === NOT_FOUND_INDEX) {
|
|
94
|
+
return NOT_FOUND_INDEX;
|
|
95
|
+
}
|
|
96
|
+
let removedCrCount = 0;
|
|
97
|
+
let strLfIndex = 0;
|
|
98
|
+
let strIndex = 0;
|
|
99
|
+
while (strIndex < str.length && strLfIndex < offsetLf) {
|
|
100
|
+
if (str[strIndex] === CR && str[strIndex + 1] === LF) {
|
|
101
|
+
removedCrCount++;
|
|
102
|
+
strIndex += CRLF_LENGTH;
|
|
103
|
+
} else {
|
|
104
|
+
strIndex++;
|
|
105
|
+
}
|
|
106
|
+
strLfIndex++;
|
|
107
|
+
}
|
|
108
|
+
return offsetLf + removedCrCount;
|
|
109
|
+
}
|
|
80
110
|
function insertAt(str, substring, startIndex, endIndex) {
|
|
81
111
|
endIndex ??= startIndex;
|
|
82
112
|
return str.slice(0, startIndex) + substring + str.slice(endIndex);
|
|
@@ -179,10 +209,12 @@ function unindent(text, prefix, shouldThrowIfNotIndented = false) {
|
|
|
179
209
|
// Annotate the CommonJS export names for ESM import in node:
|
|
180
210
|
0 && (module.exports = {
|
|
181
211
|
ensureEndsWith,
|
|
212
|
+
ensureLfEndings,
|
|
182
213
|
ensureStartsWith,
|
|
183
214
|
escape,
|
|
184
215
|
hasSingleOccurrence,
|
|
185
216
|
indent,
|
|
217
|
+
indexOfIgnoringLineEndings,
|
|
186
218
|
insertAt,
|
|
187
219
|
makeValidVariableName,
|
|
188
220
|
normalize,
|
|
@@ -194,4 +226,4 @@ function unindent(text, prefix, shouldThrowIfNotIndented = false) {
|
|
|
194
226
|
unescape,
|
|
195
227
|
unindent
|
|
196
228
|
});
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL1JlZ0V4cC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogR3JvdXBzIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIGdyb3VwczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNlcyBvZiB0aGUgZ3JvdXBzIHRoYXQgd2VyZSBub3QgZm91bmQgaW4gdGhlIG1hdGNoLlxuICAgKi9cbiAgbWlzc2luZ0dyb3VwSW5kaWNlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEFuIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3Vic3RyaW5nIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gKCguLi5hcmdzOiBbUmVwbGFjZUNvbW1vbkFyZ3MsIC4uLlJlcGxhY2VHcm91cEFyZ3NdKSA9PiBTdHJpbmdSZXBsYWNlbWVudCkgfCBTdHJpbmdSZXBsYWNlbWVudDtcblxudHlwZSBTdHJpbmdSZXBsYWNlbWVudCA9IE1heWJlUmV0dXJuPHN0cmluZz47XG5cbi8qKlxuICogTWFwcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IEVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdcXG4nOiAnXFxcXG4nLFxuICAnXFxyJzogJ1xcXFxyJyxcbiAgJ1xcdCc6ICdcXFxcdCcsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFxmJzogJ1xcXFxmJyxcbiAgJ1xcJyc6ICdcXFxcXFwnJyxcbiAgJ1wiJzogJ1xcXFxcIicsXG4gICdcXFxcJzogJ1xcXFxcXFxcJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIGVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHVuZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IFVORVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRVNDQVBFX01BUCkpIHtcbiAgVU5FU0NBUEVfTUFQW3ZhbHVlXSA9IGtleTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBhZGRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gZW5zdXJlLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5lbmRzV2l0aChzdWZmaXgpID8gc3RyIDogc3RyICsgc3VmZml4O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RhcnRzV2l0aChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnN0YXJ0c1dpdGgocHJlZml4KSA/IHN0ciA6IHByZWZpeCArIHN0cjtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZShzdHIsIEVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBoYXMgYSBzaW5nbGUgb2NjdXJyZW5jZSBvZiBhIHNlYXJjaCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHN0cjogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5sYXN0SW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIHJldHVybiBmaXJzdEluZGV4ICE9PSAtMSAmJiBmaXJzdEluZGV4ID09PSBsYXN0SW5kZXg7XG59XG5cbi8qKlxuICogSW5kZW50cyBhIHN0cmluZyBieSBhZGRpbmcgYSBwcmVmaXggdG8gZWFjaCBsaW5lLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHN0cmluZyB0byBpbmRlbnQuXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBhZGQgdG8gZWFjaCBsaW5lLlxuICogQHJldHVybnMgVGhlIGluZGVudGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGVudCh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fSR7bGluZX1gKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgc3Vic3RyaW5nIGF0IGEgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGludG8uXG4gKiBAcGFyYW0gc3Vic3RyaW5nIC0gVGhlIHN1YnN0cmluZyB0byBpbnNlcnQuXG4gKiBAcGFyYW0gc3RhcnRJbmRleCAtIFRoZSBpbmRleCB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBhdC5cbiAqIEBwYXJhbSBlbmRJbmRleCAtIFRoZSBpbmRleCB0byBlbmQgdGhlIHN1YnN0cmluZyBhdC5cbiAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzdHJpbmcgd2l0aCB0aGUgc3Vic3RyaW5nIGluc2VydGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QXQoc3RyOiBzdHJpbmcsIHN1YnN0cmluZzogc3RyaW5nLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgZW5kSW5kZXggPz89IHN0YXJ0SW5kZXg7XG4gIHJldHVybiBzdHIuc2xpY2UoMCwgc3RhcnRJbmRleCkgKyBzdWJzdHJpbmcgKyBzdHIuc2xpY2UoZW5kSW5kZXgpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlIG5hbWUgYnkgcmVwbGFjaW5nIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWQgdmFyaWFibGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VWYWxpZFZhcmlhYmxlTmFtZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgL1teYS16QS1aMC05X10vZywgJ18nKTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgc3RyaW5nIGJ5IGNvbnZlcnRpbmcgaXQgdG8gdGhlIE5GQyBmb3JtIGFuZCByZXBsYWNpbmcgbm9uLWJyZWFraW5nIHNwYWNlcyB3aXRoIHJlZ3VsYXIgc3BhY2VzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgL1xcdTAwQTB8XFx1MjAyRi9nLCAnICcpLm5vcm1hbGl6ZSgnTkZDJyk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgb2NjdXJyZW5jZXMgb2Ygc3RyaW5ncyBpbiBhIGdpdmVuIHN0cmluZyBiYXNlZCBvbiBhIHJlcGxhY2VtZW50cyBtYXAuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gcGVyZm9ybSByZXBsYWNlbWVudHMgb24uXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzTWFwIC0gQW4gb2JqZWN0IG1hcHBpbmcgc3RyaW5ncyB0byB0aGVpciByZXBsYWNlbWVudCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlKHN0cjogc3RyaW5nLCByZXBsYWNlbWVudHNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHJlcGxhY2VtZW50c01hcCkubWFwKChzb3VyY2UpID0+IGVzY2FwZVJlZ0V4cChzb3VyY2UpKS5qb2luKCd8JyksICdnJyk7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgcmVnRXhwLCAoeyBzdWJzdHJpbmc6IHNvdXJjZSB9KSA9PiByZXBsYWNlbWVudHNNYXBbc291cmNlXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcGxhY2VtZW50IHNvdXJjZTogJHtzb3VyY2V9YCkpKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSByZXBsYWNlciBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IFJlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBjb21tb25BcmdzOiBSZXBsYWNlQ29tbW9uQXJncyA9IHtcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgY29uc3QgZ3JvdXBBcmdzID0gYXJncy5zbGljZSgwLCBzb3VyY2VJbmRleCAtIDEpLm1hcCgoYXJnLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb21tb25BcmdzLm1pc3NpbmdHcm91cEluZGljZXMucHVzaChpbmRleCk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGFyZ3VtZW50IHR5cGU6ICR7dHlwZW9mIGFyZ31gKTtcbiAgICB9KSBhcyBSZXBsYWNlR3JvdXBBcmdzO1xuXG4gICAgcmV0dXJuIChyZXBsYWNlcihjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gY29tbW9uQXJncy5zdWJzdHJpbmc7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHJlcGxhY2VzIGFsbCBvY2N1cnJlbmNlcyBvZiBhIHNlYXJjaCBzdHJpbmcgb3IgcGF0dGVybiB3aXRoIHRoZSByZXN1bHRzIG9mIGFuIGFzeW5jaHJvbm91cyByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUFsbEFzeW5jPFJlcGxhY2VHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4oXG4gIHN0cjogc3RyaW5nLFxuICBzZWFyY2hWYWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICByZXBsYWNlcjogQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzPixcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgYWJvcnRTaWduYWwgPz89IGFib3J0U2lnbmFsTmV2ZXIoKTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICBjb25zdCByZXBsYWNlbWVudEFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzZTxTdHJpbmdSZXBsYWNlbWVudD4pW10gPSBbXTtcblxuICByZXBsYWNlQWxsPFJlcGxhY2VHcm91cEFyZ3M+KHN0ciwgc2VhcmNoVmFsdWUsIChjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpID0+IHtcbiAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCBhYm9ydFNpZ25hbCwgY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSk7XG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBjb25zdCByZXBsYWNlbWVudHM6IFN0cmluZ1JlcGxhY2VtZW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFzeW5jRm4gb2YgcmVwbGFjZW1lbnRBc3luY0Zucykge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgcmVwbGFjZW1lbnRzLnB1c2goYXdhaXQgYXN5bmNGbigpKTtcbiAgfVxuXG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIChhcmdzKTogc3RyaW5nID0+IHJlcGxhY2VtZW50cy5zaGlmdCgpID8/IGFyZ3Muc3Vic3RyaW5nKTtcbn1cblxuLyoqXG4gKiBUcmltcyB0aGUgc3BlY2lmaWVkIHN1ZmZpeCBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBzaG91bGRWYWxpZGF0ZSAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGRvZXMgbm90IGVuZCB3aXRoIHRoZSBzdWZmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgdHJ1ZSBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgdHJ1ZSwgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIHRydWUgYW5kIHRoZSBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cjogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgdmFsaWRhdGU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKHN0ci5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gc3RyLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IHN0YXJ0IHdpdGggcHJlZml4ICR7cHJlZml4fWApO1xuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiBVbmVzY2FwZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGVzY2FwZSBzZXF1ZW5jZXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdW5lc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgdW5lc2NhcGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBVTkVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIFVuaW5kZW50cyBhIHN0cmluZyBieSByZW1vdmluZyBhIHByZWZpeCBmcm9tIGVhY2ggbGluZS5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBzdHJpbmcgdG8gdW5pbmRlbnQuXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byByZW1vdmUgZnJvbSBlYWNoIGxpbmUuXG4gKiBAcGFyYW0gc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgYSBsaW5lIGlzIG5vdCBpbmRlbnRlZCB3aXRoIHRoZSBwcmVmaXguXG4gKiBAcmV0dXJucyBUaGUgdW5pbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmluZGVudCh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nLCBzaG91bGRUaHJvd0lmTm90SW5kZW50ZWQgPSBmYWxzZSk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IHtcbiAgICBpZiAobGluZS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgIHJldHVybiBsaW5lLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExpbmUgXCIke2xpbmV9XCIgaXMgbm90IGluZGVudGVkIHdpdGggXCIke3ByZWZpeH1cImApO1xuICAgIH1cbiAgICByZXR1cm4gbGluZTtcbiAgfSkuam9pbignXFxuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSw2QkFBaUM7QUFDakMsbUJBQWdDO0FBQ2hDLG9CQUE2QjtBQUM3QiwyQkFBNkI7QUErQzdCLE1BQU0sYUFBcUM7QUFBQSxFQUN6QyxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1I7QUFLQSxNQUFNLGVBQXVDLENBQUM7QUFDOUMsV0FBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxVQUFVLEdBQUc7QUFDckQsZUFBYSxLQUFLLElBQUk7QUFDeEI7QUFTTyxTQUFTLGVBQWUsS0FBYSxRQUF3QjtBQUNsRSxTQUFPLElBQUksU0FBUyxNQUFNLElBQUksTUFBTSxNQUFNO0FBQzVDO0FBU08sU0FBUyxpQkFBaUIsS0FBYSxRQUF3QjtBQUNwRSxTQUFPLElBQUksV0FBVyxNQUFNLElBQUksTUFBTSxTQUFTO0FBQ2pEO0FBUU8sU0FBUyxPQUFPLEtBQXFCO0FBQzFDLFNBQU8sUUFBUSxLQUFLLFVBQVU7QUFDaEM7QUFTTyxTQUFTLG9CQUFvQixLQUFhLGFBQThCO0FBQzdFLFFBQU0sYUFBYSxJQUFJLFFBQVEsV0FBVztBQUMxQyxRQUFNLFlBQVksSUFBSSxZQUFZLFdBQVc7QUFDN0MsU0FBTyxlQUFlLE1BQU0sZUFBZTtBQUM3QztBQVNP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
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL1JlZ0V4cC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogR3JvdXBzIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIGdyb3VwczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNlcyBvZiB0aGUgZ3JvdXBzIHRoYXQgd2VyZSBub3QgZm91bmQgaW4gdGhlIG1hdGNoLlxuICAgKi9cbiAgbWlzc2luZ0dyb3VwSW5kaWNlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEFuIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3Vic3RyaW5nIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gKCguLi5hcmdzOiBbUmVwbGFjZUNvbW1vbkFyZ3MsIC4uLlJlcGxhY2VHcm91cEFyZ3NdKSA9PiBTdHJpbmdSZXBsYWNlbWVudCkgfCBTdHJpbmdSZXBsYWNlbWVudDtcblxudHlwZSBTdHJpbmdSZXBsYWNlbWVudCA9IE1heWJlUmV0dXJuPHN0cmluZz47XG5cbi8qKlxuICogTWFwcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IEVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdcXG4nOiAnXFxcXG4nLFxuICAnXFxyJzogJ1xcXFxyJyxcbiAgJ1xcdCc6ICdcXFxcdCcsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFxmJzogJ1xcXFxmJyxcbiAgJ1xcJyc6ICdcXFxcXFwnJyxcbiAgJ1wiJzogJ1xcXFxcIicsXG4gICdcXFxcJzogJ1xcXFxcXFxcJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIGVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHVuZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IFVORVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRVNDQVBFX01BUCkpIHtcbiAgVU5FU0NBUEVfTUFQW3ZhbHVlXSA9IGtleTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBhZGRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gZW5zdXJlLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5lbmRzV2l0aChzdWZmaXgpID8gc3RyIDogc3RyICsgc3VmZml4O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBoYXMgYExGYCBsaW5lIGVuZGluZ3MuXG4gKlxuICogSXQgcmVwbGFjZXMgYENSTEZgIGxpbmUgZW5kaW5ncyB3aXRoIGBMRmAuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYExGYCBsaW5lIGVuZGluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVMZkVuZGluZ3Moc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoL1xcclxcbj8vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RhcnRzV2l0aChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnN0YXJ0c1dpdGgocHJlZml4KSA/IHN0ciA6IHByZWZpeCArIHN0cjtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZShzdHIsIEVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBoYXMgYSBzaW5nbGUgb2NjdXJyZW5jZSBvZiBhIHNlYXJjaCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHN0cjogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5sYXN0SW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIHJldHVybiBmaXJzdEluZGV4ICE9PSAtMSAmJiBmaXJzdEluZGV4ID09PSBsYXN0SW5kZXg7XG59XG5cbi8qKlxuICogSW5kZW50cyBhIHN0cmluZyBieSBhZGRpbmcgYSBwcmVmaXggdG8gZWFjaCBsaW5lLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHN0cmluZyB0byBpbmRlbnQuXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBhZGQgdG8gZWFjaCBsaW5lLlxuICogQHJldHVybnMgVGhlIGluZGVudGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGVudCh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fSR7bGluZX1gKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN1YnN0cmluZyBpbiBhIHN0cmluZywgaWdub3JpbmcgbGluZSBlbmRpbmdzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBpbi5cbiAqIEBwYXJhbSBzdWJzdHIgLSBUaGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHN1YnN0cmluZywgb3IgYC0xYCBpZiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2ZJZ25vcmluZ0xpbmVFbmRpbmdzKHN0cjogc3RyaW5nLCBzdWJzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IENSID0gJ1xccic7XG4gIGNvbnN0IExGID0gJ1xcbic7XG4gIGNvbnN0IENSTEZfTEVOR1RIID0gMjtcbiAgY29uc3QgTk9UX0ZPVU5EX0lOREVYID0gLTE7XG5cbiAgY29uc3Qgc3RyTGYgPSBlbnN1cmVMZkVuZGluZ3Moc3RyKTtcbiAgY29uc3Qgc3Vic3RyTGYgPSBlbnN1cmVMZkVuZGluZ3Moc3Vic3RyKTtcblxuICBjb25zdCBvZmZzZXRMZiA9IHN0ckxmLmluZGV4T2Yoc3Vic3RyTGYpO1xuICBpZiAob2Zmc2V0TGYgPT09IE5PVF9GT1VORF9JTkRFWCkge1xuICAgIHJldHVybiBOT1RfRk9VTkRfSU5ERVg7XG4gIH1cblxuICAvLyBDb3VudCBob3cgbWFueSBgQ1JgIHdlcmUgcmVtb3ZlZCBiZWZvcmUgdGhpcyBub3JtYWxpemVkIGluZGV4XG4gIGxldCByZW1vdmVkQ3JDb3VudCA9IDA7XG4gIGxldCBzdHJMZkluZGV4ID0gMDtcblxuICBsZXQgc3RySW5kZXggPSAwO1xuICB3aGlsZSAoc3RySW5kZXggPCBzdHIubGVuZ3RoICYmIHN0ckxmSW5kZXggPCBvZmZzZXRMZikge1xuICAgIGlmIChzdHJbc3RySW5kZXhdID09PSBDUiAmJiBzdHJbc3RySW5kZXggKyAxXSA9PT0gTEYpIHtcbiAgICAgIHJlbW92ZWRDckNvdW50Kys7XG4gICAgICBzdHJJbmRleCArPSBDUkxGX0xFTkdUSDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RySW5kZXgrKztcbiAgICB9XG4gICAgc3RyTGZJbmRleCsrO1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldExmICsgcmVtb3ZlZENyQ291bnQ7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIHN1YnN0cmluZyBhdCBhIHNwZWNpZmllZCBwb3NpdGlvbiBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBpbnRvLlxuICogQHBhcmFtIHN1YnN0cmluZyAtIFRoZSBzdWJzdHJpbmcgdG8gaW5zZXJ0LlxuICogQHBhcmFtIHN0YXJ0SW5kZXggLSBUaGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcGFyYW0gZW5kSW5kZXggLSBUaGUgaW5kZXggdG8gZW5kIHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggdGhlIHN1YnN0cmluZyBpbnNlcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF0KHN0cjogc3RyaW5nLCBzdWJzdHJpbmc6IHN0cmluZywgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleD86IG51bWJlcik6IHN0cmluZyB7XG4gIGVuZEluZGV4ID8/PSBzdGFydEluZGV4O1xuICByZXR1cm4gc3RyLnNsaWNlKDAsIHN0YXJ0SW5kZXgpICsgc3Vic3RyaW5nICsgc3RyLnNsaWNlKGVuZEluZGV4KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZSBuYW1lIGJ5IHJlcGxhY2luZyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aCB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHZhbGlkIHZhcmlhYmxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsaWRWYXJpYWJsZU5hbWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHN0cmluZyBieSBjb252ZXJ0aW5nIGl0IHRvIHRoZSBORkMgZm9ybSBhbmQgcmVwbGFjaW5nIG5vbi1icmVha2luZyBzcGFjZXMgd2l0aCByZWd1bGFyIHNwYWNlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9cXHUwMEEwfFxcdTIwMkYvZywgJyAnKS5ub3JtYWxpemUoJ05GQycpO1xufVxuXG4vKipcbiAqIFJlcGxhY2VzIG9jY3VycmVuY2VzIG9mIHN0cmluZ3MgaW4gYSBnaXZlbiBzdHJpbmcgYmFzZWQgb24gYSByZXBsYWNlbWVudHMgbWFwLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzIG9uLlxuICogQHBhcmFtIHJlcGxhY2VtZW50c01hcCAtIEFuIG9iamVjdCBtYXBwaW5nIHN0cmluZ3MgdG8gdGhlaXIgcmVwbGFjZW1lbnQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBhcHBsaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShzdHI6IHN0cmluZywgcmVwbGFjZW1lbnRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhyZXBsYWNlbWVudHNNYXApLm1hcCgoc291cmNlKSA9PiBlc2NhcGVSZWdFeHAoc291cmNlKSkuam9pbignfCcpLCAnZycpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHJlZ0V4cCwgKHsgc3Vic3RyaW5nOiBzb3VyY2UgfSkgPT4gcmVwbGFjZW1lbnRzTWFwW3NvdXJjZV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcihgVW5leHBlY3RlZCByZXBsYWNlbWVudCBzb3VyY2U6ICR7c291cmNlfWApKSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzPlxuKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgaWYgKHNlYXJjaFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwICYmICFzZWFyY2hWYWx1ZS5nbG9iYWwpIHtcbiAgICBzZWFyY2hWYWx1ZSA9IG5ldyBSZWdFeHAoc2VhcmNoVmFsdWUuc291cmNlLCBgJHtzZWFyY2hWYWx1ZS5mbGFnc31nYCk7XG4gIH1cblxuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHIucmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgcmVwbGFjZXIpO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCAoc3Vic3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IFNPVVJDRV9JTkRFWF9PRkZTRVRfRk9SX0dST1VQX0FSRyA9IDI7XG4gICAgY29uc3QgaGFzR3JvdXBzQXJnID0gdHlwZW9mIGFyZ3MuYXQoLTEpID09PSAnb2JqZWN0JztcbiAgICBjb25zdCBzb3VyY2VJbmRleCA9IGhhc0dyb3Vwc0FyZyA/IGFyZ3MubGVuZ3RoIC0gU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHIDogYXJncy5sZW5ndGggLSAxO1xuXG4gICAgY29uc3QgY29tbW9uQXJnczogUmVwbGFjZUNvbW1vbkFyZ3MgPSB7XG4gICAgICBncm91cHM6IGhhc0dyb3Vwc0FyZyA/IGFyZ3MuYXQoLTEpIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gOiB1bmRlZmluZWQsXG4gICAgICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBbXSxcbiAgICAgIG9mZnNldDogYXJncy5hdChzb3VyY2VJbmRleCAtIDEpIGFzIG51bWJlcixcbiAgICAgIHNvdXJjZTogYXJncy5hdChzb3VyY2VJbmRleCkgYXMgc3RyaW5nLFxuICAgICAgc3Vic3RyaW5nXG4gICAgfTtcblxuICAgIGNvbnN0IGdyb3VwQXJncyA9IGFyZ3Muc2xpY2UoMCwgc291cmNlSW5kZXggLSAxKS5tYXAoKGFyZywgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29tbW9uQXJncy5taXNzaW5nR3JvdXBJbmRpY2VzLnB1c2goaW5kZXgpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBhcmd1bWVudCB0eXBlOiAke3R5cGVvZiBhcmd9YCk7XG4gICAgfSkgYXMgUmVwbGFjZUdyb3VwQXJncztcblxuICAgIHJldHVybiAocmVwbGFjZXIoY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IGNvbW1vbkFyZ3Muc3Vic3RyaW5nO1xuICB9KTtcbn1cblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSByZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiBhc3luY2hyb25vdXMgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcGxhY2VBbGxBc3luYzxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IEFzeW5jUmVwbGFjZXI8UmVwbGFjZUdyb3VwQXJncz4sXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGFib3J0U2lnbmFsID8/PSBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZXIpO1xuICB9XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRBc3luY0ZuczogKCgpID0+IFByb21pc2U8U3RyaW5nUmVwbGFjZW1lbnQ+KVtdID0gW107XG5cbiAgcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzPihzdHIsIHNlYXJjaFZhbHVlLCAoY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSA9PiB7XG4gICAgcmVwbGFjZW1lbnRBc3luY0Zucy5wdXNoKCgpID0+IHJlc29sdmVWYWx1ZShyZXBsYWNlciwgYWJvcnRTaWduYWwsIGNvbW1vbkFyZ3MsIC4uLmdyb3VwQXJncykpO1xuICAgIHJldHVybiAnJztcbiAgfSk7XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRzOiBTdHJpbmdSZXBsYWNlbWVudFtdID0gW107XG5cbiAgZm9yIChjb25zdCBhc3luY0ZuIG9mIHJlcGxhY2VtZW50QXN5bmNGbnMpIHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIHJlcGxhY2VtZW50cy5wdXNoKGF3YWl0IGFzeW5jRm4oKSk7XG4gIH1cblxuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHNlYXJjaFZhbHVlLCAoYXJncyk6IHN0cmluZyA9PiByZXBsYWNlbWVudHMuc2hpZnQoKSA/PyBhcmdzLnN1YnN0cmluZyk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byByZW1vdmUgZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gc2hvdWxkVmFsaWRhdGUgLSBJZiB0cnVlLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIHRydWUgYW5kIHRoZSBzdHJpbmcgZG9lcyBub3QgZW5kIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1FbmQoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nLCBzaG91bGRWYWxpZGF0ZT86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoc3RyLmVuZHNXaXRoKHN1ZmZpeCkpIHtcbiAgICByZXR1cm4gc3RyLnNsaWNlKDAsIC1zdWZmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChzaG91bGRWYWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBlbmQgd2l0aCBzdWZmaXggJHtzdWZmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgcHJlZml4IGZyb20gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byByZW1vdmUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB2YWxpZGF0ZSAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqIEByZXR1cm5zIFRoZSB0cmltbWVkIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgYHZhbGlkYXRlYCBpcyB0cnVlIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLDZCQUFpQztBQUNqQyxtQkFBZ0M7QUFDaEMsb0JBQTZCO0FBQzdCLDJCQUE2QjtBQStDN0IsTUFBTSxhQUFxQztBQUFBLEVBQ3pDLE1BQU07QUFBQSxF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
|
|
@@ -47,6 +47,15 @@ type StringReplacement = MaybeReturn<string>;
|
|
|
47
47
|
* @returns The string that ends with the suffix.
|
|
48
48
|
*/
|
|
49
49
|
export declare function ensureEndsWith(str: string, suffix: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Ensures that a string has `LF` line endings.
|
|
52
|
+
*
|
|
53
|
+
* It replaces `CRLF` line endings with `LF`.
|
|
54
|
+
*
|
|
55
|
+
* @param str - The string.
|
|
56
|
+
* @returns The string with `LF` line endings.
|
|
57
|
+
*/
|
|
58
|
+
export declare function ensureLfEndings(str: string): string;
|
|
50
59
|
/**
|
|
51
60
|
* Ensures that a string starts with the specified prefix, adding it if necessary.
|
|
52
61
|
*
|
|
@@ -78,6 +87,14 @@ export declare function hasSingleOccurrence(str: string, searchValue: string): b
|
|
|
78
87
|
* @returns The indented string.
|
|
79
88
|
*/
|
|
80
89
|
export declare function indent(text: string, prefix: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the index of the first occurrence of a substring in a string, ignoring line endings.
|
|
92
|
+
*
|
|
93
|
+
* @param str - The string to search in.
|
|
94
|
+
* @param substr - The substring to search for.
|
|
95
|
+
* @returns The index of the first occurrence of the substring, or `-1` if the substring is not found.
|
|
96
|
+
*/
|
|
97
|
+
export declare function indexOfIgnoringLineEndings(str: string, substr: string): number;
|
|
81
98
|
/**
|
|
82
99
|
* Inserts a substring at a specified position in a string.
|
|
83
100
|
*
|
|
@@ -54,10 +54,10 @@ async function getCodeBlockMarkdownInfo(options) {
|
|
|
54
54
|
lineStart: 0,
|
|
55
55
|
text: content
|
|
56
56
|
};
|
|
57
|
-
if (!(0, import_String.hasSingleOccurrence)(content, approximateSectionInfo.text)) {
|
|
57
|
+
if (!(0, import_String.hasSingleOccurrence)((0, import_String.ensureLfEndings)(content), (0, import_String.ensureLfEndings)(approximateSectionInfo.text))) {
|
|
58
58
|
return null;
|
|
59
59
|
}
|
|
60
|
-
const sectionOffset =
|
|
60
|
+
const sectionOffset = (0, import_String.indexOfIgnoringLineEndings)(content, approximateSectionInfo.text);
|
|
61
61
|
const linesBeforeSectionCount = content.slice(0, sectionOffset).split("\n").length - 1;
|
|
62
62
|
const isInCallout = !!el.parentElement?.classList.contains("callout-content");
|
|
63
63
|
const language = getLanguageFromElement(el);
|
|
@@ -240,4 +240,4 @@ function isSuitableCodeBlock(match, language, source, isInCallout) {
|
|
|
240
240
|
removeCodeBlock,
|
|
241
241
|
replaceCodeBlock
|
|
242
242
|
});
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgaGFzU2luZ2xlT2NjdXJyZW5jZSxcbiAgaW5kZW50LFxuICB1bmluZGVudFxufSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQge1xuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0fSBvYmplY3QuXG4gICAqL1xuICBjdHg6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIEhUTUxFbGVtZW50fSByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgY29udGVudCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIG5vdGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNvdXJjZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBpbnNlcnRBZnRlckNvZGVCbG9ja30gLyB7QGxpbmsgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIG51bWJlciBvZiBsaW5lcyB0byBvZmZzZXQgdGhlIGluc2VydGlvbiBieS4gRGVmYXVsdCBpcyBgMGAuXG4gICAqL1xuICBsaW5lT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0ZXh0IHRvIGluc2VydCBhZnRlciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVtb3ZlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGtlZXAgdGhlIGdhcCBhZnRlciByZW1vdmluZyB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkS2VlcEdhcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlcGxhY2VDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgbmV3IGNvZGUgYmxvY2suXG4gICAqL1xuICBjb2RlQmxvY2tQcm92aWRlcjogVmFsdWVQcm92aWRlcjxzdHJpbmcsIFtzdHJpbmddPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBrZWVwIHRoZSBnYXAgd2hlbiB0aGUgbmV3IGNvZGUgYmxvY2sgaXMgZW1wdHkuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zKTogUHJvbWlzZTxDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBlbCwgc291cmNlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgbGV0IGNvbnRlbnQ6IHN0cmluZztcbiAgaWYgKG9wdGlvbnMubm90ZUNvbnRlbnQpIHtcbiAgICBjb250ZW50ID0gb3B0aW9ucy5ub3RlQ29udGVudDtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIHNvdXJjZUZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChzb3VyY2VGaWxlKTtcbiAgfVxuXG4gIGNvbnN0IGFwcHJveGltYXRlU2VjdGlvbkluZm8gPSBjdHguZ2V0U2VjdGlvbkluZm8oZWwpID8/IHtcbiAgICBsaW5lRW5kOiBjb250ZW50LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgIGxpbmVTdGFydDogMCxcbiAgICB0ZXh0OiBjb250ZW50XG4gIH07XG5cbiAgaWYgKCFoYXNTaW5nbGVPY2N1cnJlbmNlKGNvbnRlbnQsIGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHNlY3Rpb25PZmZzZXQgPSBjb250ZW50LmluZGV4T2YoYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgY29uc3QgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQgPSBjb250ZW50LnNsaWNlKDAsIHNlY3Rpb25PZmZzZXQpLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IGlzSW5DYWxsb3V0ID0gISFlbC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ2NhbGxvdXQtY29udGVudCcpO1xuXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gIGNvbnN0IHNvdXJjZUxpbmVzID0gc291cmNlLnNwbGl0KCdcXG4nKTtcblxuICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0ZXh0TGluZU9mZnNldHMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50LCBzZWN0aW9uT2Zmc2V0KTtcblxuICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0TGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0ZXh0TGluZSA9IHRleHRMaW5lc1tpXTtcbiAgICBjb25zdCBsaW5lID0gdGV4dExpbmUgPz8gJyc7XG4gICAgY29uc3QgbGluZU9mZnNldCA9IGxhc3RUZXh0TGluZU9mZnNldCArIGxpbmUubGVuZ3RoICsgMTtcbiAgICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgaSArIDEsIGxpbmVPZmZzZXQpO1xuICAgIGxhc3RUZXh0TGluZU9mZnNldCA9IGxpbmVPZmZzZXQ7XG4gIH1cblxuICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0TGluZXMgPSB0ZXh0TGluZXMubWFwKChsaW5lLCBpbmRleCkgPT5cbiAgICBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVTdGFydCA8PSBpbmRleCAmJiBpbmRleCA8PSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVFbmQgPyBsaW5lIDogJydcbiAgKTtcbiAgY29uc3QgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcy5qb2luKCdcXG4nKTtcblxuICBjb25zdCBSRUdfRVhQID1cbiAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gIGxldCBtYXJrZG93bkluZm86IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHBvdGVudGlhbENvZGVCbG9ja1RleHQubWF0Y2hBbGwoUkVHX0VYUCkpIHtcbiAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2UsIGlzSW5DYWxsb3V0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duSW5mbykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHBvdGVudGlhbENvZGVCbG9ja1RleHQsIG1hdGNoLCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLCBzb3VyY2VMaW5lcywgdGV4dExpbmVPZmZzZXRzLCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCk7XG4gIH1cblxuICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG1hcmtkb3duSW5mbztcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYWZ0ZXIgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0QWZ0ZXJDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQubGluZSArIGxpbmVPZmZzZXQgKyAxO1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYmVmb3JlIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEJlZm9yZUNvZGVCbG9jayhvcHRpb25zOiBJbnNlcnRDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGxpbmVPZmZzZXQgPSAwLCB0ZXh0IH0gPSBvcHRpb25zO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKF9hYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duSW5mbyA9IGF3YWl0IGdldENvZGVCbG9ja01hcmtkb3duSW5mbyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbm90ZUNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNvZGUgYmxvY2suJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zZXJ0TGluZUluZGV4ID0gbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0LmxpbmUgLSBsaW5lT2Zmc2V0O1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZUNvZGVCbG9jayhvcHRpb25zOiBSZW1vdmVDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJlcGxhY2VDb2RlQmxvY2soe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29kZUJsb2NrUHJvdmlkZXI6ICcnLFxuICAgIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk6IG9wdGlvbnMuc2hvdWxkS2VlcEdhcCA/PyBmYWxzZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQ29kZUJsb2NrKG9wdGlvbnM6IFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjb2RlQmxvY2tQcm92aWRlciwgY3R4IH0gPSBvcHRpb25zO1xuICBvcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgb3B0aW9ucy5hYm9ydFNpZ25hbCk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGxldCBvbGRDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5vZmZzZXQsIG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcbiAgICBpZiAob3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG9sZENvZGVCbG9jayA9IHVuaW5kZW50KG9sZENvZGVCbG9jaywgbWFya2Rvd25JbmZvLmxpbmVQcmVmaXgpO1xuICAgIH1cblxuICAgIGxldCBuZXdDb2RlQmxvY2sgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29kZUJsb2NrUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb2RlQmxvY2spO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2goXG4gIHBvdGVudGlhbENvZGVCbG9ja1RleHQ6IHN0cmluZyxcbiAgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXksXG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uLFxuICBzb3VyY2VMaW5lczogc3RyaW5nW10sXG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPixcbiAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQ6IG51bWJlclxuKTogQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzLmxlbmd0aCArIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBhcmdzOiBjb2RlQmxvY2tBcmdzU3RyLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pLFxuICAgIGVuZERlbGltaXRlcjogY29kZUJsb2NrRW5kRGVsaW1pdGVyLFxuICAgIGxhbmd1YWdlLFxuICAgIGxpbmVQcmVmaXgsXG4gICAgcG9zaXRpb25Jbk5vdGU6IHtcbiAgICAgIGVuZDoge1xuICAgICAgICBjb2w6ICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUgKyAxKSA/PyAwKSAtICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUpID8/IDApIC0gMSxcbiAgICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgICAgb2Zmc2V0OiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAxXG4gICAgICB9LFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICAgIG9mZnNldDogdGV4dExpbmVPZmZzZXRzLmdldChzdGFydExpbmUpID8/IDBcbiAgICAgIH1cbiAgICB9LFxuICAgIHJhd0FyZ3NTdHI6IGNvZGVCbG9ja0FyZ3NTdHIsXG4gICAgc2VjdGlvbkluZm86IHtcbiAgICAgIGxpbmVFbmQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQgKyBzb3VyY2VMaW5lcy5sZW5ndGggKyAxLFxuICAgICAgbGluZVN0YXJ0OiBwcmV2aW91c1RleHRMaW5lc0NvdW50LFxuICAgICAgdGV4dDogYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0XG4gICAgfSxcbiAgICBzdGFydERlbGltaXRlcjogY29kZUJsb2NrU3RhcnREZWxpbWl0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBCTE9DS19MQU5HVUFHRV9QUkVGSVggPSAnYmxvY2stbGFuZ3VhZ2UtJztcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwuY2xhc3NMaXN0KS5maW5kKChjbHMpID0+IGNscy5zdGFydHNXaXRoKEJMT0NLX0xBTkdVQUdFX1BSRUZJWCkpPy5zbGljZShCTE9DS19MQU5HVUFHRV9QUkVGSVgubGVuZ3RoKSA/PyAnJztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0VGV4dChjb250ZW50OiBzdHJpbmcsIGluc2VydExpbmVJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IGxpbmVzLnNsaWNlKCk7XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPCAwKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gMDtcbiAgfVxuICBpZiAoaW5zZXJ0TGluZUluZGV4ID4gbGluZXMubGVuZ3RoKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gbGluZXMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3QgUFJFRklYX0xJTkVfUkVHX0VYUCA9IC9eIHswLDN9KD86PiB7MSwzfSkqL2c7XG4gIGNvbnN0IG1hdGNoID0gKGxpbmVzW2luc2VydExpbmVJbmRleF0gPz8gJycpLm1hdGNoKFBSRUZJWF9MSU5FX1JFR19FWFApO1xuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2g/LlswXSA/PyAnJztcbiAgbmV3TGluZXMuc3BsaWNlKGluc2VydExpbmVJbmRleCwgMCwgLi4uKHNob3VsZFByZXNlcnZlTGluZVByZWZpeCA/IHRleHRMaW5lcy5tYXAoKGxpbmUpID0+IGluZGVudChsaW5lLCBsaW5lUHJlZml4KSkgOiB0ZXh0TGluZXMpKTtcbiAgcmV0dXJuIG5ld0xpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc1N1aXRhYmxlQ29kZUJsb2NrKFxuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgc291cmNlOiBzdHJpbmcsXG4gIGlzSW5DYWxsb3V0OiBib29sZWFuXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29kZUJsb2NrTGFuZ3VhZ2UgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrTGFuZ3VhZ2UnXSA/PyAnJztcbiAgaWYgKGNvZGVCbG9ja0xhbmd1YWdlICE9PSBsYW5ndWFnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuXG4gIGlmIChpc0luQ2FsbG91dCAmJiAhbGluZVByZWZpeC5pbmNsdWRlcygnPiAnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvZGVCbG9ja0NvbnRlbnQgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQ29udGVudCddID8/ICcnO1xuICBjb25zdCBjbGVhbkNvZGVCbG9ja0NvbnRlbnQgPSBjb2RlQmxvY2tDb250ZW50LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobGluZVByZWZpeC5sZW5ndGgpKS5qb2luKCdcXG4nKTtcblxuICByZXR1cm4gY2xlYW5Db2RlQmxvY2tDb250ZW50ID09PSBz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
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgZW5zdXJlTGZFbmRpbmdzLFxuICBoYXNTaW5nbGVPY2N1cnJlbmNlLFxuICBpbmRlbnQsXG4gIGluZGV4T2ZJZ25vcmluZ0xpbmVFbmRpbmdzLFxuICB1bmluZGVudFxufSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQge1xuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0fSBvYmplY3QuXG4gICAqL1xuICBjdHg6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIEhUTUxFbGVtZW50fSByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgY29udGVudCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIG5vdGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNvdXJjZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBpbnNlcnRBZnRlckNvZGVCbG9ja30gLyB7QGxpbmsgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIG51bWJlciBvZiBsaW5lcyB0byBvZmZzZXQgdGhlIGluc2VydGlvbiBieS4gRGVmYXVsdCBpcyBgMGAuXG4gICAqL1xuICBsaW5lT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0ZXh0IHRvIGluc2VydCBhZnRlciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVtb3ZlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGtlZXAgdGhlIGdhcCBhZnRlciByZW1vdmluZyB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkS2VlcEdhcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlcGxhY2VDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgbmV3IGNvZGUgYmxvY2suXG4gICAqL1xuICBjb2RlQmxvY2tQcm92aWRlcjogVmFsdWVQcm92aWRlcjxzdHJpbmcsIFtzdHJpbmddPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBrZWVwIHRoZSBnYXAgd2hlbiB0aGUgbmV3IGNvZGUgYmxvY2sgaXMgZW1wdHkuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zKTogUHJvbWlzZTxDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBlbCwgc291cmNlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgbGV0IGNvbnRlbnQ6IHN0cmluZztcbiAgaWYgKG9wdGlvbnMubm90ZUNvbnRlbnQpIHtcbiAgICBjb250ZW50ID0gb3B0aW9ucy5ub3RlQ29udGVudDtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIHNvdXJjZUZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChzb3VyY2VGaWxlKTtcbiAgfVxuXG4gIGNvbnN0IGFwcHJveGltYXRlU2VjdGlvbkluZm8gPSBjdHguZ2V0U2VjdGlvbkluZm8oZWwpID8/IHtcbiAgICBsaW5lRW5kOiBjb250ZW50LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgIGxpbmVTdGFydDogMCxcbiAgICB0ZXh0OiBjb250ZW50XG4gIH07XG5cbiAgaWYgKCFoYXNTaW5nbGVPY2N1cnJlbmNlKGVuc3VyZUxmRW5kaW5ncyhjb250ZW50KSwgZW5zdXJlTGZFbmRpbmdzKGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCkpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWN0aW9uT2Zmc2V0ID0gaW5kZXhPZklnbm9yaW5nTGluZUVuZGluZ3MoY29udGVudCwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgY29uc3QgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQgPSBjb250ZW50LnNsaWNlKDAsIHNlY3Rpb25PZmZzZXQpLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IGlzSW5DYWxsb3V0ID0gISFlbC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ2NhbGxvdXQtY29udGVudCcpO1xuXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gIGNvbnN0IHNvdXJjZUxpbmVzID0gc291cmNlLnNwbGl0KCdcXG4nKTtcblxuICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0ZXh0TGluZU9mZnNldHMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50LCBzZWN0aW9uT2Zmc2V0KTtcblxuICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0TGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0ZXh0TGluZSA9IHRleHRMaW5lc1tpXTtcbiAgICBjb25zdCBsaW5lID0gdGV4dExpbmUgPz8gJyc7XG4gICAgY29uc3QgbGluZU9mZnNldCA9IGxhc3RUZXh0TGluZU9mZnNldCArIGxpbmUubGVuZ3RoICsgMTtcbiAgICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgaSArIDEsIGxpbmVPZmZzZXQpO1xuICAgIGxhc3RUZXh0TGluZU9mZnNldCA9IGxpbmVPZmZzZXQ7XG4gIH1cblxuICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0TGluZXMgPSB0ZXh0TGluZXMubWFwKChsaW5lLCBpbmRleCkgPT5cbiAgICBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVTdGFydCA8PSBpbmRleCAmJiBpbmRleCA8PSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVFbmQgPyBsaW5lIDogJydcbiAgKTtcbiAgY29uc3QgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcy5qb2luKCdcXG4nKTtcblxuICBjb25zdCBSRUdfRVhQID1cbiAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gIGxldCBtYXJrZG93bkluZm86IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHBvdGVudGlhbENvZGVCbG9ja1RleHQubWF0Y2hBbGwoUkVHX0VYUCkpIHtcbiAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2UsIGlzSW5DYWxsb3V0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duSW5mbykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHBvdGVudGlhbENvZGVCbG9ja1RleHQsIG1hdGNoLCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLCBzb3VyY2VMaW5lcywgdGV4dExpbmVPZmZzZXRzLCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCk7XG4gIH1cblxuICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG1hcmtkb3duSW5mbztcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYWZ0ZXIgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0QWZ0ZXJDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQubGluZSArIGxpbmVPZmZzZXQgKyAxO1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYmVmb3JlIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEJlZm9yZUNvZGVCbG9jayhvcHRpb25zOiBJbnNlcnRDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGxpbmVPZmZzZXQgPSAwLCB0ZXh0IH0gPSBvcHRpb25zO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKF9hYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duSW5mbyA9IGF3YWl0IGdldENvZGVCbG9ja01hcmtkb3duSW5mbyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbm90ZUNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNvZGUgYmxvY2suJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zZXJ0TGluZUluZGV4ID0gbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0LmxpbmUgLSBsaW5lT2Zmc2V0O1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZUNvZGVCbG9jayhvcHRpb25zOiBSZW1vdmVDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJlcGxhY2VDb2RlQmxvY2soe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29kZUJsb2NrUHJvdmlkZXI6ICcnLFxuICAgIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk6IG9wdGlvbnMuc2hvdWxkS2VlcEdhcCA/PyBmYWxzZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQ29kZUJsb2NrKG9wdGlvbnM6IFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjb2RlQmxvY2tQcm92aWRlciwgY3R4IH0gPSBvcHRpb25zO1xuICBvcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgb3B0aW9ucy5hYm9ydFNpZ25hbCk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGxldCBvbGRDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5vZmZzZXQsIG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcbiAgICBpZiAob3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG9sZENvZGVCbG9jayA9IHVuaW5kZW50KG9sZENvZGVCbG9jaywgbWFya2Rvd25JbmZvLmxpbmVQcmVmaXgpO1xuICAgIH1cblxuICAgIGxldCBuZXdDb2RlQmxvY2sgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29kZUJsb2NrUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb2RlQmxvY2spO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2goXG4gIHBvdGVudGlhbENvZGVCbG9ja1RleHQ6IHN0cmluZyxcbiAgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXksXG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uLFxuICBzb3VyY2VMaW5lczogc3RyaW5nW10sXG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPixcbiAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQ6IG51bWJlclxuKTogQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzLmxlbmd0aCArIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBhcmdzOiBjb2RlQmxvY2tBcmdzU3RyLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pLFxuICAgIGVuZERlbGltaXRlcjogY29kZUJsb2NrRW5kRGVsaW1pdGVyLFxuICAgIGxhbmd1YWdlLFxuICAgIGxpbmVQcmVmaXgsXG4gICAgcG9zaXRpb25Jbk5vdGU6IHtcbiAgICAgIGVuZDoge1xuICAgICAgICBjb2w6ICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUgKyAxKSA/PyAwKSAtICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUpID8/IDApIC0gMSxcbiAgICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgICAgb2Zmc2V0OiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAxXG4gICAgICB9LFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICAgIG9mZnNldDogdGV4dExpbmVPZmZzZXRzLmdldChzdGFydExpbmUpID8/IDBcbiAgICAgIH1cbiAgICB9LFxuICAgIHJhd0FyZ3NTdHI6IGNvZGVCbG9ja0FyZ3NTdHIsXG4gICAgc2VjdGlvbkluZm86IHtcbiAgICAgIGxpbmVFbmQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQgKyBzb3VyY2VMaW5lcy5sZW5ndGggKyAxLFxuICAgICAgbGluZVN0YXJ0OiBwcmV2aW91c1RleHRMaW5lc0NvdW50LFxuICAgICAgdGV4dDogYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0XG4gICAgfSxcbiAgICBzdGFydERlbGltaXRlcjogY29kZUJsb2NrU3RhcnREZWxpbWl0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBCTE9DS19MQU5HVUFHRV9QUkVGSVggPSAnYmxvY2stbGFuZ3VhZ2UtJztcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwuY2xhc3NMaXN0KS5maW5kKChjbHMpID0+IGNscy5zdGFydHNXaXRoKEJMT0NLX0xBTkdVQUdFX1BSRUZJWCkpPy5zbGljZShCTE9DS19MQU5HVUFHRV9QUkVGSVgubGVuZ3RoKSA/PyAnJztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0VGV4dChjb250ZW50OiBzdHJpbmcsIGluc2VydExpbmVJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IGxpbmVzLnNsaWNlKCk7XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPCAwKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gMDtcbiAgfVxuICBpZiAoaW5zZXJ0TGluZUluZGV4ID4gbGluZXMubGVuZ3RoKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gbGluZXMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3QgUFJFRklYX0xJTkVfUkVHX0VYUCA9IC9eIHswLDN9KD86PiB7MSwzfSkqL2c7XG4gIGNvbnN0IG1hdGNoID0gKGxpbmVzW2luc2VydExpbmVJbmRleF0gPz8gJycpLm1hdGNoKFBSRUZJWF9MSU5FX1JFR19FWFApO1xuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2g/LlswXSA/PyAnJztcbiAgbmV3TGluZXMuc3BsaWNlKGluc2VydExpbmVJbmRleCwgMCwgLi4uKHNob3VsZFByZXNlcnZlTGluZVByZWZpeCA/IHRleHRMaW5lcy5tYXAoKGxpbmUpID0+IGluZGVudChsaW5lLCBsaW5lUHJlZml4KSkgOiB0ZXh0TGluZXMpKTtcbiAgcmV0dXJuIG5ld0xpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc1N1aXRhYmxlQ29kZUJsb2NrKFxuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgc291cmNlOiBzdHJpbmcsXG4gIGlzSW5DYWxsb3V0OiBib29sZWFuXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29kZUJsb2NrTGFuZ3VhZ2UgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrTGFuZ3VhZ2UnXSA/PyAnJztcbiAgaWYgKGNvZGVCbG9ja0xhbmd1YWdlICE9PSBsYW5ndWFnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuXG4gIGlmIChpc0luQ2FsbG91dCAmJiAhbGluZVByZWZpeC5pbmNsdWRlcygnPiAnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvZGVCbG9ja0NvbnRlbnQgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQ29udGVudCddID8/ICcnO1xuICBjb25zdCBjbGVhbkNvZGVCbG9ja0NvbnRlbnQgPSBjb2RlQmxvY2tDb250ZW50LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobGluZVByZWZpeC5sZW5ndGgpKS5qb2luKCdcXG4nKTtcblxuICByZXR1cm4gY2xlYW5Db2RlQmxvY2tDb250ZW50ID09PSBzb3VyY2U7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsNkJBQStCO0FBQy9CLG9CQU1PO0FBQ1AsMkJBQTZCO0FBQzdCLG1CQUdPO0FBNkZQLGVBQXNCLHlCQUF5QixTQUF3RjtBQUNySSxRQUFNLEVBQUUsS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJO0FBRWpDLFFBQU0sYUFBYSxJQUFJLE1BQU0sY0FBYyxJQUFJLFVBQVU7QUFDekQsTUFBSSxDQUFDLFlBQVk7QUFDZixVQUFNLElBQUksTUFBTSxlQUFlLElBQUksVUFBVSxhQUFhO0FBQUEsRUFDNUQ7QUFFQSxNQUFJO0FBQ0osTUFBSSxRQUFRLGFBQWE7QUFDdkIsY0FBVSxRQUFRO0FBQUEsRUFDcEIsT0FBTztBQUNMLGNBQU0sdUJBQVMsS0FBSyxVQUFVO0FBQzlCLGNBQVUsTUFBTSxJQUFJLE1BQU0sS0FBSyxVQUFVO0FBQUEsRUFDM0M7QUFFQSxRQUFNLHlCQUF5QixJQUFJLGVBQWUsRUFBRSxLQUFLO0FBQUEsSUFDdkQsU0FBUyxRQUFRLE1BQU0sSUFBSSxFQUFFLFNBQVM7QUFBQSxJQUN0QyxXQUFXO0FBQUEsSUFDWCxNQUFNO0FBQUEsRUFDUjtBQUVBLE1BQUksS0FBQyx1Q0FBb0IsK0JBQWdCLE9BQU8sT0FBRywrQkFBZ0IsdUJBQXVCLElBQUksQ0FBQyxHQUFHO0FBQ2hHLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxvQkFBZ0IsMENBQTJCLFNBQVMsdUJBQXVCLElBQUk7QUFDckYsUUFBTSwwQkFBMEIsUUFBUSxNQUFNLEdBQUcsYUFBYSxFQUFFLE1BQU0sSUFBSSxFQUFFLFNBQVM7QUFFckYsUUFBTSxjQUFjLENBQUMsQ0FBQyxHQUFHLGVBQWUsVUFBVSxTQUFTLGlCQUFpQjtBQUU1RSxRQUFNLFdBQVcsdUJBQXVCLEVBQUU7QUFDMUMsUUFBTSxjQUFjLE9BQU8sTUFBTSxJQUFJO0FBRXJDLFFBQU0sWUFBWSx1QkFBdUIsS0FBSyxNQUFNLElBQUk7QUFDeEQsUUFBTSxrQkFBa0Isb0JBQUksSUFBb0I7QUFDaEQsa0JBQWdCLElBQUkseUJBQXlCLGFBQWE7QUFFMUQsTUFBSSxxQkFBcUI7QUFDekIsV0FBUyxJQUFJLEdBQUcsSUFBSSxVQUFVLFFBQVEsS0FBSztBQUN6QyxVQUFNLFdBQVcsVUFBVSxDQUFDO0FBQzVCLFVBQU0sT0FBTyxZQUFZO0FBQ3pCLFVBQU0sYUFBYSxxQkFBcUIsS0FBSyxTQUFTO0FBQ3RELG9CQUFnQixJQUFJLDBCQUEwQixJQUFJLEdBQUcsVUFBVTtBQUMvRCx5QkFBcUI7QUFBQSxFQUN2QjtBQUVBLFFBQU0sOEJBQThCLFVBQVU7QUFBQSxJQUFJLENBQUMsTUFBTSxVQUN2RCx1QkFBdUIsYUFBYSxTQUFTLFNBQVMsdUJBQXVCLFVBQVUsT0FBTztBQUFBLEVBQ2hHO0FBQ0EsUUFBTSx5QkFBeUIsNEJBQTRCLEtBQUssSUFBSTtBQUVwRSxRQUFNLFVBQ0o7QUFFRixNQUFJLGVBQW9EO0FBRXhELGFBQVcsU0FBUyx1QkFBdUIsU0FBUyxPQUFPLEdBQUc7QUFDNUQsUUFBSSxDQUFDLG9CQUFvQixPQUFPLFVBQVUsUUFBUSxXQUFXLEdBQUc7QUFDOUQ7QUFBQSxJQUNGO0FBRUEsUUFBSSxjQUFjO0FBQ2hCLGFBQU87QUFBQSxJQUNUO0FBRUEsbUJBQWUsNEJBQTRCLHdCQUF3QixPQUFPLHdCQUF3QixhQUFhLGlCQUFpQix1QkFBdUI7QUFBQSxFQUN6SjtBQUVBLE1BQUksQ0FBQyxjQUFjO0FBQ2pCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUO0FBT0EsZUFBc0IscUJBQXFCLFNBQWdEO0FBQ3pGLFFBQU0sRUFBRSxLQUFLLEtBQUssYUFBYSxHQUFHLEtBQUssSUFBSTtBQUUzQyxZQUFNLHNCQUFRLEtBQUssSUFBSSxZQUFZLE9BQU8sY0FBYyxZQUFZO0FBQ2xFLFVBQU0sZUFBZSxNQUFNLHlCQUF5QjtBQUFBLE1BQ2xELEdBQUc7QUFBQSxNQUNILGFBQWE7QUFBQSxJQUNmLENBQUM7QUFDRCxRQUFJLENBQUMsY0FBYztBQUNqQixZQUFNLElBQUksTUFBTSw2Q0FBNkM7QUFBQSxJQUMvRDtBQUVBLFVBQU0sa0JBQWtCLGFBQWEsZUFBZSxJQUFJLE9BQU8sYUFBYTtBQUM1RSxXQUFPLFdBQVcsU0FBUyxpQkFBaUIsTUFBTSxRQUFRLHdCQUF3QjtBQUFBLEVBQ3BGLENBQUM7QUFDSDtBQU9BLGVBQXNCLHNCQUFzQixTQUFnRDtBQUMxRixRQUFNLEVBQUUsS0FBSyxLQUFLLGFBQWEsR0FBRyxLQUFLLElBQUk7QUFFM0MsWUFBTSxzQkFBUSxLQUFLLElBQUksWUFBWSxPQUFPLGNBQWMsWUFBWTtBQUNsRSxVQUFNLGVBQWUsTUFBTSx5QkFBeUI7QUFBQSxNQUNsRCxHQUFHO0FBQUEsTUFDSCxhQUFhO0FBQUEsSUFDZixDQUFDO0FBQ0QsUUFBSSxDQUFDLGNBQWM7QUFDakIsWUFBTSxJQUFJLE1BQU0sNkNBQTZDO0FBQUEsSUFDL0Q7QUFFQSxVQUFNLGtCQUFrQixhQUFhLGVBQWUsTUFBTSxPQUFPO0FBQ2pFLFdBQU8sV0FBVyxTQUFTLGlCQUFpQixNQUFNLFFBQVEsd0JBQXdCO0FBQUEsRUFDcEYsQ0FBQztBQUNIO0FBT0EsZUFBc0IsZ0JBQWdCLFNBQWdEO0FBQ3BGLFFBQU0saUJBQWlCO0FBQUEsSUFDckIsR0FBRztBQUFBLElBQ0gsbUJBQW1CO0FBQUEsSUFDbkIsd0JBQXdCLFFBQVEsaUJBQWlCO0FBQUEsRUFDbkQsQ0FBQztBQUNIO0FBT0EsZUFBc0IsaUJBQWlCLFNBQWlEO0FBQ3RGLFFBQU0sRUFBRSxLQUFLLG1CQUFtQixJQUFJLElBQUk7QUFDeEMsVUFBUSxhQUFhLGVBQWU7QUFFcEMsWUFBTSxzQkFBUSxLQUFLLElBQUksWUFBWSxPQUFPLGFBQWEsWUFBWTtBQUNqRSxzQkFBYyx1Q0FBZSxhQUFhLFFBQVEsV0FBVztBQUM3RCxnQkFBWSxlQUFlO0FBQzNCLFVBQU0sZUFBZSxNQUFNLHlCQUF5QjtBQUFBLE1BQ2xELEdBQUc7QUFBQSxNQUNILGFBQWE7QUFBQSxJQUNmLENBQUM7QUFDRCxRQUFJLENBQUMsY0FBYztBQUNqQixZQUFNLElBQUksTUFBTSw2Q0FBNkM7QUFBQSxJQUMvRDtBQUVBLFFBQUksZUFBZSxRQUFRLE1BQU0sYUFBYSxlQUFlLE1BQU0sUUFBUSxhQUFhLGVBQWUsSUFBSSxNQUFNO0FBQ2pILFFBQUksUUFBUSwwQkFBMEI7QUFDcEMseUJBQWUsd0JBQVMsY0FBYyxhQUFhLFVBQVU7QUFBQSxJQUMvRDtBQUVBLFFBQUksZUFBZSxVQUFNLG1DQUFhLG1CQUFtQixhQUFhLFlBQVk7QUFDbEYsU0FBSyxnQkFBZ0IsUUFBUSwyQkFBMkIsUUFBUSwwQkFBMEI7QUFDeEYseUJBQWUsc0JBQU8sY0FBYyxhQUFhLFVBQVU7QUFBQSxJQUM3RDtBQUVBLFVBQU0sc0JBQXNCLFFBQVEsTUFBTSxHQUFHLGFBQWEsZUFBZSxNQUFNLE1BQU07QUFDckYsVUFBTSxxQkFBcUIsUUFBUSxNQUFNLGFBQWEsZUFBZSxJQUFJLE1BQU07QUFFL0UsUUFBSSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFDbEQsYUFBTyxHQUFHLG1CQUFtQixHQUFHLFlBQVksR0FBRyxrQkFBa0I7QUFBQSxJQUNuRTtBQUVBLFFBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0I7QUFDL0MsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLHFCQUFxQjtBQUN2QixhQUFPLEdBQUcsb0JBQW9CLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxrQkFBa0I7QUFBQSxJQUNqRTtBQUVBLFdBQU8sR0FBRyxtQkFBbUIsR0FBRyxtQkFBbUIsTUFBTSxDQUFDLENBQUM7QUFBQSxFQUM3RCxDQUFDO0FBQ0g7QUFFQSxTQUFTLDRCQUNQLHdCQUNBLE9BQ0Esd0JBQ0EsYUFDQSxpQkFDQSx5QkFDOEI7QUFDOUIsUUFBTSxhQUFhLE1BQU0sU0FBUyxZQUFZLEtBQUs7QUFDbkQsUUFBTSwwQkFBMEIsTUFBTSxTQUFTLHlCQUF5QixLQUFLO0FBQzdFLFFBQU0sd0JBQXdCLE1BQU0sU0FBUyx1QkFBdUIsS0FBSztBQUN6RSxRQUFNLG1CQUFtQixNQUFNLFNBQVMsZUFBZSxLQUFLO0FBQzVELFFBQU0sV0FBVyxNQUFNLFNBQVMsbUJBQW1CLEtBQUs7QUFFeEQsUUFBTSxlQUFlLHVCQUF1QixNQUFNLEdBQUcsTUFBTSxLQUFLO0FBQ2hFLFFBQU0seUJBQXlCLGFBQWEsTUFBTSxJQUFJLEVBQUUsU0FBUztBQUVqRSxRQUFNLFlBQVksMEJBQTBCO0FBQzVDLFFBQU0sVUFBVSxZQUFZLFlBQVksU0FBUztBQUVqRCxTQUFPO0FBQUEsSUFDTCxNQUFNLGlCQUFpQixNQUFNLEtBQUssRUFBRSxPQUFPLE9BQU87QUFBQSxJQUNsRCxjQUFjO0FBQUEsSUFDZDtBQUFBLElBQ0E7QUFBQSxJQUNBLGdCQUFnQjtBQUFBLE1BQ2QsS0FBSztBQUFBLFFBQ0gsTUFBTSxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsS0FBSyxNQUFNLGdCQUFnQixJQUFJLE9BQU8sS0FBSyxLQUFLO0FBQUEsUUFDckYsTUFBTTtBQUFBLFFBQ04sU0FBUyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLO0FBQUEsTUFDcEQ7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLE1BQU07QUFBQSxRQUNOLFFBQVEsZ0JBQWdCLElBQUksU0FBUyxLQUFLO0FBQUEsTUFDNUM7QUFBQSxJQUNGO0FBQUEsSUFDQSxZQUFZO0FBQUEsSUFDWixhQUFhO0FBQUEsTUFDWCxTQUFTLHlCQUF5QixZQUFZLFNBQVM7QUFBQSxNQUN2RCxXQUFXO0FBQUEsTUFDWCxNQUFNLHVCQUF1QjtBQUFBLElBQy9CO0FBQUEsSUFDQSxnQkFBZ0I7QUFBQSxFQUNsQjtBQUNGO0FBRUEsU0FBUyx1QkFBdUIsSUFBeUI7QUFDdkQsUUFBTSx3QkFBd0I7QUFDOUIsU0FBTyxNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxXQUFXLHFCQUFxQixDQUFDLEdBQUcsTUFBTSxzQkFBc0IsTUFBTSxLQUFLO0FBQy9IO0FBRUEsU0FBUyxXQUFXLFNBQWlCLGlCQUF5QixNQUFjLDBCQUE0QztBQUN0SCxRQUFNLFFBQVEsUUFBUSxNQUFNLElBQUk7QUFDaEMsUUFBTSxXQUFXLE1BQU0sTUFBTTtBQUM3QixRQUFNLFlBQVksS0FBSyxNQUFNLElBQUk7QUFFakMsTUFBSSxrQkFBa0IsR0FBRztBQUN2QixzQkFBa0I7QUFBQSxFQUNwQjtBQUNBLE1BQUksa0JBQWtCLE1BQU0sUUFBUTtBQUNsQyxzQkFBa0IsTUFBTTtBQUFBLEVBQzFCO0FBRUEsUUFBTSxzQkFBc0I7QUFDNUIsUUFBTSxTQUFTLE1BQU0sZUFBZSxLQUFLLElBQUksTUFBTSxtQkFBbUI7QUFDdEUsUUFBTSxhQUFhLFFBQVEsQ0FBQyxLQUFLO0FBQ2pDLFdBQVMsT0FBTyxpQkFBaUIsR0FBRyxHQUFJLDJCQUEyQixVQUFVLElBQUksQ0FBQyxhQUFTLHNCQUFPLE1BQU0sVUFBVSxDQUFDLElBQUksU0FBVTtBQUNqSSxTQUFPLFNBQVMsS0FBSyxJQUFJO0FBQzNCO0FBRUEsU0FBUyxvQkFDUCxPQUNBLFVBQ0EsUUFDQSxhQUNTO0FBQ1QsUUFBTSxvQkFBb0IsTUFBTSxTQUFTLG1CQUFtQixLQUFLO0FBQ2pFLE1BQUksc0JBQXNCLFVBQVU7QUFDbEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGFBQWEsTUFBTSxTQUFTLFlBQVksS0FBSztBQUVuRCxNQUFJLGVBQWUsQ0FBQyxXQUFXLFNBQVMsSUFBSSxHQUFHO0FBQzdDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxtQkFBbUIsTUFBTSxTQUFTLGtCQUFrQixLQUFLO0FBQy9ELFFBQU0sd0JBQXdCLGlCQUFpQixNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sV0FBVyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUk7QUFFakgsU0FBTywwQkFBMEI7QUFDbkM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -243,6 +243,7 @@ async function saveNote(app, pathOrFile) {
|
|
|
243
243
|
if (!(0, import_FileSystem.isMarkdownFile)(app, pathOrFile)) {
|
|
244
244
|
return;
|
|
245
245
|
}
|
|
246
|
+
await (0, import_Async.requestAnimationFrameAsync)();
|
|
246
247
|
const path = (0, import_FileSystem.getPath)(app, pathOrFile);
|
|
247
248
|
for (const leaf of app.workspace.getLeavesOfType(import_implementations.ViewType.Markdown)) {
|
|
248
249
|
if (leaf.view instanceof import_obsidian.MarkdownView && leaf.view.file?.path === path && leaf.view.dirty) {
|
|
@@ -284,4 +285,4 @@ async function invokeFileActionSafe(app, pathOrFile, fileAction) {
|
|
|
284
285
|
renameSafe,
|
|
285
286
|
saveNote
|
|
286
287
|
});
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBMaXN0ZWRGaWxlcyxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBNYXJrZG93blZpZXcgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBwYXJlbnRGb2xkZXJQYXRoLFxuICBWaWV3VHlwZVxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBpc0ZpbGUsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gICAqL1xuICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGNvcGllZCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3UGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNvcHkoZmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoKTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUoZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2FmZSByZW5hbWUgcGF0aCBmb3IgYSBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIHJlbmFtZS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIHJlbmFtZSB0aGUgZmlsZSB0by5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHJlbmFtZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNhZmVSZW5hbWVQYXRoKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBvbGRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZFBhdGhPckZpbGUpO1xuXG4gIGlmIChhcHAudmF1bHQuYWRhcHRlci5pbnNlbnNpdGl2ZSkge1xuICAgIGxldCBmb2xkZXJQYXRoID0gZGlybmFtZShuZXdQYXRoKTtcbiAgICBsZXQgbm9uRXhpc3RpbmdQYXRoID0gYmFzZW5hbWUobmV3UGF0aCk7XG4gICAgbGV0IGZvbGRlcjogbnVsbCB8IFRGb2xkZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgZm9sZGVyUGF0aCwgdHJ1ZSk7XG4gICAgICBpZiAoZm9sZGVyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbm9uRXhpc3RpbmdQYXRoID0gam9pbihiYXNlbmFtZShmb2xkZXJQYXRoKSwgbm9uRXhpc3RpbmdQYXRoKTtcbiAgICAgIGZvbGRlclBhdGggPSBkaXJuYW1lKGZvbGRlclBhdGgpO1xuICAgIH1cbiAgICBuZXdQYXRoID0gam9pbihmb2xkZXIuZ2V0UGFyZW50UHJlZml4KCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gIH1cblxuICBpZiAob2xkUGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gbmV3UGF0aDtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoKGFwcCwgbmV3UGF0aCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZm9sZGVyIGlzIGVtcHR5LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0VtcHR5Rm9sZGVyKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBsaXN0ZWRGaWxlcyA9IGF3YWl0IGxpc3RTYWZlKGFwcCwgZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcikpO1xuICByZXR1cm4gbGlzdGVkRmlsZXMuZmlsZXMubGVuZ3RoID09PSAwICYmIGxpc3RlZEZpbGVzLmZvbGRlcnMubGVuZ3RoID09PSAwO1xufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBsaXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIHtAbGluayBMaXN0ZWRGaWxlc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTYWZlKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8TGlzdGVkRmlsZXM+IHtcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpO1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuXG4gIGlmICgoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuc3RhdChwYXRoKSk/LnR5cGUgIT09ICdmb2xkZXInKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYSBmaWxlIHdpdGggcmV0cnkgbG9naWMsIHVwZGF0aW5nIGl0cyBjb250ZW50IGJhc2VkIG9uIGEgcHJvdmlkZWQgdmFsdWUgb3IgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSwgdHlwaWNhbGx5IHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgdmF1bHQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gYmUgcHJvY2Vzc2VkLiBJdCBjYW4gYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIG9yIGEgZmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gbmV3Q29udGVudFByb3ZpZGVyIC0gQSB2YWx1ZSBwcm92aWRlciB0aGF0IHJldHVybnMgdGhlIG5ldyBjb250ZW50IGJhc2VkIG9uIHRoZSBvbGQgY29udGVudCBvZiB0aGUgZmlsZS5cbiAqIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIG9sZCBjb250ZW50IGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSBuZXcgY29udGVudC5cbiAqIElmIGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBpdCBzaG91bGQgcmV0dXJuIGBudWxsYCBpZiB0aGUgcHJvY2VzcyBzaG91bGQgYmUgcmV0cmllZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2VzcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBbc3RyaW5nXT4sXG4gIG9wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge31cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlMgPSB7XG4gICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IHRydWVcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKGFib3J0U2lnbmFsKSA9PiB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBpZiAob2xkQ29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb250ZW50KTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgaWYgKG5ld0NvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgaXNTdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBkb2VzRmlsZUV4aXN0ID0gYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoZmlsZSkgPT4ge1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5wcm9jZXNzKGZpbGUsIChjb250ZW50KSA9PiB7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IGhhcyBjaGFuZ2VkIHNpbmNlIGl0IHdhcyByZWFkLiBSZXRyeWluZy4uLicsIHtcbiAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IG9sZENvbnRlbnQsXG4gICAgICAgICAgICBwYXRoOiBmaWxlLnBhdGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpc1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgICAgfSk7XG5cbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRvZXNGaWxlRXhpc3QpIHtcbiAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBpc1N1Y2Nlc3M7XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVNaXNzaW5nRmlsZSgpOiBib29sZWFuIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5zaG91bGRGYWlsT25NaXNzaW5nRmlsZSkge1xuICAgICAgICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJyR7cGF0aH0nIG5vdCBmb3VuZGApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LCBmdWxsT3B0aW9ucyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGNvbnRlbnQgb2YgYSBmaWxlIHNhZmVseSBmcm9tIHRoZSB2YXVsdC5cbiAqXG4gKiBJdCBjb3ZlcnMgdGhlIGNhc2Ugd2hlbiB0aGUgZmlsZSB3YXMgcmVtb3ZlZCBkdXJpbmcgdGhlIHJlYWRpbmcuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZWFkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBvciBgbnVsbGAgaWYgdGhlIGZpbGUgaXMgbWlzc2luZyBvciBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgbGV0IGNvbnRlbnQ6IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuICBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogUmVuYW1lcyBhIGZpbGUgc2FmZWx5IGluIHRoZSB2YXVsdC5cbiAqIElmIHRoZSBuZXcgcGF0aCBhbHJlYWR5IGV4aXN0cywgdGhlIGZpbGUgd2lsbCBiZSByZW5hbWVkIHRvIGFuIGF2YWlsYWJsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIHJlbmFtZS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIHJlbmFtZSB0aGUgZmlsZSB0by5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuYW1lU2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb2xkRmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSwgbmV3UGF0aCk7XG5cbiAgaWYgKG9sZEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkRmlsZS5wYXRoICE9PSBuZXdQYXRoKSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld0F2YWlsYWJsZVBhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkRmlsZS5wYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIG5vdGUgdG8gYmUgc2F2ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5vdGUgaXMgc2F2ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWlzTWFya2Rvd25GaWxlKGFwcCwgcGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoICYmIGxlYWYudmlldy5kaXJ0eSkge1xuICAgICAgYXdhaXQgbGVhZi52aWV3LnNhdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZpbGVBY3Rpb24oZmlsZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLHNCQUE2QjtBQUM3Qiw2QkFHTztBQVNQLG1CQUFpQztBQUNqQyxzQkFBMEI7QUFDMUIsa0JBS087QUFDUCwyQkFBNkI7QUFDN0Isd0JBU087QUFvQlAsZUFBc0IsU0FBUyxLQUFVLGVBQTJCLFNBQWtDO0FBQ3BHLFFBQU0sV0FBTywyQkFBUSxLQUFLLGFBQWE7QUFFdkMsUUFBTSxvQkFBZ0IseUNBQWlCLE9BQU87QUFDOUMsUUFBTSxpQkFBaUIsS0FBSyxhQUFhO0FBRXpDLFFBQU0sbUJBQW1CLGlCQUFpQixLQUFLLE9BQU87QUFFdEQsTUFBSTtBQUNGLFVBQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxnQkFBZ0I7QUFBQSxFQUM3QyxTQUFTLEdBQUc7QUFDVixRQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sT0FBTyxnQkFBZ0IsR0FBRztBQUM3QyxZQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFVQSxlQUFzQixpQkFBaUIsS0FBVSxNQUFnQztBQUMvRSxNQUFJLE1BQU0sSUFBSSxNQUFNLFFBQVEsT0FBTyxJQUFJLEdBQUc7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0YsVUFBTSxJQUFJLE1BQU0sYUFBYSxJQUFJO0FBQ2pDLFdBQU87QUFBQSxFQUNULFNBQVMsR0FBRztBQUNWLFFBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxPQUFP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
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBMaXN0ZWRGaWxlcyxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBNYXJrZG93blZpZXcgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBwYXJlbnRGb2xkZXJQYXRoLFxuICBWaWV3VHlwZVxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYyxcbiAgcmV0cnlXaXRoVGltZW91dFxufSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pblxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9jZXNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzT3B0aW9ucyBleHRlbmRzIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBmdW5jdGlvbiB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAgICovXG4gIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gY29weS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIGNvcHkgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgY29waWVkIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBjb25zdCBuZXdGb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChuZXdQYXRoKTtcbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0ZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IG5ld0F2YWlsYWJsZVBhdGggPSBnZXRBdmFpbGFibGVQYXRoKGFwcCwgbmV3UGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY29weShmaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhuZXdBdmFpbGFibGVQYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG5cbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIHBhdGgpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmb2xkZXIuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmb2xkZXIpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dCA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dCkpLCBleHQuc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgaW4gdGhlIHZhdWx0IHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RlRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBbGxMb2FkZWRGaWxlcygpLmZpbHRlcigoZmlsZSkgPT4gaXNGaWxlKGZpbGUpICYmIGlzTm90ZShhcHAsIGZpbGUpKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKSBhcyBURmlsZVtdO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIHJlbmFtZSBwYXRoIGZvciBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgVGhlIHNhZmUgcmVuYW1lIHBhdGggZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FmZVJlbmFtZVBhdGgoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG9sZFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlKSB7XG4gICAgbGV0IGZvbGRlclBhdGggPSBkaXJuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBub25FeGlzdGluZ1BhdGggPSBiYXNlbmFtZShuZXdQYXRoKTtcbiAgICBsZXQgZm9sZGVyOiBudWxsIHwgVEZvbGRlcjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBmb2xkZXJQYXRoLCB0cnVlKTtcbiAgICAgIGlmIChmb2xkZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBub25FeGlzdGluZ1BhdGggPSBqb2luKGJhc2VuYW1lKGZvbGRlclBhdGgpLCBub25FeGlzdGluZ1BhdGgpO1xuICAgICAgZm9sZGVyUGF0aCA9IGRpcm5hbWUoZm9sZGVyUGF0aCk7XG4gICAgfVxuICAgIG5ld1BhdGggPSBqb2luKGZvbGRlci5nZXRQYXJlbnRQcmVmaXgoKSwgbm9uRXhpc3RpbmdQYXRoKTtcbiAgfVxuXG4gIGlmIChvbGRQYXRoLnRvTG93ZXJDYXNlKCkgPT09IG5ld1BhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmb2xkZXIgaXMgZW1wdHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciBpcyBlbXB0eS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzRW1wdHlGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGxpc3RlZEZpbGVzID0gYXdhaXQgbGlzdFNhZmUoYXBwLCBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKSk7XG4gIHJldHVybiBsaXN0ZWRGaWxlcy5maWxlcy5sZW5ndGggPT09IDAgJiYgbGlzdGVkRmlsZXMuZm9sZGVycy5sZW5ndGggPT09IDA7XG59XG5cbi8qKlxuICogU2FmZWx5IGxpc3RzIHRoZSBmaWxlcyBhbmQgZm9sZGVycyBhdCB0aGUgc3BlY2lmaWVkIHBhdGggaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGxpc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIExpc3RlZEZpbGVzfSBvYmplY3QgY29udGFpbmluZyB0aGUgbGlzdGVkIGZpbGVzIGFuZCBmb2xkZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNhZmUoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG5cbiAgaWYgKChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5zdGF0KHBhdGgpKT8udHlwZSAhPT0gJ2ZvbGRlcicpIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5saXN0KHBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3JldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgbmV3Q29udGVudFByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPG51bGwgfCBzdHJpbmcsIFtzdHJpbmddPixcbiAgb3B0aW9uczogUHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUyA9IHtcbiAgICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZTogdHJ1ZVxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dChhc3luYyAoYWJvcnRTaWduYWwpID0+IHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgY29uc3Qgb2xkQ29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGlmIChvbGRDb250ZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gaGFuZGxlTWlzc2luZ0ZpbGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKG5ld0NvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwsIG9sZENvbnRlbnQpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpc1N1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgYWN0dWFsQ29udGVudDogY29udGVudCxcbiAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogb2xkQ29udGVudCxcbiAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0NvbnRlbnQ7XG4gICAgICB9KTtcblxuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICB9KTtcblxuICAgIGlmICghZG9lc0ZpbGVFeGlzdCkge1xuICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzU3VjY2VzcztcblxuICAgIGZ1bmN0aW9uIGhhbmRsZU1pc3NpbmdGaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZEZhaWxPbk1pc3NpbmdGaWxlKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAnJHtwYXRofScgbm90IGZvdW5kYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIGZ1bGxPcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gIH0pO1xuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBSZW5hbWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICogSWYgdGhlIG5ldyBwYXRoIGFscmVhZHkgZXhpc3RzLCB0aGUgZmlsZSB3aWxsIGJlIHJlbmFtZWQgdG8gYW4gYXZhaWxhYmxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvbGRGaWxlID0gZ2V0RmlsZShhcHAsIG9sZFBhdGhPckZpbGUsIGZhbHNlLCB0cnVlKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0U2FmZVJlbmFtZVBhdGgoYXBwLCBvbGRQYXRoT3JGaWxlLCBuZXdQYXRoKTtcblxuICBpZiAob2xkRmlsZS5wYXRoLnRvTG93ZXJDYXNlKCkgPT09IG5ld0F2YWlsYWJsZVBhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgIGlmIChvbGRGaWxlLnBhdGggIT09IG5ld1BhdGgpIHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRGaWxlLnBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIFNhdmVzIHRoZSBzcGVjaWZpZWQgbm90ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgbm90ZSB0byBiZSBzYXZlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZmlsZUFjdGlvbjogKGZpbGU6IFRGaWxlKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsc0JBQTZCO0FBQzdCLDZCQUdPO0FBU1AsbUJBR087QUFDUCxzQkFBMEI7QUFDMUIsa0JBS087QUFDUCwyQkFBNkI7QUFDN0Isd0JBU087QUFvQlAsZUFBc0IsU0FBUyxLQUFVLGVBQTJCLFNBQWtDO0FBQ3BHLFFBQU0sV0FBTywyQkFBUSxLQUFLLGFBQWE7QUFFdkMsUUFBTSxvQkFBZ0IseUNBQWlCLE9BQU87QUFDOUMsUUFBTSxpQkFBaUIsS0FBSyxhQUFhO0FBRXpDLFFBQU0sbUJBQW1CLGlCQUFpQixLQUFLLE9BQU87QUFFdEQsTUFBSTtBQUNGLFVBQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxnQkFBZ0I7QUFBQSxFQUM3QyxTQUFTLEdBQUc7QUFDVixRQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sT0FBTyxnQkFBZ0IsR0FBRztBQUM3QyxZQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFVQSxlQUFzQixpQkFBaUIsS0FBVSxNQUFnQztBQUMvRSxNQUFJLE1BQU0sSUFBSSxNQUFNLFFBQVEsT0FBTyxJQUFJLEdBQUc7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0YsVUFBTSxJQUFJLE1BQU0sYUFB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
|
package/dist/lib/esm/Library.mjs
CHANGED
|
@@ -5,7 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
|
|
7
7
|
|
|
8
|
-
const LIBRARY_VERSION = "37.
|
|
8
|
+
const LIBRARY_VERSION = "37.1.1";
|
|
9
9
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
10
10
|
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-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.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/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.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;;;AChDF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;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&.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&.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";
|
|
11
11
|
export {
|
|
@@ -47,6 +47,15 @@ type StringReplacement = MaybeReturn<string>;
|
|
|
47
47
|
* @returns The string that ends with the suffix.
|
|
48
48
|
*/
|
|
49
49
|
export declare function ensureEndsWith(str: string, suffix: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Ensures that a string has `LF` line endings.
|
|
52
|
+
*
|
|
53
|
+
* It replaces `CRLF` line endings with `LF`.
|
|
54
|
+
*
|
|
55
|
+
* @param str - The string.
|
|
56
|
+
* @returns The string with `LF` line endings.
|
|
57
|
+
*/
|
|
58
|
+
export declare function ensureLfEndings(str: string): string;
|
|
50
59
|
/**
|
|
51
60
|
* Ensures that a string starts with the specified prefix, adding it if necessary.
|
|
52
61
|
*
|
|
@@ -78,6 +87,14 @@ export declare function hasSingleOccurrence(str: string, searchValue: string): b
|
|
|
78
87
|
* @returns The indented string.
|
|
79
88
|
*/
|
|
80
89
|
export declare function indent(text: string, prefix: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the index of the first occurrence of a substring in a string, ignoring line endings.
|
|
92
|
+
*
|
|
93
|
+
* @param str - The string to search in.
|
|
94
|
+
* @param substr - The substring to search for.
|
|
95
|
+
* @returns The index of the first occurrence of the substring, or `-1` if the substring is not found.
|
|
96
|
+
*/
|
|
97
|
+
export declare function indexOfIgnoringLineEndings(str: string, substr: string): number;
|
|
81
98
|
/**
|
|
82
99
|
* Inserts a substring at a specified position in a string.
|
|
83
100
|
*
|
package/dist/lib/esm/String.mjs
CHANGED
|
@@ -26,6 +26,9 @@ for (const [key, value] of Object.entries(ESCAPE_MAP)) {
|
|
|
26
26
|
function ensureEndsWith(str, suffix) {
|
|
27
27
|
return str.endsWith(suffix) ? str : str + suffix;
|
|
28
28
|
}
|
|
29
|
+
function ensureLfEndings(str) {
|
|
30
|
+
return str.replaceAll(/\r\n?/g, "\n");
|
|
31
|
+
}
|
|
29
32
|
function ensureStartsWith(str, prefix) {
|
|
30
33
|
return str.startsWith(prefix) ? str : prefix + str;
|
|
31
34
|
}
|
|
@@ -40,6 +43,31 @@ function hasSingleOccurrence(str, searchValue) {
|
|
|
40
43
|
function indent(text, prefix) {
|
|
41
44
|
return text.split("\n").map((line) => `${prefix}${line}`).join("\n");
|
|
42
45
|
}
|
|
46
|
+
function indexOfIgnoringLineEndings(str, substr) {
|
|
47
|
+
const CR = "\r";
|
|
48
|
+
const LF = "\n";
|
|
49
|
+
const CRLF_LENGTH = 2;
|
|
50
|
+
const NOT_FOUND_INDEX = -1;
|
|
51
|
+
const strLf = ensureLfEndings(str);
|
|
52
|
+
const substrLf = ensureLfEndings(substr);
|
|
53
|
+
const offsetLf = strLf.indexOf(substrLf);
|
|
54
|
+
if (offsetLf === NOT_FOUND_INDEX) {
|
|
55
|
+
return NOT_FOUND_INDEX;
|
|
56
|
+
}
|
|
57
|
+
let removedCrCount = 0;
|
|
58
|
+
let strLfIndex = 0;
|
|
59
|
+
let strIndex = 0;
|
|
60
|
+
while (strIndex < str.length && strLfIndex < offsetLf) {
|
|
61
|
+
if (str[strIndex] === CR && str[strIndex + 1] === LF) {
|
|
62
|
+
removedCrCount++;
|
|
63
|
+
strIndex += CRLF_LENGTH;
|
|
64
|
+
} else {
|
|
65
|
+
strIndex++;
|
|
66
|
+
}
|
|
67
|
+
strLfIndex++;
|
|
68
|
+
}
|
|
69
|
+
return offsetLf + removedCrCount;
|
|
70
|
+
}
|
|
43
71
|
function insertAt(str, substring, startIndex, endIndex) {
|
|
44
72
|
endIndex ??= startIndex;
|
|
45
73
|
return str.slice(0, startIndex) + substring + str.slice(endIndex);
|
|
@@ -141,10 +169,12 @@ function unindent(text, prefix, shouldThrowIfNotIndented = false) {
|
|
|
141
169
|
}
|
|
142
170
|
export {
|
|
143
171
|
ensureEndsWith,
|
|
172
|
+
ensureLfEndings,
|
|
144
173
|
ensureStartsWith,
|
|
145
174
|
escape,
|
|
146
175
|
hasSingleOccurrence,
|
|
147
176
|
indent,
|
|
177
|
+
indexOfIgnoringLineEndings,
|
|
148
178
|
insertAt,
|
|
149
179
|
makeValidVariableName,
|
|
150
180
|
normalize,
|
|
@@ -156,4 +186,4 @@ export {
|
|
|
156
186
|
unescape,
|
|
157
187
|
unindent
|
|
158
188
|
};
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL1JlZ0V4cC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogR3JvdXBzIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIGdyb3VwczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNlcyBvZiB0aGUgZ3JvdXBzIHRoYXQgd2VyZSBub3QgZm91bmQgaW4gdGhlIG1hdGNoLlxuICAgKi9cbiAgbWlzc2luZ0dyb3VwSW5kaWNlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEFuIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3Vic3RyaW5nIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gKCguLi5hcmdzOiBbUmVwbGFjZUNvbW1vbkFyZ3MsIC4uLlJlcGxhY2VHcm91cEFyZ3NdKSA9PiBTdHJpbmdSZXBsYWNlbWVudCkgfCBTdHJpbmdSZXBsYWNlbWVudDtcblxudHlwZSBTdHJpbmdSZXBsYWNlbWVudCA9IE1heWJlUmV0dXJuPHN0cmluZz47XG5cbi8qKlxuICogTWFwcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IEVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdcXG4nOiAnXFxcXG4nLFxuICAnXFxyJzogJ1xcXFxyJyxcbiAgJ1xcdCc6ICdcXFxcdCcsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFxmJzogJ1xcXFxmJyxcbiAgJ1xcJyc6ICdcXFxcXFwnJyxcbiAgJ1wiJzogJ1xcXFxcIicsXG4gICdcXFxcJzogJ1xcXFxcXFxcJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIGVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHVuZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IFVORVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRVNDQVBFX01BUCkpIHtcbiAgVU5FU0NBUEVfTUFQW3ZhbHVlXSA9IGtleTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBhZGRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gZW5zdXJlLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5lbmRzV2l0aChzdWZmaXgpID8gc3RyIDogc3RyICsgc3VmZml4O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RhcnRzV2l0aChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnN0YXJ0c1dpdGgocHJlZml4KSA/IHN0ciA6IHByZWZpeCArIHN0cjtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZShzdHIsIEVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBoYXMgYSBzaW5nbGUgb2NjdXJyZW5jZSBvZiBhIHNlYXJjaCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHN0cjogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5sYXN0SW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIHJldHVybiBmaXJzdEluZGV4ICE9PSAtMSAmJiBmaXJzdEluZGV4ID09PSBsYXN0SW5kZXg7XG59XG5cbi8qKlxuICogSW5kZW50cyBhIHN0cmluZyBieSBhZGRpbmcgYSBwcmVmaXggdG8gZWFjaCBsaW5lLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHN0cmluZyB0byBpbmRlbnQuXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBhZGQgdG8gZWFjaCBsaW5lLlxuICogQHJldHVybnMgVGhlIGluZGVudGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGVudCh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fSR7bGluZX1gKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgc3Vic3RyaW5nIGF0IGEgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGludG8uXG4gKiBAcGFyYW0gc3Vic3RyaW5nIC0gVGhlIHN1YnN0cmluZyB0byBpbnNlcnQuXG4gKiBAcGFyYW0gc3RhcnRJbmRleCAtIFRoZSBpbmRleCB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBhdC5cbiAqIEBwYXJhbSBlbmRJbmRleCAtIFRoZSBpbmRleCB0byBlbmQgdGhlIHN1YnN0cmluZyBhdC5cbiAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzdHJpbmcgd2l0aCB0aGUgc3Vic3RyaW5nIGluc2VydGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QXQoc3RyOiBzdHJpbmcsIHN1YnN0cmluZzogc3RyaW5nLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgZW5kSW5kZXggPz89IHN0YXJ0SW5kZXg7XG4gIHJldHVybiBzdHIuc2xpY2UoMCwgc3RhcnRJbmRleCkgKyBzdWJzdHJpbmcgKyBzdHIuc2xpY2UoZW5kSW5kZXgpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlIG5hbWUgYnkgcmVwbGFjaW5nIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWQgdmFyaWFibGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VWYWxpZFZhcmlhYmxlTmFtZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgL1teYS16QS1aMC05X10vZywgJ18nKTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgc3RyaW5nIGJ5IGNvbnZlcnRpbmcgaXQgdG8gdGhlIE5GQyBmb3JtIGFuZCByZXBsYWNpbmcgbm9uLWJyZWFraW5nIHNwYWNlcyB3aXRoIHJlZ3VsYXIgc3BhY2VzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgL1xcdTAwQTB8XFx1MjAyRi9nLCAnICcpLm5vcm1hbGl6ZSgnTkZDJyk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgb2NjdXJyZW5jZXMgb2Ygc3RyaW5ncyBpbiBhIGdpdmVuIHN0cmluZyBiYXNlZCBvbiBhIHJlcGxhY2VtZW50cyBtYXAuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gcGVyZm9ybSByZXBsYWNlbWVudHMgb24uXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzTWFwIC0gQW4gb2JqZWN0IG1hcHBpbmcgc3RyaW5ncyB0byB0aGVpciByZXBsYWNlbWVudCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlKHN0cjogc3RyaW5nLCByZXBsYWNlbWVudHNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHJlcGxhY2VtZW50c01hcCkubWFwKChzb3VyY2UpID0+IGVzY2FwZVJlZ0V4cChzb3VyY2UpKS5qb2luKCd8JyksICdnJyk7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgcmVnRXhwLCAoeyBzdWJzdHJpbmc6IHNvdXJjZSB9KSA9PiByZXBsYWNlbWVudHNNYXBbc291cmNlXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcGxhY2VtZW50IHNvdXJjZTogJHtzb3VyY2V9YCkpKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSByZXBsYWNlciBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IFJlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBjb21tb25BcmdzOiBSZXBsYWNlQ29tbW9uQXJncyA9IHtcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgY29uc3QgZ3JvdXBBcmdzID0gYXJncy5zbGljZSgwLCBzb3VyY2VJbmRleCAtIDEpLm1hcCgoYXJnLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb21tb25BcmdzLm1pc3NpbmdHcm91cEluZGljZXMucHVzaChpbmRleCk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGFyZ3VtZW50IHR5cGU6ICR7dHlwZW9mIGFyZ31gKTtcbiAgICB9KSBhcyBSZXBsYWNlR3JvdXBBcmdzO1xuXG4gICAgcmV0dXJuIChyZXBsYWNlcihjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gY29tbW9uQXJncy5zdWJzdHJpbmc7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHJlcGxhY2VzIGFsbCBvY2N1cnJlbmNlcyBvZiBhIHNlYXJjaCBzdHJpbmcgb3IgcGF0dGVybiB3aXRoIHRoZSByZXN1bHRzIG9mIGFuIGFzeW5jaHJvbm91cyByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUFsbEFzeW5jPFJlcGxhY2VHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4oXG4gIHN0cjogc3RyaW5nLFxuICBzZWFyY2hWYWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICByZXBsYWNlcjogQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzPixcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgYWJvcnRTaWduYWwgPz89IGFib3J0U2lnbmFsTmV2ZXIoKTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICBjb25zdCByZXBsYWNlbWVudEFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzZTxTdHJpbmdSZXBsYWNlbWVudD4pW10gPSBbXTtcblxuICByZXBsYWNlQWxsPFJlcGxhY2VHcm91cEFyZ3M+KHN0ciwgc2VhcmNoVmFsdWUsIChjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpID0+IHtcbiAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCBhYm9ydFNpZ25hbCwgY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSk7XG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBjb25zdCByZXBsYWNlbWVudHM6IFN0cmluZ1JlcGxhY2VtZW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFzeW5jRm4gb2YgcmVwbGFjZW1lbnRBc3luY0Zucykge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgcmVwbGFjZW1lbnRzLnB1c2goYXdhaXQgYXN5bmNGbigpKTtcbiAgfVxuXG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIChhcmdzKTogc3RyaW5nID0+IHJlcGxhY2VtZW50cy5zaGlmdCgpID8/IGFyZ3Muc3Vic3RyaW5nKTtcbn1cblxuLyoqXG4gKiBUcmltcyB0aGUgc3BlY2lmaWVkIHN1ZmZpeCBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBzaG91bGRWYWxpZGF0ZSAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGRvZXMgbm90IGVuZCB3aXRoIHRoZSBzdWZmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgdHJ1ZSBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgdHJ1ZSwgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIHRydWUgYW5kIHRoZSBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cjogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgdmFsaWRhdGU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKHN0ci5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gc3RyLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IHN0YXJ0IHdpdGggcHJlZml4ICR7cHJlZml4fWApO1xuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiBVbmVzY2FwZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGVzY2FwZSBzZXF1ZW5jZXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdW5lc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgdW5lc2NhcGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBVTkVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIFVuaW5kZW50cyBhIHN0cmluZyBieSByZW1vdmluZyBhIHByZWZpeCBmcm9tIGVhY2ggbGluZS5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBzdHJpbmcgdG8gdW5pbmRlbnQuXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byByZW1vdmUgZnJvbSBlYWNoIGxpbmUuXG4gKiBAcGFyYW0gc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgYSBsaW5lIGlzIG5vdCBpbmRlbnRlZCB3aXRoIHRoZSBwcmVmaXguXG4gKiBAcmV0dXJucyBUaGUgdW5pbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmluZGVudCh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nLCBzaG91bGRUaHJvd0lmTm90SW5kZW50ZWQgPSBmYWxzZSk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IHtcbiAgICBpZiAobGluZS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgIHJldHVybiBsaW5lLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExpbmUgXCIke2xpbmV9XCIgaXMgbm90IGluZGVudGVkIHdpdGggXCIke3ByZWZpeH1cImApO1xuICAgIH1cbiAgICByZXR1cm4gbGluZTtcbiAgfSkuam9pbignXFxuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBU0EsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyx1QkFBdUI7QUFDaEMsU0FBUyxvQkFBb0I7QUFDN0IsU0FBUyxvQkFBb0I7QUErQzdCLE1BQU0sYUFBcUM7QUFBQSxFQUN6QyxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1I7QUFLQSxNQUFNLGVBQXVDLENBQUM7QUFDOUMsV0FBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxVQUFVLEdBQUc7QUFDckQsZUFBYSxLQUFLLElBQUk7QUFDeEI7QUFTTyxTQUFTLGVBQWUsS0FBYSxRQUF3QjtBQUNsRSxTQUFPLElBQUksU0FBUyxNQUFNLElBQUksTUFBTSxNQUFNO0FBQzVDO0FBU08sU0FBUyxpQkFBaUIsS0FBYSxRQUF3QjtBQUNwRSxTQUFPLElBQUksV0FBVyxNQUFNLElBQUksTUFBTSxTQUFTO0FBQ2pEO0FBUU8sU0FBUyxPQUFPLEtBQXFCO0FBQzFDLFNBQU8sUUFBUSxLQUFLLFVBQVU7QUFDaEM7QUFTTyxTQUFTLG9CQUFvQixLQUFhLGFBQThCO0FBQzdFLFFBQU0sYUFBYSxJQUFJLFFBQVEsV0FBVztBQUMxQyxRQUFNLFlBQVksSUFBSSxZQUFZLFdBQVc7QUFDN0MsU0FBTyxlQUFlLE1BQU0sZUFBZTtBQUM3QztBQVNPLFNBQVMsT0FBTyxNQUFjLFFBQXdCO0FBQzNELFNBQU8sS0FBSyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUs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
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL1JlZ0V4cC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogR3JvdXBzIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIGdyb3VwczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNlcyBvZiB0aGUgZ3JvdXBzIHRoYXQgd2VyZSBub3QgZm91bmQgaW4gdGhlIG1hdGNoLlxuICAgKi9cbiAgbWlzc2luZ0dyb3VwSW5kaWNlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEFuIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3Vic3RyaW5nIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gKCguLi5hcmdzOiBbUmVwbGFjZUNvbW1vbkFyZ3MsIC4uLlJlcGxhY2VHcm91cEFyZ3NdKSA9PiBTdHJpbmdSZXBsYWNlbWVudCkgfCBTdHJpbmdSZXBsYWNlbWVudDtcblxudHlwZSBTdHJpbmdSZXBsYWNlbWVudCA9IE1heWJlUmV0dXJuPHN0cmluZz47XG5cbi8qKlxuICogTWFwcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IEVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdcXG4nOiAnXFxcXG4nLFxuICAnXFxyJzogJ1xcXFxyJyxcbiAgJ1xcdCc6ICdcXFxcdCcsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFxmJzogJ1xcXFxmJyxcbiAgJ1xcJyc6ICdcXFxcXFwnJyxcbiAgJ1wiJzogJ1xcXFxcIicsXG4gICdcXFxcJzogJ1xcXFxcXFxcJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIGVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHVuZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IFVORVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRVNDQVBFX01BUCkpIHtcbiAgVU5FU0NBUEVfTUFQW3ZhbHVlXSA9IGtleTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBhZGRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gZW5zdXJlLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5lbmRzV2l0aChzdWZmaXgpID8gc3RyIDogc3RyICsgc3VmZml4O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBoYXMgYExGYCBsaW5lIGVuZGluZ3MuXG4gKlxuICogSXQgcmVwbGFjZXMgYENSTEZgIGxpbmUgZW5kaW5ncyB3aXRoIGBMRmAuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYExGYCBsaW5lIGVuZGluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVMZkVuZGluZ3Moc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoL1xcclxcbj8vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RhcnRzV2l0aChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnN0YXJ0c1dpdGgocHJlZml4KSA/IHN0ciA6IHByZWZpeCArIHN0cjtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZShzdHIsIEVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBoYXMgYSBzaW5nbGUgb2NjdXJyZW5jZSBvZiBhIHNlYXJjaCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHN0cjogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5sYXN0SW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIHJldHVybiBmaXJzdEluZGV4ICE9PSAtMSAmJiBmaXJzdEluZGV4ID09PSBsYXN0SW5kZXg7XG59XG5cbi8qKlxuICogSW5kZW50cyBhIHN0cmluZyBieSBhZGRpbmcgYSBwcmVmaXggdG8gZWFjaCBsaW5lLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHN0cmluZyB0byBpbmRlbnQuXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBhZGQgdG8gZWFjaCBsaW5lLlxuICogQHJldHVybnMgVGhlIGluZGVudGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGVudCh0ZXh0OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fSR7bGluZX1gKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN1YnN0cmluZyBpbiBhIHN0cmluZywgaWdub3JpbmcgbGluZSBlbmRpbmdzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBpbi5cbiAqIEBwYXJhbSBzdWJzdHIgLSBUaGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHN1YnN0cmluZywgb3IgYC0xYCBpZiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2ZJZ25vcmluZ0xpbmVFbmRpbmdzKHN0cjogc3RyaW5nLCBzdWJzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IENSID0gJ1xccic7XG4gIGNvbnN0IExGID0gJ1xcbic7XG4gIGNvbnN0IENSTEZfTEVOR1RIID0gMjtcbiAgY29uc3QgTk9UX0ZPVU5EX0lOREVYID0gLTE7XG5cbiAgY29uc3Qgc3RyTGYgPSBlbnN1cmVMZkVuZGluZ3Moc3RyKTtcbiAgY29uc3Qgc3Vic3RyTGYgPSBlbnN1cmVMZkVuZGluZ3Moc3Vic3RyKTtcblxuICBjb25zdCBvZmZzZXRMZiA9IHN0ckxmLmluZGV4T2Yoc3Vic3RyTGYpO1xuICBpZiAob2Zmc2V0TGYgPT09IE5PVF9GT1VORF9JTkRFWCkge1xuICAgIHJldHVybiBOT1RfRk9VTkRfSU5ERVg7XG4gIH1cblxuICAvLyBDb3VudCBob3cgbWFueSBgQ1JgIHdlcmUgcmVtb3ZlZCBiZWZvcmUgdGhpcyBub3JtYWxpemVkIGluZGV4XG4gIGxldCByZW1vdmVkQ3JDb3VudCA9IDA7XG4gIGxldCBzdHJMZkluZGV4ID0gMDtcblxuICBsZXQgc3RySW5kZXggPSAwO1xuICB3aGlsZSAoc3RySW5kZXggPCBzdHIubGVuZ3RoICYmIHN0ckxmSW5kZXggPCBvZmZzZXRMZikge1xuICAgIGlmIChzdHJbc3RySW5kZXhdID09PSBDUiAmJiBzdHJbc3RySW5kZXggKyAxXSA9PT0gTEYpIHtcbiAgICAgIHJlbW92ZWRDckNvdW50Kys7XG4gICAgICBzdHJJbmRleCArPSBDUkxGX0xFTkdUSDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RySW5kZXgrKztcbiAgICB9XG4gICAgc3RyTGZJbmRleCsrO1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldExmICsgcmVtb3ZlZENyQ291bnQ7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIHN1YnN0cmluZyBhdCBhIHNwZWNpZmllZCBwb3NpdGlvbiBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBpbnRvLlxuICogQHBhcmFtIHN1YnN0cmluZyAtIFRoZSBzdWJzdHJpbmcgdG8gaW5zZXJ0LlxuICogQHBhcmFtIHN0YXJ0SW5kZXggLSBUaGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcGFyYW0gZW5kSW5kZXggLSBUaGUgaW5kZXggdG8gZW5kIHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggdGhlIHN1YnN0cmluZyBpbnNlcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF0KHN0cjogc3RyaW5nLCBzdWJzdHJpbmc6IHN0cmluZywgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleD86IG51bWJlcik6IHN0cmluZyB7XG4gIGVuZEluZGV4ID8/PSBzdGFydEluZGV4O1xuICByZXR1cm4gc3RyLnNsaWNlKDAsIHN0YXJ0SW5kZXgpICsgc3Vic3RyaW5nICsgc3RyLnNsaWNlKGVuZEluZGV4KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZSBuYW1lIGJ5IHJlcGxhY2luZyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aCB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHZhbGlkIHZhcmlhYmxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsaWRWYXJpYWJsZU5hbWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHN0cmluZyBieSBjb252ZXJ0aW5nIGl0IHRvIHRoZSBORkMgZm9ybSBhbmQgcmVwbGFjaW5nIG5vbi1icmVha2luZyBzcGFjZXMgd2l0aCByZWd1bGFyIHNwYWNlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9cXHUwMEEwfFxcdTIwMkYvZywgJyAnKS5ub3JtYWxpemUoJ05GQycpO1xufVxuXG4vKipcbiAqIFJlcGxhY2VzIG9jY3VycmVuY2VzIG9mIHN0cmluZ3MgaW4gYSBnaXZlbiBzdHJpbmcgYmFzZWQgb24gYSByZXBsYWNlbWVudHMgbWFwLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzIG9uLlxuICogQHBhcmFtIHJlcGxhY2VtZW50c01hcCAtIEFuIG9iamVjdCBtYXBwaW5nIHN0cmluZ3MgdG8gdGhlaXIgcmVwbGFjZW1lbnQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBhcHBsaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShzdHI6IHN0cmluZywgcmVwbGFjZW1lbnRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhyZXBsYWNlbWVudHNNYXApLm1hcCgoc291cmNlKSA9PiBlc2NhcGVSZWdFeHAoc291cmNlKSkuam9pbignfCcpLCAnZycpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHJlZ0V4cCwgKHsgc3Vic3RyaW5nOiBzb3VyY2UgfSkgPT4gcmVwbGFjZW1lbnRzTWFwW3NvdXJjZV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcihgVW5leHBlY3RlZCByZXBsYWNlbWVudCBzb3VyY2U6ICR7c291cmNlfWApKSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzPlxuKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgaWYgKHNlYXJjaFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwICYmICFzZWFyY2hWYWx1ZS5nbG9iYWwpIHtcbiAgICBzZWFyY2hWYWx1ZSA9IG5ldyBSZWdFeHAoc2VhcmNoVmFsdWUuc291cmNlLCBgJHtzZWFyY2hWYWx1ZS5mbGFnc31nYCk7XG4gIH1cblxuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHIucmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgcmVwbGFjZXIpO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCAoc3Vic3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IFNPVVJDRV9JTkRFWF9PRkZTRVRfRk9SX0dST1VQX0FSRyA9IDI7XG4gICAgY29uc3QgaGFzR3JvdXBzQXJnID0gdHlwZW9mIGFyZ3MuYXQoLTEpID09PSAnb2JqZWN0JztcbiAgICBjb25zdCBzb3VyY2VJbmRleCA9IGhhc0dyb3Vwc0FyZyA/IGFyZ3MubGVuZ3RoIC0gU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHIDogYXJncy5sZW5ndGggLSAxO1xuXG4gICAgY29uc3QgY29tbW9uQXJnczogUmVwbGFjZUNvbW1vbkFyZ3MgPSB7XG4gICAgICBncm91cHM6IGhhc0dyb3Vwc0FyZyA/IGFyZ3MuYXQoLTEpIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gOiB1bmRlZmluZWQsXG4gICAgICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBbXSxcbiAgICAgIG9mZnNldDogYXJncy5hdChzb3VyY2VJbmRleCAtIDEpIGFzIG51bWJlcixcbiAgICAgIHNvdXJjZTogYXJncy5hdChzb3VyY2VJbmRleCkgYXMgc3RyaW5nLFxuICAgICAgc3Vic3RyaW5nXG4gICAgfTtcblxuICAgIGNvbnN0IGdyb3VwQXJncyA9IGFyZ3Muc2xpY2UoMCwgc291cmNlSW5kZXggLSAxKS5tYXAoKGFyZywgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29tbW9uQXJncy5taXNzaW5nR3JvdXBJbmRpY2VzLnB1c2goaW5kZXgpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBhcmd1bWVudCB0eXBlOiAke3R5cGVvZiBhcmd9YCk7XG4gICAgfSkgYXMgUmVwbGFjZUdyb3VwQXJncztcblxuICAgIHJldHVybiAocmVwbGFjZXIoY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IGNvbW1vbkFyZ3Muc3Vic3RyaW5nO1xuICB9KTtcbn1cblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSByZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiBhc3luY2hyb25vdXMgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcGxhY2VBbGxBc3luYzxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IEFzeW5jUmVwbGFjZXI8UmVwbGFjZUdyb3VwQXJncz4sXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGFib3J0U2lnbmFsID8/PSBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZXIpO1xuICB9XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRBc3luY0ZuczogKCgpID0+IFByb21pc2U8U3RyaW5nUmVwbGFjZW1lbnQ+KVtdID0gW107XG5cbiAgcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzPihzdHIsIHNlYXJjaFZhbHVlLCAoY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSA9PiB7XG4gICAgcmVwbGFjZW1lbnRBc3luY0Zucy5wdXNoKCgpID0+IHJlc29sdmVWYWx1ZShyZXBsYWNlciwgYWJvcnRTaWduYWwsIGNvbW1vbkFyZ3MsIC4uLmdyb3VwQXJncykpO1xuICAgIHJldHVybiAnJztcbiAgfSk7XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRzOiBTdHJpbmdSZXBsYWNlbWVudFtdID0gW107XG5cbiAgZm9yIChjb25zdCBhc3luY0ZuIG9mIHJlcGxhY2VtZW50QXN5bmNGbnMpIHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIHJlcGxhY2VtZW50cy5wdXNoKGF3YWl0IGFzeW5jRm4oKSk7XG4gIH1cblxuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHNlYXJjaFZhbHVlLCAoYXJncyk6IHN0cmluZyA9PiByZXBsYWNlbWVudHMuc2hpZnQoKSA/PyBhcmdzLnN1YnN0cmluZyk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byByZW1vdmUgZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gc2hvdWxkVmFsaWRhdGUgLSBJZiB0cnVlLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIHRydWUgYW5kIHRoZSBzdHJpbmcgZG9lcyBub3QgZW5kIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1FbmQoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nLCBzaG91bGRWYWxpZGF0ZT86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoc3RyLmVuZHNXaXRoKHN1ZmZpeCkpIHtcbiAgICByZXR1cm4gc3RyLnNsaWNlKDAsIC1zdWZmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChzaG91bGRWYWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBlbmQgd2l0aCBzdWZmaXggJHtzdWZmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgcHJlZml4IGZyb20gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byByZW1vdmUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB2YWxpZGF0ZSAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqIEByZXR1cm5zIFRoZSB0cmltbWVkIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgYHZhbGlkYXRlYCBpcyB0cnVlIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQVNBLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsb0JBQW9CO0FBK0M3QixNQUFNLGFBQXFDO0FBQUEsRUFDekMsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUNS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
|
|
@@ -7,8 +7,10 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
7
7
|
|
|
8
8
|
import { abortSignalAny } from "../AbortController.mjs";
|
|
9
9
|
import {
|
|
10
|
+
ensureLfEndings,
|
|
10
11
|
hasSingleOccurrence,
|
|
11
12
|
indent,
|
|
13
|
+
indexOfIgnoringLineEndings,
|
|
12
14
|
unindent
|
|
13
15
|
} from "../String.mjs";
|
|
14
16
|
import { resolveValue } from "../ValueProvider.mjs";
|
|
@@ -34,10 +36,10 @@ async function getCodeBlockMarkdownInfo(options) {
|
|
|
34
36
|
lineStart: 0,
|
|
35
37
|
text: content
|
|
36
38
|
};
|
|
37
|
-
if (!hasSingleOccurrence(content, approximateSectionInfo.text)) {
|
|
39
|
+
if (!hasSingleOccurrence(ensureLfEndings(content), ensureLfEndings(approximateSectionInfo.text))) {
|
|
38
40
|
return null;
|
|
39
41
|
}
|
|
40
|
-
const sectionOffset = content
|
|
42
|
+
const sectionOffset = indexOfIgnoringLineEndings(content, approximateSectionInfo.text);
|
|
41
43
|
const linesBeforeSectionCount = content.slice(0, sectionOffset).split("\n").length - 1;
|
|
42
44
|
const isInCallout = !!el.parentElement?.classList.contains("callout-content");
|
|
43
45
|
const language = getLanguageFromElement(el);
|
|
@@ -219,4 +221,4 @@ export {
|
|
|
219
221
|
removeCodeBlock,
|
|
220
222
|
replaceCodeBlock
|
|
221
223
|
};
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgaGFzU2luZ2xlT2NjdXJyZW5jZSxcbiAgaW5kZW50LFxuICB1bmluZGVudFxufSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQge1xuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0fSBvYmplY3QuXG4gICAqL1xuICBjdHg6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIEhUTUxFbGVtZW50fSByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgY29udGVudCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIG5vdGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNvdXJjZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBpbnNlcnRBZnRlckNvZGVCbG9ja30gLyB7QGxpbmsgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIG51bWJlciBvZiBsaW5lcyB0byBvZmZzZXQgdGhlIGluc2VydGlvbiBieS4gRGVmYXVsdCBpcyBgMGAuXG4gICAqL1xuICBsaW5lT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0ZXh0IHRvIGluc2VydCBhZnRlciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVtb3ZlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGtlZXAgdGhlIGdhcCBhZnRlciByZW1vdmluZyB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkS2VlcEdhcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlcGxhY2VDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgbmV3IGNvZGUgYmxvY2suXG4gICAqL1xuICBjb2RlQmxvY2tQcm92aWRlcjogVmFsdWVQcm92aWRlcjxzdHJpbmcsIFtzdHJpbmddPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBrZWVwIHRoZSBnYXAgd2hlbiB0aGUgbmV3IGNvZGUgYmxvY2sgaXMgZW1wdHkuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zKTogUHJvbWlzZTxDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBlbCwgc291cmNlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgbGV0IGNvbnRlbnQ6IHN0cmluZztcbiAgaWYgKG9wdGlvbnMubm90ZUNvbnRlbnQpIHtcbiAgICBjb250ZW50ID0gb3B0aW9ucy5ub3RlQ29udGVudDtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIHNvdXJjZUZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChzb3VyY2VGaWxlKTtcbiAgfVxuXG4gIGNvbnN0IGFwcHJveGltYXRlU2VjdGlvbkluZm8gPSBjdHguZ2V0U2VjdGlvbkluZm8oZWwpID8/IHtcbiAgICBsaW5lRW5kOiBjb250ZW50LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgIGxpbmVTdGFydDogMCxcbiAgICB0ZXh0OiBjb250ZW50XG4gIH07XG5cbiAgaWYgKCFoYXNTaW5nbGVPY2N1cnJlbmNlKGNvbnRlbnQsIGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHNlY3Rpb25PZmZzZXQgPSBjb250ZW50LmluZGV4T2YoYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgY29uc3QgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQgPSBjb250ZW50LnNsaWNlKDAsIHNlY3Rpb25PZmZzZXQpLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IGlzSW5DYWxsb3V0ID0gISFlbC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ2NhbGxvdXQtY29udGVudCcpO1xuXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gIGNvbnN0IHNvdXJjZUxpbmVzID0gc291cmNlLnNwbGl0KCdcXG4nKTtcblxuICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0ZXh0TGluZU9mZnNldHMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50LCBzZWN0aW9uT2Zmc2V0KTtcblxuICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0TGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0ZXh0TGluZSA9IHRleHRMaW5lc1tpXTtcbiAgICBjb25zdCBsaW5lID0gdGV4dExpbmUgPz8gJyc7XG4gICAgY29uc3QgbGluZU9mZnNldCA9IGxhc3RUZXh0TGluZU9mZnNldCArIGxpbmUubGVuZ3RoICsgMTtcbiAgICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgaSArIDEsIGxpbmVPZmZzZXQpO1xuICAgIGxhc3RUZXh0TGluZU9mZnNldCA9IGxpbmVPZmZzZXQ7XG4gIH1cblxuICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0TGluZXMgPSB0ZXh0TGluZXMubWFwKChsaW5lLCBpbmRleCkgPT5cbiAgICBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVTdGFydCA8PSBpbmRleCAmJiBpbmRleCA8PSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVFbmQgPyBsaW5lIDogJydcbiAgKTtcbiAgY29uc3QgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcy5qb2luKCdcXG4nKTtcblxuICBjb25zdCBSRUdfRVhQID1cbiAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gIGxldCBtYXJrZG93bkluZm86IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHBvdGVudGlhbENvZGVCbG9ja1RleHQubWF0Y2hBbGwoUkVHX0VYUCkpIHtcbiAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2UsIGlzSW5DYWxsb3V0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duSW5mbykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHBvdGVudGlhbENvZGVCbG9ja1RleHQsIG1hdGNoLCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLCBzb3VyY2VMaW5lcywgdGV4dExpbmVPZmZzZXRzLCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCk7XG4gIH1cblxuICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG1hcmtkb3duSW5mbztcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYWZ0ZXIgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0QWZ0ZXJDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQubGluZSArIGxpbmVPZmZzZXQgKyAxO1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYmVmb3JlIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEJlZm9yZUNvZGVCbG9jayhvcHRpb25zOiBJbnNlcnRDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGxpbmVPZmZzZXQgPSAwLCB0ZXh0IH0gPSBvcHRpb25zO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKF9hYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duSW5mbyA9IGF3YWl0IGdldENvZGVCbG9ja01hcmtkb3duSW5mbyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbm90ZUNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNvZGUgYmxvY2suJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zZXJ0TGluZUluZGV4ID0gbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0LmxpbmUgLSBsaW5lT2Zmc2V0O1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZUNvZGVCbG9jayhvcHRpb25zOiBSZW1vdmVDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJlcGxhY2VDb2RlQmxvY2soe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29kZUJsb2NrUHJvdmlkZXI6ICcnLFxuICAgIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk6IG9wdGlvbnMuc2hvdWxkS2VlcEdhcCA/PyBmYWxzZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQ29kZUJsb2NrKG9wdGlvbnM6IFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjb2RlQmxvY2tQcm92aWRlciwgY3R4IH0gPSBvcHRpb25zO1xuICBvcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgb3B0aW9ucy5hYm9ydFNpZ25hbCk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGxldCBvbGRDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5vZmZzZXQsIG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcbiAgICBpZiAob3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG9sZENvZGVCbG9jayA9IHVuaW5kZW50KG9sZENvZGVCbG9jaywgbWFya2Rvd25JbmZvLmxpbmVQcmVmaXgpO1xuICAgIH1cblxuICAgIGxldCBuZXdDb2RlQmxvY2sgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29kZUJsb2NrUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb2RlQmxvY2spO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2goXG4gIHBvdGVudGlhbENvZGVCbG9ja1RleHQ6IHN0cmluZyxcbiAgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXksXG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uLFxuICBzb3VyY2VMaW5lczogc3RyaW5nW10sXG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPixcbiAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQ6IG51bWJlclxuKTogQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzLmxlbmd0aCArIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBhcmdzOiBjb2RlQmxvY2tBcmdzU3RyLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pLFxuICAgIGVuZERlbGltaXRlcjogY29kZUJsb2NrRW5kRGVsaW1pdGVyLFxuICAgIGxhbmd1YWdlLFxuICAgIGxpbmVQcmVmaXgsXG4gICAgcG9zaXRpb25Jbk5vdGU6IHtcbiAgICAgIGVuZDoge1xuICAgICAgICBjb2w6ICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUgKyAxKSA/PyAwKSAtICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUpID8/IDApIC0gMSxcbiAgICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgICAgb2Zmc2V0OiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAxXG4gICAgICB9LFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICAgIG9mZnNldDogdGV4dExpbmVPZmZzZXRzLmdldChzdGFydExpbmUpID8/IDBcbiAgICAgIH1cbiAgICB9LFxuICAgIHJhd0FyZ3NTdHI6IGNvZGVCbG9ja0FyZ3NTdHIsXG4gICAgc2VjdGlvbkluZm86IHtcbiAgICAgIGxpbmVFbmQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQgKyBzb3VyY2VMaW5lcy5sZW5ndGggKyAxLFxuICAgICAgbGluZVN0YXJ0OiBwcmV2aW91c1RleHRMaW5lc0NvdW50LFxuICAgICAgdGV4dDogYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0XG4gICAgfSxcbiAgICBzdGFydERlbGltaXRlcjogY29kZUJsb2NrU3RhcnREZWxpbWl0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBCTE9DS19MQU5HVUFHRV9QUkVGSVggPSAnYmxvY2stbGFuZ3VhZ2UtJztcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwuY2xhc3NMaXN0KS5maW5kKChjbHMpID0+IGNscy5zdGFydHNXaXRoKEJMT0NLX0xBTkdVQUdFX1BSRUZJWCkpPy5zbGljZShCTE9DS19MQU5HVUFHRV9QUkVGSVgubGVuZ3RoKSA/PyAnJztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0VGV4dChjb250ZW50OiBzdHJpbmcsIGluc2VydExpbmVJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IGxpbmVzLnNsaWNlKCk7XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPCAwKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gMDtcbiAgfVxuICBpZiAoaW5zZXJ0TGluZUluZGV4ID4gbGluZXMubGVuZ3RoKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gbGluZXMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3QgUFJFRklYX0xJTkVfUkVHX0VYUCA9IC9eIHswLDN9KD86PiB7MSwzfSkqL2c7XG4gIGNvbnN0IG1hdGNoID0gKGxpbmVzW2luc2VydExpbmVJbmRleF0gPz8gJycpLm1hdGNoKFBSRUZJWF9MSU5FX1JFR19FWFApO1xuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2g/LlswXSA/PyAnJztcbiAgbmV3TGluZXMuc3BsaWNlKGluc2VydExpbmVJbmRleCwgMCwgLi4uKHNob3VsZFByZXNlcnZlTGluZVByZWZpeCA/IHRleHRMaW5lcy5tYXAoKGxpbmUpID0+IGluZGVudChsaW5lLCBsaW5lUHJlZml4KSkgOiB0ZXh0TGluZXMpKTtcbiAgcmV0dXJuIG5ld0xpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc1N1aXRhYmxlQ29kZUJsb2NrKFxuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgc291cmNlOiBzdHJpbmcsXG4gIGlzSW5DYWxsb3V0OiBib29sZWFuXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29kZUJsb2NrTGFuZ3VhZ2UgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrTGFuZ3VhZ2UnXSA/PyAnJztcbiAgaWYgKGNvZGVCbG9ja0xhbmd1YWdlICE9PSBsYW5ndWFnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuXG4gIGlmIChpc0luQ2FsbG91dCAmJiAhbGluZVByZWZpeC5pbmNsdWRlcygnPiAnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvZGVCbG9ja0NvbnRlbnQgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQ29udGVudCddID8/ICcnO1xuICBjb25zdCBjbGVhbkNvZGVCbG9ja0NvbnRlbnQgPSBjb2RlQmxvY2tDb250ZW50LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobGluZVByZWZpeC5sZW5ndGgpKS5qb2luKCdcXG4nKTtcblxuICByZXR1cm4gY2xlYW5Db2RlQmxvY2tDb250ZW50ID09PSBz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
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgZW5zdXJlTGZFbmRpbmdzLFxuICBoYXNTaW5nbGVPY2N1cnJlbmNlLFxuICBpbmRlbnQsXG4gIGluZGV4T2ZJZ25vcmluZ0xpbmVFbmRpbmdzLFxuICB1bmluZGVudFxufSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQge1xuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0fSBvYmplY3QuXG4gICAqL1xuICBjdHg6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIEhUTUxFbGVtZW50fSByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgY29udGVudCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIG5vdGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNvdXJjZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBpbnNlcnRBZnRlckNvZGVCbG9ja30gLyB7QGxpbmsgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIG51bWJlciBvZiBsaW5lcyB0byBvZmZzZXQgdGhlIGluc2VydGlvbiBieS4gRGVmYXVsdCBpcyBgMGAuXG4gICAqL1xuICBsaW5lT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0ZXh0IHRvIGluc2VydCBhZnRlciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVtb3ZlQ29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGtlZXAgdGhlIGdhcCBhZnRlciByZW1vdmluZyB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkS2VlcEdhcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlcGxhY2VDb2RlQmxvY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgbmV3IGNvZGUgYmxvY2suXG4gICAqL1xuICBjb2RlQmxvY2tQcm92aWRlcjogVmFsdWVQcm92aWRlcjxzdHJpbmcsIFtzdHJpbmddPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBrZWVwIHRoZSBnYXAgd2hlbiB0aGUgbmV3IGNvZGUgYmxvY2sgaXMgZW1wdHkuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tNYXJrZG93bkluZm9PcHRpb25zKTogUHJvbWlzZTxDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBlbCwgc291cmNlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChjdHguc291cmNlUGF0aCk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgJHtjdHguc291cmNlUGF0aH0gbm90IGZvdW5kLmApO1xuICB9XG5cbiAgbGV0IGNvbnRlbnQ6IHN0cmluZztcbiAgaWYgKG9wdGlvbnMubm90ZUNvbnRlbnQpIHtcbiAgICBjb250ZW50ID0gb3B0aW9ucy5ub3RlQ29udGVudDtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBzYXZlTm90ZShhcHAsIHNvdXJjZUZpbGUpO1xuICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChzb3VyY2VGaWxlKTtcbiAgfVxuXG4gIGNvbnN0IGFwcHJveGltYXRlU2VjdGlvbkluZm8gPSBjdHguZ2V0U2VjdGlvbkluZm8oZWwpID8/IHtcbiAgICBsaW5lRW5kOiBjb250ZW50LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgIGxpbmVTdGFydDogMCxcbiAgICB0ZXh0OiBjb250ZW50XG4gIH07XG5cbiAgaWYgKCFoYXNTaW5nbGVPY2N1cnJlbmNlKGVuc3VyZUxmRW5kaW5ncyhjb250ZW50KSwgZW5zdXJlTGZFbmRpbmdzKGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCkpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWN0aW9uT2Zmc2V0ID0gaW5kZXhPZklnbm9yaW5nTGluZUVuZGluZ3MoY29udGVudCwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KTtcbiAgY29uc3QgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQgPSBjb250ZW50LnNsaWNlKDAsIHNlY3Rpb25PZmZzZXQpLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IGlzSW5DYWxsb3V0ID0gISFlbC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ2NhbGxvdXQtY29udGVudCcpO1xuXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbCk7XG4gIGNvbnN0IHNvdXJjZUxpbmVzID0gc291cmNlLnNwbGl0KCdcXG4nKTtcblxuICBjb25zdCB0ZXh0TGluZXMgPSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0ZXh0TGluZU9mZnNldHMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50LCBzZWN0aW9uT2Zmc2V0KTtcblxuICBsZXQgbGFzdFRleHRMaW5lT2Zmc2V0ID0gc2VjdGlvbk9mZnNldDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0TGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0ZXh0TGluZSA9IHRleHRMaW5lc1tpXTtcbiAgICBjb25zdCBsaW5lID0gdGV4dExpbmUgPz8gJyc7XG4gICAgY29uc3QgbGluZU9mZnNldCA9IGxhc3RUZXh0TGluZU9mZnNldCArIGxpbmUubGVuZ3RoICsgMTtcbiAgICB0ZXh0TGluZU9mZnNldHMuc2V0KGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgaSArIDEsIGxpbmVPZmZzZXQpO1xuICAgIGxhc3RUZXh0TGluZU9mZnNldCA9IGxpbmVPZmZzZXQ7XG4gIH1cblxuICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0TGluZXMgPSB0ZXh0TGluZXMubWFwKChsaW5lLCBpbmRleCkgPT5cbiAgICBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVTdGFydCA8PSBpbmRleCAmJiBpbmRleCA8PSBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLmxpbmVFbmQgPyBsaW5lIDogJydcbiAgKTtcbiAgY29uc3QgcG90ZW50aWFsQ29kZUJsb2NrVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcy5qb2luKCdcXG4nKTtcblxuICBjb25zdCBSRUdfRVhQID1cbiAgICAvKD88PV58XFxuKSg/PExpbmVQcmVmaXg+IHswLDN9KD86PiB7MSwzfSkqKSg/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPig/PENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj5bYH5dKSg/OlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+ezIsfSkpKD88Q29kZUJsb2NrTGFuZ3VhZ2U+XFxTKikoPzpbIFxcdF0oPzxDb2RlQmxvY2tBcmdzPi4qPykpPyg/Olxcbig/PENvZGVCbG9ja0NvbnRlbnQ+KD86XFxuP1xcazxMaW5lUHJlZml4Pi4qKSs/KSk/XFxuXFxrPExpbmVQcmVmaXg+KD88Q29kZUJsb2NrRW5kRGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPiopWyBcXHRdKig/PVxcbnwkKS9nO1xuXG4gIGxldCBtYXJrZG93bkluZm86IENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHBvdGVudGlhbENvZGVCbG9ja1RleHQubWF0Y2hBbGwoUkVHX0VYUCkpIHtcbiAgICBpZiAoIWlzU3VpdGFibGVDb2RlQmxvY2sobWF0Y2gsIGxhbmd1YWdlLCBzb3VyY2UsIGlzSW5DYWxsb3V0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duSW5mbykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbWFya2Rvd25JbmZvID0gY3JlYXRlTWFya2Rvd25JbmZvRnJvbU1hdGNoKHBvdGVudGlhbENvZGVCbG9ja1RleHQsIG1hdGNoLCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLCBzb3VyY2VMaW5lcywgdGV4dExpbmVPZmZzZXRzLCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCk7XG4gIH1cblxuICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG1hcmtkb3duSW5mbztcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYWZ0ZXIgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0QWZ0ZXJDb2RlQmxvY2sob3B0aW9uczogSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgY3R4LCBsaW5lT2Zmc2V0ID0gMCwgdGV4dCB9ID0gb3B0aW9ucztcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgY3R4LnNvdXJjZVBhdGgsIGFzeW5jIChfYWJvcnRTaWduYWwsIGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydExpbmVJbmRleCA9IG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQubGluZSArIGxpbmVPZmZzZXQgKyAxO1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYmVmb3JlIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEJlZm9yZUNvZGVCbG9jayhvcHRpb25zOiBJbnNlcnRDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGxpbmVPZmZzZXQgPSAwLCB0ZXh0IH0gPSBvcHRpb25zO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKF9hYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duSW5mbyA9IGF3YWl0IGdldENvZGVCbG9ja01hcmtkb3duSW5mbyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbm90ZUNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNvZGUgYmxvY2suJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zZXJ0TGluZUluZGV4ID0gbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLnN0YXJ0LmxpbmUgLSBsaW5lT2Zmc2V0O1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZUNvZGVCbG9jayhvcHRpb25zOiBSZW1vdmVDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJlcGxhY2VDb2RlQmxvY2soe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29kZUJsb2NrUHJvdmlkZXI6ICcnLFxuICAgIHNob3VsZEtlZXBHYXBXaGVuRW1wdHk6IG9wdGlvbnMuc2hvdWxkS2VlcEdhcCA/PyBmYWxzZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQ29kZUJsb2NrKG9wdGlvbnM6IFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjb2RlQmxvY2tQcm92aWRlciwgY3R4IH0gPSBvcHRpb25zO1xuICBvcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgb3B0aW9ucy5hYm9ydFNpZ25hbCk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGxldCBvbGRDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5vZmZzZXQsIG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcbiAgICBpZiAob3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG9sZENvZGVCbG9jayA9IHVuaW5kZW50KG9sZENvZGVCbG9jaywgbWFya2Rvd25JbmZvLmxpbmVQcmVmaXgpO1xuICAgIH1cblxuICAgIGxldCBuZXdDb2RlQmxvY2sgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29kZUJsb2NrUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb2RlQmxvY2spO1xuICAgIGlmICgobmV3Q29kZUJsb2NrIHx8IG9wdGlvbnMuc2hvdWxkS2VlcEdhcFdoZW5FbXB0eSkgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIGlmIChuZXdDb2RlQmxvY2sgfHwgb3B0aW9ucy5zaG91bGRLZWVwR2FwV2hlbkVtcHR5KSB7XG4gICAgICByZXR1cm4gYCR7dGV4dEJlZm9yZUNvZGVCbG9ja30ke25ld0NvZGVCbG9ja30ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIGlmICghdGV4dEJlZm9yZUNvZGVCbG9jayAmJiAhdGV4dEFmdGVyQ29kZUJsb2NrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWZvcmVDb2RlQmxvY2spIHtcbiAgICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrLnNsaWNlKDAsIC0xKX0ke3RleHRBZnRlckNvZGVCbG9ja31gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0ZXh0QmVmb3JlQ29kZUJsb2NrfSR7dGV4dEFmdGVyQ29kZUJsb2NrLnNsaWNlKDEpfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2goXG4gIHBvdGVudGlhbENvZGVCbG9ja1RleHQ6IHN0cmluZyxcbiAgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXksXG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uLFxuICBzb3VyY2VMaW5lczogc3RyaW5nW10sXG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPixcbiAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQ6IG51bWJlclxuKTogQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzLmxlbmd0aCArIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBhcmdzOiBjb2RlQmxvY2tBcmdzU3RyLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pLFxuICAgIGVuZERlbGltaXRlcjogY29kZUJsb2NrRW5kRGVsaW1pdGVyLFxuICAgIGxhbmd1YWdlLFxuICAgIGxpbmVQcmVmaXgsXG4gICAgcG9zaXRpb25Jbk5vdGU6IHtcbiAgICAgIGVuZDoge1xuICAgICAgICBjb2w6ICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUgKyAxKSA/PyAwKSAtICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUpID8/IDApIC0gMSxcbiAgICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgICAgb2Zmc2V0OiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAxXG4gICAgICB9LFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICAgIG9mZnNldDogdGV4dExpbmVPZmZzZXRzLmdldChzdGFydExpbmUpID8/IDBcbiAgICAgIH1cbiAgICB9LFxuICAgIHJhd0FyZ3NTdHI6IGNvZGVCbG9ja0FyZ3NTdHIsXG4gICAgc2VjdGlvbkluZm86IHtcbiAgICAgIGxpbmVFbmQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQgKyBzb3VyY2VMaW5lcy5sZW5ndGggKyAxLFxuICAgICAgbGluZVN0YXJ0OiBwcmV2aW91c1RleHRMaW5lc0NvdW50LFxuICAgICAgdGV4dDogYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0XG4gICAgfSxcbiAgICBzdGFydERlbGltaXRlcjogY29kZUJsb2NrU3RhcnREZWxpbWl0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBCTE9DS19MQU5HVUFHRV9QUkVGSVggPSAnYmxvY2stbGFuZ3VhZ2UtJztcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwuY2xhc3NMaXN0KS5maW5kKChjbHMpID0+IGNscy5zdGFydHNXaXRoKEJMT0NLX0xBTkdVQUdFX1BSRUZJWCkpPy5zbGljZShCTE9DS19MQU5HVUFHRV9QUkVGSVgubGVuZ3RoKSA/PyAnJztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0VGV4dChjb250ZW50OiBzdHJpbmcsIGluc2VydExpbmVJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IGxpbmVzLnNsaWNlKCk7XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPCAwKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gMDtcbiAgfVxuICBpZiAoaW5zZXJ0TGluZUluZGV4ID4gbGluZXMubGVuZ3RoKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gbGluZXMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3QgUFJFRklYX0xJTkVfUkVHX0VYUCA9IC9eIHswLDN9KD86PiB7MSwzfSkqL2c7XG4gIGNvbnN0IG1hdGNoID0gKGxpbmVzW2luc2VydExpbmVJbmRleF0gPz8gJycpLm1hdGNoKFBSRUZJWF9MSU5FX1JFR19FWFApO1xuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2g/LlswXSA/PyAnJztcbiAgbmV3TGluZXMuc3BsaWNlKGluc2VydExpbmVJbmRleCwgMCwgLi4uKHNob3VsZFByZXNlcnZlTGluZVByZWZpeCA/IHRleHRMaW5lcy5tYXAoKGxpbmUpID0+IGluZGVudChsaW5lLCBsaW5lUHJlZml4KSkgOiB0ZXh0TGluZXMpKTtcbiAgcmV0dXJuIG5ld0xpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc1N1aXRhYmxlQ29kZUJsb2NrKFxuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgc291cmNlOiBzdHJpbmcsXG4gIGlzSW5DYWxsb3V0OiBib29sZWFuXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29kZUJsb2NrTGFuZ3VhZ2UgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrTGFuZ3VhZ2UnXSA/PyAnJztcbiAgaWYgKGNvZGVCbG9ja0xhbmd1YWdlICE9PSBsYW5ndWFnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuXG4gIGlmIChpc0luQ2FsbG91dCAmJiAhbGluZVByZWZpeC5pbmNsdWRlcygnPiAnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvZGVCbG9ja0NvbnRlbnQgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQ29udGVudCddID8/ICcnO1xuICBjb25zdCBjbGVhbkNvZGVCbG9ja0NvbnRlbnQgPSBjb2RlQmxvY2tDb250ZW50LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobGluZVByZWZpeC5sZW5ndGgpKS5qb2luKCdcXG4nKTtcblxuICByZXR1cm4gY2xlYW5Db2RlQmxvY2tDb250ZW50ID09PSBzb3VyY2U7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZUEsU0FBUyxzQkFBc0I7QUFDL0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQTZGUCxlQUFzQix5QkFBeUIsU0FBd0Y7QUFDckksUUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLE9BQU8sSUFBSTtBQUVqQyxRQUFNLGFBQWEsSUFBSSxNQUFNLGNBQWMsSUFBSSxVQUFVO0FBQ3pELE1BQUksQ0FBQyxZQUFZO0FBQ2YsVUFBTSxJQUFJLE1BQU0sZUFBZSxJQUFJLFVBQVUsYUFBYTtBQUFBLEVBQzVEO0FBRUEsTUFBSTtBQUNKLE1BQUksUUFBUSxhQUFhO0FBQ3ZCLGNBQVUsUUFBUTtBQUFBLEVBQ3BCLE9BQU87QUFDTCxVQUFNLFNBQVMsS0FBSyxVQUFVO0FBQzlCLGNBQVUsTUFBTSxJQUFJLE1BQU0sS0FBSyxVQUFVO0FBQUEsRUFDM0M7QUFFQSxRQUFNLHlCQUF5QixJQUFJLGVBQWUsRUFBRSxLQUFLO0FBQUEsSUFDdkQsU0FBUyxRQUFRLE1BQU0sSUFBSSxFQUFFLFNBQVM7QUFBQSxJQUN0QyxXQUFXO0FBQUEsSUFDWCxNQUFNO0FBQUEsRUFDUjtBQUVBLE1BQUksQ0FBQyxvQkFBb0IsZ0JBQWdCLE9BQU8sR0FBRyxnQkFBZ0IsdUJBQXVCLElBQUksQ0FBQyxHQUFHO0FBQ2hHLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxnQkFBZ0IsMkJBQTJCLFNBQVMsdUJBQXVCLElBQUk7QUFDckYsUUFBTSwwQkFBMEIsUUFBUSxNQUFNLEdBQUcsYUFBYSxFQUFFLE1BQU0sSUFBSSxFQUFFLFNB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
|
|
@@ -10,7 +10,10 @@ import {
|
|
|
10
10
|
parentFolderPath,
|
|
11
11
|
ViewType
|
|
12
12
|
} from "obsidian-typings/implementations";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
requestAnimationFrameAsync,
|
|
15
|
+
retryWithTimeout
|
|
16
|
+
} from "../Async.mjs";
|
|
14
17
|
import { noopAsync } from "../Function.mjs";
|
|
15
18
|
import {
|
|
16
19
|
basename,
|
|
@@ -224,6 +227,7 @@ async function saveNote(app, pathOrFile) {
|
|
|
224
227
|
if (!isMarkdownFile(app, pathOrFile)) {
|
|
225
228
|
return;
|
|
226
229
|
}
|
|
230
|
+
await requestAnimationFrameAsync();
|
|
227
231
|
const path = getPath(app, pathOrFile);
|
|
228
232
|
for (const leaf of app.workspace.getLeavesOfType(ViewType.Markdown)) {
|
|
229
233
|
if (leaf.view instanceof MarkdownView && leaf.view.file?.path === path && leaf.view.dirty) {
|
|
@@ -264,4 +268,4 @@ export {
|
|
|
264
268
|
renameSafe,
|
|
265
269
|
saveNote
|
|
266
270
|
};
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBMaXN0ZWRGaWxlcyxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBNYXJrZG93blZpZXcgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBwYXJlbnRGb2xkZXJQYXRoLFxuICBWaWV3VHlwZVxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBpc0ZpbGUsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gICAqL1xuICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGNvcGllZCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVNhZmUoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3UGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNvcHkoZmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvbGRlciBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoKTtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUoZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2FmZSByZW5hbWUgcGF0aCBmb3IgYSBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIHJlbmFtZS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIHJlbmFtZSB0aGUgZmlsZSB0by5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHJlbmFtZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNhZmVSZW5hbWVQYXRoKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBvbGRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZFBhdGhPckZpbGUpO1xuXG4gIGlmIChhcHAudmF1bHQuYWRhcHRlci5pbnNlbnNpdGl2ZSkge1xuICAgIGxldCBmb2xkZXJQYXRoID0gZGlybmFtZShuZXdQYXRoKTtcbiAgICBsZXQgbm9uRXhpc3RpbmdQYXRoID0gYmFzZW5hbWUobmV3UGF0aCk7XG4gICAgbGV0IGZvbGRlcjogbnVsbCB8IFRGb2xkZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgZm9sZGVyUGF0aCwgdHJ1ZSk7XG4gICAgICBpZiAoZm9sZGVyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbm9uRXhpc3RpbmdQYXRoID0gam9pbihiYXNlbmFtZShmb2xkZXJQYXRoKSwgbm9uRXhpc3RpbmdQYXRoKTtcbiAgICAgIGZvbGRlclBhdGggPSBkaXJuYW1lKGZvbGRlclBhdGgpO1xuICAgIH1cbiAgICBuZXdQYXRoID0gam9pbihmb2xkZXIuZ2V0UGFyZW50UHJlZml4KCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gIH1cblxuICBpZiAob2xkUGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gbmV3UGF0aDtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoKGFwcCwgbmV3UGF0aCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZm9sZGVyIGlzIGVtcHR5LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0VtcHR5Rm9sZGVyKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBsaXN0ZWRGaWxlcyA9IGF3YWl0IGxpc3RTYWZlKGFwcCwgZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcikpO1xuICByZXR1cm4gbGlzdGVkRmlsZXMuZmlsZXMubGVuZ3RoID09PSAwICYmIGxpc3RlZEZpbGVzLmZvbGRlcnMubGVuZ3RoID09PSAwO1xufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBsaXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIHtAbGluayBMaXN0ZWRGaWxlc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTYWZlKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8TGlzdGVkRmlsZXM+IHtcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpO1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuXG4gIGlmICgoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuc3RhdChwYXRoKSk/LnR5cGUgIT09ICdmb2xkZXInKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYSBmaWxlIHdpdGggcmV0cnkgbG9naWMsIHVwZGF0aW5nIGl0cyBjb250ZW50IGJhc2VkIG9uIGEgcHJvdmlkZWQgdmFsdWUgb3IgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSwgdHlwaWNhbGx5IHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgdmF1bHQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gYmUgcHJvY2Vzc2VkLiBJdCBjYW4gYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIG9yIGEgZmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gbmV3Q29udGVudFByb3ZpZGVyIC0gQSB2YWx1ZSBwcm92aWRlciB0aGF0IHJldHVybnMgdGhlIG5ldyBjb250ZW50IGJhc2VkIG9uIHRoZSBvbGQgY29udGVudCBvZiB0aGUgZmlsZS5cbiAqIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIG9sZCBjb250ZW50IGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSBuZXcgY29udGVudC5cbiAqIElmIGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBpdCBzaG91bGQgcmV0dXJuIGBudWxsYCBpZiB0aGUgcHJvY2VzcyBzaG91bGQgYmUgcmV0cmllZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2VzcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBbc3RyaW5nXT4sXG4gIG9wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge31cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlMgPSB7XG4gICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IHRydWVcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKGFib3J0U2lnbmFsKSA9PiB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBpZiAob2xkQ29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb250ZW50KTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgaWYgKG5ld0NvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgaXNTdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBkb2VzRmlsZUV4aXN0ID0gYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoZmlsZSkgPT4ge1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5wcm9jZXNzKGZpbGUsIChjb250ZW50KSA9PiB7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IGhhcyBjaGFuZ2VkIHNpbmNlIGl0IHdhcyByZWFkLiBSZXRyeWluZy4uLicsIHtcbiAgICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IG9sZENvbnRlbnQsXG4gICAgICAgICAgICBwYXRoOiBmaWxlLnBhdGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpc1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgICAgfSk7XG5cbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRvZXNGaWxlRXhpc3QpIHtcbiAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBpc1N1Y2Nlc3M7XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVNaXNzaW5nRmlsZSgpOiBib29sZWFuIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5zaG91bGRGYWlsT25NaXNzaW5nRmlsZSkge1xuICAgICAgICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJyR7cGF0aH0nIG5vdCBmb3VuZGApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LCBmdWxsT3B0aW9ucyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGNvbnRlbnQgb2YgYSBmaWxlIHNhZmVseSBmcm9tIHRoZSB2YXVsdC5cbiAqXG4gKiBJdCBjb3ZlcnMgdGhlIGNhc2Ugd2hlbiB0aGUgZmlsZSB3YXMgcmVtb3ZlZCBkdXJpbmcgdGhlIHJlYWRpbmcuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZWFkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBvciBgbnVsbGAgaWYgdGhlIGZpbGUgaXMgbWlzc2luZyBvciBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgbGV0IGNvbnRlbnQ6IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuICBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogUmVuYW1lcyBhIGZpbGUgc2FmZWx5IGluIHRoZSB2YXVsdC5cbiAqIElmIHRoZSBuZXcgcGF0aCBhbHJlYWR5IGV4aXN0cywgdGhlIGZpbGUgd2lsbCBiZSByZW5hbWVkIHRvIGFuIGF2YWlsYWJsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIHJlbmFtZS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIHJlbmFtZSB0aGUgZmlsZSB0by5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuYW1lU2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb2xkRmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSwgbmV3UGF0aCk7XG5cbiAgaWYgKG9sZEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkRmlsZS5wYXRoICE9PSBuZXdQYXRoKSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld0F2YWlsYWJsZVBhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkRmlsZS5wYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIG5vdGUgdG8gYmUgc2F2ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5vdGUgaXMgc2F2ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlTm90ZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWlzTWFya2Rvd25GaWxlKGFwcCwgcGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoICYmIGxlYWYudmlldy5kaXJ0eSkge1xuICAgICAgYXdhaXQgbGVhZi52aWV3LnNhdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZpbGVBY3Rpb24oZmlsZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWFBLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBU1AsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyxpQkFBaUI7QUFDMUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBb0JQLGVBQXNCLFNBQVMsS0FBVSxlQUEyQixTQUFrQztBQUNwRyxRQUFNLE9BQU8sUUFBUSxLQUFLLGFBQWE7QUFFdkMsUUFBTSxnQkFBZ0IsaUJBQWlCLE9BQU87QUFDOUMsUUFBTSxpQkFBaUIsS0FBSyxhQUFhO0FBRXpDLFFBQU0sbUJBQW1CLGlCQUFpQixLQUFLLE9BQU87QUFFdEQsTUFBSTtBQUNGLFVBQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxnQkFBZ0I7QUFBQSxFQUM3QyxTQUFTLEdBQUc7QUFDVixRQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sT0FBTyxnQkFBZ0IsR0FBRztBQUM3QyxZQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFVQSxlQUFzQixpQkFBaUIsS0FBVSxNQUFnQztBQUMvRSxNQUFJLE1BQU0sSUFBSSxNQUFNLFFBQVEsT0FBTyxJQUFJLEdBQUc7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0YsVUFBTSxJQUFJLE1BQU0sYUFBYSxJQUFJO0FB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
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBMaXN0ZWRGaWxlcyxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBNYXJrZG93blZpZXcgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBwYXJlbnRGb2xkZXJQYXRoLFxuICBWaWV3VHlwZVxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYyxcbiAgcmV0cnlXaXRoVGltZW91dFxufSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pblxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9jZXNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzT3B0aW9ucyBleHRlbmRzIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBmdW5jdGlvbiB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAgICovXG4gIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gY29weS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIGNvcHkgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgY29waWVkIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBjb25zdCBuZXdGb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChuZXdQYXRoKTtcbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0ZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IG5ld0F2YWlsYWJsZVBhdGggPSBnZXRBdmFpbGFibGVQYXRoKGFwcCwgbmV3UGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY29weShmaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhuZXdBdmFpbGFibGVQYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG5cbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIHBhdGgpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmb2xkZXIuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmb2xkZXIpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dCA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dCkpLCBleHQuc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgaW4gdGhlIHZhdWx0IHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RlRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBbGxMb2FkZWRGaWxlcygpLmZpbHRlcigoZmlsZSkgPT4gaXNGaWxlKGZpbGUpICYmIGlzTm90ZShhcHAsIGZpbGUpKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKSBhcyBURmlsZVtdO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIHJlbmFtZSBwYXRoIGZvciBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgVGhlIHNhZmUgcmVuYW1lIHBhdGggZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FmZVJlbmFtZVBhdGgoYXBwOiBBcHAsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG9sZFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlKSB7XG4gICAgbGV0IGZvbGRlclBhdGggPSBkaXJuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBub25FeGlzdGluZ1BhdGggPSBiYXNlbmFtZShuZXdQYXRoKTtcbiAgICBsZXQgZm9sZGVyOiBudWxsIHwgVEZvbGRlcjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBmb2xkZXJQYXRoLCB0cnVlKTtcbiAgICAgIGlmIChmb2xkZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBub25FeGlzdGluZ1BhdGggPSBqb2luKGJhc2VuYW1lKGZvbGRlclBhdGgpLCBub25FeGlzdGluZ1BhdGgpO1xuICAgICAgZm9sZGVyUGF0aCA9IGRpcm5hbWUoZm9sZGVyUGF0aCk7XG4gICAgfVxuICAgIG5ld1BhdGggPSBqb2luKGZvbGRlci5nZXRQYXJlbnRQcmVmaXgoKSwgbm9uRXhpc3RpbmdQYXRoKTtcbiAgfVxuXG4gIGlmIChvbGRQYXRoLnRvTG93ZXJDYXNlKCkgPT09IG5ld1BhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmb2xkZXIgaXMgZW1wdHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciBpcyBlbXB0eS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzRW1wdHlGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGxpc3RlZEZpbGVzID0gYXdhaXQgbGlzdFNhZmUoYXBwLCBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKSk7XG4gIHJldHVybiBsaXN0ZWRGaWxlcy5maWxlcy5sZW5ndGggPT09IDAgJiYgbGlzdGVkRmlsZXMuZm9sZGVycy5sZW5ndGggPT09IDA7XG59XG5cbi8qKlxuICogU2FmZWx5IGxpc3RzIHRoZSBmaWxlcyBhbmQgZm9sZGVycyBhdCB0aGUgc3BlY2lmaWVkIHBhdGggaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGxpc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIExpc3RlZEZpbGVzfSBvYmplY3QgY29udGFpbmluZyB0aGUgbGlzdGVkIGZpbGVzIGFuZCBmb2xkZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNhZmUoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG5cbiAgaWYgKChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5zdGF0KHBhdGgpKT8udHlwZSAhPT0gJ2ZvbGRlcicpIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5saXN0KHBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3JldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgbmV3Q29udGVudFByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPG51bGwgfCBzdHJpbmcsIFtzdHJpbmddPixcbiAgb3B0aW9uczogUHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUyA9IHtcbiAgICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZTogdHJ1ZVxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dChhc3luYyAoYWJvcnRTaWduYWwpID0+IHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgY29uc3Qgb2xkQ29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGlmIChvbGRDb250ZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gaGFuZGxlTWlzc2luZ0ZpbGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKG5ld0NvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwsIG9sZENvbnRlbnQpO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpc1N1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uJywge1xuICAgICAgICAgICAgYWN0dWFsQ29udGVudDogY29udGVudCxcbiAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogb2xkQ29udGVudCxcbiAgICAgICAgICAgIHBhdGg6IGZpbGUucGF0aFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0NvbnRlbnQ7XG4gICAgICB9KTtcblxuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICB9KTtcblxuICAgIGlmICghZG9lc0ZpbGVFeGlzdCkge1xuICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzU3VjY2VzcztcblxuICAgIGZ1bmN0aW9uIGhhbmRsZU1pc3NpbmdGaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZEZhaWxPbk1pc3NpbmdGaWxlKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAnJHtwYXRofScgbm90IGZvdW5kYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIGZ1bGxPcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEl0IGNvdmVycyB0aGUgY2FzZSB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyB0aGUgcmVhZGluZy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gIH0pO1xuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBSZW5hbWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICogSWYgdGhlIG5ldyBwYXRoIGFscmVhZHkgZXhpc3RzLCB0aGUgZmlsZSB3aWxsIGJlIHJlbmFtZWQgdG8gYW4gYXZhaWxhYmxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvbGRGaWxlID0gZ2V0RmlsZShhcHAsIG9sZFBhdGhPckZpbGUsIGZhbHNlLCB0cnVlKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0U2FmZVJlbmFtZVBhdGgoYXBwLCBvbGRQYXRoT3JGaWxlLCBuZXdQYXRoKTtcblxuICBpZiAob2xkRmlsZS5wYXRoLnRvTG93ZXJDYXNlKCkgPT09IG5ld0F2YWlsYWJsZVBhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgIGlmIChvbGRGaWxlLnBhdGggIT09IG5ld1BhdGgpIHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRGaWxlLnBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIFNhdmVzIHRoZSBzcGVjaWZpZWQgbm90ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgbm90ZSB0byBiZSBzYXZlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZmlsZUFjdGlvbjogKGZpbGU6IFRGaWxlKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBYUEsU0FBUyxvQkFBb0I7QUFDN0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFTUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsaUJBQWlCO0FBQzFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQW9CUCxlQUFzQixTQUFTLEtBQVUsZUFBMkIsU0FBa0M7QUFDcEcsUUFBTSxPQUFPLFFBQVEsS0FBSyxhQUFhO0FBRXZDLFFBQU0sZ0JBQWdCLGlCQUFpQixPQUFPO0FBQzlDLFFBQU0saUJBQWlCLEtBQUssYUFBYTtBQUV6QyxRQUFNLG1CQUFtQixpQkFBaUIsS0FBSyxPQUFPO0FBRXRELE1BQUk7QUFDRixVQUFNLElBQUksTUFBTSxLQUFLLE1BQU0sZ0JBQWdCO0FBQUEsRUFDN0MsU0FBUyxHQUFHO0FBQ1YsUUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLE9BQU8sZ0JBQWdCLEdBQUc7QUFDN0MsWUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBVUEsZUFBc0IsaUJBQWlCLEtBQVUsTUFBZ0M7QUFDL0UsTUFBSSxNQUFNLElB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
|