obsidian-dev-utils 62.0.0 → 62.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/lib/cjs/array.cjs +1 -1
  3. package/dist/lib/cjs/array.d.cts +2 -0
  4. package/dist/lib/cjs/async.cjs +1 -1
  5. package/dist/lib/cjs/async.d.cts +2 -0
  6. package/dist/lib/cjs/codemirror/state-field-spec.cjs +1 -1
  7. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +2 -0
  8. package/dist/lib/cjs/enum.cjs +1 -1
  9. package/dist/lib/cjs/enum.d.cts +2 -0
  10. package/dist/lib/cjs/html-element.cjs +1 -1
  11. package/dist/lib/cjs/html-element.d.cts +2 -0
  12. package/dist/lib/cjs/library.cjs +1 -1
  13. package/dist/lib/cjs/object-utils.cjs +1 -1
  14. package/dist/lib/cjs/object-utils.d.cts +14 -0
  15. package/dist/lib/cjs/obsidian/app.cjs +1 -1
  16. package/dist/lib/cjs/obsidian/app.d.cts +3 -0
  17. package/dist/lib/cjs/obsidian/async-with-notice.cjs +1 -1
  18. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +3 -1
  19. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +2 -1
  20. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +2 -1
  21. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +6 -1
  22. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +6 -1
  23. package/dist/lib/cjs/obsidian/components/async-component.cjs +3 -3
  24. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +2 -1
  25. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +2 -1
  26. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +3 -1
  27. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +2 -1
  28. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +2 -1
  29. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +3 -1
  30. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +2 -1
  31. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +2 -1
  32. package/dist/lib/cjs/obsidian/dataview.cjs +1 -1
  33. package/dist/lib/cjs/obsidian/dataview.d.cts +10 -2
  34. package/dist/lib/cjs/obsidian/frontmatter.cjs +1 -1
  35. package/dist/lib/cjs/obsidian/frontmatter.d.cts +1 -0
  36. package/dist/lib/cjs/obsidian/loop.cjs +1 -1
  37. package/dist/lib/cjs/obsidian/loop.d.cts +3 -0
  38. package/dist/lib/cjs/obsidian/modals/modal.cjs +1 -1
  39. package/dist/lib/cjs/obsidian/modals/modal.d.cts +3 -0
  40. package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
  41. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +3 -0
  42. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.cjs +2 -1
  43. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +2 -1
  44. package/dist/lib/cjs/obsidian/plugin/components/i18n-component.cjs +2 -1
  45. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +2 -1
  46. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +2 -1
  47. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +2 -1
  48. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +1 -1
  49. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +8 -0
  50. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +2 -2
  51. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +5 -5
  52. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +4 -1
  53. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.d.cts +1 -0
  54. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +4 -2
  55. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +236 -0
  56. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +3 -0
  57. package/dist/lib/cjs/strict-proxy.cjs +1 -1
  58. package/dist/lib/cjs/strict-proxy.d.cts +1 -0
  59. package/dist/lib/cjs/string.cjs +1 -1
  60. package/dist/lib/cjs/string.d.cts +8 -2
  61. package/dist/lib/cjs/transformers/group-transformer.cjs +3 -1
  62. package/dist/lib/cjs/two-way-map.cjs +1 -1
  63. package/dist/lib/cjs/two-way-map.d.cts +2 -0
  64. package/dist/lib/cjs/type-guards.cjs +1 -1
  65. package/dist/lib/cjs/type-guards.d.cts +4 -0
  66. package/dist/lib/esm/array.d.mts +2 -0
  67. package/dist/lib/esm/array.mjs +1 -1
  68. package/dist/lib/esm/async.d.mts +2 -0
  69. package/dist/lib/esm/async.mjs +1 -1
  70. package/dist/lib/esm/codemirror/state-field-spec.d.mts +2 -0
  71. package/dist/lib/esm/enum.d.mts +2 -0
  72. package/dist/lib/esm/enum.mjs +1 -1
  73. package/dist/lib/esm/html-element.d.mts +2 -0
  74. package/dist/lib/esm/html-element.mjs +1 -1
  75. package/dist/lib/esm/library.mjs +1 -1
  76. package/dist/lib/esm/object-utils.d.mts +14 -0
  77. package/dist/lib/esm/object-utils.mjs +1 -1
  78. package/dist/lib/esm/obsidian/app.d.mts +3 -0
  79. package/dist/lib/esm/obsidian/app.mjs +1 -1
  80. package/dist/lib/esm/obsidian/async-with-notice.d.mts +3 -1
  81. package/dist/lib/esm/obsidian/async-with-notice.mjs +1 -1
  82. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +2 -1
  83. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +2 -1
  84. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +6 -1
  85. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +6 -1
  86. package/dist/lib/esm/obsidian/components/async-component.mjs +3 -3
  87. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +2 -1
  88. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +2 -1
  89. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +3 -1
  90. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +2 -1
  91. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +2 -1
  92. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +3 -1
  93. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +2 -1
  94. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +2 -1
  95. package/dist/lib/esm/obsidian/dataview.d.mts +10 -2
  96. package/dist/lib/esm/obsidian/dataview.mjs +1 -1
  97. package/dist/lib/esm/obsidian/frontmatter.d.mts +1 -0
  98. package/dist/lib/esm/obsidian/frontmatter.mjs +1 -1
  99. package/dist/lib/esm/obsidian/loop.d.mts +3 -0
  100. package/dist/lib/esm/obsidian/loop.mjs +1 -1
  101. package/dist/lib/esm/obsidian/modals/modal.d.mts +3 -0
  102. package/dist/lib/esm/obsidian/modals/modal.mjs +1 -1
  103. package/dist/lib/esm/obsidian/modals/select-item.d.mts +3 -0
  104. package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
  105. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +2 -1
  106. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +2 -1
  107. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +2 -1
  108. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +2 -1
  109. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +2 -1
  110. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +2 -1
  111. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +8 -0
  112. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +1 -1
  113. package/dist/lib/esm/obsidian/plugin/plugin.mjs +2 -2
  114. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +5 -5
  115. package/dist/lib/esm/script-utils/linters/eslint-rules/index.d.mts +1 -0
  116. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +3 -1
  117. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +4 -2
  118. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +3 -0
  119. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +131 -0
  120. package/dist/lib/esm/strict-proxy.d.mts +1 -0
  121. package/dist/lib/esm/strict-proxy.mjs +1 -1
  122. package/dist/lib/esm/string.d.mts +8 -2
  123. package/dist/lib/esm/string.mjs +1 -1
  124. package/dist/lib/esm/transformers/group-transformer.mjs +3 -1
  125. package/dist/lib/esm/two-way-map.d.mts +2 -0
  126. package/dist/lib/esm/two-way-map.mjs +1 -1
  127. package/dist/lib/esm/type-guards.d.mts +4 -0
  128. package/dist/lib/esm/type-guards.mjs +1 -1
  129. package/package.json +1 -1
  130. package/script-utils/linters/eslint-rules/require-super-call/package.json +6 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 62.2.0
4
+
5
+ - fix(eslint): handle unresolvable base types in require-super-call rule
6
+ - chore: update libs
7
+
8
+ ## 62.1.0
9
+
10
+ - feat: validate generic types
11
+ - feat: rule that forces super.method()
12
+ - chore: update libs
13
+
3
14
  ## 62.0.0
4
15
 
5
16
  - refactor!: move plugin name to component
@@ -170,4 +170,4 @@ function uniqueInPlace(arr) {
170
170
  unique,
171
171
  uniqueInPlace
172
172
  });
173
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FycmF5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXJyYXkgdXRpbGl0aWVzLlxuICovXG5cbi8qKlxuICogRmlsdGVyIGFuIGFycmF5IGluIHBsYWNlLlxuICpcbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmlsdGVyLlxuICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgdG8gZmlsdGVyIHRoZSBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2U8VD4oYXJyOiBUW10sIHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gIGxldCB3cml0ZUluZGV4ID0gMDtcbiAgZm9yIChsZXQgcmVhZEluZGV4ID0gMDsgcmVhZEluZGV4IDwgbGVuZ3RoOyByZWFkSW5kZXgrKykge1xuICAgIGlmICghT2JqZWN0Lmhhc093bihhcnIsIHJlYWRJbmRleCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnQgPSBhcnJbcmVhZEluZGV4XSBhcyBUO1xuICAgIGlmIChwcmVkaWNhdGUoY3VycmVudCwgcmVhZEluZGV4LCBhcnIpKSB7XG4gICAgICBhcnJbd3JpdGVJbmRleCsrXSA9IGN1cnJlbnQ7XG4gICAgfVxuICB9XG4gIGFyci5sZW5ndGggPSB3cml0ZUluZGV4O1xufVxuXG4vKipcbiAqIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICogQHJldHVybnMgVGhlIGFycmF5IHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KGFycjogcmVhZG9ubHkgVFtdKTogVFtdIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldDxUPigpO1xuICByZXR1cm4gYXJyLmZpbHRlcigodmFsdWUpID0+IHtcbiAgICBpZiAoc2V0Lmhhcyh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2V0LmFkZCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYW4gYXJyYXkgaW4gcGxhY2UuXG4gKlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlSW5QbGFjZShhcnI6IHVua25vd25bXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0PHVua25vd24+KCk7XG4gIGZpbHRlckluUGxhY2UoYXJyLCAodmFsdWUpID0+IHtcbiAgICBpZiAoc2V0Lmhhcyh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2V0LmFkZCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlPLFNBQVMsY0FBaUIsS0FBVSxXQUFtRTtBQUM1RyxRQUFNLFNBQVMsSUFBSTtBQUNuQixNQUFJLGFBQWE7QUFDakIsV0FBUyxZQUFZLEdBQUcsWUFBWSxRQUFRLGFBQWE7QUFDdkQsUUFBSSxDQUFDLE9BQU8sT0FBTyxLQUFLLFNBQVMsR0FBRztBQUNsQztBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQVUsSUFBSSxTQUFTO0FBQzdCLFFBQUksVUFBVSxTQUFTLFdBQVcsR0FBRyxHQUFHO0FBQ3RDLFVBQUksWUFBWSxJQUFJO0FBQUEsSUFDdEI7QUFBQSxFQUNGO0FBQ0EsTUFBSSxTQUFTO0FBQ2Y7QUFRTyxTQUFTLE9BQVUsS0FBd0I7QUFDaEQsUUFBTSxNQUFNLG9CQUFJLElBQU87QUFDdkIsU0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVO0FBQzNCLFFBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksSUFBSSxLQUFLO0FBQ2IsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIO0FBT08sU0FBUyxjQUFjLEtBQXNCO0FBQ2xELFFBQU0sTUFBTSxvQkFBSSxJQUFhO0FBQzdCLGdCQUFjLEtBQUssQ0FBQyxVQUFVO0FBQzVCLFFBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksSUFBSSxLQUFLO0FBQ2IsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FycmF5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXJyYXkgdXRpbGl0aWVzLlxuICovXG5cbi8qKlxuICogRmlsdGVyIGFuIGFycmF5IGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBhcnJheSBlbGVtZW50cy5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmlsdGVyLlxuICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgdG8gZmlsdGVyIHRoZSBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2U8VD4oYXJyOiBUW10sIHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gIGxldCB3cml0ZUluZGV4ID0gMDtcbiAgZm9yIChsZXQgcmVhZEluZGV4ID0gMDsgcmVhZEluZGV4IDwgbGVuZ3RoOyByZWFkSW5kZXgrKykge1xuICAgIGlmICghT2JqZWN0Lmhhc093bihhcnIsIHJlYWRJbmRleCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnQgPSBhcnJbcmVhZEluZGV4XSBhcyBUO1xuICAgIGlmIChwcmVkaWNhdGUoY3VycmVudCwgcmVhZEluZGV4LCBhcnIpKSB7XG4gICAgICBhcnJbd3JpdGVJbmRleCsrXSA9IGN1cnJlbnQ7XG4gICAgfVxuICB9XG4gIGFyci5sZW5ndGggPSB3cml0ZUluZGV4O1xufVxuXG4vKipcbiAqIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYW4gYXJyYXkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGFycmF5IGVsZW1lbnRzLlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICogQHJldHVybnMgVGhlIGFycmF5IHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KGFycjogcmVhZG9ubHkgVFtdKTogVFtdIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldDxUPigpO1xuICByZXR1cm4gYXJyLmZpbHRlcigodmFsdWUpID0+IHtcbiAgICBpZiAoc2V0Lmhhcyh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2V0LmFkZCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYW4gYXJyYXkgaW4gcGxhY2UuXG4gKlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlSW5QbGFjZShhcnI6IHVua25vd25bXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0PHVua25vd24+KCk7XG4gIGZpbHRlckluUGxhY2UoYXJyLCAodmFsdWUpID0+IHtcbiAgICBpZiAoc2V0Lmhhcyh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2V0LmFkZCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFPLFNBQVMsY0FBaUIsS0FBVSxXQUFtRTtBQUM1RyxRQUFNLFNBQVMsSUFBSTtBQUNuQixNQUFJLGFBQWE7QUFDakIsV0FBUyxZQUFZLEdBQUcsWUFBWSxRQUFRLGFBQWE7QUFDdkQsUUFBSSxDQUFDLE9BQU8sT0FBTyxLQUFLLFNBQVMsR0FBRztBQUNsQztBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQVUsSUFBSSxTQUFTO0FBQzdCLFFBQUksVUFBVSxTQUFTLFdBQVcsR0FBRyxHQUFHO0FBQ3RDLFVBQUksWUFBWSxJQUFJO0FBQUEsSUFDdEI7QUFBQSxFQUNGO0FBQ0EsTUFBSSxTQUFTO0FBQ2Y7QUFTTyxTQUFTLE9BQVUsS0FBd0I7QUFDaEQsUUFBTSxNQUFNLG9CQUFJLElBQU87QUFDdkIsU0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVO0FBQzNCLFFBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksSUFBSSxLQUFLO0FBQ2IsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIO0FBT08sU0FBUyxjQUFjLEtBQXNCO0FBQ2xELFFBQU0sTUFBTSxvQkFBSSxJQUFhO0FBQzdCLGdCQUFjLEtBQUssQ0FBQyxVQUFVO0FBQzVCLFFBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksSUFBSSxLQUFLO0FBQ2IsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -6,6 +6,7 @@
6
6
  /**
7
7
  * Filter an array in place.
8
8
  *
9
+ * @typeParam T - The type of the array elements.
9
10
  * @param arr - The array to filter.
10
11
  * @param predicate - The predicate to filter the array.
11
12
  */
