obsidian-dev-utils 30.4.0 → 30.4.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 +4 -0
- package/dist/lib/cjs/Async.cjs +6 -6
- package/dist/lib/cjs/Debug.cjs +2 -2
- package/dist/lib/cjs/HTMLElement.cjs +2 -2
- package/dist/lib/cjs/Library.cjs +2 -2
- package/dist/lib/cjs/ObjectUtils.cjs +6 -6
- package/dist/lib/cjs/Path.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/Exec.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +3 -3
- package/dist/lib/cjs/ScriptUtils/version.cjs +2 -2
- package/dist/lib/cjs/Transformers/Transformer.cjs +2 -2
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +9 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +2 -2
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +3 -3
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +2 -2
- package/dist/lib/cjs/obsidian/Dataview.cjs +7 -7
- package/dist/lib/cjs/obsidian/DataviewLink.cjs +2 -2
- package/dist/lib/cjs/obsidian/FileChange.cjs +2 -2
- package/dist/lib/cjs/obsidian/Loop.cjs +2 -2
- package/dist/lib/cjs/obsidian/ResourceUrl.cjs +2 -2
- package/dist/lib/esm/Async.mjs +6 -6
- package/dist/lib/esm/Debug.mjs +2 -2
- package/dist/lib/esm/HTMLElement.mjs +2 -2
- package/dist/lib/esm/Library.mjs +2 -2
- package/dist/lib/esm/ObjectUtils.mjs +6 -6
- package/dist/lib/esm/Path.mjs +2 -2
- package/dist/lib/esm/ScriptUtils/Exec.mjs +2 -2
- package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +3 -3
- package/dist/lib/esm/ScriptUtils/version.mjs +2 -2
- package/dist/lib/esm/Transformers/Transformer.mjs +2 -2
- package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.mjs +9 -1
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +2 -2
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +3 -3
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.mjs +2 -2
- package/dist/lib/esm/obsidian/Dataview.mjs +7 -7
- package/dist/lib/esm/obsidian/DataviewLink.mjs +2 -2
- package/dist/lib/esm/obsidian/FileChange.mjs +2 -2
- package/dist/lib/esm/obsidian/Loop.mjs +2 -2
- package/dist/lib/esm/obsidian/ResourceUrl.mjs +2 -2
- package/dist/styles.css +6 -1
- package/package.json +1 -1
package/dist/lib/esm/Library.mjs
CHANGED
|
@@ -5,9 +5,9 @@ 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:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
|
|
7
7
|
|
|
8
|
-
const LIBRARY_VERSION = "30.4.
|
|
8
|
+
const LIBRARY_VERSION = "30.4.1";
|
|
9
9
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
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.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;;AAGF;EACE;EACA;;;ACnCJ;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.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";
|
|
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 {
|
|
12
12
|
LIBRARY_NAME,
|
|
13
13
|
LIBRARY_STYLES,
|
|
@@ -225,11 +225,11 @@ function applySubstitutions(options) {
|
|
|
225
225
|
case "CircularReference" /* CircularReference */:
|
|
226
226
|
return options.substitutions.circularReference;
|
|
227
227
|
case "Function" /* Function */:
|
|
228
|
-
return options.functionTexts[options.index] ?? throwExpression(new Error(`Function with index ${options.index
|
|
228
|
+
return options.functionTexts[options.index] ?? throwExpression(new Error(`Function with index ${String(options.index)} not found`));
|
|
229
229
|
case "MaxDepthLimitReached" /* MaxDepthLimitReached */:
|
|
230
230
|
return options.substitutions.maxDepthLimitReached;
|
|
231
231
|
case "MaxDepthLimitReachedArray" /* MaxDepthLimitReachedArray */:
|
|
232
|
-
return `Array(${options.index
|
|
232
|
+
return `Array(${String(options.index)})`;
|
|
233
233
|
case "ToJSONFailed" /* ToJSONFailed */:
|
|
234
234
|
return options.substitutions.toJSONFailed;
|
|
235
235
|
case "Undefined" /* Undefined */:
|
|
@@ -299,7 +299,7 @@ function handleArray(value, depth, canUseToJSON, fullOptions, functionTexts, use
|
|
|
299
299
|
if (depth > fullOptions.maxDepth) {
|
|
300
300
|
return makePlaceholder("MaxDepthLimitReachedArray" /* MaxDepthLimitReachedArray */, value.length);
|
|
301
301
|
}
|
|
302
|
-
return value.map((item, index) => toPlainObject(item, index
|
|
302
|
+
return value.map((item, index) => toPlainObject(item, String(index), depth + 1, canUseToJSON, fullOptions, functionTexts, usedObjects));
|
|
303
303
|
}
|
|
304
304
|
function handleCircularReference(value, key, fullOptions) {
|
|
305
305
|
if (fullOptions.shouldHandleCircularReferences) {
|
|
@@ -315,7 +315,7 @@ function handleFunction(value, functionTexts, fullOptions) {
|
|
|
315
315
|
return void 0;
|
|
316
316
|
}
|
|
317
317
|
const index = functionTexts.length;
|
|
318
|
-
const functionText = fullOptions.functionHandlingMode === "full" /* Full */ ? value
|
|
318
|
+
const functionText = fullOptions.functionHandlingMode === "full" /* Full */ ? String(value) : `function ${value.name || "anonymous"}() { /* ... */ }`;
|
|
319
319
|
functionTexts.push(functionText);
|
|
320
320
|
return makePlaceholder("Function" /* Function */, index);
|
|
321
321
|
}
|
|
@@ -357,7 +357,7 @@ function makeObjectTokenSubstitution(key) {
|
|
|
357
357
|
return `{ "[[${key}]]": null }`;
|
|
358
358
|
}
|
|
359
359
|
function makePlaceholder(key, index) {
|
|
360
|
-
return `[[${key}${index
|
|
360
|
+
return `[[${key}${index ? String(index) : ""}]]`;
|
|
361
361
|
}
|
|
362
362
|
function toPlainObject(value, key, depth, canUseToJSON, fullOptions, functionTexts, usedObjects) {
|
|
363
363
|
if (value === void 0) {
|
|
@@ -403,4 +403,4 @@ export {
|
|
|
403
403
|
setNestedPropertyValue,
|
|
404
404
|
toJson
|
|
405
405
|
};
|
|
406
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL09iamVjdFV0aWxzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uc3RydWN0b3IsXG4gIFVuZGVmaW5lZE9uUGFydGlhbERlZXBcbn0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUge1xuICBNYXliZVJldHVybixcbiAgU3RyaW5nS2V5c1xufSBmcm9tICcuL1R5cGUudHMnO1xuXG5pbXBvcnQge1xuICBlcnJvclRvU3RyaW5nLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dC5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25IYW5kbGluZ01vZGUge1xuICAvKipcbiAgICogRXhjbHVkZXMgZnVuY3Rpb25zIGZyb20gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIHRoZSBmdWxsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRnVsbCA9ICdmdWxsJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIG9ubHkgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgTmFtZU9ubHkgPSAnbmFtZU9ubHknXG59XG5cbmVudW0gVG9rZW5TdWJzdGl0dXRpb25LZXkge1xuICBDaXJjdWxhclJlZmVyZW5jZSA9ICdDaXJjdWxhclJlZmVyZW5jZScsXG4gIEZ1bmN0aW9uID0gJ0Z1bmN0aW9uJyxcbiAgTWF4RGVwdGhMaW1pdFJlYWNoZWQgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWQnLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5ID0gJ01heERlcHRoTGltaXRSZWFjaGVkQXJyYXknLFxuICBUb0pTT05GYWlsZWQgPSAnVG9KU09ORmFpbGVkJyxcbiAgVW5kZWZpbmVkID0gJ1VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0IChkZWZhdWx0OiBgZXhjbHVkZWApLlxuICAgKi9cbiAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIG5lc3RlZCBvYmplY3RzIHRvIGluY2x1ZGUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBVc2UgYC0xYCBmb3Igbm8gbGltaXQuXG4gICAqIERlZmF1bHRzIHRvIGAtMWAuXG4gICAqL1xuICBtYXhEZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gY2F0Y2ggZXJyb3JzIGluIGB0b0pTT04oKWAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGEgcGxhY2Vob2xkZXIuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRDYXRjaFRvSlNPTkVycm9yczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlRXJyb3JzOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gc29ydCB0aGUga2V5cyBvZiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRTb3J0S2V5czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIEpTT04gb3V0cHV0LiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBzcGFjZXMgb3IgYSBzdHJpbmcuIERlZmF1bHRzIHRvIGAyYC5cbiAgICovXG4gIHNwYWNlOiBudW1iZXIgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbnMgdG8gdXNlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIHRva2VuU3Vic3RpdHV0aW9uczogUGFydGlhbDxUb2tlblN1YnN0aXR1dGlvbnM+O1xufVxuXG5pbnRlcmZhY2UgQXBwbHlTdWJzdGl0dXRpb25zT3B0aW9ucyB7XG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdO1xuICBpbmRleDogbnVtYmVyO1xuICBrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5O1xuICBzdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnM7XG59XG5cbmludGVyZmFjZSBFcXVhbGl0eUNvbXBhcmVyRW50cnk8VD4ge1xuICBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD47XG4gIGVxdWFsaXR5Q29tcGFyZXI6IChhOiBULCBiOiBUKSA9PiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSlNPTlNlcmlhbGl6YWJsZSB7XG4gIHRvSlNPTiguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgTW9kdWxlV2l0aERlZmF1bHRFeHBvcnQ8VD4ge1xuICBkZWZhdWx0OiBUO1xufVxuXG5pbnRlcmZhY2UgVG9rZW5TdWJzdGl0dXRpb25zIHtcbiAgY2lyY3VsYXJSZWZlcmVuY2U6IHN0cmluZztcbiAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IHN0cmluZztcbiAgdG9KU09ORmFpbGVkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEtFWV9TRVBBUkFUT1IgPSAnLic7XG5jb25zdCBlcXVhbGl0eUNvbXBhcmVyRW50cmllcyA9IGNyZWF0ZUVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKFxuICBbXG4gICAgeyBjb25zdHJ1Y3RvcjogQXJyYXlCdWZmZXIsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbEFycmF5QnVmZmVyIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogRGF0ZSwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsRGF0ZSB9LFxuICAgIHsgY29uc3RydWN0b3I6IFJlZ0V4cCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsUmVnRXhwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogTWFwLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxNYXAgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBTZXQsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFNldCB9XG4gIF0gYXMgY29uc3Rcbik7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVT4odGFyZ2V0OiBULCBzb3VyY2U6IFUpOiBUICYgVTtcblxuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTMgLSBUaGUgdGhpcmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWLCBXPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYsIHNvdXJjZTM6IFcpOiBUICYgVSAmIFYgJiBXO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZXMgLSBUaGUgc291cmNlIG9iamVjdHMgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgcmV0dXJuIF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuLyoqXG4gKiBDbG9uZXMgYW4gb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIG9yaWdpbmFsIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSkgYXMgVDtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYUNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgY29uc3QgYkNvbnN0cnVjdG9yID0gYi5jb25zdHJ1Y3RvcjtcblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBiQ29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBkZWVwRXF1YWxUeXBlZChhLCBiKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBnZXRBbGxLZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IGdldEFsbEtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGEgYXMgR2VuZXJpY09iamVjdDtcbiAgY29uc3QgYlJlY29yZCA9IGIgYXMgR2VuZXJpY09iamVjdDtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lcyAtIFRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIHdlcmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lczogKGtleW9mIFQpW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQsIHByb3BlcnR5TmFtZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICBpZiAoIU9iamVjdC5oYXNPd24ob2JqLCBwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgZGVsZXRlIG9ialtwcm9wZXJ0eU5hbWVdO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbSBhIG1vZHVsZS5cbiAqXG4gKiBVc2VmdWwgdG8gaGFuZGxlIGluY29ycmVjdCBkZWZhdWx0IGV4cG9ydCBpbnRlcm9wIGJldHdlZW4gRVNNIGFuZCBDSlMuXG4gKlxuICogQHBhcmFtIG1vZHVsZSAtIFRoZSBtb2R1bGUgdG8gZXh0cmFjdCB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcDxUPihtb2R1bGU6IE1vZHVsZVdpdGhEZWZhdWx0RXhwb3J0PFQ+KTogVCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAnb2JqZWN0JyB8fCBtb2R1bGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgaWYgKCdkZWZhdWx0JyBpbiBtb2R1bGUpIHtcbiAgICByZXR1cm4gbW9kdWxlLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGVudHJpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgZW50cmllcyBvZi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBlbnRyaWVzIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxFbnRyaWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFtTdHJpbmdLZXlzPFQ+LCBUW1N0cmluZ0tleXM8VD5dXVtdIHtcbiAgcmV0dXJuIGdldEFsbEtleXMob2JqKS5tYXAoKGtleSkgPT4gW2tleSwgb2JqW2tleV1dKTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIGFuIG9iamVjdC5cbiAqIEluY2x1ZGVzIGZpZWxkcyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGtleXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwga2V5cyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsS2V5czxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBTdHJpbmdLZXlzPFQ+W10ge1xuICBjb25zdCBrZXlzOiBTdHJpbmdLZXlzPFQ+W10gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6IG51bGwgfCBvYmplY3QgPSBvYmo7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyZW50KSBhcyBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURlc2NyaXB0b3I+O1xuICAgIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNHZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBjb25zdCBoYXNTZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5zZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoaGFzR2V0dGVyIHx8IGhhc1NldHRlcikge1xuICAgICAgICBpZiAoaGFzR2V0dGVyICYmIGhhc1NldHRlcikge1xuICAgICAgICAgIGtleXMucHVzaChrZXkgYXMgU3RyaW5nS2V5czxUPik7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUgJiYgZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudCkgYXMgbnVsbCB8IG9iamVjdDtcbiAgfVxuICByZXR1cm4ga2V5cy5zb3J0KCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBsZXQgbm9kZTogR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoS0VZX1NFUEFSQVRPUik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBpbnN0YW5jZSAtIFRoZSBvYmplY3QgaW5zdGFuY2UgdG8gcmV0cmlldmUgdGhlIHByb3RvdHlwZSBvZi5cbiAqIEByZXR1cm5zIFRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mPFQ+KGluc3RhbmNlOiBUKTogVCB7XG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluc3RhbmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIFQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkgb2YgYSBnaXZlbiB0eXBlIGBUYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYXMgYSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lb2Y8VD4obmFtZTogRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIGFsbG93IGB1bmRlZmluZWRgIGFzc2lnbm1lbnQgaW4gc3RyaWN0IG1vZGUuXG4gKlxuICogVGhpcyB1dGlsaXR5IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AgVHlwZVNjcmlwdCBmbGFnLFxuICogd2hpY2ggcHJvaGliaXRzIGRpcmVjdGx5IGFzc2lnbmluZyBgdW5kZWZpbmVkYCB0byBvcHRpb25hbCBwcm9wZXJ0aWVzIHdoZW4gdGhlIHR5cGVcbiAqIGV4cGxpY2l0bHkgb21pdHMgYHVuZGVmaW5lZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzOiB0cnVlYFxuICogY29uc3QgeDogeyBwcm9wPzogc3RyaW5nIH0gPSB7IHByb3A6IHVuZGVmaW5lZCB9OyAvLyBDb21waWxlciBlcnJvclxuICpcbiAqIC8vIFVzaW5nIHRoaXMgdXRpbGl0eTpcbiAqIGNvbnN0IHk6IHsgcHJvcD86IHN0cmluZyB9ID0gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPHsgcHJvcD86IHN0cmluZyB9Pih7IHByb3A6IHVuZGVmaW5lZCB9KTsgLy8gV29ya3NcbiAqIGBgYFxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0YXJnZXQgdHlwZSB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gbm9ybWFsaXplLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gbm9ybWFsaXplLCBhbGxvd2luZyBleHBsaWNpdCBgdW5kZWZpbmVkYCBmb3Igb3B0aW9uYWwgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIG9iamVjdCwgY29tcGF0aWJsZSB3aXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VD4ob2JqOiBVbmRlZmluZWRPblBhcnRpYWxEZWVwPFQ+KTogVCB7XG4gIHJldHVybiBvYmogYXMgVDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gc2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgaW4uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KEtFWV9TRVBBUkFUT1IpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5hdCgtMSk7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgbGFzdEtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBub2RlW2xhc3RLZXldID0gdmFsdWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiB2YWx1ZSB0byBhIEpTT04gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTi4gVGhpcyBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBKU09OIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb24odmFsdWU6IHVua25vd24sIG9wdGlvbnM6IFBhcnRpYWw8VG9Kc29uT3B0aW9ucz4gPSB7fSk6IHN0cmluZyB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogeyB0b2tlblN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucyB9ICYgVG9Kc29uT3B0aW9ucyA9IHtcbiAgICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSxcbiAgICBtYXhEZXB0aDogLTEsXG4gICAgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlRXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGZhbHNlLFxuICAgIHNob3VsZFNvcnRLZXlzOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIHNwYWNlOiAyLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgY2lyY3VsYXJSZWZlcmVuY2U6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZSksXG4gICAgICBtYXhEZXB0aExpbWl0UmVhY2hlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkKSxcbiAgICAgIHRvSlNPTkZhaWxlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5LlRvSlNPTkZhaWxlZClcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7XG4gICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9rZW5TdWJzdGl0dXRpb25zOiB7XG4gICAgICAuLi5ERUZBVUxUX09QVElPTlMudG9rZW5TdWJzdGl0dXRpb25zLFxuICAgICAgLi4ub3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9XG4gIH07XG5cbiAgaWYgKGZ1bGxPcHRpb25zLm1heERlcHRoID09PSAtMSkge1xuICAgIGZ1bGxPcHRpb25zLm1heERlcHRoID0gSW5maW5pdHk7XG4gIH1cblxuICBjb25zdCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkT2JqZWN0cyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuICBjb25zdCBwbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3QodmFsdWUsICcnLCAwLCB0cnVlLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KHBsYWluT2JqZWN0LCBudWxsLCBmdWxsT3B0aW9ucy5zcGFjZSkgPz8gJyc7XG4gIGpzb24gPSByZXBsYWNlQWxsKGpzb24sIC9cIlxcW1xcWyg/PEtleT5bQS1aYS16XSspKD88SW5kZXg+XFxkKilcXF1cXF1cIi9nLCAoXywga2V5LCBpbmRleFN0cikgPT5cbiAgICBhcHBseVN1YnN0aXR1dGlvbnMoe1xuICAgICAgZnVuY3Rpb25UZXh0cyxcbiAgICAgIGluZGV4OiBpbmRleFN0ciA/IHBhcnNlSW50KGluZGV4U3RyLCAxMCkgOiAwLFxuICAgICAga2V5OiBrZXkgYXMgVG9rZW5TdWJzdGl0dXRpb25LZXksXG4gICAgICBzdWJzdGl0dXRpb25zOiBmdWxsT3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9KSk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQXZvaWQgcmVkZWZpbmluZyByZWFkLW9ubHkgcHJvcGVydGllcyAoZXNwZWNpYWxseSBgcHJvdG90eXBlYClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgICB8fCAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LndyaXRhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy5jb25maWd1cmFibGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgZGVmaW5lUHJvcGVydHkgZmFpbHNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gc291cmNlc1xuICAgIC5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Y8b2JqZWN0IHwgdW5kZWZpbmVkPihzb3VyY2UpKVxuICAgIC5maWx0ZXIoKHByb3RvKTogcHJvdG8gaXMgb2JqZWN0ID0+ICEhcHJvdG8pO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcblxuICAgIHRyeSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIHNldFByb3RvdHlwZU9mIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gYXBwbHlTdWJzdGl0dXRpb25zKG9wdGlvbnM6IEFwcGx5U3Vic3RpdHV0aW9uc09wdGlvbnMpOiBNYXliZVJldHVybjxzdHJpbmc+IHtcbiAgc3dpdGNoIChvcHRpb25zLmtleSkge1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuQ2lyY3VsYXJSZWZlcmVuY2U6XG4gICAgICByZXR1cm4gb3B0aW9ucy5zdWJzdGl0dXRpb25zLmNpcmN1bGFyUmVmZXJlbmNlO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb246XG4gICAgICByZXR1cm4gb3B0aW9ucy5mdW5jdGlvblRleHRzW29wdGlvbnMuaW5kZXhdID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtvcHRpb25zLmluZGV4LnRvU3RyaW5nKCl9IG5vdCBmb3VuZGApKTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy5tYXhEZXB0aExpbWl0UmVhY2hlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkQXJyYXk6XG4gICAgICByZXR1cm4gYEFycmF5KCR7b3B0aW9ucy5pbmRleC50b1N0cmluZygpfSlgO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy50b0pTT05GYWlsZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5VbmRlZmluZWQ6XG4gICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllczxjb25zdCBUIGV4dGVuZHMgcmVhZG9ubHkgRXF1YWxpdHlDb21wYXJlckVudHJ5PGFueT5bXT4oZW50cmllczogVCk6IFQge1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsQXJyYXlCdWZmZXIoYTogQXJyYXlCdWZmZXIsIGI6IEFycmF5QnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHZpZXdBID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIGNvbnN0IHZpZXdCID0gbmV3IFVpbnQ4QXJyYXkoYik7XG4gIHJldHVybiBkZWVwRXF1YWwodmlld0EsIHZpZXdCKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbE1hcChhOiBNYXA8dW5rbm93biwgdW5rbm93bj4sIGI6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhLmVudHJpZXMoKSkge1xuICAgIGlmICghYi5oYXMoa2V5KSB8fCAhZGVlcEVxdWFsKHZhbHVlLCBiLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxSZWdFeHAoYTogUmVnRXhwLCBiOiBSZWdFeHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxTZXQoYTogU2V0PHVua25vd24+LCBiOiBTZXQ8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YWx1ZUEgb2YgYSkge1xuICAgIGlmIChiLmhhcyh2YWx1ZUEpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2YWx1ZUIgb2YgYikge1xuICAgICAgaWYgKGRlZXBFcXVhbCh2YWx1ZUEsIHZhbHVlQikpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxUeXBlZChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgeyBjb25zdHJ1Y3RvciwgZXF1YWxpdHlDb21wYXJlciB9IG9mIGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciAmJiBiIGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBlcXVhbGl0eUNvbXBhcmVyKGEgYXMgbmV2ZXIsIGIgYXMgbmV2ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBcnJheShcbiAgdmFsdWU6IHVua25vd25bXSxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSwgdmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1BsYWluT2JqZWN0KGl0ZW0sIGluZGV4LnRvU3RyaW5nKCksIGRlcHRoICsgMSwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWU6IG9iamVjdCwga2V5OiBzdHJpbmcsIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKTtcbiAgfVxuICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cbi0tPiBzdGFydGluZyBhdCBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvciAnJHt2YWx1ZUNvbnN0cnVjdG9yTmFtZX0nXG4tLS0gcHJvcGVydHkgJyR7a2V5fScgY2xvc2VzIHRoZSBjaXJjbGVgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZVxuZnVuY3Rpb24gaGFuZGxlRnVuY3Rpb24odmFsdWU6IEZ1bmN0aW9uLCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSwgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMpOiB1bmtub3duIHtcbiAgaWYgKGZ1bGxPcHRpb25zLmZ1bmN0aW9uSGFuZGxpbmdNb2RlID09PSBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBpbmRleCA9IGZ1bmN0aW9uVGV4dHMubGVuZ3RoO1xuICBjb25zdCBmdW5jdGlvblRleHQgPSBmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbFxuICAgID8gdmFsdWUudG9TdHJpbmcoKVxuICAgIDogYGZ1bmN0aW9uICR7dmFsdWUubmFtZSB8fCAnYW5vbnltb3VzJ30oKSB7IC8qIC4uLiAqLyB9YDtcbiAgZnVuY3Rpb25UZXh0cy5wdXNoKGZ1bmN0aW9uVGV4dCk7XG4gIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb24sIGluZGV4KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodXNlZE9iamVjdHMuaGFzKHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVDaXJjdWxhclJlZmVyZW5jZSh2YWx1ZSwga2V5LCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICB1c2VkT2JqZWN0cy5hZGQodmFsdWUpO1xuXG4gIGlmIChjYW5Vc2VUb0pTT04pIHtcbiAgICBjb25zdCB0b0pTT05SZXN1bHQgPSB0cnlIYW5kbGVUb0pTT04odmFsdWUsIGtleSwgZGVwdGgsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgaWYgKHRvSlNPTlJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdG9KU09OUmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVBcnJheSh2YWx1ZSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgfVxuXG4gIGlmIChkZXB0aCA+IGZ1bGxPcHRpb25zLm1heERlcHRoKSB7XG4gICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZCk7XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvciAmJiBmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVFcnJvcnMpIHtcbiAgICByZXR1cm4gZXJyb3JUb1N0cmluZyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlUGxhaW5PYmplY3QodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVBsYWluT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBkZXB0aDogbnVtYmVyLFxuICBjYW5Vc2VUb0pTT046IGJvb2xlYW4sXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRTb3J0S2V5cykge1xuICAgIGVudHJpZXMuc29ydCgoW2tleTFdLCBba2V5Ml0pID0+IGtleTEubG9jYWxlQ29tcGFyZShrZXkyKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIGVudHJpZXMubWFwKChba2V5MiwgdmFsdWUyXSkgPT4gW1xuICAgICAga2V5MixcbiAgICAgIHRvUGxhaW5PYmplY3QodmFsdWUyLCBrZXkyLCBkZXB0aCArIDEsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKVxuICAgIF0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGB7IFwiW1ske2tleX1dXVwiOiBudWxsIH1gO1xufVxuXG5mdW5jdGlvbiBtYWtlUGxhY2Vob2xkZXIoa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSwgaW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYFtbJHtrZXl9JHtpbmRleD8udG9TdHJpbmcoKSA/PyAnJ31dXWA7XG59XG5cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QoXG4gIHZhbHVlOiB1bmtub3duLFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoZGVwdGggPT09IDAgfHwgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlVW5kZWZpbmVkKVxuICAgICAgPyBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVW5kZWZpbmVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGhhbmRsZUZ1bmN0aW9uKHZhbHVlLCBmdW5jdGlvblRleHRzLCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVPYmplY3QodmFsdWUsIGtleSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbn1cblxuZnVuY3Rpb24gdHJ5SGFuZGxlVG9KU09OKFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgY29uc3QgdG9KU09OID0gKHZhbHVlIGFzIFBhcnRpYWw8SlNPTlNlcmlhbGl6YWJsZT4pLnRvSlNPTjtcbiAgaWYgKHR5cGVvZiB0b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0b0pTT04uY2FsbCh2YWx1ZSwga2V5KTtcbiAgICAgIHJldHVybiB0b1BsYWluT2JqZWN0KG5ld1ZhbHVlLCBrZXksIGRlcHRoLCBmYWxzZSwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFnQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGtCQUFrQjtBQUtwQixJQUFLLHVCQUFMLGtCQUFLQSwwQkFBTDtBQUlMLEVBQUFBLHNCQUFBLGFBQVU7QUFJVixFQUFBQSxzQkFBQSxVQUFPO0FBSVAsRUFBQUEsc0JBQUEsY0FBVztBQVpELFNBQUFBO0FBQUEsR0FBQTtBQW1HWixNQUFNLGdCQUFnQjtBQUN0QixNQUFNLDBCQUEwQjtBQUFBLEVBQzlCO0FBQUEsSUFDRSxFQUFFLGFBQWEsYUFBYSxrQkFBa0IscUJBQXFCO0FBQUEsSUFDbkUsRUFBRSxhQUFhLE1BQU0sa0JBQWtCLGNBQWM7QUFBQSxJQUNyRCxFQUFFLGFBQWEsUUFBUSxrQkFBa0IsZ0JBQWdCO0FBQUEsSUFDekQsRUFBRSxhQUFhLEtBQUssa0JBQWtCLGFBQWE7QUFBQSxJQUNuRCxFQUFFLGFBQWEsS0FBSyxrQkFBa0IsYUFBYTtBQUFBLEVBQ3JEO0FBQ0Y7QUEwQ08sU0FBUyxrQ0FBa0MsV0FBbUIsU0FBMkI7QUFDOUYsU0FBTyxtQ0FBbUMsUUFBUSxHQUFHLE9BQU87QUFDOUQ7QUFRTyxTQUFTLGlDQUFtRCxLQUFXO0FBQzVFLFNBQU8sT0FBTyxPQUFPLGVBQWUsR0FBRyxHQUFHLE9BQU8sMEJBQTBCLEdBQUcsQ0FBQztBQUNqRjtBQVNP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QUFJLGlCQUFpQixTQUFTLFlBQVksb0JBQW9CO0FBQzVELFdBQU8sY0FBYyxLQUFLO0FBQUEsRUFDNUI7QUFFQSxTQUFPLGtCQUFrQixPQUFPLE9BQU8sY0FBYyxhQUFhLGVBQWUsV0FBVztBQUM5RjtBQUVBLFNBQVMsa0JBQ1AsT0FDQSxPQUNBLGNBQ0EsYUFDQSxlQUNBLGFBQ1M7QUFDVCxRQUFNLFVBQVUsT0FBTyxRQUFRLEtBQUs7QUFDcEMsTUFBSSxZQUFZLGdCQUFnQjtBQUM5QixZQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksTUFBTSxLQUFLLGNBQWMsSUFBSSxDQUFDO0FBQUEsRUFDM0Q7QUFFQSxTQUFPLE9BQU87QUFBQSxJQUNaLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxNQUFNLE1BQU07QUFBQSxNQUM5QjtBQUFBLE1BQ0EsY0FBYyxRQUFRLE1BQU0sUUFBUSxHQUFHLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFBQSxJQUM5RixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyw0QkFBNEIsS0FBbUM7QUFDdEUsU0FBTyxRQUFRLEdBQUc7QUFDcEI7QUFFQSxTQUFTLGdCQUFnQixLQUEyQixPQUF3QjtBQUMxRSxTQUFPLEtBQUssR0FBRyxHQUFHLE9BQU8sU0FBUyxLQUFLLEVBQUU7QUFDM0M7QUFFQSxTQUFTLGNBQ1AsT0FDQSxLQUNBLE9BQ0EsY0FDQSxhQUNBLGVBQ0EsYUFDUztBQUNULE1BQUksVUFBVSxRQUFXO0FBQ3ZCLFdBQVEsVUFBVSxLQUFLLFlBQVksd0JBQy9CLGdCQUFnQiwyQkFBOEIsSUFDOUM7QUFBQSxFQUNOO0FBRUEsTUFBSSxPQUFPLFVBQVUsWUFBWTtBQUMvQixXQUFPLGVBQWUsT0FBTyxlQUFlLFdBQVc7QUFBQSxFQUN6RDtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQy9DLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxhQUFhLE9BQU8sS0FBSyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGdCQUNQLE9BQ0EsS0FDQSxPQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxTQUFVLE1BQW9DO0FBQ3BELE1BQUksT0FBTyxXQUFXLFlBQVk7QUFDaEMsUUFBSTtBQUNGLFlBQU0sV0FBVyxPQUFPLEtBQUssT0FBTyxHQUFHO0FBQ3ZDLGFBQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxPQUFPLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDM0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxZQUFZLHlCQUF5QjtBQUN2QyxlQUFPLGdCQUFnQixpQ0FBaUM7QUFBQSxNQUMxRDtBQUNBLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiXQp9Cg==
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL09iamVjdFV0aWxzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uc3RydWN0b3IsXG4gIFVuZGVmaW5lZE9uUGFydGlhbERlZXBcbn0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUge1xuICBNYXliZVJldHVybixcbiAgU3RyaW5nS2V5c1xufSBmcm9tICcuL1R5cGUudHMnO1xuXG5pbXBvcnQge1xuICBlcnJvclRvU3RyaW5nLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dC5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25IYW5kbGluZ01vZGUge1xuICAvKipcbiAgICogRXhjbHVkZXMgZnVuY3Rpb25zIGZyb20gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIHRoZSBmdWxsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRnVsbCA9ICdmdWxsJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIG9ubHkgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgTmFtZU9ubHkgPSAnbmFtZU9ubHknXG59XG5cbmVudW0gVG9rZW5TdWJzdGl0dXRpb25LZXkge1xuICBDaXJjdWxhclJlZmVyZW5jZSA9ICdDaXJjdWxhclJlZmVyZW5jZScsXG4gIEZ1bmN0aW9uID0gJ0Z1bmN0aW9uJyxcbiAgTWF4RGVwdGhMaW1pdFJlYWNoZWQgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWQnLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5ID0gJ01heERlcHRoTGltaXRSZWFjaGVkQXJyYXknLFxuICBUb0pTT05GYWlsZWQgPSAnVG9KU09ORmFpbGVkJyxcbiAgVW5kZWZpbmVkID0gJ1VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0IChkZWZhdWx0OiBgZXhjbHVkZWApLlxuICAgKi9cbiAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIG5lc3RlZCBvYmplY3RzIHRvIGluY2x1ZGUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBVc2UgYC0xYCBmb3Igbm8gbGltaXQuXG4gICAqIERlZmF1bHRzIHRvIGAtMWAuXG4gICAqL1xuICBtYXhEZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gY2F0Y2ggZXJyb3JzIGluIGB0b0pTT04oKWAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGEgcGxhY2Vob2xkZXIuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRDYXRjaFRvSlNPTkVycm9yczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlRXJyb3JzOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gc29ydCB0aGUga2V5cyBvZiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRTb3J0S2V5czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIEpTT04gb3V0cHV0LiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBzcGFjZXMgb3IgYSBzdHJpbmcuIERlZmF1bHRzIHRvIGAyYC5cbiAgICovXG4gIHNwYWNlOiBudW1iZXIgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbnMgdG8gdXNlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIHRva2VuU3Vic3RpdHV0aW9uczogUGFydGlhbDxUb2tlblN1YnN0aXR1dGlvbnM+O1xufVxuXG5pbnRlcmZhY2UgQXBwbHlTdWJzdGl0dXRpb25zT3B0aW9ucyB7XG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdO1xuICBpbmRleDogbnVtYmVyO1xuICBrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5O1xuICBzdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnM7XG59XG5cbmludGVyZmFjZSBFcXVhbGl0eUNvbXBhcmVyRW50cnk8VD4ge1xuICBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD47XG4gIGVxdWFsaXR5Q29tcGFyZXI6IChhOiBULCBiOiBUKSA9PiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSlNPTlNlcmlhbGl6YWJsZSB7XG4gIHRvSlNPTiguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgTW9kdWxlV2l0aERlZmF1bHRFeHBvcnQ8VD4ge1xuICBkZWZhdWx0OiBUO1xufVxuXG5pbnRlcmZhY2UgVG9rZW5TdWJzdGl0dXRpb25zIHtcbiAgY2lyY3VsYXJSZWZlcmVuY2U6IHN0cmluZztcbiAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IHN0cmluZztcbiAgdG9KU09ORmFpbGVkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEtFWV9TRVBBUkFUT1IgPSAnLic7XG5jb25zdCBlcXVhbGl0eUNvbXBhcmVyRW50cmllcyA9IGNyZWF0ZUVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKFxuICBbXG4gICAgeyBjb25zdHJ1Y3RvcjogQXJyYXlCdWZmZXIsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbEFycmF5QnVmZmVyIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogRGF0ZSwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsRGF0ZSB9LFxuICAgIHsgY29uc3RydWN0b3I6IFJlZ0V4cCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsUmVnRXhwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogTWFwLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxNYXAgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBTZXQsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFNldCB9XG4gIF0gYXMgY29uc3Rcbik7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVT4odGFyZ2V0OiBULCBzb3VyY2U6IFUpOiBUICYgVTtcblxuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTMgLSBUaGUgdGhpcmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWLCBXPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYsIHNvdXJjZTM6IFcpOiBUICYgVSAmIFYgJiBXO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZXMgLSBUaGUgc291cmNlIG9iamVjdHMgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgcmV0dXJuIF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuLyoqXG4gKiBDbG9uZXMgYW4gb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIG9yaWdpbmFsIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSkgYXMgVDtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYUNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgY29uc3QgYkNvbnN0cnVjdG9yID0gYi5jb25zdHJ1Y3RvcjtcblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBiQ29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBkZWVwRXF1YWxUeXBlZChhLCBiKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBnZXRBbGxLZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IGdldEFsbEtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGEgYXMgR2VuZXJpY09iamVjdDtcbiAgY29uc3QgYlJlY29yZCA9IGIgYXMgR2VuZXJpY09iamVjdDtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lcyAtIFRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIHdlcmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lczogKGtleW9mIFQpW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQsIHByb3BlcnR5TmFtZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICBpZiAoIU9iamVjdC5oYXNPd24ob2JqLCBwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgZGVsZXRlIG9ialtwcm9wZXJ0eU5hbWVdO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbSBhIG1vZHVsZS5cbiAqXG4gKiBVc2VmdWwgdG8gaGFuZGxlIGluY29ycmVjdCBkZWZhdWx0IGV4cG9ydCBpbnRlcm9wIGJldHdlZW4gRVNNIGFuZCBDSlMuXG4gKlxuICogQHBhcmFtIG1vZHVsZSAtIFRoZSBtb2R1bGUgdG8gZXh0cmFjdCB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcDxUPihtb2R1bGU6IE1vZHVsZVdpdGhEZWZhdWx0RXhwb3J0PFQ+KTogVCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAnb2JqZWN0JyB8fCBtb2R1bGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgaWYgKCdkZWZhdWx0JyBpbiBtb2R1bGUpIHtcbiAgICByZXR1cm4gbW9kdWxlLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGVudHJpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgZW50cmllcyBvZi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBlbnRyaWVzIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxFbnRyaWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFtTdHJpbmdLZXlzPFQ+LCBUW1N0cmluZ0tleXM8VD5dXVtdIHtcbiAgcmV0dXJuIGdldEFsbEtleXMob2JqKS5tYXAoKGtleSkgPT4gW2tleSwgb2JqW2tleV1dKTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIGFuIG9iamVjdC5cbiAqIEluY2x1ZGVzIGZpZWxkcyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGtleXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwga2V5cyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsS2V5czxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBTdHJpbmdLZXlzPFQ+W10ge1xuICBjb25zdCBrZXlzOiBTdHJpbmdLZXlzPFQ+W10gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6IG51bGwgfCBvYmplY3QgPSBvYmo7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyZW50KSBhcyBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURlc2NyaXB0b3I+O1xuICAgIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNHZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBjb25zdCBoYXNTZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5zZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoaGFzR2V0dGVyIHx8IGhhc1NldHRlcikge1xuICAgICAgICBpZiAoaGFzR2V0dGVyICYmIGhhc1NldHRlcikge1xuICAgICAgICAgIGtleXMucHVzaChrZXkgYXMgU3RyaW5nS2V5czxUPik7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUgJiYgZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudCkgYXMgbnVsbCB8IG9iamVjdDtcbiAgfVxuICByZXR1cm4ga2V5cy5zb3J0KCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBsZXQgbm9kZTogR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoS0VZX1NFUEFSQVRPUik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBpbnN0YW5jZSAtIFRoZSBvYmplY3QgaW5zdGFuY2UgdG8gcmV0cmlldmUgdGhlIHByb3RvdHlwZSBvZi5cbiAqIEByZXR1cm5zIFRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mPFQ+KGluc3RhbmNlOiBUKTogVCB7XG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluc3RhbmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIFQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkgb2YgYSBnaXZlbiB0eXBlIGBUYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYXMgYSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lb2Y8VD4obmFtZTogRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIGFsbG93IGB1bmRlZmluZWRgIGFzc2lnbm1lbnQgaW4gc3RyaWN0IG1vZGUuXG4gKlxuICogVGhpcyB1dGlsaXR5IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AgVHlwZVNjcmlwdCBmbGFnLFxuICogd2hpY2ggcHJvaGliaXRzIGRpcmVjdGx5IGFzc2lnbmluZyBgdW5kZWZpbmVkYCB0byBvcHRpb25hbCBwcm9wZXJ0aWVzIHdoZW4gdGhlIHR5cGVcbiAqIGV4cGxpY2l0bHkgb21pdHMgYHVuZGVmaW5lZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzOiB0cnVlYFxuICogY29uc3QgeDogeyBwcm9wPzogc3RyaW5nIH0gPSB7IHByb3A6IHVuZGVmaW5lZCB9OyAvLyBDb21waWxlciBlcnJvclxuICpcbiAqIC8vIFVzaW5nIHRoaXMgdXRpbGl0eTpcbiAqIGNvbnN0IHk6IHsgcHJvcD86IHN0cmluZyB9ID0gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPHsgcHJvcD86IHN0cmluZyB9Pih7IHByb3A6IHVuZGVmaW5lZCB9KTsgLy8gV29ya3NcbiAqIGBgYFxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0YXJnZXQgdHlwZSB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gbm9ybWFsaXplLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gbm9ybWFsaXplLCBhbGxvd2luZyBleHBsaWNpdCBgdW5kZWZpbmVkYCBmb3Igb3B0aW9uYWwgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIG9iamVjdCwgY29tcGF0aWJsZSB3aXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VD4ob2JqOiBVbmRlZmluZWRPblBhcnRpYWxEZWVwPFQ+KTogVCB7XG4gIHJldHVybiBvYmogYXMgVDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gc2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgaW4uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KEtFWV9TRVBBUkFUT1IpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5hdCgtMSk7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgbGFzdEtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBub2RlW2xhc3RLZXldID0gdmFsdWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiB2YWx1ZSB0byBhIEpTT04gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTi4gVGhpcyBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBKU09OIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb24odmFsdWU6IHVua25vd24sIG9wdGlvbnM6IFBhcnRpYWw8VG9Kc29uT3B0aW9ucz4gPSB7fSk6IHN0cmluZyB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogeyB0b2tlblN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucyB9ICYgVG9Kc29uT3B0aW9ucyA9IHtcbiAgICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSxcbiAgICBtYXhEZXB0aDogLTEsXG4gICAgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlRXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGZhbHNlLFxuICAgIHNob3VsZFNvcnRLZXlzOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIHNwYWNlOiAyLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgY2lyY3VsYXJSZWZlcmVuY2U6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZSksXG4gICAgICBtYXhEZXB0aExpbWl0UmVhY2hlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkKSxcbiAgICAgIHRvSlNPTkZhaWxlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5LlRvSlNPTkZhaWxlZClcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7XG4gICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9rZW5TdWJzdGl0dXRpb25zOiB7XG4gICAgICAuLi5ERUZBVUxUX09QVElPTlMudG9rZW5TdWJzdGl0dXRpb25zLFxuICAgICAgLi4ub3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9XG4gIH07XG5cbiAgaWYgKGZ1bGxPcHRpb25zLm1heERlcHRoID09PSAtMSkge1xuICAgIGZ1bGxPcHRpb25zLm1heERlcHRoID0gSW5maW5pdHk7XG4gIH1cblxuICBjb25zdCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkT2JqZWN0cyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuICBjb25zdCBwbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3QodmFsdWUsICcnLCAwLCB0cnVlLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KHBsYWluT2JqZWN0LCBudWxsLCBmdWxsT3B0aW9ucy5zcGFjZSkgPz8gJyc7XG4gIGpzb24gPSByZXBsYWNlQWxsKGpzb24sIC9cIlxcW1xcWyg/PEtleT5bQS1aYS16XSspKD88SW5kZXg+XFxkKilcXF1cXF1cIi9nLCAoXywga2V5LCBpbmRleFN0cikgPT5cbiAgICBhcHBseVN1YnN0aXR1dGlvbnMoe1xuICAgICAgZnVuY3Rpb25UZXh0cyxcbiAgICAgIGluZGV4OiBpbmRleFN0ciA/IHBhcnNlSW50KGluZGV4U3RyLCAxMCkgOiAwLFxuICAgICAga2V5OiBrZXkgYXMgVG9rZW5TdWJzdGl0dXRpb25LZXksXG4gICAgICBzdWJzdGl0dXRpb25zOiBmdWxsT3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9KSk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQXZvaWQgcmVkZWZpbmluZyByZWFkLW9ubHkgcHJvcGVydGllcyAoZXNwZWNpYWxseSBgcHJvdG90eXBlYClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgICB8fCAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LndyaXRhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy5jb25maWd1cmFibGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgZGVmaW5lUHJvcGVydHkgZmFpbHNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gc291cmNlc1xuICAgIC5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Y8b2JqZWN0IHwgdW5kZWZpbmVkPihzb3VyY2UpKVxuICAgIC5maWx0ZXIoKHByb3RvKTogcHJvdG8gaXMgb2JqZWN0ID0+ICEhcHJvdG8pO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcblxuICAgIHRyeSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIHNldFByb3RvdHlwZU9mIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gYXBwbHlTdWJzdGl0dXRpb25zKG9wdGlvbnM6IEFwcGx5U3Vic3RpdHV0aW9uc09wdGlvbnMpOiBNYXliZVJldHVybjxzdHJpbmc+IHtcbiAgc3dpdGNoIChvcHRpb25zLmtleSkge1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuQ2lyY3VsYXJSZWZlcmVuY2U6XG4gICAgICByZXR1cm4gb3B0aW9ucy5zdWJzdGl0dXRpb25zLmNpcmN1bGFyUmVmZXJlbmNlO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb246XG4gICAgICByZXR1cm4gb3B0aW9ucy5mdW5jdGlvblRleHRzW29wdGlvbnMuaW5kZXhdID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtTdHJpbmcob3B0aW9ucy5pbmRleCl9IG5vdCBmb3VuZGApKTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy5tYXhEZXB0aExpbWl0UmVhY2hlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkQXJyYXk6XG4gICAgICByZXR1cm4gYEFycmF5KCR7U3RyaW5nKG9wdGlvbnMuaW5kZXgpfSlgO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy50b0pTT05GYWlsZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5VbmRlZmluZWQ6XG4gICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllczxjb25zdCBUIGV4dGVuZHMgcmVhZG9ubHkgRXF1YWxpdHlDb21wYXJlckVudHJ5PGFueT5bXT4oZW50cmllczogVCk6IFQge1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsQXJyYXlCdWZmZXIoYTogQXJyYXlCdWZmZXIsIGI6IEFycmF5QnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHZpZXdBID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIGNvbnN0IHZpZXdCID0gbmV3IFVpbnQ4QXJyYXkoYik7XG4gIHJldHVybiBkZWVwRXF1YWwodmlld0EsIHZpZXdCKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbE1hcChhOiBNYXA8dW5rbm93biwgdW5rbm93bj4sIGI6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhLmVudHJpZXMoKSkge1xuICAgIGlmICghYi5oYXMoa2V5KSB8fCAhZGVlcEVxdWFsKHZhbHVlLCBiLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxSZWdFeHAoYTogUmVnRXhwLCBiOiBSZWdFeHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxTZXQoYTogU2V0PHVua25vd24+LCBiOiBTZXQ8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YWx1ZUEgb2YgYSkge1xuICAgIGlmIChiLmhhcyh2YWx1ZUEpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2YWx1ZUIgb2YgYikge1xuICAgICAgaWYgKGRlZXBFcXVhbCh2YWx1ZUEsIHZhbHVlQikpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxUeXBlZChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgeyBjb25zdHJ1Y3RvciwgZXF1YWxpdHlDb21wYXJlciB9IG9mIGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciAmJiBiIGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBlcXVhbGl0eUNvbXBhcmVyKGEgYXMgbmV2ZXIsIGIgYXMgbmV2ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBcnJheShcbiAgdmFsdWU6IHVua25vd25bXSxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSwgdmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1BsYWluT2JqZWN0KGl0ZW0sIFN0cmluZyhpbmRleCksIGRlcHRoICsgMSwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWU6IG9iamVjdCwga2V5OiBzdHJpbmcsIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKTtcbiAgfVxuICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cbi0tPiBzdGFydGluZyBhdCBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvciAnJHt2YWx1ZUNvbnN0cnVjdG9yTmFtZX0nXG4tLS0gcHJvcGVydHkgJyR7a2V5fScgY2xvc2VzIHRoZSBjaXJjbGVgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZVxuZnVuY3Rpb24gaGFuZGxlRnVuY3Rpb24odmFsdWU6IEZ1bmN0aW9uLCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSwgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMpOiB1bmtub3duIHtcbiAgaWYgKGZ1bGxPcHRpb25zLmZ1bmN0aW9uSGFuZGxpbmdNb2RlID09PSBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBpbmRleCA9IGZ1bmN0aW9uVGV4dHMubGVuZ3RoO1xuICBjb25zdCBmdW5jdGlvblRleHQgPSBmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbFxuICAgID8gU3RyaW5nKHZhbHVlKVxuICAgIDogYGZ1bmN0aW9uICR7dmFsdWUubmFtZSB8fCAnYW5vbnltb3VzJ30oKSB7IC8qIC4uLiAqLyB9YDtcbiAgZnVuY3Rpb25UZXh0cy5wdXNoKGZ1bmN0aW9uVGV4dCk7XG4gIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb24sIGluZGV4KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodXNlZE9iamVjdHMuaGFzKHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVDaXJjdWxhclJlZmVyZW5jZSh2YWx1ZSwga2V5LCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICB1c2VkT2JqZWN0cy5hZGQodmFsdWUpO1xuXG4gIGlmIChjYW5Vc2VUb0pTT04pIHtcbiAgICBjb25zdCB0b0pTT05SZXN1bHQgPSB0cnlIYW5kbGVUb0pTT04odmFsdWUsIGtleSwgZGVwdGgsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgaWYgKHRvSlNPTlJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdG9KU09OUmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVBcnJheSh2YWx1ZSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgfVxuXG4gIGlmIChkZXB0aCA+IGZ1bGxPcHRpb25zLm1heERlcHRoKSB7XG4gICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZCk7XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvciAmJiBmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVFcnJvcnMpIHtcbiAgICByZXR1cm4gZXJyb3JUb1N0cmluZyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlUGxhaW5PYmplY3QodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVBsYWluT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBkZXB0aDogbnVtYmVyLFxuICBjYW5Vc2VUb0pTT046IGJvb2xlYW4sXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRTb3J0S2V5cykge1xuICAgIGVudHJpZXMuc29ydCgoW2tleTFdLCBba2V5Ml0pID0+IGtleTEubG9jYWxlQ29tcGFyZShrZXkyKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIGVudHJpZXMubWFwKChba2V5MiwgdmFsdWUyXSkgPT4gW1xuICAgICAga2V5MixcbiAgICAgIHRvUGxhaW5PYmplY3QodmFsdWUyLCBrZXkyLCBkZXB0aCArIDEsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKVxuICAgIF0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGB7IFwiW1ske2tleX1dXVwiOiBudWxsIH1gO1xufVxuXG5mdW5jdGlvbiBtYWtlUGxhY2Vob2xkZXIoa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSwgaW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYFtbJHtrZXl9JHtpbmRleCA/IFN0cmluZyhpbmRleCkgOiAnJ31dXWA7XG59XG5cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QoXG4gIHZhbHVlOiB1bmtub3duLFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoZGVwdGggPT09IDAgfHwgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlVW5kZWZpbmVkKVxuICAgICAgPyBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVW5kZWZpbmVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGhhbmRsZUZ1bmN0aW9uKHZhbHVlLCBmdW5jdGlvblRleHRzLCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVPYmplY3QodmFsdWUsIGtleSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbn1cblxuZnVuY3Rpb24gdHJ5SGFuZGxlVG9KU09OKFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgY29uc3QgdG9KU09OID0gKHZhbHVlIGFzIFBhcnRpYWw8SlNPTlNlcmlhbGl6YWJsZT4pLnRvSlNPTjtcbiAgaWYgKHR5cGVvZiB0b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0b0pTT04uY2FsbCh2YWx1ZSwga2V5KTtcbiAgICAgIHJldHVybiB0b1BsYWluT2JqZWN0KG5ld1ZhbHVlLCBrZXksIGRlcHRoLCBmYWxzZSwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFnQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGtCQUFrQjtBQUtwQixJQUFLLHVCQUFMLGtCQUFLQSwwQkFBTDtBQUlMLEVBQUFBLHNCQUFBLGFBQVU7QUFJVixFQUFBQSxzQkFBQSxVQUFPO0FBSVAsRUFBQUEsc0JBQUEsY0FBVztBQVpELFNBQUFBO0FBQUEsR0FBQTtBQW1HWixNQUFNLGdCQUFnQjtBQUN0QixNQUFNLDBCQUEwQjtBQUFBLEVBQzlCO0FBQUEsSUFDRSxFQUFFLGFBQWEsYUFBYSxrQkFBa0IscUJBQXFCO0FBQUEsSUFDbkUsRUFBRSxhQUFhLE1BQU0sa0JBQWtCLGNBQWM7QUFBQSxJQUNyRCxFQUFFLGFBQWEsUUFBUSxrQkFBa0IsZ0JBQWdCO0FBQUEsSUFDekQsRUFBRSxhQUFhLEtBQUssa0JBQWtCLGFBQWE7QUFBQSxJQUNuRCxFQUFFLGFBQWEsS0FBSyxrQkFBa0IsYUFBYTtBQUFBLEVBQ3JEO0FBQ0Y7QUEwQ08sU0FBUyxrQ0FBa0MsV0FBbUIsU0FBMkI7QUFDOUYsU0FBTyxtQ0FBbUMsUUFBUSxHQUFHLE9BQU87QUFDOUQ7QUFRTyxTQUFTLGlDQUFtRCxLQUFXO0FBQzVFLFNBQU8sT0FBTyxPQUFPLGVBQWUsR0FBRyxHQUFHLE9BQU8sMEJBQTBCLEdBQUcsQ0FBQztBQUNqRjtBQVNPLFNBQVMsVUFB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QixTQUFTLFlBQVksb0JBQW9CO0FBQzVELFdBQU8sY0FBYyxLQUFLO0FBQUEsRUFDNUI7QUFFQSxTQUFPLGtCQUFrQixPQUFPLE9BQU8sY0FBYyxhQUFhLGVBQWUsV0FBVztBQUM5RjtBQUVBLFNBQVMsa0JBQ1AsT0FDQSxPQUNBLGNBQ0EsYUFDQSxlQUNBLGFBQ1M7QUFDVCxRQUFNLFVBQVUsT0FBTyxRQUFRLEtBQUs7QUFDcEMsTUFBSSxZQUFZLGdCQUFnQjtBQUM5QixZQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksTUFBTSxLQUFLLGNBQWMsSUFBSSxDQUFDO0FBQUEsRUFDM0Q7QUFFQSxTQUFPLE9BQU87QUFBQSxJQUNaLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxNQUFNLE1BQU07QUFBQSxNQUM5QjtBQUFBLE1BQ0EsY0FBYyxRQUFRLE1BQU0sUUFBUSxHQUFHLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFBQSxJQUM5RixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyw0QkFBNEIsS0FBbUM7QUFDdEUsU0FBTyxRQUFRLEdBQUc7QUFDcEI7QUFFQSxTQUFTLGdCQUFnQixLQUEyQixPQUF3QjtBQUMxRSxTQUFPLEtBQUssR0FBRyxHQUFHLFFBQVEsT0FBTyxLQUFLLElBQUksRUFBRTtBQUM5QztBQUVBLFNBQVMsY0FDUCxPQUNBLEtBQ0EsT0FDQSxjQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsTUFBSSxVQUFVLFFBQVc7QUFDdkIsV0FBUSxVQUFVLEtBQUssWUFBWSx3QkFDL0IsZ0JBQWdCLDJCQUE4QixJQUM5QztBQUFBLEVBQ047QUFFQSxNQUFJLE9BQU8sVUFBVSxZQUFZO0FBQy9CLFdBQU8sZUFBZSxPQUFPLGVBQWUsV0FBVztBQUFBLEVBQ3pEO0FBRUEsTUFBSSxPQUFPLFVBQVUsWUFBWSxVQUFVLE1BQU07QUFDL0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLGFBQWEsT0FBTyxLQUFLLE9BQU8sY0FBYyxhQUFhLGVBQWUsV0FBVztBQUM5RjtBQUVBLFNBQVMsZ0JBQ1AsT0FDQSxLQUNBLE9BQ0EsYUFDQSxlQUNBLGFBQ1M7QUFDVCxRQUFNLFNBQVUsTUFBb0M7QUFDcEQsTUFBSSxPQUFPLFdBQVcsWUFBWTtBQUNoQyxRQUFJO0FBQ0YsWUFBTSxXQUFXLE9BQU8sS0FBSyxPQUFPLEdBQUc7QUFDdkMsYUFBTyxjQUFjLFVBQVUsS0FBSyxPQUFPLE9BQU8sYUFBYSxlQUFlLFdBQVc7QUFBQSxJQUMzRixTQUFTLEdBQUc7QUFDVixVQUFJLFlBQVkseUJBQXlCO0FBQ3ZDLGVBQU8sZ0JBQWdCLGlDQUFpQztBQUFBLE1BQzFEO0FBQ0EsWUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJGdW5jdGlvbkhhbmRsaW5nTW9kZSJdCn0K
|
package/dist/lib/esm/Path.mjs
CHANGED
|
@@ -47,7 +47,7 @@ function resolve(...pathSegments) {
|
|
|
47
47
|
return match?.[0] ?? path;
|
|
48
48
|
}
|
|
49
49
|
function toPosixBuffer(buffer) {
|
|
50
|
-
return Buffer.from(toPosixPath(buffer
|
|
50
|
+
return Buffer.from(toPosixPath(String(buffer)));
|
|
51
51
|
}
|
|
52
52
|
function toPosixPath(path) {
|
|
53
53
|
return replaceAll(path, "\\", "/");
|
|
@@ -73,4 +73,4 @@ export {
|
|
|
73
73
|
toPosixBuffer,
|
|
74
74
|
toPosixPath
|
|
75
75
|
};
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1BhdGgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIHBhdGhzLlxuICovXG5cbmltcG9ydCBwYXRoQnJvd3NlcmlmeSBmcm9tICdwYXRoLWJyb3dzZXJpZnknO1xuXG5pbXBvcnQge1xuICBlbnN1cmVTdGFydHNXaXRoLFxuICByZXBsYWNlQWxsXG59IGZyb20gJy4vU3RyaW5nLnRzJztcblxuY29uc3QgV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUCA9IC9bYS16QS1aXTpcXC9bXjpdKiQvO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1ldGhvZHMgZm9yIGhhbmRsaW5nIFBPU0lYIHBhdGhzLlxuICovXG5leHBvcnQgY29uc3QgcG9zaXggPSBwYXRoQnJvd3NlcmlmeS5wb3NpeDtcblxuLyoqXG4gKiBUaGUgUE9TSVggcGF0aCBkZWxpbWl0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxpbWl0ZXIgPSBwb3NpeC5kZWxpbWl0ZXI7XG5cbi8qKlxuICogVGhlIFBPU0lYIHNlZ21lbnQgc2VwYXJhdG9yLlxuICovXG5leHBvcnQgY29uc3Qgc2VwID0gcGF0aEJyb3dzZXJpZnkucG9zaXguc2VwO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGJhc2UgbmFtZSBvZiBhIGZpbGUsIG9wdGlvbmFsbHkgcmVtb3ZpbmcgdGhlIGZpbGUgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gZ2V0IHRoZSBiYXNlIG5hbWUgZnJvbS5cbiAqIEBwYXJhbSBleHQgLSBBbiBvcHRpb25hbCBleHRlbnNpb24gdG8gcmVtb3ZlIGZyb20gdGhlIGJhc2UgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBiYXNlbmFtZSA9IHBvc2l4LmJhc2VuYW1lO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGRpcmVjdG9yeSBuYW1lIG9mIGEgcGF0aC5cbiAqXG4gKiBgZGlyZWN0b3J5YCBpcyB1c2VkIGluc3RlYWQgb2YgYGZvbGRlcmAgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIGBub2RlOnBhdGhgIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgZGlyZWN0b3J5IG5hbWUgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRpcm5hbWUgPSBwb3NpeC5kaXJuYW1lO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBleHRuYW1lID0gcG9zaXguZXh0bmFtZTtcblxuLyoqXG4gKiBGb3JtYXRzIGEgcGF0aCBvYmplY3QgaW50byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBwYXRoT2JqZWN0IC0gVGhlIHBhdGggb2JqZWN0IHRvIGZvcm1hdC5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgcGF0aCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSBwb3NpeC5mb3JtYXQ7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHBhdGggaXMgYWJzb2x1dGUuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcG9zaXguaXNBYnNvbHV0ZShwYXRoKSB8fCBXSU5ET1dTX1BPU0lYX0xJS0VfUEFUSF9SRUdfRVhQLmV4ZWMocGF0aCk/LlswXSA9PT0gcGF0aDtcbn1cblxuLyoqXG4gKiBKb2lucyBtdWx0aXBsZSBwYXRoIHNlZ21lbnRzIGludG8gYSBzaW5nbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aHMgLSBUaGUgcGF0aCBzZWdtZW50cyB0byBqb2luLlxuICogQHJldHVybnMgVGhlIGpvaW5lZCBwYXRoLlxuICovXG5leHBvcnQgY29uc3Qgam9pbiA9IHBvc2l4LmpvaW47XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIHJlc29sdmluZyAnLi4nIGFuZCAnLicgc2VnbWVudHMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gcG9zaXgubm9ybWFsaXplO1xuXG4vKipcbiAqIFBhcnNlcyBhIHBhdGggc3RyaW5nIGludG8gYSBwYXRoIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHN0cmluZyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aCBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZSA9IHBvc2l4LnBhcnNlO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSBvbmUgcGF0aCB0byBhbm90aGVyLlxuICpcbiAqIEBwYXJhbSBmcm9tIC0gVGhlIHN0YXJ0aW5nIHBhdGguXG4gKiBAcGFyYW0gdG8gLSBUaGUgZGVzdGluYXRpb24gcGF0aC5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AuXG4gKi9cbmV4cG9ydCBjb25zdCByZWxhdGl2ZSA9IHBvc2l4LnJlbGF0aXZlO1xuXG4vKipcbiAqIEdldHMgdGhlIGZpbGUgbmFtZSBmcm9tIHRoZSBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgLCBjb252ZXJ0aW5nIGl0IHRvIGEgUE9TSVgtc3R5bGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gaW1wb3J0TWV0YVVybCAtIFRoZSBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgZmlsZSBuYW1lLlxuICogQHJldHVybnMgVGhlIFBPU0lYLXN0eWxlIGZpbGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVOYW1lKGltcG9ydE1ldGFVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXNvbHZlKGRlY29kZVVSSShuZXcgVVJMKGltcG9ydE1ldGFVcmwpLnBhdGhuYW1lKSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZm9sZGVyIG5hbWUgZnJvbSB0aGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCwgY29udmVydGluZyBpdCB0byBhIFBPU0lYLXN0eWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGltcG9ydE1ldGFVcmwgLSBUaGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZvbGRlciBuYW1lLlxuICogQHJldHVybnMgVGhlIFBPU0lYLXN0eWxlIGZvbGRlciBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyTmFtZShpbXBvcnRNZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZGlybmFtZShnZXRGaWxlTmFtZShpbXBvcnRNZXRhVXJsKSk7XG59XG5cbi8qKlxuICogTWFrZXMgYSBmaWxlIG5hbWUgYnkgYXBwZW5kaW5nIGFuIGV4dGVuc2lvbiB0byBhIGdpdmVuIGZpbGUgbmFtZS5cbiAqIElmIHRoZSBleHRlbnNpb24gaXMgZW1wdHksIHRoZSBmaWxlIG5hbWUgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKlxuICogQHBhcmFtIGZpbGVOYW1lIC0gVGhlIGZpbGUgbmFtZSB0byBhcHBlbmQgdGhlIGV4dGVuc2lvbiB0by5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGFwcGVuZCB0byB0aGUgZmlsZSBuYW1lLlxuICogQHJldHVybnMgVGhlIGZpbGUgbmFtZSB3aXRoIHRoZSBleHRlbnNpb24gYXBwZW5kZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRmlsZU5hbWUoZmlsZU5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZXh0ZW5zaW9uID8gYCR7ZmlsZU5hbWV9LiR7ZXh0ZW5zaW9ufWAgOiBmaWxlTmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgZ2l2ZW4gcGF0aCBieSBlbnN1cmluZyBpdCBpcyByZWxhdGl2ZSwgYWRkaW5nIFwiLi9cIiBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLCBzdGFydGluZyB3aXRoIFwiLi9cIiBpZiBpdCB3YXMgcmVsYXRpdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJZlJlbGF0aXZlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCBwYXRoLmluY2x1ZGVzKCc6JykpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIHJldHVybiBlbnN1cmVTdGFydHNXaXRoKHBhdGgsICcuLycpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgc2VxdWVuY2Ugb2YgcGF0aHMgb3IgcGF0aCBzZWdtZW50cyBpbnRvIGFuIGFic29sdXRlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyAtIFRoZSBzZXF1ZW5jZSBvZiBwYXRoIHNlZ21lbnRzIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgYWJzb2x1dGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCBwYXRoID0gcG9zaXgucmVzb2x2ZSguLi5wYXRoU2VnbWVudHMpO1xuICBwYXRoID0gdG9Qb3NpeFBhdGgocGF0aCk7XG4gIGNvbnN0IG1hdGNoID0gV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUC5leGVjKHBhdGgpO1xuICByZXR1cm4gbWF0Y2g/LlswXSA/
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1BhdGgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIHBhdGhzLlxuICovXG5cbmltcG9ydCBwYXRoQnJvd3NlcmlmeSBmcm9tICdwYXRoLWJyb3dzZXJpZnknO1xuXG5pbXBvcnQge1xuICBlbnN1cmVTdGFydHNXaXRoLFxuICByZXBsYWNlQWxsXG59IGZyb20gJy4vU3RyaW5nLnRzJztcblxuY29uc3QgV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUCA9IC9bYS16QS1aXTpcXC9bXjpdKiQvO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1ldGhvZHMgZm9yIGhhbmRsaW5nIFBPU0lYIHBhdGhzLlxuICovXG5leHBvcnQgY29uc3QgcG9zaXggPSBwYXRoQnJvd3NlcmlmeS5wb3NpeDtcblxuLyoqXG4gKiBUaGUgUE9TSVggcGF0aCBkZWxpbWl0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxpbWl0ZXIgPSBwb3NpeC5kZWxpbWl0ZXI7XG5cbi8qKlxuICogVGhlIFBPU0lYIHNlZ21lbnQgc2VwYXJhdG9yLlxuICovXG5leHBvcnQgY29uc3Qgc2VwID0gcGF0aEJyb3dzZXJpZnkucG9zaXguc2VwO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGJhc2UgbmFtZSBvZiBhIGZpbGUsIG9wdGlvbmFsbHkgcmVtb3ZpbmcgdGhlIGZpbGUgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gZ2V0IHRoZSBiYXNlIG5hbWUgZnJvbS5cbiAqIEBwYXJhbSBleHQgLSBBbiBvcHRpb25hbCBleHRlbnNpb24gdG8gcmVtb3ZlIGZyb20gdGhlIGJhc2UgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBiYXNlbmFtZSA9IHBvc2l4LmJhc2VuYW1lO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGRpcmVjdG9yeSBuYW1lIG9mIGEgcGF0aC5cbiAqXG4gKiBgZGlyZWN0b3J5YCBpcyB1c2VkIGluc3RlYWQgb2YgYGZvbGRlcmAgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIGBub2RlOnBhdGhgIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgZGlyZWN0b3J5IG5hbWUgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRpcm5hbWUgPSBwb3NpeC5kaXJuYW1lO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBleHRuYW1lID0gcG9zaXguZXh0bmFtZTtcblxuLyoqXG4gKiBGb3JtYXRzIGEgcGF0aCBvYmplY3QgaW50byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBwYXRoT2JqZWN0IC0gVGhlIHBhdGggb2JqZWN0IHRvIGZvcm1hdC5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgcGF0aCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSBwb3NpeC5mb3JtYXQ7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHBhdGggaXMgYWJzb2x1dGUuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcG9zaXguaXNBYnNvbHV0ZShwYXRoKSB8fCBXSU5ET1dTX1BPU0lYX0xJS0VfUEFUSF9SRUdfRVhQLmV4ZWMocGF0aCk/LlswXSA9PT0gcGF0aDtcbn1cblxuLyoqXG4gKiBKb2lucyBtdWx0aXBsZSBwYXRoIHNlZ21lbnRzIGludG8gYSBzaW5nbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aHMgLSBUaGUgcGF0aCBzZWdtZW50cyB0byBqb2luLlxuICogQHJldHVybnMgVGhlIGpvaW5lZCBwYXRoLlxuICovXG5leHBvcnQgY29uc3Qgam9pbiA9IHBvc2l4LmpvaW47XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIHJlc29sdmluZyAnLi4nIGFuZCAnLicgc2VnbWVudHMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gcG9zaXgubm9ybWFsaXplO1xuXG4vKipcbiAqIFBhcnNlcyBhIHBhdGggc3RyaW5nIGludG8gYSBwYXRoIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHN0cmluZyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aCBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZSA9IHBvc2l4LnBhcnNlO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSBvbmUgcGF0aCB0byBhbm90aGVyLlxuICpcbiAqIEBwYXJhbSBmcm9tIC0gVGhlIHN0YXJ0aW5nIHBhdGguXG4gKiBAcGFyYW0gdG8gLSBUaGUgZGVzdGluYXRpb24gcGF0aC5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AuXG4gKi9cbmV4cG9ydCBjb25zdCByZWxhdGl2ZSA9IHBvc2l4LnJlbGF0aXZlO1xuXG4vKipcbiAqIEdldHMgdGhlIGZpbGUgbmFtZSBmcm9tIHRoZSBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgLCBjb252ZXJ0aW5nIGl0IHRvIGEgUE9TSVgtc3R5bGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gaW1wb3J0TWV0YVVybCAtIFRoZSBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgZmlsZSBuYW1lLlxuICogQHJldHVybnMgVGhlIFBPU0lYLXN0eWxlIGZpbGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVOYW1lKGltcG9ydE1ldGFVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXNvbHZlKGRlY29kZVVSSShuZXcgVVJMKGltcG9ydE1ldGFVcmwpLnBhdGhuYW1lKSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZm9sZGVyIG5hbWUgZnJvbSB0aGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCwgY29udmVydGluZyBpdCB0byBhIFBPU0lYLXN0eWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGltcG9ydE1ldGFVcmwgLSBUaGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZvbGRlciBuYW1lLlxuICogQHJldHVybnMgVGhlIFBPU0lYLXN0eWxlIGZvbGRlciBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyTmFtZShpbXBvcnRNZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZGlybmFtZShnZXRGaWxlTmFtZShpbXBvcnRNZXRhVXJsKSk7XG59XG5cbi8qKlxuICogTWFrZXMgYSBmaWxlIG5hbWUgYnkgYXBwZW5kaW5nIGFuIGV4dGVuc2lvbiB0byBhIGdpdmVuIGZpbGUgbmFtZS5cbiAqIElmIHRoZSBleHRlbnNpb24gaXMgZW1wdHksIHRoZSBmaWxlIG5hbWUgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKlxuICogQHBhcmFtIGZpbGVOYW1lIC0gVGhlIGZpbGUgbmFtZSB0byBhcHBlbmQgdGhlIGV4dGVuc2lvbiB0by5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGFwcGVuZCB0byB0aGUgZmlsZSBuYW1lLlxuICogQHJldHVybnMgVGhlIGZpbGUgbmFtZSB3aXRoIHRoZSBleHRlbnNpb24gYXBwZW5kZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRmlsZU5hbWUoZmlsZU5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZXh0ZW5zaW9uID8gYCR7ZmlsZU5hbWV9LiR7ZXh0ZW5zaW9ufWAgOiBmaWxlTmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgZ2l2ZW4gcGF0aCBieSBlbnN1cmluZyBpdCBpcyByZWxhdGl2ZSwgYWRkaW5nIFwiLi9cIiBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLCBzdGFydGluZyB3aXRoIFwiLi9cIiBpZiBpdCB3YXMgcmVsYXRpdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJZlJlbGF0aXZlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCBwYXRoLmluY2x1ZGVzKCc6JykpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIHJldHVybiBlbnN1cmVTdGFydHNXaXRoKHBhdGgsICcuLycpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgc2VxdWVuY2Ugb2YgcGF0aHMgb3IgcGF0aCBzZWdtZW50cyBpbnRvIGFuIGFic29sdXRlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyAtIFRoZSBzZXF1ZW5jZSBvZiBwYXRoIHNlZ21lbnRzIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgYWJzb2x1dGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCBwYXRoID0gcG9zaXgucmVzb2x2ZSguLi5wYXRoU2VnbWVudHMpO1xuICBwYXRoID0gdG9Qb3NpeFBhdGgocGF0aCk7XG4gIGNvbnN0IG1hdGNoID0gV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUC5leGVjKHBhdGgpO1xuICByZXR1cm4gbWF0Y2g/LlswXSA/PyBwYXRoO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBwYXRoIHRvIGEgUE9TSVgtc3R5bGUgYnVmZmVyIGJ5IHJlcGxhY2luZyBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gYnVmZmVyIC0gVGhlIGJ1ZmZlciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBuZXcgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIFBPU0lYLXN0eWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4QnVmZmVyKGJ1ZmZlcjogQnVmZmVyKTogQnVmZmVyIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRvUG9zaXhQYXRoKFN0cmluZyhidWZmZXIpKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiBwYXRoIHRvIGEgUE9TSVgtc3R5bGUgcGF0aCBieSByZXBsYWNpbmcgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIFBPU0lYLXN0eWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4UGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChwYXRoLCAnXFxcXCcsICcvJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBTUEsT0FBTyxvQkFBb0I7QUFFM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxNQUFNLGtDQUFrQztBQUtqQyxNQUFNLFFBQVEsZUFBZTtBQUs3QixNQUFNLFlBQVksTUFBTTtBQUt4QixNQUFNLE1BQU0sZUFBZSxNQUFNO0FBU2pDLE1BQU0sV0FBVyxNQUFNO0FBVXZCLE1BQU0sVUFBVSxNQUFNO0FBUXRCLE1BQU0sVUFBVSxNQUFNO0FBUXRCLE1BQU0sU0FBUyxNQUFNO0FBUXJCLFNBQVMsV0FBVyxNQUF1QjtBQUNoRCxTQUFPLE1BQU0sV0FBVyxJQUFJLEtBQUssZ0NBQWdDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN2RjtBQVFPLE1BQU0sT0FBTyxNQUFNO0FBUW5CLE1BQU0sWUFBWSxNQUFNO0FBUXhCLE1BQU0sUUFBUSxNQUFNO0FBU3BCLE1BQU0sV0FBVyxNQUFNO0FBUXZCLFNBQVMsWUFBWSxlQUErQjtBQUN6RCxTQUFPLFFBQVEsVUFBVSxJQUFJLElBQUksYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUMzRDtBQVFPLFNBQVMsY0FBYyxlQUErQjtBQUMzRCxTQUFPLFFBQVEsWUFBWSxhQUFhLENBQUM7QUFDM0M7QUFVTyxTQUFTLGFBQWEsVUFBa0IsV0FBMkI7QUFDeEUsU0FBTyxZQUFZLEdBQUcsUUFBUSxJQUFJLFNBQVMsS0FBSztBQUNsRDtBQVFPLFNBQVMsb0JBQW9CLE1BQXNCO0FBQ3hELE1BQUksS0FBSyxXQUFXLEdBQUcsS0FBSyxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQzlDLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxpQkFBaUIsTUFBTSxJQUFJO0FBQ3BDO0FBUU8sU0FBUyxXQUFXLGNBQWdDO0FBQ3pELE1BQUksT0FBTyxNQUFNLFFBQVEsR0FBRyxZQUFZO0FBQ3hDLFNBQU8sWUFBWSxJQUFJO0FBQ3ZCLFFBQU0sUUFBUSxnQ0FBZ0MsS0FBSyxJQUFJO0FBQ3ZELFNBQU8sUUFBUSxDQUFDLEtBQUs7QUFDdkI7QUFRTyxTQUFTLGNBQWMsUUFBd0I7QUFDcEQsU0FBTyxPQUFPLEtBQUssWUFBWSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQ2hEO0FBUU8sU0FBUyxZQUFZLE1BQXNCO0FBQ2hELFNBQU8sV0FBVyxNQUFNLE1BQU0sR0FBRztBQUNuQzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -58,7 +58,7 @@ function exec(command, options = {}) {
|
|
|
58
58
|
});
|
|
59
59
|
child.on("close", (exitCode, exitSignal) => {
|
|
60
60
|
if (exitCode !== 0 && !ignoreExitCode) {
|
|
61
|
-
reject(new Error(`Command failed with exit code ${exitCode
|
|
61
|
+
reject(new Error(`Command failed with exit code ${exitCode ? String(exitCode) : "(null)"}
|
|
62
62
|
${stderr}`));
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
@@ -94,4 +94,4 @@ ${stderr}`));
|
|
|
94
94
|
export {
|
|
95
95
|
exec
|
|
96
96
|
};
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL0V4ZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgdG9Db21tYW5kTGluZSB9IGZyb20gJy4vQ2xpVXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgcHJvY2VzcyxcbiAgc3Bhd25cbn0gZnJvbSAnLi9Ob2RlTW9kdWxlcy50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIGZvciB0aGUgY29tbWFuZCBleGVjdXRpb24uXG4gICAqL1xuICBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqL1xuICBzaG91bGRGYWlsSWZDYWxsZWRGcm9tT3V0c2lkZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpZ25vcmVzIHRoZSBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBzaG91bGRJZ25vcmVFeGl0Q29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGZhbHNlLCBvbmx5IHJldHVybnMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHNob3VsZEluY2x1ZGVEZXRhaWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGlucHV0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHN0ZGluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgYSBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZGlkIG5vdCBleGl0IG5vcm1hbGx5LlxuICAgKi9cbiAgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzaWduYWwgdGhhdCBjYXVzZWQgdGhlIHByb2Nlc3MgdG8gYmUgdGVybWluYXRlZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgbm8gc2lnbmFsIHdhcyByZWNlaXZlZC5cbiAgICovXG4gIGV4aXRTaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHN0ZG91dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICogQHRocm93cyBJZiB0aGUgY29tbWFuZCBmYWlscyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBmYWxzZS5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIHRydWUsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiB7IHdpdGhEZXRhaWxzPzogZmFsc2UgfSAmIEV4ZWNPcHRpb24pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICogICAgICAgICAgVGhlIEV4ZWNSZXN1bHQgb2JqZWN0IGNvbnRhaW5zIHRoZSBleGl0IGNvZGUsIGV4aXQgc2lnbmFsLCBzdGRlcnIsIGFuZCBzdGRvdXQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGZhbHNlLlxuICogICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhpdCBjb2RlIGFuZCBzdGRlcnIuXG4gKiAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBhbmQgaWdub3JlRXhpdENvZGUgaXMgdHJ1ZSxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9uczogeyB3aXRoRGV0YWlsczogdHJ1ZSB9ICYgRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdD47XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgZmFsc2UuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyB0cnVlLFxuICogICAgICAgICB0aGUgZXJyb3IgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNvbW1hbmQ6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCA9IHByb2Nlc3MuY3dkKCksXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlsczogd2l0aERldGFpbHMgPSBmYWxzZSxcbiAgICBzdGRpbiA9ICcnXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoQXJyYXkuaXNBcnJheShjb21tYW5kKSkge1xuICAgIGNvbW1hbmQgPSB0b0NvbW1hbmRMaW5lKGNvbW1hbmQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRXhlYycpKGBFeGVjdXRpbmcgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihjb21tYW5kLCBbXSwge1xuICAgICAgY3dkLFxuICAgICAgZW52OiB7XG4gICAgICAgIERFQlVHX0NPTE9SUzogJzEnLFxuICAgICAgICAuLi5wcm9jZXNzLmVudlxuICAgICAgfSxcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0pO1xuXG4gICAgbGV0IHN0ZG91dCA9ICcnO1xuICAgIGxldCBzdGRlcnIgPSAnJztcblxuICAgIGNoaWxkLnN0ZGluLndyaXRlKHN0ZGluKTtcbiAgICBjaGlsZC5zdGRpbi5lbmQoKTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSk7XG4gICAgICB9XG4gICAgICBzdGRvdXQgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgc3Rkb3V0ID0gdHJpbUVuZChzdGRvdXQsICdcXG4nKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL0V4ZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgdG9Db21tYW5kTGluZSB9IGZyb20gJy4vQ2xpVXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgcHJvY2VzcyxcbiAgc3Bhd25cbn0gZnJvbSAnLi9Ob2RlTW9kdWxlcy50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIGZvciB0aGUgY29tbWFuZCBleGVjdXRpb24uXG4gICAqL1xuICBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqL1xuICBzaG91bGRGYWlsSWZDYWxsZWRGcm9tT3V0c2lkZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpZ25vcmVzIHRoZSBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBzaG91bGRJZ25vcmVFeGl0Q29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGZhbHNlLCBvbmx5IHJldHVybnMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHNob3VsZEluY2x1ZGVEZXRhaWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGlucHV0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHN0ZGluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgYSBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZGlkIG5vdCBleGl0IG5vcm1hbGx5LlxuICAgKi9cbiAgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzaWduYWwgdGhhdCBjYXVzZWQgdGhlIHByb2Nlc3MgdG8gYmUgdGVybWluYXRlZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgbm8gc2lnbmFsIHdhcyByZWNlaXZlZC5cbiAgICovXG4gIGV4aXRTaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHN0ZG91dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICogQHRocm93cyBJZiB0aGUgY29tbWFuZCBmYWlscyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBmYWxzZS5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIHRydWUsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiB7IHdpdGhEZXRhaWxzPzogZmFsc2UgfSAmIEV4ZWNPcHRpb24pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICogICAgICAgICAgVGhlIEV4ZWNSZXN1bHQgb2JqZWN0IGNvbnRhaW5zIHRoZSBleGl0IGNvZGUsIGV4aXQgc2lnbmFsLCBzdGRlcnIsIGFuZCBzdGRvdXQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGZhbHNlLlxuICogICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhpdCBjb2RlIGFuZCBzdGRlcnIuXG4gKiAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBhbmQgaWdub3JlRXhpdENvZGUgaXMgdHJ1ZSxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9uczogeyB3aXRoRGV0YWlsczogdHJ1ZSB9ICYgRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdD47XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgZmFsc2UuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyB0cnVlLFxuICogICAgICAgICB0aGUgZXJyb3IgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNvbW1hbmQ6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCA9IHByb2Nlc3MuY3dkKCksXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlsczogd2l0aERldGFpbHMgPSBmYWxzZSxcbiAgICBzdGRpbiA9ICcnXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoQXJyYXkuaXNBcnJheShjb21tYW5kKSkge1xuICAgIGNvbW1hbmQgPSB0b0NvbW1hbmRMaW5lKGNvbW1hbmQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRXhlYycpKGBFeGVjdXRpbmcgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihjb21tYW5kLCBbXSwge1xuICAgICAgY3dkLFxuICAgICAgZW52OiB7XG4gICAgICAgIERFQlVHX0NPTE9SUzogJzEnLFxuICAgICAgICAuLi5wcm9jZXNzLmVudlxuICAgICAgfSxcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0pO1xuXG4gICAgbGV0IHN0ZG91dCA9ICcnO1xuICAgIGxldCBzdGRlcnIgPSAnJztcblxuICAgIGNoaWxkLnN0ZGluLndyaXRlKHN0ZGluKTtcbiAgICBjaGlsZC5zdGRpbi5lbmQoKTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSk7XG4gICAgICB9XG4gICAgICBzdGRvdXQgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgc3Rkb3V0ID0gdHJpbUVuZChzdGRvdXQsICdcXG4nKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoZGF0YSk7XG4gICAgICB9XG4gICAgICBzdGRlcnIgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbignZW5kJywgKCkgPT4ge1xuICAgICAgc3RkZXJyID0gdHJpbUVuZChzdGRlcnIsICdcXG4nKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdjbG9zZScsIChleGl0Q29kZSwgZXhpdFNpZ25hbCkgPT4ge1xuICAgICAgaWYgKGV4aXRDb2RlICE9PSAwICYmICFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlID8gU3RyaW5nKGV4aXRDb2RlKSA6ICcobnVsbCknfVxcbiR7c3RkZXJyfWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXdpdGhEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgICBleGl0U2lnbmFsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBpZiAoIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghd2l0aERldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBleGl0Q29kZTogbnVsbCxcbiAgICAgICAgZXhpdFNpZ25hbDogbnVsbCxcbiAgICAgICAgc3RkZXJyLFxuICAgICAgICBzdGRvdXRcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFNQSxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGVBQWU7QUFDeEIsU0FBUyxxQkFBcUI7QUFDOUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFxR0EsU0FBUyxLQUFLLFNBQTRCLFVBQXNCLENBQUMsR0FBaUM7QUFDdkcsUUFBTTtBQUFBLElBQ0osTUFBTSxRQUFRLElBQUk7QUFBQSxJQUNsQixTQUFTLFFBQVE7QUFBQSxJQUNqQixzQkFBc0IsaUJBQWlCO0FBQUEsSUFDdkMsc0JBQXNCLGNBQWM7QUFBQSxJQUNwQyxRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osTUFBSSxNQUFNLFFBQVEsT0FBTyxHQUFHO0FBQzFCLGNBQVUsY0FBYyxPQUFPO0FBQUEsRUFDakM7QUFFQSxTQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUN0QyxtQkFBZSxNQUFNLEVBQUUsc0JBQXNCLE9BQU8sRUFBRTtBQUV0RCxVQUFNLFFBQVEsTUFBTSxTQUFTLENBQUMsR0FBRztBQUFBLE1BQy9CO0FBQUEsTUFDQSxLQUFLO0FBQUEsUUFDSCxjQUFjO0FBQUEsUUFDZCxHQUFHLFFBQVE7QUFBQSxNQUNiO0FBQUEsTUFDQSxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBRUQsUUFBSSxTQUFTO0FBQ2IsUUFBSSxTQUFTO0FBRWIsVUFBTSxNQUFNLE1BQU0sS0FBSztBQUN2QixVQUFNLE1BQU0sSUFBSTtBQUVoQixVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBaUI7QUFDeEMsVUFBSSxDQUFDLE9BQU87QUFDVixnQkFBUSxPQUFPLE1BQU0sSUFBSTtBQUFBLE1BQzNCO0FBQ0EsZ0JBQVUsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUNqQyxDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNO0FBQzNCLGVBQVMsUUFBUSxRQUFRLElBQUk7QUFBQSxJQUMvQixDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQWlCO0FBQ3hDLFVBQUksQ0FBQyxPQUFPO0FBQ1YsZ0JBQVEsT0FBTyxNQUFNLElBQUk7QUFBQSxNQUMzQjtBQUNBLGdCQUFVLEtBQUssU0FBUyxPQUFPO0FBQUEsSUFDakMsQ0FBQztBQUVELFVBQU0sT0FBTyxHQUFHLE9BQU8sTUFBTTtBQUMzQixlQUFTLFFBQVEsUUFBUSxJQUFJO0FBQUEsSUFDL0IsQ0FBQztBQUVELFVBQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxlQUFlO0FBQzFDLFVBQUksYUFBYSxLQUFLLENBQUMsZ0JBQWdCO0FBQ3JDLGVBQU8sSUFBSSxNQUFNLGlDQUFpQyxXQUFXLE9BQU8sUUFBUSxJQUFJLFFBQVE7QUFBQSxFQUFLLE1BQU0sRUFBRSxDQUFDO0FBQ3RHO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxhQUFhO0FBQ2hCLGdCQUFRLE1BQU07QUFDZDtBQUFBLE1BQ0Y7QUFDQSxjQUFRO0FBQUEsUUFDTjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUVELFVBQU0sR0FBRyxTQUFTLENBQUMsUUFBUTtBQUN6QixVQUFJLENBQUMsZ0JBQWdCO0FBQ25CLGVBQU8sR0FBRztBQUNWO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxhQUFhO0FBQ2hCLGdCQUFRLE1BQU07QUFDZDtBQUFBLE1BQ0Y7QUFFQSxjQUFRO0FBQUEsUUFDTixVQUFVO0FBQUEsUUFDVixZQUFZO0FBQUEsUUFDWjtBQUFBLFFBQ0E7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -38,7 +38,7 @@ function preprocessPlugin(isEsm) {
|
|
|
38
38
|
build.initialOptions.banner ??= {};
|
|
39
39
|
build.initialOptions.banner["js"] ??= "";
|
|
40
40
|
build.initialOptions.banner["js"] += `
|
|
41
|
-
(${(isEsm ? initEsm : initCjs)
|
|
41
|
+
(${String(isEsm ? initEsm : initCjs)})();
|
|
42
42
|
`;
|
|
43
43
|
build.onLoad({ filter: /\.(?:js|ts|cjs|mjs|cts|mts)$/ }, async (args) => {
|
|
44
44
|
let contents = await readFile(args.path, "utf-8");
|
|
@@ -47,7 +47,7 @@ function preprocessPlugin(isEsm) {
|
|
|
47
47
|
if (!contents.includes(key)) {
|
|
48
48
|
continue;
|
|
49
49
|
}
|
|
50
|
-
const valueStr = typeof value === "function" ? `(${value
|
|
50
|
+
const valueStr = typeof value === "function" ? `(${String(value)})()` : toJson(value, { functionHandlingMode: FunctionHandlingMode.Full });
|
|
51
51
|
if (contents.includes(`var ${variable}`)) {
|
|
52
52
|
continue;
|
|
53
53
|
}
|
|
@@ -125,4 +125,4 @@ function initEsm() {
|
|
|
125
125
|
export {
|
|
126
126
|
preprocessPlugin
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL2VzYnVpbGQvcHJlcHJvY2Vzc1BsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3VzdG9tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKiBUaGUgcHJlcHJvY2Vzc2luZyBpbmNsdWRlcyByZXBsYWNpbmcgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGFsdGVybmF0aXZlLFxuICogZW5zdXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIE9ic2lkaWFuJ3MgcGx1Z2luIHN5c3RlbSwgYW5kIGFkZGluZyBhIGJhc2ljIGBwcm9jZXNzYCBvYmplY3QgZm9yIGVudmlyb25tZW50c1xuICogd2hlcmUgYHByb2Nlc3NgIGlzIG5vdCBhdmFpbGFibGUgKGxpa2UgbW9iaWxlIG9yIHdlYiBlbnZpcm9ubWVudHMpLlxuICpcbiAqIEByZW1hcmtzXG4gKiBXZSBjYW5ub3QgdXNlIGAuYCBpbnN0ZWFkIG9mIGAoZG90KWAgaW4gdGhlIGFib3ZlIGRlc2NyaXB0aW9uIGJlY2F1c2UgdGhlIGZpbGUgaXRzZWxmIGlzIHByZXByb2Nlc3NlZCB3aXRoIHRoZSBzYW1lIHJ1bGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnLi4vLi4vT2JqZWN0VXRpbHMudHMnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgdG9Kc29uXG59IGZyb20gJy4uLy4uL09iamVjdFV0aWxzLnRzJztcbmltcG9ydCB7XG4gIG1ha2VWYWxpZFZhcmlhYmxlTmFtZSxcbiAgcmVwbGFjZUFsbFxufSBmcm9tICcuLi8uLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICcuLi9Ob2RlTW9kdWxlcy50cyc7XG5cbmludGVyZmFjZSBCcm93c2VyUHJvY2VzcyBleHRlbmRzIFBhcnRpYWw8Tm9kZUpTLlByb2Nlc3M+IHtcbiAgYnJvd3NlcjogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEVzbU1vZHVsZSB7XG4gIF9fZXNNb2R1bGU6IGJvb2xlYW47XG4gIGRlZmF1bHQ6IHVua25vd247XG59XG5cbmludGVyZmFjZSBSZXF1aXJlUGF0Y2hlZCBleHRlbmRzIE5vZGVKUy5SZXF1aXJlIHtcbiAgX19pc1BhdGNoZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IHByZXByb2Nlc3NlcyBKYXZhU2NyaXB0IGFuZCBUeXBlU2NyaXB0IGZpbGVzLlxuICpcbiAqIFRoaXMgcGx1Z2luIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdGFza3M6XG4gKiAtIFJlcGxhY2VzIGluc3RhbmNlcyBvZiBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgIHdpdGggYSBOb2RlLmpzLWNvbXBhdGlibGUgYF9fZmlsZW5hbWVgIGFsdGVybmF0aXZlLlxuICogLSBNb2RpZmllcyB0aGUgYHNvdXJjZU1hcHBpbmdVUkxgIGNvbW1lbnQgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBPYnNpZGlhbidzIHBsdWdpbiBzeXN0ZW0uXG4gKiAtIEFkZHMgYSBiYXNpYyBgcHJvY2Vzc2Agb2JqZWN0IHRvIHRoZSBnbG9iYWwgc2NvcGUgaWYgYHByb2Nlc3NgIGlzIHJlZmVyZW5jZWQgYnV0IG5vdCBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSBpc0VzbSAtIFdoZXRoZXIgdGhlIGJ1aWxkIGlzIGZvciBhbiBFU00gZm9ybWF0LlxuICogQHJldHVybnMgQW4gZXNidWlsZCBgUGx1Z2luYCBvYmplY3QgdGhhdCBoYW5kbGVzIHRoZSBwcmVwcm9jZXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2Vzc1BsdWdpbihpc0VzbT86IGJvb2xlYW4pOiBQbHVnaW4ge1xuICBjb25zdCByZXBsYWNlbWVudHMgPSBpc0VzbVxuICAgID8ge31cbiAgICA6IHtcbiAgICAgIFtyZXBsYWNlQWxsKCdpbXBvcnQoZG90KW1ldGEoZG90KXVybCcsICcoZG90KScsICcuJyldOiAoKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IGxvY2FsUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgICAgY29uc3QgdXJsID0gbG9jYWxSZXF1aXJlKCdub2RlOnVybCcpIGFzIHR5cGVvZiBpbXBvcnQoJ25vZGU6dXJsJyk7XG4gICAgICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncHJlcHJvY2VzcycsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmRlZmluZSA/Pz0ge307XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50cykpIHtcbiAgICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuZGVmaW5lW2tleV0gPSBgX18ke21ha2VWYWxpZFZhcmlhYmxlTmFtZShrZXkpfWA7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lciA/Pz0ge307XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXJbJ2pzJ10gPz89ICcnO1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyWydqcyddICs9IGBcXG4oJHsoaXNFc20gPyBpbml0RXNtIDogaW5pdENqcykudG9TdHJpbmcoKX0pKCk7XFxuYDtcblxuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvXFwuKD86anN8dHN8Y2pzfG1qc3xjdHN8bXRzKSQvIH0sIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGFyZ3MucGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVwbGFjZW1lbnRzKSkge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gYF9fJHttYWtlVmFsaWRWYXJpYWJsZU5hbWUoa2V5KX1gO1xuICAgICAgICAgIGlmICghY29udGVudHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHZhbHVlU3RyID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gYCgke3ZhbHVlLnRvU3RyaW5nKCl9KSgpYCA6IHRvSnNvbih2YWx1ZSwgeyBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbCB9KTtcbiAgICAgICAgICBpZiAoY29udGVudHMuaW5jbHVkZXMoYHZhciAke3ZhcmlhYmxlfWApKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGVudHMgPSBgdmFyICR7dmFyaWFibGV9ID0gZ2xvYmFsVGhpc1snJHtrZXl9J10gPz8gJHt2YWx1ZVN0cn07XFxuJHtjb250ZW50c31gO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSEFDSzogVGhlICR7Jyd9IHBhcnQgaXMgdXNlZCB0byBlbnN1cmUgT2JzaWRpYW4gbG9hZHMgdGhlIHBsdWdpbiBwcm9wZXJseSxcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBpdCBzdG9wcyBsb2FkaW5nIGFmdGVyIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzb3VyY2VNYXBwaW5nVVJMIGNvbW1lbnQuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmdcbiAgICAgICAgY29udGVudHMgPSByZXBsYWNlQWxsKGNvbnRlbnRzLCAvYFxccj9cXG5cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkwvZywgJ2BcXG4vLyMke1xcJ1xcJ30gc291cmNlTWFwcGluZ1VSTCcpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgbG9hZGVyOiAndHMnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRDanMoKTogdm9pZCB7XG4gIGNvbnN0IGdsb2JhbFRoaXNSZWNvcmQgPSBnbG9iYWxUaGlzIGFzIHVua25vd24gYXMgR2VuZXJpY09iamVjdDtcbiAgZ2xvYmFsVGhpc1JlY29yZFsnX19uYW1lJ10gPz89IG5hbWU7XG4gIGNvbnN0IG9yaWdpbmFsUmVxdWlyZSA9IHJlcXVpcmUgYXMgKE5vZGVKUy5SZXF1aXJlICYgUGFydGlhbDxSZXF1aXJlUGF0Y2hlZD4gfCB1bmRlZmluZWQpO1xuICBpZiAob3JpZ2luYWxSZXF1aXJlICYmICFvcmlnaW5hbFJlcXVpcmUuX19pc1BhdGNoZWQpIHtcbiAgICByZXF1aXJlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIChpZDogc3RyaW5nKSA9PiByZXF1aXJlUGF0Y2hlZChpZCksXG4gICAgICBvcmlnaW5hbFJlcXVpcmUsXG4gICAgICB7XG4gICAgICAgIF9faXNQYXRjaGVkOiB0cnVlXG4gICAgICB9XG4gICAgKSBhcyBSZXF1aXJlUGF0Y2hlZDtcbiAgfVxuXG4gIGNvbnN0IG5ld0Z1bmNzOiBSZWNvcmQ8c3RyaW5nLCAoKSA9PiB1bmtub3duPiA9IHtcbiAgICBfX2V4dHJhY3REZWZhdWx0OiAoKSA9PiBleHRyYWN0RGVmYXVsdCxcbiAgICBwcm9jZXNzOiAoKSA9PiB7XG4gICAgICBjb25zdCBicm93c2VyUHJvY2VzczogQnJvd3NlclByb2Nlc3MgPSB7XG4gICAgICAgIGJyb3dzZXI6IHRydWUsXG4gICAgICAgIGN3ZDogKCkgPT4gJy8nLFxuICAgICAgICBlbnY6IHt9LFxuICAgICAgICBwbGF0Zm9ybTogJ2FuZHJvaWQnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGJyb3dzZXJQcm9jZXNzO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdGdW5jcykpIHtcbiAgICBnbG9iYWxUaGlzUmVjb3JkW2tleV0gPz89IG5ld0Z1bmNzW2tleV0/LigpO1xuICB9XG5cbiAgZnVuY3Rpb24gbmFtZShvYmo6IHVua25vd24pOiB1bmtub3duIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0cmFjdERlZmF1bHQobW9kdWxlOiBQYXJ0aWFsPEVzbU1vZHVsZT4gfCB1bmRlZmluZWQpOiB1bmtub3duIHtcbiAgICByZXR1cm4gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtb2R1bGUgPyBtb2R1bGUuZGVmYXVsdCA6IG1vZHVsZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcXVpcmVQYXRjaGVkKGlkOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBjb25zdCBtb2R1bGUgPSBvcmlnaW5hbFJlcXVpcmU/LihpZCkgYXMgKFBhcnRpYWw8RXNtTW9kdWxlPiB8IHVuZGVmaW5lZCk7XG4gICAgaWYgKG1vZHVsZSkge1xuICAgICAgcmV0dXJuIGV4dHJhY3REZWZhdWx0KG1vZHVsZSk7XG4gICAgfVxuXG4gICAgaWYgKGlkID09PSAncHJvY2VzcycgfHwgaWQgPT09ICdub2RlOnByb2Nlc3MnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNb2R1bGUgbm90IGZvdW5kOiAke2lkfS4gRmFrZSBwcm9jZXNzIG9iamVjdCBpcyByZXR1cm5lZCBpbnN0ZWFkLmApO1xuICAgICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2VzcztcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGBNb2R1bGUgbm90IGZvdW5kOiAke2lkfS4gRW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGluc3RlYWQuYCk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRFc20oKTogdm9pZCB7XG4gIGlmICgoZ2xvYmFsVGhpcy5wcm9jZXNzIGFzIE5vZGVKUy5Qcm9jZXNzIHwgdW5kZWZpbmVkKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGJyb3dzZXJQcm9jZXNzOiBCcm93c2VyUHJvY2VzcyA9IHtcbiAgICBicm93c2VyOiB0cnVlLFxuICAgIGN3ZDogKCkgPT4gJy8nLFxuICAgIGVudjoge30sXG4gICAgcGxhdGZvcm06ICdhbmRyb2lkJ1xuICB9O1xuICBnbG9iYWxUaGlzLnByb2Nlc3MgPSBicm93c2VyUHJvY2VzcyBhcyBOb2RlSlMuUHJvY2Vzcztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFnQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZ0JBQWdCO0FBMEJsQixTQUFTLGlCQUFpQixPQUF5QjtBQUN4RCxRQUFNLGVBQWUsUUFDakIsQ0FBQyxJQUNEO0FBQUEsSUFDQSxDQUFDLFdBQVcsMkJBQTJCLFNBQVMsR0FBRyxDQUFDLEdBQUcsTUFBYztBQUNuRSxVQUFJLE9BQU8sZUFBZSxVQUFVO0FBQ2xDLGNBQU0sZUFBZTtBQUNyQixjQUFNLE1BQU0sYUFBYSxVQUFVO0FBQ25DLGVBQU8sSUFBSSxjQUFjLFVBQVUsRUFBRTtBQUFBLE1BQ3ZDO0FBRUEsVUFBSSxPQUFPLFdBQVcsYUFBYTtBQUNqQyxlQUFPLE9BQU8sU0FBUztBQUFBLE1BQ3pCO0FBR0EsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUYsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTSxPQUFhO0FBQ2pCLFlBQU0sZUFBZSxXQUFXLENBQUM7QUFFakMsaUJBQVcsT0FBTyxPQUFPLEtBQUssWUFBWSxHQUFHO0FBQzNDLGNBQU0sZUFBZSxPQUFPLEdBQUcsSUFBSSxLQUFLLHNCQUFzQixHQUFHLENBQUM7QUFBQSxNQUNwRTtBQUVBLFlBQU0sZUFBZSxXQUFXLENBQUM7QUFDakMsWUFBTSxlQUFlLE9BQU8sSUFBSSxNQUFNO0FBQ3RDLFlBQU0sZUFBZSxPQUFPLElBQUksS0FBSztBQUFBLElBQU8sUUFBUSxVQUFVLFNBQVMsU0FBUyxDQUFDO0FBQUE7QUFFakYsWUFBTSxPQUFPLEVBQUUsUUFBUSwrQkFBK0IsR0FBRyxPQUFPLFNBQVM7QUFDdkUsWUFBSSxXQUFXLE1BQU0sU0FBUyxLQUFLLE1BQU0sT0FBTztBQUVoRCxtQkFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxZQUFZLEdBQUc7QUFDdkQsZ0JBQU0sV0FBVyxLQUFLLHNCQUFzQixHQUFHLENBQUM7QUFDaEQsY0FBSSxDQUFDLFNBQVMsU0FBUyxHQUFHLEdBQUc7QUFDM0I7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sV0FBVyxPQUFPLFVBQVUsYUFBYSxJQUFJLE1BQU0sU0FBUyxDQUFDLFFBQVEsT0FBTyxPQUFPLEVBQUUsc0JBQXNCLHFCQUFxQixLQUFLLENBQUM7QUFDNUksY0FBSSxTQUFTLFNBQVMsT0FBTyxRQUFRLEVBQUUsR0FBRztBQUN4QztBQUFBLFVBQ0Y7QUFDQSxxQkFBVyxPQUFPLFFBQVEsa0JBQWtCLEdBQUcsU0FBUyxRQUFRO0FBQUEsRUFBTSxRQUFRO0FBQUEsUUFDaEY7QUFLQSxtQkFBVyxXQUFXLFVBQVUsaUNBQWlDLDhCQUFnQztBQUVqRyxlQUFPO0FBQUEsVUFDTDtBQUFBLFVBQ0EsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxVQUFnQjtBQUN2QixRQUFNLG1CQUFtQjtBQUN6QixtQkFBaUIsUUFBUSxNQUFNO0FBQy9CLFFBQU0sa0JBQWtCO0FBQ3hCLE1BQUksbUJBQW1CLENBQUMsZ0JBQWdCLGFBQWE7QUFDbkQsY0FBVSxPQUFPO0FBQUEsTUFDZixDQUFDLE9BQWUsZUFBZSxFQUFFO0FBQUEsTUFDakM7QUFBQSxNQUNBO0FBQUEsUUFDRSxhQUFhO0FBQUEsTUFDZjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsUUFBTSxXQUEwQztBQUFBLElBQzlDLGtCQUFrQixNQUFNO0FBQUEsSUFDeEIsU0FBUyxNQUFNO0FBQ2IsWUFBTSxpQkFBaUM7QUFBQSxRQUNyQyxTQUFTO0FBQUEsUUFDVCxLQUFLLE1BQU07QUFBQSxRQUNYLEtBQUssQ0FBQztBQUFBLFFBQ04sVUFBVTtBQUFBLE1BQ1o7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxhQUFXLE9BQU8sT0FBTyxLQUFLLFFBQVEsR0FBRztBQUN2QyxxQkFBaUIsR0FBRyxNQUFNLFNBQVMsR0FBRyxJQUFJO0FBQUEsRUFDNUM7QUFFQSxXQUFTLEtBQUssS0FBdUI7QUFDbkMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxXQUFTLGVBQWUsUUFBaUQ7QUFDdkUsV0FBTyxVQUFVLE9BQU8sY0FBYyxhQUFhLFNBQVMsT0FBTyxVQUFVO0FBQUEsRUFDL0U7QUFFQSxXQUFTLGVBQWUsSUFBcUI7QUFDM0MsVUFBTSxTQUFTLGtCQUFrQixFQUFFO0FBQ25DLFFBQUksUUFBUTtBQUNWLGFBQU8sZUFBZSxNQUFNO0FBQUEsSUFDOUI7QUFFQSxRQUFJLE9BQU8sYUFBYSxPQUFPLGdCQUFnQjtBQUM3QyxjQUFRLE1BQU0scUJBQXFCLEVBQUUsNENBQTRDO0FBQ2pGLGFBQU8sV0FBVztBQUFBLElBQ3BCO0FBRUEsWUFBUSxNQUFNLHFCQUFxQixFQUFFLHFDQUFxQztBQUMxRSxXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFFQSxTQUFTLFVBQWdCO0FBQ3ZCLE1BQUssV0FBVyxTQUF3QztBQUN0RDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGlCQUFpQztBQUFBLElBQ3JDLFNBQVM7QUFBQSxJQUNULEtBQUssTUFBTTtBQUFBLElBQ1gsS0FBSyxDQUFDO0FBQUEsSUFDTixVQUFVO0FBQUEsRUFDWjtBQUNBLGFBQVcsVUFBVTtBQUN2QjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL2VzYnVpbGQvcHJlcHJvY2Vzc1BsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3VzdG9tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKiBUaGUgcHJlcHJvY2Vzc2luZyBpbmNsdWRlcyByZXBsYWNpbmcgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGFsdGVybmF0aXZlLFxuICogZW5zdXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIE9ic2lkaWFuJ3MgcGx1Z2luIHN5c3RlbSwgYW5kIGFkZGluZyBhIGJhc2ljIGBwcm9jZXNzYCBvYmplY3QgZm9yIGVudmlyb25tZW50c1xuICogd2hlcmUgYHByb2Nlc3NgIGlzIG5vdCBhdmFpbGFibGUgKGxpa2UgbW9iaWxlIG9yIHdlYiBlbnZpcm9ubWVudHMpLlxuICpcbiAqIEByZW1hcmtzXG4gKiBXZSBjYW5ub3QgdXNlIGAuYCBpbnN0ZWFkIG9mIGAoZG90KWAgaW4gdGhlIGFib3ZlIGRlc2NyaXB0aW9uIGJlY2F1c2UgdGhlIGZpbGUgaXRzZWxmIGlzIHByZXByb2Nlc3NlZCB3aXRoIHRoZSBzYW1lIHJ1bGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnLi4vLi4vT2JqZWN0VXRpbHMudHMnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgdG9Kc29uXG59IGZyb20gJy4uLy4uL09iamVjdFV0aWxzLnRzJztcbmltcG9ydCB7XG4gIG1ha2VWYWxpZFZhcmlhYmxlTmFtZSxcbiAgcmVwbGFjZUFsbFxufSBmcm9tICcuLi8uLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICcuLi9Ob2RlTW9kdWxlcy50cyc7XG5cbmludGVyZmFjZSBCcm93c2VyUHJvY2VzcyBleHRlbmRzIFBhcnRpYWw8Tm9kZUpTLlByb2Nlc3M+IHtcbiAgYnJvd3NlcjogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEVzbU1vZHVsZSB7XG4gIF9fZXNNb2R1bGU6IGJvb2xlYW47XG4gIGRlZmF1bHQ6IHVua25vd247XG59XG5cbmludGVyZmFjZSBSZXF1aXJlUGF0Y2hlZCBleHRlbmRzIE5vZGVKUy5SZXF1aXJlIHtcbiAgX19pc1BhdGNoZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IHByZXByb2Nlc3NlcyBKYXZhU2NyaXB0IGFuZCBUeXBlU2NyaXB0IGZpbGVzLlxuICpcbiAqIFRoaXMgcGx1Z2luIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdGFza3M6XG4gKiAtIFJlcGxhY2VzIGluc3RhbmNlcyBvZiBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgIHdpdGggYSBOb2RlLmpzLWNvbXBhdGlibGUgYF9fZmlsZW5hbWVgIGFsdGVybmF0aXZlLlxuICogLSBNb2RpZmllcyB0aGUgYHNvdXJjZU1hcHBpbmdVUkxgIGNvbW1lbnQgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBPYnNpZGlhbidzIHBsdWdpbiBzeXN0ZW0uXG4gKiAtIEFkZHMgYSBiYXNpYyBgcHJvY2Vzc2Agb2JqZWN0IHRvIHRoZSBnbG9iYWwgc2NvcGUgaWYgYHByb2Nlc3NgIGlzIHJlZmVyZW5jZWQgYnV0IG5vdCBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSBpc0VzbSAtIFdoZXRoZXIgdGhlIGJ1aWxkIGlzIGZvciBhbiBFU00gZm9ybWF0LlxuICogQHJldHVybnMgQW4gZXNidWlsZCBgUGx1Z2luYCBvYmplY3QgdGhhdCBoYW5kbGVzIHRoZSBwcmVwcm9jZXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2Vzc1BsdWdpbihpc0VzbT86IGJvb2xlYW4pOiBQbHVnaW4ge1xuICBjb25zdCByZXBsYWNlbWVudHMgPSBpc0VzbVxuICAgID8ge31cbiAgICA6IHtcbiAgICAgIFtyZXBsYWNlQWxsKCdpbXBvcnQoZG90KW1ldGEoZG90KXVybCcsICcoZG90KScsICcuJyldOiAoKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IGxvY2FsUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgICAgY29uc3QgdXJsID0gbG9jYWxSZXF1aXJlKCdub2RlOnVybCcpIGFzIHR5cGVvZiBpbXBvcnQoJ25vZGU6dXJsJyk7XG4gICAgICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncHJlcHJvY2VzcycsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmRlZmluZSA/Pz0ge307XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50cykpIHtcbiAgICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuZGVmaW5lW2tleV0gPSBgX18ke21ha2VWYWxpZFZhcmlhYmxlTmFtZShrZXkpfWA7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lciA/Pz0ge307XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXJbJ2pzJ10gPz89ICcnO1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyWydqcyddICs9IGBcXG4oJHtTdHJpbmcoaXNFc20gPyBpbml0RXNtIDogaW5pdENqcyl9KSgpO1xcbmA7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogL1xcLig/OmpzfHRzfGNqc3xtanN8Y3RzfG10cykkLyB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCByZWFkRmlsZShhcmdzLnBhdGgsICd1dGYtOCcpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlcGxhY2VtZW50cykpIHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGBfXyR7bWFrZVZhbGlkVmFyaWFibGVOYW1lKGtleSl9YDtcbiAgICAgICAgICBpZiAoIWNvbnRlbnRzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB2YWx1ZVN0ciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGAoJHtTdHJpbmcodmFsdWUpfSkoKWAgOiB0b0pzb24odmFsdWUsIHsgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGwgfSk7XG4gICAgICAgICAgaWYgKGNvbnRlbnRzLmluY2x1ZGVzKGB2YXIgJHt2YXJpYWJsZX1gKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRlbnRzID0gYHZhciAke3ZhcmlhYmxlfSA9IGdsb2JhbFRoaXNbJyR7a2V5fSddID8/ICR7dmFsdWVTdHJ9O1xcbiR7Y29udGVudHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhBQ0s6IFRoZSAkeycnfSBwYXJ0IGlzIHVzZWQgdG8gZW5zdXJlIE9ic2lkaWFuIGxvYWRzIHRoZSBwbHVnaW4gcHJvcGVybHksXG4gICAgICAgIC8vIE90aGVyd2lzZSwgaXQgc3RvcHMgbG9hZGluZyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc291cmNlTWFwcGluZ1VSTCBjb21tZW50LlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGVtcGxhdGUtY3VybHktaW4tc3RyaW5nXG4gICAgICAgIGNvbnRlbnRzID0gcmVwbGFjZUFsbChjb250ZW50cywgL2BcXHI/XFxuXFwvXFwvIyBzb3VyY2VNYXBwaW5nVVJML2csICdgXFxuLy8jJHtcXCdcXCd9IHNvdXJjZU1hcHBpbmdVUkwnKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnRzLFxuICAgICAgICAgIGxvYWRlcjogJ3RzJ1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0Q2pzKCk6IHZvaWQge1xuICBjb25zdCBnbG9iYWxUaGlzUmVjb3JkID0gZ2xvYmFsVGhpcyBhcyB1bmtub3duIGFzIEdlbmVyaWNPYmplY3Q7XG4gIGdsb2JhbFRoaXNSZWNvcmRbJ19fbmFtZSddID8/PSBuYW1lO1xuICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSByZXF1aXJlIGFzIChOb2RlSlMuUmVxdWlyZSAmIFBhcnRpYWw8UmVxdWlyZVBhdGNoZWQ+IHwgdW5kZWZpbmVkKTtcbiAgaWYgKG9yaWdpbmFsUmVxdWlyZSAmJiAhb3JpZ2luYWxSZXF1aXJlLl9faXNQYXRjaGVkKSB7XG4gICAgcmVxdWlyZSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAoaWQ6IHN0cmluZykgPT4gcmVxdWlyZVBhdGNoZWQoaWQpLFxuICAgICAgb3JpZ2luYWxSZXF1aXJlLFxuICAgICAge1xuICAgICAgICBfX2lzUGF0Y2hlZDogdHJ1ZVxuICAgICAgfVxuICAgICkgYXMgUmVxdWlyZVBhdGNoZWQ7XG4gIH1cblxuICBjb25zdCBuZXdGdW5jczogUmVjb3JkPHN0cmluZywgKCkgPT4gdW5rbm93bj4gPSB7XG4gICAgX19leHRyYWN0RGVmYXVsdDogKCkgPT4gZXh0cmFjdERlZmF1bHQsXG4gICAgcHJvY2VzczogKCkgPT4ge1xuICAgICAgY29uc3QgYnJvd3NlclByb2Nlc3M6IEJyb3dzZXJQcm9jZXNzID0ge1xuICAgICAgICBicm93c2VyOiB0cnVlLFxuICAgICAgICBjd2Q6ICgpID0+ICcvJyxcbiAgICAgICAgZW52OiB7fSxcbiAgICAgICAgcGxhdGZvcm06ICdhbmRyb2lkJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiBicm93c2VyUHJvY2VzcztcbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RnVuY3MpKSB7XG4gICAgZ2xvYmFsVGhpc1JlY29yZFtrZXldID8/PSBuZXdGdW5jc1trZXldPy4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5hbWUob2JqOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0KG1vZHVsZTogUGFydGlhbDxFc21Nb2R1bGU+IHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSAmJiAnZGVmYXVsdCcgaW4gbW9kdWxlID8gbW9kdWxlLmRlZmF1bHQgOiBtb2R1bGU7XG4gIH1cblxuICBmdW5jdGlvbiByZXF1aXJlUGF0Y2hlZChpZDogc3RyaW5nKTogdW5rbm93biB7XG4gICAgY29uc3QgbW9kdWxlID0gb3JpZ2luYWxSZXF1aXJlPy4oaWQpIGFzIChQYXJ0aWFsPEVzbU1vZHVsZT4gfCB1bmRlZmluZWQpO1xuICAgIGlmIChtb2R1bGUpIHtcbiAgICAgIHJldHVybiBleHRyYWN0RGVmYXVsdChtb2R1bGUpO1xuICAgIH1cblxuICAgIGlmIChpZCA9PT0gJ3Byb2Nlc3MnIHx8IGlkID09PSAnbm9kZTpwcm9jZXNzJykge1xuICAgICAgY29uc29sZS5lcnJvcihgTW9kdWxlIG5vdCBmb3VuZDogJHtpZH0uIEZha2UgcHJvY2VzcyBvYmplY3QgaXMgcmV0dXJuZWQgaW5zdGVhZC5gKTtcbiAgICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihgTW9kdWxlIG5vdCBmb3VuZDogJHtpZH0uIEVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBpbnN0ZWFkLmApO1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RXNtKCk6IHZvaWQge1xuICBpZiAoKGdsb2JhbFRoaXMucHJvY2VzcyBhcyBOb2RlSlMuUHJvY2VzcyB8IHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBicm93c2VyUHJvY2VzczogQnJvd3NlclByb2Nlc3MgPSB7XG4gICAgYnJvd3NlcjogdHJ1ZSxcbiAgICBjd2Q6ICgpID0+ICcvJyxcbiAgICBlbnY6IHt9LFxuICAgIHBsYXRmb3JtOiAnYW5kcm9pZCdcbiAgfTtcbiAgZ2xvYmFsVGhpcy5wcm9jZXNzID0gYnJvd3NlclByb2Nlc3MgYXMgTm9kZUpTLlByb2Nlc3M7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZ0JBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdCQUFnQjtBQTBCbEIsU0FBUyxpQkFBaUIsT0FBeUI7QUFDeEQsUUFBTSxlQUFlLFFBQ2pCLENBQUMsSUFDRDtBQUFBLElBQ0EsQ0FBQyxXQUFXLDJCQUEyQixTQUFTLEdBQUcsQ0FBQyxHQUFHLE1BQWM7QUFDbkUsVUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxjQUFNLGVBQWU7QUFDckIsY0FBTSxNQUFNLGFBQWEsVUFBVTtBQUNuQyxlQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7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
|