obsidian-dev-utils 26.1.3-beta.42 → 26.1.3-beta.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 26.1.3-beta.44
4
+
5
+ - Fix variable assign
6
+
7
+ ## 26.1.3-beta.43
8
+
9
+ - Attach tooltips to each element
10
+
3
11
  ## 26.1.3-beta.42
4
12
 
5
13
  - Don't use displayTooltip as it doesn't work well with multiple validations
@@ -29,7 +29,8 @@ __export(HTMLElement_exports, {
29
29
  ensureLoaded: () => ensureLoaded,
30
30
  isElementVisibleInOffsetParent: () => isElementVisibleInOffsetParent,
31
31
  isLoaded: () => isLoaded,
32
- onAncestorScrollOrResize: () => onAncestorScrollOrResize
32
+ onAncestorScrollOrResize: () => onAncestorScrollOrResize,
33
+ toPx: () => toPx
33
34
  });
34
35
  module.exports = __toCommonJS(HTMLElement_exports);
35
36
  function appendCodeBlock(el, code) {
@@ -124,6 +125,9 @@ function onAncestorScrollOrResize(node, callback) {
124
125
  });
125
126
  }
126
127
  }
128
+ function toPx(value) {
129
+ return `${value.toString()}px`;
130
+ }
127
131
  function getLoadableElements(el) {
128
132
  return Array.from(el.querySelectorAll("body, img, iframe, embed, link, object, script, style, track"));
129
133
  }
@@ -133,6 +137,7 @@ function getLoadableElements(el) {
133
137
  ensureLoaded,
134
138
  isElementVisibleInOffsetParent,
135
139
  isLoaded,
136
- onAncestorScrollOrResize
140
+ onAncestorScrollOrResize,
141
+ toPx
137
142
  });
138
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0hUTUxFbGVtZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxuICovXG5cbi8qKlxuICogQSBIVE1MIGVsZW1lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBjaGVja1ZhbGlkaXR5KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb2RlIGJsb2NrIHRvIHRoZSBnaXZlbiBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsOiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6ICdtYXJrZG93bi1yZW5kZXJlZCBjb2RlJyB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGVuc3VyZSBpcyBsb2FkZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTG9hZGVkKGVsOiBFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpc0xvYWRlZChlbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIGVsIGluc3RhbmNlb2YgSFRNTEJvZHlFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTEVtYmVkRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MT2JqZWN0RWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFN0eWxlRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFRyYWNrRWxlbWVudFxuICApIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZXNvbHZlKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChnZXRMb2FkYWJsZUVsZW1lbnRzKGVsKS5tYXAoZW5zdXJlTG9hZGVkKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudChlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgcGFyZW50RWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gIGlmICghcGFyZW50RWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50RWxSZWN0ID0gcGFyZW50RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgcmV0dXJuIChcbiAgICBwYXJlbnRFbFJlY3QudG9wIDw9IGVsUmVjdC50b3BcbiAgICAmJiBlbFJlY3QuYm90dG9tIDw9IHBhcmVudEVsUmVjdC5ib3R0b21cbiAgICAmJiBwYXJlbnRFbFJlY3QubGVmdCA8PSBlbFJlY3QubGVmdFxuICAgICYmIGVsUmVjdC5yaWdodCA8PSBwYXJlbnRFbFJlY3QucmlnaHRcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBsb2FkZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGVkKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxCb2R5RWxlbWVudCkge1xuICAgIHJldHVybiBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZSc7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLmNvbXBsZXRlICYmIGVsLm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCkge1xuICAgIHJldHVybiAhIWVsLmNvbnRlbnREb2N1bWVudDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxFbWJlZEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWwuc2hlZXQgIT09IG51bGwgOiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTE9iamVjdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5jb250ZW50RG9jdW1lbnQgfHwgISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTFNjcmlwdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5zaGVldDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxUcmFja0VsZW1lbnQpIHtcbiAgICBjb25zdCBSRUFEWV9TVEFURV9MT0FERUQgPSAyO1xuICAgIHJldHVybiBlbC5yZWFkeVN0YXRlID09PSBSRUFEWV9TVEFURV9MT0FERUQ7XG4gIH1cblxuICByZXR1cm4gZ2V0TG9hZGFibGVFbGVtZW50cyhlbCkuZXZlcnkoaXNMb2FkZWQpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIG5vZGUgdG8gYWRkIHRoZSBldmVudCBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZShub2RlOiBOb2RlLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICBjb25zdCBhbmNlc3RvcnM6IEV2ZW50VGFyZ2V0W10gPSBbXTtcbiAgYW5jZXN0b3JzLnB1c2goZG9jdW1lbnQpO1xuICBhbmNlc3RvcnMucHVzaCh3aW5kb3cpO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrU21vb3RoKCk6IHZvaWQge1xuICAgIGlmIChpc0V2ZW50VHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNFdmVudFRyaWdnZXJlZCA9IHRydWU7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRMb2FkYWJsZUVsZW1lbnRzKGVsOiBFbGVtZW50KTogRWxlbWVudFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwucXVlcnlTZWxlY3RvckFsbCgnYm9keSwgaW1nLCBpZnJhbWUsIGVtYmVkLCBsaW5rLCBvYmplY3QsIHNjcmlwdCwgc3R5bGUsIHRyYWNrJykpO1xufVxu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
143
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0hUTUxFbGVtZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxuICovXG5cbi8qKlxuICogQSBIVE1MIGVsZW1lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBjaGVja1ZhbGlkaXR5KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb2RlIGJsb2NrIHRvIHRoZSBnaXZlbiBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsOiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6ICdtYXJrZG93bi1yZW5kZXJlZCBjb2RlJyB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGVuc3VyZSBpcyBsb2FkZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTG9hZGVkKGVsOiBFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpc0xvYWRlZChlbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIGVsIGluc3RhbmNlb2YgSFRNTEJvZHlFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTEVtYmVkRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MT2JqZWN0RWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFN0eWxlRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFRyYWNrRWxlbWVudFxuICApIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZXNvbHZlKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChnZXRMb2FkYWJsZUVsZW1lbnRzKGVsKS5tYXAoZW5zdXJlTG9hZGVkKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudChlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgcGFyZW50RWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gIGlmICghcGFyZW50RWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50RWxSZWN0ID0gcGFyZW50RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgcmV0dXJuIChcbiAgICBwYXJlbnRFbFJlY3QudG9wIDw9IGVsUmVjdC50b3BcbiAgICAmJiBlbFJlY3QuYm90dG9tIDw9IHBhcmVudEVsUmVjdC5ib3R0b21cbiAgICAmJiBwYXJlbnRFbFJlY3QubGVmdCA8PSBlbFJlY3QubGVmdFxuICAgICYmIGVsUmVjdC5yaWdodCA8PSBwYXJlbnRFbFJlY3QucmlnaHRcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBsb2FkZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGVkKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxCb2R5RWxlbWVudCkge1xuICAgIHJldHVybiBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZSc7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLmNvbXBsZXRlICYmIGVsLm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCkge1xuICAgIHJldHVybiAhIWVsLmNvbnRlbnREb2N1bWVudDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxFbWJlZEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWwuc2hlZXQgIT09IG51bGwgOiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTE9iamVjdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5jb250ZW50RG9jdW1lbnQgfHwgISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTFNjcmlwdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5zaGVldDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxUcmFja0VsZW1lbnQpIHtcbiAgICBjb25zdCBSRUFEWV9TVEFURV9MT0FERUQgPSAyO1xuICAgIHJldHVybiBlbC5yZWFkeVN0YXRlID09PSBSRUFEWV9TVEFURV9MT0FERUQ7XG4gIH1cblxuICByZXR1cm4gZ2V0TG9hZGFibGVFbGVtZW50cyhlbCkuZXZlcnkoaXNMb2FkZWQpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIG5vZGUgdG8gYWRkIHRoZSBldmVudCBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZShub2RlOiBOb2RlLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICBjb25zdCBhbmNlc3RvcnM6IEV2ZW50VGFyZ2V0W10gPSBbXTtcbiAgYW5jZXN0b3JzLnB1c2goZG9jdW1lbnQpO1xuICBhbmNlc3RvcnMucHVzaCh3aW5kb3cpO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrU21vb3RoKCk6IHZvaWQge1xuICAgIGlmIChpc0V2ZW50VHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNFdmVudFRyaWdnZXJlZCA9IHRydWU7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgbnVtYmVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIGFzIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHt2YWx1ZS50b1N0cmluZygpfXB4YDtcbn1cblxuZnVuY3Rpb24gZ2V0TG9hZGFibGVFbGVtZW50cyhlbDogRWxlbWVudCk6IEVsZW1lbnRbXSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHksIGltZywgaWZyYW1lLCBlbWJlZCwgbGluaywgb2JqZWN0LCBzY3JpcHQsIHN0eWxlLCB0cmFjaycpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlDTyxTQUFTLGdCQUFnQixJQUFvQyxNQUFvQjtBQUN0RixLQUFHLFNBQVMsVUFBVSxFQUFFLEtBQUsseUJBQXlCLEdBQUcsQ0FBQyxXQUFXO0FBQ25FLFdBQU8sU0FBUyxRQUFRLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFBQSxFQUN4QyxDQUFDO0FBQ0g7QUFRQSxlQUFzQixhQUFhLElBQTRCO0FBQzdELE1BQUksU0FBUyxFQUFFLEdBQUc7QUFDaEI7QUFBQSxFQUNGO0FBQ0EsTUFDRSxjQUFjLG1CQUNYLGNBQWMsb0JBQ2QsY0FBYyxxQkFDZCxjQUFjLG9CQUNkLGNBQWMsbUJBQ2QsY0FBYyxxQkFDZCxjQUFjLG9CQUNkLGNBQWMsa0JBQ2pCO0FBQ0EsVUFBTSxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBQzdCLFNBQUcsaUJBQWlCLFFBQVEsT0FBTztBQUNuQyxTQUFHLGlCQUFpQixTQUFTLE9BQU87QUFBQSxJQUN0QyxDQUFDO0FBQ0Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxRQUFRLElBQUksb0JBQW9CLEVBQUUsRUFBRSxJQUFJLFlBQVksQ0FBQztBQUM3RDtBQVFPLFNBQVMsK0JBQStCLElBQTBCO0FBQ3ZFLFFBQU0sV0FBVyxHQUFHO0FBQ3BCLE1BQUksQ0FBQyxVQUFVO0FBQ2Is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
@@ -64,3 +64,10 @@ export declare function isLoaded(el: Element): boolean;
64
64
  * @returns A function to remove the event listener.
65
65
  */
66
66
  export declare function onAncestorScrollOrResize(node: Node, callback: () => void): () => void;
67
+ /**
68
+ * Converts a number to a string with 'px' appended.
69
+ *
70
+ * @param value - The number to convert.
71
+ * @returns The number as a string with 'px' appended.
72
+ */
73
+ export declare function toPx(value: number): string;
@@ -30,7 +30,7 @@ __export(Library_exports, {
30
30
  LIBRARY_VERSION: () => LIBRARY_VERSION
31
31
  });
32
32
  module.exports = __toCommonJS(Library_exports);
33
- const LIBRARY_VERSION = "26.1.3-beta.42";
33
+ const LIBRARY_VERSION = "26.1.3-beta.44";
34
34
  const LIBRARY_NAME = "obsidian-dev-utils";
35
35
  const LIBRARY_STYLES = ".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=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=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=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=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=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.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}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AACE;EACE;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;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;;;AC5DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AChDF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%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='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.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%7D%5Cn%7D%5Cn%22%5D%7D */\n";
36
36
  // Annotate the CommonJS export names for ESM import in node:
@@ -102,10 +102,10 @@ class OverlayValidatorComponent {
102
102
  const rect = this.el.getBoundingClientRect();
103
103
  const parentRect = this.el.offsetParent.getBoundingClientRect();
104
104
  this._validatorEl.setCssStyles({
105
- height: toPx(rect.height),
106
- left: toPx(rect.left - parentRect.left + this.el.offsetParent.scrollLeft),
107
- top: toPx(rect.top - parentRect.top + this.el.offsetParent.scrollTop),
108
- width: toPx(rect.width)
105
+ height: (0, import_HTMLElement.toPx)(rect.height),
106
+ left: (0, import_HTMLElement.toPx)(rect.left - parentRect.left + this.el.offsetParent.scrollLeft),
107
+ top: (0, import_HTMLElement.toPx)(rect.top - parentRect.top + this.el.offsetParent.scrollTop),
108
+ width: (0, import_HTMLElement.toPx)(rect.width)
109
109
  });
110
110
  }
111
111
  }