@@ -13,6 +14,7 @@ export declare function filterInPlace<T>(arr: T[], predicate: (value: T, index:
13
14
  /**
14
15
  * Remove duplicates from an array.
15
16
  *
17
+ * @typeParam T - The type of the array elements.
16
18
  * @param arr - The array to remove duplicates from.
17
19
  * @returns The array with duplicates removed.
18
20
  */
@@ -478,4 +478,4 @@ async function toArray(iter) {
478
478
  timeout,
479
479
  toArray
480
480
  });
481
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIGFib3J0U2lnbmFsQW55LFxuICBhYm9ydFNpZ25hbE5ldmVyLFxuICBhYm9ydFNpZ25hbFRpbWVvdXQsXG4gIHdhaXRGb3JBYm9ydFxufSBmcm9tICcuL2Fib3J0LWNvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgZ2V0TGliRGVidWdnZXIsXG4gIHByaW50V2l0aFN0YWNrVHJhY2Vcbn0gZnJvbSAnLi9kZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZ2V0U3RhY2tUcmFjZSxcbiAgcHJpbnRFcnJvcixcbiAgU2lsZW50RXJyb3Jcbn0gZnJvbSAnLi9lcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGFzc2VydE5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuXG4vKipcbiAqIEEgdHlwZSByZXByZXNlbnRpbmcgYSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGEge0BsaW5rIFByb21pc2V9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc29sdmU8VD4gPSB1bmRlZmluZWQgZXh0ZW5kcyBUID8gKHZhbHVlPzogUHJvbWlzZUxpa2U8VD4gfCBUKSA9PiB2b2lkXG4gIDogKHZhbHVlOiBQcm9taXNlTGlrZTxUPiB8IFQpID0+IHZvaWQ7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGFib3J0IHNpZ25hbCB0byBjYW5jZWwgdGhlIHJldHJ5IG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEEgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gcmV0cnkgYXR0ZW1wdHMuXG4gICAqL1xuICByZWFkb25seSByZXRyeURlbGF5SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIGZ1bmN0aW9uIG9uIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmV0cnlPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB1cCBvbiByZXRyeWluZy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGVycm9yIGhhbmRsZXIgdG8gYSB7QGxpbmsgUHJvbWlzZX0gdGhhdCBjYXRjaGVzIGFueSBlcnJvcnMgYW5kIGVtaXRzIGFuIGFzeW5jIGVycm9yIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBhc3luY0ZuIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciB0by5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBjb21wbGV0ZXMgb3IgZW1pdHMgYXN5bmMgZXJyb3IgZXZlbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRFcnJvckhhbmRsZXIoYXN5bmNGbjogKCkgPT4gUHJvbWlzZTx1bmtub3duPiwgc3RhY2tUcmFjZT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBzdGFja1RyYWNlID8/PSBnZXRTdGFja1RyYWNlKDEpO1xuICB0cnkge1xuICAgIGF3YWl0IGFzeW5jRm4oKTtcbiAgfSBjYXRjaCAoYXN5bmNFcnJvcikge1xuICAgIGNvbnN0IHdyYXBwZWRFcnJvciA9IG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLCBzdGFja1RyYWNlLCBhc3luY0Vycm9yKTtcbiAgICBpZiAoaGFuZGxlU2lsZW50RXJyb3Iod3JhcHBlZEVycm9yKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbWl0QXN5bmNFcnJvckV2ZW50KHdyYXBwZWRFcnJvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBGaWx0ZXJzIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5LCBrZWVwaW5nIG9ubHkgdGhlIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgcHJvdmlkZWQgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmlsdGVyLlxuICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gdGVzdCBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgZWxlbWVudHMgdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0ZpbHRlcjxUPihhcnI6IFRbXSwgcHJlZGljYXRlOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8Ym9vbGVhbj4pOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCBhbnM6IFRbXSA9IFtdO1xuXG4gIGNvbnN0IGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oYXJyLCBpKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IGFycltpXSBhcyBUO1xuICAgIGlmIChhd2FpdCBwcmVkaWNhdGUoaXRlbSwgaSwgYXJyKSkge1xuICAgICAgYW5zLnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5IGluIHBsYWNlLCBrZWVwaW5nIG9ubHkgdGhlIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgcHJvdmlkZWQgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmlsdGVyLlxuICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gdGVzdCBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFycmF5IGlzIGZpbHRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNGaWx0ZXJJblBsYWNlPFQ+KGFycjogVFtdLCBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxib29sZWFuPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICBsZXQgd3JpdGVJbmRleCA9IDA7XG4gIGZvciAobGV0IHJlYWRJbmRleCA9IDA7IHJlYWRJbmRleCA8IGxlbmd0aDsgcmVhZEluZGV4KyspIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oYXJyLCByZWFkSW5kZXgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gYXJyW3JlYWRJbmRleF0gYXMgVDtcbiAgICBpZiAoYXdhaXQgcHJlZGljYXRlKGN1cnJlbnQsIHJlYWRJbmRleCwgYXJyKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgICAgYXJyW3dyaXRlSW5kZXgrK10gPSBjdXJyZW50O1xuICAgIH1cbiAgfVxuICBhcnIubGVuZ3RoID0gd3JpdGVJbmRleDtcbn1cblxuLyoqXG4gKiBNYXBzIG92ZXIgYW4gYXJyYXkgYXN5bmNocm9ub3VzbHksIGFwcGx5aW5nIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQsIGFuZCB0aGVuIGZsYXR0ZW5zIHRoZSByZXN1bHRzIGludG8gYSBzaW5nbGUgYXJyYXkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIGlucHV0IGFycmF5LlxuICogQHR5cGVQYXJhbSBVIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIG91dHB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gbWFwIG92ZXIgYW5kIGZsYXR0ZW4uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGEgZmxhdHRlbmVkIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmxhdE1hcDxULCBVPihhcnI6IFRbXSwgY2FsbGJhY2s6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxVW10+KTogUHJvbWlzZTxVW10+IHtcbiAgcmV0dXJuIChhd2FpdCBhc3luY01hcChhcnIsIGNhbGxiYWNrKSkuZmxhdCgpO1xufVxuXG4vKipcbiAqIE1hcHMgb3ZlciBhbiBhcnJheSBhc3luY2hyb25vdXNseSwgYXBwbHlpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGVhY2ggZWxlbWVudC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAdHlwZVBhcmFtIFUgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgb3V0cHV0IGFycmF5LlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byBtYXAgb3Zlci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNNYXA8VCwgVT4oYXJyOiBUW10sIGNhbGxiYWNrOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8VT4pOiBQcm9taXNlPFVbXT4ge1xuICByZXR1cm4gYXdhaXQgcHJvbWlzZUFsbFNlcXVlbnRpYWxseShhcnIubWFwKGNhbGxiYWNrKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGEgc3luY2hyb25vdXMgb25lIGJ5IGF1dG9tYXRpY2FsbHkgaGFuZGxpbmcgdGhlIFByb21pc2UgcmVqZWN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHBhcmFtIGFzeW5jRnVuYyAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBpbiBhIHN5bmNocm9ub3VzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBc3luY1RvU3luYzxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihhc3luY0Z1bmM6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPHVua25vd24+LCBzdGFja1RyYWNlPzogc3RyaW5nKTogKC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWQge1xuICBzdGFja1RyYWNlID8/PSBnZXRTdGFja1RyYWNlKDEpO1xuICByZXR1cm4gKC4uLmFyZ3M6IEFyZ3MpOiB2b2lkID0+IHtcbiAgICBhc3NlcnROb25OdWxsYWJsZShzdGFja1RyYWNlKTtcbiAgICBjb25zdCBpbm5lclN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKDEpO1xuICAgIHN0YWNrVHJhY2UgPSBgJHtzdGFja1RyYWNlfVxcbiAgICBhdCAtLS0gY29udmVydEFzeW5jVG9TeW5jIC0tLSAoMClcXG4ke2lubmVyU3RhY2tUcmFjZX1gO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGFzeW5jRnVuYyguLi5hcmdzKSwgc3RhY2tUcmFjZSk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgb25lIGJ5IHdyYXBwaW5nIGl0IGluIGEge0BsaW5rIFByb21pc2V9LlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuXG4gKiBAcGFyYW0gc3luY0ZuIC0gVGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGFuIGFzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3luY1RvQXN5bmM8QXJncyBleHRlbmRzIHVua25vd25bXSwgUmVzdWx0PihzeW5jRm46ICguLi5hcmdzOiBBcmdzKSA9PiBSZXN1bHQpOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIGFzeW5jICguLi5hcmdzOiBBcmdzKTogUHJvbWlzZTxSZXN1bHQ+ID0+IHtcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gc3luY0ZuKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBzaWxlbnQgZXJyb3IuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIHRvIGhhbmRsZS5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGVycm9yIGlzIGEgc2lsZW50IGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlU2lsZW50RXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgbGV0IGNhdXNlID0gZXJyb3I7XG4gIHdoaWxlICghKGNhdXNlIGluc3RhbmNlb2YgU2lsZW50RXJyb3IpKSB7XG4gICAgaWYgKCEoY2F1c2UgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjYXVzZSA9IGNhdXNlLmNhdXNlO1xuICB9XG5cbiAgZ2V0TGliRGVidWdnZXIoJ0FzeW5jOmhhbmRsZVNpbGVudEVycm9yJykoZXJyb3IpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBJZ25vcmVzIGFuIGVycm9yIHRoYXQgaXMgdGhyb3duIGJ5IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIEFsd2F5cyBgdW5kZWZpbmVkYC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGNvbXBsZXRlcyBvciBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yKHByb21pc2U6IFByb21pc2U8dW5rbm93bj4sIGZhbGxiYWNrVmFsdWU/OiB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+O1xuLyoqXG4gKiBJbnZva2VzIGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gaWdub3JlIHRoZSBlcnJvciBvZi5cbiAqIEBwYXJhbSBmYWxsYmFja1ZhbHVlIC0gVGhlIHZhbHVlIHRvIHJldHVybiBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gb3IgdGhlIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yPFQ+KHByb21pc2U6IFByb21pc2U8VD4sIGZhbGxiYWNrVmFsdWU6IFQpOiBQcm9taXNlPFQ+O1xuLyoqXG4gKiBJZ25vcmVzIGFuIGVycm9yIHRoYXQgaXMgdGhyb3duIGJ5IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gaWdub3JlIHRoZSBlcnJvciBvZi5cbiAqIEBwYXJhbSBmYWxsYmFja1ZhbHVlIC0gVGhlIHZhbHVlIHRvIHJldHVybiBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gb3IgdGhlIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yPFQ+KHByb21pc2U6IFByb21pc2U8VD4sIGZhbGxiYWNrVmFsdWU/OiBUKTogUHJvbWlzZTxUIHwgdm9pZD4ge1xuICBjb25zdCBpZ25vcmVFcnJvckRlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ0FzeW5jOmlnbm9yZUVycm9yJyk7XG4gIGNvbnN0IHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKDEpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBwcm9taXNlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWdub3JlRXJyb3JEZWJ1Z2dlcignSWdub3JlZCBlcnJvcicsIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoJ0lnbm9yZWQgZXJyb3InLCBzdGFja1RyYWNlLCBlKSk7XG4gICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2VzIGEge0BsaW5rIFByb21pc2V9IGFuZCBzYWZlbHkgaGFuZGxlcyBhbnkgZXJyb3JzIGJ5IGNhdGNoaW5nIHRoZW0gYW5kIGVtaXR0aW5nIGFuIGFzeW5jIGVycm9yIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBhc3luY0ZuIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBpbnZva2Ugc2FmZWx5LlxuICogQHBhcmFtIHN0YWNrVHJhY2UgLSBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jRm46ICgpID0+IFByb21pc2FibGU8dW5rbm93bj4sIHN0YWNrVHJhY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcblxuICBsZXQgcmVzdWx0OiB1bmtub3duO1xuICB0cnkge1xuICAgIHJlc3VsdCA9IGFzeW5jRm4oKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZCwgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnMgLS0gV2UgbmVlZCB0byBmaXJlLWFuZC1mb3JnZXQuIFJlLXJlamVjdGluZyB0aGUgb3JpZ2luYWwgY2F1Z2h0IGVycm9yIGFzLWlzLlxuICAgIHZvaWQgYWRkRXJyb3JIYW5kbGVyKCgpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSwgc3RhY2tUcmFjZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZCAtLSBXZSBuZWVkIHRvIGZpcmUtYW5kLWZvcmdldC5cbiAgICB2b2lkIGFkZEVycm9ySGFuZGxlcigoKSA9PiByZXN1bHQsIHN0YWNrVHJhY2UpO1xuICB9XG59XG5cbi8qKlxuICogSW52b2tlcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gYWZ0ZXIgYSBkZWxheS5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIGRlbGF5SW5NaWxsaXNlY29uZHMgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIHN0YWNrVHJhY2UgLSBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KFxuICBhc3luY0ZuOiAoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICBkZWxheUluTWlsbGlzZWNvbmRzID0gMCxcbiAgc3RhY2tUcmFjZT86IHN0cmluZyxcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogdm9pZCB7XG4gIGFib3J0U2lnbmFsID8/PSBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIHN0YWNrVHJhY2UgPz89IGdldFN0YWNrVHJhY2UoMSk7XG4gIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzbGVlcChkZWxheUluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCwgdHJ1ZSk7XG4gICAgYXdhaXQgYXN5bmNGbihhYm9ydFNpZ25hbCk7XG4gIH0sIHN0YWNrVHJhY2UpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGFzeW5jIGZ1bmN0aW9ucyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIGFzeW5jRm5zIC0gVGhlIGFzeW5jIGZ1bmN0aW9ucyB0byBleGVjdXRlIHNlcXVlbnRpYWxseS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgYXN5bmMgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5PFQ+KGFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzYWJsZTxUPilbXSk6IFByb21pc2U8VFtdPiB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGFzeW5jRm4gb2YgYXN5bmNGbnMpIHtcbiAgICByZXN1bHRzLnB1c2goYXdhaXQgYXN5bmNGbigpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBwcm9taXNlcyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHByb21pc2VzIC0gVGhlIHByb21pc2VzIHRvIGV4ZWN1dGUgc2VxdWVudGlhbGx5LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9taXNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb21pc2VBbGxTZXF1ZW50aWFsbHk8VD4ocHJvbWlzZXM6IFByb21pc2FibGU8VD5bXSk6IFByb21pc2U8VFtdPiB7XG4gIHJldHVybiBhd2FpdCBwcm9taXNlQWxsQXN5bmNGbnNTZXF1ZW50aWFsbHkocHJvbWlzZXMubWFwKChwcm9taXNlKSA9PiAoKSA9PiBwcm9taXNlKSk7XG59XG5cbmNvbnN0IHRlcm1pbmF0ZVJldHJ5RXJyb3JzID0gbmV3IFdlYWtTZXQ8RXJyb3I+KCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5V2l0aFRpbWVvdXRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgdGltZW91dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdGltZW91dCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgb25UaW1lb3V0PzogKHRoaXM6IHZvaWQsIGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRm46ICh0aGlzOiB2b2lkLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmV0cnkgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5T3B0aW9ucz86IFJldHJ5T3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuV2l0aFRpbWVvdXRQYXJhbXM8UmVzdWx0PiB7XG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgdGltZW91dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdGltZW91dCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgb25UaW1lb3V0PzogKHRoaXM6IHZvaWQsIGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbkZuOiAodGhpczogdm9pZCwgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNhYmxlPFJlc3VsdD47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrVHJhY2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVkIHRvIHRoZSB0aW1lb3V0IGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGltZW91dENvbnRleHQge1xuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgb3BlcmF0aW9uIHN0YXJ0ZWQuXG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb25PcGVyYXRpb25Db21wbGV0ZWQ6IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXJtaW5hdGVzIHRoZSBvcGVyYXRpb24gdGhhdCB0aW1lZCBvdXQuXG4gICAqL1xuICByZWFkb25seSB0ZXJtaW5hdGVPcGVyYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFya3MgYW4gZXJyb3IgdG8gdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byBtYXJrIHRvIHRlcm1pbmF0ZSByZXRyeSBsb2dpYy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtzQXNUZXJtaW5hdGVSZXRyeShlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgdGVybWluYXRlUmV0cnlFcnJvcnMuYWRkKGVycm9yKTtcbn1cblxuLyoqXG4gKiBBbiBhc3luYyBmdW5jdGlvbiB0aGF0IG5ldmVyIGVuZHMuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCBuZXZlciByZXNvbHZlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5ldmVyRW5kcygpOiBQcm9taXNlPG5ldmVyPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICBub29wKCk7XG4gIH0pO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IHRoZSBhd2FpdCBhYm92ZSBuZXZlciByZXNvbHZlcy4gKi9cbiAgYXNzZXJ0KGZhbHNlLCAnU2hvdWxkIG5ldmVyIGhhcHBlbicpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgdGljay5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHRpY2sgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmV4dFRpY2tBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgcXVldWUgbWljcm90YXNrLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5leHQgcXVldWUgbWljcm90YXNrIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHF1ZXVlTWljcm90YXNrQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmV4dCByZXF1ZXN0IGFuaW1hdGlvbiBmcmFtZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHJlcXVlc3QgYW5pbWF0aW9uIGZyYW1lIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBgdHJ1ZWAgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0KHBhcmFtczogUmV0cnlXaXRoVGltZW91dFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6cmV0cnlXaXRoVGltZW91dCcpO1xuICBjb25zdCBzdGFja1RyYWNlID0gcGFyYW1zLnN0YWNrVHJhY2UgPz8gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzOiAxMDAsXG4gICAgc2hvdWxkUmV0cnlPbkVycm9yOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5wYXJhbXMucmV0cnlPcHRpb25zIH07XG4gIGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHJ1bldpdGhUaW1lb3V0KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxSdW5XaXRoVGltZW91dFBhcmFtczx2b2lkPj4oe1xuICAgIGNvbnRleHQ6IHsgb3BlcmF0aW9uTmFtZTogcGFyYW1zLm9wZXJhdGlvbk5hbWUgPz8gJycsIHJldHJ5Rm46IHBhcmFtcy5vcGVyYXRpb25GbiB9LFxuICAgIG9uVGltZW91dDogcGFyYW1zLm9uVGltZW91dCxcbiAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmVkQWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRTaWduYWwpO1xuICAgICAgY29tYmluZWRBYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgICAgd2hpbGUgKCFjb21iaW5lZEFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgYXR0ZW1wdCsrO1xuICAgICAgICBsZXQgaXNTdWNjZXNzOiBib29sZWFuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGF3YWl0IHBhcmFtcy5vcGVyYXRpb25Gbihjb21iaW5lZEFib3J0U2lnbmFsKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiAtLSBJdCBtaWdodCBjaGFuZ2VkIGluc2lkZSBgZm4oKWAuIEVTTGludCBtaXN0YWtlbmx5IGRvZXMgbm90IHJlY29nbml6ZSBpdC5cbiAgICAgICAgICBpZiAoY29tYmluZWRBYm9ydFNpZ25hbC5hYm9ydGVkIHx8ICFmdWxsT3B0aW9ucy5zaG91bGRSZXRyeU9uRXJyb3IgfHwgdGVybWluYXRlUmV0cnlFcnJvcnMuaGFzKGVycm9yIGFzIEVycm9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEN1c3RvbVN0YWNrVHJhY2VFcnJvcigncmV0cnlXaXRoVGltZW91dCBmYWlsZWQnLCBzdGFja1RyYWNlLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW50RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N1Y2Nlc3MpIHtcbiAgICAgICAgICBwcmludFdpdGhTdGFja1RyYWNlKHJldHJ5V2l0aFRpbWVvdXREZWJ1Z2dlciwgc3RhY2tUcmFjZSwgYFJldHJ5IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYWZ0ZXIgJHtTdHJpbmcoYXR0ZW1wdCl9IGF0dGVtcHRzYCwge1xuICAgICAgICAgICAgb3BlcmF0aW9uRm46IHBhcmFtcy5vcGVyYXRpb25GbixcbiAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IHBhcmFtcy5vcGVyYXRpb25OYW1lID8/ICcnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRXaXRoU3RhY2tUcmFjZShcbiAgICAgICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIsXG4gICAgICAgICAgc3RhY2tUcmFjZSxcbiAgICAgICAgICBgUmV0cnkgYXR0ZW1wdCAke1N0cmluZyhhdHRlbXB0KX0gY29tcGxldGVkIHVuc3VjY2Vzc2Z1bGx5LiBUcnlpbmcgYWdhaW4gaW4gJHtTdHJpbmcoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKX0gbWlsbGlzZWNvbmRzYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcGVyYXRpb25GbjogcGFyYW1zLm9wZXJhdGlvbkZuLFxuICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogcGFyYW1zLm9wZXJhdGlvbk5hbWUgPz8gJydcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgc2xlZXAoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvcGVyYXRpb25OYW1lOiBwYXJhbXMub3BlcmF0aW9uTmFtZSA/PyAnJyxcbiAgICBzdGFja1RyYWNlLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogZnVsbE9wdGlvbnMudGltZW91dEluTWlsbGlzZWNvbmRzXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0LiBJZiB0aGUgZnVuY3Rpb24gZG9lcyBub3QgY29tcGxldGUgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSwgaXQgaXMgY29uc2lkZXJlZCB0byBoYXZlIHRpbWVkIG91dC5cbiAqXG4gKiBJZiBgREVCVUc9b2JzaWRpYW4tZGV2LXV0aWxzOkFzeW5jOnJ1bldpdGhUaW1lb3V0YCBpcyBzZXQsIHRoZSBleGVjdXRpb24gaXMgbm90IHRlcm1pbmF0ZWQgYWZ0ZXIgdGhlIHRpbWVvdXQgYW5kIHRoZSBmdW5jdGlvbiBpcyBhbGxvd2VkIHRvIHJ1biBpbmRlZmluaXRlbHkuXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBvciByZWplY3RzIGlmIGl0IHRpbWVzIG91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0PFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dFBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9IHBhcmFtcy5zdGFja1RyYWNlID8/IGdldFN0YWNrVHJhY2UoMSk7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gIGNvbnN0IHJ1bkFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBsZXQgcmVzdWx0OiBudWxsIHwgUmVzdWx0ID0gbnVsbDtcbiAgbGV0IGhhc1Jlc3VsdCA9IGZhbHNlO1xuICBsZXQgaXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgY29uc3QgcnVuV2l0aFRpbWVvdXREZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdBc3luYzpydW5XaXRoVGltZW91dCcpO1xuICBjb25zdCBvblRpbWVvdXQgPSBwYXJhbXMub25UaW1lb3V0ID8/IGRlZmF1bHRPblRpbWVvdXQ7XG5cbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtydW4oKSwgaW5uZXJUaW1lb3V0KCldKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gSXQgbWlnaHQgY2hhbmdlZCBpbnNpZGUgYHJ1bigpYC4gRVNMaW50IG1pc3Rha2VubHkgZG9lcyBub3QgcmVjb2duaXplIGl0LlxuICBpZiAoaGFzUmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdCBhcyBSZXN1bHQ7XG4gIH1cblxuICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKCdSdW4gd2l0aCB0aW1lb3V0IGZhaWxlZCcsIHN0YWNrVHJhY2UsIHJ1bkFib3J0Q29udHJvbGxlci5zaWduYWwucmVhc29uKTtcblxuICBhc3luYyBmdW5jdGlvbiBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHBhcmFtcy5vcGVyYXRpb25GbihydW5BYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICBwcmludFdpdGhTdGFja1RyYWNlKHJ1bldpdGhUaW1lb3V0RGVidWdnZXIsIHN0YWNrVHJhY2UsIGBFeGVjdXRpb24gdGltZTogJHtTdHJpbmcoZHVyYXRpb24pfSBtaWxsaXNlY29uZHNgLCB7XG4gICAgICAgIGNvbnRleHQ6IHBhcmFtcy5jb250ZXh0LFxuICAgICAgICBvcGVyYXRpb25GbjogcGFyYW1zLm9wZXJhdGlvbkZuLFxuICAgICAgICBvcGVyYXRpb25OYW1lOiBwYXJhbXMub3BlcmF0aW9uTmFtZSA/PyAnJ1xuICAgICAgfSk7XG4gICAgICBoYXNSZXN1bHQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJ1bkFib3J0Q29udHJvbGxlci5hYm9ydChlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgdGltZW91dEFib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ0NvbXBsZXRlZCcpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBpbm5lclRpbWVvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc2xlZXAocGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcywgdGltZW91dEFib3J0Q29udHJvbGxlci5zaWduYWwpO1xuXG4gICAgaWYgKGlzQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgcHJpbnRXaXRoU3RhY2tUcmFjZShydW5XaXRoVGltZW91dERlYnVnZ2VyLCBzdGFja1RyYWNlLCBgVGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKGR1cmF0aW9uKX0gbWlsbGlzZWNvbmRzYCwge1xuICAgICAgY29udGV4dDogcGFyYW1zLmNvbnRleHQsXG4gICAgICBvcGVyYXRpb25GbjogcGFyYW1zLm9wZXJhdGlvbkZuLFxuICAgICAgb3BlcmF0aW9uTmFtZTogcGFyYW1zLm9wZXJhdGlvbk5hbWUgPz8gJydcbiAgICB9KTtcblxuICAgIGNvbnN0IHRpbWVvdXRDb250ZXh0OiBUaW1lb3V0Q29udGV4dCA9IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxUaW1lb3V0Q29udGV4dD4oe1xuICAgICAgZHVyYXRpb24sXG4gICAgICBvbk9wZXJhdGlvbkNvbXBsZXRlZChjYWxsYmFjaykge1xuICAgICAgICB0aW1lb3V0QWJvcnRDb250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGNhbGxiYWNrKTtcbiAgICAgIH0sXG4gICAgICBvcGVyYXRpb25OYW1lOiBwYXJhbXMub3BlcmF0aW9uTmFtZSA/PyAnJyxcbiAgICAgIHRlcm1pbmF0ZU9wZXJhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFRpbWVkIG91dCBhZnRlciAke1N0cmluZyhkdXJhdGlvbil9IG1pbGxpc2Vjb25kc2ApO1xuICAgICAgICBydW5BYm9ydENvbnRyb2xsZXIuYWJvcnQoZXJyb3IpO1xuICAgICAgICB0aW1lb3V0QWJvcnRDb250cm9sbGVyLmFib3J0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9uVGltZW91dCh0aW1lb3V0Q29udGV4dCk7XG4gICAgYXdhaXQgd2FpdEZvckFib3J0KHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmF1bHRPblRpbWVvdXQoY3R4OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQge1xuICAgIGN0eC50ZXJtaW5hdGVPcGVyYXRpb24oKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgc2V0IGltbWVkaWF0ZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHNldCBpbW1lZGlhdGUgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0SW1tZWRpYXRlQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGF5cyBleGVjdXRpb24gZm9yIGEgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIGRlbGF5IC0gVGhlIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRUaW1lb3V0QXN5bmMoZGVsYXk/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGF5cyBleGVjdXRpb24gZm9yIGEgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gKiBAcGFyYW0gc2hvdWxkVGhyb3dPbkFib3J0IC0gV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgYWJvcnQgc2lnbmFsIGlzIGFib3J0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzbGVlcChtaWxsaXNlY29uZHM6IG51bWJlciwgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCwgc2hvdWxkVGhyb3dPbkFib3J0PzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCB3YWl0Rm9yQWJvcnQoYWJvcnRTaWduYWxBbnkoYWJvcnRTaWduYWwsIGFib3J0U2lnbmFsVGltZW91dChtaWxsaXNlY29uZHMpKSk7XG4gIGlmIChzaG91bGRUaHJvd09uQWJvcnQpIHtcbiAgICBhYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZWplY3RzIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dCBwZXJpb2QuXG4gKlxuICogQHBhcmFtIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lb3V0IHBlcmlvZCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAqIEBwYXJhbSBzaG91bGRUaHJvd09uQWJvcnQgLSBXaGV0aGVyIHRvIHRocm93IGFuIGVycm9yIGlmIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgYWx3YXlzIHJlamVjdHMgd2l0aCBhIHRpbWVvdXQgZXJyb3IuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0aW1lb3V0KHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsLCBzaG91bGRUaHJvd09uQWJvcnQ/OiBib29sZWFuKTogUHJvbWlzZTxuZXZlcj4ge1xuICBhd2FpdCBzbGVlcCh0aW1lb3V0SW5NaWxsaXNlY29uZHMsIGFib3J0U2lnbmFsLCBzaG91bGRUaHJvd09uQWJvcnQpO1xuICB0aHJvdyBuZXcgRXJyb3IoYFRpbWVkIG91dCBpbiAke1N0cmluZyh0aW1lb3V0SW5NaWxsaXNlY29uZHMpfSBtaWxsaXNlY29uZHNgKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBBc3luY0l0ZXJhYmxlSXRlcmF0b3IgdG8gYW4gYXJyYXkgYnkgY29uc3VtaW5nIGFsbCBpdHMgZWxlbWVudHMuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgcHJvZHVjZWQgYnkgdGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvci5cbiAqIEBwYXJhbSBpdGVyIC0gVGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvQXJyYXk8VD4oaXRlcjogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+KTogUHJvbWlzZTxUW10+IHtcbiAgY29uc3QgYXJyOiBUW10gPSBbXTtcbiAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGl0ZXIpIHtcbiAgICBhcnIucHVzaChpdGVtKTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsOEJBS087QUFDUCxtQkFHTztBQUNQLG1CQU9PO0FBQ1Asc0JBQXFCO0FBQ3JCLDBCQUE0QztBQUM1Qyx5QkFHTztBQTBDUCxlQUFzQixnQkFBZ0IsU0FBaUMsWUFBb0M7QUFDekcscUJBQWUsNEJBQWMsQ0FBQztBQUM5QixNQUFJO0FBQ0YsVUFBTSxRQUFRO0FBQUEsRUFDaEIsU0FBUyxZQUFZO0FBQ25CLFVBQU0sZUFBZSxJQUFJLG1DQUFzQiwwQ0FBNkIsWUFBWSxVQUFVO0FBQ2xHLFFBQUksa0JBQWtCLFlBQVksR0FBRztB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
481
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIGFib3J0U2lnbmFsQW55LFxuICBhYm9ydFNpZ25hbE5ldmVyLFxuICBhYm9ydFNpZ25hbFRpbWVvdXQsXG4gIHdhaXRGb3JBYm9ydFxufSBmcm9tICcuL2Fib3J0LWNvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgZ2V0TGliRGVidWdnZXIsXG4gIHByaW50V2l0aFN0YWNrVHJhY2Vcbn0gZnJvbSAnLi9kZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZ2V0U3RhY2tUcmFjZSxcbiAgcHJpbnRFcnJvcixcbiAgU2lsZW50RXJyb3Jcbn0gZnJvbSAnLi9lcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGFzc2VydE5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuXG4vKipcbiAqIEEgdHlwZSByZXByZXNlbnRpbmcgYSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGEge0BsaW5rIFByb21pc2V9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc29sdmU8VD4gPSB1bmRlZmluZWQgZXh0ZW5kcyBUID8gKHZhbHVlPzogUHJvbWlzZUxpa2U8VD4gfCBUKSA9PiB2b2lkXG4gIDogKHZhbHVlOiBQcm9taXNlTGlrZTxUPiB8IFQpID0+IHZvaWQ7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGFib3J0IHNpZ25hbCB0byBjYW5jZWwgdGhlIHJldHJ5IG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEEgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gcmV0cnkgYXR0ZW1wdHMuXG4gICAqL1xuICByZWFkb25seSByZXRyeURlbGF5SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIGZ1bmN0aW9uIG9uIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmV0cnlPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB1cCBvbiByZXRyeWluZy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGVycm9yIGhhbmRsZXIgdG8gYSB7QGxpbmsgUHJvbWlzZX0gdGhhdCBjYXRjaGVzIGFueSBlcnJvcnMgYW5kIGVtaXRzIGFuIGFzeW5jIGVycm9yIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBhc3luY0ZuIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciB0by5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBjb21wbGV0ZXMgb3IgZW1pdHMgYXN5bmMgZXJyb3IgZXZlbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRFcnJvckhhbmRsZXIoYXN5bmNGbjogKCkgPT4gUHJvbWlzZTx1bmtub3duPiwgc3RhY2tUcmFjZT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBzdGFja1RyYWNlID8/PSBnZXRTdGFja1RyYWNlKDEpO1xuICB0cnkge1xuICAgIGF3YWl0IGFzeW5jRm4oKTtcbiAgfSBjYXRjaCAoYXN5bmNFcnJvcikge1xuICAgIGNvbnN0IHdyYXBwZWRFcnJvciA9IG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLCBzdGFja1RyYWNlLCBhc3luY0Vycm9yKTtcbiAgICBpZiAoaGFuZGxlU2lsZW50RXJyb3Iod3JhcHBlZEVycm9yKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbWl0QXN5bmNFcnJvckV2ZW50KHdyYXBwZWRFcnJvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBGaWx0ZXJzIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5LCBrZWVwaW5nIG9ubHkgdGhlIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgcHJvdmlkZWQgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmlsdGVyLlxuICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gdGVzdCBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgZWxlbWVudHMgdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0ZpbHRlcjxUPihhcnI6IFRbXSwgcHJlZGljYXRlOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8Ym9vbGVhbj4pOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCBhbnM6IFRbXSA9IFtdO1xuXG4gIGNvbnN0IGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oYXJyLCBpKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IGFycltpXSBhcyBUO1xuICAgIGlmIChhd2FpdCBwcmVkaWNhdGUoaXRlbSwgaSwgYXJyKSkge1xuICAgICAgYW5zLnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5IGluIHBsYWNlLCBrZWVwaW5nIG9ubHkgdGhlIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgcHJvdmlkZWQgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmlsdGVyLlxuICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gdGVzdCBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFycmF5IGlzIGZpbHRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNGaWx0ZXJJblBsYWNlPFQ+KGFycjogVFtdLCBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxib29sZWFuPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICBsZXQgd3JpdGVJbmRleCA9IDA7XG4gIGZvciAobGV0IHJlYWRJbmRleCA9IDA7IHJlYWRJbmRleCA8IGxlbmd0aDsgcmVhZEluZGV4KyspIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oYXJyLCByZWFkSW5kZXgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gYXJyW3JlYWRJbmRleF0gYXMgVDtcbiAgICBpZiAoYXdhaXQgcHJlZGljYXRlKGN1cnJlbnQsIHJlYWRJbmRleCwgYXJyKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgICAgYXJyW3dyaXRlSW5kZXgrK10gPSBjdXJyZW50O1xuICAgIH1cbiAgfVxuICBhcnIubGVuZ3RoID0gd3JpdGVJbmRleDtcbn1cblxuLyoqXG4gKiBNYXBzIG92ZXIgYW4gYXJyYXkgYXN5bmNocm9ub3VzbHksIGFwcGx5aW5nIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQsIGFuZCB0aGVuIGZsYXR0ZW5zIHRoZSByZXN1bHRzIGludG8gYSBzaW5nbGUgYXJyYXkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIGlucHV0IGFycmF5LlxuICogQHR5cGVQYXJhbSBVIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIG91dHB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gbWFwIG92ZXIgYW5kIGZsYXR0ZW4uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGEgZmxhdHRlbmVkIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmxhdE1hcDxULCBVPihhcnI6IFRbXSwgY2FsbGJhY2s6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxVW10+KTogUHJvbWlzZTxVW10+IHtcbiAgcmV0dXJuIChhd2FpdCBhc3luY01hcChhcnIsIGNhbGxiYWNrKSkuZmxhdCgpO1xufVxuXG4vKipcbiAqIE1hcHMgb3ZlciBhbiBhcnJheSBhc3luY2hyb25vdXNseSwgYXBwbHlpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGVhY2ggZWxlbWVudC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAdHlwZVBhcmFtIFUgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgb3V0cHV0IGFycmF5LlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byBtYXAgb3Zlci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNNYXA8VCwgVT4oYXJyOiBUW10sIGNhbGxiYWNrOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8VT4pOiBQcm9taXNlPFVbXT4ge1xuICByZXR1cm4gYXdhaXQgcHJvbWlzZUFsbFNlcXVlbnRpYWxseShhcnIubWFwKGNhbGxiYWNrKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGEgc3luY2hyb25vdXMgb25lIGJ5IGF1dG9tYXRpY2FsbHkgaGFuZGxpbmcgdGhlIFByb21pc2UgcmVqZWN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHBhcmFtIGFzeW5jRnVuYyAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBpbiBhIHN5bmNocm9ub3VzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBc3luY1RvU3luYzxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihhc3luY0Z1bmM6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPHVua25vd24+LCBzdGFja1RyYWNlPzogc3RyaW5nKTogKC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWQge1xuICBzdGFja1RyYWNlID8/PSBnZXRTdGFja1RyYWNlKDEpO1xuICByZXR1cm4gKC4uLmFyZ3M6IEFyZ3MpOiB2b2lkID0+IHtcbiAgICBhc3NlcnROb25OdWxsYWJsZShzdGFja1RyYWNlKTtcbiAgICBjb25zdCBpbm5lclN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKDEpO1xuICAgIHN0YWNrVHJhY2UgPSBgJHtzdGFja1RyYWNlfVxcbiAgICBhdCAtLS0gY29udmVydEFzeW5jVG9TeW5jIC0tLSAoMClcXG4ke2lubmVyU3RhY2tUcmFjZX1gO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGFzeW5jRnVuYyguLi5hcmdzKSwgc3RhY2tUcmFjZSk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgb25lIGJ5IHdyYXBwaW5nIGl0IGluIGEge0BsaW5rIFByb21pc2V9LlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuXG4gKiBAcGFyYW0gc3luY0ZuIC0gVGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGFuIGFzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3luY1RvQXN5bmM8QXJncyBleHRlbmRzIHVua25vd25bXSwgUmVzdWx0PihzeW5jRm46ICguLi5hcmdzOiBBcmdzKSA9PiBSZXN1bHQpOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIGFzeW5jICguLi5hcmdzOiBBcmdzKTogUHJvbWlzZTxSZXN1bHQ+ID0+IHtcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gc3luY0ZuKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBzaWxlbnQgZXJyb3IuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIHRvIGhhbmRsZS5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGVycm9yIGlzIGEgc2lsZW50IGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlU2lsZW50RXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgbGV0IGNhdXNlID0gZXJyb3I7XG4gIHdoaWxlICghKGNhdXNlIGluc3RhbmNlb2YgU2lsZW50RXJyb3IpKSB7XG4gICAgaWYgKCEoY2F1c2UgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjYXVzZSA9IGNhdXNlLmNhdXNlO1xuICB9XG5cbiAgZ2V0TGliRGVidWdnZXIoJ0FzeW5jOmhhbmRsZVNpbGVudEVycm9yJykoZXJyb3IpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBJZ25vcmVzIGFuIGVycm9yIHRoYXQgaXMgdGhyb3duIGJ5IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIEFsd2F5cyBgdW5kZWZpbmVkYC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGNvbXBsZXRlcyBvciBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yKHByb21pc2U6IFByb21pc2U8dW5rbm93bj4sIGZhbGxiYWNrVmFsdWU/OiB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+O1xuLyoqXG4gKiBJbnZva2VzIGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gaWdub3JlIHRoZSBlcnJvciBvZi5cbiAqIEBwYXJhbSBmYWxsYmFja1ZhbHVlIC0gVGhlIHZhbHVlIHRvIHJldHVybiBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gb3IgdGhlIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yPFQ+KHByb21pc2U6IFByb21pc2U8VD4sIGZhbGxiYWNrVmFsdWU6IFQpOiBQcm9taXNlPFQ+O1xuLyoqXG4gKiBJZ25vcmVzIGFuIGVycm9yIHRoYXQgaXMgdGhyb3duIGJ5IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gaWdub3JlIHRoZSBlcnJvciBvZi5cbiAqIEBwYXJhbSBmYWxsYmFja1ZhbHVlIC0gVGhlIHZhbHVlIHRvIHJldHVybiBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gb3IgdGhlIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yPFQ+KHByb21pc2U6IFByb21pc2U8VD4sIGZhbGxiYWNrVmFsdWU/OiBUKTogUHJvbWlzZTxUIHwgdm9pZD4ge1xuICBjb25zdCBpZ25vcmVFcnJvckRlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ0FzeW5jOmlnbm9yZUVycm9yJyk7XG4gIGNvbnN0IHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKDEpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBwcm9taXNlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWdub3JlRXJyb3JEZWJ1Z2dlcignSWdub3JlZCBlcnJvcicsIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoJ0lnbm9yZWQgZXJyb3InLCBzdGFja1RyYWNlLCBlKSk7XG4gICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2VzIGEge0BsaW5rIFByb21pc2V9IGFuZCBzYWZlbHkgaGFuZGxlcyBhbnkgZXJyb3JzIGJ5IGNhdGNoaW5nIHRoZW0gYW5kIGVtaXR0aW5nIGFuIGFzeW5jIGVycm9yIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBhc3luY0ZuIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBpbnZva2Ugc2FmZWx5LlxuICogQHBhcmFtIHN0YWNrVHJhY2UgLSBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jRm46ICgpID0+IFByb21pc2FibGU8dW5rbm93bj4sIHN0YWNrVHJhY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcblxuICBsZXQgcmVzdWx0OiB1bmtub3duO1xuICB0cnkge1xuICAgIHJlc3VsdCA9IGFzeW5jRm4oKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZCwgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnMgLS0gV2UgbmVlZCB0byBmaXJlLWFuZC1mb3JnZXQuIFJlLXJlamVjdGluZyB0aGUgb3JpZ2luYWwgY2F1Z2h0IGVycm9yIGFzLWlzLlxuICAgIHZvaWQgYWRkRXJyb3JIYW5kbGVyKCgpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSwgc3RhY2tUcmFjZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZCAtLSBXZSBuZWVkIHRvIGZpcmUtYW5kLWZvcmdldC5cbiAgICB2b2lkIGFkZEVycm9ySGFuZGxlcigoKSA9PiByZXN1bHQsIHN0YWNrVHJhY2UpO1xuICB9XG59XG5cbi8qKlxuICogSW52b2tlcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gYWZ0ZXIgYSBkZWxheS5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIGRlbGF5SW5NaWxsaXNlY29uZHMgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIHN0YWNrVHJhY2UgLSBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KFxuICBhc3luY0ZuOiAoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICBkZWxheUluTWlsbGlzZWNvbmRzID0gMCxcbiAgc3RhY2tUcmFjZT86IHN0cmluZyxcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogdm9pZCB7XG4gIGFib3J0U2lnbmFsID8/PSBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIHN0YWNrVHJhY2UgPz89IGdldFN0YWNrVHJhY2UoMSk7XG4gIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzbGVlcChkZWxheUluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCwgdHJ1ZSk7XG4gICAgYXdhaXQgYXN5bmNGbihhYm9ydFNpZ25hbCk7XG4gIH0sIHN0YWNrVHJhY2UpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGFzeW5jIGZ1bmN0aW9ucyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIGFzeW5jRm5zIC0gVGhlIGFzeW5jIGZ1bmN0aW9ucyB0byBleGVjdXRlIHNlcXVlbnRpYWxseS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgYXN5bmMgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5PFQ+KGFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzYWJsZTxUPilbXSk6IFByb21pc2U8VFtdPiB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGFzeW5jRm4gb2YgYXN5bmNGbnMpIHtcbiAgICByZXN1bHRzLnB1c2goYXdhaXQgYXN5bmNGbigpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBwcm9taXNlcyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHByb21pc2VzIC0gVGhlIHByb21pc2VzIHRvIGV4ZWN1dGUgc2VxdWVudGlhbGx5LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9taXNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb21pc2VBbGxTZXF1ZW50aWFsbHk8VD4ocHJvbWlzZXM6IFByb21pc2FibGU8VD5bXSk6IFByb21pc2U8VFtdPiB7XG4gIHJldHVybiBhd2FpdCBwcm9taXNlQWxsQXN5bmNGbnNTZXF1ZW50aWFsbHkocHJvbWlzZXMubWFwKChwcm9taXNlKSA9PiAoKSA9PiBwcm9taXNlKSk7XG59XG5cbmNvbnN0IHRlcm1pbmF0ZVJldHJ5RXJyb3JzID0gbmV3IFdlYWtTZXQ8RXJyb3I+KCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5V2l0aFRpbWVvdXRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgdGltZW91dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdGltZW91dCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgb25UaW1lb3V0PzogKHRoaXM6IHZvaWQsIGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRm46ICh0aGlzOiB2b2lkLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmV0cnkgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5T3B0aW9ucz86IFJldHJ5T3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuV2l0aFRpbWVvdXRQYXJhbXM8UmVzdWx0PiB7XG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgdGltZW91dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdGltZW91dCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgb25UaW1lb3V0PzogKHRoaXM6IHZvaWQsIGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbkZuOiAodGhpczogdm9pZCwgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNhYmxlPFJlc3VsdD47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrVHJhY2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVkIHRvIHRoZSB0aW1lb3V0IGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGltZW91dENvbnRleHQge1xuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgb3BlcmF0aW9uIHN0YXJ0ZWQuXG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb25PcGVyYXRpb25Db21wbGV0ZWQ6IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXJtaW5hdGVzIHRoZSBvcGVyYXRpb24gdGhhdCB0aW1lZCBvdXQuXG4gICAqL1xuICByZWFkb25seSB0ZXJtaW5hdGVPcGVyYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFya3MgYW4gZXJyb3IgdG8gdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byBtYXJrIHRvIHRlcm1pbmF0ZSByZXRyeSBsb2dpYy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtzQXNUZXJtaW5hdGVSZXRyeShlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgdGVybWluYXRlUmV0cnlFcnJvcnMuYWRkKGVycm9yKTtcbn1cblxuLyoqXG4gKiBBbiBhc3luYyBmdW5jdGlvbiB0aGF0IG5ldmVyIGVuZHMuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCBuZXZlciByZXNvbHZlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5ldmVyRW5kcygpOiBQcm9taXNlPG5ldmVyPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICBub29wKCk7XG4gIH0pO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IHRoZSBhd2FpdCBhYm92ZSBuZXZlciByZXNvbHZlcy4gKi9cbiAgYXNzZXJ0KGZhbHNlLCAnU2hvdWxkIG5ldmVyIGhhcHBlbicpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgdGljay5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHRpY2sgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmV4dFRpY2tBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgcXVldWUgbWljcm90YXNrLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5leHQgcXVldWUgbWljcm90YXNrIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHF1ZXVlTWljcm90YXNrQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmV4dCByZXF1ZXN0IGFuaW1hdGlvbiBmcmFtZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHJlcXVlc3QgYW5pbWF0aW9uIGZyYW1lIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBgdHJ1ZWAgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0KHBhcmFtczogUmV0cnlXaXRoVGltZW91dFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6cmV0cnlXaXRoVGltZW91dCcpO1xuICBjb25zdCBzdGFja1RyYWNlID0gcGFyYW1zLnN0YWNrVHJhY2UgPz8gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzOiAxMDAsXG4gICAgc2hvdWxkUmV0cnlPbkVycm9yOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5wYXJhbXMucmV0cnlPcHRpb25zIH07XG4gIGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHJ1bldpdGhUaW1lb3V0KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxSdW5XaXRoVGltZW91dFBhcmFtczx2b2lkPj4oe1xuICAgIGNvbnRleHQ6IHsgb3BlcmF0aW9uTmFtZTogcGFyYW1zLm9wZXJhdGlvbk5hbWUgPz8gJycsIHJldHJ5Rm46IHBhcmFtcy5vcGVyYXRpb25GbiB9LFxuICAgIG9uVGltZW91dDogcGFyYW1zLm9uVGltZW91dCxcbiAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmVkQWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRTaWduYWwpO1xuICAgICAgY29tYmluZWRBYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgICAgd2hpbGUgKCFjb21iaW5lZEFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgYXR0ZW1wdCsrO1xuICAgICAgICBsZXQgaXNTdWNjZXNzOiBib29sZWFuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGF3YWl0IHBhcmFtcy5vcGVyYXRpb25Gbihjb21iaW5lZEFib3J0U2lnbmFsKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiAtLSBJdCBtaWdodCBjaGFuZ2VkIGluc2lkZSBgZm4oKWAuIEVTTGludCBtaXN0YWtlbmx5IGRvZXMgbm90IHJlY29nbml6ZSBpdC5cbiAgICAgICAgICBpZiAoY29tYmluZWRBYm9ydFNpZ25hbC5hYm9ydGVkIHx8ICFmdWxsT3B0aW9ucy5zaG91bGRSZXRyeU9uRXJyb3IgfHwgdGVybWluYXRlUmV0cnlFcnJvcnMuaGFzKGVycm9yIGFzIEVycm9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEN1c3RvbVN0YWNrVHJhY2VFcnJvcigncmV0cnlXaXRoVGltZW91dCBmYWlsZWQnLCBzdGFja1RyYWNlLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW50RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N1Y2Nlc3MpIHtcbiAgICAgICAgICBwcmludFdpdGhTdGFja1RyYWNlKHJldHJ5V2l0aFRpbWVvdXREZWJ1Z2dlciwgc3RhY2tUcmFjZSwgYFJldHJ5IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYWZ0ZXIgJHtTdHJpbmcoYXR0ZW1wdCl9IGF0dGVtcHRzYCwge1xuICAgICAgICAgICAgb3BlcmF0aW9uRm46IHBhcmFtcy5vcGVyYXRpb25GbixcbiAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IHBhcmFtcy5vcGVyYXRpb25OYW1lID8/ICcnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRXaXRoU3RhY2tUcmFjZShcbiAgICAgICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIsXG4gICAgICAgICAgc3RhY2tUcmFjZSxcbiAgICAgICAgICBgUmV0cnkgYXR0ZW1wdCAke1N0cmluZyhhdHRlbXB0KX0gY29tcGxldGVkIHVuc3VjY2Vzc2Z1bGx5LiBUcnlpbmcgYWdhaW4gaW4gJHtTdHJpbmcoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKX0gbWlsbGlzZWNvbmRzYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcGVyYXRpb25GbjogcGFyYW1zLm9wZXJhdGlvbkZuLFxuICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogcGFyYW1zLm9wZXJhdGlvbk5hbWUgPz8gJydcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgc2xlZXAoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvcGVyYXRpb25OYW1lOiBwYXJhbXMub3BlcmF0aW9uTmFtZSA/PyAnJyxcbiAgICBzdGFja1RyYWNlLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogZnVsbE9wdGlvbnMudGltZW91dEluTWlsbGlzZWNvbmRzXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0LiBJZiB0aGUgZnVuY3Rpb24gZG9lcyBub3QgY29tcGxldGUgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSwgaXQgaXMgY29uc2lkZXJlZCB0byBoYXZlIHRpbWVkIG91dC5cbiAqXG4gKiBJZiBgREVCVUc9b2JzaWRpYW4tZGV2LXV0aWxzOkFzeW5jOnJ1bldpdGhUaW1lb3V0YCBpcyBzZXQsIHRoZSBleGVjdXRpb24gaXMgbm90IHRlcm1pbmF0ZWQgYWZ0ZXIgdGhlIHRpbWVvdXQgYW5kIHRoZSBmdW5jdGlvbiBpcyBhbGxvd2VkIHRvIHJ1biBpbmRlZmluaXRlbHkuXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBvciByZWplY3RzIGlmIGl0IHRpbWVzIG91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0PFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dFBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9IHBhcmFtcy5zdGFja1RyYWNlID8/IGdldFN0YWNrVHJhY2UoMSk7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gIGNvbnN0IHJ1bkFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBsZXQgcmVzdWx0OiBudWxsIHwgUmVzdWx0ID0gbnVsbDtcbiAgbGV0IGhhc1Jlc3VsdCA9IGZhbHNlO1xuICBsZXQgaXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgY29uc3QgcnVuV2l0aFRpbWVvdXREZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdBc3luYzpydW5XaXRoVGltZW91dCcpO1xuICBjb25zdCBvblRpbWVvdXQgPSBwYXJhbXMub25UaW1lb3V0ID8/IGRlZmF1bHRPblRpbWVvdXQ7XG5cbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtydW4oKSwgaW5uZXJUaW1lb3V0KCldKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gSXQgbWlnaHQgY2hhbmdlZCBpbnNpZGUgYHJ1bigpYC4gRVNMaW50IG1pc3Rha2VubHkgZG9lcyBub3QgcmVjb2duaXplIGl0LlxuICBpZiAoaGFzUmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdCBhcyBSZXN1bHQ7XG4gIH1cblxuICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKCdSdW4gd2l0aCB0aW1lb3V0IGZhaWxlZCcsIHN0YWNrVHJhY2UsIHJ1bkFib3J0Q29udHJvbGxlci5zaWduYWwucmVhc29uKTtcblxuICBhc3luYyBmdW5jdGlvbiBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHBhcmFtcy5vcGVyYXRpb25GbihydW5BYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICBwcmludFdpdGhTdGFja1RyYWNlKHJ1bldpdGhUaW1lb3V0RGVidWdnZXIsIHN0YWNrVHJhY2UsIGBFeGVjdXRpb24gdGltZTogJHtTdHJpbmcoZHVyYXRpb24pfSBtaWxsaXNlY29uZHNgLCB7XG4gICAgICAgIGNvbnRleHQ6IHBhcmFtcy5jb250ZXh0LFxuICAgICAgICBvcGVyYXRpb25GbjogcGFyYW1zLm9wZXJhdGlvbkZuLFxuICAgICAgICBvcGVyYXRpb25OYW1lOiBwYXJhbXMub3BlcmF0aW9uTmFtZSA/PyAnJ1xuICAgICAgfSk7XG4gICAgICBoYXNSZXN1bHQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJ1bkFib3J0Q29udHJvbGxlci5hYm9ydChlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgdGltZW91dEFib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ0NvbXBsZXRlZCcpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBpbm5lclRpbWVvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc2xlZXAocGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcywgdGltZW91dEFib3J0Q29udHJvbGxlci5zaWduYWwpO1xuXG4gICAgaWYgKGlzQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgcHJpbnRXaXRoU3RhY2tUcmFjZShydW5XaXRoVGltZW91dERlYnVnZ2VyLCBzdGFja1RyYWNlLCBgVGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKGR1cmF0aW9uKX0gbWlsbGlzZWNvbmRzYCwge1xuICAgICAgY29udGV4dDogcGFyYW1zLmNvbnRleHQsXG4gICAgICBvcGVyYXRpb25GbjogcGFyYW1zLm9wZXJhdGlvbkZuLFxuICAgICAgb3BlcmF0aW9uTmFtZTogcGFyYW1zLm9wZXJhdGlvbk5hbWUgPz8gJydcbiAgICB9KTtcblxuICAgIGNvbnN0IHRpbWVvdXRDb250ZXh0OiBUaW1lb3V0Q29udGV4dCA9IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxUaW1lb3V0Q29udGV4dD4oe1xuICAgICAgZHVyYXRpb24sXG4gICAgICBvbk9wZXJhdGlvbkNvbXBsZXRlZChjYWxsYmFjaykge1xuICAgICAgICB0aW1lb3V0QWJvcnRDb250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGNhbGxiYWNrKTtcbiAgICAgIH0sXG4gICAgICBvcGVyYXRpb25OYW1lOiBwYXJhbXMub3BlcmF0aW9uTmFtZSA/PyAnJyxcbiAgICAgIHRlcm1pbmF0ZU9wZXJhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFRpbWVkIG91dCBhZnRlciAke1N0cmluZyhkdXJhdGlvbil9IG1pbGxpc2Vjb25kc2ApO1xuICAgICAgICBydW5BYm9ydENvbnRyb2xsZXIuYWJvcnQoZXJyb3IpO1xuICAgICAgICB0aW1lb3V0QWJvcnRDb250cm9sbGVyLmFib3J0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9uVGltZW91dCh0aW1lb3V0Q29udGV4dCk7XG4gICAgYXdhaXQgd2FpdEZvckFib3J0KHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmF1bHRPblRpbWVvdXQoY3R4OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQge1xuICAgIGN0eC50ZXJtaW5hdGVPcGVyYXRpb24oKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgc2V0IGltbWVkaWF0ZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHNldCBpbW1lZGlhdGUgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0SW1tZWRpYXRlQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGF5cyBleGVjdXRpb24gZm9yIGEgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIGRlbGF5IC0gVGhlIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRUaW1lb3V0QXN5bmMoZGVsYXk/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGF5cyBleGVjdXRpb24gZm9yIGEgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gKiBAcGFyYW0gc2hvdWxkVGhyb3dPbkFib3J0IC0gV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgYWJvcnQgc2lnbmFsIGlzIGFib3J0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzbGVlcChtaWxsaXNlY29uZHM6IG51bWJlciwgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCwgc2hvdWxkVGhyb3dPbkFib3J0PzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCB3YWl0Rm9yQWJvcnQoYWJvcnRTaWduYWxBbnkoYWJvcnRTaWduYWwsIGFib3J0U2lnbmFsVGltZW91dChtaWxsaXNlY29uZHMpKSk7XG4gIGlmIChzaG91bGRUaHJvd09uQWJvcnQpIHtcbiAgICBhYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZWplY3RzIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dCBwZXJpb2QuXG4gKlxuICogQHBhcmFtIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lb3V0IHBlcmlvZCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAqIEBwYXJhbSBzaG91bGRUaHJvd09uQWJvcnQgLSBXaGV0aGVyIHRvIHRocm93IGFuIGVycm9yIGlmIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgYWx3YXlzIHJlamVjdHMgd2l0aCBhIHRpbWVvdXQgZXJyb3IuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0aW1lb3V0KHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsLCBzaG91bGRUaHJvd09uQWJvcnQ/OiBib29sZWFuKTogUHJvbWlzZTxuZXZlcj4ge1xuICBhd2FpdCBzbGVlcCh0aW1lb3V0SW5NaWxsaXNlY29uZHMsIGFib3J0U2lnbmFsLCBzaG91bGRUaHJvd09uQWJvcnQpO1xuICB0aHJvdyBuZXcgRXJyb3IoYFRpbWVkIG91dCBpbiAke1N0cmluZyh0aW1lb3V0SW5NaWxsaXNlY29uZHMpfSBtaWxsaXNlY29uZHNgKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBBc3luY0l0ZXJhYmxlSXRlcmF0b3IgdG8gYW4gYXJyYXkgYnkgY29uc3VtaW5nIGFsbCBpdHMgZWxlbWVudHMuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgcHJvZHVjZWQgYnkgdGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvci5cbiAqIEBwYXJhbSBpdGVyIC0gVGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvQXJyYXk8VD4oaXRlcjogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+KTogUHJvbWlzZTxUW10+IHtcbiAgY29uc3QgYXJyOiBUW10gPSBbXTtcbiAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGl0ZXIpIHtcbiAgICBhcnIucHVzaChpdGVtKTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsOEJBS087QUFDUCxtQkFHTztBQUNQLG1CQU9PO0FBQ1Asc0JBQXFCO0FBQ3JCLDBCQUE0QztBQUM1Qyx5QkFHTztBQTBDUCxlQUFzQixnQkFBZ0IsU0FBaUMsWUFBb0M7QUFDekcscUJBQWUsNEJBQWMsQ0FBQztBQUM5QixNQUFJO0FBQ0YsVUFBTSxRQUFRO0FBQUEsRUFD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
@@ -183,6 +183,8 @@ export interface RetryWithTimeoutParams {
183
183
  }
184
184
  /**
185
185
  * Options for {@link runWithTimeout}.
186
+ *
187
+ * @typeParam Result - The type of the result returned by the operation function.
186
188
  */
187
189
  export interface RunWithTimeoutParams<Result> {
188
190
  /**
@@ -121,4 +121,4 @@ var __copyProps = (to, from, except, desc) => {
121
121
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
122
122
  var state_field_spec_exports = {};
123
123
  module.exports = __toCommonJS(state_field_spec_exports);
124
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvZGVtaXJyb3Ivc3RhdGUtZmllbGQtc3BlYy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBmb3IgYSBzdGF0ZSBmaWVsZC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZXJmYWNlLW9ubHkgbW9kdWxlOyBubyBydW50aW1lIGNvZGUgdG8gdGVzdC4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBFZGl0b3JTdGF0ZSxcbiAgRXh0ZW5zaW9uLFxuICBTdGF0ZUZpZWxkLFxuICBUcmFuc2FjdGlvblxufSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5cbi8qKlxuICogQSBzcGVjaWZpY2F0aW9uIGZvciBhIHN0YXRlIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlRmllbGRTcGVjPFZhbHVlPiB7XG4gIC8qKlxuICAgKiBDb21wYXJlIHR3byB2YWx1ZXMgb2YgdGhlIGZpZWxkLCByZXR1cm5pbmcgYHRydWVgIHdoZW4gdGhleSBhcmVcbiAgICogdGhlIHNhbWUuIFRoaXMgaXMgdXNlZCB0byBhdm9pZCByZWNvbXB1dGluZyBmYWNldHMgdGhhdCBkZXBlbmRcbiAgICogb24gdGhlIGZpZWxkIHdoZW4gaXRzIHZhbHVlIGRpZCBub3QgY2hhbmdlLiBEZWZhdWx0cyB0byB1c2luZ1xuICAgKiBgPT09YC5cbiAgICpcbiAgICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBjb21wYXJlPyhhOiBWYWx1ZSwgYjogVmFsdWUpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgZmllbGQgd2hlbiBhIHN0YXRlIGlzIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSBzdGF0ZSB0byBjcmVhdGUgdGhlIHZhbHVlIGZvci5cbiAgICogQHJldHVybnMgVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIGNyZWF0ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBWYWx1ZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGRlc2VyaWFsaXplcyB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGlzXG4gICAqIGZpZWxkJ3MgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIGpzb24gLSBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSBzdGF0ZSB0byBkZXNlcmlhbGl6ZSB0aGUgdmFsdWUgZm9yLlxuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlLlxuICAgKi9cbiAgZnJvbUpTT04/KGpzb246IHVua25vd24sIHN0YXRlOiBFZGl0b3JTdGF0ZSk6IFZhbHVlO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGV4dGVuc2lvbnMgYmFzZWQgb24gdGhpcyBmaWVsZC4gVGhlIGdpdmVuIGZ1bmN0aW9uIHdpbGxcbiAgICogYmUgY2FsbGVkIG9uY2Ugd2l0aCB0aGUgaW5pdGlhbGl6ZWQgZmllbGQuIEl0IHdpbGwgdXN1YWxseSB3YW50XG4gICAqIHRvIGNhbGwgc29tZSBmYWNldCdzIFtgZnJvbWBdKGh0dHBzOi8vY29kZW1pcnJvci5uZXQvNi9kb2NzL3JlZi8jc3RhdGUuRmFjZXQuZnJvbSkgbWV0aG9kIHRvXG4gICAqIGNyZWF0ZSBmYWNldCBpbnB1dHMgZnJvbSB0aGlzIGZpZWxkLCBidXQgY2FuIGFsc28gcmV0dXJuIG90aGVyXG4gICAqIGV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCB3aGVuIHRoZSBmaWVsZCBpcyBwcmVzZW50IGluIGFcbiAgICogY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGZpZWxkIC0gVGhlIGluaXRpYWxpemVkIGZpZWxkLlxuICAgKiBAcmV0dXJucyBUaGUgZXh0ZW5zaW9ucyB0byBlbmFibGUgd2hlbiB0aGUgZmllbGQgaXMgcHJlc2VudCBpbiBhIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcm92aWRlPyhmaWVsZDogU3RhdGVGaWVsZDxWYWx1ZT4pOiBFeHRlbnNpb247XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdXNlZCB0byBzZXJpYWxpemUgdGhpcyBmaWVsZCdzIGNvbnRlbnQgdG8gSlNPTi4gT25seVxuICAgKiBuZWNlc3Nhcnkgd2hlbiB0aGlzIGZpZWxkIGlzIGluY2x1ZGVkIGluIHRoZSBhcmd1bWVudCB0b1xuICAgKiBbYEVkaXRvclN0YXRlLnRvSlNPTmBdKGh0dHBzOi8vY29kZW1pcnJvci5uZXQvNi9kb2NzL3JlZi8jc3RhdGUuRWRpdG9yU3RhdGUudG9KU09OKS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZS5cbiAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHN0YXRlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgZm9yLlxuICAgKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCB2YWx1ZS5cbiAgICovXG4gIHRvSlNPTj8odmFsdWU6IFZhbHVlLCBzdGF0ZTogRWRpdG9yU3RhdGUpOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlIGEgbmV3IHZhbHVlIGZyb20gdGhlIGZpZWxkJ3MgcHJldmlvdXMgdmFsdWUgYW5kIGFcbiAgICogW3RyYW5zYWN0aW9uXShodHRwczovL2NvZGVtaXJyb3IubmV0LzYvZG9jcy9yZWYvI3N0YXRlLlRyYW5zYWN0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBmaWVsZC5cbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIC0gVGhlIHRyYW5zYWN0aW9uIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBmcm9tLlxuICAgKiBAcmV0dXJucyBUaGUgbmV3IHZhbHVlIG9mIHRoZSBmaWVsZC5cbiAgICovXG4gIHVwZGF0ZSh2YWx1ZTogVmFsdWUsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IFZhbHVlO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
124
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvZGVtaXJyb3Ivc3RhdGUtZmllbGQtc3BlYy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBmb3IgYSBzdGF0ZSBmaWVsZC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZXJmYWNlLW9ubHkgbW9kdWxlOyBubyBydW50aW1lIGNvZGUgdG8gdGVzdC4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBFZGl0b3JTdGF0ZSxcbiAgRXh0ZW5zaW9uLFxuICBTdGF0ZUZpZWxkLFxuICBUcmFuc2FjdGlvblxufSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5cbi8qKlxuICogQSBzcGVjaWZpY2F0aW9uIGZvciBhIHN0YXRlIGZpZWxkLlxuICpcbiAqIEB0eXBlUGFyYW0gVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgc3RhdGUgZmllbGQgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVGaWVsZFNwZWM8VmFsdWU+IHtcbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIHZhbHVlcyBvZiB0aGUgZmllbGQsIHJldHVybmluZyBgdHJ1ZWAgd2hlbiB0aGV5IGFyZVxuICAgKiB0aGUgc2FtZS4gVGhpcyBpcyB1c2VkIHRvIGF2b2lkIHJlY29tcHV0aW5nIGZhY2V0cyB0aGF0IGRlcGVuZFxuICAgKiBvbiB0aGUgZmllbGQgd2hlbiBpdHMgdmFsdWUgZGlkIG5vdCBjaGFuZ2UuIERlZmF1bHRzIHRvIHVzaW5nXG4gICAqIGA9PT1gLlxuICAgKlxuICAgKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCB2YWx1ZSB0byBjb21wYXJlLlxuICAgKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGNvbXBhcmU/KGE6IFZhbHVlLCBiOiBWYWx1ZSk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBmaWVsZCB3aGVuIGEgc3RhdGUgaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHN0YXRlIHRvIGNyZWF0ZSB0aGUgdmFsdWUgZm9yLlxuICAgKiBAcmV0dXJucyBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgY3JlYXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IFZhbHVlO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgZGVzZXJpYWxpemVzIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoaXNcbiAgICogZmllbGQncyBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ganNvbiAtIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZS5cbiAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHN0YXRlIHRvIGRlc2VyaWFsaXplIHRoZSB2YWx1ZSBmb3IuXG4gICAqIEByZXR1cm5zIFRoZSBkZXNlcmlhbGl6ZWQgdmFsdWUuXG4gICAqL1xuICBmcm9tSlNPTj8oanNvbjogdW5rbm93biwgc3RhdGU6IEVkaXRvclN0YXRlKTogVmFsdWU7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgZXh0ZW5zaW9ucyBiYXNlZCBvbiB0aGlzIGZpZWxkLiBUaGUgZ2l2ZW4gZnVuY3Rpb24gd2lsbFxuICAgKiBiZSBjYWxsZWQgb25jZSB3aXRoIHRoZSBpbml0aWFsaXplZCBmaWVsZC4gSXQgd2lsbCB1c3VhbGx5IHdhbnRcbiAgICogdG8gY2FsbCBzb21lIGZhY2V0J3MgW2Bmcm9tYF0oaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC82L2RvY3MvcmVmLyNzdGF0ZS5GYWNldC5mcm9tKSBtZXRob2QgdG9cbiAgICogY3JlYXRlIGZhY2V0IGlucHV0cyBmcm9tIHRoaXMgZmllbGQsIGJ1dCBjYW4gYWxzbyByZXR1cm4gb3RoZXJcbiAgICogZXh0ZW5zaW9ucyB0aGF0IHNob3VsZCBiZSBlbmFibGVkIHdoZW4gdGhlIGZpZWxkIGlzIHByZXNlbnQgaW4gYVxuICAgKiBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZmllbGQgLSBUaGUgaW5pdGlhbGl6ZWQgZmllbGQuXG4gICAqIEByZXR1cm5zIFRoZSBleHRlbnNpb25zIHRvIGVuYWJsZSB3aGVuIHRoZSBmaWVsZCBpcyBwcmVzZW50IGluIGEgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHByb3ZpZGU/KGZpZWxkOiBTdGF0ZUZpZWxkPFZhbHVlPik6IEV4dGVuc2lvbjtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIHNlcmlhbGl6ZSB0aGlzIGZpZWxkJ3MgY29udGVudCB0byBKU09OLiBPbmx5XG4gICAqIG5lY2Vzc2FyeSB3aGVuIHRoaXMgZmllbGQgaXMgaW5jbHVkZWQgaW4gdGhlIGFyZ3VtZW50IHRvXG4gICAqIFtgRWRpdG9yU3RhdGUudG9KU09OYF0oaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC82L2RvY3MvcmVmLyNzdGF0ZS5FZGl0b3JTdGF0ZS50b0pTT04pLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2VyaWFsaXplLlxuICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUgc3RhdGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSBmb3IuXG4gICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIHZhbHVlLlxuICAgKi9cbiAgdG9KU09OPyh2YWx1ZTogVmFsdWUsIHN0YXRlOiBFZGl0b3JTdGF0ZSk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgYSBuZXcgdmFsdWUgZnJvbSB0aGUgZmllbGQncyBwcmV2aW91cyB2YWx1ZSBhbmQgYVxuICAgKiBbdHJhbnNhY3Rpb25dKGh0dHBzOi8vY29kZW1pcnJvci5uZXQvNi9kb2NzL3JlZi8jc3RhdGUuVHJhbnNhY3Rpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIGZpZWxkLlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIGZyb20uXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgdmFsdWUgb2YgdGhlIGZpZWxkLlxuICAgKi9cbiAgdXBkYXRlKHZhbHVlOiBWYWx1ZSwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogVmFsdWU7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -6,6 +6,8 @@
6
6
  import type { EditorState, Extension, StateField, Transaction } from '@codemirror/state';
7
7
  /**
8
8
  * A specification for a state field.
9
+ *
10
+ * @typeParam Value - The type of the state field value.
9
11
  */
10
12
  export interface StateFieldSpec<Value> {
11
13
  /**
@@ -141,4 +141,4 @@ function getEnumValue(enumType, key) {
141
141
  getEnumKey,
142
142
  getEnumValue
143
143
  });
144
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VudW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZW51bXMuXG4gKi9cblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIGtleSBvZiBhbiBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBlbnVtVHlwZSAtIFRoZSBlbnVtIHR5cGUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gZ2V0IHRoZSBrZXkgb2YuXG4gKiBAcmV0dXJucyBUaGUga2V5IG9mIHRoZSBlbnVtIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bUtleTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oZW51bVR5cGU6IFQsIHZhbHVlOiBUW2tleW9mIFRdKToga2V5b2YgVCB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShPYmplY3Qua2V5cyhlbnVtVHlwZSkuZmluZCgoaykgPT4gZW51bVR5cGVba10gPT09IHZhbHVlKSwgYEludmFsaWQgZW51bSB2YWx1ZTogJHt2YWx1ZX1gKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIG9mIGFuIGVudW0ga2V5LlxuICpcbiAqIEBwYXJhbSBlbnVtVHlwZSAtIFRoZSBlbnVtIHR5cGUuXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBnZXQgdGhlIHZhbHVlIG9mLlxuICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBlbnVtIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1WYWx1ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oZW51bVR5cGU6IFQsIGtleTogc3RyaW5nKTogVFtrZXlvZiBUXSB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShlbnVtVHlwZVtrZXldLCBgSW52YWxpZCBlbnVtIGtleTogJHtrZXl9YCkgYXMgVFtrZXlvZiBUXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEseUJBQWtDO0FBUzNCLFNBQVMsV0FBNkMsVUFBYSxPQUE0QjtBQUNwRyxhQUFPLHNDQUFrQixPQUFPLEtBQUssUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQyxNQUFNLEtBQUssR0FBRyx1QkFBdUIsS0FBSyxFQUFFO0FBQ25IO0FBU08sU0FBUyxhQUErQyxVQUFhLEtBQXlCO0FBQ25HLGFBQU8sc0NBQWtCLFNBQVMsR0FBRyxHQUFHLHFCQUFxQixHQUFHLEVBQUU7QUFDcEU7IiwKICAibmFtZXMiOiBbXQp9Cg==
144
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VudW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZW51bXMuXG4gKi9cblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIGtleSBvZiBhbiBlbnVtIHZhbHVlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBlbnVtIHR5cGUuXG4gKiBAcGFyYW0gZW51bVR5cGUgLSBUaGUgZW51bSB0eXBlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGdldCB0aGUga2V5IG9mLlxuICogQHJldHVybnMgVGhlIGtleSBvZiB0aGUgZW51bSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1LZXk8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KGVudW1UeXBlOiBULCB2YWx1ZTogVFtrZXlvZiBUXSk6IGtleW9mIFQge1xuICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUoT2JqZWN0LmtleXMoZW51bVR5cGUpLmZpbmQoKGspID0+IGVudW1UeXBlW2tdID09PSB2YWx1ZSksIGBJbnZhbGlkIGVudW0gdmFsdWU6ICR7dmFsdWV9YCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBvZiBhbiBlbnVtIGtleS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgZW51bSB0eXBlLlxuICogQHBhcmFtIGVudW1UeXBlIC0gVGhlIGVudW0gdHlwZS5cbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIGdldCB0aGUgdmFsdWUgb2YuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGVudW0ga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bVZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihlbnVtVHlwZTogVCwga2V5OiBzdHJpbmcpOiBUW2tleW9mIFRdIHtcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKGVudW1UeXBlW2tleV0sIGBJbnZhbGlkIGVudW0ga2V5OiAke2tleX1gKSBhcyBUW2tleW9mIFRdO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx5QkFBa0M7QUFVM0IsU0FBUyxXQUE2QyxVQUFhLE9BQTRCO0FBQ3BHLGFBQU8sc0NBQWtCLE9BQU8sS0FBSyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sU0FBUyxDQUFDLE1BQU0sS0FBSyxHQUFHLHVCQUF1QixLQUFLLEVBQUU7QUFDbkg7QUFVTyxTQUFTLGFBQStDLFVBQWEsS0FBeUI7QUFDbkcsYUFBTyxzQ0FBa0IsU0FBUyxHQUFHLEdBQUcscUJBQXFCLEdBQUcsRUFBRTtBQUNwRTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -6,6 +6,7 @@
6
6
  /**
7
7
  * Get the key of an enum value.
8
8
  *
9
+ * @typeParam T - The enum type.
9
10
  * @param enumType - The enum type.
10
11
  * @param value - The value to get the key of.
11
12
  * @returns The key of the enum value.
@@ -14,6 +15,7 @@ export declare function getEnumKey<T extends Record<string, string>>(enumType: T
14
15
  /**
15
16
  * Get the value of an enum key.
16
17
  *
18
+ * @typeParam T - The enum type.
17
19
  * @param enumType - The enum type.
18
20
  * @param key - The key to get the value of.
19
21
  * @returns The value of the enum key.
@@ -289,4 +289,4 @@ function getLoadableElements(el) {
289
289
  onAncestorScrollOrResize,
290
290
  toPx
291
291
  });
292
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbi8qKlxuICogQSBIVE1MIGVsZW1lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVsZW1lbnQgaXMgdmFsaWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBvbiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2V0IG9uIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFuIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb2RlIGJsb2NrIHRvIHRoZSBnaXZlbiBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsOiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6ICdtYXJrZG93bi1yZW5kZXJlZCBjb2RlJyB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGl2IGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBkaXYgaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRpdi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURpdkFzeW5jKFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4gUHJvbWlzYWJsZTx2b2lkPlxuKTogUHJvbWlzZTxIVE1MRGl2RWxlbWVudD4ge1xuICBjb25zdCBkaXYgPSBjcmVhdGVEaXYobyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZGl2KTtcbiAgcmV0dXJuIGRpdjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVsZW1lbnQgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIHRhZyAtIFRoZSB0YWcgbmFtZSBvZiB0aGUgZWxlbWVudCB0byBjcmVhdGUuXG4gKiBAcGFyYW0gbyAtIFRoZSBlbGVtZW50IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUVsQXN5bmM8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHRhZzogSyxcbiAgbz86IERvbUVsZW1lbnRJbmZvIHwgc3RyaW5nLFxuICBjYWxsYmFjaz86IChlbDogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4pOiBQcm9taXNlPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXT4ge1xuICBjb25zdCBlbCA9IGNyZWF0ZUVsKHRhZywgbyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZWwpO1xuICByZXR1cm4gZWw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIERvY3VtZW50RnJhZ21lbnQgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgRG9jdW1lbnRGcmFnbWVudCBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgRG9jdW1lbnRGcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50QXN5bmMoY2FsbGJhY2s/OiAoZWw6IERvY3VtZW50RnJhZ21lbnQpID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPERvY3VtZW50RnJhZ21lbnQ+IHtcbiAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgpO1xuICBhd2FpdCBjYWxsYmFjaz8uKGZyYWdtZW50KTtcbiAgcmV0dXJuIGZyYWdtZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzcGFuIGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBzcGFuIGlzIGNyZWF0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzcGFuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3BhbkFzeW5jKFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsOiBIVE1MU3BhbkVsZW1lbnQpID0+IFByb21pc2FibGU8dm9pZD5cbik6IFByb21pc2U8SFRNTFNwYW5FbGVtZW50PiB7XG4gIGNvbnN0IHNwYW4gPSBjcmVhdGVTcGFuKG8pO1xuICBhd2FpdCBjYWxsYmFjaz8uKHNwYW4pO1xuICByZXR1cm4gc3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3ZnIGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSB0YWcgLSBUaGUgdGFnIG5hbWUgb2YgdGhlIHN2ZyB0byBjcmVhdGUuXG4gKiBAcGFyYW0gbyAtIFRoZSBzdmcgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBzdmcgaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHN2Zy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVN2Z0FzeW5jPEsgZXh0ZW5kcyBrZXlvZiBTVkdFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHRhZzogSyxcbiAgbz86IHN0cmluZyB8IFN2Z0VsZW1lbnRJbmZvLFxuICBjYWxsYmFjaz86IChlbDogU1ZHRWxlbWVudFRhZ05hbWVNYXBbS10pID0+IFByb21pc2FibGU8dm9pZD5cbik6IFByb21pc2U8U1ZHRWxlbWVudFRhZ05hbWVNYXBbS10+IHtcbiAgY29uc3Qgc3ZnID0gY3JlYXRlU3ZnKHRhZywgbyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oc3ZnKTtcbiAgcmV0dXJuIHN2Zztcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGVuc3VyZSBpcyBsb2FkZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTG9hZGVkKGVsOiBFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpc0xvYWRlZChlbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIGVsLmluc3RhbmNlT2YoSFRNTEJvZHlFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTEltYWdlRWxlbWVudClcbiAgICB8fCBlbC5pbnN0YW5jZU9mKEhUTUxJRnJhbWVFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTEVtYmVkRWxlbWVudClcbiAgICB8fCBlbC5pbnN0YW5jZU9mKEhUTUxMaW5rRWxlbWVudClcbiAgICB8fCBlbC5pbnN0YW5jZU9mKEhUTUxPYmplY3RFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTFN0eWxlRWxlbWVudClcbiAgICB8fCBlbC5pbnN0YW5jZU9mKEhUTUxUcmFja0VsZW1lbnQpXG4gICkge1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcmVzb2x2ZSk7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlc29sdmUpO1xuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKGdldExvYWRhYmxlRWxlbWVudHMoZWwpLm1hcChlbnN1cmVMb2FkZWQpKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB6LWluZGV4IG9mIHRoZSBnaXZlbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGdldCB0aGUgei1pbmRleCBvZi5cbiAqIEByZXR1cm5zIFRoZSB6LWluZGV4IG9mIHRoZSBlbGVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WkluZGV4KGVsOiBFbGVtZW50KTogbnVtYmVyIHtcbiAgbGV0IGVsMjogRWxlbWVudCB8IG51bGwgPSBlbDtcblxuICB3aGlsZSAoZWwyKSB7XG4gICAgY29uc3QgekluZGV4U3RyID0gZ2V0Q29tcHV0ZWRTdHlsZShlbDIpLnpJbmRleDtcbiAgICBjb25zdCB6SW5kZXggPSBOdW1iZXIucGFyc2VJbnQoekluZGV4U3RyLCAxMCk7XG4gICAgaWYgKCFOdW1iZXIuaXNOYU4oekluZGV4KSkge1xuICAgICAgcmV0dXJuIHpJbmRleDtcbiAgICB9XG4gICAgZWwyID0gZWwyLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgb2Zmc2V0IHBhcmVudC5cbiAqXG4gKiBAcGFyYW0gZWwgLSBUaGUgZWxlbWVudCB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIHRoZSBvZmZzZXQgcGFyZW50LCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudChlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgcGFyZW50RWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gIGlmICghcGFyZW50RWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50RWxSZWN0ID0gcGFyZW50RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgcmV0dXJuIChcbiAgICBwYXJlbnRFbFJlY3QudG9wIDw9IGVsUmVjdC50b3BcbiAgICAmJiBlbFJlY3QuYm90dG9tIDw9IHBhcmVudEVsUmVjdC5ib3R0b21cbiAgICAmJiBwYXJlbnRFbFJlY3QubGVmdCA8PSBlbFJlY3QubGVmdFxuICAgICYmIGVsUmVjdC5yaWdodCA8PSBwYXJlbnRFbFJlY3QucmlnaHRcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIGxvYWRlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xvYWRlZChlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICBpZiAoZWwuaW5zdGFuY2VPZihIVE1MQm9keUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGFjdGl2ZURvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScgfHwgYWN0aXZlRG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJztcbiAgfVxuXG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxJbWFnZUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGVsLmNvbXBsZXRlICYmIGVsLm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoZWwuaW5zdGFuY2VPZihIVE1MSUZyYW1lRWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbC5jb250ZW50RG9jdW1lbnQ7XG4gIH1cblxuICBpZiAoZWwuaW5zdGFuY2VPZihIVE1MRW1iZWRFbGVtZW50KSkge1xuICAgIHJldHVybiAhIWVsLmdldFNWR0RvY3VtZW50KCk7XG4gIH1cblxuICBpZiAoZWwuaW5zdGFuY2VPZihIVE1MTGlua0VsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGVsLnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWwuc2hlZXQgIT09IG51bGwgOiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsLmluc3RhbmNlT2YoSFRNTE9iamVjdEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuICEhZWwuY29udGVudERvY3VtZW50IHx8ICEhZWwuZ2V0U1ZHRG9jdW1lbnQoKTtcbiAgfVxuXG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxTY3JpcHRFbGVtZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsLmluc3RhbmNlT2YoSFRNTFN0eWxlRWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbC5zaGVldDtcbiAgfVxuXG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxUcmFja0VsZW1lbnQpKSB7XG4gICAgY29uc3QgUkVBRFlfU1RBVEVfTE9BREVEID0gMjtcbiAgICByZXR1cm4gZWwucmVhZHlTdGF0ZSA9PT0gUkVBRFlfU1RBVEVfTE9BREVEO1xuICB9XG5cbiAgcmV0dXJuIGdldExvYWRhYmxlRWxlbWVudHMoZWwpLmV2ZXJ5KGlzTG9hZGVkKTtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBhbmNlc3RvciBub2RlcyBvZiB0aGUgZ2l2ZW4gbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBub2RlIHRvIGFkZCB0aGUgZXZlbnQgbGlzdGVuZXIgdG8uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkFuY2VzdG9yU2Nyb2xsT3JSZXNpemUobm9kZTogTm9kZSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgY29uc3QgYW5jZXN0b3JzOiBFdmVudFRhcmdldFtdID0gW107XG4gIGFuY2VzdG9ycy5wdXNoKGFjdGl2ZURvY3VtZW50KTtcbiAgYW5jZXN0b3JzLnB1c2goYWN0aXZlV2luZG93KTtcblxuICBsZXQgY3VycmVudE5vZGU6IE5vZGUgfCBudWxsID0gbm9kZTtcblxuICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICBhbmNlc3RvcnMucHVzaChjdXJyZW50Tm9kZSk7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICB9XG5cbiAgbGV0IGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBhbmNlc3RvciBvZiBhbmNlc3RvcnMpIHtcbiAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgICBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBjYWxsYmFja1Ntb290aCgpOiB2b2lkIHtcbiAgICBpZiAoaXNFdmVudFRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSB0cnVlO1xuXG4gICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcgd2l0aCAncHgnIGFwcGVuZGVkLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBudW1iZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgYXMgYSBzdHJpbmcgd2l0aCAncHgnIGFwcGVuZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QeCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke1N0cmluZyh2YWx1ZSl9cHhgO1xufVxuXG5mdW5jdGlvbiBnZXRMb2FkYWJsZUVsZW1lbnRzKGVsOiBFbGVtZW50KTogRWxlbWVudFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwucXVlcnlTZWxlY3RvckFsbCgnYm9keSwgaW1nLCBpZnJhbWUsIGVtYmVkLCBsaW5rLCBvYmplY3QsIHNjcmlwdCwgc3R5bGUsIHRyYWNrJykpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJDTyxTQUFTLGdCQUFnQixJQUFvQyxNQUFvQjtBQUN0RixLQUFHLFNBQVMsVUFBVSxFQUFFLEtBQUsseUJBQXlCLEdBQUcsQ0FBQyxXQUFX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
292
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbi8qKlxuICogQSBIVE1MIGVsZW1lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVsZW1lbnQgaXMgdmFsaWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBvbiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2V0IG9uIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFuIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb2RlIGJsb2NrIHRvIHRoZSBnaXZlbiBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBEb2N1bWVudEZyYWdtZW50IG9yIEhUTUxFbGVtZW50IHRvIGFwcGVuZCB0aGUgY29kZSBibG9jayB0by5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29kZUJsb2NrKGVsOiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6ICdtYXJrZG93bi1yZW5kZXJlZCBjb2RlJyB9LCAoc3Ryb25nKSA9PiB7XG4gICAgc3Ryb25nLmNyZWF0ZUVsKCdjb2RlJywgeyB0ZXh0OiBjb2RlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGl2IGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBkaXYgaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRpdi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURpdkFzeW5jKFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4gUHJvbWlzYWJsZTx2b2lkPlxuKTogUHJvbWlzZTxIVE1MRGl2RWxlbWVudD4ge1xuICBjb25zdCBkaXYgPSBjcmVhdGVEaXYobyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZGl2KTtcbiAgcmV0dXJuIGRpdjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVsZW1lbnQgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHR5cGVQYXJhbSBLIC0gVGhlIHRhZyBuYW1lIGtleSBmcm9tIGBIVE1MRWxlbWVudFRhZ05hbWVNYXBgLlxuICogQHBhcmFtIHRhZyAtIFRoZSB0YWcgbmFtZSBvZiB0aGUgZWxlbWVudCB0byBjcmVhdGUuXG4gKiBAcGFyYW0gbyAtIFRoZSBlbGVtZW50IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUVsQXN5bmM8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHRhZzogSyxcbiAgbz86IERvbUVsZW1lbnRJbmZvIHwgc3RyaW5nLFxuICBjYWxsYmFjaz86IChlbDogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4pOiBQcm9taXNlPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXT4ge1xuICBjb25zdCBlbCA9IGNyZWF0ZUVsKHRhZywgbyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZWwpO1xuICByZXR1cm4gZWw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIERvY3VtZW50RnJhZ21lbnQgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgRG9jdW1lbnRGcmFnbWVudCBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgRG9jdW1lbnRGcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50QXN5bmMoY2FsbGJhY2s/OiAoZWw6IERvY3VtZW50RnJhZ21lbnQpID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPERvY3VtZW50RnJhZ21lbnQ+IHtcbiAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgpO1xuICBhd2FpdCBjYWxsYmFjaz8uKGZyYWdtZW50KTtcbiAgcmV0dXJuIGZyYWdtZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzcGFuIGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBzcGFuIGlzIGNyZWF0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzcGFuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3BhbkFzeW5jKFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsOiBIVE1MU3BhbkVsZW1lbnQpID0+IFByb21pc2FibGU8dm9pZD5cbik6IFByb21pc2U8SFRNTFNwYW5FbGVtZW50PiB7XG4gIGNvbnN0IHNwYW4gPSBjcmVhdGVTcGFuKG8pO1xuICBhd2FpdCBjYWxsYmFjaz8uKHNwYW4pO1xuICByZXR1cm4gc3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3ZnIGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEB0eXBlUGFyYW0gSyAtIFRoZSB0YWcgbmFtZSBrZXkgZnJvbSBgU1ZHRWxlbWVudFRhZ05hbWVNYXBgLlxuICogQHBhcmFtIHRhZyAtIFRoZSB0YWcgbmFtZSBvZiB0aGUgc3ZnIHRvIGNyZWF0ZS5cbiAqIEBwYXJhbSBvIC0gVGhlIHN2ZyBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHN2ZyBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgc3ZnLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3ZnQXN5bmM8SyBleHRlbmRzIGtleW9mIFNWR0VsZW1lbnRUYWdOYW1lTWFwPihcbiAgdGFnOiBLLFxuICBvPzogc3RyaW5nIHwgU3ZnRWxlbWVudEluZm8sXG4gIGNhbGxiYWNrPzogKGVsOiBTVkdFbGVtZW50VGFnTmFtZU1hcFtLXSkgPT4gUHJvbWlzYWJsZTx2b2lkPlxuKTogUHJvbWlzZTxTVkdFbGVtZW50VGFnTmFtZU1hcFtLXT4ge1xuICBjb25zdCBzdmcgPSBjcmVhdGVTdmcodGFnLCBvKTtcbiAgYXdhaXQgY2FsbGJhY2s/LihzdmcpO1xuICByZXR1cm4gc3ZnO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBsb2FkZWQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gZW5zdXJlIGlzIGxvYWRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBpcyBsb2FkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVMb2FkZWQoZWw6IEVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGlzTG9hZGVkKGVsKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoXG4gICAgZWwuaW5zdGFuY2VPZihIVE1MQm9keUVsZW1lbnQpXG4gICAgfHwgZWwuaW5zdGFuY2VPZihIVE1MSW1hZ2VFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTElGcmFtZUVsZW1lbnQpXG4gICAgfHwgZWwuaW5zdGFuY2VPZihIVE1MRW1iZWRFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTExpbmtFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTE9iamVjdEVsZW1lbnQpXG4gICAgfHwgZWwuaW5zdGFuY2VPZihIVE1MU3R5bGVFbGVtZW50KVxuICAgIHx8IGVsLmluc3RhbmNlT2YoSFRNTFRyYWNrRWxlbWVudClcbiAgKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCByZXNvbHZlKTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgcmVzb2x2ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoZ2V0TG9hZGFibGVFbGVtZW50cyhlbCkubWFwKGVuc3VyZUxvYWRlZCkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHotaW5kZXggb2YgdGhlIGdpdmVuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gZ2V0IHRoZSB6LWluZGV4IG9mLlxuICogQHJldHVybnMgVGhlIHotaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRaSW5kZXgoZWw6IEVsZW1lbnQpOiBudW1iZXIge1xuICBsZXQgZWwyOiBFbGVtZW50IHwgbnVsbCA9IGVsO1xuXG4gIHdoaWxlIChlbDIpIHtcbiAgICBjb25zdCB6SW5kZXhTdHIgPSBnZXRDb21wdXRlZFN0eWxlKGVsMikuekluZGV4O1xuICAgIGNvbnN0IHpJbmRleCA9IE51bWJlci5wYXJzZUludCh6SW5kZXhTdHIsIDEwKTtcbiAgICBpZiAoIU51bWJlci5pc05hTih6SW5kZXgpKSB7XG4gICAgICByZXR1cm4gekluZGV4O1xuICAgIH1cbiAgICBlbDIgPSBlbDIucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIHRoZSBvZmZzZXQgcGFyZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50VmlzaWJsZUluT2Zmc2V0UGFyZW50KGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnRFbCA9IGVsLm9mZnNldFBhcmVudDtcbiAgaWYgKCFwYXJlbnRFbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBwYXJlbnRFbFJlY3QgPSBwYXJlbnRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICByZXR1cm4gKFxuICAgIHBhcmVudEVsUmVjdC50b3AgPD0gZWxSZWN0LnRvcFxuICAgICYmIGVsUmVjdC5ib3R0b20gPD0gcGFyZW50RWxSZWN0LmJvdHRvbVxuICAgICYmIHBhcmVudEVsUmVjdC5sZWZ0IDw9IGVsUmVjdC5sZWZ0XG4gICAgJiYgZWxSZWN0LnJpZ2h0IDw9IHBhcmVudEVsUmVjdC5yaWdodFxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZWxlbWVudCBpcyBsb2FkZWQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGVkKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxCb2R5RWxlbWVudCkpIHtcbiAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCBhY3RpdmVEb2N1bWVudC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnO1xuICB9XG5cbiAgaWYgKGVsLmluc3RhbmNlT2YoSFRNTEltYWdlRWxlbWVudCkpIHtcbiAgICByZXR1cm4gZWwuY29tcGxldGUgJiYgZWwubmF0dXJhbFdpZHRoID4gMDtcbiAgfVxuXG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxJRnJhbWVFbGVtZW50KSkge1xuICAgIHJldHVybiAhIWVsLmNvbnRlbnREb2N1bWVudDtcbiAgfVxuXG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxFbWJlZEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuICEhZWwuZ2V0U1ZHRG9jdW1lbnQoKTtcbiAgfVxuXG4gIGlmIChlbC5pbnN0YW5jZU9mKEhUTUxMaW5rRWxlbWVudCkpIHtcbiAgICByZXR1cm4gZWwucmVsID09PSAnc3R5bGVzaGVldCcgPyBlbC5zaGVldCAhPT0gbnVsbCA6IHRydWU7XG4gIH1cblxuICBpZiAoZWwuaW5zdGFuY2VPZihIVE1MT2JqZWN0RWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbC5jb250ZW50RG9jdW1lbnQgfHwgISFlbC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGVsLmluc3RhbmNlT2YoSFRNTFNjcmlwdEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoZWwuaW5zdGFuY2VPZihIVE1MU3R5bGVFbGVtZW50KSkge1xuICAgIHJldHVybiAhIWVsLnNoZWV0O1xuICB9XG5cbiAgaWYgKGVsLmluc3RhbmNlT2YoSFRNTFRyYWNrRWxlbWVudCkpIHtcbiAgICBjb25zdCBSRUFEWV9TVEFURV9MT0FERUQgPSAyO1xuICAgIHJldHVybiBlbC5yZWFkeVN0YXRlID09PSBSRUFEWV9TVEFURV9MT0FERUQ7XG4gIH1cblxuICByZXR1cm4gZ2V0TG9hZGFibGVFbGVtZW50cyhlbCkuZXZlcnkoaXNMb2FkZWQpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIG5vZGUgdG8gYWRkIHRoZSBldmVudCBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZShub2RlOiBOb2RlLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICBjb25zdCBhbmNlc3RvcnM6IEV2ZW50VGFyZ2V0W10gPSBbXTtcbiAgYW5jZXN0b3JzLnB1c2goYWN0aXZlRG9jdW1lbnQpO1xuICBhbmNlc3RvcnMucHVzaChhY3RpdmVXaW5kb3cpO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGxiYWNrU21vb3RoLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrU21vb3RoKCk6IHZvaWQge1xuICAgIGlmIChpc0V2ZW50VHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNFdmVudFRyaWdnZXJlZCA9IHRydWU7XG5cbiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc0V2ZW50VHJpZ2dlcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZyB3aXRoICdweCcgYXBwZW5kZWQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIG51bWJlciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIG51bWJlciBhcyBhIHN0cmluZyB3aXRoICdweCcgYXBwZW5kZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1B4KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7U3RyaW5nKHZhbHVlKX1weGA7XG59XG5cbmZ1bmN0aW9uIGdldExvYWRhYmxlRWxlbWVudHMoZWw6IEVsZW1lbnQpOiBFbGVtZW50W10ge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKCdib2R5LCBpbWcsIGlmcmFtZSwgZW1iZWQsIGxpbmssIG9iamVjdCwgc2NyaXB0LCBzdHlsZSwgdHJhY2snKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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
@@ -47,6 +47,7 @@ export declare function createDivAsync(o?: DomElementInfo | string, callback?: (
47
47
  /**
48
48
  * Creates an element asynchronously.
49
49
  *
50
+ * @typeParam K - The tag name key from `HTMLElementTagNameMap`.
50
51
  * @param tag - The tag name of the element to create.
51
52
  * @param o - The element information.
52
53
  * @param callback - The callback to call when the element is created.
@@ -71,6 +72,7 @@ export declare function createSpanAsync(o?: DomElementInfo | string, callback?:
71
72
  /**
72
73
  * Creates a svg asynchronously.
73
74
  *
75
+ * @typeParam K - The tag name key from `SVGElementTagNameMap`.
74
76
  * @param tag - The tag name of the svg to create.
75
77
  * @param o - The svg information.
76
78
  * @param callback - The callback to call when the svg is created.
@@ -130,7 +130,7 @@ __export(library_exports, {
130
130
  LIBRARY_VERSION: () => LIBRARY_VERSION
131
131
  });
132
132
  module.exports = __toCommonJS(library_exports);
133
- const LIBRARY_VERSION = "62.0.0";
133
+ const LIBRARY_VERSION = "62.2.0";
134
134
  const LIBRARY_NAME = "obsidian-dev-utils";
135
135
  const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
136
136
  // Annotate the CommonJS export names for ESM import in node: