obsidian-dev-utils 84.3.0 → 84.5.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.
@@ -129,8 +129,8 @@ __export(generated_during_build_exports, {
129
129
  LIBRARY_VERSION: () => LIBRARY_VERSION
130
130
  });
131
131
  module.exports = __toCommonJS(generated_during_build_exports);
132
- const LIBRARY_VERSION = "84.3.0";
133
- 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.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: var(--background-modifier-hover);\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 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 background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\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 .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\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 {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/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-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/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;;;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;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AC5EJ;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;EACA;;;ACVF;EACE;;;ACDF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%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.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&:hover%20%7B%5Cn%20%20%20%20%20%20background:%20var(--background-modifier-hover);%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%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&.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%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%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%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%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
132
+ const LIBRARY_VERSION = "84.5.0";
133
+ 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.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-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-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 background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\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 .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\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 {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/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-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/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;;;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;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;ACjFJ;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;EACA;;;ACVF;EACE;;;ACDF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%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.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.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%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&.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%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%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%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%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
134
134
  // Annotate the CommonJS export names for ESM import in node:
135
135
  0 && (module.exports = {
136
136
  LIBRARY_STYLES,
@@ -140,7 +140,8 @@ __export(modals_exports, {
140
140
  "minimizable-modal": () => minimizable_modal,
141
141
  modal: () => modal,
142
142
  prompt: () => prompt,
143
- "select-item": () => select_item
143
+ "select-item": () => select_item,
144
+ "suggest-modal-command-builder": () => suggest_modal_command_builder
144
145
  });
145
146
  module.exports = __toCommonJS(modals_exports);
146
147
  var alert = __toESM(__extractDefault(require('./alert.cjs')), 1);
@@ -149,6 +150,7 @@ var minimizable_modal = __toESM(__extractDefault(require('./minimizable-modal.cj
149
150
  var modal = __toESM(__extractDefault(require('./modal.cjs')), 1);
150
151
  var prompt = __toESM(__extractDefault(require('./prompt.cjs')), 1);
151
152
  var select_item = __toESM(__extractDefault(require('./select-item.cjs')), 1);
153
+ var suggest_modal_command_builder = __toESM(__extractDefault(require('./suggest-modal-command-builder.cjs')), 1);
152
154
  // Annotate the CommonJS export names for ESM import in node:
153
155
  0 && (module.exports = {
154
156
  alert,
@@ -156,6 +158,7 @@ var select_item = __toESM(__extractDefault(require('./select-item.cjs')), 1);
156
158
  "minimizable-modal": null,
157
159
  modal,
158
160
  prompt,
159
- "select-item": null
161
+ "select-item": null,
162
+ "suggest-modal-command-builder": null
160
163
  });
161
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdhbGVydCcgZnJvbSAnLi9hbGVydC50cyc7XG5leHBvcnQgKiBhcyAnY29uZmlybScgZnJvbSAnLi9jb25maXJtLnRzJztcbmV4cG9ydCAqIGFzICdtaW5pbWl6YWJsZS1tb2RhbCcgZnJvbSAnLi9taW5pbWl6YWJsZS1tb2RhbC50cyc7XG5leHBvcnQgKiBhcyAnbW9kYWwnIGZyb20gJy4vbW9kYWwudHMnO1xuZXhwb3J0ICogYXMgJ3Byb21wdCcgZnJvbSAnLi9wcm9tcHQudHMnO1xuZXhwb3J0ICogYXMgJ3NlbGVjdC1pdGVtJyBmcm9tICcuL3NlbGVjdC1pdGVtLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBQUFBO0FBQUEsRUFBQTtBQUFBO0FBQUEsdUJBQUFDO0FBQUE7QUFBQTtBQUVBLFlBQXlCO0FBQ3pCLGNBQTJCO0FBQzNCLElBQUFELG9CQUFxQztBQUNyQyxZQUF5QjtBQUN6QixhQUEwQjtBQUMxQixJQUFBQyxjQUErQjsiLAogICJuYW1lcyI6IFsibWluaW1pemFibGUtbW9kYWwiLCAic2VsZWN0LWl0ZW0iXQp9Cg==
164
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdhbGVydCcgZnJvbSAnLi9hbGVydC50cyc7XG5leHBvcnQgKiBhcyAnY29uZmlybScgZnJvbSAnLi9jb25maXJtLnRzJztcbmV4cG9ydCAqIGFzICdtaW5pbWl6YWJsZS1tb2RhbCcgZnJvbSAnLi9taW5pbWl6YWJsZS1tb2RhbC50cyc7XG5leHBvcnQgKiBhcyAnbW9kYWwnIGZyb20gJy4vbW9kYWwudHMnO1xuZXhwb3J0ICogYXMgJ3Byb21wdCcgZnJvbSAnLi9wcm9tcHQudHMnO1xuZXhwb3J0ICogYXMgJ3NlbGVjdC1pdGVtJyBmcm9tICcuL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCAqIGFzICdzdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlcicgZnJvbSAnLi9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDZCQUFBQTtBQUFBLEVBQUE7QUFBQTtBQUFBLHVCQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUE7QUFBQTtBQUVBLFlBQXlCO0FBQ3pCLGNBQTJCO0FBQzNCLElBQUFGLG9CQUFxQztBQUNyQyxZQUF5QjtBQUN6QixhQUEwQjtBQUMxQixJQUFBQyxjQUErQjtBQUMvQixJQUFBQyxnQ0FBaUQ7IiwKICAibmFtZXMiOiBbIm1pbmltaXphYmxlLW1vZGFsIiwgInNlbGVjdC1pdGVtIiwgInN1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyIl0KfQo=
@@ -5,3 +5,4 @@ export * as 'minimizable-modal' from './minimizable-modal.cjs';
5
5
  export * as 'modal' from './modal.cjs';
6
6
  export * as 'prompt' from './prompt.cjs';
7
7
  export * as 'select-item' from './select-item.cjs';
8
+ export * as 'suggest-modal-command-builder' from './suggest-modal-command-builder.cjs';
@@ -0,0 +1,269 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ const globalThisRecord = globalThis;
9
+ globalThisRecord['__name'] ??= name;
10
+ const originalRequire = require;
11
+ if (originalRequire && !originalRequire.__isPatched) {
12
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
13
+ require = Object.assign(
14
+ (id) => requirePatched(id),
15
+ originalRequire,
16
+ {
17
+ __isPatched: true
18
+ }
19
+ );
20
+ }
21
+
22
+ const newFuncs = {
23
+ __extractDefault() {
24
+ return extractDefault;
25
+ },
26
+ process() {
27
+ const browserProcess = {
28
+ browser: true,
29
+ cwd() {
30
+ return '/';
31
+ },
32
+ env: {},
33
+ platform: 'android'
34
+ };
35
+ return browserProcess;
36
+ }
37
+ };
38
+
39
+ for (const key of Object.keys(newFuncs)) {
40
+ globalThisRecord[key] ??= newFuncs[key]?.();
41
+ }
42
+
43
+ function name(obj) {
44
+ return obj;
45
+ }
46
+
47
+ function extractDefault(module) {
48
+ return module && module.__esModule && 'default' in module ? module.default : module;
49
+ }
50
+
51
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
+ 'obsidian',
53
+ '@codemirror/autocomplete',
54
+ '@codemirror/collab',
55
+ '@codemirror/commands',
56
+ '@codemirror/language',
57
+ '@codemirror/lint',
58
+ '@codemirror/search',
59
+ '@codemirror/state',
60
+ '@codemirror/text',
61
+ '@codemirror/view',
62
+ '@lezer/common',
63
+ '@lezer/lr',
64
+ '@lezer/highlight'];
65
+
66
+
67
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
68
+ '@codemirror/closebrackets',
69
+ '@codemirror/comment',
70
+ '@codemirror/fold',
71
+ '@codemirror/gutter',
72
+ '@codemirror/highlight',
73
+ '@codemirror/history',
74
+ '@codemirror/matchbrackets',
75
+ '@codemirror/panel',
76
+ '@codemirror/rangeset',
77
+ '@codemirror/rectangular-selection',
78
+ '@codemirror/stream-parser',
79
+ '@codemirror/tooltip'];
80
+
81
+
82
+ function requirePatched(id) {
83
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
84
+ return originalRequire?.(id);
85
+ }
86
+
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
89
+ if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
91
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
+ return globalThis.process;
94
+ }
95
+ } else {
96
+ const module = originalRequire?.(id);
97
+ if (module) {
98
+ return extractDefault(module);
99
+ }
100
+ }
101
+
102
+ // eslint-disable-next-line no-console -- Valid usage.
103
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
104
+ return {};
105
+ }
106
+ })();
107
+
108
+ "use strict";
109
+ var __defProp = Object.defineProperty;
110
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
111
+ var __getOwnPropNames = Object.getOwnPropertyNames;
112
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
113
+ var __export = (target, all) => {
114
+ for (var name in all)
115
+ __defProp(target, name, { get: all[name], enumerable: true });
116
+ };
117
+ var __copyProps = (to, from, except, desc) => {
118
+ if (from && typeof from === "object" || typeof from === "function") {
119
+ for (let key of __getOwnPropNames(from))
120
+ if (!__hasOwnProp.call(to, key) && key !== except)
121
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
122
+ }
123
+ return to;
124
+ };
125
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
126
+ var suggest_modal_command_builder_exports = {};
127
+ __export(suggest_modal_command_builder_exports, {
128
+ SuggestModalCommandBuilder: () => SuggestModalCommandBuilder
129
+ });
130
+ module.exports = __toCommonJS(suggest_modal_command_builder_exports);
131
+ var import_obsidian = require('obsidian');
132
+ const KEYS_MAP = /* @__PURE__ */ new Map([
133
+ ["Enter", "\u21B5"],
134
+ ["UpDown", "\u2191\u2193"]
135
+ ]);
136
+ class SuggestModalCommandBuilder {
137
+ instructions = [];
138
+ /**
139
+ * Adds an interactive checkbox to the instruction bar, bound to a modifier+key shortcut that toggles
140
+ * it.
141
+ *
142
+ * @param command - The checkbox command to add.
143
+ * @returns The builder instance for chaining.
144
+ */
145
+ addCheckbox(command) {
146
+ this.instructions.push({
147
+ command: this.buildCommand(command),
148
+ init: (purposeEl, scope) => {
149
+ const checkboxEl = purposeEl.createEl("input", { type: "checkbox" });
150
+ command.onInit(checkboxEl);
151
+ checkboxEl.addEventListener("change", () => {
152
+ command.onChange(checkboxEl.checked);
153
+ });
154
+ scope.register(command.modifiers ?? [], command.key, () => {
155
+ if (checkboxEl.disabled) {
156
+ return;
157
+ }
158
+ checkboxEl.checked = !checkboxEl.checked;
159
+ checkboxEl.trigger("change");
160
+ });
161
+ },
162
+ purpose: command.purpose
163
+ });
164
+ return this;
165
+ }
166
+ /**
167
+ * Adds a dropdown to the instruction bar, bound to a modifier+key shortcut that cycles through its
168
+ * options.
169
+ *
170
+ * @param command - The dropdown command to add.
171
+ * @returns The builder instance for chaining.
172
+ */
173
+ addDropDown(command) {
174
+ this.instructions.push({
175
+ command: this.buildCommand(command),
176
+ init: (purposeEl, scope) => {
177
+ purposeEl.appendText(" ");
178
+ const dropdownComponent = new import_obsidian.DropdownComponent(purposeEl);
179
+ command.onInit(dropdownComponent);
180
+ dropdownComponent.onChange((value) => {
181
+ command.onChange(value);
182
+ });
183
+ scope.register(command.modifiers ?? [], command.key, () => {
184
+ if (dropdownComponent.disabled) {
185
+ return;
186
+ }
187
+ const selectEl = dropdownComponent.selectEl;
188
+ selectEl.selectedIndex = (selectEl.selectedIndex + 1) % selectEl.options.length;
189
+ selectEl.trigger("change");
190
+ });
191
+ },
192
+ purpose: command.purpose
193
+ });
194
+ return this;
195
+ }
196
+ /**
197
+ * Adds a keyboard command to the instruction bar. When {@link KeyboardCommand.onKey} is provided, its
198
+ * handler is registered with the modal scope; otherwise the command is a hint only.
199
+ *
200
+ * @param command - The keyboard command to add.
201
+ * @returns The builder instance for chaining.
202
+ */
203
+ addKeyboardCommand(command) {
204
+ this.instructions.push({
205
+ command: this.buildCommand(command),
206
+ purpose: command.purpose,
207
+ registerScope: (scope) => {
208
+ if (command.onKey) {
209
+ scope.register(command.modifiers ?? [], command.key, command.onKey.bind(command));
210
+ }
211
+ }
212
+ });
213
+ return this;
214
+ }
215
+ /**
216
+ * Applies the accumulated commands to a modal. Always registers the essential navigation/action key
217
+ * handlers; only renders the instruction UI and registers the option-toggle shortcuts when
218
+ * {@link SuggestModalCommandBuilderBuildOptions.shouldShowInstructions} is `true`.
219
+ *
220
+ * @param modal - The modal to apply the commands to.
221
+ * @param options - The build options.
222
+ */
223
+ build(modal, options = {}) {
224
+ const { shouldShowInstructions = true } = options;
225
+ for (const instruction of this.instructions) {
226
+ instruction.registerScope?.(modal.scope);
227
+ }
228
+ if (!shouldShowInstructions) {
229
+ return;
230
+ }
231
+ modal.setInstructions(this.instructions);
232
+ const purposeEls = Array.from(modal.instructionsEl.findAll(".prompt-instruction > span:nth-child(2)"));
233
+ for (let i = 0; i < purposeEls.length; i++) {
234
+ const purposeEl = purposeEls[i];
235
+ if (!purposeEl) {
236
+ continue;
237
+ }
238
+ this.instructions[i]?.init?.(purposeEl, modal.scope);
239
+ }
240
+ }
241
+ buildCommand(entry) {
242
+ let command = KEYS_MAP.get(entry.key) ?? entry.key;
243
+ for (const modifier of entry.modifiers ?? []) {
244
+ command = `${this.getModifierString(modifier)} ${command}`;
245
+ }
246
+ return command;
247
+ }
248
+ getModifierString(modifier) {
249
+ switch (modifier) {
250
+ case "Alt":
251
+ return "alt";
252
+ case "Ctrl":
253
+ return "ctrl";
254
+ case "Meta":
255
+ return import_obsidian.Platform.isMacOS ? "cmd" : "win";
256
+ case "Mod":
257
+ return import_obsidian.Platform.isMacOS ? "cmd" : "ctrl";
258
+ case "Shift":
259
+ return "shift";
260
+ default:
261
+ return modifier;
262
+ }
263
+ }
264
+ }
265
+ // Annotate the CommonJS export names for ESM import in node:
266
+ 0 && (module.exports = {
267
+ SuggestModalCommandBuilder
268
+ });
269
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgYnVpbGRlciBmb3IgYSB7QGxpbmsgU3VnZ2VzdE1vZGFsfSdzIGluc3RydWN0aW9uIGJhci5cbiAqXG4gKiB7QGxpbmsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXJ9IGFzc2VtYmxlcyB0aGUgaW5zdHJ1Y3Rpb24gYmFyIHNob3duIGF0IHRoZSBib3R0b20gb2YgYVxuICoge0BsaW5rIFN1Z2dlc3RNb2RhbH06IGtleWJvYXJkLWNvbW1hbmQgaGludHMgKHtAbGluayBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlci5hZGRLZXlib2FyZENvbW1hbmR9KSxcbiAqIGludGVyYWN0aXZlIGNoZWNrYm94ZXMgYm91bmQgdG8gYSBtb2RpZmllcitrZXkgc2hvcnRjdXRcbiAqICh7QGxpbmsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIuYWRkQ2hlY2tib3h9KSwgYW5kIGRyb3Bkb3ducyBib3VuZCB0byBhIG1vZGlmaWVyK2tleSBzaG9ydGN1dFxuICogKHtAbGluayBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlci5hZGREcm9wRG93bn0pLiBDaGFpbiB0aGUgYGFkZCpgIGNhbGxzLCB0aGVuIGFwcGx5IGV2ZXJ5dGhpbmcgdG8gYVxuICogbW9kYWwgd2l0aCB7QGxpbmsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIuYnVpbGR9OlxuICpcbiAqIGBgYHRzXG4gKiBuZXcgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIoKVxuICogICAuYWRkS2V5Ym9hcmRDb21tYW5kKHsga2V5OiAnRW50ZXInLCBtb2RpZmllcnM6IFsnTW9kJ10sIG9uS2V5LCBwdXJwb3NlOiAndG8gY3JlYXRlJyB9KVxuICogICAuYWRkQ2hlY2tib3goeyBrZXk6ICcxJywgbW9kaWZpZXJzOiBbJ0FsdCddLCBvbkNoYW5nZSwgb25Jbml0LCBwdXJwb3NlOiAnRml4IGZvb3Rub3RlcycgfSlcbiAqICAgLmJ1aWxkKG1vZGFsKTtcbiAqIGBgYFxuICpcbiAqIHtAbGluayBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlci5idWlsZH0gYWx3YXlzIHJlZ2lzdGVycyB0aGUgZXNzZW50aWFsIG5hdmlnYXRpb24vYWN0aW9uIGtleVxuICogaGFuZGxlcnMsIGJ1dCBvbmx5IHJlbmRlcnMgdGhlIGluc3RydWN0aW9uIFVJIGFuZCByZWdpc3RlcnMgdGhlIG9wdGlvbi10b2dnbGUgc2hvcnRjdXRzIHdoZW5cbiAqIHtAbGluayBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlckJ1aWxkT3B0aW9ucy5zaG91bGRTaG93SW5zdHJ1Y3Rpb25zfSBpcyBgdHJ1ZWAgKHRoZSBkZWZhdWx0KS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEluc3RydWN0aW9uLFxuICBLZXltYXBDb250ZXh0LFxuICBNb2RpZmllcixcbiAgU2NvcGUsXG4gIFN1Z2dlc3RNb2RhbFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7XG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQbGF0Zm9ybVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmNvbnN0IEtFWVNfTUFQID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xuICBbJ0VudGVyJywgJ1x1MjFCNSddLFxuICBbJ1VwRG93bicsICdcdTIxOTFcdTIxOTMnXVxuXSk7XG5cbi8qKlxuICogQSBjaGVja2JveCBjb21tYW5kIHNob3duIGluIGEge0BsaW5rIFN1Z2dlc3RNb2RhbH0ncyBpbnN0cnVjdGlvbiBiYXIgYW5kIGJvdW5kIHRvIGEgbW9kaWZpZXIra2V5XG4gKiBzaG9ydGN1dCB0aGF0IHRvZ2dsZXMgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hDb21tYW5kIHtcbiAgLyoqXG4gICAqIFRoZSBrZXkgdGhhdCB0b2dnbGVzIHRoZSBjaGVja2JveC5cbiAgICovXG4gIGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpZXJzIGNvbWJpbmVkIHdpdGgge0BsaW5rIENoZWNrYm94Q29tbWFuZC5rZXl9IHRvIHRvZ2dsZSB0aGUgY2hlY2tib3guIFdoZW4gb21pdHRlZCwgbm9cbiAgICogbW9kaWZpZXJzIGFyZSByZXF1aXJlZC5cbiAgICovXG4gIG1vZGlmaWVycz86IE1vZGlmaWVyW107XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCB2YWx1ZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3IGNoZWNrZWQgc3RhdGUuXG4gICAqL1xuICBvbkNoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHdpdGggdGhlIGNyZWF0ZWQgY2hlY2tib3ggZWxlbWVudCwgdG8gaW5pdGlhbGl6ZSBpdHMgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSBjaGVja2JveEVsIC0gVGhlIGNyZWF0ZWQgY2hlY2tib3ggZWxlbWVudC5cbiAgICovXG4gIG9uSW5pdChjaGVja2JveEVsOiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIHNob3duIG5leHQgdG8gdGhlIGNoZWNrYm94IGluIHRoZSBpbnN0cnVjdGlvbiBiYXIuXG4gICAqL1xuICBwdXJwb3NlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBkcm9wZG93biBjb21tYW5kIHNob3duIGluIGEge0BsaW5rIFN1Z2dlc3RNb2RhbH0ncyBpbnN0cnVjdGlvbiBiYXIgYW5kIGJvdW5kIHRvIGEgbW9kaWZpZXIra2V5XG4gKiBzaG9ydGN1dCB0aGF0IGN5Y2xlcyB0aHJvdWdoIGl0cyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3BEb3duQ29tbWFuZCB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRoYXQgY3ljbGVzIHRoZSBkcm9wZG93biB0byBpdHMgbmV4dCBvcHRpb24uXG4gICAqL1xuICBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1vZGlmaWVycyBjb21iaW5lZCB3aXRoIHtAbGluayBEcm9wRG93bkNvbW1hbmQua2V5fSB0byBjeWNsZSB0aGUgZHJvcGRvd24uIFdoZW4gb21pdHRlZCwgbm9cbiAgICogbW9kaWZpZXJzIGFyZSByZXF1aXJlZC5cbiAgICovXG4gIG1vZGlmaWVycz86IE1vZGlmaWVyW107XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBkcm9wZG93biB2YWx1ZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3bHkgc2VsZWN0ZWQgdmFsdWUuXG4gICAqL1xuICBvbkNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2Ugd2l0aCB0aGUgY3JlYXRlZCBkcm9wZG93biBjb21wb25lbnQsIHRvIGluaXRpYWxpemUgaXRzIG9wdGlvbnMgYW5kIHN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0gZHJvcGRvd25Db21wb25lbnQgLSBUaGUgY3JlYXRlZCBkcm9wZG93biBjb21wb25lbnQuXG4gICAqL1xuICBvbkluaXQoZHJvcGRvd25Db21wb25lbnQ6IERyb3Bkb3duQ29tcG9uZW50KTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIHNob3duIG5leHQgdG8gdGhlIGRyb3Bkb3duIGluIHRoZSBpbnN0cnVjdGlvbiBiYXIuXG4gICAqL1xuICBwdXJwb3NlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBrZXlib2FyZCBjb21tYW5kIHNob3duIGluIGEge0BsaW5rIFN1Z2dlc3RNb2RhbH0ncyBpbnN0cnVjdGlvbiBiYXIgYW5kIG9wdGlvbmFsbHkgYm91bmQgdG8gYVxuICogbW9kaWZpZXIra2V5IGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Ym9hcmRDb21tYW5kIHtcbiAgLyoqXG4gICAqIFRoZSBrZXkgc2hvd24gaW4gdGhlIGluc3RydWN0aW9uIGJhciAoYW5kIHJlZ2lzdGVyZWQgd2l0aCB0aGUgbW9kYWwgc2NvcGUgd2hlblxuICAgKiB7QGxpbmsgS2V5Ym9hcmRDb21tYW5kLm9uS2V5fSBpcyBwcm92aWRlZCkuXG4gICAqL1xuICBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1vZGlmaWVycyBjb21iaW5lZCB3aXRoIHtAbGluayBLZXlib2FyZENvbW1hbmQua2V5fS4gV2hlbiBvbWl0dGVkLCBubyBtb2RpZmllcnMgYXJlIHJlcXVpcmVkLlxuICAgKi9cbiAgbW9kaWZpZXJzPzogTW9kaWZpZXJbXTtcblxuICAvKipcbiAgICogVGhlIGhhbmRsZXIgaW52b2tlZCB3aGVuIHRoZSBzaG9ydGN1dCBpcyBwcmVzc2VkLiBXaGVuIG9taXR0ZWQsIHRoZSBjb21tYW5kIGlzIGEgaGludCBvbmx5IGFuZCBub1xuICAgKiBzY29wZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBldnQgLSBUaGUga2V5Ym9hcmQgZXZlbnQuXG4gICAqIEBwYXJhbSBjdHggLSBUaGUga2V5bWFwIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIGBmYWxzZWAgdG8gcHJldmVudCBPYnNpZGlhbidzIGRlZmF1bHQgaGFuZGxpbmcsIG9yIGB2b2lkYC9gdHJ1ZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgb25LZXk/KGV2dDogS2V5Ym9hcmRFdmVudCwgY3R4OiBLZXltYXBDb250ZXh0KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIHNob3duIG5leHQgdG8gdGhlIGtleSBpbiB0aGUgaW5zdHJ1Y3Rpb24gYmFyLlxuICAgKi9cbiAgcHVycG9zZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlci5idWlsZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXJCdWlsZE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byByZW5kZXIgdGhlIGluc3RydWN0aW9uIGJhciAoY2hlY2tib3hlcywgZHJvcGRvd25zLCBrZXlib2FyZCBoaW50cykgYW5kIHJlZ2lzdGVyIHRoZVxuICAgKiBvcHRpb24tdG9nZ2xlIGtleWJvYXJkIHNob3J0Y3V0cy4gV2hlbiBgZmFsc2VgLCBubyBpbnN0cnVjdGlvbiBVSSBpcyBzaG93biBhbmQgdGhlIG9wdGlvbi10b2dnbGVcbiAgICogc2hvcnRjdXRzIGFyZSBub3QgcmVnaXN0ZXJlZDsgb25seSB0aGUgZXNzZW50aWFsIG5hdmlnYXRpb24ga2V5IGhhbmRsZXJzIHJlbWFpbiBhY3RpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd0luc3RydWN0aW9ucz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJbnN0cnVjdGlvbkV4IGV4dGVuZHMgSW5zdHJ1Y3Rpb24ge1xuICBpbml0PyhwdXJwb3NlRWw6IEhUTUxTcGFuRWxlbWVudCwgc2NvcGU6IFNjb3BlKTogdm9pZDtcbiAgcmVnaXN0ZXJTY29wZT8oc2NvcGU6IFNjb3BlKTogdm9pZDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgU3VnZ2VzdE1vZGFsfSdzIGluc3RydWN0aW9uIGJhciBmcm9tIGtleWJvYXJkIGNvbW1hbmRzLCBpbnRlcmFjdGl2ZSBjaGVja2JveGVzLCBhbmRcbiAqIGRyb3Bkb3ducywgdGhlbiBhcHBsaWVzIHRoZW0gdG8gYSBtb2RhbCB2aWEge0BsaW5rIFN1Z2dlc3RNb2RhbENvbW1hbmRCdWlsZGVyLmJ1aWxkfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1Z2dlc3RNb2RhbENvbW1hbmRCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0cnVjdGlvbnM6IEluc3RydWN0aW9uRXhbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGludGVyYWN0aXZlIGNoZWNrYm94IHRvIHRoZSBpbnN0cnVjdGlvbiBiYXIsIGJvdW5kIHRvIGEgbW9kaWZpZXIra2V5IHNob3J0Y3V0IHRoYXQgdG9nZ2xlc1xuICAgKiBpdC5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY2hlY2tib3ggY29tbWFuZCB0byBhZGQuXG4gICAqIEByZXR1cm5zIFRoZSBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHB1YmxpYyBhZGRDaGVja2JveChjb21tYW5kOiBDaGVja2JveENvbW1hbmQpOiB0aGlzIHtcbiAgICB0aGlzLmluc3RydWN0aW9ucy5wdXNoKHtcbiAgICAgIGNvbW1hbmQ6IHRoaXMuYnVpbGRDb21tYW5kKGNvbW1hbmQpLFxuICAgICAgaW5pdDogKHB1cnBvc2VFbCwgc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hFbCA9IHB1cnBvc2VFbC5jcmVhdGVFbCgnaW5wdXQnLCB7IHR5cGU6ICdjaGVja2JveCcgfSk7XG4gICAgICAgIGNvbW1hbmQub25Jbml0KGNoZWNrYm94RWwpO1xuICAgICAgICBjaGVja2JveEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgICBjb21tYW5kLm9uQ2hhbmdlKGNoZWNrYm94RWwuY2hlY2tlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNjb3BlLnJlZ2lzdGVyKGNvbW1hbmQubW9kaWZpZXJzID8/IFtdLCBjb21tYW5kLmtleSwgKCkgPT4ge1xuICAgICAgICAgIGlmIChjaGVja2JveEVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoZWNrYm94RWwuY2hlY2tlZCA9ICFjaGVja2JveEVsLmNoZWNrZWQ7XG4gICAgICAgICAgY2hlY2tib3hFbC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgcHVycG9zZTogY29tbWFuZC5wdXJwb3NlXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGRyb3Bkb3duIHRvIHRoZSBpbnN0cnVjdGlvbiBiYXIsIGJvdW5kIHRvIGEgbW9kaWZpZXIra2V5IHNob3J0Y3V0IHRoYXQgY3ljbGVzIHRocm91Z2ggaXRzXG4gICAqIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGRyb3Bkb3duIGNvbW1hbmQgdG8gYWRkLlxuICAgKiBAcmV0dXJucyBUaGUgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBwdWJsaWMgYWRkRHJvcERvd24oY29tbWFuZDogRHJvcERvd25Db21tYW5kKTogdGhpcyB7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICBjb21tYW5kOiB0aGlzLmJ1aWxkQ29tbWFuZChjb21tYW5kKSxcbiAgICAgIGluaXQ6IChwdXJwb3NlRWwsIHNjb3BlKSA9PiB7XG4gICAgICAgIHB1cnBvc2VFbC5hcHBlbmRUZXh0KCcgJyk7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duQ29tcG9uZW50ID0gbmV3IERyb3Bkb3duQ29tcG9uZW50KHB1cnBvc2VFbCk7XG4gICAgICAgIGNvbW1hbmQub25Jbml0KGRyb3Bkb3duQ29tcG9uZW50KTtcbiAgICAgICAgZHJvcGRvd25Db21wb25lbnQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29tbWFuZC5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBkZWZlbnNpdmUgPz8gb24gb3B0aW9uYWwgbW9kaWZpZXJzLiAqL1xuICAgICAgICBzY29wZS5yZWdpc3Rlcihjb21tYW5kLm1vZGlmaWVycyA/PyBbXSwgY29tbWFuZC5rZXksICgpID0+IHtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgIGlmIChkcm9wZG93bkNvbXBvbmVudC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzZWxlY3RFbCA9IGRyb3Bkb3duQ29tcG9uZW50LnNlbGVjdEVsO1xuICAgICAgICAgIHNlbGVjdEVsLnNlbGVjdGVkSW5kZXggPSAoc2VsZWN0RWwuc2VsZWN0ZWRJbmRleCArIDEpICUgc2VsZWN0RWwub3B0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgc2VsZWN0RWwudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHB1cnBvc2U6IGNvbW1hbmQucHVycG9zZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBrZXlib2FyZCBjb21tYW5kIHRvIHRoZSBpbnN0cnVjdGlvbiBiYXIuIFdoZW4ge0BsaW5rIEtleWJvYXJkQ29tbWFuZC5vbktleX0gaXMgcHJvdmlkZWQsIGl0c1xuICAgKiBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgbW9kYWwgc2NvcGU7IG90aGVyd2lzZSB0aGUgY29tbWFuZCBpcyBhIGhpbnQgb25seS5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmQgLSBUaGUga2V5Ym9hcmQgY29tbWFuZCB0byBhZGQuXG4gICAqIEByZXR1cm5zIFRoZSBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHB1YmxpYyBhZGRLZXlib2FyZENvbW1hbmQoY29tbWFuZDogS2V5Ym9hcmRDb21tYW5kKTogdGhpcyB7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICBjb21tYW5kOiB0aGlzLmJ1aWxkQ29tbWFuZChjb21tYW5kKSxcbiAgICAgIHB1cnBvc2U6IGNvbW1hbmQucHVycG9zZSxcbiAgICAgIHJlZ2lzdGVyU2NvcGU6IChzY29wZSkgPT4ge1xuICAgICAgICBpZiAoY29tbWFuZC5vbktleSkge1xuICAgICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBkZWZlbnNpdmUgPz8gb24gb3B0aW9uYWwgbW9kaWZpZXJzLiAqL1xuICAgICAgICAgIHNjb3BlLnJlZ2lzdGVyKGNvbW1hbmQubW9kaWZpZXJzID8/IFtdLCBjb21tYW5kLmtleSwgY29tbWFuZC5vbktleS5iaW5kKGNvbW1hbmQpKTtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgYWNjdW11bGF0ZWQgY29tbWFuZHMgdG8gYSBtb2RhbC4gQWx3YXlzIHJlZ2lzdGVycyB0aGUgZXNzZW50aWFsIG5hdmlnYXRpb24vYWN0aW9uIGtleVxuICAgKiBoYW5kbGVyczsgb25seSByZW5kZXJzIHRoZSBpbnN0cnVjdGlvbiBVSSBhbmQgcmVnaXN0ZXJzIHRoZSBvcHRpb24tdG9nZ2xlIHNob3J0Y3V0cyB3aGVuXG4gICAqIHtAbGluayBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlckJ1aWxkT3B0aW9ucy5zaG91bGRTaG93SW5zdHJ1Y3Rpb25zfSBpcyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RhbCAtIFRoZSBtb2RhbCB0byBhcHBseSB0aGUgY29tbWFuZHMgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGJ1aWxkIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgYnVpbGQobW9kYWw6IFN1Z2dlc3RNb2RhbDx1bmtub3duPiwgb3B0aW9uczogU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXJCdWlsZE9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2hvdWxkU2hvd0luc3RydWN0aW9ucyA9IHRydWUgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBFc3NlbnRpYWwgbmF2aWdhdGlvbi9hY3Rpb24ga2V5IGhhbmRsZXJzIG11c3Qgc3RheSBhY3RpdmUgZXZlbiB3aGVuIHRoZSBpbnN0cnVjdGlvbiBiYXIgaXMgaGlkZGVuLlxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5pbnN0cnVjdGlvbnMpIHtcbiAgICAgIGluc3RydWN0aW9uLnJlZ2lzdGVyU2NvcGU/Lihtb2RhbC5zY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKCFzaG91bGRTaG93SW5zdHJ1Y3Rpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbW9kYWwuc2V0SW5zdHJ1Y3Rpb25zKHRoaXMuaW5zdHJ1Y3Rpb25zKTtcbiAgICBjb25zdCBwdXJwb3NlRWxzID0gQXJyYXkuZnJvbShtb2RhbC5pbnN0cnVjdGlvbnNFbC5maW5kQWxsKCcucHJvbXB0LWluc3RydWN0aW9uID4gc3BhbjpudGgtY2hpbGQoMiknKSkgYXMgSFRNTFNwYW5FbGVtZW50W107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwdXJwb3NlRWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwdXJwb3NlRWwgPSBwdXJwb3NlRWxzW2ldO1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHB1cnBvc2VFbHNbaV0gaXMgYWx3YXlzIGRlZmluZWQgd2l0aGluIGxvb3AgYm91bmRzLiAqL1xuICAgICAgaWYgKCFwdXJwb3NlRWwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgICB0aGlzLmluc3RydWN0aW9uc1tpXT8uaW5pdD8uKHB1cnBvc2VFbCwgbW9kYWwuc2NvcGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb21tYW5kKGVudHJ5OiBLZXlib2FyZENvbW1hbmQpOiBzdHJpbmcge1xuICAgIGxldCBjb21tYW5kID0gS0VZU19NQVAuZ2V0KGVudHJ5LmtleSkgPz8gZW50cnkua2V5O1xuXG4gICAgZm9yIChjb25zdCBtb2RpZmllciBvZiBlbnRyeS5tb2RpZmllcnMgPz8gW10pIHtcbiAgICAgIGNvbW1hbmQgPSBgJHt0aGlzLmdldE1vZGlmaWVyU3RyaW5nKG1vZGlmaWVyKX0gJHtjb21tYW5kfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1hbmQ7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGlmaWVyU3RyaW5nKG1vZGlmaWVyOiBNb2RpZmllcik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChtb2RpZmllcikge1xuICAgICAgY2FzZSAnQWx0JzpcbiAgICAgICAgcmV0dXJuICdhbHQnO1xuICAgICAgY2FzZSAnQ3RybCc6XG4gICAgICAgIHJldHVybiAnY3RybCc7XG4gICAgICBjYXNlICdNZXRhJzpcbiAgICAgICAgcmV0dXJuIFBsYXRmb3JtLmlzTWFjT1MgPyAnY21kJyA6ICd3aW4nO1xuICAgICAgY2FzZSAnTW9kJzpcbiAgICAgICAgcmV0dXJuIFBsYXRmb3JtLmlzTWFjT1MgPyAnY21kJyA6ICdjdHJsJztcbiAgICAgIGNhc2UgJ1NoaWZ0JzpcbiAgICAgICAgcmV0dXJuICdzaGlmdCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbW9kaWZpZXI7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQ0Esc0JBR087QUFFUCxNQUFNLFdBQVcsb0JBQUksSUFBb0I7QUFBQSxFQUN2QyxDQUFDLFNBQVMsUUFBRztBQUFBLEVBQ2IsQ0FBQyxVQUFVLGNBQUk7QUFDakIsQ0FBQztBQWlJTSxNQUFNLDJCQUEyQjtBQUFBLEVBQ3JCLGVBQWdDLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUzNDLFlBQVksU0FBZ0M7QUFDakQsU0FBSyxhQUFhLEtBQUs7QUFBQSxNQUNyQixTQUFTLEtBQUssYUFBYSxPQUFPO0FBQUEsTUFDbEMsTUFBTSxDQUFDLFdBQVcsVUFBVTtBQUMxQixjQUFNLGFBQWEsVUFBVSxTQUFTLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRSxnQkFBUSxPQUFPLFVBQVU7QUFDekIsbUJBQVcsaUJBQWlCLFVBQVUsTUFBTTtBQUMxQyxrQkFBUSxTQUFTLFdBQVcsT0FBTztBQUFBLFFBQ3JDLENBQUM7QUFFRCxjQUFNLFNBQVMsUUFBUSxhQUFhLENBQUMsR0FBRyxRQUFRLEtBQUssTUFBTTtBQUN6RCxjQUFJLFdBQVcsVUFBVTtBQUN2QjtBQUFBLFVBQ0Y7QUFDQSxxQkFBVyxVQUFVLENBQUMsV0FBVztBQUNqQyxxQkFBVyxRQUFRLFFBQVE7QUFBQSxRQUM3QixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsU0FBUyxRQUFRO0FBQUEsSUFDbkIsQ0FBQztBQUNELFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNPLFlBQVksU0FBZ0M7QUFDakQsU0FBSyxhQUFhLEtBQUs7QUFBQSxNQUNyQixTQUFTLEtBQUssYUFBYSxPQUFPO0FBQUEsTUFDbEMsTUFBTSxDQUFDLFdBQVcsVUFBVTtBQUMxQixrQkFBVSxXQUFXLEdBQUc7QUFDeEIsY0FBTSxvQkFBb0IsSUFBSSxrQ0FBa0IsU0FBUztBQUN6RCxnQkFBUSxPQUFPLGlCQUFpQjtBQUNoQywwQkFBa0IsU0FBUyxDQUFDLFVBQVU7QUFDcEMsa0JBQVEsU0FBUyxLQUFLO0FBQUEsUUFDeEIsQ0FBQztBQUdELGNBQU0sU0FBUyxRQUFRLGFBQWEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxNQUFNO0FBRXpELGNBQUksa0JBQWtCLFVBQVU7QUFDOUI7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sV0FBVyxrQkFBa0I7QUFDbkMsbUJBQVMsaUJBQWlCLFNBQVMsZ0JBQWdCLEtBQUssU0FBUyxRQUFRO0FBQ3pFLG1CQUFTLFFBQVEsUUFBUTtBQUFBLFFBQzNCLENBQUM7QUFBQSxNQUNIO0FBQUEsTUFDQSxTQUFTLFFBQVE7QUFBQSxJQUNuQixDQUFDO0FBQ0QsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sbUJBQW1CLFNBQWdDO0FBQ3hELFNBQUssYUFBYSxLQUFLO0FBQUEsTUFDckIsU0FBUyxLQUFLLGFBQWEsT0FBTztBQUFBLE1BQ2xDLFNBQVMsUUFBUTtBQUFBLE1BQ2pCLGVBQWUsQ0FBQyxVQUFVO0FBQ3hCLFlBQUksUUFBUSxPQUFPO0FBRWpCLGdCQUFNLFNBQVMsUUFBUSxhQUFhLENBQUMsR0FBRyxRQUFRLEtBQUssUUFBUSxNQUFNLEtBQUssT0FBTyxDQUFDO0FBQUEsUUFFbEY7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQ0QsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVTyxNQUFNLE9BQThCLFVBQWtELENBQUMsR0FBUztBQUNyRyxVQUFNLEVBQUUseUJBQXlCLEtBQUssSUFBSTtBQUcxQyxlQUFXLGVBQWUsS0FBSyxjQUFjO0FBQzNDLGtCQUFZLGdCQUFnQixNQUFNLEtBQUs7QUFBQSxJQUN6QztBQUVBLFFBQUksQ0FBQyx3QkFBd0I7QUFDM0I7QUFBQSxJQUNGO0FBRUEsVUFBTSxnQkFBZ0IsS0FBSyxZQUFZO0FBQ3ZDLFVBQU0sYUFBYSxNQUFNLEtBQUssTUFBTSxlQUFlLFFBQVEseUNBQXlDLENBQUM7QUFDckcsYUFBUyxJQUFJLEdBQUcsSUFBSSxXQUFXLFFBQVEsS0FBSztBQUMxQyxZQUFNLFlBQVksV0FBVyxDQUFDO0FBRTlCLFVBQUksQ0FBQyxXQUFXO0FBQ2Q7QUFBQSxNQUNGO0FBR0EsV0FBSyxhQUFhLENBQUMsR0FBRyxPQUFPLFdBQVcsTUFBTSxLQUFLO0FBQUEsSUFDckQ7QUFBQSxFQUNGO0FBQUEsRUFFUSxhQUFhLE9BQWdDO0FBQ25ELFFBQUksVUFBVSxTQUFTLElBQUksTUFBTSxHQUFHLEtBQUssTUFBTTtBQUUvQyxlQUFXLFlBQVksTUFBTSxhQUFhLENBQUMsR0FBRztBQUM1QyxnQkFBVSxHQUFHLEtBQUssa0JBQWtCLFFBQVEsQ0FBQyxJQUFJLE9BQU87QUFBQSxJQUMxRDtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFUSxrQkFBa0IsVUFBNEI7QUFDcEQsWUFBUSxVQUFVO0FBQUEsTUFDaEIsS0FBSztBQUNILGVBQU87QUFBQSxNQUNULEtBQUs7QUFDSCxlQUFPO0FBQUEsTUFDVCxLQUFLO0FBQ0gsZUFBTyx5QkFBUyxVQUFVLFFBQVE7QUFBQSxNQUNwQyxLQUFLO0FBQ0gsZUFBTyx5QkFBUyxVQUFVLFFBQVE7QUFBQSxNQUNwQyxLQUFLO0FBQ0gsZUFBTztBQUFBLE1BQ1Q7QUFDRSxlQUFPO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K