@@ -147,11 +147,8 @@ function getValidatorComponent(obj) {
147
147
  function isValidatorComponent(obj) {
148
148
  return !!obj.validatorEl;
149
149
  }
150
- function toPx(value) {
151
- return `${value.toString()}px`;
152
- }
153
150
  // Annotate the CommonJS export names for ESM import in node:
154
151
  0 && (module.exports = {
155
152
  getValidatorComponent
156
153
  });
157
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29sb3JDb21wb25lbnQsXG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgU2VhcmNoQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50LFxuICBUb2dnbGVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgb25BbmNlc3RvclNjcm9sbE9yUmVzaXplIH0gZnJvbSAnLi4vLi4vLi4vSFRNTEVsZW1lbnQudHMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB2YWxpZGF0b3IgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQ7XG59XG5cbmNsYXNzIE92ZXJsYXlWYWxpZGF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBWYWxpZGF0b3JDb21wb25lbnQge1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRvckVsKCk6IFZhbGlkYXRvckVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JFbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbGVtZW50IG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIERPTScpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsID0gZWwucGFyZW50RWxlbWVudC5jcmVhdGVFbCgnaW5wdXQnLCB7XG4gICAgICBhdHRyOiB7XG4gICAgICAgIHRhYmluZGV4OiAtMVxuICAgICAgfSxcbiAgICAgIGNsczogW0Nzc0NsYXNzLkxpYnJhcnlOYW1lLCBDc3NDbGFzcy5PdmVybGF5VmFsaWRhdG9yXVxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVsLmZvY3VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbC5pc0FjdGl2ZUVsZW1lbnQgPSB0aGlzLmlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZS5iaW5kKHRoaXMpO1xuXG4gICAgbGV0IHRhYkluZGV4RWwgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdbdGFiaW5kZXhdJyk7XG4gICAgaWYgKCF0YWJJbmRleEVsKSB7XG4gICAgICBpZiAodGhpcy5lbC5nZXRBdHRyKCd0YWJpbmRleCcpID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZWwudGFiSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHRhYkluZGV4RWwgPSB0aGlzLmVsO1xuICAgIH1cblxuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZm9yY2VCbHVyVmFsaWRhdG9yRWwoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGFiSW5kZXhFbC5mb2N1cygpO1xuICAgIH0pO1xuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCAoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcmNlQmx1clZhbGlkYXRvckVsKCk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHVucmVnaXN0ZXJTY3JvbGxPclJlc2l6ZUhhbmRsZXJzID0gb25BbmNlc3RvclNjcm9sbE9yUmVzaXplKHRoaXMuZWwsIHRoaXMudXBkYXRlUG9zaXRpb24uYmluZCh0aGlzKSk7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVtb3ZlZE5vZGUgb2YgQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpKSB7XG4gICAgICAgICAgaWYgKHJlbW92ZWROb2RlID09PSB0aGlzLl92YWxpZGF0b3JFbCkge1xuICAgICAgICAgICAgdW5yZWdpc3RlclNjcm9sbE9yUmVzaXplSGFuZGxlcnMoKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JjZUJsdXJWYWxpZGF0b3JFbCgpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JFbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVsLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWwub2Zmc2V0UGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBhcmVudFJlY3QgPSB0aGlzLmVsLm9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsLnNldENzc1N0eWxlcyh7XG4gICAgICBoZWlnaHQ6IHRvUHgocmVjdC5oZWlnaHQpLFxuICAgICAgbGVmdDogdG9QeChyZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQgKyB0aGlzLmVsLm9mZnNldFBhcmVudC5zY3JvbGxMZWZ0KSxcbiAgICAgIHRvcDogdG9QeChyZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wICsgdGhpcy5lbC5vZmZzZXRQYXJlbnQuc2Nyb2xsVG9wKSxcbiAgICAgIHdpZHRoOiB0b1B4KHJlY3Qud2lkdGgpXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIgaW1wbGVtZW50cyBWYWxpZGF0b3JDb21wb25lbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50KSB7fVxufVxuXG4vKipcbiAqIEdldHMgYSB2YWxpZGF0b3IgY29tcG9uZW50IHJlbGF0ZWQgdG8gdGhlIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gQW55IG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGVkIHZhbGlkYXRvciBjb21wb25lbnQgb3IgYG51bGxgIGlmIG5vIHJlbGF0ZWQgdmFsaWRhdG9yIGNvbXBvbmVudCBpcyBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckNvbXBvbmVudChvYmo6IHVua25vd24pOiBudWxsIHwgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgaWYgKGlzVmFsaWRhdG9yQ29tcG9uZW50KG9iaikpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIENvbG9yQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouY29sb3JQaWNrZXJFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5zZWxlY3RFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgUHJvZ3Jlc3NCYXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlWYWxpZGF0b3JDb21wb25lbnQob2JqLnByb2dyZXNzQmFyKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBTZWFyY2hDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5pbnB1dEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5zbGlkZXJFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVGV4dEFyZWFDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5pbnB1dEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBUZXh0Q29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVG9nZ2xlQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5VmFsaWRhdG9yQ29tcG9uZW50KG9iai50b2dnbGVFbCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZGF0b3JDb21wb25lbnQob2JqOiB1bmtub3duKTogb2JqIGlzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHJldHVybiAhIShvYmogYXMgUGFydGlhbDxWYWxpZGF0b3JDb21wb25lbnQ+KS52YWxpZGF0b3JFbDtcbn1cblxuZnVuY3Rpb24gdG9QeCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3ZhbHVlLnRvU3RyaW5nKCl9cHhgO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFTTztBQUlQLHNCQUF5QjtBQUN6Qix5QkFBeUM7QUFZekMsTUFBTSwwQkFBd0Q7QUFBQSxFQU9yRCxZQUE2QixJQUFpQjtBQUFqQjtBQUNsQyxRQUFJLENBQUMsR0FBRyxlQUFlO0FBQ3JCLFlBQU0sSUFBSSxNQUFNLHFDQUFxQztBQUFBLElBQ3ZEO0FBRUEsU0FBSyxlQUFlLEdBQUcsY0FBYyxTQUFTLFNBQVM7QUFBQSxNQUNyRCxNQUFNO0FBQUEsUUFDSixVQUFVO0FBQUEsTUFDWjtBQUFBLE1BQ0EsS0FBSyxDQUFDLHlCQUFTLGFBQWEseUJBQVMsZ0JBQWdCO0FBQUEsSUFDdkQsQ0FB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
154
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29sb3JDb21wb25lbnQsXG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgU2VhcmNoQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50LFxuICBUb2dnbGVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgb25BbmNlc3RvclNjcm9sbE9yUmVzaXplLFxuICB0b1B4XG59IGZyb20gJy4uLy4uLy4uL0hUTUxFbGVtZW50LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGhhcyBhIHZhbGlkYXRvciBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdG9yIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50O1xufVxuXG5jbGFzcyBPdmVybGF5VmFsaWRhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgcHVibGljIGdldCB2YWxpZGF0b3JFbCgpOiBWYWxpZGF0b3JFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yRWw7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JFbDogVmFsaWRhdG9yRWxlbWVudDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbDogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAoIWVsLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWxlbWVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00nKTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbCA9IGVsLnBhcmVudEVsZW1lbnQuY3JlYXRlRWwoJ2lucHV0Jywge1xuICAgICAgYXR0cjoge1xuICAgICAgICB0YWJpbmRleDogLTFcbiAgICAgIH0sXG4gICAgICBjbHM6IFtDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgQ3NzQ2xhc3MuT3ZlcmxheVZhbGlkYXRvcl1cbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdGhpcy5lbC5mb2N1cygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuaXNBY3RpdmVFbGVtZW50ID0gdGhpcy5pc0VsZW1lbnRPckRlc2NlbmRhbnRBY3RpdmUuYmluZCh0aGlzKTtcblxuICAgIGxldCB0YWJJbmRleEVsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW3RhYmluZGV4XScpO1xuICAgIGlmICghdGFiSW5kZXhFbCkge1xuICAgICAgaWYgKHRoaXMuZWwuZ2V0QXR0cigndGFiaW5kZXgnKSA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmVsLnRhYkluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICB0YWJJbmRleEVsID0gdGhpcy5lbDtcbiAgICB9XG5cbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCAoKSA9PiB7XG4gICAgICB0aGlzLmZvcmNlQmx1clZhbGlkYXRvckVsKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRhYkluZGV4RWwuZm9jdXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZSgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JjZUJsdXJWYWxpZGF0b3JFbCgpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1bnJlZ2lzdGVyU2Nyb2xsT3JSZXNpemVIYW5kbGVycyA9IG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSh0aGlzLmVsLCB0aGlzLnVwZGF0ZVBvc2l0aW9uLmJpbmQodGhpcykpO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHJlbW92ZWROb2RlIG9mIEFycmF5LmZyb20obXV0YXRpb24ucmVtb3ZlZE5vZGVzKSkge1xuICAgICAgICAgIGlmIChyZW1vdmVkTm9kZSA9PT0gdGhpcy5fdmFsaWRhdG9yRWwpIHtcbiAgICAgICAgICAgIHVucmVnaXN0ZXJTY3JvbGxPclJlc2l6ZUhhbmRsZXJzKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VCbHVyVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVsLm9mZnNldFBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5lbC5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbC5zZXRDc3NTdHlsZXMoe1xuICAgICAgaGVpZ2h0OiB0b1B4KHJlY3QuaGVpZ2h0KSxcbiAgICAgIGxlZnQ6IHRvUHgocmVjdC5sZWZ0IC0gcGFyZW50UmVjdC5sZWZ0ICsgdGhpcy5lbC5vZmZzZXRQYXJlbnQuc2Nyb2xsTGVmdCksXG4gICAgICB0b3A6IHRvUHgocmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcCArIHRoaXMuZWwub2Zmc2V0UGFyZW50LnNjcm9sbFRvcCksXG4gICAgICB3aWR0aDogdG9QeChyZWN0LndpZHRoKVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyIGltcGxlbWVudHMgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWxpZGF0b3JFbDogVmFsaWRhdG9yRWxlbWVudCkge31cbn1cblxuLyoqXG4gKiBHZXRzIGEgdmFsaWRhdG9yIGNvbXBvbmVudCByZWxhdGVkIHRvIHRoZSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIEFueSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRlZCB2YWxpZGF0b3IgY29tcG9uZW50IG9yIGBudWxsYCBpZiBubyByZWxhdGVkIHZhbGlkYXRvciBjb21wb25lbnQgaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JDb21wb25lbnQob2JqOiB1bmtub3duKTogbnVsbCB8IFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIGlmIChpc1ZhbGlkYXRvckNvbXBvbmVudChvYmopKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBDb2xvckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmNvbG9yUGlja2VyRWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIERyb3Bkb3duQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouc2VsZWN0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFByb2dyZXNzQmFyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5VmFsaWRhdG9yQ29tcG9uZW50KG9iai5wcm9ncmVzc0Jhcik7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgU2VhcmNoQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgU2xpZGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouc2xpZGVyRWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRleHRBcmVhQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRvZ2dsZUNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheVZhbGlkYXRvckNvbXBvbmVudChvYmoudG9nZ2xlRWwpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRhdG9yQ29tcG9uZW50KG9iajogdW5rbm93bik6IG9iaiBpcyBWYWxpZGF0b3JDb21wb25lbnQge1xuICByZXR1cm4gISEob2JqIGFzIFBhcnRpYWw8VmFsaWRhdG9yQ29tcG9uZW50PikudmFsaWRhdG9yRWw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHNCQVNPO0FBSVAsc0JBQXlCO0FBQ3pCLHlCQUdPO0FBWVAsTUFBTSwwQkFBd0Q7QUFBQSxFQU9yRCxZQUE2QixJQUFpQjtBQUFqQjtBQUNsQyxRQUFJLENBQUMsR0FBRyxlQUFlO0FBQ3JCLFlBQU0sSUFBSSxNQUFNLHFDQUFxQztBQUFBLElBQ3ZEO0FBRUEsU0FBSyxlQUFlLEdBQUcsY0FBYyxTQUFTLFNBQVM7QUFBQSxNQUNyRCxNQUFNO0FBQUEsUUFDSixVQUFVO0FBQUEsTUFDWjtBQUFBLE1BQ0EsS0FBSyxDQUFDLHlCQUFTLGFBQWEseUJBQVMsZ0JBQWdCO0FBQUEsSUFDdkQsQ0FBQztBQUVELFNBQUssYUFBYSxpQkFBaUIsU0FBUyxNQUFNO0FBQ2hELFdBQUssR0FBRyxNQUFNO0FBQUEsSUFDaEIsQ0FBQztBQUVELFNBQUssYUFBYSxrQkFBa0IsS0FBSyw0QkFBNEIsS0FBSyxJQUFJO0FBRTlFLFFBQUksYUFBYSxLQUFLLEdBQUcsY0FBMkIsWUFBWTtBQUNoRSxRQUFJLENBQUMsWUFBWTtBQUNmLFVBQUksS0FBSyxHQUFHLFFBQVEsVUFBVSxNQUFNLE1BQU07QUFDeEMsYUFBSyxHQUFHLFdBQVc7QUFBQSxNQUNyQjtBQUNBLG1CQUFhLEtBQUs7QUFBQSxJQUNwQjtBQUVBLFNBQUssR0FBRyxpQkFBaUIsV0FBVyxNQUFNO0FBQ3hDLFdBQUsscUJBQXFCO0FBQUEsSUFDNUIsQ0FBQztBQUNELFNBQUssR0FBRyxpQkFBaUIsU0FBUyxNQUFNO0FBQ3RDLGlCQUFXLE1BQU07QUFBQSxJQUNuQixDQUFDO0FBQ0QsU0FBSyxHQUFHLGlCQUFpQixZQUFZLE1BQU07QUFDekMsaUJBQVcsTUFBTTtBQUNmLFlBQUksS0FBSyw0QkFBNEIsR0FBRztBQUN0QztBQUFBLFFBQ0Y7QUFFQSxhQUFLLHFCQUFxQjtBQUFBLE1BQzVCLEdBQUcsQ0FBQztBQUFBLElBQ04sQ0FBQztBQUVELFVBQU0sdUNBQW1DLDZDQUF5QixLQUFLLElBQUksS0FBSyxlQUFlLEtBQUssSUFBSSxDQUFDO0FBRXpHLFVBQU0sV0FBVyxJQUFJLGlCQUFpQixDQUFDLGNBQWM7QUFDbkQsaUJBQVcsWUFBWSxXQUFXO0FBQ2hDLG1CQUFXLGVBQWUsTUFBTSxLQUFLLFNBQVMsWUFBWSxHQUFHO0FBQzNELGNBQUksZ0JBQWdCLEtBQUssY0FBYztBQUNyQyw2Q0FBaUM7QUFDakMscUJBQVMsV0FBVztBQUNwQjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUVELGFBQVMsUUFBUSxTQUFTLE1BQU07QUFBQSxNQUM5QixXQUFXO0FBQUEsTUFDWCxTQUFTO0FBQUEsSUFDWCxDQUFDO0FBQUEsRUFDSDtBQUFBLEVBbEVBLElBQVcsY0FBZ0M7QUFDekMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRWlCO0FBQUEsRUFnRVQsdUJBQTZCO0FBQ25DLFNBQUssYUFBYSxjQUFjLElBQUksTUFBTSxNQUFNLENBQUM7QUFBQSxFQUNuRDtBQUFBLEVBRVEsOEJBQXVDO0FBQzdDLFdBQU8sS0FBSyxHQUFHLFNBQVMsU0FBUyxhQUFhO0FBQUEsRUFDaEQ7QUFBQSxFQUVRLGlCQUF1QjtBQUM3QixRQUFJLENBQUMsS0FBSyxHQUFHLGNBQWM7QUFDekI7QUFBQSxJQUNGO0FBQ0EsVUFBTSxPQUFPLEtBQUssR0FBRyxzQkFBc0I7QUFDM0MsVUFBTSxhQUFhLEtBQUssR0FBRyxhQUFhLHNCQUFzQjtBQUU5RCxTQUFLLGFBQWEsYUFBYTtBQUFBLE1BQzdCLFlBQVEseUJBQUssS0FBSyxNQUFNO0FBQUEsTUFDeEIsVUFBTSx5QkFBSyxLQUFLLE9BQU8sV0FBVyxPQUFPLEtBQUssR0FBRyxhQUFhLFVBQVU7QUFBQSxNQUN4RSxTQUFLLHlCQUFLLEtBQUssTUFBTSxXQUFXLE1BQU0sS0FBSyxHQUFHLGFBQWEsU0FBUztBQUFBLE1BQ3BFLFdBQU8seUJBQUssS0FBSyxLQUFLO0FBQUEsSUFDeEIsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLE1BQU0sd0JBQXNEO0FBQUEsRUFDbkQsWUFBNEIsYUFBK0I7QUFBL0I7QUFBQSxFQUFnQztBQUNyRTtBQVFPLFNBQVMsc0JBQXNCLEtBQXlDO0FBQzdFLE1BQUkscUJBQXFCLEdBQUcsR0FBRztBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksZUFBZSxnQ0FBZ0I7QUFDakMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLGFBQWE7QUFBQSxFQUN0RDtBQUVBLE1BQUksZUFBZSxtQ0FBbUI7QUFDcEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLFFBQVE7QUFBQSxFQUNqRDtBQUVBLE1BQUksZUFBZSxzQ0FBc0I7QUFDdkMsV0FBTyxJQUFJLDBCQUEwQixJQUFJLFdBQVc7QUFBQSxFQUN0RDtBQUVBLE1BQUksZUFBZSxpQ0FBaUI7QUFDbEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLE9BQU87QUFBQSxFQUNoRDtBQUVBLE1BQUksZUFBZSxpQ0FBaUI7QUFDbEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLFFBQVE7QUFBQSxFQUNqRDtBQUVBLE1BQUksZUFBZSxtQ0FBbUI7QUFDcEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLE9BQU87QUFBQSxFQUNoRDtBQUVBLE1BQUksZUFBZSwrQkFBZTtBQUNoQyxXQUFPLElBQUksd0JBQXdCLElBQUksT0FBTztBQUFBLEVBQ2hEO0FBRUEsTUFBSSxlQUFlLGlDQUFpQjtBQUNsQyxXQUFPLElBQUksMEJBQTBCLElBQUksUUFBUTtBQUFBLEVBQ25EO0FBRUEsU0FBTztBQUNUO0FBRUEsU0FBUyxxQkFBcUIsS0FBeUM7QUFDckUsU0FBTyxDQUFDLENBQUUsSUFBb0M7QUFDaEQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -29,11 +29,13 @@ __export(PluginSettingsTabBase_exports, {
29
29
  SAVE_TO_FILE_CONTEXT: () => SAVE_TO_FILE_CONTEXT
30
30
  });
31
31
  module.exports = __toCommonJS(PluginSettingsTabBase_exports);
32
+ var import_dom = require('@floating-ui/dom');
32
33
  var import_obsidian = require('obsidian');
33
34
  var import_Async = require('../../Async.cjs');
34
35
  var import_AsyncEvents = require('../../AsyncEvents.cjs');
35
36
  var import_CssClass = require('../../CssClass.cjs');
36
37
  var import_Function = require('../../Function.cjs');
38
+ var import_HTMLElement = require('../../HTMLElement.cjs');
37
39
  var import_Object = require('../../Object.cjs');
38
40
  var import_AsyncEventsComponent = require('../Components/AsyncEventsComponent.cjs');
39
41
  var import_TextBasedComponent = require('../Components/SettingComponents/TextBasedComponent.cjs');
@@ -103,18 +105,20 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
103
105
  shouldShowValidationMessage: true
104
106
  };
