obsidian-dev-utils 100.1.0 → 100.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/integration-test-plugin/main.js +1 -0
- package/dist/lib/cjs/desktop-zip-extractor.cjs +1 -1
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +2 -1
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +4 -0
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +46 -9
- package/dist/lib/esm/desktop-zip-extractor.mjs +1 -1
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +4 -0
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +2 -1
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +46 -9
- package/package.json +1 -1
|
@@ -41,7 +41,7 @@ function ensureBrowserProcess() {
|
|
|
41
41
|
})();
|
|
42
42
|
})();
|
|
43
43
|
|
|
44
|
-
const LIBRARY_VERSION = "100.
|
|
44
|
+
const LIBRARY_VERSION = "100.2.0";
|
|
45
45
|
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-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-dev-utils-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-dev-utils-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-dev-utils-lock-indicator-flash {\n animation: obsidian-dev-utils-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-dev-utils-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-dev-utils-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-dev-utils.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-dev-utils-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-dev-utils.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-dev-utils.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-dev-utils-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-dev-utils.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button:hover,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-dev-utils.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-dev-utils.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-dev-utils.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-dev-utils.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-dev-utils.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-dev-utils.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-dev-utils.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-dev-utils.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice .obsidian-dev-utils.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-dev-utils.plugin-suggestion-banner button {\n width: fit-content;\n}\n\n.obsidian-dev-utils.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-dev-utils.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-dev-utils.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-dev-utils.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-dev-utils.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\nbody button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus:invalid:not(.untouched),\n.obsidian-dev-utils textarea:active:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus:invalid:not(.untouched) {\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/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.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;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACFJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;AC3DF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;AChCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACRJ;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;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//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-dev-utils%60.%5Cn.obsidian-dev-utils-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-dev-utils-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-dev-utils-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-dev-utils-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%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//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60,%20so%20this%20rule%20only%5Cn%20%20//%20has%20to%20supply%20the%20separator%20and%20the%20wrapping%20that%20a%20self-created%20bar%20does%20not%20inherit;%20in%20%60Buttons%60%5Cn%20%20//%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%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&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%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%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//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20with%20a%5Cn//%20%60body%60-prefixed%20selector%20(specificity%200,1,2)%20so%20it%20wins%20over%20tldraw's%20(0,1,1)%20while%5Cn//%20Staying%20correct%20for%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cnbody%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid:not(.untouched)%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:not(.untouched)%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";
|
|
46
46
|
export {
|
|
47
47
|
LIBRARY_STYLES,
|
|
@@ -265,4 +265,4 @@ async function resolveDemoVaultArchive(params) {
|
|
|
265
265
|
export {
|
|
266
266
|
openDemoVault
|
|
267
267
|
};
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCBhcmNoaXZlIHRvIGVhY2ggR2l0SHViIHJlbGVhc2UgKHNlZVxuICogYGFyY2hpdmVQbHVnaW5EZW1vVmF1bHRgIGluIGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2A7IGV2ZXJ5IG5hbWUgc2hhcmVkIHdpdGggaXQgY29tZXMgZnJvbVxuICogYGRlbW8tdmF1bHQtbmFtaW5nLnRzYCkuIFRoaXMgcmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSxcbiAqIGRvd25sb2FkcyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGNob3NlbiB2ZXJzaW9uLCBhbmQgb3BlbnMgaXQgYXMgYSB2YXVsdCBpbiBhIG5ldyB3aW5kb3cuIFdoZW4gdGhlXG4gKiBpbnN0YWxsZWQgcGx1Z2luIHZlcnNpb24gaXMgYmVoaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSwgdGhlIHVzZXIgaXMgb2ZmZXJlZCBhIGNob2ljZSBiZXR3ZWVuIHRoZSB0d29cbiAqIHZlcnNpb25zLlxuICpcbiAqIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duIGltbWVkaWF0ZWx5IChkb3dubG9hZCArIGV4dHJhY3Rpb24gY2FuIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWVcbiAqIHNvbWV0aGluZyBpcyBoYXBwZW5pbmcgcmlnaHQgYXdheSkuIE9ubHkgdGhlIGRvd25sb2FkZWQgQVJDSElWRSBpcyBjYWNoZWQgKHVuZGVyIHRoZSBPUyB0ZW1wXG4gKiBkaXJlY3RvcnkpOyBldmVyeSBpbnZvY2F0aW9uIGV4dHJhY3RzIGEgRlJFU0ggY29weSBpbnRvIGl0cyBvd24gdGVtcG9yYXJ5IGZvbGRlciBhbmQgb3BlbnMgdGhhdCwgc28gYVxuICogcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW50byBhIG5ldyBvbmUuIFRoZSB2YXVsdCBmb2xkZXIgaXMgdGhlIGFyY2hpdmUncyBvd24gc2luZ2xlXG4gKiB0b3AtbGV2ZWwgZm9sZGVyLCBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gLCB3aGljaCByZWFkcyBuaWNlbHkgaW4gT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlclxuICogYW5kIGlzIHRoZSBzYW1lIG5hbWUgYSBoYW5kLXVuemlwcGVkIGFyY2hpdmUgcHJvZHVjZXMuIE9ycGhhbmVkIGV4dHJhY3RlZCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tXG4gKiBlYXJsaWVyIHNlc3Npb25zIGFyZSBjbGVhbmVkIHVwIChiZXN0LWVmZm9ydCkgb24gZWFjaCBvcGVuLlxuICpcbiAqICoqTm90aGluZyBoZXJlIG1heSB0b3VjaCBhIHBsYXRmb3JtLW9ubHkgQVBJIHdoaWxlIHRoZSBtb2R1bGUgSU5JVElBTElaRVMuKiogVGhlIGBub2RlOmAgaW1wb3J0cyBiZWxvd1xuICogYXJlIHNhZmUgdG8gbWVyZWx5IGV2YWx1YXRlIG9uIG1vYmlsZSBcdTIwMTQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIG5vdGhpbmcgcmVhZHMgaXQgYXRcbiAqIGxvYWQgdGltZSBcdTIwMTQgYW5kIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHJlLWV4cG9ydCB0aGlzIG1vZHVsZSwgdGhhdCBpcyBhIGxvYWQtYmVhcmluZyBwcm9wZXJ0eSBvZlxuICogdGhlIHdob2xlIGxpYnJhcnkgcmF0aGVyIHRoYW4gYSBkZXRhaWwgb2YgdGhpcyBmaWxlLiBJdCB3YXMgbGVhcm5lZCB0aGUgaGFyZCB3YXk6IHRoaXMgbW9kdWxlIG9uY2VcbiAqIGltcG9ydGVkIGBhZG0temlwYCwgd2hvc2UgemlwLWNyeXB0byBtZXRob2Qgb3BlbnMgd2l0aCBhIHRvcC1sZXZlbFxuICogYGNvbnN0IHsgcmFuZG9tRmlsbFN5bmMgfSA9IHJlcXVpcmUoJ2NyeXB0bycpYCwgYW5kIGEgc3RhdGljIGBpbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnYCB0aGVyZWZvcmVcbiAqIGtpbGxlZCB0aGUgbGlicmFyeSdzIGxvYWQgb24gQW5kcm9pZCAoc2VlIHRoZSBtb2JpbGUtbG9hZCBjaGVjayBpblxuICogYHNjcmlwdHMvaGVscGVycy9hc3NlcnQtbW9iaWxlLWxvYWRhYmxlLWJ1bmRsZS50c2AsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCBvbiBleGFjdGx5IHRoYXQpLiBFeHRyYWN0aW9uXG4gKiBub3cgZ29lcyB0aHJvdWdoIGBkZXNrdG9wLXppcC1leHRyYWN0b3IudHNgLCB3aGljaCBuZWVkcyBubyBkZXBlbmRlbmN5IGF0IGFsbCBcdTIwMTQgYnV0IGFueSBmdXR1cmVcbiAqIGRlcGVuZGVuY3kgdGhhdCBpbml0aWFsaXplcyBhZ2FpbnN0IGEgcGxhdGZvcm0tb25seSBBUEkgc3RpbGwgaGFzIHRvIGJlIGRlZmVycmVkIGJlaGluZCBhIGNhbGwtdGltZVxuICogYGltcG9ydCgpYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgY29tcGFyZVZlcnNpb25zIH0gZnJvbSAnY29tcGFyZS12ZXJzaW9ucyc7XG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyAtLSBEZXNrdG9wLW9ubHkgZmVhdHVyZSBnYXRlZCBieSBgUGxhdGZvcm0uaXNEZXNrdG9wQXBwYDsgdGhlIGNvbW1hbmQgaXMgaGlkZGVuIG9uIG1vYmlsZSBzbyB0aGVzZSBOb2RlIEFQSXMgYXJlIG5ldmVyIHJlYWNoZWQgdGhlcmUuICovXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdub2RlOmJ1ZmZlcic7XG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICBybVN5bmMsXG4gIHN0YXRTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG4vKiBlc2xpbnQtZW5hYmxlIGltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzIC0tIERlc2t0b3Atb25seSBmZWF0dXJlIGdhdGVkIGJ5IGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgOyB0aGUgY29tbWFuZCBpcyBoaWRkZW4gb24gbW9iaWxlIHNvIHRoZXNlIE5vZGUgQVBJcyBhcmUgbmV2ZXIgcmVhY2hlZCB0aGVyZS4gKi9cbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VDb21wb25lbnREZWxheWVkTm90aWNlXG59IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IGV4dHJhY3RaaXBBcmNoaXZlIH0gZnJvbSAnLi4vZGVza3RvcC16aXAtZXh0cmFjdG9yLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7XG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlTW9kZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LW5hbWluZy50cyc7XG5pbXBvcnQgeyBzZWxlY3RPcHRpb24gfSBmcm9tICcuL21vZGFscy9zZWxlY3Qtb3B0aW9uLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgb3BlbkRlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkRlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgdG8gbG9jYXRlIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgdG8gbmFtZSB0aGUgYXJjaGl2ZSBhc3NldCwgYW5kIHRvIG5hbWUgdGhlXG4gICAqIGNhY2hlZCBhcmNoaXZlIGFuZCB0aGUgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLCB1c2VkIHRvIGxhYmVsIHRoZSBub3RpY2VzIGFuZCB0aGUgdmVyc2lvbi1jaG9pY2UgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHJlcG9ydCBwcm9ncmVzcyBhbmQgcHJvYmxlbXMgKHBsdWdpbiBub3QgaW4gdGhlIHJlZ2lzdHJ5LCBtaXNzaW5nXG4gICAqIGFyY2hpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uLCBvZmZlcmVkIGFzIG9uZSBvZiB0aGUgdmVyc2lvbiBjaG9pY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXMge1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVEZW1vVmF1bHRBcmNoaXZlUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgcmVhZG9ubHkgcHJvZ3Jlc3NOb3RpY2U6IFBsdWdpbk5vdGljZUNvbXBvbmVudERlbGF5ZWROb3RpY2U7XG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5jb25zdCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIgPSAnb2JzaWRpYW4tZGVtby12YXVsdHMnO1xuY29uc3QgQVJDSElWRVNfU1VCRk9MREVSID0gJ2FyY2hpdmVzJztcbmNvbnN0IEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSID0gJ2V4dHJhY3RlZCc7XG5jb25zdCBIVFRQX1NUQVRVU19PSyA9IDIwMDtcbi8vIE9uZSBkYXkgaW4gbWlsbGlzZWNvbmRzICgyNCAqIDYwICogNjAgKiAxMDAwKS5cbmNvbnN0IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUyA9IDg2XzQwMF8wMDA7XG5cbi8qKlxuICogRG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCBpbiBhIG5ldyBPYnNpZGlhbiB3aW5kb3cuIERlc2t0b3Agb25seS5cbiAqXG4gKiBJZiB0aGUgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgKG9yIG5ld2VyKSwgaXRzIGRlbW8gdmF1bHQgb3BlbnMgZGlyZWN0bHk7IG90aGVyd2lzZVxuICogdGhlIHVzZXIgY2hvb3NlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgYW5kIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIHZlcnNpb24uIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duXG4gKiBpbW1lZGlhdGVseS4gVGhlIGNob3NlbiB2ZXJzaW9uJ3MgYXJjaGl2ZSBpcyBkb3dubG9hZGVkIG9uY2UgKHRoZW4gcmV1c2VkIGZyb20gdGhlIGFyY2hpdmUgY2FjaGUpLFxuICogYnV0IGEgZnJlc2ggY29weSBpcyBleHRyYWN0ZWQgaW50byBpdHMgb3duIHRlbXBvcmFyeSBmb2xkZXIgb24gZXZlcnkgb3BlbiBcdTIwMTQgdGhlIHZhdWx0IGlzIG5ldmVyIHJldXNlZFxuICogYWNyb3NzIHNlc3Npb25zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIE9wZW5EZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSB2YXVsdCBoYXMgYmVlbiBvcGVuZWQsIG9yIG9uY2UgdGhlIG9wZXJhdGlvbiBoYXNcbiAqIGJlZW4gcmVwb3J0ZWQgYXMgbm90IHBvc3NpYmxlIChub3RpY2Ugc2hvd24pIG9yIGNhbmNlbGxlZCBieSB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EZW1vVmF1bHQocGFyYW1zOiBPcGVuRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcGx1Z2luVmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIFNob3duIGltbWVkaWF0ZWx5IChgZGVsYXlJbk1pbGxpc2Vjb25kczogMGApOiByZXNvbHZpbmcgdGhlIHJlbGVhc2UsIGRvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIGNhblxuICAvLyBFYWNoIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWUgcHJvZ3Jlc3MgdGhlIG1vbWVudCB0aGUgY29tbWFuZCBpcyBpbnZva2VkLlxuICAvL1xuICAvLyBLZXB0IG91dCBvZiB0aGUgc2hhcmVkIHNsb3QgKGBTZXBhcmF0ZWApLCBiZWNhdXNlIHRoaXMgdmVyeSBmdW5jdGlvbiByYWlzZXMgb3JkaW5hcnkgbm90aWNlcyB3aGlsZVxuICAvLyBUaGUgb3BlcmF0aW9uIGlzIHN0aWxsIHJ1bm5pbmcgXHUyMDE0IFwibm90IGluIHRoZSByZWdpc3RyeVwiLCBcIm5vIGRlbW8gdmF1bHQgZm9yIHRoaXMgdmVyc2lvblwiIFx1MjAxNCBhbmQgYVxuICAvLyBTbG90IG5vdGljZSB3b3VsZCBoaWRlIHRoZSBwcm9ncmVzcyBub3RpY2UgcmF0aGVyIHRoYW4gYXBwZWFyIGJlc2lkZSBpdC5cbiAgdXNpbmcgcHJvZ3Jlc3NOb3RpY2UgPSBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgIGNvbnRlbnQ6IGBPcGVuaW5nIGRlbW8gdmF1bHQgZm9yICR7cGx1Z2luTmFtZX1cdTIwMjZgLFxuICAgIGRlbGF5SW5NaWxsaXNlY29uZHM6IDAsXG4gICAgbW9kZTogUGx1Z2luTm90aWNlTW9kZS5TZXBhcmF0ZVxuICB9KTtcblxuICBjb25zdCByZXBvID0gYXdhaXQgZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyhwbHVnaW5JZCk7XG4gIGlmICghcmVwbykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGBDb3VsZCBub3QgZmluZCBwbHVnaW4gJHtwbHVnaW5OYW1lfSBpbiB0aGUgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSBwbHVnaW5WZXJzaW9uO1xuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gYXdhaXQgZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24ocmVwbyk7XG5cbiAgbGV0IHZlcnNpb25Ub09wZW46IHN0cmluZztcbiAgaWYgKGNvbXBhcmVWZXJzaW9ucyhjdXJyZW50VmVyc2lvbiwgbGF0ZXN0VmVyc2lvbikgPj0gMCkge1xuICAgIHZlcnNpb25Ub09wZW4gPSBjdXJyZW50VmVyc2lvbjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjaG9zZW5WZXJzaW9uID0gYXdhaXQgc2VsZWN0T3B0aW9uPG51bGwgfCBzdHJpbmc+KHtcbiAgICAgIGFwcCxcbiAgICAgIG1lc3NhZ2U6IGBDdXJyZW50IHZlcnNpb24gb2YgcGx1Z2luICR7cGx1Z2luTmFtZX0gdiR7Y3VycmVudFZlcnNpb259IGlzIG5vdCB0aGUgbGF0ZXN0ICh2JHtsYXRlc3RWZXJzaW9ufSlgLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgaXNDdGE6IHRydWUsXG4gICAgICAgICAgdGV4dDogYE9wZW4gZGVtbyB2YXVsdCBmb3IgbGF0ZXN0IHZlcnNpb24gKHYke2xhdGVzdFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGxhdGVzdFZlcnNpb25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGN1cnJlbnQgdmVyc2lvbiAodiR7Y3VycmVudFZlcnNpb259KWAsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgdGl0bGU6IHBsdWdpbk5hbWVcbiAgICB9KTtcbiAgICBpZiAoY2hvc2VuVmVyc2lvbiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2ZXJzaW9uVG9PcGVuID0gY2hvc2VuVmVyc2lvbjtcbiAgfVxuXG4gIGNvbnN0IGFyY2hpdmUgPSBhd2FpdCByZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZSh7XG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcHJvZ3Jlc3NOb3RpY2UsXG4gICAgcmVwbyxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uVG9PcGVuXG4gIH0pO1xuICBpZiAoIWFyY2hpdmUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBwcm9ncmVzc05vdGljZS5zZXRDb250ZW50KGBFeHRyYWN0aW5nIGRlbW8gdmF1bHQgZm9yICR7cGx1Z2luTmFtZX0gdiR7dmVyc2lvblRvT3Blbn1cdTIwMjZgKTtcbiAgY2xlYW51cE9ycGhhbmVkRXh0cmFjdGVkVmF1bHRzKCk7XG4gIGNvbnN0IHZhdWx0RGlyZWN0b3J5ID0gZXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXIoe1xuICAgIGFyY2hpdmUsXG4gICAgcGx1Z2luSWQsXG4gICAgdmVyc2lvbjogdmVyc2lvblRvT3BlblxuICB9KTtcblxuICB3aW5kb3cuZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZFN5bmMoJ3ZhdWx0LW9wZW4nLCB2YXVsdERpcmVjdG9yeSwgZmFsc2UpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZXh0cmFjdGVkIGRlbW8tdmF1bHQgZm9sZGVycyBsZWZ0IG92ZXIgZnJvbSBlYXJsaWVyIHNlc3Npb25zIChiZXN0LWVmZm9ydCkuXG4gKlxuICogRXZlcnkgb3BlbiBleHRyYWN0cyBhIGZyZXNoIGNvcHkgaW50byBpdHMgb3duIGZvbGRlciBhbmQgbmV2ZXIgZGVsZXRlcyBpdCBhZnRlcndhcmRzICh0aGUgdmF1bHQgc3RheXNcbiAqIG9wZW4gaW4gaXRzIHdpbmRvdyksIHNvIHRoZXNlIGFjY3VtdWxhdGUuIFRoaXMgZHJvcHMgZm9sZGVycyBvbGRlciB0aGFuXG4gKiB7QGxpbmsgT1JQSEFORURfRVhUUkFDVEVEX1ZBVUxUX01BWF9BR0VfSU5fTUlMTElTRUNPTkRTfS4gQSBmb2xkZXIgd2hvc2UgdmF1bHQgaXMgc3RpbGwgb3BlbiBpbiBhbm90aGVyXG4gKiB3aW5kb3cgaXMgbG9ja2VkIG9uIFdpbmRvd3MgYW5kIGNhbm5vdCBiZSByZW1vdmVkIFx1MjAxNCB0aGUgcmVtb3ZhbCBpcyB3cmFwcGVkIHNvIHN1Y2ggYSBmb2xkZXIgaXMgc2ltcGx5XG4gKiBza2lwcGVkIGFuZCByZXRyaWVkIG9uIGEgbGF0ZXIgb3Blbi5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE9ycGhhbmVkRXh0cmFjdGVkVmF1bHRzKCk6IHZvaWQge1xuICBjb25zdCBleHRyYWN0ZWRWYXVsdHNSb290ID0gam9pbih0bXBkaXIoKSwgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSLCBFWFRSQUNURURfVkFVTFRTX1NVQkZPTERFUik7XG4gIGlmICghZXhpc3RzU3luYyhleHRyYWN0ZWRWYXVsdHNSb290KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGZvciAoY29uc3QgZW50cnlOYW1lIG9mIHJlYWRkaXJTeW5jKGV4dHJhY3RlZFZhdWx0c1Jvb3QpKSB7XG4gICAgY29uc3QgZW50cnlQYXRoID0gam9pbihleHRyYWN0ZWRWYXVsdHNSb290LCBlbnRyeU5hbWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0cyA9IHN0YXRTeW5jKGVudHJ5UGF0aCk7XG4gICAgICBpZiAobm93IC0gc3RhdHMubXRpbWVNcyA8IE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EUykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJtU3luYyhlbnRyeVBhdGgsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEJlc3QtZWZmb3J0IGNsZWFudXA6IGFuIG9ycGhhbiB3aG9zZSB2YXVsdCBpcyBzdGlsbCBvcGVuIChsb2NrZWQgb24gV2luZG93cykgY2Fubm90IGJlIHJlbW92ZWQ7IHNraXAgaXQgYW5kIHJldHJ5IG9uIGEgbGF0ZXIgb3Blbi5cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBhIGRvd25sb2FkZWQgZGVtby12YXVsdCBhcmNoaXZlIHRvIGRpc2suXG4gKlxuICogRXh0cmFjdGlvbiBpcyB3cml0dGVuIHdpdGggRWxlY3Ryb24ncyBgb3JpZ2luYWwtZnNgIFx1MjAxNCB0aGUgcmVhbCBgZnNgIHdpdGggYXNhciBpbnRlcmNlcHRpb24gZGlzYWJsZWQgXHUyMDE0XG4gKiByYXRoZXIgdGhhbiB3aXRoIGBub2RlOmZzYC4gQSBkZW1vIHZhdWx0IG1heSBzaGlwIGEgZmlsZSB0aGF0IG1lcmVseSBMT09LUyBsaWtlIGFuIEVsZWN0cm9uIGFyY2hpdmVcbiAqIChlLmcuIGBfYXNzZXRzL0NvZGVTY3JpcHRUb29sa2l0L21vZHVsZS5hc2FyYCBkZW1vbnN0cmF0aW5nIHRoZSBBU0FSIHJlcXVpcmUgZmVhdHVyZSksIGFuZCBFbGVjdHJvbidzXG4gKiBhc2FyIGxheWVyIGludGVyY2VwdHMgYGZzYCBvcGVyYXRpb25zIG9uIGFueSBwYXRoIGNvbnRhaW5pbmcgYC5hc2FyYCwgdHJlYXRpbmcgaXQgYXMgYW4gYXJjaGl2ZSByb290XG4gKiByYXRoZXIgdGhhbiBhIHBsYWluIGZpbGUuIFRoYXQgYWxyZWFkeSBjb3N0IG9uZSBwcm9kdWN0aW9uIGJ1ZyB3aGVuIHRoZSBleHRyYWN0b3IgYGNobW9kYC1lZCBzdWNoIGFcbiAqIGZpbGUgYW5kIGdvdCBgRU5PRU5UYDsgbm90aGluZyBgY2htb2RgcyBhbnkgbW9yZSwgYnV0IHdyaXRpbmcgdGhvc2UgYnl0ZXMgdGhyb3VnaCB0aGUgY29weSB0aGF0IGhhcyBub1xuICogYXNhciBsYXllciBjb3N0cyBub3RoaW5nIGFuZCBrZWVwcyB0aGUgd2hvbGUgY2xhc3Mgb2YgZmFpbHVyZSBvZmYgdGhpcyBwYXRoLiBgb3JpZ2luYWwtZnNgIGlzIGEgZGVza3RvcC1vbmx5XG4gKiBFbGVjdHJvbiBtb2R1bGUgd2l0aCBubyBidW5kbGVkIHR5cGVzLCBzbyBpdCBpcyBsb2FkZWQgdmlhIGB3aW5kb3cucmVxdWlyZWAgYW5kIHR5cGVkIGFzIGBub2RlOmZzYCdzXG4gKiBzaGFwZS5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgemlwIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcGFyYW0gdGFyZ2V0RGlyZWN0b3J5IC0gVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IGludG8uXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3REZW1vVmF1bHRBcmNoaXZlKGFyY2hpdmU6IEJ1ZmZlciwgdGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qgb3JpZ2luYWxGcyA9IHdpbmRvdy5yZXF1aXJlKCdub2RlOm9yaWdpbmFsLWZzJykgYXMgdHlwZW9mIGltcG9ydCgnbm9kZTpmcycpO1xuICBleHRyYWN0WmlwQXJjaGl2ZSh7XG4gICAgYXJjaGl2ZSxcbiAgICBmaWxlU3lzdGVtOiBvcmlnaW5hbEZzLFxuICAgIHRhcmdldERpcmVjdG9yeVxuICB9KTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYXJjaGl2ZSBpbnRvIGEgZnJlc2gsIHVuaXF1ZWx5LW5hbWVkIHRlbXBvcmFyeSBmb2xkZXIgYW5kIHJldHVybnMgdGhlIHZhdWx0IHBhdGguXG4gKlxuICogQSB1bmlxdWUgcGFyZW50IGZvbGRlciAoYG1rZHRlbXBTeW5jYCkgZ3VhcmFudGVlcyBhIGJyYW5kLW5ldyBleHRyYWN0aW9uIGV2ZXJ5IHRpbWUgXHUyMDE0IHRoZSBkZW1vIHZhdWx0XG4gKiBpcyBuZXZlciByZXVzZWQgYWNyb3NzIG9wZW5zLCBzbyBhIHByZXZpb3VzIHNlc3Npb24ncyBlZGl0cyBuZXZlciBsZWFrIGluLiBUaGUgYXJjaGl2ZSBpcyBleHRyYWN0ZWRcbiAqIGludG8gdGhhdCBwYXJlbnQgYW5kIHRoZSB2YXVsdCBpcyB0aGUgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPmAgZm9sZGVyIGl0IGNvbnRhaW5zLCBzb1xuICogT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlciBzaG93cyBhIGZyaWVuZGx5IG5hbWUgKGl0cyBiYXNlbmFtZSkgcmF0aGVyIHRoYW4gdGhlIHJhbmRvbSB0ZW1wIGlkLlxuICpcbiAqIFRoYXQgZm9sZGVyIGlzIG5vdCBzZWFyY2hlZCBmb3I6IHtAbGluayBnZXREZW1vVmF1bHRGb2xkZXJOYW1lfSBuYW1lcyBpdCBvbiBib3RoIHNpZGVzLCBzbyB0aGUgcGF0aCBpc1xuICoga25vd24gYmVmb3JlIGEgYnl0ZSBpcyB3cml0dGVuLiBXaGljaCBrZWVwcyB0aGUgZXh0cmFjdG9yIGZyZWUgb2YgYW55IHJlYWQgXHUyMDE0IGRlbGliZXJhdGUsIGJlY2F1c2VcbiAqIEVsZWN0cm9uJ3MgYXNhciBsYXllciBpbnRlcmNlcHRzIGBmc2AgcmVhZHMgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCBhbmQgYSBkZW1vIHZhdWx0IG1heVxuICogbGVnaXRpbWF0ZWx5IHNoaXAgc3VjaCBhIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXN9LlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZyZXNobHkgZXh0cmFjdGVkIHZhdWx0IGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXIocGFyYW1zOiBFeHRyYWN0RGVtb1ZhdWx0VG9GcmVzaEZvbGRlclBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgYXJjaGl2ZSwgcGx1Z2luSWQsIHZlcnNpb24gfSA9IHBhcmFtcztcbiAgY29uc3QgZXh0cmFjdGVkVmF1bHRzUm9vdCA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgRVhUUkFDVEVEX1ZBVUxUU19TVUJGT0xERVIpO1xuICBta2RpclN5bmMoZXh0cmFjdGVkVmF1bHRzUm9vdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IHVuaXF1ZVBhcmVudERpcmVjdG9yeSA9IG1rZHRlbXBTeW5jKGpvaW4oZXh0cmFjdGVkVmF1bHRzUm9vdCwgYCR7cGx1Z2luSWR9LSR7dmVyc2lvbn0tYCkpO1xuICBleHRyYWN0RGVtb1ZhdWx0QXJjaGl2ZShhcmNoaXZlLCB1bmlxdWVQYXJlbnREaXJlY3RvcnkpO1xuICByZXR1cm4gam9pbihcbiAgICB1bmlxdWVQYXJlbnREaXJlY3RvcnksXG4gICAgZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZSh7XG4gICAgICBwbHVnaW5JZCxcbiAgICAgIHZlcnNpb25cbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBkZW1vLXZhdWx0IGFyY2hpdmUgYnl0ZXMgZm9yIGEgdmVyc2lvbiwgZG93bmxvYWRpbmcgYW5kIGNhY2hpbmcgdGhlbSBvbiBmaXJzdCB1c2UuXG4gKlxuICogT25seSB0aGUgYXJjaGl2ZSBpcyBjYWNoZWQgKGtleWVkIGJ5IHBsdWdpbiBpZCArIHZlcnNpb24pOyB0aGUgZXh0cmFjdGVkIHZhdWx0IGlzIG5vdC4gQSBjYWNoZSBoaXQgaXNcbiAqIHJldHVybmVkIHdpdGhvdXQgYW55IG5ldHdvcmsgcmVxdWVzdDsgYSBtaXNzIGRvd25sb2FkcyB0aGUgcmVsZWFzZSBhc3NldCwgd3JpdGVzIGl0IHRvIHRoZSBhcmNoaXZlXG4gKiBjYWNoZSwgYW5kIHJldHVybnMgdGhlIGZyZXNobHkgZG93bmxvYWRlZCBieXRlcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZVBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIGFyY2hpdmUgYnl0ZXMsIG9yIGBudWxsYCB3aGVuIG5vIGFyY2hpdmUgaXMgYXZhaWxhYmxlIGZvclxuICogdGhlIHZlcnNpb24gKGEgbm90aWNlIGhhcyBiZWVuIHNob3duKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZURlbW9WYXVsdEFyY2hpdmUocGFyYW1zOiBSZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZVBhcmFtcyk6IFByb21pc2U8QnVmZmVyIHwgbnVsbD4ge1xuICBjb25zdCB7XG4gICAgcGx1Z2luSWQsXG4gICAgcGx1Z2luTmFtZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQsXG4gICAgcHJvZ3Jlc3NOb3RpY2UsXG4gICAgcmVwbyxcbiAgICB2ZXJzaW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgYXJjaGl2ZXNEaXJlY3RvcnkgPSBqb2luKHRtcGRpcigpLCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIsIEFSQ0hJVkVTX1NVQkZPTERFUik7XG4gIGNvbnN0IGFyY2hpdmVQYXRoID0gam9pbihhcmNoaXZlc0RpcmVjdG9yeSwgYCR7cGx1Z2luSWR9LSR7dmVyc2lvbn0uemlwYCk7XG4gIGlmIChleGlzdHNTeW5jKGFyY2hpdmVQYXRoKSkge1xuICAgIHJldHVybiByZWFkRmlsZVN5bmMoYXJjaGl2ZVBhdGgpO1xuICB9XG5cbiAgcHJvZ3Jlc3NOb3RpY2Uuc2V0Q29udGVudChgRG93bmxvYWRpbmcgZGVtbyB2YXVsdCBmb3IgJHtwbHVnaW5OYW1lfSB2JHt2ZXJzaW9ufVx1MjAyNmApO1xuICBjb25zdCBhc3NldFVybCA9IGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7Z2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKHBsdWdpbklkKX1gO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoe1xuICAgIHRocm93OiBmYWxzZSxcbiAgICB1cmw6IGFzc2V0VXJsXG4gIH0pO1xuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSBIVFRQX1NUQVRVU19PSykge1xuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKGBObyBkZW1vIHZhdWx0IGlzIGF2YWlsYWJsZSBmb3IgcGx1Z2luICR7cGx1Z2luTmFtZX0gdiR7dmVyc2lvbn0uYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBhcmNoaXZlID0gQnVmZmVyLmZyb20ocmVzcG9uc2UuYXJyYXlCdWZmZXIpO1xuICBta2RpclN5bmMoYXJjaGl2ZXNEaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKGFyY2hpdmVQYXRoLCBhcmNoaXZlKTtcbiAgcmV0dXJuIGFyY2hpdmU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLFNBQVMsdUJBQXVCO0FBRWhDLFNBQVMsVUFBQUEsZUFBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsY0FBYztBQUV2QixTQUFTLGtCQUFrQjtBQU8zQixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLFlBQVk7QUFDckI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHdCQUF3QjtBQUNqQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBaUQ3QixNQUFNLDJCQUEyQjtBQUNqQyxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLDZCQUE2QjtBQUNuQyxNQUFNLGlCQUFpQjtBQUV2QixNQUFNLG1EQUFtRDtBQWV6RCxlQUFzQixjQUFjLFFBQTRDO0FBZTlFO0FBQUE7QUFkQSxVQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFRSixV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
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCBhcmNoaXZlIHRvIGVhY2ggR2l0SHViIHJlbGVhc2UgKHNlZVxuICogYGFyY2hpdmVQbHVnaW5EZW1vVmF1bHRgIGluIGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2A7IGV2ZXJ5IG5hbWUgc2hhcmVkIHdpdGggaXQgY29tZXMgZnJvbVxuICogYGRlbW8tdmF1bHQtbmFtaW5nLnRzYCkuIFRoaXMgcmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSxcbiAqIGRvd25sb2FkcyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGNob3NlbiB2ZXJzaW9uLCBhbmQgb3BlbnMgaXQgYXMgYSB2YXVsdCBpbiBhIG5ldyB3aW5kb3cuIFdoZW4gdGhlXG4gKiBpbnN0YWxsZWQgcGx1Z2luIHZlcnNpb24gaXMgYmVoaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSwgdGhlIHVzZXIgaXMgb2ZmZXJlZCBhIGNob2ljZSBiZXR3ZWVuIHRoZSB0d29cbiAqIHZlcnNpb25zLlxuICpcbiAqIEEgcHJvZ3Jlc3Mgbm90aWNlIGlzIHNob3duIGltbWVkaWF0ZWx5IChkb3dubG9hZCArIGV4dHJhY3Rpb24gY2FuIHRha2UgYSB3aGlsZSwgc28gdGhlIHVzZXIgbXVzdCBzZWVcbiAqIHNvbWV0aGluZyBpcyBoYXBwZW5pbmcgcmlnaHQgYXdheSkuIE9ubHkgdGhlIGRvd25sb2FkZWQgQVJDSElWRSBpcyBjYWNoZWQgKHVuZGVyIHRoZSBPUyB0ZW1wXG4gKiBkaXJlY3RvcnkpOyBldmVyeSBpbnZvY2F0aW9uIGV4dHJhY3RzIGEgRlJFU0ggY29weSBpbnRvIGl0cyBvd24gdGVtcG9yYXJ5IGZvbGRlciBhbmQgb3BlbnMgdGhhdCwgc28gYVxuICogcHJldmlvdXMgc2Vzc2lvbidzIGVkaXRzIG5ldmVyIGxlYWsgaW50byBhIG5ldyBvbmUuIFRoZSB2YXVsdCBmb2xkZXIgaXMgdGhlIGFyY2hpdmUncyBvd24gc2luZ2xlXG4gKiB0b3AtbGV2ZWwgZm9sZGVyLCBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gLCB3aGljaCByZWFkcyBuaWNlbHkgaW4gT2JzaWRpYW4ncyB2YXVsdCBzd2l0Y2hlclxuICogYW5kIGlzIHRoZSBzYW1lIG5hbWUgYSBoYW5kLXVuemlwcGVkIGFyY2hpdmUgcHJvZHVjZXMuIE9ycGhhbmVkIGV4dHJhY3RlZCBmb2xkZXJzIGxlZnQgb3ZlciBmcm9tXG4gKiBlYXJsaWVyIHNlc3Npb25zIGFyZSBjbGVhbmVkIHVwIChiZXN0LWVmZm9ydCkgb24gZWFjaCBvcGVuLlxuICpcbiAqICoqTm90aGluZyBoZXJlIG1heSB0b3VjaCBhIHBsYXRmb3JtLW9ubHkgQVBJIHdoaWxlIHRoZSBtb2R1bGUgSU5JVElBTElaRVMuKiogVGhlIGBub2RlOmAgaW1wb3J0cyBiZWxvd1xuICogYXJlIHNhZmUgdG8gbWVyZWx5IGV2YWx1YXRlIG9uIG1vYmlsZSBcdTIwMTQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIG5vdGhpbmcgcmVhZHMgaXQgYXRcbiAqIGxvYWQgdGltZSBcdTIwMTQgYW5kIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHJlLWV4cG9ydCB0aGlzIG1vZHVsZSwgdGhhdCBpcyBhIGxvYWQtYmVhcmluZyBwcm9wZXJ0eSBvZlxuICogdGhlIHdob2xlIGxpYnJhcnkgcmF0aGVyIHRoYW4gYSBkZXRhaWwgb2YgdGhpcyBmaWxlLiBJdCB3YXMgbGVhcm5lZCB0aGUgaGFyZCB3YXk6IHRoaXMgbW9kdWxlIG9uY2VcbiAqIGltcG9ydGVkIGBhZG0temlwYCwgd2hvc2UgemlwLWNyeXB0byBtZXRob2Qgb3BlbnMgd2l0aCBhIHRvcC1sZXZlbFxuICogYGNvbnN0IHsgcmFuZG9tRmlsbFN5bmMgfSA9IHJlcXVpcmUoJ2NyeXB0bycpYCwgYW5kIGEgc3RhdGljIGBpbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnYCB0aGVyZWZvcmVcbiAqIGtpbGxlZCB0aGUgbGlicmFyeSdzIGxvYWQgb24gQW5kcm9pZCAoc2VlIHRoZSBtb2JpbGUtbG9hZCBjaGVjayBpblxuICogYHNjcmlwdHMvaGVscGVycy9hc3NlcnQtbW9iaWxlLWxvYWRhYmxlLWJ1bmRsZS50c2AsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCBvbiBleGFjdGx5IHRoYXQpLiBFeHRyYWN0aW9uXG4gKiBub3cgZ29lcyB0aHJvdWdoIGBkZXNrdG9wLXppcC1leHRyYWN0b3IudHNgLCB3aGljaCBuZWVkcyBubyBkZXBlbmRlbmN5IGF0IGFsbCBcdTIwMTQgYnV0IGFueSBmdXR1cmVcbiAqIGRlcGVuZGVuY3kgdGhhdCBpbml0aWFsaXplcyBhZ2FpbnN0IGEgcGxhdGZvcm0tb25seSBBUEkgc3RpbGwgaGFzIHRvIGJlIGRlZmVycmVkIGJlaGluZCBhIGNhbGwtdGltZVxuICogYGltcG9ydCgpYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgY29tcGFyZVZlcnNpb25zIH0gZnJvbSAnY29tcGFyZS12ZXJzaW9ucyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdub2RlOmJ1ZmZlcic7XG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICBybVN5bmMsXG4gIHN0YXRTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50RGVsYXllZE5vdGljZVxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBleHRyYWN0WmlwQXJjaGl2ZSB9IGZyb20gJy4uL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQge1xuICBnZXRDb21tdW5pdHlQbHVnaW5SZXBvLFxuICBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvblxufSBmcm9tICcuL2NvbW11bml0eS1wbHVnaW5zLnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZU1vZGUgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJy4vZGVtby12YXVsdC1uYW1pbmcudHMnO1xuaW1wb3J0IHsgc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9tb2RhbHMvc2VsZWN0LW9wdGlvbi50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIG9wZW5EZW1vVmF1bHR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5EZW1vVmF1bHRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGlkLCB1c2VkIHRvIGxvY2F0ZSB0aGUgR2l0SHViIHJlcG9zaXRvcnksIHRvIG5hbWUgdGhlIGFyY2hpdmUgYXNzZXQsIGFuZCB0byBuYW1lIHRoZVxuICAgKiBjYWNoZWQgYXJjaGl2ZSBhbmQgdGhlIGV4dHJhY3RlZCB2YXVsdCBmb2xkZXIuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGRpc3BsYXkgbmFtZSwgdXNlZCB0byBsYWJlbCB0aGUgbm90aWNlcyBhbmQgdGhlIHZlcnNpb24tY2hvaWNlIGRpYWxvZy5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5vdGljZSBjb21wb25lbnQgdXNlZCB0byByZXBvcnQgcHJvZ3Jlc3MgYW5kIHByb2JsZW1zIChwbHVnaW4gbm90IGluIHRoZSByZWdpc3RyeSwgbWlzc2luZ1xuICAgKiBhcmNoaXZlKS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IGluc3RhbGxlZCBwbHVnaW4gdmVyc2lvbiwgb2ZmZXJlZCBhcyBvbmUgb2YgdGhlIHZlcnNpb24gY2hvaWNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXJjaGl2ZTogQnVmZmVyO1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZXNvbHZlRGVtb1ZhdWx0QXJjaGl2ZVBhcmFtcyB7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG4gIHJlYWRvbmx5IHByb2dyZXNzTm90aWNlOiBQbHVnaW5Ob3RpY2VDb21wb25lbnREZWxheWVkTm90aWNlO1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuY29uc3QgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSID0gJ29ic2lkaWFuLWRlbW8tdmF1bHRzJztcbmNvbnN0IEFSQ0hJVkVTX1NVQkZPTERFUiA9ICdhcmNoaXZlcyc7XG5jb25zdCBFWFRSQUNURURfVkFVTFRTX1NVQkZPTERFUiA9ICdleHRyYWN0ZWQnO1xuY29uc3QgSFRUUF9TVEFUVVNfT0sgPSAyMDA7XG4vLyBPbmUgZGF5IGluIG1pbGxpc2Vjb25kcyAoMjQgKiA2MCAqIDYwICogMTAwMCkuXG5jb25zdCBPUlBIQU5FRF9FWFRSQUNURURfVkFVTFRfTUFYX0FHRV9JTl9NSUxMSVNFQ09ORFMgPSA4Nl80MDBfMDAwO1xuXG4vKipcbiAqIERvd25sb2FkcyBhbmQgb3BlbnMgdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgaW4gYSBuZXcgT2JzaWRpYW4gd2luZG93LiBEZXNrdG9wIG9ubHkuXG4gKlxuICogSWYgdGhlIGluc3RhbGxlZCBwbHVnaW4gdmVyc2lvbiBpcyB0aGUgbGF0ZXN0IChvciBuZXdlciksIGl0cyBkZW1vIHZhdWx0IG9wZW5zIGRpcmVjdGx5OyBvdGhlcndpc2VcbiAqIHRoZSB1c2VyIGNob29zZXMgYmV0d2VlbiB0aGUgbGF0ZXN0IGFuZCB0aGUgY3VycmVudGx5LWluc3RhbGxlZCB2ZXJzaW9uLiBBIHByb2dyZXNzIG5vdGljZSBpcyBzaG93blxuICogaW1tZWRpYXRlbHkuIFRoZSBjaG9zZW4gdmVyc2lvbidzIGFyY2hpdmUgaXMgZG93bmxvYWRlZCBvbmNlICh0aGVuIHJldXNlZCBmcm9tIHRoZSBhcmNoaXZlIGNhY2hlKSxcbiAqIGJ1dCBhIGZyZXNoIGNvcHkgaXMgZXh0cmFjdGVkIGludG8gaXRzIG93biB0ZW1wb3JhcnkgZm9sZGVyIG9uIGV2ZXJ5IG9wZW4gXHUyMDE0IHRoZSB2YXVsdCBpcyBuZXZlciByZXVzZWRcbiAqIGFjcm9zcyBzZXNzaW9ucy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBPcGVuRGVtb1ZhdWx0UGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgdmF1bHQgaGFzIGJlZW4gb3BlbmVkLCBvciBvbmNlIHRoZSBvcGVyYXRpb24gaGFzXG4gKiBiZWVuIHJlcG9ydGVkIGFzIG5vdCBwb3NzaWJsZSAobm90aWNlIHNob3duKSBvciBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuRGVtb1ZhdWx0KHBhcmFtczogT3BlbkRlbW9WYXVsdFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHBsdWdpblZlcnNpb25cbiAgfSA9IHBhcmFtcztcblxuICAvLyBTaG93biBpbW1lZGlhdGVseSAoYGRlbGF5SW5NaWxsaXNlY29uZHM6IDBgKTogcmVzb2x2aW5nIHRoZSByZWxlYXNlLCBkb3dubG9hZGluZyBhbmQgZXh0cmFjdGluZyBjYW5cbiAgLy8gRWFjaCB0YWtlIGEgd2hpbGUsIHNvIHRoZSB1c2VyIG11c3Qgc2VlIHByb2dyZXNzIHRoZSBtb21lbnQgdGhlIGNvbW1hbmQgaXMgaW52b2tlZC5cbiAgLy9cbiAgLy8gS2VwdCBvdXQgb2YgdGhlIHNoYXJlZCBzbG90IChgU2VwYXJhdGVgKSwgYmVjYXVzZSB0aGlzIHZlcnkgZnVuY3Rpb24gcmFpc2VzIG9yZGluYXJ5IG5vdGljZXMgd2hpbGVcbiAgLy8gVGhlIG9wZXJhdGlvbiBpcyBzdGlsbCBydW5uaW5nIFx1MjAxNCBcIm5vdCBpbiB0aGUgcmVnaXN0cnlcIiwgXCJubyBkZW1vIHZhdWx0IGZvciB0aGlzIHZlcnNpb25cIiBcdTIwMTQgYW5kIGFcbiAgLy8gU2xvdCBub3RpY2Ugd291bGQgaGlkZSB0aGUgcHJvZ3Jlc3Mgbm90aWNlIHJhdGhlciB0aGFuIGFwcGVhciBiZXNpZGUgaXQuXG4gIHVzaW5nIHByb2dyZXNzTm90aWNlID0gcGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2VBZnRlckRlbGF5KHtcbiAgICBjb250ZW50OiBgT3BlbmluZyBkZW1vIHZhdWx0IGZvciAke3BsdWdpbk5hbWV9XHUyMDI2YCxcbiAgICBkZWxheUluTWlsbGlzZWNvbmRzOiAwLFxuICAgIG1vZGU6IFBsdWdpbk5vdGljZU1vZGUuU2VwYXJhdGVcbiAgfSk7XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShgQ291bGQgbm90IGZpbmQgcGx1Z2luICR7cGx1Z2luTmFtZX0gaW4gdGhlIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gcGx1Z2luVmVyc2lvbjtcbiAgY29uc3QgbGF0ZXN0VmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdFJlbGVhc2VWZXJzaW9uKHJlcG8pO1xuXG4gIGxldCB2ZXJzaW9uVG9PcGVuOiBzdHJpbmc7XG4gIGlmIChjb21wYXJlVmVyc2lvbnMoY3VycmVudFZlcnNpb24sIGxhdGVzdFZlcnNpb24pID49IDApIHtcbiAgICB2ZXJzaW9uVG9PcGVuID0gY3VycmVudFZlcnNpb247XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2hvc2VuVmVyc2lvbiA9IGF3YWl0IHNlbGVjdE9wdGlvbjxudWxsIHwgc3RyaW5nPih7XG4gICAgICBhcHAsXG4gICAgICBtZXNzYWdlOiBgQ3VycmVudCB2ZXJzaW9uIG9mIHBsdWdpbiAke3BsdWdpbk5hbWV9IHYke2N1cnJlbnRWZXJzaW9ufSBpcyBub3QgdGhlIGxhdGVzdCAodiR7bGF0ZXN0VmVyc2lvbn0pYCxcbiAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlzQ3RhOiB0cnVlLFxuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGxhdGVzdCB2ZXJzaW9uICh2JHtsYXRlc3RWZXJzaW9ufSlgLFxuICAgICAgICAgIHZhbHVlOiBsYXRlc3RWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBgT3BlbiBkZW1vIHZhdWx0IGZvciBjdXJyZW50IHZlcnNpb24gKHYke2N1cnJlbnRWZXJzaW9ufSlgLFxuICAgICAgICAgIHZhbHVlOiBjdXJyZW50VmVyc2lvblxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0NhbmNlbCcsXG4gICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHRpdGxlOiBwbHVnaW5OYW1lXG4gICAgfSk7XG4gICAgaWYgKGNob3NlblZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvblRvT3BlbiA9IGNob3NlblZlcnNpb247XG4gIH1cblxuICBjb25zdCBhcmNoaXZlID0gYXdhaXQgcmVzb2x2ZURlbW9WYXVsdEFyY2hpdmUoe1xuICAgIHBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHByb2dyZXNzTm90aWNlLFxuICAgIHJlcG8sXG4gICAgdmVyc2lvbjogdmVyc2lvblRvT3BlblxuICB9KTtcbiAgaWYgKCFhcmNoaXZlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJvZ3Jlc3NOb3RpY2Uuc2V0Q29udGVudChgRXh0cmFjdGluZyBkZW1vIHZhdWx0IGZvciAke3BsdWdpbk5hbWV9IHYke3ZlcnNpb25Ub09wZW59XHUyMDI2YCk7XG4gIGNsZWFudXBPcnBoYW5lZEV4dHJhY3RlZFZhdWx0cygpO1xuICBjb25zdCB2YXVsdERpcmVjdG9yeSA9IGV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyKHtcbiAgICBhcmNoaXZlLFxuICAgIHBsdWdpbklkLFxuICAgIHZlcnNpb246IHZlcnNpb25Ub09wZW5cbiAgfSk7XG5cbiAgd2luZG93LmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2YXVsdC1vcGVuJywgdmF1bHREaXJlY3RvcnksIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGV4dHJhY3RlZCBkZW1vLXZhdWx0IGZvbGRlcnMgbGVmdCBvdmVyIGZyb20gZWFybGllciBzZXNzaW9ucyAoYmVzdC1lZmZvcnQpLlxuICpcbiAqIEV2ZXJ5IG9wZW4gZXh0cmFjdHMgYSBmcmVzaCBjb3B5IGludG8gaXRzIG93biBmb2xkZXIgYW5kIG5ldmVyIGRlbGV0ZXMgaXQgYWZ0ZXJ3YXJkcyAodGhlIHZhdWx0IHN0YXlzXG4gKiBvcGVuIGluIGl0cyB3aW5kb3cpLCBzbyB0aGVzZSBhY2N1bXVsYXRlLiBUaGlzIGRyb3BzIGZvbGRlcnMgb2xkZXIgdGhhblxuICoge0BsaW5rIE9SUEhBTkVEX0VYVFJBQ1RFRF9WQVVMVF9NQVhfQUdFX0lOX01JTExJU0VDT05EU30uIEEgZm9sZGVyIHdob3NlIHZhdWx0IGlzIHN0aWxsIG9wZW4gaW4gYW5vdGhlclxuICogd2luZG93IGlzIGxvY2tlZCBvbiBXaW5kb3dzIGFuZCBjYW5ub3QgYmUgcmVtb3ZlZCBcdTIwMTQgdGhlIHJlbW92YWwgaXMgd3JhcHBlZCBzbyBzdWNoIGEgZm9sZGVyIGlzIHNpbXBseVxuICogc2tpcHBlZCBhbmQgcmV0cmllZCBvbiBhIGxhdGVyIG9wZW4uXG4gKi9cbmZ1bmN0aW9uIGNsZWFudXBPcnBoYW5lZEV4dHJhY3RlZFZhdWx0cygpOiB2b2lkIHtcbiAgY29uc3QgZXh0cmFjdGVkVmF1bHRzUm9vdCA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgRVhUUkFDVEVEX1ZBVUxUU19TVUJGT0xERVIpO1xuICBpZiAoIWV4aXN0c1N5bmMoZXh0cmFjdGVkVmF1bHRzUm9vdCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBmb3IgKGNvbnN0IGVudHJ5TmFtZSBvZiByZWFkZGlyU3luYyhleHRyYWN0ZWRWYXVsdHNSb290KSkge1xuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGpvaW4oZXh0cmFjdGVkVmF1bHRzUm9vdCwgZW50cnlOYW1lKTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSBzdGF0U3luYyhlbnRyeVBhdGgpO1xuICAgICAgaWYgKG5vdyAtIHN0YXRzLm10aW1lTXMgPCBPUlBIQU5FRF9FWFRSQUNURURfVkFVTFRfTUFYX0FHRV9JTl9NSUxMSVNFQ09ORFMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBybVN5bmMoZW50cnlQYXRoLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBCZXN0LWVmZm9ydCBjbGVhbnVwOiBhbiBvcnBoYW4gd2hvc2UgdmF1bHQgaXMgc3RpbGwgb3BlbiAobG9ja2VkIG9uIFdpbmRvd3MpIGNhbm5vdCBiZSByZW1vdmVkOyBza2lwIGl0IGFuZCByZXRyeSBvbiBhIGxhdGVyIG9wZW4uXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdHMgYSBkb3dubG9hZGVkIGRlbW8tdmF1bHQgYXJjaGl2ZSB0byBkaXNrLlxuICpcbiAqIEV4dHJhY3Rpb24gaXMgd3JpdHRlbiB3aXRoIEVsZWN0cm9uJ3MgYG9yaWdpbmFsLWZzYCBcdTIwMTQgdGhlIHJlYWwgYGZzYCB3aXRoIGFzYXIgaW50ZXJjZXB0aW9uIGRpc2FibGVkIFx1MjAxNFxuICogcmF0aGVyIHRoYW4gd2l0aCBgbm9kZTpmc2AuIEEgZGVtbyB2YXVsdCBtYXkgc2hpcCBhIGZpbGUgdGhhdCBtZXJlbHkgTE9PS1MgbGlrZSBhbiBFbGVjdHJvbiBhcmNoaXZlXG4gKiAoZS5nLiBgX2Fzc2V0cy9Db2RlU2NyaXB0VG9vbGtpdC9tb2R1bGUuYXNhcmAgZGVtb25zdHJhdGluZyB0aGUgQVNBUiByZXF1aXJlIGZlYXR1cmUpLCBhbmQgRWxlY3Ryb24nc1xuICogYXNhciBsYXllciBpbnRlcmNlcHRzIGBmc2Agb3BlcmF0aW9ucyBvbiBhbnkgcGF0aCBjb250YWluaW5nIGAuYXNhcmAsIHRyZWF0aW5nIGl0IGFzIGFuIGFyY2hpdmUgcm9vdFxuICogcmF0aGVyIHRoYW4gYSBwbGFpbiBmaWxlLiBUaGF0IGFscmVhZHkgY29zdCBvbmUgcHJvZHVjdGlvbiBidWcgd2hlbiB0aGUgZXh0cmFjdG9yIGBjaG1vZGAtZWQgc3VjaCBhXG4gKiBmaWxlIGFuZCBnb3QgYEVOT0VOVGA7IG5vdGhpbmcgYGNobW9kYHMgYW55IG1vcmUsIGJ1dCB3cml0aW5nIHRob3NlIGJ5dGVzIHRocm91Z2ggdGhlIGNvcHkgdGhhdCBoYXMgbm9cbiAqIGFzYXIgbGF5ZXIgY29zdHMgbm90aGluZyBhbmQga2VlcHMgdGhlIHdob2xlIGNsYXNzIG9mIGZhaWx1cmUgb2ZmIHRoaXMgcGF0aC4gYG9yaWdpbmFsLWZzYCBpcyBhIGRlc2t0b3Atb25seVxuICogRWxlY3Ryb24gbW9kdWxlIHdpdGggbm8gYnVuZGxlZCB0eXBlcywgc28gaXQgaXMgbG9hZGVkIHZpYSBgd2luZG93LnJlcXVpcmVgIGFuZCB0eXBlZCBhcyBgbm9kZTpmc2Anc1xuICogc2hhcGUuXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IHppcCBhcmNoaXZlIGJ5dGVzLlxuICogQHBhcmFtIHRhcmdldERpcmVjdG9yeSAtIFRoZSBkaXJlY3RvcnkgdG8gZXh0cmFjdCBpbnRvLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RGVtb1ZhdWx0QXJjaGl2ZShhcmNoaXZlOiBCdWZmZXIsIHRhcmdldERpcmVjdG9yeTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IG9yaWdpbmFsRnMgPSB3aW5kb3cucmVxdWlyZSgnbm9kZTpvcmlnaW5hbC1mcycpIGFzIHR5cGVvZiBpbXBvcnQoJ25vZGU6ZnMnKTtcbiAgZXh0cmFjdFppcEFyY2hpdmUoe1xuICAgIGFyY2hpdmUsXG4gICAgZmlsZVN5c3RlbTogb3JpZ2luYWxGcyxcbiAgICB0YXJnZXREaXJlY3RvcnlcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGFyY2hpdmUgaW50byBhIGZyZXNoLCB1bmlxdWVseS1uYW1lZCB0ZW1wb3JhcnkgZm9sZGVyIGFuZCByZXR1cm5zIHRoZSB2YXVsdCBwYXRoLlxuICpcbiAqIEEgdW5pcXVlIHBhcmVudCBmb2xkZXIgKGBta2R0ZW1wU3luY2ApIGd1YXJhbnRlZXMgYSBicmFuZC1uZXcgZXh0cmFjdGlvbiBldmVyeSB0aW1lIFx1MjAxNCB0aGUgZGVtbyB2YXVsdFxuICogaXMgbmV2ZXIgcmV1c2VkIGFjcm9zcyBvcGVucywgc28gYSBwcmV2aW91cyBzZXNzaW9uJ3MgZWRpdHMgbmV2ZXIgbGVhayBpbi4gVGhlIGFyY2hpdmUgaXMgZXh0cmFjdGVkXG4gKiBpbnRvIHRoYXQgcGFyZW50IGFuZCB0aGUgdmF1bHQgaXMgdGhlIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj5gIGZvbGRlciBpdCBjb250YWlucywgc29cbiAqIE9ic2lkaWFuJ3MgdmF1bHQgc3dpdGNoZXIgc2hvd3MgYSBmcmllbmRseSBuYW1lIChpdHMgYmFzZW5hbWUpIHJhdGhlciB0aGFuIHRoZSByYW5kb20gdGVtcCBpZC5cbiAqXG4gKiBUaGF0IGZvbGRlciBpcyBub3Qgc2VhcmNoZWQgZm9yOiB7QGxpbmsgZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZX0gbmFtZXMgaXQgb24gYm90aCBzaWRlcywgc28gdGhlIHBhdGggaXNcbiAqIGtub3duIGJlZm9yZSBhIGJ5dGUgaXMgd3JpdHRlbi4gV2hpY2gga2VlcHMgdGhlIGV4dHJhY3RvciBmcmVlIG9mIGFueSByZWFkIFx1MjAxNCBkZWxpYmVyYXRlLCBiZWNhdXNlXG4gKiBFbGVjdHJvbidzIGFzYXIgbGF5ZXIgaW50ZXJjZXB0cyBgZnNgIHJlYWRzIG9uIGFueSBwYXRoIGNvbnRhaW5pbmcgYC5hc2FyYCwgYW5kIGEgZGVtbyB2YXVsdCBtYXlcbiAqIGxlZ2l0aW1hdGVseSBzaGlwIHN1Y2ggYSBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBmcmVzaGx5IGV4dHJhY3RlZCB2YXVsdCBmb2xkZXIuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3REZW1vVmF1bHRUb0ZyZXNoRm9sZGVyKHBhcmFtczogRXh0cmFjdERlbW9WYXVsdFRvRnJlc2hGb2xkZXJQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IGFyY2hpdmUsIHBsdWdpbklkLCB2ZXJzaW9uIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGV4dHJhY3RlZFZhdWx0c1Jvb3QgPSBqb2luKHRtcGRpcigpLCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIsIEVYVFJBQ1RFRF9WQVVMVFNfU1VCRk9MREVSKTtcbiAgbWtkaXJTeW5jKGV4dHJhY3RlZFZhdWx0c1Jvb3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb25zdCB1bmlxdWVQYXJlbnREaXJlY3RvcnkgPSBta2R0ZW1wU3luYyhqb2luKGV4dHJhY3RlZFZhdWx0c1Jvb3QsIGAke3BsdWdpbklkfS0ke3ZlcnNpb259LWApKTtcbiAgZXh0cmFjdERlbW9WYXVsdEFyY2hpdmUoYXJjaGl2ZSwgdW5pcXVlUGFyZW50RGlyZWN0b3J5KTtcbiAgcmV0dXJuIGpvaW4oXG4gICAgdW5pcXVlUGFyZW50RGlyZWN0b3J5LFxuICAgIGdldERlbW9WYXVsdEZvbGRlck5hbWUoe1xuICAgICAgcGx1Z2luSWQsXG4gICAgICB2ZXJzaW9uXG4gICAgfSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZGVtby12YXVsdCBhcmNoaXZlIGJ5dGVzIGZvciBhIHZlcnNpb24sIGRvd25sb2FkaW5nIGFuZCBjYWNoaW5nIHRoZW0gb24gZmlyc3QgdXNlLlxuICpcbiAqIE9ubHkgdGhlIGFyY2hpdmUgaXMgY2FjaGVkIChrZXllZCBieSBwbHVnaW4gaWQgKyB2ZXJzaW9uKTsgdGhlIGV4dHJhY3RlZCB2YXVsdCBpcyBub3QuIEEgY2FjaGUgaGl0IGlzXG4gKiByZXR1cm5lZCB3aXRob3V0IGFueSBuZXR3b3JrIHJlcXVlc3Q7IGEgbWlzcyBkb3dubG9hZHMgdGhlIHJlbGVhc2UgYXNzZXQsIHdyaXRlcyBpdCB0byB0aGUgYXJjaGl2ZVxuICogY2FjaGUsIGFuZCByZXR1cm5zIHRoZSBmcmVzaGx5IGRvd25sb2FkZWQgYnl0ZXMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgUmVzb2x2ZURlbW9WYXVsdEFyY2hpdmVQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBhcmNoaXZlIGJ5dGVzLCBvciBgbnVsbGAgd2hlbiBubyBhcmNoaXZlIGlzIGF2YWlsYWJsZSBmb3JcbiAqIHRoZSB2ZXJzaW9uIChhIG5vdGljZSBoYXMgYmVlbiBzaG93bikuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVEZW1vVmF1bHRBcmNoaXZlKHBhcmFtczogUmVzb2x2ZURlbW9WYXVsdEFyY2hpdmVQYXJhbXMpOiBQcm9taXNlPEJ1ZmZlciB8IG51bGw+IHtcbiAgY29uc3Qge1xuICAgIHBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHByb2dyZXNzTm90aWNlLFxuICAgIHJlcG8sXG4gICAgdmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGFyY2hpdmVzRGlyZWN0b3J5ID0gam9pbih0bXBkaXIoKSwgREVNT19WQVVMVFNfQ0FDSEVfRk9MREVSLCBBUkNISVZFU19TVUJGT0xERVIpO1xuICBjb25zdCBhcmNoaXZlUGF0aCA9IGpvaW4oYXJjaGl2ZXNEaXJlY3RvcnksIGAke3BsdWdpbklkfS0ke3ZlcnNpb259LnppcGApO1xuICBpZiAoZXhpc3RzU3luYyhhcmNoaXZlUGF0aCkpIHtcbiAgICByZXR1cm4gcmVhZEZpbGVTeW5jKGFyY2hpdmVQYXRoKTtcbiAgfVxuXG4gIHByb2dyZXNzTm90aWNlLnNldENvbnRlbnQoYERvd25sb2FkaW5nIGRlbW8gdmF1bHQgZm9yICR7cGx1Z2luTmFtZX0gdiR7dmVyc2lvbn1cdTIwMjZgKTtcbiAgY29uc3QgYXNzZXRVcmwgPSBgaHR0cHM6Ly9naXRodWIuY29tLyR7cmVwb30vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke2dldERlbW9WYXVsdEFyY2hpdmVGaWxlTmFtZShwbHVnaW5JZCl9YDtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKHtcbiAgICB0aHJvdzogZmFsc2UsXG4gICAgdXJsOiBhc3NldFVybFxuICB9KTtcbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gSFRUUF9TVEFUVVNfT0spIHtcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShgTm8gZGVtbyB2YXVsdCBpcyBhdmFpbGFibGUgZm9yIHBsdWdpbiAke3BsdWdpbk5hbWV9IHYke3ZlcnNpb259LmApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXJjaGl2ZSA9IEJ1ZmZlci5mcm9tKHJlc3BvbnNlLmFycmF5QnVmZmVyKTtcbiAgbWtkaXJTeW5jKGFyY2hpdmVzRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhhcmNoaXZlUGF0aCwgYXJjaGl2ZSk7XG4gIHJldHVybiBhcmNoaXZlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -21,6 +21,10 @@ export declare enum ObsidianPluginRepoPaths {
|
|
|
21
21
|
*/
|
|
22
22
|
AnyCjs = "*.cjs",
|
|
23
23
|
/**
|
|
24
|
+
Any desktop-only TypeScript module, identified by the `desktop-` filename prefix.
|
|
25
|
+
*/
|
|
26
|
+
AnyDesktopTs = "desktop-*.ts",
|
|
27
|
+
/**
|
|
24
28
|
Any integration-test TypeScript file.
|
|
25
29
|
*/
|
|
26
30
|
AnyIntegrationTestTs = "*.integration.test.ts",
|
|
@@ -45,6 +45,7 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
|
|
|
45
45
|
ObsidianPluginRepoPaths2["AnyAndroidCaptureIntegrationTestTs"] = "*.android-capture.integration.test.ts";
|
|
46
46
|
ObsidianPluginRepoPaths2["AnyAndroidIntegrationTestTs"] = "*.android.integration.test.ts";
|
|
47
47
|
ObsidianPluginRepoPaths2["AnyCjs"] = "*.cjs";
|
|
48
|
+
ObsidianPluginRepoPaths2["AnyDesktopTs"] = "desktop-*.ts";
|
|
48
49
|
ObsidianPluginRepoPaths2["AnyIntegrationTestTs"] = "*.integration.test.ts";
|
|
49
50
|
ObsidianPluginRepoPaths2["AnyJs"] = "*.js";
|
|
50
51
|
ObsidianPluginRepoPaths2["AnyMjs"] = "*.mjs";
|
|
@@ -103,4 +104,4 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
|
|
|
103
104
|
export {
|
|
104
105
|
ObsidianPluginRepoPaths
|
|
105
106
|
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIGFuIGVudW1lcmF0aW9uIGZvciBjb21tb24gZmlsZSBhbmQgZm9sZGVyIHBhdGhzIHVzZWQgaW4gT2JzaWRpYW4gcGx1Z2luIGRldmVsb3BtZW50LlxuICovXG5cbi8qKlxuICogRW51bWVyYXRpb24gb2YgY29tbW9ubHkgdXNlZCBmaWxlIGFuZCBmb2xkZXIgcGF0aHMgaW4gT2JzaWRpYW4gcGx1Z2luIGRldmVsb3BtZW50LlxuICovXG5leHBvcnQgZW51bSBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB7XG4gIC8qKlxuICBBbnkgQW5kcm9pZCBjYXB0dXJlIGludGVncmF0aW9uLXRlc3QgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55QW5kcm9pZENhcHR1cmVJbnRlZ3JhdGlvblRlc3RUcyA9ICcqLmFuZHJvaWQtY2FwdHVyZS5pbnRlZ3JhdGlvbi50ZXN0LnRzJyxcblxuICAvKipcbiAgQW55IEFuZHJvaWQgaW50ZWdyYXRpb24tdGVzdCBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlBbmRyb2lkSW50ZWdyYXRpb25UZXN0VHMgPSAnKi5hbmRyb2lkLmludGVncmF0aW9uLnRlc3QudHMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBmaWxlLlxuICAgKi9cbiAgQW55Q2pzID0gJyouY2pzJyxcblxuICAvKipcbiAgQW55IGRlc2t0b3Atb25seSBUeXBlU2NyaXB0IG1vZHVsZSwgaWRlbnRpZmllZCBieSB0aGUgYGRlc2t0b3AtYCBmaWxlbmFtZSBwcmVmaXguXG4gICAqL1xuICBBbnlEZXNrdG9wVHMgPSAnZGVza3RvcC0qLnRzJyxcblxuICAvKipcbiAgQW55IGludGVncmF0aW9uLXRlc3QgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55SW50ZWdyYXRpb25UZXN0VHMgPSAnKi5pbnRlZ3JhdGlvbi50ZXN0LnRzJyxcblxuICAvKipcbiAgSmF2YVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55SnMgPSAnKi5qcycsXG5cbiAgLyoqXG4gIEVTTSBKYXZhU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlNanMgPSAnKi5tanMnLFxuXG4gIC8qKlxuICBBbnkgcGF0aCByZWN1cnNpdmVseS5cbiAgICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKlxuICBBbnkgdGVzdCBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlUZXN0VHMgPSAnKi50ZXN0LnRzJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqXG4gIFJlYWN0SlMgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55VHN4ID0gJyoudHN4JyxcblxuICAvKipcbiAgT2JzaWRpYW4gYXBwbGljYXRpb24gc2V0dGluZ3MgZmlsZSB3aXRoaW4gYW4gT2JzaWRpYW4gY29uZmlndXJhdGlvbiBmb2xkZXIuXG4gICAqL1xuICBBcHBKc29uID0gJ2FwcC5qc29uJyxcblxuICAvKipcbiAgQ2hhbmdlbG9nIGZpbGUuXG4gICAqL1xuICBDaGFuZ2Vsb2dNZCA9ICdDSEFOR0VMT0cubWQnLFxuXG4gIC8qKlxuICBDb21taXRsaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqXG4gIEN1cnJlbnQgZm9sZGVyLlxuICAgKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKipcbiAgRGVtbyB2YXVsdCBmb2xkZXIgc2hpcHBlZCBpbiBhIHBsdWdpbiByZXBvIHJvb3QuXG4gICAqL1xuICBEZW1vVmF1bHQgPSAnZGVtby12YXVsdCcsXG5cbiAgLyoqXG4gIERpc3RyaWJ1dGlvbiBmb2xkZXIuXG4gICAqL1xuICBEaXN0ID0gJ2Rpc3QnLFxuXG4gIC8qKlxuICBCdWlsZCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLlxuICAgKi9cbiAgRGlzdEJ1aWxkID0gJ2Rpc3QvYnVpbGQnLFxuXG4gIC8qKlxuICBEZXZlbG9wbWVudCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLlxuICAgKi9cbiAgRGlzdERldiA9ICdkaXN0L2RldicsXG5cbiAgLyoqXG4gIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyIHdpdGhpbiBhIHZhdWx0LlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvaGFyZGNvZGVkLWNvbmZpZy1wYXRoIC0tIFRoaXMgaXMgdGhlIGRlZmF1bHQgY29uZmlnIGZvbGRlciBuYW1lIGJha2VkIGludG8gYSBzaGlwcGVkIGRlbW8tdmF1bHQgc2tlbGV0b24sIG5vdCBhIGxvb2t1cCBhZ2FpbnN0IGEgbGl2ZSB2YXVsdC5cbiAgRG90T2JzaWRpYW4gPSAnLm9ic2lkaWFuJyxcblxuICAvKipcbiAgQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0NqcyA9ICdlc2xpbnQuY29uZmlnLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0N0cyA9ICdlc2xpbnQuY29uZmlnLmN0cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnTWpzID0gJ2VzbGludC5jb25maWcubWpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKlxuICBIb3QgcmVsb2FkIGZpbGUuXG4gICAqL1xuICBIb3RSZWxvYWQgPSAnLmhvdHJlbG9hZCcsXG5cbiAgLyoqXG4gIExpY2Vuc2UgZmlsZS5cbiAgICovXG4gIExpY2Vuc2UgPSAnTElDRU5TRScsXG5cbiAgLyoqXG4gIE1haW4gQ1NTIGZpbGUuXG4gICAqL1xuICBNYWluQ3NzID0gJ21haW4uY3NzJyxcblxuICAvKipcbiAgTWFpbiBKYXZhU2NyaXB0IGZpbGUuXG4gICAqL1xuICBNYWluSnMgPSAnbWFpbi5qcycsXG5cbiAgLyoqXG4gIE1haW4gVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgTWFpblRzID0gJ21haW4udHMnLFxuXG4gIC8qKlxuICBNYW5pZmVzdCBmaWxlIGZvciBiZXRhIHJlbGVhc2VzLlxuICAgKi9cbiAgTWFuaWZlc3RCZXRhSnNvbiA9ICdtYW5pZmVzdC1iZXRhLmpzb24nLFxuXG4gIC8qKlxuICBNYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgTWFuaWZlc3RKc29uID0gJ21hbmlmZXN0Lmpzb24nLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5janMnLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC1jbGkyLmpzb25jJyxcblxuICAvKipcbiAgRVNNIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqXG4gIFlBTUwgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ1lhbWwgPSAnLm1hcmtkb3dubGludC1jbGkyLnlhbWwnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKipcbiAgSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbiA9ICcubWFya2Rvd25saW50Lmpzb24nLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC5qc29uYycsXG5cbiAgLyoqXG4gIEVTTSBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKipcbiAgWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LnlhbWwnLFxuXG4gIC8qKlxuICBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZbWwgPSAnLm1hcmtkb3dubGludC55bWwnLFxuXG4gIC8qKlxuICBNb2NrcyBmb2xkZXIuXG4gICAqL1xuICBNb2NrcyA9ICdzcmMvdGVzdC1oZWxwZXJzJyxcblxuICAvKipcbiAgTm9kZSBtb2R1bGVzIGZvbGRlci5cbiAgICovXG4gIE5vZGVNb2R1bGVzID0gJ25vZGVfbW9kdWxlcycsXG5cbiAgLyoqXG4gIE5QTSBzaHJpbmt3cmFwIGZpbGUuXG4gICAqL1xuICBOcG1TaHJpbmt3cmFwSnNvbiA9ICducG0tc2hyaW5rd3JhcC5qc29uJyxcblxuICAvKipcbiAgUGFja2FnZSBKU09OIGZpbGUuXG4gICAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKlxuICBQYWNrYWdlLWxvY2sgSlNPTiBmaWxlLlxuICAgKi9cbiAgUGFja2FnZUxvY2tKc29uID0gJ3BhY2thZ2UtbG9jay5qc29uJyxcblxuICAvKipcbiAgUGx1Z2lucyBmb2xkZXIgd2l0aGluIGFuIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyLlxuICAgKi9cbiAgUGx1Z2lucyA9ICdwbHVnaW5zJyxcblxuICAvKipcbiAgU2NyaXB0cyBmb2xkZXIuXG4gICAqL1xuICBTY3JpcHRzID0gJ3NjcmlwdHMnLFxuXG4gIC8qKlxuICBTY3JpcHQgdXRpbGl0aWVzIGZvbGRlciAoZGV2LW9ubHkgdG9vbGluZyB0aGF0IHJ1bnMgaW4gdGhlIGNvbnN1bWVyJ3MgTm9kZSBlbnZpcm9ubWVudCwgbm90IHRoZSBPYnNpZGlhbiBydW50aW1lKS5cbiAgICovXG4gIFNjcmlwdFV0aWxzID0gJ3NyYy9zY3JpcHQtdXRpbHMnLFxuXG4gIC8qKlxuICBTb3VyY2UgZm9sZGVyLlxuICAgKi9cbiAgU3JjID0gJ3NyYycsXG5cbiAgLyoqXG4gIFN0eWxlcyBDU1MgZmlsZS5cbiAgICovXG4gIFN0eWxlc0NzcyA9ICdzdHlsZXMuY3NzJyxcblxuICAvKipcbiAgVGVzdHMgZm9sZGVyLlxuICAgKi9cbiAgVGVzdHMgPSAnX190ZXN0c19fJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBUc0NvbmZpZ0pzb24gPSAndHNjb25maWcuanNvbicsXG5cbiAgLyoqXG4gIFZlcnNpb25zIEpTT04gZmlsZS5cbiAgICovXG4gIFZlcnNpb25zSnNvbiA9ICd2ZXJzaW9ucy5qc29uJyxcblxuICAvKipcbiAgVml0ZXN0IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIFZpdGVzdENvbmZpZ1RzID0gJ3ZpdGVzdC5jb25maWcudHMnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU08sSUFBSywwQkFBTCxrQkFBS0EsNkJBQUw7QUFJTCxFQUFBQSx5QkFBQSx3Q0FBcUM7QUFLckMsRUFBQUEseUJBQUEsaUNBQThCO0FBSzlCLEVBQUFBLHlCQUFBLFlBQVM7QUFLVCxFQUFBQSx5QkFBQSxrQkFBZTtBQUtmLEVBQUFBLHlCQUFBLDBCQUF1QjtBQUt2QixFQUFBQSx5QkFBQSxXQUFRO0FBS1IsRUFBQUEseUJBQUEsWUFBUztBQUtULEVBQUFBLHlCQUFBLGFBQVU7QUFLVixFQUFBQSx5QkFBQSxlQUFZO0FBS1osRUFBQUEseUJBQUEsV0FBUTtBQUtSLEVBQUFBLHlCQUFBLFlBQVM7QUFLVCxFQUFBQSx5QkFBQSxhQUFVO0FBS1YsRUFBQUEseUJBQUEsaUJBQWM7QUFLZCxFQUFBQSx5QkFBQSx3QkFBcUI7QUFLckIsRUFBQUEseUJBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLHlCQUFBLGVBQVk7QUFLWixFQUFBQSx5QkFBQSxVQUFPO0FBS1AsRUFBQUEseUJBQUEsZUFBWTtBQUtaLEVBQUFBLHlCQUFBLGFBQVU7QUFNVixFQUFBQSx5QkFBQSxpQkFBYztBQUtkLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUtsQixFQUFBQSx5QkFBQSxxQkFBa0I7QUFLbEIsRUFBQUEseUJBQUEsb0JBQWlCO0FBS2pCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUtsQixFQUFBQSx5QkFBQSxxQkFBa0I7QUFLbEIsRUFBQUEseUJBQUEsb0JBQWlCO0FBS2pCLEVBQUFBLHlCQUFBLGVBQVk7QUFLWixFQUFBQSx5QkFBQSxhQUFVO0FBS1YsRUFBQUEseUJBQUEsYUFBVTtBQUtWLEVBQUFBLHlCQUFBLFlBQVM7QUFLVCxFQUFBQSx5QkFBQSxZQUFTO0FBS1QsRUFBQUEseUJBQUEsc0JBQW1CO0FBS25CLEVBQUFBLHlCQUFBLGtCQUFlO0FBS2YsRUFBQUEseUJBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLHlCQUFBLGlDQUE4QjtBQUs5QixFQUFBQSx5QkFBQSwrQkFBNEI7QUFLNUIsRUFBQUEseUJBQUEsZ0NBQTZCO0FBSzdCLEVBQUFBLHlCQUFBLDJCQUF3QjtBQUt4QixFQUFBQSx5QkFBQSw0QkFBeUI7QUFLekIsRUFBQUEseUJBQUEsNkJBQTBCO0FBSzFCLEVBQUFBLHlCQUFBLDJCQUF3QjtBQUt4QixFQUFBQSx5QkFBQSw0QkFBeUI7QUFLekIsRUFBQUEseUJBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLHlCQUFBLFdBQVE7QUFLUixFQUFBQSx5QkFBQSxpQkFBYztBQUtkLEVBQUFBLHlCQUFBLHVCQUFvQjtBQUtwQixFQUFBQSx5QkFBQSxpQkFBYztBQUtkLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUtsQixFQUFBQSx5QkFBQSxhQUFVO0FBS1YsRUFBQUEseUJBQUEsYUFBVTtBQUtWLEVBQUFBLHlCQUFBLGlCQUFjO0FBS2QsRUFBQUEseUJBQUEsU0FBTTtBQUtOLEVBQUFBLHlCQUFBLGVBQVk7QUFLWixFQUFBQSx5QkFBQSxXQUFRO0FBS1IsRUFBQUEseUJBQUEsa0JBQWU7QUFLZixFQUFBQSx5QkFBQSxrQkFBZTtBQUtmLEVBQUFBLHlCQUFBLG9CQUFpQjtBQTdSUCxTQUFBQTtBQUFBLEdBQUE7IiwKICAibmFtZXMiOiBbIk9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIl0KfQo=
|