105
107
  const optionsExt = { ...DEFAULT_OPTIONS, ...options };
106
- const validatorElement = (0, import_ValidatorComponent.getValidatorComponent)(valueComponent)?.validatorEl;
108
+ const validatorEl = (0, import_ValidatorComponent.getValidatorComponent)(valueComponent)?.validatorEl;
107
109
  const textBasedComponent = (0, import_TextBasedComponent.getTextBasedComponentValue)(valueComponent);
108
110
  const readonlyValue = this.pluginSettings[propertyName];
109
111
  const defaultValue = this.plugin.settingsManager.defaultSettings[propertyName];
110
112
  textBasedComponent?.setPlaceholderValue(optionsExt.pluginSettingsToComponentValueConverter(defaultValue));
111
113
  let validationMessage;
114
+ let tooltipEl = null;
115
+ let tooltipContentEl = null;
112
116
  this.asyncEventsComponent.registerAsyncEvent(this.on("validationMessageChanged", (anotherPropertyName, anotherValidationMessage) => {
113
117
  if (propertyName !== anotherPropertyName) {
114
118
  return;
115
119
  }
116
120
  validationMessage = anotherValidationMessage;
117
- updateValidatorElement();
121
+ updateValidatorEl();
118
122
  }));
119
123
  let shouldEmptyOnBlur = false;
120
124
  if (textBasedComponent && optionsExt.shouldShowPlaceholderForDefaultValues && (0, import_Object.deepEqual)(readonlyValue, defaultValue)) {
@@ -123,12 +127,12 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
123
127
  valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(readonlyValue));
124
128
  }
125
129
  let shouldSkipOnChange = false;
126
- const UPDATE_VALIDATOR_ELEMENT_TIMEOUT_IN_MILLISECONDS = 100;
127
- const updateValidatorElementDebounced = (0, import_obsidian.debounce)(() => {
130
+ const UPDATE_VALIDATOR_EL_TIMEOUT_IN_MILLISECONDS = 100;
131
+ const updateValidatorElDebounced = (0, import_obsidian.debounce)(() => {
128
132
  requestAnimationFrame(() => {
129
- updateValidatorElement();
133
+ updateValidatorEl();
130
134
  });
131
- }, UPDATE_VALIDATOR_ELEMENT_TIMEOUT_IN_MILLISECONDS);
135
+ }, UPDATE_VALIDATOR_EL_TIMEOUT_IN_MILLISECONDS);
132
136
  valueComponent.onChange(async (uiValue) => {
133
137
  if (shouldSkipOnChange) {
134
138
  shouldSkipOnChange = false;
@@ -152,47 +156,70 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
152
156
  }
153
157
  }
154
158
  }
155
- updateValidatorElementDebounced();
159
+ updateValidatorElDebounced();
156
160
  if (newValue !== void 0) {
157
161
  await optionsExt.onChanged(newValue, oldValue);
158
162
  }
159
163
  this.saveSettingsDebounced();
160
164
  });
161
- validatorElement?.addEventListener("focus", () => {
162
- updateValidatorElementDebounced();
165
+ validatorEl?.addEventListener("focus", () => {
166
+ updateValidatorElDebounced();
163
167
  });
164
- validatorElement?.addEventListener("blur", () => {
165
- updateValidatorElementDebounced();
168
+ validatorEl?.addEventListener("blur", () => {
169
+ updateValidatorElDebounced();
166
170
  });
167
- validatorElement?.addEventListener("click", () => {
171
+ validatorEl?.addEventListener("click", () => {
168
172
  requestAnimationFrame(() => {
169
- updateValidatorElementDebounced();
173
+ updateValidatorElDebounced();
170
174
  });
171
175
  });
172
176
  validationMessage = this.plugin.settingsManager.settingsWrapper.validationMessages[propertyName] ?? "";
173
- updateValidatorElement();
177
+ updateValidatorEl();
178
+ if (validatorEl?.parentElement) {
179
+ tooltipEl = validatorEl.parentElement.createDiv({ cls: "tooltip" });
180
+ tooltipContentEl = tooltipEl.createSpan();
181
+ tooltipEl.createDiv({ cls: "tooltip-arrow" });
182
+ tooltipEl.hide();
183
+ (0, import_dom.autoUpdate)(
184
+ validatorEl,
185
+ tooltipEl,
186
+ (0, import_Async.convertAsyncToSync)(async () => {
187
+ if (!tooltipEl) {
188
+ return;
189
+ }
190
+ const { x, y } = await (0, import_dom.computePosition)(validatorEl, tooltipEl);
191
+ tooltipEl.setCssProps({
192
+ left: (0, import_HTMLElement.toPx)(x),
193
+ top: (0, import_HTMLElement.toPx)(y)
194
+ });
195
+ })
196
+ );
197
+ }
174
198
  return valueComponent;
175
- function updateValidatorElement() {
176
- if (shouldEmptyOnBlur && !validatorElement?.isActiveElement()) {
199
+ function updateValidatorEl() {
200
+ if (shouldEmptyOnBlur && !validatorEl?.isActiveElement()) {
177
201
  shouldEmptyOnBlur = false;
178
202
  if (!textBasedComponent?.isEmpty()) {
179
203
  shouldSkipOnChange = true;
180
204
  textBasedComponent?.empty();
181
205
  }
182
206
  }
183
- if (!validatorElement) {
207
+ if (!validatorEl) {
184
208
  return;
185
209
  }
186
210
  if (validationMessage === "") {
187
- validatorElement.setCustomValidity("");
188
- validatorElement.checkValidity();
189
- validationMessage = validatorElement.validationMessage;
211
+ validatorEl.setCustomValidity("");
212
+ validatorEl.checkValidity();
213
+ validationMessage = validatorEl.validationMessage;
190
214
  }
191
- validatorElement.setCustomValidity(validationMessage);
192
- if (optionsExt.shouldShowValidationMessage && validatorElement.isActiveElement()) {
193
- validatorElement.reportValidity();
215
+ validatorEl.setCustomValidity(validationMessage);
216
+ if (optionsExt.shouldShowValidationMessage) {
217
+ tooltipEl?.toggle(!!validationMessage);
218
+ if (tooltipContentEl) {
219
+ tooltipContentEl.textContent = validationMessage;
220
+ }
194
221
  } else if (validationMessage) {
195
- (0, import_obsidian.setTooltip)(validatorElement, validationMessage);
222
+ (0, import_obsidian.setTooltip)(validatorEl, validationMessage);
196
223
  }
197
224
  }
198
225
  }
@@ -256,4 +283,4 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
256
283
  PluginSettingsTabBase,
257
284
  SAVE_TO_FILE_CONTEXT
258
285
  });
259
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVib3VuY2VyIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL1ZhbGlkYXRpb25NZXNzYWdlLnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW4sXG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyLFxuICBQbHVnaW5UeXBlc0Jhc2Vcbn0gZnJvbSAnLi9QbHVnaW5UeXBlc0Jhc2UudHMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQge1xuICBub29wLFxuICBub29wQXN5bmNcbn0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi4vLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vQ29tcG9uZW50cy9Bc3luY0V2ZW50c0NvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVGV4dEJhc2VkQ29tcG9uZW50LnRzJztcbmltcG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzJztcbmltcG9ydCB7IGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIgfSBmcm9tICcuLi9WYWxpZGF0aW9uTWVzc2FnZS50cyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JZCB9IGZyb20gJy4vUGx1Z2luSWQudHMnO1xuXG4vKipcbiAqIFRoZSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2Uuc2F2ZVRvRmlsZX0gbWV0aG9kLlxuICovXG5leHBvcnQgY29uc3QgU0FWRV9UT19GSUxFX0NPTlRFWFQgPSAnUGx1Z2luU2V0dGluZ3NUYWInO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlZD8obmV3VmFsdWU6IFJlYWRvbmx5RGVlcDxUPiwgb2xkVmFsdWU6IFJlYWRvbmx5RGVlcDxUPik6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXQgdGhlIHNldHRpbmcgd2hlbiB0aGUgY29tcG9uZW50IHZhbHVlIGlzIGVtcHR5LiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IHRoZSBwbGFjZWhvbGRlciBmb3IgZGVmYXVsdCB2YWx1ZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBBcHBsaWNhYmxlIG9ubHkgdG8gdGV4dC1iYXNlZCBjb21wb25lbnRzLlxuICAgKi9cbiAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBpbnZhbGlkLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgb3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRPcHRpb25zRXh0ZW5kZWQ8XG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0LFxuICBVSVZhbHVlLFxuICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuPiBleHRlbmRzIEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0gfCBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcjtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+KSA9PiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5UeXBlcyAtIFBsdWdpbi1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxQbHVnaW5UeXBlcyBleHRlbmRzIFBsdWdpblR5cGVzQmFzZT4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVib3VuY2UgdGltZW91dCBmb3Igc2F2aW5nIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVib3VuY2UgdGltZW91dCBmb3Igc2F2aW5nIHNldHRpbmdzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBzYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xuICAgIGNvbnN0IERFRkFVTFQgPSAyXzAwMDtcbiAgICByZXR1cm4gREVGQVVMVDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jRXZlbnRzOiBBc3luY0V2ZW50cztcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50c0NvbXBvbmVudDogQXN5bmNFdmVudHNDb21wb25lbnQ7XG4gIHByaXZhdGUgc2F2ZVNldHRpbmdzRGVib3VuY2VkOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuXG4gIHByaXZhdGUgZ2V0IHBsdWdpblNldHRpbmdzKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4ge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuc2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzIGFzIEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgcGx1Z2luOiBFeHRyYWN0UGx1Z2luPFBsdWdpblR5cGVzPikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gICAgdGhpcy5jb250YWluZXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgZ2V0UGx1Z2luSWQoKSwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkID0gZGVib3VuY2UoXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpKSxcbiAgICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICApO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQgPSBuZXcgQXN5bmNFdmVudHNDb21wb25lbnQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzID0gbmV3IEFzeW5jRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnRcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBDb25kaXRpb25hbEtleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPiwgVUlWYWx1ZT4sXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPFVJVmFsdWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+LCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz5bUHJvcGVydHlOYW1lXT5cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICB0eXBlIFBsdWdpblNldHRpbmdzID0gRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPjtcbiAgICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHtcbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPik6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5OiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlczogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zRXh0OiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KHZhbHVlQ29tcG9uZW50KT8udmFsaWRhdG9yRWw7XG5cbiAgICBjb25zdCB0ZXh0QmFzZWRDb21wb25lbnQgPSBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSh2YWx1ZUNvbXBvbmVudCk7XG5cbiAgICBjb25zdCByZWFkb25seVZhbHVlID0gdGhpcy5wbHVnaW5TZXR0aW5nc1twcm9wZXJ0eU5hbWVdIGFzIFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+O1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9ICh0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuZGVmYXVsdFNldHRpbmdzIGFzIFBsdWdpblNldHRpbmdzKVtwcm9wZXJ0eU5hbWVdIGFzIFByb3BlcnR5VHlwZTtcbiAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LnNldFBsYWNlaG9sZGVyVmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIoZGVmYXVsdFZhbHVlIGFzIFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+KSk7XG5cbiAgICBsZXQgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk7XG4gICAgfSkpO1xuXG4gICAgbGV0IHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcyAmJiBkZWVwRXF1YWwocmVhZG9ubHlWYWx1ZSwgZGVmYXVsdFZhbHVlKSkge1xuICAgICAgdGV4dEJhc2VkQ29tcG9uZW50LmVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlQ29tcG9uZW50LnNldFZhbHVlKG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyKHJlYWRvbmx5VmFsdWUpKTtcbiAgICB9XG5cbiAgICBsZXQgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgY29uc3QgVVBEQVRFX1ZBTElEQVRPUl9FTEVNRU5UX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTAwO1xuICAgIGNvbnN0IHVwZGF0ZVZhbGlkYXRvckVsZW1lbnREZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk7XG4gICAgICB9KTtcbiAgICB9LCBVUERBVEVfVkFMSURBVE9SX0VMRU1FTlRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChzaG91bGRTa2lwT25DaGFuZ2UpIHtcbiAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnBsdWdpblNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG4gICAgICBsZXQgbmV3VmFsdWU6IFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSAmJiBvcHRpb25zRXh0LnNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5KSB7XG4gICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGNvbnZlcnRlZFZhbHVlO1xuICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYXdhaXQgdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgbmV3VmFsdWUpO1xuICAgICAgICAgIGlmICh0ZXh0QmFzZWRDb21wb25lbnQgJiYgb3B0aW9uc0V4dC5zaG91bGRTaG93UGxhY2Vob2xkZXJGb3JEZWZhdWx0VmFsdWVzICYmICF0ZXh0QmFzZWRDb21wb25lbnQuaXNFbXB0eSgpICYmIGRlZXBFcXVhbChuZXdWYWx1ZSwgZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50RGVib3VuY2VkKCk7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxlbWVudERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50RGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50RGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci52YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk7XG5cbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk6IHZvaWQge1xuICAgICAgaWYgKHNob3VsZEVtcHR5T25CbHVyICYmICF2YWxpZGF0b3JFbGVtZW50Py5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LmVtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25NZXNzYWdlID09PSAnJykge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWxlbWVudC52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eSh2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICBpZiAob3B0aW9uc0V4dC5zaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2UgJiYgdmFsaWRhdG9yRWxlbWVudC5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgIHNldFRvb2x0aXAodmFsaWRhdG9yRWxlbWVudCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIub24oJ3NhdmVTZXR0aW5ncycsIHRoaXMub25TYXZlU2V0dGluZ3MuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGhpZGUoKTogdm9pZCB7XG4gICAgc3VwZXIuaGlkZSgpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkLmNhbmNlbCgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQudW5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwLnNldHRpbmcub3BlblRhYih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfbG9hZGVkU2V0dGluZ3MgLSBUaGUgbG9hZGVkIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gX2lzSW5pdGlhbExvYWQgLSBXaGV0aGVyIHRoZSBzZXR0aW5ncyBhcmUgYmVpbmcgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9hZFNldHRpbmdzKF9sb2FkZWRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPiwgX2lzSW5pdGlhbExvYWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzLnZhbGlkYXRpb25NZXNzYWdlcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFzeW5jRXZlbnRzLnRyaWdnZXJBc3luYygndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0Esc0JBSU87QUFlUCxtQkFHTztBQUNQLHlCQUE0QjtBQUM1QixzQkFBeUI7QUFDekIsc0JBR087QUFDUCxvQkFBMEI7QUFDMUIsa0NBQXFDO0FBQ3JDLGdDQUEyQztBQUMzQyxnQ0FBc0M7QUFDdEMsK0JBQTBDO0FBQzFDLHNCQUE0QjtBQUtyQixNQUFNLHVCQUF1QjtBQTREN0IsTUFBZSw4QkFBbUUsaUNBQWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0NqRyxZQUE0QixRQUFvQztBQUNyRSxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFFakMsU0FBSyxZQUFZLFNBQVMseUJBQVMsaUJBQWEsNkJBQVksR0FBRyx5QkFBUyxpQkFBaUI7QUFDekYsU0FBSyw0QkFBd0I7QUFBQSxVQUMzQixpQ0FBbUIsTUFBTSxLQUFLLE9BQU8sZ0JBQWdCLFdBQVcsb0JBQW9CLENBQUM7QUFBQSxNQUNyRixLQUFLO0FBQUEsSUFDUDtBQUNBLFNBQUssdUJBQXVCLElBQUksaURBQXFCO0FBQ3JELFNBQUssY0FBYyxJQUFJLCtCQUFZO0FBQUEsRUFDckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFyQ0EsSUFBVyxTQUFr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
286
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVib3VuY2VyIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBhdXRvVXBkYXRlLFxuICBjb21wdXRlUG9zaXRpb25cbn0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL1ZhbGlkYXRpb25NZXNzYWdlLnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW4sXG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyLFxuICBQbHVnaW5UeXBlc0Jhc2Vcbn0gZnJvbSAnLi9QbHVnaW5UeXBlc0Jhc2UudHMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQge1xuICBub29wLFxuICBub29wQXN5bmNcbn0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgdG9QeCB9IGZyb20gJy4uLy4uL0hUTUxFbGVtZW50LnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL09iamVjdC50cyc7XG5pbXBvcnQgeyBBc3luY0V2ZW50c0NvbXBvbmVudCB9IGZyb20gJy4uL0NvbXBvbmVudHMvQXN5bmNFdmVudHNDb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuLi9Db21wb25lbnRzL1NldHRpbmdDb21wb25lbnRzL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9Db21wb25lbnRzL1NldHRpbmdDb21wb25lbnRzL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vVmFsaWRhdGlvbk1lc3NhZ2UudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuL1BsdWdpbklkLnRzJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBwYXNzZWQgdG8gdGhlIHtAbGluayBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnNhdmVUb0ZpbGV9IG1ldGhvZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNBVkVfVE9fRklMRV9DT05URVhUID0gJ1BsdWdpblNldHRpbmdzVGFiJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/KG5ld1ZhbHVlOiBSZWFkb25seURlZXA8VD4sIG9sZFZhbHVlOiBSZWFkb25seURlZXA8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uc0V4dGVuZGVkPFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCxcbiAgVUlWYWx1ZSxcbiAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbj4gZXh0ZW5kcyBCaW5kT3B0aW9uczxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdIHwgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHBsdWdpblNldHRpbmdzVmFsdWU6IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPikgPT4gVUlWYWx1ZTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBwbHVnaW4gc2V0dGluZ3MgdGFicyBpbiBPYnNpZGlhbi5cbiAqIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBiaW5kaW5nIHZhbHVlIGNvbXBvbmVudHMgdG8gcGx1Z2luIHNldHRpbmdzIGFuZCBoYW5kbGluZyBjaGFuZ2VzLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luVHlwZXMgLSBQbHVnaW4tc3BlY2lmaWMgdHlwZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8UGx1Z2luVHlwZXMgZXh0ZW5kcyBQbHVnaW5UeXBlc0Jhc2U+IGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGlzIG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBERUZBVUxUID0gMl8wMDA7XG4gICAgcmV0dXJuIERFRkFVTFQ7XG4gIH1cblxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50czogQXN5bmNFdmVudHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXN5bmNFdmVudHNDb21wb25lbnQ6IEFzeW5jRXZlbnRzQ29tcG9uZW50O1xuICBwcml2YXRlIHNhdmVTZXR0aW5nc0RlYm91bmNlZDogRGVib3VuY2VyPFtdLCB2b2lkPjtcblxuICBwcml2YXRlIGdldCBwbHVnaW5TZXR0aW5ncygpOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyBhcyBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogRXh0cmFjdFBsdWdpbjxQbHVnaW5UeXBlcz4pIHtcbiAgICBzdXBlcihwbHVnaW4uYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMuY29udGFpbmVyRWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuTGlicmFyeU5hbWUsIGdldFBsdWdpbklkKCksIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZCA9IGRlYm91bmNlKFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHRoaXMucGx1Z2luLnNldHRpbmdzTWFuYWdlci5zYXZlVG9GaWxlKFNBVkVfVE9fRklMRV9DT05URVhUKSksXG4gICAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlVGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50ID0gbmV3IEFzeW5jRXZlbnRzQ29tcG9uZW50KCk7XG4gICAgdGhpcy5hc3luY0V2ZW50cyA9IG5ldyBBc3luY0V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogQ29uZGl0aW9uYWxLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4sIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM6IEJpbmRPcHRpb25zRXh0ZW5kZWQ8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPiwgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+W1Byb3BlcnR5TmFtZV0+XG4gICk6IFRWYWx1ZUNvbXBvbmVudCB7XG4gICAgdHlwZSBQbHVnaW5TZXR0aW5ncyA9IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz47XG4gICAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7XG4gICAgICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogVUlWYWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGUsXG4gICAgICBvbkNoYW5nZWQ6IG5vb3AsXG4gICAgICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pOiBVSVZhbHVlID0+IHZhbHVlIGFzIFVJVmFsdWUsXG4gICAgICBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eTogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM6IHRydWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gICAgY29uc3QgdmFsaWRhdG9yRWwgPSBnZXRWYWxpZGF0b3JDb21wb25lbnQodmFsdWVDb21wb25lbnQpPy52YWxpZGF0b3JFbDtcblxuICAgIGNvbnN0IHRleHRCYXNlZENvbXBvbmVudCA9IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlKHZhbHVlQ29tcG9uZW50KTtcblxuICAgIGNvbnN0IHJlYWRvbmx5VmFsdWUgPSB0aGlzLnBsdWdpblNldHRpbmdzW3Byb3BlcnR5TmFtZV0gYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT47XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gKHRoaXMucGx1Z2luLnNldHRpbmdzTWFuYWdlci5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3MpW3Byb3BlcnR5TmFtZV0gYXMgUHJvcGVydHlUeXBlO1xuICAgIHRleHRCYXNlZENvbXBvbmVudD8uc2V0UGxhY2Vob2xkZXJWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihkZWZhdWx0VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pKTtcblxuICAgIGxldCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xuICAgIGxldCB0b29sdGlwRWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHRvb2x0aXBDb250ZW50RWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbCgpO1xuICAgIH0pKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbCgpO1xuICAgICAgfSk7XG4gICAgfSwgVVBEQVRFX1ZBTElEQVRPUl9FTF9USU1FT1VUX0lOX01JTExJU0VDT05EUyk7XG5cbiAgICB2YWx1ZUNvbXBvbmVudC5vbkNoYW5nZShhc3luYyAodWlWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHNob3VsZFNraXBPbkNoYW5nZSkge1xuICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMucGx1Z2luU2V0dGluZ3NbcHJvcGVydHlOYW1lXTtcbiAgICAgIGxldCBuZXdWYWx1ZTogUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpICYmIG9wdGlvbnNFeHQuc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IG9wdGlvbnNFeHQuY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgICBpZiAoaXNWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcihjb252ZXJ0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IGNvbnZlcnRlZFZhbHVlLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhd2FpdCB0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgIXRleHRCYXNlZENvbXBvbmVudC5pc0VtcHR5KCkgJiYgZGVlcEVxdWFsKG5ld1ZhbHVlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci52YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbCgpO1xuXG4gICAgaWYgKHZhbGlkYXRvckVsPy5wYXJlbnRFbGVtZW50KSB7XG4gICAgICB0b29sdGlwRWwgPSB2YWxpZGF0b3JFbC5wYXJlbnRFbGVtZW50LmNyZWF0ZURpdih7IGNsczogJ3Rvb2x0aXAnIH0pO1xuICAgICAgdG9vbHRpcENvbnRlbnRFbCA9IHRvb2x0aXBFbC5jcmVhdGVTcGFuKCk7XG4gICAgICB0b29sdGlwRWwuY3JlYXRlRGl2KHsgY2xzOiAndG9vbHRpcC1hcnJvdycgfSk7XG4gICAgICB0b29sdGlwRWwuaGlkZSgpO1xuXG4gICAgICBhdXRvVXBkYXRlKFxuICAgICAgICB2YWxpZGF0b3JFbCxcbiAgICAgICAgdG9vbHRpcEVsLFxuICAgICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICghdG9vbHRpcEVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBhd2FpdCBjb21wdXRlUG9zaXRpb24odmFsaWRhdG9yRWwsIHRvb2x0aXBFbCk7XG4gICAgICAgICAgdG9vbHRpcEVsLnNldENzc1Byb3BzKHtcbiAgICAgICAgICAgIGxlZnQ6IHRvUHgoeCksXG4gICAgICAgICAgICB0b3A6IHRvUHgoeSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgICBpZiAoc2hvdWxkRW1wdHlPbkJsdXIgJiYgIXZhbGlkYXRvckVsPy5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LmVtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZSA9PT0gJycpIHtcbiAgICAgICAgdmFsaWRhdG9yRWwuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xuICAgICAgICB2YWxpZGF0b3JFbC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWwudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KHZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB0b29sdGlwRWw/LnRvZ2dsZSghIXZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgICAgaWYgKHRvb2x0aXBDb250ZW50RWwpIHtcbiAgICAgICAgICB0b29sdGlwQ29udGVudEVsLnRleHRDb250ZW50ID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgc2V0VG9vbHRpcCh2YWxpZGF0b3JFbCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIub24oJ3NhdmVTZXR0aW5ncycsIHRoaXMub25TYXZlU2V0dGluZ3MuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGhpZGUoKTogdm9pZCB7XG4gICAgc3VwZXIuaGlkZSgpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkLmNhbmNlbCgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQudW5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwLnNldHRpbmcub3BlblRhYih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfbG9hZGVkU2V0dGluZ3MgLSBUaGUgbG9hZGVkIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gX2lzSW5pdGlhbExvYWQgLSBXaGV0aGVyIHRoZSBzZXR0aW5ncyBhcmUgYmVpbmcgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9hZFNldHRpbmdzKF9sb2FkZWRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPiwgX2lzSW5pdGlhbExvYWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzLnZhbGlkYXRpb25NZXNzYWdlcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFzeW5jRXZlbnRzLnRyaWdnZXJBc3luYygndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0EsaUJBR087QUFDUCxzQkFJTztBQWVQLG1CQUdPO0FBQ1AseUJBQTRCO0FBQzVCLHNCQUF5QjtBQUN6QixzQkFHTztBQUNQLHlCQUFxQjtBQUNyQixvQkFBMEI7QUFDMUIsa0NBQXFDO0FBQ3JDLGdDQUEyQztBQUMzQyxnQ0FBc0M7QUFDdEMsK0JBQTBDO0FBQzFDLHNCQUE0QjtBQUtyQixNQUFNLHVCQUF1QjtBQTREN0IsTUFBZSw4QkFBbUUsaUNBQWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0NqRyxZQUE0QixRQUFvQztBQUNyRSxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFFakMsU0FBSyxZQUFZLFNBQVMseUJBQVMsaUJBQWEsNkJBQVksR0FBRyx5QkFBUyxpQkFBaUI7QUFDekYsU0FBSyw0QkFBd0I7QUFBQSxVQUMzQixpQ0FBbUIsTUFBTSxLQUFLLE9BQU8sZ0JBQWdCLFdBQVcsb0JBQW9CLENBQUM7QUFBQSxNQUNyRixLQUFLO0FBQUEsSUFDUDtBQUNBLFNBQUssdUJBQXVCLElBQUksaURBQXFCO0FBQ3JELFNBQUssY0FBYyxJQUFJLCtCQUFZO0FBQUEsRUFDckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFyQ0EsSUFBVyxTQUFrQjtBQUMzQixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBYyw0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
@@ -64,3 +64,10 @@ export declare function isLoaded(el: Element): boolean;
64
64
  * @returns A function to remove the event listener.
65
65
  */
66
66
  export declare function onAncestorScrollOrResize(node: Node, callback: () => void): () => void;
67
+ /**
68
+ * Converts a number to a string with 'px' appended.
69
+ *
70
+ * @param value - The number to convert.
71
+ * @returns The number as a string with 'px' appended.
72
+ */
73
+ export declare function toPx(value: number): string;
@@ -97,6 +97,9 @@ function onAncestorScrollOrResize(node, callback) {
97
97
  });
98
98
  }
99
99
  }
100
+ function toPx(value) {
101
+ return `${value.toString()}px`;
102
+ }
100
103
  function getLoadableElements(el) {
101
104
  return Array.from(el.querySelectorAll("body, img, iframe, embed, link, object, script, style, track"));
102
105
  }
@@ -105,6 +108,7 @@ export {
105
108
  ensureLoaded,
106
109
  isElementVisibleInOffsetParent,
107
110
  isLoaded,
108
- onAncestorScrollOrResize
111
+ onAncestorScrollOrResize,
112
+ toPx
109
113
  };
110
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0hUTUxFbGVtZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxuICovXG5cbi8qKlxuICogQSBIVE1MIGVsZW1lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBjaGVja1ZhbGlkaXR5KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb2RlIGJsb2NrIHRvIHRoZSBnaXZlbiBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsOiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6ICdtYXJrZG93bi1yZW5kZXJlZCBjb2RlJyB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGVuc3VyZSBpcyBsb2FkZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTG9hZGVkKGVsOiBFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpc0xvYWRlZChlbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIGVsIGluc3RhbmNlb2YgSFRNTEJvZHlFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTEVtYmVkRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MT2JqZWN0RWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFN0eWxlRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFRyYWNrRWxlbWVudFxuICApIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZXNvbHZlKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChnZXRMb2FkYWJsZUVsZW1lbnRzKGVsKS5tYXAoZW5zdXJlTG9hZGVkKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudChlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgcGFyZW50RWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gIGlmICghcGFyZW50RWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50RWxSZWN0ID0gcGFyZW50RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgcmV0dXJuIChcbiAgICBwYXJlbnRFbFJlY3QudG9wIDw9IGVsUmVjdC50b3BcbiAgICAmJiBlbFJlY3QuYm90dG9tIDw9IHBhcmVudEVsUmVjdC5ib3R0b21cbiAgICAmJiBwYXJlbnRFbFJlY3QubGVmdCA8PSBlbFJlY3QubGVmdFxuICAgICYmIGVsUmVjdC5yaWdodCA8PSBwYXJlbnRFbFJlY3QucmlnaHRcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBsb2FkZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGVkKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxCb2R5RWxlbWVudCkge1xuICAgIHJldHVybiBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZSc7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLmNvbXBsZXRlICYmIGVsLm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCkge1xuICAgIHJldHVybiAhIWVsLmNvbnRlbnREb2N1bWVudDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxFbWJlZEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWwuc2hlZXQgIT09IG51bGwgOiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTE9iamVjdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5jb250ZW50RG9jdW1lbnQgfHwgISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTFNjcmlwdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5zaGVldDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxUcmFja0VsZW1lbnQpIHtcbiAgICBjb25zdCBSRUFEWV9TVEFURV9MT0FERUQgPSAyO1xuICAgIHJldHVybiBlbC5yZWFkeVN0YXRlID09PSBSRUFEWV9TVEFURV9MT0FERUQ7XG4gIH1cblxuICByZXR1cm4gZ2V0TG9hZGFibGVFbGVtZW50cyhlbCkuZXZlcnkoaXNMb2FkZWQpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIG5vZGUgdG8gYWRkIHRoZSBldmVudCBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZShub2RlOiBOb2RlLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICBjb25zdCBhbmNlc3RvcnM6IEV2ZW50VGFyZ2V0W10gPSBbXTtcbiAgYW5jZXN0b3JzLnB1c2goZG9jdW1lbnQpO1xuICBhbmNlc3RvcnMucHVzaCh3aW5kb3cpO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrU21vb3RoKCk6IHZvaWQge1xuICAgIGlmIChpc0V2ZW50VHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNFdmVudFRyaWdnZXJlZCA9IHRydWU7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRMb2FkYWJsZUVsZW1lbnRzKGVsOiBFbGVtZW50KTogRWxlbWVudFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwucXVlcnlTZWxlY3RvckFsbCgnYm9keSwgaW1nLCBpZnJhbWUsIGVtYmVkLCBsaW5rLCBvYmplY3QsIHNjcmlwdCwgc3R5bGUsIHRyYWNrJykpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQXlDTyxTQUFTLGdCQUFnQixJQUFvQyxNQUFvQjtBQUN0RixLQUFHLFNBQVMsVUFBVSxFQUFFLEtBQUsseUJBQXlCLEdBQUcsQ0FBQyxXQUFXO0FBQ25FLFdBQU8sU0FBUyxRQUFRLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFBQSxFQUN4QyxDQUFDO0FBQ0g7QUFRQSxlQUFzQixhQUFhLElBQTRCO0FBQzdELE1BQUksU0FBUyxFQUFFLEdBQUc7QUFDaEI7QUFBQSxFQUNGO0FBQ0EsTUFDRSxjQUFjLG1CQUNYLGNBQWMsb0JBQ2QsY0FBYyxxQkFDZCxjQUFjLG9CQUNkLGNBQWMsbUJBQ2QsY0FBYyxxQkFDZCxjQUFjLG9CQUNkLGNBQWMsa0JBQ2pCO0FBQ0EsVUFBTSxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBQzdCLFNBQUcsaUJBQWlCLFFBQVEsT0FBTztBQUNuQyxTQUFHLGlCQUFpQixTQUFTLE9BQU87QUFBQSxJQUN0QyxDQUFDO0FBQ0Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxRQUFRLElBQUksb0JBQW9CLEVBQUUsRUFBRSxJQUFJLFlBQVksQ0FBQztBQUM3RDtBQVFPLFNBQVMsK0JBQStCLElBQTBCO0FBQ3ZFLFFBQU0sV0FBVyxHQUFHO0FBQ3BCLE1BQUksQ0FBQyxVQUFVO0FBQ2IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsR0FBRyxzQkFBc0I7QUFDeEMsUUFBTSxlQUFlLFNBQVMsc0JBQXNCO0FBRXBELFNBQ0UsYUFBYSxPQUFPLE9BQU8sT0FDeEIsT0FBTyxVQUFVLGFBQWEsVUFDOUIsYUFBYSxRQUFRLE9BQU8sUUFDNUIsT0FBTyxTQUFTLGFBQWE7QUFFcEM7QUFRTyxTQUFTLFNBQVMsSUFBc0I7QUFDN0MsTUFBSSxjQUFjLGlCQUFpQjtBQUNqQyxXQUFPLFNBQVMsZUFBZSxjQUFjLFNBQVMsZUFBZTtBQUFBLEVBQ3ZFO0FBRUEsTUFBSSxjQUFjLGtCQUFrQjtBQUNsQyxXQUFPLEdBQUcsWUFBWSxHQUFHLGVBQWU7QUFBQSxFQUMxQztBQUVBLE1BQUksY0FBYyxtQkFBbUI7QUFDbkMsV0FBTyxDQUFDLENBQUMsR0FBRztBQUFBLEVBQ2Q7QUFFQSxNQUFJLGNBQWMsa0JBQWtCO0FBQ2xDLFdBQU8sQ0FBQyxDQUFDLEdBQUcsZUFBZTtBQUFBLEVBQzdCO0FBRUEsTUFBSSxjQUFjLGlCQUFpQjtBQUNqQyxXQUFPLEdBQUcsUUFBUSxlQUFlLEdBQUcsVUFBVSxPQUFPO0FBQUEsRUFDdkQ7QUFFQSxNQUFJLGNBQWMsbUJBQW1CO0FBQ25DLFdBQU8sQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLGVBQWU7QUFBQSxFQUNyRDtBQUVBLE1BQUksY0FBYyxtQkFBbUI7QUFDbkMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGNBQWMsa0JBQWtCO0FBQ2xDLFdBQU8sQ0FBQyxDQUFDLEdBQUc7QUFBQSxFQUNkO0FBRUEsTUFBSSxjQUFjLGtCQUFrQjtBQUNsQyxVQUFNLHFCQUFxQjtBQUMzQixXQUFPLEdBQUcsZUFBZTtBQUFBLEVBQzNCO0FBRUEsU0FBTyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sUUFBUTtBQUMvQztBQVNPLFNBQVMseUJBQXlCLE1BQVksVUFBa0M7QUFDckYsUUFBTSxZQUEyQixDQUFDO0FBQ2xDLFlBQVUsS0FBSyxRQUFRO0FBQ3ZCLFlBQVUsS0FBSyxNQUFNO0FBRXJCLE1BQUksY0FBMkI7QUFFL0IsU0FBTyxhQUFhO0FBQ2xCLGNBQVUsS0FBSyxXQUFXO0FBQzFCLGtCQUFjLFlBQVk7QUFBQSxFQUM1QjtBQUVBLE1BQUksbUJBQW1CO0FBRXZCLGFBQVcsWUFBWSxXQUFXO0FBQ2hDLGFBQVMsaUJBQWlCLFVBQVUsZ0JBQWdCLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFDckUsYUFBUyxpQkFBaUIsVUFBVSxnQkFBZ0IsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQ3ZFO0FBRUEsU0FBTyxNQUFNO0FBQ1gsZUFBVyxZQUFZLFdBQVc7QUFDaEMsZUFBUyxvQkFBb0IsVUFBVSxnQkFBZ0IsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUN4RSxlQUFTLG9CQUFvQixVQUFVLGdCQUFnQixFQUFFLFNBQVMsS0FBSyxDQUFDO0FBQUEsSUFDMUU7QUFBQSxFQUNGO0FBRUEsV0FBUyxpQkFBdUI7QUFDOUIsUUFBSSxrQkFBa0I7QUFDcEI7QUFBQSxJQUNGO0FBRUEsdUJBQW1CO0FBRW5CLDBCQUFzQixNQUFNO0FBQzFCLFVBQUk7QUFDRixpQkFBUztBQUFBLE1BQ1gsVUFBRTtBQUNBLDJCQUFtQjtBQUFBLE1BQ3JCO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyxvQkFBb0IsSUFBd0I7QUFDbkQsU0FBTyxNQUFNLEtBQUssR0FBRyxpQkFBaUIsOERBQThELENBQUM7QUFDdkc7IiwKICAibmFtZXMiOiBbXQp9Cg==
114
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0hUTUxFbGVtZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxuICovXG5cbi8qKlxuICogQSBIVE1MIGVsZW1lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBjaGVja1ZhbGlkaXR5KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb2RlIGJsb2NrIHRvIHRoZSBnaXZlbiBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsOiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6ICdtYXJrZG93bi1yZW5kZXJlZCBjb2RlJyB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGVuc3VyZSBpcyBsb2FkZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTG9hZGVkKGVsOiBFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpc0xvYWRlZChlbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIGVsIGluc3RhbmNlb2YgSFRNTEJvZHlFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTEVtYmVkRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50XG4gICAgfHwgZWwgaW5zdGFuY2VvZiBIVE1MT2JqZWN0RWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFN0eWxlRWxlbWVudFxuICAgIHx8IGVsIGluc3RhbmNlb2YgSFRNTFRyYWNrRWxlbWVudFxuICApIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZXNvbHZlKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChnZXRMb2FkYWJsZUVsZW1lbnRzKGVsKS5tYXAoZW5zdXJlTG9hZGVkKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudChlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgcGFyZW50RWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gIGlmICghcGFyZW50RWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50RWxSZWN0ID0gcGFyZW50RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgcmV0dXJuIChcbiAgICBwYXJlbnRFbFJlY3QudG9wIDw9IGVsUmVjdC50b3BcbiAgICAmJiBlbFJlY3QuYm90dG9tIDw9IHBhcmVudEVsUmVjdC5ib3R0b21cbiAgICAmJiBwYXJlbnRFbFJlY3QubGVmdCA8PSBlbFJlY3QubGVmdFxuICAgICYmIGVsUmVjdC5yaWdodCA8PSBwYXJlbnRFbFJlY3QucmlnaHRcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBsb2FkZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGVkKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxCb2R5RWxlbWVudCkge1xuICAgIHJldHVybiBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZSc7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLmNvbXBsZXRlICYmIGVsLm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCkge1xuICAgIHJldHVybiAhIWVsLmNvbnRlbnREb2N1bWVudDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxFbWJlZEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsLnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWwuc2hlZXQgIT09IG51bGwgOiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTE9iamVjdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5jb250ZW50RG9jdW1lbnQgfHwgISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTFNjcmlwdEVsZW1lbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gISFlbC5zaGVldDtcbiAgfVxuXG4gIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxUcmFja0VsZW1lbnQpIHtcbiAgICBjb25zdCBSRUFEWV9TVEFURV9MT0FERUQgPSAyO1xuICAgIHJldHVybiBlbC5yZWFkeVN0YXRlID09PSBSRUFEWV9TVEFURV9MT0FERUQ7XG4gIH1cblxuICByZXR1cm4gZ2V0TG9hZGFibGVFbGVtZW50cyhlbCkuZXZlcnkoaXNMb2FkZWQpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIG5vZGUgdG8gYWRkIHRoZSBldmVudCBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZShub2RlOiBOb2RlLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICBjb25zdCBhbmNlc3RvcnM6IEV2ZW50VGFyZ2V0W10gPSBbXTtcbiAgYW5jZXN0b3JzLnB1c2goZG9jdW1lbnQpO1xuICBhbmNlc3RvcnMucHVzaCh3aW5kb3cpO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrU21vb3RoKCk6IHZvaWQge1xuICAgIGlmIChpc0V2ZW50VHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNFdmVudFRyaWdnZXJlZCA9IHRydWU7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgbnVtYmVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIGFzIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHt2YWx1ZS50b1N0cmluZygpfXB4YDtcbn1cblxuZnVuY3Rpb24gZ2V0TG9hZGFibGVFbGVtZW50cyhlbDogRWxlbWVudCk6IEVsZW1lbnRbXSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHksIGltZywgaWZyYW1lLCBlbWJlZCwgbGluaywgb2JqZWN0LCBzY3JpcHQsIHN0eWxlLCB0cmFjaycpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUF5Q08sU0FBUyxnQkFBZ0IsSUFBb0MsTUFBb0I7QUFDdEYsS0FBRyxTQUFTLFVBQVUsRUFBRSxLQUFLLHlCQUF5QixHQUFHLENBQUMsV0FBVztBQUNuRSxXQUFPLFNBQVMsUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUEsRUFDeEMsQ0FBQztBQUNIO0FBUUEsZUFBc0IsYUFBYSxJQUE0QjtBQUM3RCxNQUFJLFNBQVMsRUFBRSxHQUFHO0FBQ2hCO0FBQUEsRUFDRjtBQUNBLE1BQ0UsY0FBYyxtQkFDWCxjQUFjLG9CQUNkLGNBQWMscUJBQ2QsY0FBYyxvQkFDZCxjQUFjLG1CQUNkLGNBQWMscUJBQ2QsY0FBYyxvQkFDZCxjQUFjLGtCQUNqQjtBQUNBLFVBQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM3QixTQUFHLGlCQUFpQixRQUFRLE9BQU87QUFDbkMsU0FBRyxpQkFBaUIsU0FBUyxPQUFPO0FBQUEsSUFDdEMsQ0FBQztBQUNEO0FBQUEsRUFDRjtBQUVBLFFBQU0sUUFBUSxJQUFJLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxZQUFZLENBQUM7QUFDN0Q7QUFRTyxTQUFTLCtCQUErQixJQUEwQjtBQUN2RSxRQUFNLFdBQVcsR0FBRztBQUNwQixNQUFJLENBQUMsVUFBVTtBQUNiLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxTQUFTLEdBQUcsc0JBQXNCO0FBQ3hDLFFBQU0sZUFBZSxTQUFTLHNCQUFz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
@@ -5,7 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
- const LIBRARY_VERSION = "26.1.3-beta.42";
8
+ const LIBRARY_VERSION = "26.1.3-beta.44";
9
9
  const LIBRARY_NAME = "obsidian-dev-utils";
10
10
  const LIBRARY_STYLES = ".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=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=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=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=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=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.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}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AACE;EACE;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;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;;;AC5DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AChDF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%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='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.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%7D%5Cn%7D%5Cn%22%5D%7D */\n";
11
11
  export {
@@ -16,7 +16,10 @@ import {
16
16
  ToggleComponent
17
17
  } from "obsidian";
18
18
  import { CssClass } from "../../../CssClass.mjs";
19
- import { onAncestorScrollOrResize } from "../../../HTMLElement.mjs";
19
+ import {
20
+ onAncestorScrollOrResize,
21
+ toPx
22
+ } from "../../../HTMLElement.mjs";
20
23
  class OverlayValidatorComponent {
21
24
  constructor(el) {
22
25
  this.el = el;
@@ -133,10 +136,7 @@ function getValidatorComponent(obj) {
133
136
  function isValidatorComponent(obj) {
134
137
  return !!obj.validatorEl;
135
138
  }
136
- function toPx(value) {
137
- return `${value.toString()}px`;
138
- }
139
139
  export {
140
140
  getValidatorComponent
141
141
  };
142
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29sb3JDb21wb25lbnQsXG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgU2VhcmNoQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50LFxuICBUb2dnbGVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgb25BbmNlc3RvclNjcm9sbE9yUmVzaXplIH0gZnJvbSAnLi4vLi4vLi4vSFRNTEVsZW1lbnQudHMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB2YWxpZGF0b3IgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQ7XG59XG5cbmNsYXNzIE92ZXJsYXlWYWxpZGF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBWYWxpZGF0b3JDb21wb25lbnQge1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRvckVsKCk6IFZhbGlkYXRvckVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JFbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbGVtZW50IG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIERPTScpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsID0gZWwucGFyZW50RWxlbWVudC5jcmVhdGVFbCgnaW5wdXQnLCB7XG4gICAgICBhdHRyOiB7XG4gICAgICAgIHRhYmluZGV4OiAtMVxuICAgICAgfSxcbiAgICAgIGNsczogW0Nzc0NsYXNzLkxpYnJhcnlOYW1lLCBDc3NDbGFzcy5PdmVybGF5VmFsaWRhdG9yXVxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVsLmZvY3VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbC5pc0FjdGl2ZUVsZW1lbnQgPSB0aGlzLmlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZS5iaW5kKHRoaXMpO1xuXG4gICAgbGV0IHRhYkluZGV4RWwgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdbdGFiaW5kZXhdJyk7XG4gICAgaWYgKCF0YWJJbmRleEVsKSB7XG4gICAgICBpZiAodGhpcy5lbC5nZXRBdHRyKCd0YWJpbmRleCcpID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZWwudGFiSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHRhYkluZGV4RWwgPSB0aGlzLmVsO1xuICAgIH1cblxuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZm9yY2VCbHVyVmFsaWRhdG9yRWwoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGFiSW5kZXhFbC5mb2N1cygpO1xuICAgIH0pO1xuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCAoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcmNlQmx1clZhbGlkYXRvckVsKCk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHVucmVnaXN0ZXJTY3JvbGxPclJlc2l6ZUhhbmRsZXJzID0gb25BbmNlc3RvclNjcm9sbE9yUmVzaXplKHRoaXMuZWwsIHRoaXMudXBkYXRlUG9zaXRpb24uYmluZCh0aGlzKSk7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVtb3ZlZE5vZGUgb2YgQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpKSB7XG4gICAgICAgICAgaWYgKHJlbW92ZWROb2RlID09PSB0aGlzLl92YWxpZGF0b3JFbCkge1xuICAgICAgICAgICAgdW5yZWdpc3RlclNjcm9sbE9yUmVzaXplSGFuZGxlcnMoKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JjZUJsdXJWYWxpZGF0b3JFbCgpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JFbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVsLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWwub2Zmc2V0UGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBhcmVudFJlY3QgPSB0aGlzLmVsLm9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsLnNldENzc1N0eWxlcyh7XG4gICAgICBoZWlnaHQ6IHRvUHgocmVjdC5oZWlnaHQpLFxuICAgICAgbGVmdDogdG9QeChyZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQgKyB0aGlzLmVsLm9mZnNldFBhcmVudC5zY3JvbGxMZWZ0KSxcbiAgICAgIHRvcDogdG9QeChyZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wICsgdGhpcy5lbC5vZmZzZXRQYXJlbnQuc2Nyb2xsVG9wKSxcbiAgICAgIHdpZHRoOiB0b1B4KHJlY3Qud2lkdGgpXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIgaW1wbGVtZW50cyBWYWxpZGF0b3JDb21wb25lbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50KSB7fVxufVxuXG4vKipcbiAqIEdldHMgYSB2YWxpZGF0b3IgY29tcG9uZW50IHJlbGF0ZWQgdG8gdGhlIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gQW55IG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGVkIHZhbGlkYXRvciBjb21wb25lbnQgb3IgYG51bGxgIGlmIG5vIHJlbGF0ZWQgdmFsaWRhdG9yIGNvbXBvbmVudCBpcyBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckNvbXBvbmVudChvYmo6IHVua25vd24pOiBudWxsIHwgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgaWYgKGlzVmFsaWRhdG9yQ29tcG9uZW50KG9iaikpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIENvbG9yQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouY29sb3JQaWNrZXJFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5zZWxlY3RFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgUHJvZ3Jlc3NCYXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlWYWxpZGF0b3JDb21wb25lbnQob2JqLnByb2dyZXNzQmFyKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBTZWFyY2hDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5pbnB1dEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5zbGlkZXJFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVGV4dEFyZWFDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5pbnB1dEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBUZXh0Q29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVG9nZ2xlQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5VmFsaWRhdG9yQ29tcG9uZW50KG9iai50b2dnbGVFbCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZGF0b3JDb21wb25lbnQob2JqOiB1bmtub3duKTogb2JqIGlzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHJldHVybiAhIShvYmogYXMgUGFydGlhbDxWYWxpZGF0b3JDb21wb25lbnQ+KS52YWxpZGF0b3JFbDtcbn1cblxuZnVuY3Rpb24gdG9QeCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3ZhbHVlLnRvU3RyaW5nKCl9cHhgO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQU1BO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBSVAsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxnQ0FBZ0M7QUFZekMsTUFBTSwwQkFBd0Q7QUFBQSxFQU9yRCxZQUE2QixJQUFpQjtBQUFqQjtBQUNsQyxRQUFJLENBQUMsR0FBRyxlQUFlO0FBQ3JCLFlBQU0sSUFBSSxNQUFNLHFDQUFxQztBQUFBLElBQ3ZEO0FBRUEsU0FBSyxlQUFlLEdBQUcsY0FBYyxTQUFTLFNBQVM7QUFBQSxNQUNyRCxNQUFNO0FBQUEsUUFDSixVQUFVO0FBQUEsTUFDWjtBQUFBLE1B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
142
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29sb3JDb21wb25lbnQsXG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgU2VhcmNoQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50LFxuICBUb2dnbGVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgb25BbmNlc3RvclNjcm9sbE9yUmVzaXplLFxuICB0b1B4XG59IGZyb20gJy4uLy4uLy4uL0hUTUxFbGVtZW50LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGhhcyBhIHZhbGlkYXRvciBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdG9yIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50O1xufVxuXG5jbGFzcyBPdmVybGF5VmFsaWRhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgcHVibGljIGdldCB2YWxpZGF0b3JFbCgpOiBWYWxpZGF0b3JFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yRWw7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JFbDogVmFsaWRhdG9yRWxlbWVudDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbDogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAoIWVsLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWxlbWVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00nKTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbCA9IGVsLnBhcmVudEVsZW1lbnQuY3JlYXRlRWwoJ2lucHV0Jywge1xuICAgICAgYXR0cjoge1xuICAgICAgICB0YWJpbmRleDogLTFcbiAgICAgIH0sXG4gICAgICBjbHM6IFtDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgQ3NzQ2xhc3MuT3ZlcmxheVZhbGlkYXRvcl1cbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdGhpcy5lbC5mb2N1cygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuaXNBY3RpdmVFbGVtZW50ID0gdGhpcy5pc0VsZW1lbnRPckRlc2NlbmRhbnRBY3RpdmUuYmluZCh0aGlzKTtcblxuICAgIGxldCB0YWJJbmRleEVsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW3RhYmluZGV4XScpO1xuICAgIGlmICghdGFiSW5kZXhFbCkge1xuICAgICAgaWYgKHRoaXMuZWwuZ2V0QXR0cigndGFiaW5kZXgnKSA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmVsLnRhYkluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICB0YWJJbmRleEVsID0gdGhpcy5lbDtcbiAgICB9XG5cbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCAoKSA9PiB7XG4gICAgICB0aGlzLmZvcmNlQmx1clZhbGlkYXRvckVsKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRhYkluZGV4RWwuZm9jdXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZSgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JjZUJsdXJWYWxpZGF0b3JFbCgpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1bnJlZ2lzdGVyU2Nyb2xsT3JSZXNpemVIYW5kbGVycyA9IG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSh0aGlzLmVsLCB0aGlzLnVwZGF0ZVBvc2l0aW9uLmJpbmQodGhpcykpO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHJlbW92ZWROb2RlIG9mIEFycmF5LmZyb20obXV0YXRpb24ucmVtb3ZlZE5vZGVzKSkge1xuICAgICAgICAgIGlmIChyZW1vdmVkTm9kZSA9PT0gdGhpcy5fdmFsaWRhdG9yRWwpIHtcbiAgICAgICAgICAgIHVucmVnaXN0ZXJTY3JvbGxPclJlc2l6ZUhhbmRsZXJzKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VCbHVyVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVsLm9mZnNldFBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5lbC5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbC5zZXRDc3NTdHlsZXMoe1xuICAgICAgaGVpZ2h0OiB0b1B4KHJlY3QuaGVpZ2h0KSxcbiAgICAgIGxlZnQ6IHRvUHgocmVjdC5sZWZ0IC0gcGFyZW50UmVjdC5sZWZ0ICsgdGhpcy5lbC5vZmZzZXRQYXJlbnQuc2Nyb2xsTGVmdCksXG4gICAgICB0b3A6IHRvUHgocmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcCArIHRoaXMuZWwub2Zmc2V0UGFyZW50LnNjcm9sbFRvcCksXG4gICAgICB3aWR0aDogdG9QeChyZWN0LndpZHRoKVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyIGltcGxlbWVudHMgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWxpZGF0b3JFbDogVmFsaWRhdG9yRWxlbWVudCkge31cbn1cblxuLyoqXG4gKiBHZXRzIGEgdmFsaWRhdG9yIGNvbXBvbmVudCByZWxhdGVkIHRvIHRoZSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIEFueSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRlZCB2YWxpZGF0b3IgY29tcG9uZW50IG9yIGBudWxsYCBpZiBubyByZWxhdGVkIHZhbGlkYXRvciBjb21wb25lbnQgaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JDb21wb25lbnQob2JqOiB1bmtub3duKTogbnVsbCB8IFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIGlmIChpc1ZhbGlkYXRvckNvbXBvbmVudChvYmopKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBDb2xvckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmNvbG9yUGlja2VyRWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIERyb3Bkb3duQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouc2VsZWN0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFByb2dyZXNzQmFyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5VmFsaWRhdG9yQ29tcG9uZW50KG9iai5wcm9ncmVzc0Jhcik7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgU2VhcmNoQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgU2xpZGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouc2xpZGVyRWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRleHRBcmVhQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRvZ2dsZUNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheVZhbGlkYXRvckNvbXBvbmVudChvYmoudG9nZ2xlRWwpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRhdG9yQ29tcG9uZW50KG9iajogdW5rbm93bik6IG9iaiBpcyBWYWxpZGF0b3JDb21wb25lbnQge1xuICByZXR1cm4gISEob2JqIGFzIFBhcnRpYWw8VmFsaWRhdG9yQ29tcG9uZW50PikudmFsaWRhdG9yRWw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBTUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFJUCxTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQVlQLE1BQU0sMEJBQXdEO0FBQUEsRUFPckQsWUFBNkIsSUFBaUI7QUFBakI7QUFDbEMsUUFBSSxDQUFDLEdBQUcsZUFBZTtBQUNyQixZQUFNLElBQUksTUFBTSxxQ0FBcUM7QUFBQSxJQUN2RDtBQUVBLFNBQUssZUFBZSxHQUFHLGNBQWMsU0FBUyxTQUFTO0FBQUEsTUFDckQsTUFBTTtBQUFBLFFBQ0osVUFBVTtBQUFBLE1BQ1o7QUFBQSxNQUNBLEtBQUssQ0FBQyxTQUFTLGFBQWEsU0FBUyxnQkFBZ0I7QUFBQSxJQUN2RCxDQUFD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
@@ -5,6 +5,10 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
+ import {
9
+ autoUpdate,
10
+ computePosition
11
+ } from "@floating-ui/dom";
8
12
  import {
9
13
  debounce,
10
14
  PluginSettingTab,
@@ -20,6 +24,7 @@ import {
20
24
  noop,
21
25
  noopAsync
22
26
  } from "../../Function.mjs";
27
+ import { toPx } from "../../HTMLElement.mjs";
23
28
  import { deepEqual } from "../../Object.mjs";
24
29
  import { AsyncEventsComponent } from "../Components/AsyncEventsComponent.mjs";
25
30
  import { getTextBasedComponentValue } from "../Components/SettingComponents/TextBasedComponent.mjs";
@@ -89,18 +94,20 @@ class PluginSettingsTabBase extends PluginSettingTab {
89
94
  shouldShowValidationMessage: true
90
95
  };
91
96
  const optionsExt = { ...DEFAULT_OPTIONS, ...options };
92
- const validatorElement = getValidatorComponent(valueComponent)?.validatorEl;
97
+ const validatorEl = getValidatorComponent(valueComponent)?.validatorEl;
93
98
  const textBasedComponent = getTextBasedComponentValue(valueComponent);
94
99
  const readonlyValue = this.pluginSettings[propertyName];
95
100
  const defaultValue = this.plugin.settingsManager.defaultSettings[propertyName];
96
101
  textBasedComponent?.setPlaceholderValue(optionsExt.pluginSettingsToComponentValueConverter(defaultValue));
97
102
  let validationMessage;
103
+ let tooltipEl = null;
104
+ let tooltipContentEl = null;
98
105
  this.asyncEventsComponent.registerAsyncEvent(this.on("validationMessageChanged", (anotherPropertyName, anotherValidationMessage) => {
99
106
  if (propertyName !== anotherPropertyName) {
100
107
  return;
101
108
  }
102
109
  validationMessage = anotherValidationMessage;
103
- updateValidatorElement();
110
+ updateValidatorEl();
104
111
  }));
105
112
  let shouldEmptyOnBlur = false;
106
113
  if (textBasedComponent && optionsExt.shouldShowPlaceholderForDefaultValues && deepEqual(readonlyValue, defaultValue)) {
@@ -109,12 +116,12 @@ class PluginSettingsTabBase extends PluginSettingTab {
109
116
  valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(readonlyValue));
110
117
  }
111
118
  let shouldSkipOnChange = false;
112
- const UPDATE_VALIDATOR_ELEMENT_TIMEOUT_IN_MILLISECONDS = 100;
113
- const updateValidatorElementDebounced = debounce(() => {
119
+ const UPDATE_VALIDATOR_EL_TIMEOUT_IN_MILLISECONDS = 100;
120
+ const updateValidatorElDebounced = debounce(() => {
114
121
  requestAnimationFrame(() => {
115
- updateValidatorElement();
122
+ updateValidatorEl();
116
123
  });
117
- }, UPDATE_VALIDATOR_ELEMENT_TIMEOUT_IN_MILLISECONDS);
124
+ }, UPDATE_VALIDATOR_EL_TIMEOUT_IN_MILLISECONDS);
118
125
  valueComponent.onChange(async (uiValue) => {
119
126
  if (shouldSkipOnChange) {
120
127
  shouldSkipOnChange = false;
@@ -138,47 +145,70 @@ class PluginSettingsTabBase extends PluginSettingTab {
138
145
  }
139
146
  }
140
147
  }
141
- updateValidatorElementDebounced();
148
+ updateValidatorElDebounced();
142
149
  if (newValue !== void 0) {
143
150
  await optionsExt.onChanged(newValue, oldValue);
144
151
  }
145
152
  this.saveSettingsDebounced();
146
153
  });
147
- validatorElement?.addEventListener("focus", () => {
148
- updateValidatorElementDebounced();
154
+ validatorEl?.addEventListener("focus", () => {
155
+ updateValidatorElDebounced();
149
156
  });
150
- validatorElement?.addEventListener("blur", () => {
151
- updateValidatorElementDebounced();
157
+ validatorEl?.addEventListener("blur", () => {
158
+ updateValidatorElDebounced();
152
159
  });
153
- validatorElement?.addEventListener("click", () => {
160
+ validatorEl?.addEventListener("click", () => {
154
161
  requestAnimationFrame(() => {
155
- updateValidatorElementDebounced();
162
+ updateValidatorElDebounced();
156
163
  });
157
164
  });
158
165
  validationMessage = this.plugin.settingsManager.settingsWrapper.validationMessages[propertyName] ?? "";
159
- updateValidatorElement();
166
+ updateValidatorEl();
167
+ if (validatorEl?.parentElement) {
168
+ tooltipEl = validatorEl.parentElement.createDiv({ cls: "tooltip" });
169
+ tooltipContentEl = tooltipEl.createSpan();
170
+ tooltipEl.createDiv({ cls: "tooltip-arrow" });
171
+ tooltipEl.hide();
172
+ autoUpdate(
173
+ validatorEl,
174
+ tooltipEl,
175
+ convertAsyncToSync(async () => {
176
+ if (!tooltipEl) {
177
+ return;
178
+ }
179
+ const { x, y } = await computePosition(validatorEl, tooltipEl);
180
+ tooltipEl.setCssProps({
181
+ left: toPx(x),
182
+ top: toPx(y)
183
+ });
184
+ })
185
+ );
186
+ }
160
187
  return valueComponent;
161
- function updateValidatorElement() {
162
- if (shouldEmptyOnBlur && !validatorElement?.isActiveElement()) {
188
+ function updateValidatorEl() {
189
+ if (shouldEmptyOnBlur && !validatorEl?.isActiveElement()) {
163
190
  shouldEmptyOnBlur = false;
164
191
  if (!textBasedComponent?.isEmpty()) {
165
192
  shouldSkipOnChange = true;
166
193
  textBasedComponent?.empty();
167
194
  }
168
195
  }
169
- if (!validatorElement) {
196
+ if (!validatorEl) {
170
197
  return;
171
198
  }
172
199
  if (validationMessage === "") {
173
- validatorElement.setCustomValidity("");
174
- validatorElement.checkValidity();
175
- validationMessage = validatorElement.validationMessage;
200
+ validatorEl.setCustomValidity("");
201
+ validatorEl.checkValidity();
202
+ validationMessage = validatorEl.validationMessage;
176
203
  }
177
- validatorElement.setCustomValidity(validationMessage);
178
- if (optionsExt.shouldShowValidationMessage && validatorElement.isActiveElement()) {
179
- validatorElement.reportValidity();
204
+ validatorEl.setCustomValidity(validationMessage);
205
+ if (optionsExt.shouldShowValidationMessage) {
206
+ tooltipEl?.toggle(!!validationMessage);
207
+ if (tooltipContentEl) {
208
+ tooltipContentEl.textContent = validationMessage;
209
+ }
180
210
  } else if (validationMessage) {
181
- setTooltip(validatorElement, validationMessage);
211
+ setTooltip(validatorEl, validationMessage);
182
212
  }
183
213
  }
184
214
  }
@@ -241,4 +271,4 @@ export {
241
271
  PluginSettingsTabBase,
242
272
  SAVE_TO_FILE_CONTEXT
243
273
  };
244
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVib3VuY2VyIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL1ZhbGlkYXRpb25NZXNzYWdlLnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW4sXG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyLFxuICBQbHVnaW5UeXBlc0Jhc2Vcbn0gZnJvbSAnLi9QbHVnaW5UeXBlc0Jhc2UudHMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQge1xuICBub29wLFxuICBub29wQXN5bmNcbn0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi4vLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vQ29tcG9uZW50cy9Bc3luY0V2ZW50c0NvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVGV4dEJhc2VkQ29tcG9uZW50LnRzJztcbmltcG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzJztcbmltcG9ydCB7IGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIgfSBmcm9tICcuLi9WYWxpZGF0aW9uTWVzc2FnZS50cyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JZCB9IGZyb20gJy4vUGx1Z2luSWQudHMnO1xuXG4vKipcbiAqIFRoZSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2Uuc2F2ZVRvRmlsZX0gbWV0aG9kLlxuICovXG5leHBvcnQgY29uc3QgU0FWRV9UT19GSUxFX0NPTlRFWFQgPSAnUGx1Z2luU2V0dGluZ3NUYWInO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlZD8obmV3VmFsdWU6IFJlYWRvbmx5RGVlcDxUPiwgb2xkVmFsdWU6IFJlYWRvbmx5RGVlcDxUPik6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXQgdGhlIHNldHRpbmcgd2hlbiB0aGUgY29tcG9uZW50IHZhbHVlIGlzIGVtcHR5LiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IHRoZSBwbGFjZWhvbGRlciBmb3IgZGVmYXVsdCB2YWx1ZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBBcHBsaWNhYmxlIG9ubHkgdG8gdGV4dC1iYXNlZCBjb21wb25lbnRzLlxuICAgKi9cbiAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBpbnZhbGlkLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgb3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRPcHRpb25zRXh0ZW5kZWQ8XG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0LFxuICBVSVZhbHVlLFxuICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuPiBleHRlbmRzIEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0gfCBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcjtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+KSA9PiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5UeXBlcyAtIFBsdWdpbi1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxQbHVnaW5UeXBlcyBleHRlbmRzIFBsdWdpblR5cGVzQmFzZT4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVib3VuY2UgdGltZW91dCBmb3Igc2F2aW5nIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVib3VuY2UgdGltZW91dCBmb3Igc2F2aW5nIHNldHRpbmdzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBzYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xuICAgIGNvbnN0IERFRkFVTFQgPSAyXzAwMDtcbiAgICByZXR1cm4gREVGQVVMVDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jRXZlbnRzOiBBc3luY0V2ZW50cztcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50c0NvbXBvbmVudDogQXN5bmNFdmVudHNDb21wb25lbnQ7XG4gIHByaXZhdGUgc2F2ZVNldHRpbmdzRGVib3VuY2VkOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuXG4gIHByaXZhdGUgZ2V0IHBsdWdpblNldHRpbmdzKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4ge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuc2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzIGFzIEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgcGx1Z2luOiBFeHRyYWN0UGx1Z2luPFBsdWdpblR5cGVzPikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gICAgdGhpcy5jb250YWluZXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgZ2V0UGx1Z2luSWQoKSwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkID0gZGVib3VuY2UoXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpKSxcbiAgICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICApO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQgPSBuZXcgQXN5bmNFdmVudHNDb21wb25lbnQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzID0gbmV3IEFzeW5jRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnRcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBDb25kaXRpb25hbEtleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPiwgVUlWYWx1ZT4sXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPFVJVmFsdWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+LCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz5bUHJvcGVydHlOYW1lXT5cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICB0eXBlIFBsdWdpblNldHRpbmdzID0gRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPjtcbiAgICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHtcbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPik6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5OiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlczogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zRXh0OiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KHZhbHVlQ29tcG9uZW50KT8udmFsaWRhdG9yRWw7XG5cbiAgICBjb25zdCB0ZXh0QmFzZWRDb21wb25lbnQgPSBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSh2YWx1ZUNvbXBvbmVudCk7XG5cbiAgICBjb25zdCByZWFkb25seVZhbHVlID0gdGhpcy5wbHVnaW5TZXR0aW5nc1twcm9wZXJ0eU5hbWVdIGFzIFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+O1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9ICh0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuZGVmYXVsdFNldHRpbmdzIGFzIFBsdWdpblNldHRpbmdzKVtwcm9wZXJ0eU5hbWVdIGFzIFByb3BlcnR5VHlwZTtcbiAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LnNldFBsYWNlaG9sZGVyVmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIoZGVmYXVsdFZhbHVlIGFzIFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+KSk7XG5cbiAgICBsZXQgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk7XG4gICAgfSkpO1xuXG4gICAgbGV0IHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcyAmJiBkZWVwRXF1YWwocmVhZG9ubHlWYWx1ZSwgZGVmYXVsdFZhbHVlKSkge1xuICAgICAgdGV4dEJhc2VkQ29tcG9uZW50LmVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlQ29tcG9uZW50LnNldFZhbHVlKG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyKHJlYWRvbmx5VmFsdWUpKTtcbiAgICB9XG5cbiAgICBsZXQgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgY29uc3QgVVBEQVRFX1ZBTElEQVRPUl9FTEVNRU5UX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTAwO1xuICAgIGNvbnN0IHVwZGF0ZVZhbGlkYXRvckVsZW1lbnREZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk7XG4gICAgICB9KTtcbiAgICB9LCBVUERBVEVfVkFMSURBVE9SX0VMRU1FTlRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChzaG91bGRTa2lwT25DaGFuZ2UpIHtcbiAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnBsdWdpblNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG4gICAgICBsZXQgbmV3VmFsdWU6IFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSAmJiBvcHRpb25zRXh0LnNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5KSB7XG4gICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGNvbnZlcnRlZFZhbHVlO1xuICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYXdhaXQgdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgbmV3VmFsdWUpO1xuICAgICAgICAgIGlmICh0ZXh0QmFzZWRDb21wb25lbnQgJiYgb3B0aW9uc0V4dC5zaG91bGRTaG93UGxhY2Vob2xkZXJGb3JEZWZhdWx0VmFsdWVzICYmICF0ZXh0QmFzZWRDb21wb25lbnQuaXNFbXB0eSgpICYmIGRlZXBFcXVhbChuZXdWYWx1ZSwgZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50RGVib3VuY2VkKCk7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxlbWVudERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50RGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50RGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci52YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk7XG5cbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0b3JFbGVtZW50KCk6IHZvaWQge1xuICAgICAgaWYgKHNob3VsZEVtcHR5T25CbHVyICYmICF2YWxpZGF0b3JFbGVtZW50Py5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LmVtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25NZXNzYWdlID09PSAnJykge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWxlbWVudC52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eSh2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICBpZiAob3B0aW9uc0V4dC5zaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2UgJiYgdmFsaWRhdG9yRWxlbWVudC5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgIHNldFRvb2x0aXAodmFsaWRhdG9yRWxlbWVudCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIub24oJ3NhdmVTZXR0aW5ncycsIHRoaXMub25TYXZlU2V0dGluZ3MuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGhpZGUoKTogdm9pZCB7XG4gICAgc3VwZXIuaGlkZSgpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkLmNhbmNlbCgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQudW5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwLnNldHRpbmcub3BlblRhYih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfbG9hZGVkU2V0dGluZ3MgLSBUaGUgbG9hZGVkIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gX2lzSW5pdGlhbExvYWQgLSBXaGV0aGVyIHRoZSBzZXR0aW5ncyBhcmUgYmVpbmcgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9hZFNldHRpbmdzKF9sb2FkZWRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPiwgX2lzSW5pdGlhbExvYWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzLnZhbGlkYXRpb25NZXNzYWdlcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFzeW5jRXZlbnRzLnRyaWdnZXJBc3luYygndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBY0E7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBZVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsaUNBQWlDO0FBQzFDLFNBQVMsbUJBQW1CO0FBS3JCLE1BQU0sdUJBQXVCO0FBNEQ3QixNQUFlLDhCQUFtRSxpQkFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFrQ2pHLFlBQTRCLFFBQW9DO0FBQ3JFLFVBQU0sT0FBTyxLQUFLLE1BQU07QUFEUztBQUVqQyxTQUFLLFlBQVksU0FBUyxTQUFTLGFBQWEsWUFBWSxHQUFHLFNBQVMsaUJBQWlCO0FBQ3pGLFNBQUssd0JBQXdCO0FBQUEsTUFDM0IsbUJBQW1CLE1BQU0sS0FBSyxPQUFPLGdCQUFnQixXQUFXLG9CQUFvQixDQUFDO0FBQUEsTUFDckYsS0FBSztBQUFBLElBQ1A7QUFDQSxTQUFLLHVCQUF1QixJQUFJLHFCQUFxQjtBQUNyRCxTQUFLLGNB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
274
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVib3VuY2VyIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBhdXRvVXBkYXRlLFxuICBjb21wdXRlUG9zaXRpb25cbn0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4uL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL1ZhbGlkYXRpb25NZXNzYWdlLnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW4sXG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyLFxuICBQbHVnaW5UeXBlc0Jhc2Vcbn0gZnJvbSAnLi9QbHVnaW5UeXBlc0Jhc2UudHMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQge1xuICBub29wLFxuICBub29wQXN5bmNcbn0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgdG9QeCB9IGZyb20gJy4uLy4uL0hUTUxFbGVtZW50LnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL09iamVjdC50cyc7XG5pbXBvcnQgeyBBc3luY0V2ZW50c0NvbXBvbmVudCB9IGZyb20gJy4uL0NvbXBvbmVudHMvQXN5bmNFdmVudHNDb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuLi9Db21wb25lbnRzL1NldHRpbmdDb21wb25lbnRzL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9Db21wb25lbnRzL1NldHRpbmdDb21wb25lbnRzL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vVmFsaWRhdGlvbk1lc3NhZ2UudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuL1BsdWdpbklkLnRzJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBwYXNzZWQgdG8gdGhlIHtAbGluayBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnNhdmVUb0ZpbGV9IG1ldGhvZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNBVkVfVE9fRklMRV9DT05URVhUID0gJ1BsdWdpblNldHRpbmdzVGFiJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/KG5ld1ZhbHVlOiBSZWFkb25seURlZXA8VD4sIG9sZFZhbHVlOiBSZWFkb25seURlZXA8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uc0V4dGVuZGVkPFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCxcbiAgVUlWYWx1ZSxcbiAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbj4gZXh0ZW5kcyBCaW5kT3B0aW9uczxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdIHwgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHBsdWdpblNldHRpbmdzVmFsdWU6IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPikgPT4gVUlWYWx1ZTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBwbHVnaW4gc2V0dGluZ3MgdGFicyBpbiBPYnNpZGlhbi5cbiAqIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBiaW5kaW5nIHZhbHVlIGNvbXBvbmVudHMgdG8gcGx1Z2luIHNldHRpbmdzIGFuZCBoYW5kbGluZyBjaGFuZ2VzLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luVHlwZXMgLSBQbHVnaW4tc3BlY2lmaWMgdHlwZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8UGx1Z2luVHlwZXMgZXh0ZW5kcyBQbHVnaW5UeXBlc0Jhc2U+IGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGlzIG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBERUZBVUxUID0gMl8wMDA7XG4gICAgcmV0dXJuIERFRkFVTFQ7XG4gIH1cblxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50czogQXN5bmNFdmVudHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXN5bmNFdmVudHNDb21wb25lbnQ6IEFzeW5jRXZlbnRzQ29tcG9uZW50O1xuICBwcml2YXRlIHNhdmVTZXR0aW5nc0RlYm91bmNlZDogRGVib3VuY2VyPFtdLCB2b2lkPjtcblxuICBwcml2YXRlIGdldCBwbHVnaW5TZXR0aW5ncygpOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyBhcyBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogRXh0cmFjdFBsdWdpbjxQbHVnaW5UeXBlcz4pIHtcbiAgICBzdXBlcihwbHVnaW4uYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMuY29udGFpbmVyRWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuTGlicmFyeU5hbWUsIGdldFBsdWdpbklkKCksIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZCA9IGRlYm91bmNlKFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHRoaXMucGx1Z2luLnNldHRpbmdzTWFuYWdlci5zYXZlVG9GaWxlKFNBVkVfVE9fRklMRV9DT05URVhUKSksXG4gICAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlVGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50ID0gbmV3IEFzeW5jRXZlbnRzQ29tcG9uZW50KCk7XG4gICAgdGhpcy5hc3luY0V2ZW50cyA9IG5ldyBBc3luY0V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogQ29uZGl0aW9uYWxLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4sIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM6IEJpbmRPcHRpb25zRXh0ZW5kZWQ8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPiwgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+W1Byb3BlcnR5TmFtZV0+XG4gICk6IFRWYWx1ZUNvbXBvbmVudCB7XG4gICAgdHlwZSBQbHVnaW5TZXR0aW5ncyA9IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz47XG4gICAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7XG4gICAgICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogVUlWYWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGUsXG4gICAgICBvbkNoYW5nZWQ6IG5vb3AsXG4gICAgICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pOiBVSVZhbHVlID0+IHZhbHVlIGFzIFVJVmFsdWUsXG4gICAgICBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eTogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM6IHRydWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gICAgY29uc3QgdmFsaWRhdG9yRWwgPSBnZXRWYWxpZGF0b3JDb21wb25lbnQodmFsdWVDb21wb25lbnQpPy52YWxpZGF0b3JFbDtcblxuICAgIGNvbnN0IHRleHRCYXNlZENvbXBvbmVudCA9IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlKHZhbHVlQ29tcG9uZW50KTtcblxuICAgIGNvbnN0IHJlYWRvbmx5VmFsdWUgPSB0aGlzLnBsdWdpblNldHRpbmdzW3Byb3BlcnR5TmFtZV0gYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT47XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gKHRoaXMucGx1Z2luLnNldHRpbmdzTWFuYWdlci5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3MpW3Byb3BlcnR5TmFtZV0gYXMgUHJvcGVydHlUeXBlO1xuICAgIHRleHRCYXNlZENvbXBvbmVudD8uc2V0UGxhY2Vob2xkZXJWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihkZWZhdWx0VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pKTtcblxuICAgIGxldCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xuICAgIGxldCB0b29sdGlwRWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHRvb2x0aXBDb250ZW50RWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbCgpO1xuICAgIH0pKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbCgpO1xuICAgICAgfSk7XG4gICAgfSwgVVBEQVRFX1ZBTElEQVRPUl9FTF9USU1FT1VUX0lOX01JTExJU0VDT05EUyk7XG5cbiAgICB2YWx1ZUNvbXBvbmVudC5vbkNoYW5nZShhc3luYyAodWlWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHNob3VsZFNraXBPbkNoYW5nZSkge1xuICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMucGx1Z2luU2V0dGluZ3NbcHJvcGVydHlOYW1lXTtcbiAgICAgIGxldCBuZXdWYWx1ZTogUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpICYmIG9wdGlvbnNFeHQuc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IG9wdGlvbnNFeHQuY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgICBpZiAoaXNWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcihjb252ZXJ0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IGNvbnZlcnRlZFZhbHVlLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhd2FpdCB0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgIXRleHRCYXNlZENvbXBvbmVudC5pc0VtcHR5KCkgJiYgZGVlcEVxdWFsKG5ld1ZhbHVlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci52YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbCgpO1xuXG4gICAgaWYgKHZhbGlkYXRvckVsPy5wYXJlbnRFbGVtZW50KSB7XG4gICAgICB0b29sdGlwRWwgPSB2YWxpZGF0b3JFbC5wYXJlbnRFbGVtZW50LmNyZWF0ZURpdih7IGNsczogJ3Rvb2x0aXAnIH0pO1xuICAgICAgdG9vbHRpcENvbnRlbnRFbCA9IHRvb2x0aXBFbC5jcmVhdGVTcGFuKCk7XG4gICAgICB0b29sdGlwRWwuY3JlYXRlRGl2KHsgY2xzOiAndG9vbHRpcC1hcnJvdycgfSk7XG4gICAgICB0b29sdGlwRWwuaGlkZSgpO1xuXG4gICAgICBhdXRvVXBkYXRlKFxuICAgICAgICB2YWxpZGF0b3JFbCxcbiAgICAgICAgdG9vbHRpcEVsLFxuICAgICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICghdG9vbHRpcEVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBhd2FpdCBjb21wdXRlUG9zaXRpb24odmFsaWRhdG9yRWwsIHRvb2x0aXBFbCk7XG4gICAgICAgICAgdG9vbHRpcEVsLnNldENzc1Byb3BzKHtcbiAgICAgICAgICAgIGxlZnQ6IHRvUHgoeCksXG4gICAgICAgICAgICB0b3A6IHRvUHgoeSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgICBpZiAoc2hvdWxkRW1wdHlPbkJsdXIgJiYgIXZhbGlkYXRvckVsPy5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LmVtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZSA9PT0gJycpIHtcbiAgICAgICAgdmFsaWRhdG9yRWwuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xuICAgICAgICB2YWxpZGF0b3JFbC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWwudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KHZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB0b29sdGlwRWw/LnRvZ2dsZSghIXZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgICAgaWYgKHRvb2x0aXBDb250ZW50RWwpIHtcbiAgICAgICAgICB0b29sdGlwQ29udGVudEVsLnRleHRDb250ZW50ID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgc2V0VG9vbHRpcCh2YWxpZGF0b3JFbCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIub24oJ3NhdmVTZXR0aW5ncycsIHRoaXMub25TYXZlU2V0dGluZ3MuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGhpZGUoKTogdm9pZCB7XG4gICAgc3VwZXIuaGlkZSgpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkLmNhbmNlbCgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQudW5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwLnNldHRpbmcub3BlblRhYih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfbG9hZGVkU2V0dGluZ3MgLSBUaGUgbG9hZGVkIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gX2lzSW5pdGlhbExvYWQgLSBXaGV0aGVyIHRoZSBzZXR0aW5ncyBhcmUgYmVpbmcgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9hZFNldHRpbmdzKF9sb2FkZWRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPiwgX2lzSW5pdGlhbExvYWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzLnZhbGlkYXRpb25NZXNzYWdlcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFzeW5jRXZlbnRzLnRyaWdnZXJBc3luYygndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBY0E7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFlUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsaUNBQWlDO0FBQzFDLFNBQVMsbUJBQW1CO0FBS3JCLE1BQU0sdUJBQXVCO0FBNEQ3QixNQUFlLDhCQUFtRSxpQkFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFrQ2pHLFlBQTRCLFFBQW9DO0FBQ3JFLFVBQU0sT0FBTyxLQUFLLE1BQU07QUFEUztBQUVqQyxTQUFLLFlBQVksU0FBUyxTQUFTLGFBQWEsWUFBWSxHQUFHLFNBQVMsaUJBQWlCO0FBQ3pGLFNBQUssd0JBQXdCO0FBQUEsTUFDM0IsbUJBQW1CLE1BQU0sS0FBSyxPQUFPLGdCQUFnQixXQUFXLG9CQUFvQixDQUFDO0FBQUEsTUFDckYsS0FBSztBQUFBLElBQ1A7QUFDQSxTQUFLLHVCQUF1QixJQUFJLHFCQUFxQjtBQUNyRCxTQUFLLGNBQWMsSUFBSSxZQUFZO0FBQUEsRUFDckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFyQ0EsSUFBVyxTQUFrQjtBQUMzQixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBYyw0Q0FBb0Q7QUFDaEUsVUFBTSxVQUFVO0FBQ2hCLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFUSxVQUFVO0FBQUEsRUFDRDtBQUFBLEVBQ0E7QUFBQSxFQUNUO0FBQUEsRUFFUixJQUFZLGlCQUFxRDtBQUMvRCxXQUFPLEtBQUssT0FBTyxnQkFBZ0IsZ0JBQWdCO0FBQUEsRUFDckQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFtRU8sS0FLTCxnQkFDQSxjQUNBLFNBQ2lCO0FBR2pCLFVBQU0sa0JBQXdGO0FBQUEsTUFDNUYseUNBQXlDLENBQUMsVUFBaUM7QUFBQSxNQUMzRSxXQUFXO0FBQUEsTUFDWCx5Q0FBeUMsQ0FBQyxVQUErQztBQUFBLE1BQ3pGLHdDQUF3QztBQUFBLE1BQ3hDLHVDQUF1QztBQUFBLE1BQ3ZDLDZCQUE2QjtBQUFBLElBQy9CO0FBRUEsVUFBTSxhQUFtRixFQUFFLEdBQUcsaUJBQWlCLEdBQUcsUUFBUTtBQUUxSCxVQUFNLGNBQWMsc0JBQXNCLGNBQWMsR0FBRztBQUUzRCxVQUFNLHFCQUFxQiwyQkFBMkIsY0FBYztBQUVwRSxVQUFNLGdCQUFnQixLQUFLLGVBQWUsWUFBWTtBQUN0RCxVQUFNLGVBQWdCLEtBQUssT0FBTyxnQkFBZ0IsZ0JBQW1DLFlBQVk7QUFDakcsd0JBQW9CLG9CQUFvQixXQUFXLHdDQUF3QyxZQUEwQyxDQUFDO0FBRXRJLFFBQUk7QUFDSixRQUFJLFlBQWdDO0FBQ3BDLFFBQUksbUJBQXVDO0FBRTNDLFNBQUsscUJBQXFCLG1CQUFtQixLQUFLLEdBQUcsNEJBQTRCLENBQUMscUJBQXFCLDZCQUE2QjtBQUNsSSxVQUFJLGlCQUFpQixxQkFBcUI7QUFDeEM7QUFBQSxNQUNGO0FBRUEsMEJBQW9CO0FBQ3BCLHdCQUFrQjtBQUFBLElBQ3BCLENBQUMsQ0FBQztBQUVGLFFBQUksb0JBQW9CO0FBRXhCLFFBQUksc0JBQXNCLFdBQVcseUNBQXlDLFVBQVUsZUFBZSxZQUFZLEdBQUc7QUFDcEgseUJBQW1CLE1BQU07QUFBQSxJQUMzQixPQUFPO0FBQ0wscUJBQWUsU0FBUyxXQUFXLHdDQUF3QyxhQUFhLENBQUM7QUFBQSxJQUMzRjtBQUVBLFFBQUkscUJBQXFCO0FBQ3pCLFVBQU0sOENBQThDO0FBQ3BELFVBQU0sNkJBQTZCLFNBQVMsTUFBTTtBQUNoRCw0QkFBc0IsTUFBTTtBQUMxQiwwQkFBa0I7QUFBQSxNQUNwQixDQUFDO0FBQUEsSUFDSCxHQUFHLDJDQUEyQztBQUU5QyxtQkFBZSxTQUFTLE9BQU8sWUFBWTtBQUN6QyxVQUFJLG9CQUFvQjtBQUN0Qiw2QkFBcUI7QUFDckI7QUFBQSxNQUNGO0FBRUEsMEJBQW9CO0FBRXBCLFlBQU0sV0FBVyxLQUFLLGVBQWUsWUFBWTtBQUNqRCxVQUFJLFdBQXFDO0FBQ3pDLFVBQUksb0JBQW9CLFFBQVEsS0FBSyxXQUFXLHdDQUF3QztBQUN0RixtQkFBVztBQUNYLDRCQUFvQjtBQUFBLE1BQ3RCLE9BQU87QUFDTCxjQUFNLGlCQUFpQixXQUFXLHdDQUF3QyxPQUFPO0FBQ2pGLFlBQUksMEJBQTBCLGNBQWMsR0FBRztBQUM3Qyw4QkFBb0IsZUFBZTtBQUFBLFFBQ3JDLE9BQU87QUFDTCxxQkFBVztBQUNYLDhCQUFvQixNQUFNLEtBQUssT0FBTyxnQkFBZ0IsWUFBWSxjQUFjLFFBQVE7QUFDeEYsY0FBSSxzQkFBc0IsV0FBVyx5Q0FBeUMsQ0FBQyxtQkFBbUIsUUFBUSxLQUFLLFVBQVUsVUFBVSxZQUFZLEdBQUc7QUFDaEosZ0NBQW9CO0FBQUEsVUFDdEI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUVBLGlDQUEyQjtBQUMzQixVQUFJLGFBQWEsUUFBVztBQUMxQixjQUFNLFdBQVcsVUFBVSxVQUF3QyxRQUFzQztBQUFBLE1BQzNHO0FBQ0EsV0FBSyxzQkFBc0I7QUFBQSxJQUM3QixDQUFDO0FBRUQsaUJBQWEsaUJBQWlCLFNBQVMsTUFBTTtBQUMzQyxpQ0FBMkI7QUFBQSxJQUM3QixDQUFDO0FBQ0QsaUJBQWEsaUJBQWlCLFFBQVEsTUFBTTtBQUMxQyxpQ0FBMkI7QUFBQSxJQUM3QixDQUFDO0FBQ0QsaUJBQWEsaUJBQWlCLFNBQVMsTUFBTTtBQUMzQyw0QkFBc0IsTUFBTTtBQUMxQixtQ0FBMkI7QUFBQSxNQUM3QixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBRUQsd0JBQW9CLEtBQUssT0FBTyxnQkFBZ0IsZ0JBQWdCLG1CQUFtQixZQUFZLEtBQUs7QUFDcEcsc0JBQWtCO0FBRWxCLFFBQUksYUFBYSxlQUFlO0FBQzlCLGtCQUFZLFlBQVksY0FBYyxVQUFVLEVBQUUsS0FBSyxVQUFVLENBQUM7QUFDbEUseUJBQW1CLFVBQVUsV0FBVztBQUN4QyxnQkFBVSxVQUFVLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUM1QyxnQkFBVSxLQUFLO0FBRWY7QUFBQSxRQUNFO0FBQUEsUUFDQTtBQUFBLFFBQ0EsbUJBQW1CLFlBQVk7QUFDN0IsY0FBSSxDQUFDLFdBQVc7QUFDZDtBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLE1BQU0sZ0JBQWdCLGFBQWEsU0FBUztBQUM3RCxvQkFBVSxZQUFZO0FBQUEsWUFDcEIsTUFBTSxLQUFLLENBQUM7QUFBQSxZQUNaLEtBQUssS0FBSyxDQUFDO0FBQUEsVUFDYixDQUFDO0FBQUEsUUFDSCxDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFFQSxXQUFPO0FBRVAsYUFBUyxvQkFBMEI7QUFDakMsVUFBSSxxQkFBcUIsQ0FBQyxhQUFhLGdCQUFnQixHQUFHO0FBQ3hELDRCQUFvQjtBQUNwQixZQUFJLENBQUMsb0JBQW9CLFFBQVEsR0FBRztBQUNsQywrQkFBcUI7QUFDckIsOEJBQW9CLE1BQU07QUFBQSxRQUM1QjtBQUFBLE1BQ0Y7QUFFQSxVQUFJLENBQUMsYUFBYTtBQUNoQjtBQUFBLE1BQ0Y7QUFFQSxVQUFJLHNCQUFzQixJQUFJO0FBQzVCLG9CQUFZLGtCQUFrQixFQUFFO0FBQ2hDLG9CQUFZLGNBQWM7QUFDMUIsNEJBQW9CLFlBQVk7QUFBQSxNQUNsQztBQUVBLGtCQUFZLGtCQUFrQixpQkFBaUI7QUFDL0MsVUFBSSxXQUFXLDZCQUE2QjtBQUMxQyxtQkFBVyxPQUFPLENBQUMsQ0FBQyxpQkFBaUI7QUFDckMsWUFBSSxrQkFBa0I7QUFDcEIsMkJBQWlCLGNBQWM7QUFBQSxRQUNqQztBQUFBLE1BQ0YsV0FBVyxtQkFBbUI7QUFDNUIsbUJBQVcsYUFBYSxpQkFBaUI7QUFBQSxNQUMzQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLZ0IsVUFBZ0I7QUFDOUIsU0FBSyxZQUFZLE1BQU07QUFDdkIsU0FBSyxVQUFVO0FBQ2YsU0FBSyxxQkFBcUIsS0FBSztBQUMvQixTQUFLLHFCQUFxQixtQkFBbUIsS0FBSyxPQUFPLGdCQUFnQixHQUFHLGdCQUFnQixLQUFLLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMzSCxTQUFLLHFCQUFxQixtQkFBbUIsS0FBSyxPQUFPLGdCQUFnQixHQUFHLGdCQUFnQixLQUFLLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUFBLEVBQzdIO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLZ0IsT0FBYTtBQUMzQixVQUFNLEtBQUs7QUFDWCxTQUFLLHNCQUFzQixPQUFPO0FBQ2xDLFNBQUssVUFBVTtBQUNmLFNBQUsscUJBQXFCLE9BQU87QUFDakMsU0FBSyxxQkFBcUIsS0FBSztBQUMvQixzQkFBa0IsTUFBTSxLQUFLLE9BQU8sZ0JBQWdCLFdBQVcsb0JBQW9CLENBQUM7QUFBQSxFQUN0RjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sT0FBYTtBQUNsQixTQUFLLElBQUksUUFBUSxRQUFRLElBQUk7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTQSxNQUFnQixlQUFlLGlCQUFvRSxnQkFBd0M7QUFDekksU0FBSyxRQUFRO0FBQ2IsVUFBTSxVQUFVO0FBQUEsRUFDbEI7QUFBQSxFQVVRLEdBQ04sTUFDQSxVQUNBLFNBQ2U7QUFDZixXQUFPLEtBQUssWUFBWSxHQUFHLE1BQU0sVUFBVSxPQUFPO0FBQUEsRUFDcEQ7QUFBQSxFQUVBLE1BQWMsZUFDWixhQUNBLGNBQ0EsU0FDZTtBQUNmLFFBQUksWUFBWSxzQkFBc0I7QUFDcEMsaUJBQVcsQ0FBQyxjQUFjLGlCQUFpQixLQUFLLE9BQU8sUUFBUSxZQUFZLGtCQUE0QyxHQUFHO0FBQ3hILGNBQU0sS0FBSyxZQUFZLGFBQWEsNEJBQTRCLGNBQWMsaUJBQWlCO0FBQUEsTUFDakc7QUFDQTtBQUFBLElBQ0Y7QUFFQSxTQUFLLFFBQVE7QUFBQSxFQUNmO0FBQUEsRUFFUSxVQUFnQjtBQUN0QixTQUFLLFlBQVksTUFBTTtBQUN2QixTQUFLLFFBQVE7QUFBQSxFQUNmO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "26.1.3-beta.42",
3
+ "version": "26.1.3-beta.44",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
5
5
  "keywords": [
6
6
  "obsidian"
@@ -443,6 +443,7 @@
443
443
  },
444
444
  "dependencies": {
445
445
  "@eslint/js": "^9.24.0",
446
+ "@floating-ui/dom": "^1.6.13",
446
447
  "@guardian/eslint-plugin-tsdoc-required": "^0.1.3",
447
448
  "@lezer/common": "^1.2.3",
448
449
  "@stylistic/eslint-plugin": "^4.2.0",