obsidian-dev-utils 54.0.2 → 55.0.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 (643) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/lib/cjs/@types/debug.d.cts +4 -1
  3. package/dist/lib/cjs/abort-controller.cjs +1 -1
  4. package/dist/lib/cjs/abort-controller.d.cts +1 -1
  5. package/dist/lib/cjs/array.cjs +1 -1
  6. package/dist/lib/cjs/array.d.cts +1 -1
  7. package/dist/lib/cjs/async-events.cjs +1 -1
  8. package/dist/lib/cjs/async-events.d.cts +1 -1
  9. package/dist/lib/cjs/async.cjs +1 -1
  10. package/dist/lib/cjs/async.d.cts +1 -1
  11. package/dist/lib/cjs/blob.cjs +1 -1
  12. package/dist/lib/cjs/blob.d.cts +1 -1
  13. package/dist/lib/cjs/codemirror/state-field-spec.cjs +1 -1
  14. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
  15. package/dist/lib/cjs/css-class.cjs +1 -1
  16. package/dist/lib/cjs/css-class.d.cts +1 -1
  17. package/dist/lib/cjs/debug-controller.cjs +1 -1
  18. package/dist/lib/cjs/debug-controller.d.cts +1 -1
  19. package/dist/lib/cjs/debug.cjs +1 -1
  20. package/dist/lib/cjs/debug.d.cts +1 -1
  21. package/dist/lib/cjs/enum.cjs +1 -1
  22. package/dist/lib/cjs/enum.d.cts +1 -1
  23. package/dist/lib/cjs/error.cjs +1 -1
  24. package/dist/lib/cjs/error.d.cts +1 -1
  25. package/dist/lib/cjs/function.cjs +1 -1
  26. package/dist/lib/cjs/function.d.cts +1 -1
  27. package/dist/lib/cjs/html-element.cjs +1 -1
  28. package/dist/lib/cjs/html-element.d.cts +1 -1
  29. package/dist/lib/cjs/library.cjs +2 -2
  30. package/dist/lib/cjs/library.d.cts +1 -1
  31. package/dist/lib/cjs/object-utils.cjs +2 -2
  32. package/dist/lib/cjs/object-utils.d.cts +1 -1
  33. package/dist/lib/cjs/obsidian/@types/i18next.d.cts +1 -1
  34. package/dist/lib/cjs/obsidian/app.cjs +1 -1
  35. package/dist/lib/cjs/obsidian/app.d.cts +1 -1
  36. package/dist/lib/cjs/obsidian/async-with-notice.cjs +1 -1
  37. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +1 -1
  38. package/dist/lib/cjs/obsidian/attachment-path.cjs +1 -1
  39. package/dist/lib/cjs/obsidian/attachment-path.d.cts +1 -1
  40. package/dist/lib/cjs/obsidian/backlink.cjs +1 -1
  41. package/dist/lib/cjs/obsidian/backlink.d.cts +1 -1
  42. package/dist/lib/cjs/obsidian/callout.cjs +1 -1
  43. package/dist/lib/cjs/obsidian/callout.d.cts +1 -1
  44. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +1 -1
  45. package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +1 -1
  46. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +1 -1
  47. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +1 -1
  48. package/dist/lib/cjs/obsidian/commands/command-base.cjs +1 -1
  49. package/dist/lib/cjs/obsidian/commands/command-base.d.cts +1 -1
  50. package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +1 -1
  51. package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +1 -1
  52. package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +1 -1
  53. package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +1 -1
  54. package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +1 -1
  55. package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +1 -1
  56. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.cjs +1 -1
  57. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +1 -1
  58. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +1 -1
  59. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.d.cts +1 -1
  60. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +1 -1
  61. package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +1 -1
  62. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +1 -1
  63. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.d.cts +1 -1
  64. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +1 -1
  65. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.d.cts +1 -1
  66. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +1 -1
  67. package/dist/lib/cjs/obsidian/components/setting-components/date-component.d.cts +1 -1
  68. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +1 -1
  69. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.d.cts +1 -1
  70. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +1 -1
  71. package/dist/lib/cjs/obsidian/components/setting-components/email-component.d.cts +1 -1
  72. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +1 -1
  73. package/dist/lib/cjs/obsidian/components/setting-components/file-component.d.cts +1 -1
  74. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +1 -1
  75. package/dist/lib/cjs/obsidian/components/setting-components/month-component.d.cts +1 -1
  76. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +1 -1
  77. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.d.cts +1 -1
  78. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +1 -1
  79. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.d.cts +1 -1
  80. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +1 -1
  81. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.d.cts +1 -1
  82. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +1 -1
  83. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.d.cts +1 -1
  84. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +1 -1
  85. package/dist/lib/cjs/obsidian/components/setting-components/number-component.d.cts +1 -1
  86. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +1 -1
  87. package/dist/lib/cjs/obsidian/components/setting-components/password-component.d.cts +1 -1
  88. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +1 -1
  89. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.d.cts +1 -1
  90. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +1 -1
  91. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.d.cts +1 -1
  92. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +1 -1
  93. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.d.cts +1 -1
  94. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +1 -1
  95. package/dist/lib/cjs/obsidian/components/setting-components/time-component.d.cts +1 -1
  96. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +1 -1
  97. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.d.cts +1 -1
  98. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +1 -1
  99. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.d.cts +1 -1
  100. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +1 -1
  101. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.d.cts +1 -1
  102. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +1 -1
  103. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.d.cts +1 -1
  104. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +1 -1
  105. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.d.cts +1 -1
  106. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +1 -1
  107. package/dist/lib/cjs/obsidian/components/setting-components/url-component.d.cts +1 -1
  108. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +1 -1
  109. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.d.cts +1 -1
  110. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +1 -1
  111. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.d.cts +1 -1
  112. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +1 -1
  113. package/dist/lib/cjs/obsidian/components/setting-components/week-component.d.cts +1 -1
  114. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +1 -1
  115. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +1 -1
  116. package/dist/lib/cjs/obsidian/dataview-link.cjs +1 -1
  117. package/dist/lib/cjs/obsidian/dataview-link.d.cts +1 -1
  118. package/dist/lib/cjs/obsidian/dataview.cjs +1 -1
  119. package/dist/lib/cjs/obsidian/dataview.d.cts +1 -1
  120. package/dist/lib/cjs/obsidian/editor.cjs +1 -1
  121. package/dist/lib/cjs/obsidian/editor.d.cts +1 -1
  122. package/dist/lib/cjs/obsidian/file-change.cjs +4 -4
  123. package/dist/lib/cjs/obsidian/file-change.d.cts +4 -4
  124. package/dist/lib/cjs/obsidian/file-manager.cjs +2 -2
  125. package/dist/lib/cjs/obsidian/file-manager.d.cts +1 -1
  126. package/dist/lib/cjs/obsidian/file-system.cjs +1 -1
  127. package/dist/lib/cjs/obsidian/file-system.d.cts +1 -1
  128. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +1 -1
  129. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.d.cts +1 -1
  130. package/dist/lib/cjs/obsidian/frontmatter.cjs +1 -1
  131. package/dist/lib/cjs/obsidian/frontmatter.d.cts +1 -1
  132. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.cjs +1 -1
  133. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +1 -1
  134. package/dist/lib/cjs/obsidian/i18n/default-translations-base.cjs +1 -1
  135. package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +1 -1
  136. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +1 -1
  137. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -1
  138. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +1 -1
  139. package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +1 -1
  140. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +1 -1
  141. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +1 -1
  142. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +1 -1
  143. package/dist/lib/cjs/obsidian/is-in-obsidian.d.cts +1 -1
  144. package/dist/lib/cjs/obsidian/link.cjs +16 -12
  145. package/dist/lib/cjs/obsidian/link.d.cts +1 -1
  146. package/dist/lib/cjs/obsidian/logger.cjs +1 -1
  147. package/dist/lib/cjs/obsidian/logger.d.cts +1 -1
  148. package/dist/lib/cjs/obsidian/loop.cjs +1 -1
  149. package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
  150. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +5 -5
  151. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -2
  152. package/dist/lib/cjs/obsidian/markdown-view.cjs +1 -1
  153. package/dist/lib/cjs/obsidian/markdown-view.d.cts +1 -1
  154. package/dist/lib/cjs/obsidian/markdown.cjs +1 -1
  155. package/dist/lib/cjs/obsidian/markdown.d.cts +1 -1
  156. package/dist/lib/cjs/obsidian/metadata-cache.cjs +1 -1
  157. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +1 -1
  158. package/dist/lib/cjs/obsidian/modals/alert.cjs +1 -1
  159. package/dist/lib/cjs/obsidian/modals/alert.d.cts +1 -1
  160. package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
  161. package/dist/lib/cjs/obsidian/modals/confirm.d.cts +1 -1
  162. package/dist/lib/cjs/obsidian/modals/modal-base.cjs +1 -1
  163. package/dist/lib/cjs/obsidian/modals/modal-base.d.cts +1 -1
  164. package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -1
  165. package/dist/lib/cjs/obsidian/modals/prompt.d.cts +1 -1
  166. package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
  167. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
  168. package/dist/lib/cjs/obsidian/monkey-around.cjs +1 -1
  169. package/dist/lib/cjs/obsidian/monkey-around.d.cts +1 -1
  170. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +1 -1
  171. package/dist/lib/cjs/obsidian/obsidian-settings.d.cts +1 -1
  172. package/dist/lib/cjs/obsidian/pdf.cjs +1 -1
  173. package/dist/lib/cjs/obsidian/pdf.d.cts +1 -1
  174. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +1 -1
  175. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +1 -1
  176. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +1 -1
  177. package/dist/lib/cjs/obsidian/plugin/path-settings.d.cts +1 -1
  178. package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +1 -1
  179. package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +1 -1
  180. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +1 -1
  181. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +1 -1
  182. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +1 -1
  183. package/dist/lib/cjs/obsidian/plugin/plugin-id.d.cts +1 -1
  184. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +1 -1
  185. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +1 -1
  186. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +1 -1
  187. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.d.cts +1 -1
  188. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.cjs +1 -1
  189. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +1 -1
  190. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +1 -1
  191. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +1 -1
  192. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +1 -1
  193. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +1 -1
  194. package/dist/lib/cjs/obsidian/queue.cjs +1 -1
  195. package/dist/lib/cjs/obsidian/queue.d.cts +1 -1
  196. package/dist/lib/cjs/obsidian/react/app-context.cjs +1 -1
  197. package/dist/lib/cjs/obsidian/react/app-context.d.cts +1 -1
  198. package/dist/lib/cjs/obsidian/reference.cjs +1 -1
  199. package/dist/lib/cjs/obsidian/reference.d.cts +1 -1
  200. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +1 -1
  201. package/dist/lib/cjs/obsidian/rename-delete-handler.d.cts +1 -1
  202. package/dist/lib/cjs/obsidian/resource-url.cjs +1 -1
  203. package/dist/lib/cjs/obsidian/resource-url.d.cts +1 -1
  204. package/dist/lib/cjs/obsidian/setting-ex.cjs +1 -1
  205. package/dist/lib/cjs/obsidian/setting-ex.d.cts +1 -1
  206. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +1 -1
  207. package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +1 -1
  208. package/dist/lib/cjs/obsidian/validation.cjs +1 -1
  209. package/dist/lib/cjs/obsidian/validation.d.cts +1 -1
  210. package/dist/lib/cjs/obsidian/vault-delete.cjs +1 -1
  211. package/dist/lib/cjs/obsidian/vault-delete.d.cts +1 -1
  212. package/dist/lib/cjs/obsidian/vault.cjs +2 -2
  213. package/dist/lib/cjs/obsidian/vault.d.cts +8 -2
  214. package/dist/lib/cjs/obsidian/workspace.cjs +1 -1
  215. package/dist/lib/cjs/obsidian/workspace.d.cts +1 -1
  216. package/dist/lib/cjs/path.cjs +1 -1
  217. package/dist/lib/cjs/path.d.cts +1 -1
  218. package/dist/lib/cjs/reg-exp.cjs +1 -1
  219. package/dist/lib/cjs/reg-exp.d.cts +1 -1
  220. package/dist/lib/cjs/script-utils/build.cjs +1 -1
  221. package/dist/lib/cjs/script-utils/build.d.cts +1 -1
  222. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +3 -3
  223. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.cts +1 -1
  224. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +1 -1
  225. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
  226. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +1 -1
  227. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +1 -1
  228. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +1 -1
  229. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.d.cts +1 -1
  230. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +1 -1
  231. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.cts +1 -1
  232. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +2 -2
  233. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
  234. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
  235. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
  236. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +1 -1
  237. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
  238. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +1 -1
  239. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
  240. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +1 -1
  241. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
  242. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +1 -1
  243. package/dist/lib/cjs/script-utils/bundlers/esbuild.d.cts +1 -1
  244. package/dist/lib/cjs/script-utils/cli-utils.cjs +1 -1
  245. package/dist/lib/cjs/script-utils/cli-utils.d.cts +1 -1
  246. package/dist/lib/cjs/script-utils/code-generator.cjs +1 -1
  247. package/dist/lib/cjs/script-utils/code-generator.d.cts +1 -1
  248. package/dist/lib/cjs/script-utils/commitlint-config.cjs +1 -1
  249. package/dist/lib/cjs/script-utils/commitlint-config.d.cts +1 -1
  250. package/dist/lib/cjs/script-utils/exec.cjs +1 -1
  251. package/dist/lib/cjs/script-utils/exec.d.cts +1 -1
  252. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +1 -1
  253. package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +1 -1
  254. package/dist/lib/cjs/script-utils/fs.cjs +1 -1
  255. package/dist/lib/cjs/script-utils/fs.d.cts +1 -1
  256. package/dist/lib/cjs/script-utils/json.cjs +1 -1
  257. package/dist/lib/cjs/script-utils/json.d.cts +1 -1
  258. package/dist/lib/cjs/script-utils/linters/cspell.cjs +1 -1
  259. package/dist/lib/cjs/script-utils/linters/cspell.d.cts +1 -1
  260. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +1 -1
  261. package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +1 -1
  262. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +1 -1
  263. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +1 -1
  264. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +1 -1
  265. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +1 -1
  266. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +1 -1
  267. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +1 -1
  268. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.d.cts +1 -1
  269. package/dist/lib/cjs/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +3 -1
  270. package/dist/lib/cjs/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +3 -1
  271. package/dist/lib/cjs/script-utils/linters/eslint.cjs +1 -1
  272. package/dist/lib/cjs/script-utils/linters/eslint.d.cts +1 -1
  273. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +1 -1
  274. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +1 -1
  275. package/dist/lib/cjs/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1 -1
  276. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +1 -1
  277. package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +1 -1
  278. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +1 -1
  279. package/dist/lib/cjs/script-utils/nano-staged-config.d.cts +1 -1
  280. package/dist/lib/cjs/script-utils/npm-publish.cjs +1 -1
  281. package/dist/lib/cjs/script-utils/npm-publish.d.cts +1 -1
  282. package/dist/lib/cjs/script-utils/npm-run.cjs +1 -1
  283. package/dist/lib/cjs/script-utils/npm-run.d.cts +1 -1
  284. package/dist/lib/cjs/script-utils/npm.cjs +1 -1
  285. package/dist/lib/cjs/script-utils/npm.d.cts +1 -1
  286. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +1 -1
  287. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +1 -1
  288. package/dist/lib/cjs/script-utils/root.cjs +1 -1
  289. package/dist/lib/cjs/script-utils/root.d.cts +1 -1
  290. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
  291. package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +1 -1
  292. package/dist/lib/cjs/script-utils/version.cjs +1 -1
  293. package/dist/lib/cjs/script-utils/version.d.cts +1 -1
  294. package/dist/lib/cjs/string.cjs +14 -14
  295. package/dist/lib/cjs/string.d.cts +9 -5
  296. package/dist/lib/cjs/transformers/date-transformer.cjs +1 -1
  297. package/dist/lib/cjs/transformers/date-transformer.d.cts +1 -1
  298. package/dist/lib/cjs/transformers/duration-transformer.cjs +1 -1
  299. package/dist/lib/cjs/transformers/duration-transformer.d.cts +1 -1
  300. package/dist/lib/cjs/transformers/group-transformer.cjs +1 -1
  301. package/dist/lib/cjs/transformers/group-transformer.d.cts +1 -1
  302. package/dist/lib/cjs/transformers/map-transformer.cjs +1 -1
  303. package/dist/lib/cjs/transformers/map-transformer.d.cts +1 -1
  304. package/dist/lib/cjs/transformers/set-transformer.cjs +1 -1
  305. package/dist/lib/cjs/transformers/set-transformer.d.cts +1 -1
  306. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +1 -1
  307. package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +1 -1
  308. package/dist/lib/cjs/transformers/transformer.cjs +1 -1
  309. package/dist/lib/cjs/transformers/transformer.d.cts +1 -1
  310. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +1 -1
  311. package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +1 -1
  312. package/dist/lib/cjs/transformers/typed-transformer.cjs +1 -1
  313. package/dist/lib/cjs/transformers/typed-transformer.d.cts +1 -1
  314. package/dist/lib/cjs/two-way-map.cjs +1 -1
  315. package/dist/lib/cjs/two-way-map.d.cts +1 -1
  316. package/dist/lib/cjs/type-guards.cjs +1 -1
  317. package/dist/lib/cjs/type-guards.d.cts +1 -1
  318. package/dist/lib/cjs/type.cjs +1 -1
  319. package/dist/lib/cjs/type.d.cts +1 -1
  320. package/dist/lib/cjs/url.cjs +1 -1
  321. package/dist/lib/cjs/url.d.cts +1 -1
  322. package/dist/lib/cjs/value-provider.cjs +5 -5
  323. package/dist/lib/cjs/value-provider.d.cts +7 -4
  324. package/dist/lib/esm/@types/debug.d.mts +4 -1
  325. package/dist/lib/esm/abort-controller.d.mts +1 -1
  326. package/dist/lib/esm/abort-controller.mjs +1 -1
  327. package/dist/lib/esm/array.d.mts +1 -1
  328. package/dist/lib/esm/array.mjs +1 -1
  329. package/dist/lib/esm/async-events.d.mts +1 -1
  330. package/dist/lib/esm/async-events.mjs +1 -1
  331. package/dist/lib/esm/async.d.mts +1 -1
  332. package/dist/lib/esm/async.mjs +1 -1
  333. package/dist/lib/esm/blob.d.mts +1 -1
  334. package/dist/lib/esm/blob.mjs +1 -1
  335. package/dist/lib/esm/codemirror/state-field-spec.d.mts +1 -1
  336. package/dist/lib/esm/css-class.d.mts +1 -1
  337. package/dist/lib/esm/css-class.mjs +1 -1
  338. package/dist/lib/esm/debug-controller.d.mts +1 -1
  339. package/dist/lib/esm/debug.d.mts +1 -1
  340. package/dist/lib/esm/debug.mjs +1 -1
  341. package/dist/lib/esm/enum.d.mts +1 -1
  342. package/dist/lib/esm/enum.mjs +1 -1
  343. package/dist/lib/esm/error.d.mts +1 -1
  344. package/dist/lib/esm/error.mjs +1 -1
  345. package/dist/lib/esm/function.d.mts +1 -1
  346. package/dist/lib/esm/function.mjs +1 -1
  347. package/dist/lib/esm/html-element.d.mts +1 -1
  348. package/dist/lib/esm/html-element.mjs +1 -1
  349. package/dist/lib/esm/library.d.mts +1 -1
  350. package/dist/lib/esm/library.mjs +2 -2
  351. package/dist/lib/esm/object-utils.d.mts +1 -1
  352. package/dist/lib/esm/object-utils.mjs +2 -2
  353. package/dist/lib/esm/obsidian/@types/i18next.d.mts +1 -1
  354. package/dist/lib/esm/obsidian/app.d.mts +1 -1
  355. package/dist/lib/esm/obsidian/app.mjs +1 -1
  356. package/dist/lib/esm/obsidian/async-with-notice.d.mts +1 -1
  357. package/dist/lib/esm/obsidian/async-with-notice.mjs +1 -1
  358. package/dist/lib/esm/obsidian/attachment-path.d.mts +1 -1
  359. package/dist/lib/esm/obsidian/attachment-path.mjs +1 -1
  360. package/dist/lib/esm/obsidian/backlink.d.mts +1 -1
  361. package/dist/lib/esm/obsidian/backlink.mjs +1 -1
  362. package/dist/lib/esm/obsidian/callout.d.mts +1 -1
  363. package/dist/lib/esm/obsidian/callout.mjs +1 -1
  364. package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +1 -1
  365. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +1 -1
  366. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +1 -1
  367. package/dist/lib/esm/obsidian/commands/command-base.d.mts +1 -1
  368. package/dist/lib/esm/obsidian/commands/command-base.mjs +1 -1
  369. package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +1 -1
  370. package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +1 -1
  371. package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +1 -1
  372. package/dist/lib/esm/obsidian/commands/file-command-base.mjs +1 -1
  373. package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +1 -1
  374. package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +1 -1
  375. package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +1 -1
  376. package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +1 -1
  377. package/dist/lib/esm/obsidian/components/all-windows-event-handler.d.mts +1 -1
  378. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +1 -1
  379. package/dist/lib/esm/obsidian/components/async-events-component.d.mts +1 -1
  380. package/dist/lib/esm/obsidian/components/async-events-component.mjs +1 -1
  381. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.d.mts +1 -1
  382. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +1 -1
  383. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.d.mts +1 -1
  384. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +1 -1
  385. package/dist/lib/esm/obsidian/components/setting-components/date-component.d.mts +1 -1
  386. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +1 -1
  387. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.d.mts +1 -1
  388. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +1 -1
  389. package/dist/lib/esm/obsidian/components/setting-components/email-component.d.mts +1 -1
  390. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +1 -1
  391. package/dist/lib/esm/obsidian/components/setting-components/file-component.d.mts +1 -1
  392. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +1 -1
  393. package/dist/lib/esm/obsidian/components/setting-components/month-component.d.mts +1 -1
  394. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +1 -1
  395. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.d.mts +1 -1
  396. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +1 -1
  397. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.d.mts +1 -1
  398. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +1 -1
  399. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.d.mts +1 -1
  400. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +1 -1
  401. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.d.mts +1 -1
  402. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +1 -1
  403. package/dist/lib/esm/obsidian/components/setting-components/number-component.d.mts +1 -1
  404. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +1 -1
  405. package/dist/lib/esm/obsidian/components/setting-components/password-component.d.mts +1 -1
  406. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +1 -1
  407. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.d.mts +1 -1
  408. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +1 -1
  409. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.d.mts +1 -1
  410. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +1 -1
  411. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.d.mts +1 -1
  412. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +1 -1
  413. package/dist/lib/esm/obsidian/components/setting-components/time-component.d.mts +1 -1
  414. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +1 -1
  415. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.d.mts +1 -1
  416. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +1 -1
  417. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.d.mts +1 -1
  418. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +1 -1
  419. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.d.mts +1 -1
  420. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +1 -1
  421. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.d.mts +1 -1
  422. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +1 -1
  423. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.d.mts +1 -1
  424. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +1 -1
  425. package/dist/lib/esm/obsidian/components/setting-components/url-component.d.mts +1 -1
  426. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +1 -1
  427. package/dist/lib/esm/obsidian/components/setting-components/validator-component.d.mts +1 -1
  428. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +1 -1
  429. package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.d.mts +1 -1
  430. package/dist/lib/esm/obsidian/components/setting-components/week-component.d.mts +1 -1
  431. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +1 -1
  432. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +1 -1
  433. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +1 -1
  434. package/dist/lib/esm/obsidian/dataview-link.d.mts +1 -1
  435. package/dist/lib/esm/obsidian/dataview-link.mjs +1 -1
  436. package/dist/lib/esm/obsidian/dataview.d.mts +1 -1
  437. package/dist/lib/esm/obsidian/dataview.mjs +1 -1
  438. package/dist/lib/esm/obsidian/editor.d.mts +1 -1
  439. package/dist/lib/esm/obsidian/editor.mjs +1 -1
  440. package/dist/lib/esm/obsidian/file-change.d.mts +4 -4
  441. package/dist/lib/esm/obsidian/file-change.mjs +4 -4
  442. package/dist/lib/esm/obsidian/file-manager.d.mts +1 -1
  443. package/dist/lib/esm/obsidian/file-manager.mjs +2 -2
  444. package/dist/lib/esm/obsidian/file-system.d.mts +1 -1
  445. package/dist/lib/esm/obsidian/file-system.mjs +1 -1
  446. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.d.mts +1 -1
  447. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +1 -1
  448. package/dist/lib/esm/obsidian/frontmatter.d.mts +1 -1
  449. package/dist/lib/esm/obsidian/frontmatter.mjs +1 -1
  450. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +1 -1
  451. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +1 -1
  452. package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +1 -1
  453. package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +1 -1
  454. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +1 -1
  455. package/dist/lib/esm/obsidian/i18n/i18n.mjs +1 -1
  456. package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +1 -1
  457. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +1 -1
  458. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +1 -1
  459. package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +1 -1
  460. package/dist/lib/esm/obsidian/is-in-obsidian.d.mts +1 -1
  461. package/dist/lib/esm/obsidian/is-in-obsidian.mjs +1 -1
  462. package/dist/lib/esm/obsidian/link.d.mts +1 -1
  463. package/dist/lib/esm/obsidian/link.mjs +16 -12
  464. package/dist/lib/esm/obsidian/logger.d.mts +1 -1
  465. package/dist/lib/esm/obsidian/logger.mjs +1 -1
  466. package/dist/lib/esm/obsidian/loop.d.mts +1 -1
  467. package/dist/lib/esm/obsidian/loop.mjs +1 -1
  468. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -2
  469. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +5 -5
  470. package/dist/lib/esm/obsidian/markdown-view.d.mts +1 -1
  471. package/dist/lib/esm/obsidian/markdown-view.mjs +1 -1
  472. package/dist/lib/esm/obsidian/markdown.d.mts +1 -1
  473. package/dist/lib/esm/obsidian/markdown.mjs +1 -1
  474. package/dist/lib/esm/obsidian/metadata-cache.d.mts +1 -1
  475. package/dist/lib/esm/obsidian/metadata-cache.mjs +1 -1
  476. package/dist/lib/esm/obsidian/modals/alert.d.mts +1 -1
  477. package/dist/lib/esm/obsidian/modals/alert.mjs +1 -1
  478. package/dist/lib/esm/obsidian/modals/confirm.d.mts +1 -1
  479. package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
  480. package/dist/lib/esm/obsidian/modals/modal-base.d.mts +1 -1
  481. package/dist/lib/esm/obsidian/modals/modal-base.mjs +1 -1
  482. package/dist/lib/esm/obsidian/modals/prompt.d.mts +1 -1
  483. package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -1
  484. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
  485. package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
  486. package/dist/lib/esm/obsidian/monkey-around.d.mts +1 -1
  487. package/dist/lib/esm/obsidian/monkey-around.mjs +1 -1
  488. package/dist/lib/esm/obsidian/obsidian-settings.d.mts +1 -1
  489. package/dist/lib/esm/obsidian/obsidian-settings.mjs +1 -1
  490. package/dist/lib/esm/obsidian/pdf.d.mts +1 -1
  491. package/dist/lib/esm/obsidian/pdf.mjs +1 -1
  492. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +1 -1
  493. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
  494. package/dist/lib/esm/obsidian/plugin/path-settings.d.mts +1 -1
  495. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +1 -1
  496. package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +1 -1
  497. package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +1 -1
  498. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +1 -1
  499. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +1 -1
  500. package/dist/lib/esm/obsidian/plugin/plugin-id.d.mts +1 -1
  501. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +1 -1
  502. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +1 -1
  503. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +1 -1
  504. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.d.mts +1 -1
  505. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +1 -1
  506. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +1 -1
  507. package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +1 -1
  508. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +1 -1
  509. package/dist/lib/esm/obsidian/plugin/plugin.mjs +1 -1
  510. package/dist/lib/esm/obsidian/queue.d.mts +1 -1
  511. package/dist/lib/esm/obsidian/queue.mjs +1 -1
  512. package/dist/lib/esm/obsidian/react/app-context.d.mts +1 -1
  513. package/dist/lib/esm/obsidian/react/app-context.mjs +1 -1
  514. package/dist/lib/esm/obsidian/reference.d.mts +1 -1
  515. package/dist/lib/esm/obsidian/reference.mjs +1 -1
  516. package/dist/lib/esm/obsidian/rename-delete-handler.d.mts +1 -1
  517. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +1 -1
  518. package/dist/lib/esm/obsidian/resource-url.d.mts +1 -1
  519. package/dist/lib/esm/obsidian/resource-url.mjs +1 -1
  520. package/dist/lib/esm/obsidian/setting-ex.d.mts +1 -1
  521. package/dist/lib/esm/obsidian/setting-ex.mjs +1 -1
  522. package/dist/lib/esm/obsidian/setting-group-ex.d.mts +1 -1
  523. package/dist/lib/esm/obsidian/setting-group-ex.mjs +1 -1
  524. package/dist/lib/esm/obsidian/validation.d.mts +1 -1
  525. package/dist/lib/esm/obsidian/validation.mjs +1 -1
  526. package/dist/lib/esm/obsidian/vault-delete.d.mts +1 -1
  527. package/dist/lib/esm/obsidian/vault-delete.mjs +1 -1
  528. package/dist/lib/esm/obsidian/vault.d.mts +8 -2
  529. package/dist/lib/esm/obsidian/vault.mjs +2 -2
  530. package/dist/lib/esm/obsidian/workspace.d.mts +1 -1
  531. package/dist/lib/esm/obsidian/workspace.mjs +1 -1
  532. package/dist/lib/esm/path.d.mts +1 -1
  533. package/dist/lib/esm/path.mjs +1 -1
  534. package/dist/lib/esm/reg-exp.d.mts +1 -1
  535. package/dist/lib/esm/reg-exp.mjs +1 -1
  536. package/dist/lib/esm/script-utils/build.d.mts +1 -1
  537. package/dist/lib/esm/script-utils/build.mjs +1 -1
  538. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.mts +1 -1
  539. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +3 -3
  540. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
  541. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +1 -1
  542. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +1 -1
  543. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +1 -1
  544. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.d.mts +1 -1
  545. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +1 -1
  546. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.mts +1 -1
  547. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +1 -1
  548. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
  549. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -2
  550. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
  551. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  552. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
  553. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +1 -1
  554. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
  555. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +1 -1
  556. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -1
  557. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +1 -1
  558. package/dist/lib/esm/script-utils/bundlers/esbuild.d.mts +1 -1
  559. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +1 -1
  560. package/dist/lib/esm/script-utils/cli-utils.d.mts +1 -1
  561. package/dist/lib/esm/script-utils/cli-utils.mjs +1 -1
  562. package/dist/lib/esm/script-utils/code-generator.d.mts +1 -1
  563. package/dist/lib/esm/script-utils/code-generator.mjs +1 -1
  564. package/dist/lib/esm/script-utils/commitlint-config.d.mts +1 -1
  565. package/dist/lib/esm/script-utils/commitlint-config.mjs +1 -1
  566. package/dist/lib/esm/script-utils/exec.d.mts +1 -1
  567. package/dist/lib/esm/script-utils/exec.mjs +1 -1
  568. package/dist/lib/esm/script-utils/formatters/dprint.d.mts +1 -1
  569. package/dist/lib/esm/script-utils/formatters/dprint.mjs +1 -1
  570. package/dist/lib/esm/script-utils/fs.d.mts +1 -1
  571. package/dist/lib/esm/script-utils/fs.mjs +1 -1
  572. package/dist/lib/esm/script-utils/json.d.mts +1 -1
  573. package/dist/lib/esm/script-utils/json.mjs +1 -1
  574. package/dist/lib/esm/script-utils/linters/cspell.d.mts +1 -1
  575. package/dist/lib/esm/script-utils/linters/cspell.mjs +1 -1
  576. package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +1 -1
  577. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +1 -1
  578. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +1 -1
  579. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +1 -1
  580. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +1 -1
  581. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +1 -1
  582. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +1 -1
  583. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.d.mts +1 -1
  584. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +1 -1
  585. package/dist/lib/esm/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +3 -1
  586. package/dist/lib/esm/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +3 -1
  587. package/dist/lib/esm/script-utils/linters/eslint.d.mts +1 -1
  588. package/dist/lib/esm/script-utils/linters/eslint.mjs +1 -1
  589. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +1 -1
  590. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +1 -1
  591. package/dist/lib/esm/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1 -1
  592. package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +1 -1
  593. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +1 -1
  594. package/dist/lib/esm/script-utils/nano-staged-config.d.mts +1 -1
  595. package/dist/lib/esm/script-utils/nano-staged-config.mjs +1 -1
  596. package/dist/lib/esm/script-utils/npm-publish.d.mts +1 -1
  597. package/dist/lib/esm/script-utils/npm-publish.mjs +1 -1
  598. package/dist/lib/esm/script-utils/npm-run.d.mts +1 -1
  599. package/dist/lib/esm/script-utils/npm-run.mjs +1 -1
  600. package/dist/lib/esm/script-utils/npm.d.mts +1 -1
  601. package/dist/lib/esm/script-utils/npm.mjs +1 -1
  602. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +1 -1
  603. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
  604. package/dist/lib/esm/script-utils/root.d.mts +1 -1
  605. package/dist/lib/esm/script-utils/root.mjs +1 -1
  606. package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +1 -1
  607. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
  608. package/dist/lib/esm/script-utils/version.d.mts +1 -1
  609. package/dist/lib/esm/script-utils/version.mjs +1 -1
  610. package/dist/lib/esm/string.d.mts +9 -5
  611. package/dist/lib/esm/string.mjs +14 -14
  612. package/dist/lib/esm/transformers/date-transformer.d.mts +1 -1
  613. package/dist/lib/esm/transformers/date-transformer.mjs +1 -1
  614. package/dist/lib/esm/transformers/duration-transformer.d.mts +1 -1
  615. package/dist/lib/esm/transformers/duration-transformer.mjs +1 -1
  616. package/dist/lib/esm/transformers/group-transformer.d.mts +1 -1
  617. package/dist/lib/esm/transformers/group-transformer.mjs +1 -1
  618. package/dist/lib/esm/transformers/map-transformer.d.mts +1 -1
  619. package/dist/lib/esm/transformers/map-transformer.mjs +1 -1
  620. package/dist/lib/esm/transformers/set-transformer.d.mts +1 -1
  621. package/dist/lib/esm/transformers/set-transformer.mjs +1 -1
  622. package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +1 -1
  623. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +1 -1
  624. package/dist/lib/esm/transformers/transformer.d.mts +1 -1
  625. package/dist/lib/esm/transformers/transformer.mjs +1 -1
  626. package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +1 -1
  627. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +1 -1
  628. package/dist/lib/esm/transformers/typed-transformer.d.mts +1 -1
  629. package/dist/lib/esm/transformers/typed-transformer.mjs +1 -1
  630. package/dist/lib/esm/two-way-map.d.mts +1 -1
  631. package/dist/lib/esm/two-way-map.mjs +1 -1
  632. package/dist/lib/esm/type-guards.d.mts +1 -1
  633. package/dist/lib/esm/type-guards.mjs +1 -1
  634. package/dist/lib/esm/type.d.mts +1 -1
  635. package/dist/lib/esm/type.mjs +1 -1
  636. package/dist/lib/esm/url.d.mts +1 -1
  637. package/dist/lib/esm/url.mjs +1 -1
  638. package/dist/lib/esm/value-provider.d.mts +7 -4
  639. package/dist/lib/esm/value-provider.mjs +5 -5
  640. package/package.json +1 -1
  641. package/dist/lib/cjs/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines.d.cts +0 -14
  642. package/dist/lib/esm/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines.d.mts +0 -14
  643. package/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines/package.json +0 -4
@@ -391,7 +391,7 @@ async function process(app, pathOrFile, newContentProvider, options = {}) {
391
391
  if (oldContent === null) {
392
392
  return handleMissingFile();
393
393
  }
394
- const newContent = await (0, import_value_provider.resolveValue)(newContentProvider, abortSignal, oldContent);
394
+ const newContent = await (0, import_value_provider.resolveValue)(newContentProvider, { abortSignal, content: oldContent });
395
395
  abortSignal.throwIfAborted();
396
396
  if (newContent === null) {
397
397
  return false;
@@ -537,4 +537,4 @@ async function invokeFileActionSafe(app, pathOrFile, fileAction) {
537
537
  saveNote,
538
538
  trashSafe
539
539
  });
540
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgTGlzdGVkRmlsZXNcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBNYXJrZG93blZpZXcsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7XG4gIGdldERhdGFBZGFwdGVyRXgsXG4gIHBhcmVudEZvbGRlclBhdGgsXG4gIFZpZXdUeXBlXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICcuLi9hc3luYy50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi92YWx1ZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckFic3RyYWN0RmlsZSxcbiAgUGF0aE9yRmlsZSxcbiAgUGF0aE9yRm9sZGVyXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbEFueSB9IGZyb20gJy4uL2Fib3J0LWNvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pblxufSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB7IHJldHJ5V2l0aFRpbWVvdXROb3RpY2UgfSBmcm9tICcuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmltcG9ydCB7XG4gIGxvY2tFZGl0b3IsXG4gIHVubG9ja0VkaXRvclxufSBmcm9tICcuL2VkaXRvci50cyc7XG5pbXBvcnQge1xuICBhc0ZpbGUsXG4gIGFzRm9sZGVyLFxuICBGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0QWJzdHJhY3RGaWxlLFxuICBnZXRBYnN0cmFjdEZpbGVPck51bGwsXG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNGaWxlLFxuICBpc01hcmtkb3duRmlsZSxcbiAgaXNOb3RlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcHJvY2Vzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBmYWlsIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbG9jayB0aGUgZWRpdG9yIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGZpbGUuIEFwcGxpY2FibGUgb25seSBmb3IgbWFya2Rvd24gZmlsZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkTG9ja0VkaXRvcldoaWxlUHJvY2Vzc2luZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gY29weS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIGNvcHkgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgcGF0aCBvZiB0aGUgY29waWVkIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBpZiAoZmlsZS5wYXRoID09PSBuZXdQYXRoKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICBjb25zdCBuZXdGb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChuZXdQYXRoKTtcbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIG5ld0ZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IG5ld0F2YWlsYWJsZVBhdGggPSBnZXRBdmFpbGFibGVQYXRoKGFwcCwgbmV3UGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY29weShmaWxlLCBuZXdBdmFpbGFibGVQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhuZXdBdmFpbGFibGVQYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCB0cmFzaFNhZmUoYXBwLCBmaWxlKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZm9sZGVyIGluIHRoZSB2YXVsdCB3aXRoIHBhcmVudCBmb2xkZXJzIGlmIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gbm9vcEFzeW5jO1xuICB9XG5cbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZvbGRlciA9IGdldEZvbGRlcihhcHAsIHBhdGgpO1xuICAgIGlmICghZm9sZGVyLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IHRyYXNoU2FmZShhcHAsIGZvbGRlcik7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWxldGVzIGFuIGVtcHR5IGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBmb2xkZXIgdG8gZGVsZXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmb2xkZXIgaXMgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUVtcHR5Rm9sZGVyKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyKTtcbiAgaWYgKCFmb2xkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFhd2FpdCBpc0VtcHR5Rm9sZGVyKGFwcCwgZm9sZGVyKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCB0cmFzaFNhZmUoYXBwLCBmb2xkZXIpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZW1wdHkgZm9sZGVyIGhpZXJhcmNoeSBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIHN0YXJ0IHJlbW92aW5nIGVtcHR5IGhpZXJhcmNoeSBmcm9tLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbXB0eSBoaWVyYXJjaHkgaXMgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5KGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IG51bGwgfCBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlcik7XG5cbiAgd2hpbGUgKGZvbGRlcikge1xuICAgIGlmICghYXdhaXQgaXNFbXB0eUZvbGRlcihhcHAsIGZvbGRlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZm9sZGVyLnBhcmVudDtcbiAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlcihhcHAsIGZvbGRlcik7XG4gICAgZm9sZGVyID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcGF0aCBmb3IgYSBmaWxlIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXIgdG8gZ2V0IGEgc2FmZSBwYXRoIGZvci5cbiAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgdGhlIGZpbGUgc3lzdGVtIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHBhdGggZm9yIHRoZSBmaWxlIG9yIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZVBhdGhTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcsIHR5cGU6IEZpbGVTeXN0ZW1UeXBlKTogc3RyaW5nIHtcbiAgY29uc3QgYWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG5cbiAgaWYgKGFic3RyYWN0RmlsZSAmJiBnZXRGaWxlU3lzdGVtVHlwZShhYnN0cmFjdEZpbGUpID09PSB0eXBlKSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIHBhdGgpO1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXZhaWxhYmxlIHBhdGggZm9yIGEgZmlsZSBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihkaXJuYW1lKHBhdGgpLCBiYXNlbmFtZShwYXRoLCBleHQpKSwgZXh0LnNsaWNlKDEpKTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2FmZSBmaWxlIHBhdGggZm9yIGEgZmlsZSBvciBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgb3IgZm9sZGVyIHRvIGdldCBhIHNhZmUgcGF0aCBmb3IuXG4gKiBAcmV0dXJucyBUaGUgc2FmZSBwYXRoIGZvciB0aGUgZmlsZSBvciBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlUGF0aFNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZShhcHAsIHBhdGgsIEZpbGVTeXN0ZW1UeXBlLkZpbGUpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIGZvbGRlciBwYXRoIGZvciBhIGZpbGUgb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlciB0byBnZXQgYSBzYWZlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIHNhZmUgcGF0aCBmb3IgdGhlIGZpbGUgb3IgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyUGF0aFNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZShhcHAsIHBhdGgsIEZpbGVTeXN0ZW1UeXBlLkZvbGRlcik7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIE1hcmtkb3duIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIE1hcmtkb3duIGZpbGVzIHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBhbGwgbm90ZSBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgbm90ZSBmaWxlcyBpbiB0aGUgdmF1bHQgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5vdGVGaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEFsbExvYWRlZEZpbGVzKCkuZmlsdGVyKChmaWxlKSA9PiBpc0ZpbGUoZmlsZSkgJiYgaXNOb3RlKGFwcCwgZmlsZSkpLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpIGFzIFRGaWxlW107XG59XG5cbi8qKlxuICogR2V0cyBvciBjcmVhdGVzIGFuIGFic3RyYWN0IGZpbGUgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBhYnN0cmFjdCBmaWxlIHRvIGdldCBvciBjcmVhdGUuXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBhYnN0cmFjdCBmaWxlIHRvIGdldCBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhYnN0cmFjdCBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcsIHR5cGU6IEZpbGVTeXN0ZW1UeXBlKTogUHJvbWlzZTxUQWJzdHJhY3RGaWxlPiB7XG4gIHBhdGggPSBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZShhcHAsIHBhdGgsIHR5cGUpO1xuICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGFic3RyYWN0RmlsZSkge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpbGVTeXN0ZW1UeXBlLkZpbGU6XG4gICAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gICAgY2FzZSBGaWxlU3lzdGVtVHlwZS5Gb2xkZXI6XG4gICAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZpbGUgc3lzdGVtIHR5cGU6ICR7dHlwZSBhcyBzdHJpbmd9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmaWxlIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgcmV0dXJuIGFzRmlsZShhd2FpdCBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUoYXBwLCBwYXRoLCBGaWxlU3lzdGVtVHlwZS5GaWxlKSk7XG59XG5cbi8qKlxuICogR2V0cyBvciBjcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogSWYgdGhlIGZvbGRlciBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIHRoZSBmb2xkZXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBnZXQgb3IgY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFRGb2xkZXI+IHtcbiAgcmV0dXJuIGFzRm9sZGVyKGF3YWl0IGdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZShhcHAsIHBhdGgsIEZpbGVTeXN0ZW1UeXBlLkZvbGRlcikpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIHJlbmFtZSBwYXRoIGZvciBhIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JBYnN0cmFjdEZpbGUgLSBUaGUgb2xkIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGFic3RyYWN0IGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGFic3RyYWN0IGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG9sZFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlKTtcblxuICBpZiAoZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlKSB7XG4gICAgbGV0IGZvbGRlclBhdGggPSBkaXJuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBub25FeGlzdGluZ1BhdGggPSBiYXNlbmFtZShuZXdQYXRoKTtcbiAgICBsZXQgZm9sZGVyOiBudWxsIHwgVEZvbGRlcjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiAtLSBUaGVyZSBpcyBubyBlbGVnYW50IHdheSB0byBwZXJmb3JtIGluZmluaXRlIGxvb3BzLlxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBmb2xkZXJQYXRoLCB0cnVlKTtcbiAgICAgIGlmIChmb2xkZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBub25FeGlzdGluZ1BhdGggPSBqb2luKGJhc2VuYW1lKGZvbGRlclBhdGgpLCBub25FeGlzdGluZ1BhdGgpO1xuICAgICAgZm9sZGVyUGF0aCA9IGRpcm5hbWUoZm9sZGVyUGF0aCk7XG4gICAgfVxuICAgIG5ld1BhdGggPSBqb2luKGZvbGRlci5nZXRQYXJlbnRQcmVmaXgoKSwgbm9uRXhpc3RpbmdQYXRoKTtcbiAgfVxuXG4gIGlmIChvbGRQYXRoLnRvTG93ZXJDYXNlKCkgPT09IG5ld1BhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG5cbiAgcmV0dXJuIGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGZpbGUgc3lzdGVtIGxvY2sgb2YuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGludm9rZVdpdGhGaWxlU3lzdGVtTG9jayhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZm46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICBmbihjb250ZW50KTtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb2YgYW5vdGhlciBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IHBhdGggb3IgZmlsZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCBwYXRoIG9yIGZpbGUuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaXJzdCBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiB0aGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hpbGQoYXBwOiBBcHAsIGE6IFBhdGhPckFic3RyYWN0RmlsZSwgYjogUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFQYXRoID0gZ2V0UGF0aChhcHAsIGEpO1xuICBjb25zdCBiUGF0aCA9IGdldFBhdGgoYXBwLCBiKTtcblxuICBpZiAoYVBhdGggPT09IGJQYXRoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGJQYXRoID09PSAnLycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhUGF0aC5zdGFydHNXaXRoKGAke2JQYXRofS9gKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvciBzZWxmIG9mIGFub3RoZXIgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCBwYXRoIG9yIGZpbGUuXG4gKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlyc3QgcGF0aCBvciBmaWxlIGlzIGEgY2hpbGQgb3Igc2VsZiBvZiB0aGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hpbGRPclNlbGYoYXBwOiBBcHAsIGE6IFBhdGhPckFic3RyYWN0RmlsZSwgYjogUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFQYXRoID0gZ2V0UGF0aChhcHAsIGEpO1xuICBjb25zdCBiUGF0aCA9IGdldFBhdGgoYXBwLCBiKTtcbiAgcmV0dXJuIGFQYXRoID09PSBiUGF0aCB8fCBpc0NoaWxkKGFwcCwgYSwgYik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZm9sZGVyIGlzIGVtcHR5LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0VtcHR5Rm9sZGVyKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBsaXN0ZWRGaWxlcyA9IGF3YWl0IGxpc3RTYWZlKGFwcCwgZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcikpO1xuICByZXR1cm4gbGlzdGVkRmlsZXMuZmlsZXMubGVuZ3RoID09PSAwICYmIGxpc3RlZEZpbGVzLmZvbGRlcnMubGVuZ3RoID09PSAwO1xufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byBsaXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIHtAbGluayBMaXN0ZWRGaWxlc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTYWZlKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlcik6IFByb21pc2U8TGlzdGVkRmlsZXM+IHtcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpO1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuXG4gIGlmICgoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuc3RhdChwYXRoKSk/LnR5cGUgIT09ICdmb2xkZXInKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYSBmaWxlIHdpdGggcmV0cnkgbG9naWMsIHVwZGF0aW5nIGl0cyBjb250ZW50IGJhc2VkIG9uIGEgcHJvdmlkZWQgdmFsdWUgb3IgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSwgdHlwaWNhbGx5IHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgdmF1bHQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gYmUgcHJvY2Vzc2VkLiBJdCBjYW4gYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIG9yIGEgZmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gbmV3Q29udGVudFByb3ZpZGVyIC0gQSB2YWx1ZSBwcm92aWRlciB0aGF0IHJldHVybnMgdGhlIG5ldyBjb250ZW50IGJhc2VkIG9uIHRoZSBvbGQgY29udGVudCBvZiB0aGUgZmlsZS5cbiAqIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIG9sZCBjb250ZW50IGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSBuZXcgY29udGVudC5cbiAqIElmIGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBpdCBzaG91bGQgcmV0dXJuIGBudWxsYCBpZiB0aGUgcHJvY2VzcyBzaG91bGQgYmUgcmV0cmllZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2VzcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBbc3RyaW5nXT4sXG4gIG9wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge31cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlMgPSB7XG4gICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IHRydWUsXG4gICAgc2hvdWxkTG9ja0VkaXRvcldoaWxlUHJvY2Vzc2luZzogdHJ1ZSxcbiAgICBzaG91bGRTaG93VGltZW91dE5vdGljZTogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBEZWZhdWx0IHZhbHVlLlxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwXG4gIH07XG4gIGNvbnN0IGZ1bGxPcHRpb25zID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCA9IGFib3J0U2lnbmFsQW55KGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsLCBhYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBsZXQgYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmOiBFdmVudFJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRMb2NrRWRpdG9yV2hpbGVQcm9jZXNzaW5nKSB7XG4gICAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldyAmJiBsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gcGF0aCkge1xuICAgICAgICBsb2NrRWRpdG9yKGxlYWYudmlldy5lZGl0b3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFjdGl2ZUxlYWZDaGFuZ2VFdmVudFJlZiA9IGFwcC53b3Jrc3BhY2Uub24oJ2FjdGl2ZS1sZWFmLWNoYW5nZScsIChsZWFmKSA9PiB7XG4gICAgICBpZiAobGVhZj8udmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldyAmJiBsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gcGF0aCkge1xuICAgICAgICBsb2NrRWRpdG9yKGxlYWYudmlldy5lZGl0b3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHtcbiAgICAgIGFzeW5jIG9wZXJhdGlvbkZuKGFib3J0U2lnbmFsKSB7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgY29uc3Qgb2xkQ29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgaWYgKG9sZENvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlTWlzc2luZ0ZpbGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUobmV3Q29udGVudFByb3ZpZGVyLCBhYm9ydFNpZ25hbCwgb2xkQ29udGVudCk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgaWYgKG5ld0NvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNTdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZG9lc0ZpbGVFeGlzdCA9IGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICAgIGF3YWl0IGFwcC52YXVsdC5wcm9jZXNzKGZpbGUsIChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQgIT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgZ2V0TGliRGVidWdnZXIoJ1ZhdWx0OnByb2Nlc3MnKSgnQ29udGVudCBoYXMgY2hhbmdlZCBzaW5jZSBpdCB3YXMgcmVhZC4gUmV0cnlpbmcuLi4nLCB7XG4gICAgICAgICAgICAgICAgYWN0dWFsQ29udGVudDogY29udGVudCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IG9sZENvbnRlbnQsXG4gICAgICAgICAgICAgICAgcGF0aDogZmlsZS5wYXRoXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpc1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkb2VzRmlsZUV4aXN0KSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNTdWNjZXNzO1xuXG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1pc3NpbmdGaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICAgIGlmIChmdWxsT3B0aW9ucy5zaG91bGRGYWlsT25NaXNzaW5nRmlsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvcGVyYXRpb25OYW1lOiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMudmF1bHQucHJvY2Vzc0ZpbGUsIHsgZmlsZVBhdGg6IHBhdGggfSksXG4gICAgICByZXRyeU9wdGlvbnM6IGZ1bGxPcHRpb25zLFxuICAgICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGZ1bGxPcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmPy5lLm9mZnJlZihhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWYpO1xuICAgIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgdW5sb2NrRWRpdG9yKGxlYWYudmlldy5lZGl0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBjb250ZW50IG9mIGEgZmlsZSBzYWZlbHkgZnJvbSB0aGUgdmF1bHQuXG4gKlxuICogSXQgY292ZXJzIHRoZSBjYXNlIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgZHVyaW5nIHRoZSByZWFkaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVhZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgb3IgYG51bGxgIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGxldCBjb250ZW50OiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoZmlsZSkgPT4ge1xuICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgZmlsZSk7XG4gICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogUmVuYW1lcyBhIGZpbGUgc2FmZWx5IGluIHRoZSB2YXVsdC5cbiAqIElmIHRoZSBuZXcgcGF0aCBhbHJlYWR5IGV4aXN0cywgdGhlIGZpbGUgd2lsbCBiZSByZW5hbWVkIHRvIGFuIGF2YWlsYWJsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yQWJzdHJhY3RGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb2xkQWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlKGFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0U2FmZVJlbmFtZVBhdGgoYXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGUsIG5ld1BhdGgpO1xuXG4gIGlmIChvbGRBYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkQWJzdHJhY3RGaWxlLnBhdGggIT09IG5ld1BhdGgpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRBYnN0cmFjdEZpbGUucGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogU2F2ZXMgdGhlIHNwZWNpZmllZCBub3RlIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBub3RlIHRvIGJlIHNhdmVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBub3RlIGlzIHNhdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZU5vdGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldyAmJiBsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gcGF0aCAmJiBsZWFmLnZpZXcuZGlydHkpIHtcbiAgICAgIGF3YWl0IGxlYWYudmlldy5zYXZlKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHJhc2hlcyBhbiBhYnN0cmFjdCBmaWxlIHNhZmVseSBmcm9tIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHRyYXNoLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGlzIHRyYXNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFzaFNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuZXhpc3RzKGZpbGUucGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgZ2V0TGliRGVidWdnZXIoJ1ZhdWx0OnRyYXNoU2FmZScpKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cmFzaGluZyAke2ZpbGUucGF0aH0sIGJ1dCB0aGUgZmlsZSBubyBsb25nZXIgZXhpc3RzLmAsIHsgZXJyb3I6IGUsIHBhdGg6IGZpbGUucGF0aCB9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZmlsZUFjdGlvbjogKGZpbGU6IFRGaWxlKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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
540
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEV2ZW50UmVmLFxuICBMaXN0ZWRGaWxlc1xufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7XG4gIE1hcmtkb3duVmlldyxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgZ2V0RGF0YUFkYXB0ZXJFeCxcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL2FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgUGF0aE9yQWJzdHJhY3RGaWxlLFxuICBQYXRoT3JGaWxlLFxuICBQYXRoT3JGb2xkZXJcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsQW55IH0gZnJvbSAnLi4vYWJvcnQtY29udHJvbGxlci50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vdmFsdWUtcHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dE5vdGljZSB9IGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuaW1wb3J0IHtcbiAgbG9ja0VkaXRvcixcbiAgdW5sb2NrRWRpdG9yXG59IGZyb20gJy4vZWRpdG9yLnRzJztcbmltcG9ydCB7XG4gIGFzRmlsZSxcbiAgYXNGb2xkZXIsXG4gIEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRBYnN0cmFjdEZpbGUsXG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZVN5c3RlbVR5cGUsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBpc0ZpbGUsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuXG4vKipcbiAqIEFyZ3VtZW50cyBmb3Ige0BsaW5rIHByb2Nlc3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRBcmdzIHtcbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9jZXNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzT3B0aW9ucyBleHRlbmRzIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZhaWwgaWYgdGhlIGZpbGUgaXMgbWlzc2luZyBvciBkZWxldGVkLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBsb2NrIHRoZSBlZGl0b3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgZmlsZS4gQXBwbGljYWJsZSBvbmx5IGZvciBtYXJrZG93biBmaWxlcy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRMb2NrRWRpdG9yV2hpbGVQcm9jZXNzaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgdGltZW91dCBub3RpY2UuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvcGllcyBhIGZpbGUgc2FmZWx5IGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byBjb3B5LlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gY29weSB0aGUgZmlsZSB0by5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBjb3BpZWQgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIG9sZFBhdGhPckZpbGUpO1xuXG4gIGlmIChmaWxlLnBhdGggPT09IG5ld1BhdGgpIHtcbiAgICByZXR1cm4gbmV3UGF0aDtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld1BhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jb3B5KGZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb2xkZXIgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIHdhcyBjcmVhdGVkLlxuICogQHRocm93cyBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgY3JlYXRpbmcgdGhlIGZvbGRlciBhbmQgaXQgc3RpbGwgZG9lc24ndCBleGlzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUZvbGRlclNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKHBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmaWxlIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGaWxlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPCgpID0+IFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIG5vb3BBc3luYztcbiAgfVxuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKHBhdGgsICcnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IHRyYXNoU2FmZShhcHAsIGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG5cbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIHBhdGgpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmb2xkZXIuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgdHJhc2hTYWZlKGFwcCwgZm9sZGVyKTtcbiAgICB9XG4gICAgYXdhaXQgZm9sZGVyQ2xlYW51cCgpO1xuICB9O1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYW4gZW1wdHkgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIGZvbGRlciB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZvbGRlciBpcyBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlRW1wdHlGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogbnVsbCB8IFBhdGhPckZvbGRlcik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoT3JGb2xkZXIpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWF3YWl0IGlzRW1wdHlGb2xkZXIoYXBwLCBmb2xkZXIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGF3YWl0IHRyYXNoU2FmZShhcHAsIGZvbGRlcik7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBlbXB0eSBmb2xkZXIgaGllcmFyY2h5IHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBmb2xkZXIgdG8gc3RhcnQgcmVtb3ZpbmcgZW1wdHkgaGllcmFyY2h5IGZyb20uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVtcHR5IGhpZXJhcmNoeSBpcyBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogbnVsbCB8IFBhdGhPckZvbGRlcik6IFByb21pc2U8dm9pZD4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICB3aGlsZSAoZm9sZGVyKSB7XG4gICAgaWYgKCFhd2FpdCBpc0VtcHR5Rm9sZGVyKGFwcCwgZm9sZGVyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSBmb2xkZXIucGFyZW50O1xuICAgIGF3YWl0IGRlbGV0ZUVtcHR5Rm9sZGVyKGFwcCwgZm9sZGVyKTtcbiAgICBmb2xkZXIgPSBwYXJlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIGEgc2FmZSBwYXRoIGZvciBhIGZpbGUgb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlciB0byBnZXQgYSBzYWZlIHBhdGggZm9yLlxuICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgZmlsZSBzeXN0ZW0gb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHNhZmUgcGF0aCBmb3IgdGhlIGZpbGUgb3IgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZywgdHlwZTogRmlsZVN5c3RlbVR5cGUpOiBzdHJpbmcge1xuICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoKTtcblxuICBpZiAoYWJzdHJhY3RGaWxlICYmIGdldEZpbGVTeXN0ZW1UeXBlKGFic3RyYWN0RmlsZSkgPT09IHR5cGUpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoKGFwcCwgcGF0aCk7XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dCA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dCkpLCBleHQuc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzYWZlIGZpbGUgcGF0aCBmb3IgYSBmaWxlIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXIgdG8gZ2V0IGEgc2FmZSBwYXRoIGZvci5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHBhdGggZm9yIHRoZSBmaWxlIG9yIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQYXRoU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldEFic3RyYWN0RmlsZVBhdGhTYWZlKGFwcCwgcGF0aCwgRmlsZVN5c3RlbVR5cGUuRmlsZSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgZm9sZGVyIHBhdGggZm9yIGEgZmlsZSBvciBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgb3IgZm9sZGVyIHRvIGdldCBhIHNhZmUgcGF0aCBmb3IuXG4gKiBAcmV0dXJucyBUaGUgc2FmZSBwYXRoIGZvciB0aGUgZmlsZSBvciBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJQYXRoU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldEFic3RyYWN0RmlsZVBhdGhTYWZlKGFwcCwgcGF0aCwgRmlsZVN5c3RlbVR5cGUuRm9sZGVyKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBub3RlIGZpbGVzIGluIHRoZSB2YXVsdCBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90ZUZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKS5maWx0ZXIoKGZpbGUpID0+IGlzRmlsZShmaWxlKSAmJiBpc05vdGUoYXBwLCBmaWxlKSkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSkgYXMgVEZpbGVbXTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYW4gYWJzdHJhY3QgZmlsZSBzYWZlbHkgaW4gdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJldHVybmVkLlxuICogSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gZ2V0IG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGFic3RyYWN0IGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZywgdHlwZTogRmlsZVN5c3RlbVR5cGUpOiBQcm9taXNlPFRBYnN0cmFjdEZpbGU+IHtcbiAgcGF0aCA9IGdldEFic3RyYWN0RmlsZVBhdGhTYWZlKGFwcCwgcGF0aCwgdHlwZSk7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoYWJzdHJhY3RGaWxlKSB7XG4gICAgcmV0dXJuIGFic3RyYWN0RmlsZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRmlsZVN5c3RlbVR5cGUuRmlsZTpcbiAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKHBhdGgsICcnKTtcbiAgICBjYXNlIEZpbGVTeXN0ZW1UeXBlLkZvbGRlcjpcbiAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZmlsZSBzeXN0ZW0gdHlwZTogJHt0eXBlIGFzIHN0cmluZ31gKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgb3IgY3JlYXRlcyBhIGZpbGUgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIGdldCBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGaWxlU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICByZXR1cm4gYXNGaWxlKGF3YWl0IGdldE9yQ3JlYXRlQWJzdHJhY3RGaWxlU2FmZShhcHAsIHBhdGgsIEZpbGVTeXN0ZW1UeXBlLkZpbGUpKTtcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgYSBmb2xkZXIgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBJZiB0aGUgZm9sZGVyIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJldHVybmVkLlxuICogSWYgdGhlIGZvbGRlciBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGdldCBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZvbGRlclNhZmUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZvbGRlcj4ge1xuICByZXR1cm4gYXNGb2xkZXIoYXdhaXQgZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlKGFwcCwgcGF0aCwgRmlsZVN5c3RlbVR5cGUuRm9sZGVyKSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckFic3RyYWN0RmlsZSAtIFRoZSBvbGQgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmFtZS5cbiAqIEBwYXJhbSBuZXdQYXRoIC0gVGhlIG5ldyBwYXRoIHRvIHJlbmFtZSB0aGUgYWJzdHJhY3QgZmlsZSB0by5cbiAqIEByZXR1cm5zIFRoZSBzYWZlIHJlbmFtZSBwYXRoIGZvciB0aGUgYWJzdHJhY3QgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNhZmVSZW5hbWVQYXRoKGFwcDogQXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgbmV3UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgb2xkUGF0aCA9IGdldFBhdGgoYXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGUpO1xuXG4gIGlmIChnZXREYXRhQWRhcHRlckV4KGFwcCkuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFRoZXJlIGlzIG5vIGVsZWdhbnQgd2F5IHRvIHBlcmZvcm0gaW5maW5pdGUgbG9vcHMuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBmaWxlIHN5c3RlbSBsb2NrLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0gbG9jayBvZi5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgIGZuKGNvbnRlbnQpO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvZiBhbm90aGVyIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcGF0aCBvciBmaWxlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBhdGggb3IgZmlsZS5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpcnN0IHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9mIHRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZChhcHA6IEFwcCwgYTogUGF0aE9yQWJzdHJhY3RGaWxlLCBiOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgY29uc3QgYVBhdGggPSBnZXRQYXRoKGFwcCwgYSk7XG4gIGNvbnN0IGJQYXRoID0gZ2V0UGF0aChhcHAsIGIpO1xuXG4gIGlmIChhUGF0aCA9PT0gYlBhdGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYlBhdGggPT09ICcvJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGFQYXRoLnN0YXJ0c1dpdGgoYCR7YlBhdGh9L2ApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHBhdGggb3IgZmlsZSBpcyBhIGNoaWxkIG9yIHNlbGYgb2YgYW5vdGhlciBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IHBhdGggb3IgZmlsZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCBwYXRoIG9yIGZpbGUuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaXJzdCBwYXRoIG9yIGZpbGUgaXMgYSBjaGlsZCBvciBzZWxmIG9mIHRoZSBzZWNvbmQgcGF0aCBvciBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGlsZE9yU2VsZihhcHA6IEFwcCwgYTogUGF0aE9yQWJzdHJhY3RGaWxlLCBiOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgY29uc3QgYVBhdGggPSBnZXRQYXRoKGFwcCwgYSk7XG4gIGNvbnN0IGJQYXRoID0gZ2V0UGF0aChhcHAsIGIpO1xuICByZXR1cm4gYVBhdGggPT09IGJQYXRoIHx8IGlzQ2hpbGQoYXBwLCBhLCBiKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmb2xkZXIgaXMgZW1wdHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciBpcyBlbXB0eS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzRW1wdHlGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGxpc3RlZEZpbGVzID0gYXdhaXQgbGlzdFNhZmUoYXBwLCBnZXRQYXRoKGFwcCwgcGF0aE9yRm9sZGVyKSk7XG4gIHJldHVybiBsaXN0ZWRGaWxlcy5maWxlcy5sZW5ndGggPT09IDAgJiYgbGlzdGVkRmlsZXMuZm9sZGVycy5sZW5ndGggPT09IDA7XG59XG5cbi8qKlxuICogU2FmZWx5IGxpc3RzIHRoZSBmaWxlcyBhbmQgZm9sZGVycyBhdCB0aGUgc3BlY2lmaWVkIHBhdGggaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGxpc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIExpc3RlZEZpbGVzfSBvYmplY3QgY29udGFpbmluZyB0aGUgbGlzdGVkIGZpbGVzIGFuZCBmb2xkZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNhZmUoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG5cbiAgaWYgKChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5zdGF0KHBhdGgpKT8udHlwZSAhPT0gJ2ZvbGRlcicpIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5saXN0KHBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3JldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgbmV3Q29udGVudFByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPG51bGwgfCBzdHJpbmcsIENvbnRlbnRBcmdzPixcbiAgb3B0aW9uczogUHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUyA9IHtcbiAgICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZTogdHJ1ZSxcbiAgICBzaG91bGRMb2NrRWRpdG9yV2hpbGVQcm9jZXNzaW5nOiB0cnVlLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIERlZmF1bHQgdmFsdWUuXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiA1MDBcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsID0gYWJvcnRTaWduYWxBbnkoZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwsIGFib3J0Q29udHJvbGxlci5zaWduYWwpO1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGxldCBhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWY6IEV2ZW50UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZExvY2tFZGl0b3JXaGlsZVByb2Nlc3NpbmcpIHtcbiAgICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgIGxvY2tFZGl0b3IobGVhZi52aWV3LmVkaXRvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmID0gYXBwLndvcmtzcGFjZS5vbignYWN0aXZlLWxlYWYtY2hhbmdlJywgKGxlYWYpID0+IHtcbiAgICAgIGlmIChsZWFmPy52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5maWxlPy5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgIGxvY2tFZGl0b3IobGVhZi52aWV3LmVkaXRvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXROb3RpY2Uoe1xuICAgICAgYXN5bmMgb3BlcmF0aW9uRm4oYWJvcnRTaWduYWwpIHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgICBjb25zdCBvbGRDb250ZW50ID0gYXdhaXQgcmVhZFNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgICBpZiAob2xkQ29udGVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQ6IG9sZENvbnRlbnQgfSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgaWYgKG5ld0NvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNTdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZG9lc0ZpbGVFeGlzdCA9IGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICAgIGF3YWl0IGFwcC52YXVsdC5wcm9jZXNzKGZpbGUsIChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQgIT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgZ2V0TGliRGVidWdnZXIoJ1ZhdWx0OnByb2Nlc3MnKSgnQ29udGVudCBoYXMgY2hhbmdlZCBzaW5jZSBpdCB3YXMgcmVhZC4gUmV0cnlpbmcuLi4nLCB7XG4gICAgICAgICAgICAgICAgYWN0dWFsQ29udGVudDogY29udGVudCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IG9sZENvbnRlbnQsXG4gICAgICAgICAgICAgICAgcGF0aDogZmlsZS5wYXRoXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpc1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkb2VzRmlsZUV4aXN0KSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZU1pc3NpbmdGaWxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNTdWNjZXNzO1xuXG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1pc3NpbmdGaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICAgIGlmIChmdWxsT3B0aW9ucy5zaG91bGRGYWlsT25NaXNzaW5nRmlsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvcGVyYXRpb25OYW1lOiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMudmF1bHQucHJvY2Vzc0ZpbGUsIHsgZmlsZVBhdGg6IHBhdGggfSksXG4gICAgICByZXRyeU9wdGlvbnM6IGZ1bGxPcHRpb25zLFxuICAgICAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGZ1bGxPcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgYWN0aXZlTGVhZkNoYW5nZUV2ZW50UmVmPy5lLm9mZnJlZihhY3RpdmVMZWFmQ2hhbmdlRXZlbnRSZWYpO1xuICAgIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgdW5sb2NrRWRpdG9yKGxlYWYudmlldy5lZGl0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBjb250ZW50IG9mIGEgZmlsZSBzYWZlbHkgZnJvbSB0aGUgdmF1bHQuXG4gKlxuICogSXQgY292ZXJzIHRoZSBjYXNlIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgZHVyaW5nIHRoZSByZWFkaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVhZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgb3IgYG51bGxgIGlmIHRoZSBmaWxlIGlzIG1pc3Npbmcgb3IgZGVsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGxldCBjb250ZW50OiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgYXdhaXQgaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoZmlsZSkgPT4ge1xuICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgZmlsZSk7XG4gICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogUmVuYW1lcyBhIGZpbGUgc2FmZWx5IGluIHRoZSB2YXVsdC5cbiAqIElmIHRoZSBuZXcgcGF0aCBhbHJlYWR5IGV4aXN0cywgdGhlIGZpbGUgd2lsbCBiZSByZW5hbWVkIHRvIGFuIGF2YWlsYWJsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yQWJzdHJhY3RGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHBhdGggb2YgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb2xkQWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlKGFwcCwgb2xkUGF0aE9yQWJzdHJhY3RGaWxlKTtcblxuICBjb25zdCBuZXdBdmFpbGFibGVQYXRoID0gZ2V0U2FmZVJlbmFtZVBhdGgoYXBwLCBvbGRQYXRoT3JBYnN0cmFjdEZpbGUsIG5ld1BhdGgpO1xuXG4gIGlmIChvbGRBYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkQWJzdHJhY3RGaWxlLnBhdGggIT09IG5ld1BhdGgpIHtcbiAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xuICB9XG5cbiAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IHBhcmVudEZvbGRlclBhdGgobmV3QXZhaWxhYmxlUGF0aCk7XG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBuZXdGb2xkZXJQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKG9sZEFic3RyYWN0RmlsZSwgbmV3QXZhaWxhYmxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMobmV3QXZhaWxhYmxlUGF0aCkgfHwgYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhvbGRBYnN0cmFjdEZpbGUucGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0F2YWlsYWJsZVBhdGg7XG59XG5cbi8qKlxuICogU2F2ZXMgdGhlIHNwZWNpZmllZCBub3RlIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBub3RlIHRvIGJlIHNhdmVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBub3RlIGlzIHNhdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZU5vdGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldyAmJiBsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gcGF0aCAmJiBsZWFmLnZpZXcuZGlydHkpIHtcbiAgICAgIGF3YWl0IGxlYWYudmlldy5zYXZlKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHJhc2hlcyBhbiBhYnN0cmFjdCBmaWxlIHNhZmVseSBmcm9tIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHRyYXNoLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGlzIHRyYXNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFzaFNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmaWxlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuZXhpc3RzKGZpbGUucGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgZ2V0TGliRGVidWdnZXIoJ1ZhdWx0OnRyYXNoU2FmZScpKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cmFzaGluZyAke2ZpbGUucGF0aH0sIGJ1dCB0aGUgZmlsZSBubyBsb25nZXIgZXhpc3RzLmAsIHsgZXJyb3I6IGUsIHBhdGg6IGZpbGUucGF0aCB9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZmlsZUFjdGlvbjogKGZpbGU6IFRGaWxlKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZmlsZUFjdGlvbihmaWxlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * This module provides utility functions for working with the Obsidian Vault.
5
5
  */
@@ -9,6 +9,12 @@ import type { RetryOptions } from '../async.cjs';
9
9
  import type { ValueProvider } from '../value-provider.cjs';
10
10
  import type { PathOrAbstractFile, PathOrFile, PathOrFolder } from './file-system.cjs';
11
11
  import { FileSystemType } from './file-system.cjs';
12
+ /**
13
+ * Arguments for {@link process}.
14
+ */
15
+ export interface ContentArgs {
16
+ readonly content: string;
17
+ }
12
18
  /**
13
19
  * Options for {@link process}.
14
20
  */
@@ -222,7 +228,7 @@ export declare function listSafe(app: App, pathOrFolder: PathOrFolder): Promise<
222
228
  *
223
229
  * @throws Will throw an error if the process fails after the specified number of retries or timeout.
224
230
  */
225
- export declare function process(app: App, pathOrFile: PathOrFile, newContentProvider: ValueProvider<null | string, [string]>, options?: ProcessOptions): Promise<void>;
231
+ export declare function process(app: App, pathOrFile: PathOrFile, newContentProvider: ValueProvider<null | string, ContentArgs>, options?: ProcessOptions): Promise<void>;
226
232
  /**
227
233
  * Reads the content of a file safely from the vault.
228
234
  *
@@ -140,4 +140,4 @@ function getAllDomWindows(app) {
140
140
  getAllContainers,
141
141
  getAllDomWindows
142
142
  });
143
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3dvcmtzcGFjZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhZGRpdGlvbmFsIHV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoIHRoZSBPYnNpZGlhbiB7QGxpbmsgV29ya3NwYWNlfS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgV29ya3NwYWNlYCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbiAgV29ya3NwYWNlLFxuICBXb3Jrc3BhY2VDb250YWluZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIFJldHVybnMgYWxsIGNvbnRhaW5lcnMgaW4gdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcC5cbiAqIEByZXR1cm5zIEFsbCBjb250YWluZXJzIGluIHRoZSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDb250YWluZXJzKGFwcDogQXBwKTogV29ya3NwYWNlQ29udGFpbmVyW10ge1xuICBjb25zdCBjb250YWluZXJzID0gbmV3IFNldDxXb3Jrc3BhY2VDb250YWluZXI+KCk7XG4gIGFwcC53b3Jrc3BhY2UuaXRlcmF0ZUFsbExlYXZlcygobGVhZikgPT4ge1xuICAgIGNvbnRhaW5lcnMuYWRkKGxlYWYuZ2V0Q29udGFpbmVyKCkpO1xuICB9KTtcbiAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVycyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbGwgRE9NIHdpbmRvd3MgaW4gdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcC5cbiAqIEByZXR1cm5zIEFsbCBET00gd2luZG93cyBpbiB0aGUgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsRG9tV2luZG93cyhhcHA6IEFwcCk6IFdpbmRvd1tdIHtcbiAgcmV0dXJuIGdldEFsbENvbnRhaW5lcnMoYXBwKS5tYXAoKGNvbnRhaW5lcikgPT4gY29udGFpbmVyLndpbik7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJPLFNBQVMsaUJBQWlCLEtBQWdDO0FBQy9ELFFBQU0sYUFBYSxvQkFBSSxJQUF3QjtBQUMvQyxNQUFJLFVBQVUsaUJBQWlCLENBQUMsU0FBUztBQUN2QyxlQUFXLElBQUksS0FBSyxhQUFhLENBQUM7QUFBQSxFQUNwQyxDQUFDO0FBQ0QsU0FBTyxNQUFNLEtBQUssVUFBVTtBQUM5QjtBQVFPLFNBQVMsaUJBQWlCLEtBQW9CO0FBQ25ELFNBQU8saUJBQWlCLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxVQUFVLEdBQUc7QUFDL0Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
143
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3dvcmtzcGFjZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIHtAbGluayBXb3Jrc3BhY2V9LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFdlIG5lZWQgdG8gaW1wb3J0IGBXb3Jrc3BhY2VgIHRvIHVzZSBpdCBpbiB0aGUgdHNkb2NzLlxuICBXb3Jrc3BhY2UsXG4gIFdvcmtzcGFjZUNvbnRhaW5lclxufSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogUmV0dXJucyBhbGwgY29udGFpbmVycyBpbiB0aGUgd29ya3NwYWNlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwLlxuICogQHJldHVybnMgQWxsIGNvbnRhaW5lcnMgaW4gdGhlIHdvcmtzcGFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENvbnRhaW5lcnMoYXBwOiBBcHApOiBXb3Jrc3BhY2VDb250YWluZXJbXSB7XG4gIGNvbnN0IGNvbnRhaW5lcnMgPSBuZXcgU2V0PFdvcmtzcGFjZUNvbnRhaW5lcj4oKTtcbiAgYXBwLndvcmtzcGFjZS5pdGVyYXRlQWxsTGVhdmVzKChsZWFmKSA9PiB7XG4gICAgY29udGFpbmVycy5hZGQobGVhZi5nZXRDb250YWluZXIoKSk7XG4gIH0pO1xuICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXJzKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBET00gd2luZG93cyBpbiB0aGUgd29ya3NwYWNlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwLlxuICogQHJldHVybnMgQWxsIERPTSB3aW5kb3dzIGluIHRoZSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxEb21XaW5kb3dzKGFwcDogQXBwKTogV2luZG93W10ge1xuICByZXR1cm4gZ2V0QWxsQ29udGFpbmVycyhhcHApLm1hcCgoY29udGFpbmVyKSA9PiBjb250YWluZXIud2luKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQk8sU0FBUyxpQkFBaUIsS0FBZ0M7QUFDL0QsUUFBTSxhQUFhLG9CQUFJLElBQXdCO0FBQy9DLE1BQUksVUFBVSxpQkFBaUIsQ0FBQyxTQUFTO0FBQ3ZDLGVBQVcsSUFBSSxLQUFLLGFBQWEsQ0FBQztBQUFBLEVBQ3BDLENBQUM7QUFDRCxTQUFPLE1BQU0sS0FBSyxVQUFVO0FBQzlCO0FBUU8sU0FBUyxpQkFBaUIsS0FBb0I7QUFDbkQsU0FBTyxpQkFBaUIsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLFVBQVUsR0FBRztBQUMvRDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * This module provides additional utilities for working with the Obsidian {@link Workspace}.
5
5
  */
@@ -218,4 +218,4 @@ function toPosixPath(path) {
218
218
  toPosixBuffer,
219
219
  toPosixPath
220
220
  });
221
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhdGgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIHBhdGhzLlxuICovXG5cbmltcG9ydCBwYXRoQnJvd3NlcmlmeSBmcm9tICdwYXRoLWJyb3dzZXJpZnknO1xuXG5pbXBvcnQge1xuICBlbnN1cmVTdGFydHNXaXRoLFxuICByZXBsYWNlQWxsXG59IGZyb20gJy4vc3RyaW5nLnRzJztcblxuY29uc3QgV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUCA9IC9bYS16QS1aXTpcXC9bXjpdKiQvO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1ldGhvZHMgZm9yIGhhbmRsaW5nIFBPU0lYIHBhdGhzLlxuICovXG5leHBvcnQgY29uc3QgcG9zaXggPSBwYXRoQnJvd3NlcmlmeS5wb3NpeDtcblxuLyoqXG4gKiBBIFBPU0lYIHBhdGggZGVsaW1pdGVyLlxuICovXG5leHBvcnQgY29uc3QgZGVsaW1pdGVyID0gcG9zaXguZGVsaW1pdGVyO1xuXG4vKipcbiAqIEEgUE9TSVggc2VnbWVudCBzZXBhcmF0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXAgPSBwYXRoQnJvd3NlcmlmeS5wb3NpeC5zZXA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSBuYW1lIG9mIGEgZmlsZSwgb3B0aW9uYWxseSByZW1vdmluZyB0aGUgZmlsZSBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGJhc2UgbmFtZSBmcm9tLlxuICogQHBhcmFtIGV4dCAtIEFuIG9wdGlvbmFsIGV4dGVuc2lvbiB0byByZW1vdmUgZnJvbSB0aGUgYmFzZSBuYW1lLlxuICogQHJldHVybnMgVGhlIGJhc2UgbmFtZSBvZiB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhc2VuYW1lID0gcG9zaXguYmFzZW5hbWU7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZGlyZWN0b3J5IG5hbWUgb2YgYSBwYXRoLlxuICpcbiAqIGBkaXJlY3RvcnlgIGlzIHVzZWQgaW5zdGVhZCBvZiBgZm9sZGVyYCB0byBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IHdpdGggYG5vZGU6cGF0aGAgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gZ2V0IHRoZSBkaXJlY3RvcnkgbmFtZSBmcm9tLlxuICogQHJldHVybnMgVGhlIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgZGlybmFtZSA9IHBvc2l4LmRpcm5hbWU7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlsZSBleHRlbnNpb24gb2YgYSBwYXRoLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gZ2V0IHRoZSBleHRlbnNpb24gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIGV4dGVuc2lvbiBvZiB0aGUgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4dG5hbWUgPSBwb3NpeC5leHRuYW1lO1xuXG4vKipcbiAqIEZvcm1hdHMgYSBwYXRoIG9iamVjdCBpbnRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHBhdGhPYmplY3QgLSBUaGUgcGF0aCBvYmplY3QgdG8gZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBwYXRoIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdCA9IHBvc2l4LmZvcm1hdDtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgcGF0aCBpcyBhYnNvbHV0ZS5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBwb3NpeC5pc0Fic29sdXRlKHBhdGgpIHx8IFdJTkRPV1NfUE9TSVhfTElLRV9QQVRIX1JFR19FWFAuZXhlYyhwYXRoKT8uWzBdID09PSBwYXRoO1xufVxuXG4vKipcbiAqIEpvaW5zIG11bHRpcGxlIHBhdGggc2VnbWVudHMgaW50byBhIHNpbmdsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBwYXRocyAtIFRoZSBwYXRoIHNlZ21lbnRzIHRvIGpvaW4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBqb2luID0gcG9zaXguam9pbjtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCwgcmVzb2x2aW5nICcuLicgYW5kICcuJyBzZWdtZW50cy5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemUgPSBwb3NpeC5ub3JtYWxpemU7XG5cbi8qKlxuICogUGFyc2VzIGEgcGF0aCBzdHJpbmcgaW50byBhIHBhdGggb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggc3RyaW5nIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBwYXRoIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gcG9zaXgucGFyc2U7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIG9uZSBwYXRoIHRvIGFub3RoZXIuXG4gKlxuICogQHBhcmFtIGZyb20gLSBUaGUgc3RhcnRpbmcgcGF0aC5cbiAqIEBwYXJhbSB0byAtIFRoZSBkZXN0aW5hdGlvbiBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbGF0aXZlID0gcG9zaXgucmVsYXRpdmU7XG5cbi8qKlxuICogR2V0cyB0aGUgZmlsZSBuYW1lIGZyb20gdGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAsIGNvbnZlcnRpbmcgaXQgdG8gYSBQT1NJWC1zdHlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBpbXBvcnRNZXRhVXJsIC0gVGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBmaWxlIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgUE9TSVgtc3R5bGUgZmlsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU5hbWUoaW1wb3J0TWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmUoZGVjb2RlVVJJKG5ldyBVUkwoaW1wb3J0TWV0YVVybCkucGF0aG5hbWUpKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmb2xkZXIgbmFtZSBmcm9tIHRoZSBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgLCBjb252ZXJ0aW5nIGl0IHRvIGEgUE9TSVgtc3R5bGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gaW1wb3J0TWV0YVVybCAtIFRoZSBgaW1wb3J0KGRvdCltZXRhKGRvdCl1cmxgIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgZm9sZGVyIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgUE9TSVgtc3R5bGUgZm9sZGVyIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJOYW1lKGltcG9ydE1ldGFVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBkaXJuYW1lKGdldEZpbGVOYW1lKGltcG9ydE1ldGFVcmwpKTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIGZpbGUgbmFtZSBieSBhcHBlbmRpbmcgYW4gZXh0ZW5zaW9uIHRvIGEgZ2l2ZW4gZmlsZSBuYW1lLlxuICogSWYgdGhlIGV4dGVuc2lvbiBpcyBlbXB0eSwgdGhlIGZpbGUgbmFtZSBpcyByZXR1cm5lZCBhcyBpcy5cbiAqXG4gKiBAcGFyYW0gZmlsZUJhc2VOYW1lIC0gVGhlIGZpbGUgbmFtZSB0byBhcHBlbmQgdGhlIGV4dGVuc2lvbiB0by5cbiAqIEBwYXJhbSBmaWxlRXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBhcHBlbmQgdG8gdGhlIGZpbGUgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIG5hbWUgd2l0aCB0aGUgZXh0ZW5zaW9uIGFwcGVuZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUZpbGVOYW1lKGZpbGVCYXNlTmFtZTogc3RyaW5nLCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZmlsZUV4dGVuc2lvbiA/IGAke2ZpbGVCYXNlTmFtZX0uJHtmaWxlRXh0ZW5zaW9ufWAgOiBmaWxlQmFzZU5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGdpdmVuIHBhdGggYnkgZW5zdXJpbmcgaXQgaXMgcmVsYXRpdmUsIGFkZGluZyBcIi4vXCIgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aCwgc3RhcnRpbmcgd2l0aCBcIi4vXCIgaWYgaXQgd2FzIHJlbGF0aXZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWZSZWxhdGl2ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocGF0aC5zdGFydHNXaXRoKCcvJykgfHwgcGF0aC5pbmNsdWRlcygnOicpKSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICByZXR1cm4gZW5zdXJlU3RhcnRzV2l0aChwYXRoLCAnLi8nKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhIHNlcXVlbmNlIG9mIHBhdGhzIG9yIHBhdGggc2VnbWVudHMgaW50byBhbiBhYnNvbHV0ZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBwYXRoU2VnbWVudHMgLSBUaGUgc2VxdWVuY2Ugb2YgcGF0aCBzZWdtZW50cyB0byByZXNvbHZlLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIGFic29sdXRlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcGF0aCA9IHBvc2l4LnJlc29sdmUoLi4ucGF0aFNlZ21lbnRzKTtcbiAgcGF0aCA9IHRvUG9zaXhQYXRoKHBhdGgpO1xuICBjb25zdCBtYXRjaCA9IFdJTkRPV1NfUE9TSVhfTElLRV9QQVRIX1JFR19FWFAuZXhlYyhwYXRoKTtcbiAgcmV0dXJuIG1hdGNoPy5bMF0gPz8gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJ1ZmZlciBjb250YWluaW5nIGEgcGF0aCB0byBhIFBPU0lYLXN0eWxlIGJ1ZmZlciBieSByZXBsYWNpbmcgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgbmV3IGJ1ZmZlciBjb250YWluaW5nIHRoZSBQT1NJWC1zdHlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3NpeEJ1ZmZlcihidWZmZXI6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0b1Bvc2l4UGF0aChTdHJpbmcoYnVmZmVyKSkpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gcGF0aCB0byBhIFBPU0lYLXN0eWxlIHBhdGggYnkgcmVwbGFjaW5nIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3NpeFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwocGF0aCwgJ1xcXFwnLCAnLycpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsNkJBQTJCO0FBRTNCLG9CQUdPO0FBRVAsTUFBTSxrQ0FBa0M7QUFLakMsTUFBTSxRQUFRLHVCQUFBQSxRQUFlO0FBSzdCLE1BQU0sWUFBWSxNQUFNO0FBS3hCLE1BQU0sTUFBTSx1QkFBQUEsUUFBZSxNQUFNO0FBU2pDLE1BQU0sV0FBVyxNQUFNO0FBVXZCLE1BQU0sVUFBVSxNQUFNO0FBUXRCLE1BQU0sVUFBVSxNQUFNO0FBUXRCLE1BQU0sU0FBUyxNQUFNO0FBUXJCLFNBQVMsV0FBVyxNQUF1QjtBQUNoRCxTQUFPLE1BQU0sV0FBVyxJQUFJLEtBQUssZ0NBQWdDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN2RjtBQVFPLE1BQU0sT0FBTyxNQUFNO0FBUW5CLE1BQU0sWUFBWSxNQUFNO0FBUXhCLE1BQU0sUUFBUSxNQUFNO0FBU3BCLE1BQU0sV0FBVyxNQUFNO0FBUXZCLFNBQVMsWUFBWSxlQUErQjtBQUN6RCxTQUFPLFFBQVEsVUFBVSxJQUFJLElBQUksYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUMzRDtBQVFPLFNBQVMsY0FBYyxlQUErQjtBQUMzRCxTQUFPLFFBQVEsWUFBWSxhQUFhLENBQUM7QUFDM0M7QUFVTyxTQUFTLGFBQWEsY0FBc0IsZUFBK0I7QUFDaEYsU0FBTyxnQkFBZ0IsR0FBRyxZQUFZLElBQUksYUFBYSxLQUFLO0FBQzlEO0FBUU8sU0FBUyxvQkFBb0IsTUFBc0I7QUFDeEQsTUFBSSxLQUFLLFdBQVcsR0FBRyxLQUFLLEtBQUssU0FBUyxHQUFHLEdBQUc7QUFDOUMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxhQUFPLGdDQUFpQixNQUFNLElBQUk7QUFDcEM7QUFRTyxTQUFTLFdBQVcsY0FBZ0M7QUFDekQsTUFBSSxPQUFPLE1BQU0sUUFBUSxHQUFHLFlBQVk7QUFDeEMsU0FBTyxZQUFZLElBQUk7QUFDdkIsUUFBTSxRQUFRLGdDQUFnQyxLQUFLLElBQUk7QUFDdkQsU0FBTyxRQUFRLENBQUMsS0FBSztBQUN2QjtBQVFPLFNBQVMsY0FBYyxRQUF3QjtBQUNwRCxTQUFPLE9BQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFDaEQ7QUFRTyxTQUFTLFlBQVksTUFBc0I7QUFDaEQsYUFBTywwQkFBVyxNQUFNLE1BQU0sR0FBRztBQUNuQzsiLAogICJuYW1lcyI6IFsicGF0aEJyb3dzZXJpZnkiXQp9Cg==
221
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhdGgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgcGF0aHMuXG4gKi9cblxuaW1wb3J0IHBhdGhCcm93c2VyaWZ5IGZyb20gJ3BhdGgtYnJvd3NlcmlmeSc7XG5cbmltcG9ydCB7XG4gIGVuc3VyZVN0YXJ0c1dpdGgsXG4gIHJlcGxhY2VBbGxcbn0gZnJvbSAnLi9zdHJpbmcudHMnO1xuXG5jb25zdCBXSU5ET1dTX1BPU0lYX0xJS0VfUEFUSF9SRUdfRVhQID0gL1thLXpBLVpdOlxcL1teOl0qJC87XG5cbi8qKlxuICogUHJvdmlkZXMgbWV0aG9kcyBmb3IgaGFuZGxpbmcgUE9TSVggcGF0aHMuXG4gKi9cbmV4cG9ydCBjb25zdCBwb3NpeCA9IHBhdGhCcm93c2VyaWZ5LnBvc2l4O1xuXG4vKipcbiAqIEEgUE9TSVggcGF0aCBkZWxpbWl0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxpbWl0ZXIgPSBwb3NpeC5kZWxpbWl0ZXI7XG5cbi8qKlxuICogQSBQT1NJWCBzZWdtZW50IHNlcGFyYXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlcCA9IHBhdGhCcm93c2VyaWZ5LnBvc2l4LnNlcDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIG5hbWUgb2YgYSBmaWxlLCBvcHRpb25hbGx5IHJlbW92aW5nIHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgYmFzZSBuYW1lIGZyb20uXG4gKiBAcGFyYW0gZXh0IC0gQW4gb3B0aW9uYWwgZXh0ZW5zaW9uIHRvIHJlbW92ZSBmcm9tIHRoZSBiYXNlIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgYmFzZSBuYW1lIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgYmFzZW5hbWUgPSBwb3NpeC5iYXNlbmFtZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBhIHBhdGguXG4gKlxuICogYGRpcmVjdG9yeWAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBmb2xkZXJgIHRvIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCBgbm9kZTpwYXRoYCBtb2R1bGUuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGRpcmVjdG9yeSBuYW1lIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBkaXJuYW1lID0gcG9zaXguZGlybmFtZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiBhIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgZXh0bmFtZSA9IHBvc2l4LmV4dG5hbWU7XG5cbi8qKlxuICogRm9ybWF0cyBhIHBhdGggb2JqZWN0IGludG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGF0aE9iamVjdCAtIFRoZSBwYXRoIG9iamVjdCB0byBmb3JtYXQuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0ID0gcG9zaXguZm9ybWF0O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBwYXRoIGlzIGFic29sdXRlLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBvc2l4LmlzQWJzb2x1dGUocGF0aCkgfHwgV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUC5leGVjKHBhdGgpPy5bMF0gPT09IHBhdGg7XG59XG5cbi8qKlxuICogSm9pbnMgbXVsdGlwbGUgcGF0aCBzZWdtZW50cyBpbnRvIGEgc2luZ2xlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gam9pbi5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGpvaW4gPSBwb3NpeC5qb2luO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoLCByZXNvbHZpbmcgJy4uJyBhbmQgJy4nIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZSA9IHBvc2l4Lm5vcm1hbGl6ZTtcblxuLyoqXG4gKiBQYXJzZXMgYSBwYXRoIHN0cmluZyBpbnRvIGEgcGF0aCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBzdHJpbmcgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHBhdGggb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgcGFyc2UgPSBwb3NpeC5wYXJzZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gb25lIHBhdGggdG8gYW5vdGhlci5cbiAqXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBzdGFydGluZyBwYXRoLlxuICogQHBhcmFtIHRvIC0gVGhlIGRlc3RpbmF0aW9uIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gLlxuICovXG5leHBvcnQgY29uc3QgcmVsYXRpdmUgPSBwb3NpeC5yZWxhdGl2ZTtcblxuLyoqXG4gKiBHZXRzIHRoZSBmaWxlIG5hbWUgZnJvbSB0aGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCwgY29udmVydGluZyBpdCB0byBhIFBPU0lYLXN0eWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGltcG9ydE1ldGFVcmwgLSBUaGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZpbGUgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBmaWxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTmFtZShpbXBvcnRNZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZShkZWNvZGVVUkkobmV3IFVSTChpbXBvcnRNZXRhVXJsKS5wYXRobmFtZSkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGZvbGRlciBuYW1lIGZyb20gdGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAsIGNvbnZlcnRpbmcgaXQgdG8gYSBQT1NJWC1zdHlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBpbXBvcnRNZXRhVXJsIC0gVGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBmb2xkZXIgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBmb2xkZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlck5hbWUoaW1wb3J0TWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRpcm5hbWUoZ2V0RmlsZU5hbWUoaW1wb3J0TWV0YVVybCkpO1xufVxuXG4vKipcbiAqIE1ha2VzIGEgZmlsZSBuYW1lIGJ5IGFwcGVuZGluZyBhbiBleHRlbnNpb24gdG8gYSBnaXZlbiBmaWxlIG5hbWUuXG4gKiBJZiB0aGUgZXh0ZW5zaW9uIGlzIGVtcHR5LCB0aGUgZmlsZSBuYW1lIGlzIHJldHVybmVkIGFzIGlzLlxuICpcbiAqIEBwYXJhbSBmaWxlQmFzZU5hbWUgLSBUaGUgZmlsZSBuYW1lIHRvIGFwcGVuZCB0aGUgZXh0ZW5zaW9uIHRvLlxuICogQHBhcmFtIGZpbGVFeHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGFwcGVuZCB0byB0aGUgZmlsZSBuYW1lLlxuICogQHJldHVybnMgVGhlIGZpbGUgbmFtZSB3aXRoIHRoZSBleHRlbnNpb24gYXBwZW5kZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRmlsZU5hbWUoZmlsZUJhc2VOYW1lOiBzdHJpbmcsIGZpbGVFeHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBmaWxlRXh0ZW5zaW9uID8gYCR7ZmlsZUJhc2VOYW1lfS4ke2ZpbGVFeHRlbnNpb259YCA6IGZpbGVCYXNlTmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgZ2l2ZW4gcGF0aCBieSBlbnN1cmluZyBpdCBpcyByZWxhdGl2ZSwgYWRkaW5nIFwiLi9cIiBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLCBzdGFydGluZyB3aXRoIFwiLi9cIiBpZiBpdCB3YXMgcmVsYXRpdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJZlJlbGF0aXZlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCBwYXRoLmluY2x1ZGVzKCc6JykpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIHJldHVybiBlbnN1cmVTdGFydHNXaXRoKHBhdGgsICcuLycpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgc2VxdWVuY2Ugb2YgcGF0aHMgb3IgcGF0aCBzZWdtZW50cyBpbnRvIGFuIGFic29sdXRlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyAtIFRoZSBzZXF1ZW5jZSBvZiBwYXRoIHNlZ21lbnRzIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgYWJzb2x1dGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCBwYXRoID0gcG9zaXgucmVzb2x2ZSguLi5wYXRoU2VnbWVudHMpO1xuICBwYXRoID0gdG9Qb3NpeFBhdGgocGF0aCk7XG4gIGNvbnN0IG1hdGNoID0gV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUC5leGVjKHBhdGgpO1xuICByZXR1cm4gbWF0Y2g/LlswXSA/PyBwYXRoO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBwYXRoIHRvIGEgUE9TSVgtc3R5bGUgYnVmZmVyIGJ5IHJlcGxhY2luZyBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gYnVmZmVyIC0gVGhlIGJ1ZmZlciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBuZXcgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIFBPU0lYLXN0eWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4QnVmZmVyKGJ1ZmZlcjogQnVmZmVyKTogQnVmZmVyIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRvUG9zaXhQYXRoKFN0cmluZyhidWZmZXIpKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiBwYXRoIHRvIGEgUE9TSVgtc3R5bGUgcGF0aCBieSByZXBsYWNpbmcgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIFBPU0lYLXN0eWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4UGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChwYXRoLCAnXFxcXCcsICcvJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSw2QkFBMkI7QUFFM0Isb0JBR087QUFFUCxNQUFNLGtDQUFrQztBQUtqQyxNQUFNLFFBQVEsdUJBQUFBLFFBQWU7QUFLN0IsTUFBTSxZQUFZLE1BQU07QUFLeEIsTUFBTSxNQUFNLHVCQUFBQSxRQUFlLE1BQU07QUFTakMsTUFBTSxXQUFXLE1BQU07QUFVdkIsTUFBTSxVQUFVLE1BQU07QUFRdEIsTUFBTSxVQUFVLE1BQU07QUFRdEIsTUFBTSxTQUFTLE1BQU07QUFRckIsU0FBUyxXQUFXLE1BQXVCO0FBQ2hELFNBQU8sTUFBTSxXQUFXLElBQUksS0FBSyxnQ0FBZ0MsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNO0FBQ3ZGO0FBUU8sTUFBTSxPQUFPLE1BQU07QUFRbkIsTUFBTSxZQUFZLE1BQU07QUFReEIsTUFBTSxRQUFRLE1BQU07QUFTcEIsTUFBTSxXQUFXLE1BQU07QUFRdkIsU0FBUyxZQUFZLGVBQStCO0FBQ3pELFNBQU8sUUFBUSxVQUFVLElBQUksSUFBSSxhQUFhLEVBQUUsUUFBUSxDQUFDO0FBQzNEO0FBUU8sU0FBUyxjQUFjLGVBQStCO0FBQzNELFNBQU8sUUFBUSxZQUFZLGFBQWEsQ0FBQztBQUMzQztBQVVPLFNBQVMsYUFBYSxjQUFzQixlQUErQjtBQUNoRixTQUFPLGdCQUFnQixHQUFHLFlBQVksSUFBSSxhQUFhLEtBQUs7QUFDOUQ7QUFRTyxTQUFTLG9CQUFvQixNQUFzQjtBQUN4RCxNQUFJLEtBQUssV0FBVyxHQUFHLEtBQUssS0FBSyxTQUFTLEdBQUcsR0FBRztBQUM5QyxXQUFPO0FBQUEsRUFDVDtBQUVBLGFBQU8sZ0NBQWlCLE1BQU0sSUFBSTtBQUNwQztBQVFPLFNBQVMsV0FBVyxjQUFnQztBQUN6RCxNQUFJLE9BQU8sTUFBTSxRQUFRLEdBQUcsWUFBWTtBQUN4QyxTQUFPLFlBQVksSUFBSTtBQUN2QixRQUFNLFFBQVEsZ0NBQWdDLEtBQUssSUFBSTtBQUN2RCxTQUFPLFFBQVEsQ0FBQyxLQUFLO0FBQ3ZCO0FBUU8sU0FBUyxjQUFjLFFBQXdCO0FBQ3BELFNBQU8sT0FBTyxLQUFLLFlBQVksT0FBTyxNQUFNLENBQUMsQ0FBQztBQUNoRDtBQVFPLFNBQVMsWUFBWSxNQUFzQjtBQUNoRCxhQUFPLDBCQUFXLE1BQU0sTUFBTSxHQUFHO0FBQ25DOyIsCiAgIm5hbWVzIjogWyJwYXRoQnJvd3NlcmlmeSJdCn0K
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * Contains utility functions for handling paths.
5
5
  */
@@ -251,4 +251,4 @@ function addUnicodeFlags(finalFlags, regExps, strategy) {
251
251
  isValidRegExp,
252
252
  oneOf
253
253
  });
254
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlZy1leHAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gKi9cblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogQSBzdHJhdGVneSB0byB1c2Ugd2hlbiBtZXJnaW5nIG11bHRpcGxlIHJlZ2V4IGZsYWdzIGludG8gb25lIGFsdGVybmF0aW9uLlxuICovXG5leHBvcnQgZW51bSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBLZWVwIG9ubHkgdGhlIGZsYWdzIHByZXNlbnQgaW4gYWxsIHJlZ2V4ZXMuXG4gICAqL1xuICBJbnRlcnNlY3QgPSAnSW50ZXJzZWN0JyxcbiAgLyoqXG4gICAqIFRocm93IGFuIGVycm9yIGlmIHRoZSByZWdleGVzIGhhdmUgY29uZmxpY3RpbmcgZmxhZ3MuXG4gICAqL1xuICBUaHJvdyA9ICdUaHJvdycsXG4gIC8qKlxuICAgKiBLZWVwIG9ubHkgdGhlIGZsYWdzIHByZXNlbnQgaW4gYW55IHJlZ2V4LlxuICAgKi9cbiAgVW5pb24gPSAnVW5pb24nXG59XG5cbi8qKlxuICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcgdG8gc2FmZWx5IHVzZSBpdCB3aXRoaW4gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHByZWZpeGVkIHdpdGggYSBiYWNrc2xhc2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOT1RFOiBXZSBjYW4ndCB1c2UgYHJlcGxhY2VBbGwoKWAgZnJvbSBgU3RyaW5nLnRzYCBoZXJlIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kuXG4gIHJldHVybiBzdHIucmVwbGFjZUFsbCgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaXMgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmVnRXhwKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgbmV3IFJlZ0V4cChzdHIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzRmxhZyhyZWdFeHA6IFJlZ0V4cCwgZmxhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiByZWdFeHAuZmxhZ3MuaW5jbHVkZXMoZmxhZyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFBpY2tGbGFnKHJlZ0V4cHM6IFJlZ0V4cFtdLCBmbGFnOiBzdHJpbmcsIHN0cmF0ZWd5OiBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneSk6IGJvb2xlYW4ge1xuICBjb25zdCBjb3VudCA9IHJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCBmbGFnKSkubGVuZ3RoO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gdjggY291bnRzIHRoZSBpbXBsaWNpdCBkZWZhdWx0IGJyYW5jaCBhcyB1bmNvdmVyZWQgZXZlbiB3aGVuIGFsbCBlbnVtIGNhc2VzIGFyZSBoYW5kbGVkLiAqL1xuICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LkludGVyc2VjdDpcbiAgICAgIHJldHVybiBjb3VudCA9PT0gcmVnRXhwcy5sZW5ndGg7XG4gICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246XG4gICAgICByZXR1cm4gY291bnQgPiAwO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQuICovXG4gICAgICBhc3NlcnQoZmFsc2UsIGBJbnZhbGlkIHN0cmF0ZWd5OiAke3N0cmF0ZWd5IGFzIHN0cmluZ31gKTtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIH1cblxuICBjb25zdCBhbGxTYW1lID0gY291bnQgPT09IDAgfHwgY291bnQgPT09IHJlZ0V4cHMubGVuZ3RoO1xuICBpZiAoIWFsbFNhbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZsaWN0aW5nIGZsYWcgJyR7ZmxhZ30nIGFjcm9zcyBwYXR0ZXJucy5gKTtcbiAgfVxuICByZXR1cm4gY291bnQgPT09IHJlZ0V4cHMubGVuZ3RoO1xufVxuXG4vKipcbiAqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgYWx3YXlzIG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBBTFdBWVNfTUFUQ0hfUkVHX0VYUCA9IC8oPzopLztcblxuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG5ldmVyIG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBORVZFUl9NQVRDSF9SRUdfRVhQID0gLy5eLztcblxuLyoqXG4gKiBDb21iaW5lIG11bHRpcGxlIHJlZ2V4ZXMgaW50byBvbmUgYWx0ZXJuYXRpb24sIGhhbmRsaW5nIGZsYWdzLlxuICpcbiAqIEBwYXJhbSByZWdFeHBzIC0gVGhlIHJlZ2V4ZXMgdG8gY29tYmluZS5cbiAqIEBwYXJhbSBzdHJhdGVneSAtIFRoZSBzdHJhdGVneSB0byB1c2Ugd2hlbiBtZXJnaW5nIGZsYWdzIChkZWZhdWx0OiBgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVGhyb3dgKS5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCByZWdleC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uZU9mKFxuICByZWdFeHBzOiBSZWdFeHBbXSxcbiAgc3RyYXRlZ3k6IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5ID0gUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVGhyb3dcbik6IFJlZ0V4cCB7XG4gIGlmIChyZWdFeHBzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBBTFdBWVNfTUFUQ0hfUkVHX0VYUDtcbiAgfVxuXG4gIGlmIChyZWdFeHBzLmxlbmd0aCA9PT0gMSAmJiByZWdFeHBzWzBdICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVnRXhwc1swXTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZSA9IHJlZ0V4cHMubWFwKChyZWdFeHApID0+IGAoPzoke3JlZ0V4cC5zb3VyY2V9KWApLmpvaW4oJ3wnKTtcblxuICBjb25zdCBmaW5hbEZsYWdzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGFkZFNlbWFudGljRmxhZ3MoZmluYWxGbGFncywgcmVnRXhwcywgc3RyYXRlZ3kpO1xuICBhZGRVbmljb2RlRmxhZ3MoZmluYWxGbGFncywgcmVnRXhwcywgc3RyYXRlZ3kpO1xuICBhZGRNZXRhRmxhZ3MoZmluYWxGbGFncywgcmVnRXhwcyk7XG5cbiAgcmV0dXJuIG5ldyBSZWdFeHAoc291cmNlLCBbLi4uZmluYWxGbGFnc10uam9pbignJykpO1xufVxuXG5mdW5jdGlvbiBhZGRNZXRhRmxhZ3MoZmluYWxGbGFnczogU2V0PHN0cmluZz4sIHJlZ0V4cHM6IFJlZ0V4cFtdKTogdm9pZCB7XG4gIGNvbnN0IE1FVEFfRkxBR1MgPSBbJ2cnLCAnZCddO1xuICBmb3IgKGNvbnN0IGZsYWcgb2YgTUVUQV9GTEFHUykge1xuICAgIGlmIChyZWdFeHBzLnNvbWUoKHJlZ0V4cCkgPT4gaGFzRmxhZyhyZWdFeHAsIGZsYWcpKSkge1xuICAgICAgZmluYWxGbGFncy5hZGQoZmxhZyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFNlbWFudGljRmxhZ3MoXG4gIGZpbmFsRmxhZ3M6IFNldDxzdHJpbmc+LFxuICByZWdFeHBzOiBSZWdFeHBbXSxcbiAgc3RyYXRlZ3k6IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5XG4pOiB2b2lkIHtcbiAgY29uc3QgU0VNQU5USUNfRkxBR1MgPSBbJ2knLCAnbScsICdzJywgJ3knXTtcbiAgZm9yIChjb25zdCBmbGFnIG9mIFNFTUFOVElDX0ZMQUdTKSB7XG4gICAgaWYgKHNob3VsZFBpY2tGbGFnKHJlZ0V4cHMsIGZsYWcsIHN0cmF0ZWd5KSkge1xuICAgICAgZmluYWxGbGFncy5hZGQoZmxhZyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFVuaWNvZGVGbGFncyhcbiAgZmluYWxGbGFnczogU2V0PHN0cmluZz4sXG4gIHJlZ0V4cHM6IFJlZ0V4cFtdLFxuICBzdHJhdGVneTogUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3lcbik6IHZvaWQge1xuICBjb25zdCBjb3VudFUgPSByZWdFeHBzLmZpbHRlcigocmVnRXhwKSA9PiBoYXNGbGFnKHJlZ0V4cCwgJ3UnKSkubGVuZ3RoO1xuICBjb25zdCBjb3VudFYgPSByZWdFeHBzLmZpbHRlcigocmVnRXhwKSA9PiBoYXNGbGFnKHJlZ0V4cCwgJ3YnKSkubGVuZ3RoO1xuXG4gIGxldCBzaG91bGRVc2VVRmxhZzogYm9vbGVhbjtcbiAgbGV0IHNob3VsZFVzZVZGbGFnOiBib29sZWFuO1xuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCBjb3VudHMgdGhlIGltcGxpY2l0IGRlZmF1bHQgYnJhbmNoIGFzIHVuY292ZXJlZCBldmVuIHdoZW4gYWxsIGVudW0gY2FzZXMgYXJlIGhhbmRsZWQuICovXG4gIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuSW50ZXJzZWN0OlxuICAgICAgc2hvdWxkVXNlVUZsYWcgPSBjb3VudFUgPT09IHJlZ0V4cHMubGVuZ3RoO1xuICAgICAgc2hvdWxkVXNlVkZsYWcgPSBjb3VudFYgPT09IHJlZ0V4cHMubGVuZ3RoO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgY29uc3QgYWxsVSA9IGNvdW50VSA9PT0gcmVnRXhwcy5sZW5ndGg7XG4gICAgICBjb25zdCBub25lVSA9IGNvdW50VSA9PT0gMDtcbiAgICAgIGNvbnN0IGFsbFYgPSBjb3VudFYgPT09IHJlZ0V4cHMubGVuZ3RoO1xuICAgICAgY29uc3Qgbm9uZVYgPSBjb3VudFYgPT09IDA7XG5cbiAgICAgIGlmICghKGFsbFUgfHwgbm9uZVUpIHx8ICEoYWxsViB8fCBub25lVikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25mbGljdGluZyBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgYWNyb3NzIHBhdHRlcm5zLicpO1xuICAgICAgfVxuXG4gICAgICBzaG91bGRVc2VVRmxhZyA9IGFsbFU7XG4gICAgICBzaG91bGRVc2VWRmxhZyA9IGFsbFY7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5VbmlvbjpcbiAgICAgIHNob3VsZFVzZVVGbGFnID0gY291bnRVID4gMDtcbiAgICAgIHNob3VsZFVzZVZGbGFnID0gY291bnRWID4gMDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQuICovXG4gICAgICBhc3NlcnQoZmFsc2UsIGBJbnZhbGlkIHN0cmF0ZWd5OiAke3N0cmF0ZWd5IGFzIHN0cmluZ31gKTtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIH1cblxuICBpZiAoc2hvdWxkVXNlVUZsYWcgJiYgc2hvdWxkVXNlVkZsYWcpIHtcbiAgICBhc3NlcnQoc3RyYXRlZ3kgIT09IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlRocm93LCAnQ2Fubm90IGNvbWJpbmUgYm90aCBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgaW4gb25lIFJlZ0V4cC4nKTtcbiAgICBzaG91bGRVc2VVRmxhZyA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHNob3VsZFVzZVVGbGFnKSB7XG4gICAgZmluYWxGbGFncy5hZGQoJ3UnKTtcbiAgfVxuICBpZiAoc2hvdWxkVXNlVkZsYWcpIHtcbiAgICBmaW5hbEZsYWdzLmFkZCgndicpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx5QkFBdUI7QUFLaEIsSUFBSyxtQ0FBTCxrQkFBS0Esc0NBQUw7QUFJTCxFQUFBQSxrQ0FBQSxlQUFZO0FBSVosRUFBQUEsa0NBQUEsV0FBUTtBQUlSLEVBQUFBLGtDQUFBLFdBQVE7QUFaRSxTQUFBQTtBQUFBLEdBQUE7QUFxQkwsU0FBUyxhQUFhLEtBQXFCO0FBRWhELFNBQU8sSUFBSSxXQUFXLHVCQUF1QixNQUFNO0FBQ3JEO0FBUU8sU0FBUyxjQUFjLEtBQXNCO0FBQ2xELE1BQUk7QUFDRixRQUFJLE9BQU8sR0FBRztBQUNkLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsU0FBUyxRQUFRLFFBQWdCLE1BQXVCO0FBQ3RELFNBQU8sT0FBTyxNQUFNLFNBQVMsSUFBSTtBQUNuQztBQUVBLFNBQVMsZUFBZSxTQUFtQixNQUFjLFVBQXFEO0FBQzVHLFFBQU0sUUFBUSxRQUFRLE9BQU8sQ0FBQyxXQUFXLFFBQVEsUUFBUSxJQUFJLENBQUMsRUFBRTtBQUVoRSxVQUFRLFVBQVU7QUFBQTtBQUFBLElBRWhCLEtBQUs7QUFDSCxhQUFPLFVBQVUsUUFBUTtBQUFBLElBQzNCLEtBQUs7QUFDSDtBQUFBLElBQ0YsS0FBSztBQUNILGFBQU8sUUFBUTtBQUFBLElBQ2pCO0FBRUUscUNBQU8sT0FBTyxxQkFBcUIsUUFBa0IsRUFBRTtBQUFBLEVBRTNEO0FBRUEsUUFBTSxVQUFVLFVBQVUsS0FBSyxVQUFVLFFBQVE7QUFDakQsTUFBSSxDQUFDLFNBQVM7QUFDWixVQUFNLElBQUksTUFBTSxxQkFBcUIsSUFBSSxvQkFBb0I7QUFBQSxFQUMvRDtBQUNBLFNBQU8sVUFBVSxRQUFRO0FBQzNCO0FBS08sTUFBTSx1QkFBdUI7QUFLN0IsTUFBTSxzQkFBc0I7QUFTNUIsU0FBUyxNQUNkLFNBQ0EsV0FBNkMscUJBQ3JDO0FBQ1IsTUFBSSxRQUFRLFdBQVcsR0FBRztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksUUFBUSxXQUFXLEtBQUssUUFBUSxDQUFDLE1BQU0sUUFBVztBQUNwRCxXQUFPLFFBQVEsQ0FBQztBQUFBLEVBQ2xCO0FBRUEsUUFBTSxTQUFTLFFBQVEsSUFBSSxDQUFDLFdBQVcsTUFBTSxPQUFPLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRztBQUV2RSxRQUFNLGFBQWEsb0JBQUksSUFBWTtBQUNuQyxtQkFBaUIsWUFBWSxTQUFTLFFBQVE7QUFDOUMsa0JBQWdCLFlBQVksU0FBUyxRQUFRO0FBQzdDLGVBQWEsWUFBWSxPQUFPO0FBRWhDLFNBQU8sSUFBSSxPQUFPLFFBQVEsQ0FBQyxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNwRDtBQUVBLFNBQVMsYUFBYSxZQUF5QixTQUF5QjtBQUN0RSxRQUFNLGFBQWEsQ0FBQyxLQUFLLEdBQUc7QUFDNUIsYUFBVyxRQUFRLFlBQVk7QUFDN0IsUUFBSSxRQUFRLEtBQUssQ0FBQyxXQUFXLFFBQVEsUUFBUSxJQUFJLENBQUMsR0FBRztBQUNuRCxpQkFBVyxJQUFJLElBQUk7QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsaUJBQ1AsWUFDQSxTQUNBLFVBQ007QUFDTixRQUFNLGlCQUFpQixDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUc7QUFDMUMsYUFBVyxRQUFRLGdCQUFnQjtBQUNqQyxRQUFJLGVBQWUsU0FBUyxNQUFNLFFBQVEsR0FBRztBQUMzQyxpQkFBVyxJQUFJLElBQUk7QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsZ0JBQ1AsWUFDQSxTQUNBLFVBQ007QUFDTixRQUFNLFNBQVMsUUFBUSxPQUFPLENBQUMsV0FBVyxRQUFRLFFBQVEsR0FBRyxDQUFDLEVBQUU7QUFDaEUsUUFBTSxTQUFTLFFBQVEsT0FBTyxDQUFDLFdBQVcsUUFBUSxRQUFRLEdBQUcsQ0FBQyxFQUFFO0FBRWhFLE1BQUk7QUFDSixNQUFJO0FBR0osVUFBUSxVQUFVO0FBQUE7QUFBQSxJQUVoQixLQUFLO0FBQ0gsdUJBQWlCLFdBQVcsUUFBUTtBQUNwQyx1QkFBaUIsV0FBVyxRQUFRO0FBQ3BDO0FBQUEsSUFDRixLQUFLLHFCQUF3QztBQUMzQyxZQUFNLE9BQU8sV0FBVyxRQUFRO0FBQ2hDLFlBQU0sUUFBUSxXQUFXO0FBQ3pCLFlBQU0sT0FBTyxXQUFXLFFBQVE7QUFDaEMsWUFBTSxRQUFRLFdBQVc7QUFFekIsVUFBSSxFQUFFLFFBQVEsVUFBVSxFQUFFLFFBQVEsUUFBUTtBQUN4QyxjQUFNLElBQUksTUFBTSw0Q0FBZ0Q7QUFBQSxNQUNsRTtBQUVBLHVCQUFpQjtBQUNqQix1QkFBaUI7QUFDakI7QUFBQSxJQUNGO0FBQUEsSUFDQSxLQUFLO0FBQ0gsdUJBQWlCLFNBQVM7QUFDMUIsdUJBQWlCLFNBQVM7QUFDMUI7QUFBQSxJQUNGO0FBRUUscUNBQU8sT0FBTyxxQkFBcUIsUUFBa0IsRUFBRTtBQUFBLEVBRTNEO0FBRUEsTUFBSSxrQkFBa0IsZ0JBQWdCO0FBQ3BDLG1DQUFPLGFBQWEscUJBQXdDLGtEQUFzRDtBQUNsSCxxQkFBaUI7QUFBQSxFQUNuQjtBQUVBLE1BQUksZ0JBQWdCO0FBQ2xCLGVBQVcsSUFBSSxHQUFHO0FBQUEsRUFDcEI7QUFDQSxNQUFJLGdCQUFnQjtBQUNsQixlQUFXLElBQUksR0FBRztBQUFBLEVBQ3BCO0FBQ0Y7IiwKICAibmFtZXMiOiBbIlJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5Il0KfQo=
254
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlZy1leHAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBBIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgbXVsdGlwbGUgcmVnZXggZmxhZ3MgaW50byBvbmUgYWx0ZXJuYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbGwgcmVnZXhlcy5cbiAgICovXG4gIEludGVyc2VjdCA9ICdJbnRlcnNlY3QnLFxuICAvKipcbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgdGhlIHJlZ2V4ZXMgaGF2ZSBjb25mbGljdGluZyBmbGFncy5cbiAgICovXG4gIFRocm93ID0gJ1Rocm93JyxcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbnkgcmVnZXguXG4gICAqL1xuICBVbmlvbiA9ICdVbmlvbidcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZyB0byBzYWZlbHkgdXNlIGl0IHdpdGhpbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcHJlZml4ZWQgd2l0aCBhIGJhY2tzbGFzaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIE5PVEU6IFdlIGNhbid0IHVzZSBgcmVwbGFjZUFsbCgpYCBmcm9tIGBTdHJpbmcudHNgIGhlcmUgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeS5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSZWdFeHAoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBuZXcgUmVnRXhwKHN0cik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNGbGFnKHJlZ0V4cDogUmVnRXhwLCBmbGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlZ0V4cC5mbGFncy5pbmNsdWRlcyhmbGFnKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkUGlja0ZsYWcocmVnRXhwczogUmVnRXhwW10sIGZsYWc6IHN0cmluZywgc3RyYXRlZ3k6IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5KTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvdW50ID0gcmVnRXhwcy5maWx0ZXIoKHJlZ0V4cCkgPT4gaGFzRmxhZyhyZWdFeHAsIGZsYWcpKS5sZW5ndGg7XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCBjb3VudHMgdGhlIGltcGxpY2l0IGRlZmF1bHQgYnJhbmNoIGFzIHVuY292ZXJlZCBldmVuIHdoZW4gYWxsIGVudW0gY2FzZXMgYXJlIGhhbmRsZWQuICovXG4gIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuSW50ZXJzZWN0OlxuICAgICAgcmV0dXJuIGNvdW50ID09PSByZWdFeHBzLmxlbmd0aDtcbiAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlRocm93OlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5VbmlvbjpcbiAgICAgIHJldHVybiBjb3VudCA+IDA7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgIGFzc2VydChmYWxzZSwgYEludmFsaWQgc3RyYXRlZ3k6ICR7c3RyYXRlZ3kgYXMgc3RyaW5nfWApO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxuXG4gIGNvbnN0IGFsbFNhbWUgPSBjb3VudCA9PT0gMCB8fCBjb3VudCA9PT0gcmVnRXhwcy5sZW5ndGg7XG4gIGlmICghYWxsU2FtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ29uZmxpY3RpbmcgZmxhZyAnJHtmbGFnfScgYWNyb3NzIHBhdHRlcm5zLmApO1xuICB9XG4gIHJldHVybiBjb3VudCA9PT0gcmVnRXhwcy5sZW5ndGg7XG59XG5cbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBhbHdheXMgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFMV0FZU19NQVRDSF9SRUdfRVhQID0gLyg/OikvO1xuXG4vKipcbiAqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbmV2ZXIgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE5FVkVSX01BVENIX1JFR19FWFAgPSAvLl4vO1xuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgcmVnZXhlcyBpbnRvIG9uZSBhbHRlcm5hdGlvbiwgaGFuZGxpbmcgZmxhZ3MuXG4gKlxuICogQHBhcmFtIHJlZ0V4cHMgLSBUaGUgcmVnZXhlcyB0byBjb21iaW5lLlxuICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgZmxhZ3MgKGRlZmF1bHQ6IGBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd2ApLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHJlZ2V4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25lT2YoXG4gIHJlZ0V4cHM6IFJlZ0V4cFtdLFxuICBzdHJhdGVneTogUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kgPSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd1xuKTogUmVnRXhwIHtcbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEFMV0FZU19NQVRDSF9SRUdfRVhQO1xuICB9XG5cbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAxICYmIHJlZ0V4cHNbMF0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZWdFeHBzWzBdO1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gcmVnRXhwcy5tYXAoKHJlZ0V4cCkgPT4gYCg/OiR7cmVnRXhwLnNvdXJjZX0pYCkuam9pbignfCcpO1xuXG4gIGNvbnN0IGZpbmFsRmxhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgYWRkU2VtYW50aWNGbGFncyhmaW5hbEZsYWdzLCByZWdFeHBzLCBzdHJhdGVneSk7XG4gIGFkZFVuaWNvZGVGbGFncyhmaW5hbEZsYWdzLCByZWdFeHBzLCBzdHJhdGVneSk7XG4gIGFkZE1ldGFGbGFncyhmaW5hbEZsYWdzLCByZWdFeHBzKTtcblxuICByZXR1cm4gbmV3IFJlZ0V4cChzb3VyY2UsIFsuLi5maW5hbEZsYWdzXS5qb2luKCcnKSk7XG59XG5cbmZ1bmN0aW9uIGFkZE1ldGFGbGFncyhmaW5hbEZsYWdzOiBTZXQ8c3RyaW5nPiwgcmVnRXhwczogUmVnRXhwW10pOiB2b2lkIHtcbiAgY29uc3QgTUVUQV9GTEFHUyA9IFsnZycsICdkJ107XG4gIGZvciAoY29uc3QgZmxhZyBvZiBNRVRBX0ZMQUdTKSB7XG4gICAgaWYgKHJlZ0V4cHMuc29tZSgocmVnRXhwKSA9PiBoYXNGbGFnKHJlZ0V4cCwgZmxhZykpKSB7XG4gICAgICBmaW5hbEZsYWdzLmFkZChmbGFnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU2VtYW50aWNGbGFncyhcbiAgZmluYWxGbGFnczogU2V0PHN0cmluZz4sXG4gIHJlZ0V4cHM6IFJlZ0V4cFtdLFxuICBzdHJhdGVneTogUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3lcbik6IHZvaWQge1xuICBjb25zdCBTRU1BTlRJQ19GTEFHUyA9IFsnaScsICdtJywgJ3MnLCAneSddO1xuICBmb3IgKGNvbnN0IGZsYWcgb2YgU0VNQU5USUNfRkxBR1MpIHtcbiAgICBpZiAoc2hvdWxkUGlja0ZsYWcocmVnRXhwcywgZmxhZywgc3RyYXRlZ3kpKSB7XG4gICAgICBmaW5hbEZsYWdzLmFkZChmbGFnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkVW5pY29kZUZsYWdzKFxuICBmaW5hbEZsYWdzOiBTZXQ8c3RyaW5nPixcbiAgcmVnRXhwczogUmVnRXhwW10sXG4gIHN0cmF0ZWd5OiBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneVxuKTogdm9pZCB7XG4gIGNvbnN0IGNvdW50VSA9IHJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCAndScpKS5sZW5ndGg7XG4gIGNvbnN0IGNvdW50ViA9IHJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCAndicpKS5sZW5ndGg7XG5cbiAgbGV0IHNob3VsZFVzZVVGbGFnOiBib29sZWFuO1xuICBsZXQgc2hvdWxkVXNlVkZsYWc6IGJvb2xlYW47XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IGNvdW50cyB0aGUgaW1wbGljaXQgZGVmYXVsdCBicmFuY2ggYXMgdW5jb3ZlcmVkIGV2ZW4gd2hlbiBhbGwgZW51bSBjYXNlcyBhcmUgaGFuZGxlZC4gKi9cbiAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5JbnRlcnNlY3Q6XG4gICAgICBzaG91bGRVc2VVRmxhZyA9IGNvdW50VSA9PT0gcmVnRXhwcy5sZW5ndGg7XG4gICAgICBzaG91bGRVc2VWRmxhZyA9IGNvdW50ViA9PT0gcmVnRXhwcy5sZW5ndGg7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlRocm93OiB7XG4gICAgICBjb25zdCBhbGxVID0gY291bnRVID09PSByZWdFeHBzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG5vbmVVID0gY291bnRVID09PSAwO1xuICAgICAgY29uc3QgYWxsViA9IGNvdW50ViA9PT0gcmVnRXhwcy5sZW5ndGg7XG4gICAgICBjb25zdCBub25lViA9IGNvdW50ViA9PT0gMDtcblxuICAgICAgaWYgKCEoYWxsVSB8fCBub25lVSkgfHwgIShhbGxWIHx8IG5vbmVWKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbmZsaWN0aW5nIFxcJ3VcXCcvXFwndlxcJyBmbGFncyBhY3Jvc3MgcGF0dGVybnMuJyk7XG4gICAgICB9XG5cbiAgICAgIHNob3VsZFVzZVVGbGFnID0gYWxsVTtcbiAgICAgIHNob3VsZFVzZVZGbGFnID0gYWxsVjtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlVuaW9uOlxuICAgICAgc2hvdWxkVXNlVUZsYWcgPSBjb3VudFUgPiAwO1xuICAgICAgc2hvdWxkVXNlVkZsYWcgPSBjb3VudFYgPiAwO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgIGFzc2VydChmYWxzZSwgYEludmFsaWQgc3RyYXRlZ3k6ICR7c3RyYXRlZ3kgYXMgc3RyaW5nfWApO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxuXG4gIGlmIChzaG91bGRVc2VVRmxhZyAmJiBzaG91bGRVc2VWRmxhZykge1xuICAgIGFzc2VydChzdHJhdGVneSAhPT0gUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVGhyb3csICdDYW5ub3QgY29tYmluZSBib3RoIFxcJ3VcXCcvXFwndlxcJyBmbGFncyBpbiBvbmUgUmVnRXhwLicpO1xuICAgIHNob3VsZFVzZVVGbGFnID0gZmFsc2U7XG4gIH1cblxuICBpZiAoc2hvdWxkVXNlVUZsYWcpIHtcbiAgICBmaW5hbEZsYWdzLmFkZCgndScpO1xuICB9XG4gIGlmIChzaG91bGRVc2VWRmxhZykge1xuICAgIGZpbmFsRmxhZ3MuYWRkKCd2Jyk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHlCQUF1QjtBQUtoQixJQUFLLG1DQUFMLGtCQUFLQSxzQ0FBTDtBQUlMLEVBQUFBLGtDQUFBLGVBQVk7QUFJWixFQUFBQSxrQ0FBQSxXQUFRO0FBSVIsRUFBQUEsa0NBQUEsV0FBUTtBQVpFLFNBQUFBO0FBQUEsR0FBQTtBQXFCTCxTQUFTLGFBQWEsS0FBcUI7QUFFaEQsU0FBTyxJQUFJLFdBQVcsdUJBQXVCLE1BQU07QUFDckQ7QUFRTyxTQUFTLGNBQWMsS0FBc0I7QUFDbEQsTUFBSTtBQUNGLFFBQUksT0FBTyxHQUFHO0FBQ2QsV0FBTztBQUFBLEVBQ1QsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxTQUFTLFFBQVEsUUFBZ0IsTUFBdUI7QUFDdEQsU0FBTyxPQUFPLE1BQU0sU0FBUyxJQUFJO0FBQ25DO0FBRUEsU0FBUyxlQUFlLFNBQW1CLE1BQWMsVUFBcUQ7QUFDNUcsUUFBTSxRQUFRLFFBQVEsT0FBTyxDQUFDLFdBQVcsUUFBUSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBRWhFLFVBQVEsVUFBVTtBQUFBO0FBQUEsSUFFaEIsS0FBSztBQUNILGFBQU8sVUFBVSxRQUFRO0FBQUEsSUFDM0IsS0FBSztBQUNIO0FBQUEsSUFDRixLQUFLO0FBQ0gsYUFBTyxRQUFRO0FBQUEsSUFDakI7QUFFRSxxQ0FBTyxPQUFPLHFCQUFxQixRQUFrQixFQUFFO0FBQUEsRUFFM0Q7QUFFQSxRQUFNLFVBQVUsVUFBVSxLQUFLLFVBQVUsUUFBUTtBQUNqRCxNQUFJLENBQUMsU0FBUztBQUNaLFVBQU0sSUFBSSxNQUFNLHFCQUFxQixJQUFJLG9CQUFvQjtBQUFBLEVBQy9EO0FBQ0EsU0FBTyxVQUFVLFFBQVE7QUFDM0I7QUFLTyxNQUFNLHVCQUF1QjtBQUs3QixNQUFNLHNCQUFzQjtBQVM1QixTQUFTLE1BQ2QsU0FDQSxXQUE2QyxxQkFDckM7QUFDUixNQUFJLFFBQVEsV0FBVyxHQUFHO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxRQUFRLFdBQVcsS0FBSyxRQUFRLENBQUMsTUFBTSxRQUFXO0FBQ3BELFdBQU8sUUFBUSxDQUFDO0FBQUEsRUFDbEI7QUFFQSxRQUFNLFNBQVMsUUFBUSxJQUFJLENBQUMsV0FBVyxNQUFNLE9BQU8sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHO0FBRXZFLFFBQU0sYUFBYSxvQkFBSSxJQUFZO0FBQ25DLG1CQUFpQixZQUFZLFNBQVMsUUFBUTtBQUM5QyxrQkFBZ0IsWUFBWSxTQUFTLFFBQVE7QUFDN0MsZUFBYSxZQUFZLE9BQU87QUFFaEMsU0FBTyxJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3BEO0FBRUEsU0FBUyxhQUFhLFlBQXlCLFNBQXlCO0FBQ3RFLFFBQU0sYUFBYSxDQUFDLEtBQUssR0FBRztBQUM1QixhQUFXLFFBQVEsWUFBWTtBQUM3QixRQUFJLFFBQVEsS0FBSyxDQUFDLFdBQVcsUUFBUSxRQUFRLElBQUksQ0FBQyxHQUFHO0FBQ25ELGlCQUFXLElBQUksSUFBSTtBQUFBLElBQ3JCO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxpQkFDUCxZQUNBLFNBQ0EsVUFDTTtBQUNOLFFBQU0saUJBQWlCLENBQUMsS0FBSyxLQUFLLEtBQUssR0FBRztBQUMxQyxhQUFXLFFBQVEsZ0JBQWdCO0FBQ2pDLFFBQUksZUFBZSxTQUFTLE1BQU0sUUFBUSxHQUFHO0FBQzNDLGlCQUFXLElBQUksSUFBSTtBQUFBLElBQ3JCO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxnQkFDUCxZQUNBLFNBQ0EsVUFDTTtBQUNOLFFBQU0sU0FBUyxRQUFRLE9BQU8sQ0FBQyxXQUFXLFFBQVEsUUFBUSxHQUFHLENBQUMsRUFBRTtBQUNoRSxRQUFNLFNBQVMsUUFBUSxPQUFPLENBQUMsV0FBVyxRQUFRLFFBQVEsR0FBRyxDQUFDLEVBQUU7QUFFaEUsTUFBSTtBQUNKLE1BQUk7QUFHSixVQUFRLFVBQVU7QUFBQTtBQUFBLElBRWhCLEtBQUs7QUFDSCx1QkFBaUIsV0FBVyxRQUFRO0FBQ3BDLHVCQUFpQixXQUFXLFFBQVE7QUFDcEM7QUFBQSxJQUNGLEtBQUsscUJBQXdDO0FBQzNDLFlBQU0sT0FBTyxXQUFXLFFBQVE7QUFDaEMsWUFBTSxRQUFRLFdBQVc7QUFDekIsWUFBTSxPQUFPLFdBQVcsUUFBUTtBQUNoQyxZQUFNLFFBQVEsV0FBVztBQUV6QixVQUFJLEVBQUUsUUFBUSxVQUFVLEVBQUUsUUFBUSxRQUFRO0FBQ3hDLGNBQU0sSUFBSSxNQUFNLDRDQUFnRDtBQUFBLE1BQ2xFO0FBRUEsdUJBQWlCO0FBQ2pCLHVCQUFpQjtBQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUs7QUFDSCx1QkFBaUIsU0FBUztBQUMxQix1QkFBaUIsU0FBUztBQUMxQjtBQUFBLElBQ0Y7QUFFRSxxQ0FBTyxPQUFPLHFCQUFxQixRQUFrQixFQUFFO0FBQUEsRUFFM0Q7QUFFQSxNQUFJLGtCQUFrQixnQkFBZ0I7QUFDcEMsbUNBQU8sYUFBYSxxQkFBd0Msa0RBQXNEO0FBQ2xILHFCQUFpQjtBQUFBLEVBQ25CO0FBRUEsTUFBSSxnQkFBZ0I7QUFDbEIsZUFBVyxJQUFJLEdBQUc7QUFBQSxFQUNwQjtBQUNBLE1BQUksZ0JBQWdCO0FBQ2xCLGVBQVcsSUFBSSxHQUFHO0FBQUEsRUFDcEI7QUFDRjsiLAogICJuYW1lcyI6IFsiUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kiXQp9Cg==
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * Contains utility functions for regular expressions.
5
5
  */
@@ -180,4 +180,4 @@ async function buildStatic() {
180
180
  buildCompileTypeScript,
181
181
  buildStatic
182
182
  });
183
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idWlsZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHN0YXRpYyBhc3NldHMgYW5kIGNsZWFuaW5nXG4gKiB0aGUgYnVpbGQgb3V0cHV0IGZvbGRlci4gSXQgaW5jbHVkZXMgZnVuY3Rpb25zIHRvIGNvcHkgc3RhdGljIGZpbGVzIHRvIHRoZSBkaXN0cmlidXRpb24gZm9sZGVyXG4gKiBhbmQgdG8gcmVtb3ZlIHRoZSBleGlzdGluZyBidWlsZCBvdXRwdXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUc0NvbmZpZ0pzb24gfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBjcCxcbiAgZ2xvYixcbiAgcm1cbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB7IHRvQXJyYXkgfSBmcm9tICcuLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7IHRyaW1TdGFydCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyByZWFkZGlyUG9zaXggfSBmcm9tICcuL2ZzLnRzJztcbmltcG9ydCB7IHJlYWRKc29uIH0gZnJvbSAnLi9qc29uLnRzJztcbmltcG9ydCB7IG5wbVJ1bk9wdGlvbmFsIH0gZnJvbSAnLi9ucG0tcnVuLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi9yb290LnRzJztcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBkaXN0cmlidXRpb24gZm9sZGVyIGFuZCBpdHMgY29udGVudHMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBlbnRpcmUgZGlzdHJpYnV0aW9uIGZvbGRlciB0byBlbnN1cmUgYSBjbGVhbiBidWlsZCBlbnZpcm9ubWVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZvbGRlciBoYXMgYmVlbiByZW1vdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDbGVhbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgcm0oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQ29tcGlsZXMgdGhlIGNvZGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb2RlIGNvbXBpbGVzIHN1Y2Nlc3NmdWxseS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ29tcGlsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhd2FpdCBucG1SdW5PcHRpb25hbCgnYnVpbGQ6Y29tcGlsZTpzdmVsdGUnKSkge1xuICAgIGF3YWl0IGJ1aWxkQ29tcGlsZVN2ZWx0ZSgpO1xuICB9XG4gIGlmICghYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ2J1aWxkOmNvbXBpbGU6dHlwZXNjcmlwdCcpKSB7XG4gICAgYXdhaXQgYnVpbGRDb21waWxlVHlwZVNjcmlwdCgpO1xuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZXMgdGhlIFN2ZWx0ZSBjb2RlLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29kZSBjb21waWxlcyBzdWNjZXNzZnVsbHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENvbXBpbGVTdmVsdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRzQ29uZmlnUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuVHNDb25maWdKc29uKTtcbiAgY29uc3QgdHNDb25maWcgPSBhd2FpdCByZWFkSnNvbjxUc0NvbmZpZ0pzb24+KHRzQ29uZmlnUGF0aCk7XG4gIGNvbnN0IGFsbEZpbGVzID0gYXdhaXQgdG9BcnJheShnbG9iKHRzQ29uZmlnLmluY2x1ZGUgPz8gW10sIHsgZXhjbHVkZTogdHNDb25maWcuZXhjbHVkZSA/PyBbXSB9KSk7XG4gIGNvbnN0IHN2ZWx0ZUZpbGVzID0gYWxsRmlsZXMuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmVuZHNXaXRoKCcuc3ZlbHRlJykgfHwgZmlsZS5lbmRzV2l0aCgnLnN2ZWx0ZS5qcycpIHx8IGZpbGUuZW5kc1dpdGgoJy5zdmVsdGUudHMnKSk7XG5cbiAgaWYgKHN2ZWx0ZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGdldExpYkRlYnVnZ2VyKCdidWlsZDpidWlsZENvbXBpbGVTdmVsdGUnKSgnTm8gU3ZlbHRlIGZpbGVzIGZvdW5kIGluIHRoZSBwcm9qZWN0LCBza2lwcGluZyBTdmVsdGUgY29tcGlsYXRpb24nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBleGVjRnJvbVJvb3QoWyducHgnLCAnc3ZlbHRlLWNoZWNrJywgJy0tdHNjb25maWcnLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlRzQ29uZmlnSnNvbl0pO1xufVxuXG4vKipcbiAqIENvbXBpbGVzIHRoZSBUeXBlU2NyaXB0IGNvZGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb2RlIGNvbXBpbGVzIHN1Y2Nlc3NmdWxseS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ29tcGlsZVR5cGVTY3JpcHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ25weCcsICd0c2MnLCAnLS1idWlsZCcsICctLWZvcmNlJ10pO1xufVxuXG4vKipcbiAqIENvcGllcyBhbGwgc3RhdGljIGZpbGVzIGZyb20gdGhlIHN0YXRpYyBhc3NldHMgZm9sZGVyIHRvIHRoZSBkaXN0cmlidXRpb24gZm9sZGVyLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcmVjdXJzaXZlbHkgcmVhZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdGF0aWMgYXNzZXRzIGZvbGRlciBhbmQgY29waWVzXG4gKiBlYWNoIGZpbGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcGF0aCBpbiB0aGUgZGlzdHJpYnV0aW9uIGZvbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFN0YXRpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBkaXJlbnQgb2YgYXdhaXQgcmVhZGRpclBvc2l4KE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuU3RhdGljLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZGlyZW50LmlzRmlsZSgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoID0gdHJpbVN0YXJ0KGpvaW4oZGlyZW50LnBhcmVudFBhdGgsIGRpcmVudC5uYW1lKSwgYCR7T2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5TdGF0aWN9L2ApO1xuICAgIGF3YWl0IGNwKGpvaW4oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5TdGF0aWMsIHBhdGgpLCBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgcGF0aCkpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsc0JBSU87QUFFUCxtQkFBd0I7QUFDeEIsbUJBQStCO0FBQy9CLGtCQUFxQjtBQUNyQixvQkFBMEI7QUFDMUIsZ0JBQTZCO0FBQzdCLGtCQUF5QjtBQUN6QixxQkFBK0I7QUFDL0IsMkNBQTBDO0FBQzFDLGtCQUdPO0FBU1AsZUFBc0IsYUFBNEI7QUFDaEQsWUFBTSxvQkFBRywrREFBMEIsTUFBTSxFQUFFLE9BQU8sTUFBTSxXQUFXLEtBQUssQ0FBQztBQUMzRTtBQU9BLGVBQXNCLGVBQThCO0FBQ2xELE1BQUksQ0FBQyxVQUFNLCtCQUFlLHNCQUFzQixHQUFHO0FBQ2pELFVBQU0sbUJBQW1CO0FBQUEsRUFDM0I7QUFDQSxNQUFJLENBQUMsVUFBTSwrQkFBZSwwQkFBMEIsR0FBRztBQUNyRCxVQUFNLHVCQUF1QjtBQUFBLEVBQy9CO0FBQ0Y7QUFPQSxlQUFzQixxQkFBb0M7QUFDeEQsUUFBTSxtQkFBZSxxQ0FBd0IsK0RBQTBCLFlBQVk7QUFDbkYsUUFBTSxXQUFXLFVBQU0sc0JBQXVCLFlBQVk7QUFDMUQsUUFBTSxXQUFXLFVBQU0sMEJBQVEsc0JBQUssU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsU0FBUyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEcsUUFBTSxjQUFjLFNBQVMsT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTLFNBQVMsS0FBSyxLQUFLLFNBQVMsWUFBWSxLQUFLLEtBQUssU0FBUyxZQUFZLENBQUM7QUFFcEksTUFBSSxZQUFZLFdBQVcsR0FBRztBQUM1QixxQ0FBZSwwQkFBMEIsRUFBRSxtRUFBbUU7QUFDOUc7QUFBQSxFQUNGO0FBRUEsWUFBTSwwQkFBYSxDQUFDLE9BQU8sZ0JBQWdCLGNBQWMsK0RBQTBCLFlBQVksQ0FBQztBQUNsRztBQU9BLGVBQXNCLHlCQUF3QztBQUM1RCxZQUFNLDBCQUFhLENBQUMsT0FBTyxPQUFPLFdBQVcsU0FBUyxDQUFDO0FBQ3pEO0FBVUEsZUFBc0IsY0FBNkI7QUFDakQsYUFBVyxVQUFVLFVBQU0sd0JBQWEsK0RBQTBCLFFBQVEsRUFBRSxXQUFXLE1BQU0sZUFBZSxLQUFLLENBQUMsR0FBRztBQUNuSCxRQUFJLENBQUMsT0FBTyxPQUFPLEdBQUc7QUFDcEI7QUFBQSxJQUNGO0FBRUEsVUFBTSxXQUFPLDZCQUFVLGtCQUFLLE9BQU8sWUFBWSxPQUFPLElBQUksR0FBRyxHQUFHLCtEQUEwQixNQUFNLEdBQUc7QUFDbkcsY0FBTSx3QkFBRyxrQkFBSywrREFBMEIsUUFBUSxJQUFJLE9BQUcsa0JBQUssK0RBQTBCLE1BQU0sSUFBSSxDQUFDO0FBQUEsRUFDbkc7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
183
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idWlsZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgYnVpbGQgcHJvY2VzcyBmb3Igc3RhdGljIGFzc2V0cyBhbmQgY2xlYW5pbmdcbiAqIHRoZSBidWlsZCBvdXRwdXQgZm9sZGVyLiBJdCBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gY29weSBzdGF0aWMgZmlsZXMgdG8gdGhlIGRpc3RyaWJ1dGlvbiBmb2xkZXJcbiAqIGFuZCB0byByZW1vdmUgdGhlIGV4aXN0aW5nIGJ1aWxkIG91dHB1dC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRzQ29uZmlnSnNvbiB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIGNwLFxuICBnbG9iLFxuICBybVxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uL2FzeW5jLnRzJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgdHJpbVN0YXJ0IH0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7IHJlYWRkaXJQb3NpeCB9IGZyb20gJy4vZnMudHMnO1xuaW1wb3J0IHsgcmVhZEpzb24gfSBmcm9tICcuL2pzb24udHMnO1xuaW1wb3J0IHsgbnBtUnVuT3B0aW9uYWwgfSBmcm9tICcuL25wbS1ydW4udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL3Jvb3QudHMnO1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGRpc3RyaWJ1dGlvbiBmb2xkZXIgYW5kIGl0cyBjb250ZW50cy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGVudGlyZSBkaXN0cmlidXRpb24gZm9sZGVyIHRvIGVuc3VyZSBhIGNsZWFuIGJ1aWxkIGVudmlyb25tZW50LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZm9sZGVyIGhhcyBiZWVuIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENsZWFuKCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBybShPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDb21waWxlcyB0aGUgY29kZS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvZGUgY29tcGlsZXMgc3VjY2Vzc2Z1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDb21waWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWF3YWl0IG5wbVJ1bk9wdGlvbmFsKCdidWlsZDpjb21waWxlOnN2ZWx0ZScpKSB7XG4gICAgYXdhaXQgYnVpbGRDb21waWxlU3ZlbHRlKCk7XG4gIH1cbiAgaWYgKCFhd2FpdCBucG1SdW5PcHRpb25hbCgnYnVpbGQ6Y29tcGlsZTp0eXBlc2NyaXB0JykpIHtcbiAgICBhd2FpdCBidWlsZENvbXBpbGVUeXBlU2NyaXB0KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21waWxlcyB0aGUgU3ZlbHRlIGNvZGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb2RlIGNvbXBpbGVzIHN1Y2Nlc3NmdWxseS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ29tcGlsZVN2ZWx0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdHNDb25maWdQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5Uc0NvbmZpZ0pzb24pO1xuICBjb25zdCB0c0NvbmZpZyA9IGF3YWl0IHJlYWRKc29uPFRzQ29uZmlnSnNvbj4odHNDb25maWdQYXRoKTtcbiAgY29uc3QgYWxsRmlsZXMgPSBhd2FpdCB0b0FycmF5KGdsb2IodHNDb25maWcuaW5jbHVkZSA/PyBbXSwgeyBleGNsdWRlOiB0c0NvbmZpZy5leGNsdWRlID8/IFtdIH0pKTtcbiAgY29uc3Qgc3ZlbHRlRmlsZXMgPSBhbGxGaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZW5kc1dpdGgoJy5zdmVsdGUnKSB8fCBmaWxlLmVuZHNXaXRoKCcuc3ZlbHRlLmpzJykgfHwgZmlsZS5lbmRzV2l0aCgnLnN2ZWx0ZS50cycpKTtcblxuICBpZiAoc3ZlbHRlRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ2J1aWxkOmJ1aWxkQ29tcGlsZVN2ZWx0ZScpKCdObyBTdmVsdGUgZmlsZXMgZm91bmQgaW4gdGhlIHByb2plY3QsIHNraXBwaW5nIFN2ZWx0ZSBjb21waWxhdGlvbicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ25weCcsICdzdmVsdGUtY2hlY2snLCAnLS10c2NvbmZpZycsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuVHNDb25maWdKc29uXSk7XG59XG5cbi8qKlxuICogQ29tcGlsZXMgdGhlIFR5cGVTY3JpcHQgY29kZS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvZGUgY29tcGlsZXMgc3VjY2Vzc2Z1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDb21waWxlVHlwZVNjcmlwdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnbnB4JywgJ3RzYycsICctLWJ1aWxkJywgJy0tZm9yY2UnXSk7XG59XG5cbi8qKlxuICogQ29waWVzIGFsbCBzdGF0aWMgZmlsZXMgZnJvbSB0aGUgc3RhdGljIGFzc2V0cyBmb2xkZXIgdG8gdGhlIGRpc3RyaWJ1dGlvbiBmb2xkZXIuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWN1cnNpdmVseSByZWFkcyB0aGUgY29udGVudHMgb2YgdGhlIHN0YXRpYyBhc3NldHMgZm9sZGVyIGFuZCBjb3BpZXNcbiAqIGVhY2ggZmlsZSB0byB0aGUgY29ycmVzcG9uZGluZyBwYXRoIGluIHRoZSBkaXN0cmlidXRpb24gZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgZmlsZXMgaGF2ZSBiZWVuIGNvcGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkU3RhdGljKCk6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGNvbnN0IGRpcmVudCBvZiBhd2FpdCByZWFkZGlyUG9zaXgoT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5TdGF0aWMsIHsgcmVjdXJzaXZlOiB0cnVlLCB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pKSB7XG4gICAgaWYgKCFkaXJlbnQuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSB0cmltU3RhcnQoam9pbihkaXJlbnQucGFyZW50UGF0aCwgZGlyZW50Lm5hbWUpLCBgJHtPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlN0YXRpY30vYCk7XG4gICAgYXdhaXQgY3Aoam9pbihPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlN0YXRpYywgcGF0aCksIGpvaW4oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBwYXRoKSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQSxzQkFJTztBQUVQLG1CQUF3QjtBQUN4QixtQkFBK0I7QUFDL0Isa0JBQXFCO0FBQ3JCLG9CQUEwQjtBQUMxQixnQkFBNkI7QUFDN0Isa0JBQXlCO0FBQ3pCLHFCQUErQjtBQUMvQiwyQ0FBMEM7QUFDMUMsa0JBR087QUFTUCxlQUFzQixhQUE0QjtBQUNoRCxZQUFNLG9CQUFHLCtEQUEwQixNQUFNLEVBQUUsT0FBTyxNQUFNLFdBQVcsS0FBSyxDQUFDO0FBQzNFO0FBT0EsZUFBc0IsZUFBOEI7QUFDbEQsTUFBSSxDQUFDLFVBQU0sK0JBQWUsc0JBQXNCLEdBQUc7QUFDakQsVUFBTSxtQkFBbUI7QUFBQSxFQUMzQjtBQUNBLE1BQUksQ0FBQyxVQUFNLCtCQUFlLDBCQUEwQixHQUFHO0FBQ3JELFVBQU0sdUJBQXVCO0FBQUEsRUFDL0I7QUFDRjtBQU9BLGVBQXNCLHFCQUFvQztBQUN4RCxRQUFNLG1CQUFlLHFDQUF3QiwrREFBMEIsWUFBWTtBQUNuRixRQUFNLFdBQVcsVUFBTSxzQkFBdUIsWUFBWTtBQUMxRCxRQUFNLFdBQVcsVUFBTSwwQkFBUSxzQkFBSyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxTQUFTLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRyxRQUFNLGNBQWMsU0FBUyxPQUFPLENBQUMsU0FBUyxLQUFLLFNBQVMsU0FBUyxLQUFLLEtBQUssU0FBUyxZQUFZLEtBQUssS0FBSyxTQUFTLFlBQVksQ0FBQztBQUVwSSxNQUFJLFlBQVksV0FBVyxHQUFHO0FBQzVCLHFDQUFlLDBCQUEwQixFQUFFLG1FQUFtRTtBQUM5RztBQUFBLEVBQ0Y7QUFFQSxZQUFNLDBCQUFhLENBQUMsT0FBTyxnQkFBZ0IsY0FBYywrREFBMEIsWUFBWSxDQUFDO0FBQ2xHO0FBT0EsZUFBc0IseUJBQXdDO0FBQzVELFlBQU0sMEJBQWEsQ0FBQyxPQUFPLE9BQU8sV0FBVyxTQUFTLENBQUM7QUFDekQ7QUFVQSxlQUFzQixjQUE2QjtBQUNqRCxhQUFXLFVBQVUsVUFBTSx3QkFBYSwrREFBMEIsUUFBUSxFQUFFLFdBQVcsTUFBTSxlQUFlLEtBQUssQ0FBQyxHQUFHO0FBQ25ILFFBQUksQ0FBQyxPQUFPLE9BQU8sR0FBRztBQUNwQjtBQUFBLElBQ0Y7QUFFQSxVQUFNLFdBQU8sNkJBQVUsa0JBQUssT0FBTyxZQUFZLE9BQU8sSUFBSSxHQUFHLEdBQUcsK0RBQTBCLE1BQU0sR0FBRztBQUNuRyxjQUFNLHdCQUFHLGtCQUFLLCtEQUEwQixRQUFRLElBQUksT0FBRyxrQkFBSywrREFBMEIsTUFBTSxJQUFJLENBQUM7QUFBQSxFQUNuRztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * This module provides utility functions to handle the build process for static assets and cleaning
5
5
  * the build output folder. It includes functions to copy static files to the distribution folder
@@ -137,14 +137,14 @@ function changeExtensionPlugin(extension) {
137
137
  continue;
138
138
  }
139
139
  const newPath = (0, import_string.replaceAll)(file.path, /\.js$/g, extension);
140
- let newText = (0, import_string.replaceAll)(file.text, /require\(["'](?<ImportPath>.+?)["']\)/g, (_, importPath) => {
140
+ let newText = (0, import_string.replaceAll)(file.text, /require\(["'](?<ImportPath>.+?)["']\)/g, ({ capturedGroupArgs: [importPath = ""] }) => {
141
141
  if (importPath.endsWith(import_obsidian_dev_utils_repo_paths.ObsidianDevUtilsRepoPaths.DtsExtension)) {
142
142
  return "undefined";
143
143
  }
144
144
  const fixedImportPath = (0, import_string.replaceAll)(importPath, /\.ts$/g, extension);
145
145
  return `require('${fixedImportPath}')`;
146
146
  });
147
- newText = (0, import_string.replaceAll)(newText, /from "(?<ImportPath>.+?)"/g, (_, importPath) => {
147
+ newText = (0, import_string.replaceAll)(newText, /from "(?<ImportPath>.+?)"/g, ({ capturedGroupArgs: [importPath = ""] }) => {
148
148
  if (importPath.endsWith(import_obsidian_dev_utils_repo_paths.ObsidianDevUtilsRepoPaths.DtsExtension)) {
149
149
  return "undefined";
150
150
  }
@@ -161,4 +161,4 @@ function changeExtensionPlugin(extension) {
161
161
  0 && (module.exports = {
162
162
  changeExtensionPlugin
163
163
  });
164
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY2hhbmdlLWV4dGVuc2lvbi1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGNoYW5nZXMgdGhlIGV4dGVuc2lvbiBvZiBKYXZhU2NyaXB0IGZpbGVzIGFmdGVyIHRoZSBidWlsZCBwcm9jZXNzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBlc2J1aWxkIHBsdWdpbiB0aGF0IHJld3JpdGVzIGZpbGUgZXh0ZW5zaW9ucyBhdCBidWlsZCB0aW1lOyByZXF1aXJlcyBhIGxpdmUgZXNidWlsZCBjb250ZXh0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgeyB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJy4uLy4uLy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBjaGFuZ2VzIHRoZSBleHRlbnNpb24gb2YgSmF2YVNjcmlwdCBmaWxlcyBhZnRlciB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBjaGFuZ2UgdGhlIGZpbGVzIHRvLlxuICogQHJldHVybnMgQW4gZXNidWlsZCBgUGx1Z2luYCBvYmplY3QgdGhhdCBoYW5kbGVzIHRoZSByZW5hbWluZyBhbmQgbW9kaWZpY2F0aW9uIG9mIG91dHB1dCBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUV4dGVuc2lvblBsdWdpbihleHRlbnNpb246IHN0cmluZyk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2NoYW5nZS1leHRlbnNpb24nLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiByZXN1bHQub3V0cHV0RmlsZXMgPz8gW10pIHtcbiAgICAgICAgICBpZiAoIWZpbGUucGF0aC5lbmRzV2l0aChPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkpzRXh0ZW5zaW9uKSB8fCBmaWxlLnBhdGguZW5kc1dpdGgoT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EanNFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBuZXdQYXRoID0gcmVwbGFjZUFsbChmaWxlLnBhdGgsIC9cXC5qcyQvZywgZXh0ZW5zaW9uKTtcblxuICAgICAgICAgIGxldCBuZXdUZXh0ID0gcmVwbGFjZUFsbChmaWxlLnRleHQsIC9yZXF1aXJlXFwoW1wiJ10oPzxJbXBvcnRQYXRoPi4rPylbXCInXVxcKS9nLCAoXywgaW1wb3J0UGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKGltcG9ydFBhdGguZW5kc1dpdGgoT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EdHNFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZml4ZWRJbXBvcnRQYXRoID0gcmVwbGFjZUFsbChpbXBvcnRQYXRoLCAvXFwudHMkL2csIGV4dGVuc2lvbik7XG4gICAgICAgICAgICByZXR1cm4gYHJlcXVpcmUoJyR7Zml4ZWRJbXBvcnRQYXRofScpYDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ld1RleHQgPSByZXBsYWNlQWxsKG5ld1RleHQsIC9mcm9tIFwiKD88SW1wb3J0UGF0aD4uKz8pXCIvZywgKF8sIGltcG9ydFBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbXBvcnRQYXRoLmVuZHNXaXRoKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRHRzRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpeGVkSW1wb3J0UGF0aCA9IHJlcGxhY2VBbGwoaW1wb3J0UGF0aCwgL1xcLnRzJC9nLCBleHRlbnNpb24pO1xuICAgICAgICAgICAgcmV0dXJuIGBmcm9tIFwiJHtmaXhlZEltcG9ydFBhdGh9XCJgO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKG5ld1BhdGgsIG5ld1RleHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBLHNCQUEwQjtBQUUxQixvQkFBMkI7QUFDM0IsMkNBQTBDO0FBUW5DLFNBQVMsc0JBQXNCLFdBQTJCO0FBQy9ELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sT0FBYTtBQUNqQixZQUFNLE1BQU0sT0FBTyxXQUFXO0FBQzVCLG1CQUFXLFFBQVEsT0FBTyxlQUFlLENBQUMsR0FBRztBQUMzQyxjQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsK0RBQTBCLFdBQVcsS0FBSyxLQUFLLEtBQUssU0FBUywrREFBMEIsWUFBWSxHQUFHO0FBQzVIO0FBQUEsVUFDRjtBQUVBLGdCQUFNLGNBQVUsMEJBQVcsS0FBSyxNQUFNLFVBQVUsU0FBUztBQUV6RCxjQUFJLGNBQVUsMEJBQVcsS0FBSyxNQUFNLDBDQUEwQyxDQUFDLEdBQUcsZUFBZTtBQUMvRixnQkFBSSxXQUFXLFNBQVMsK0RBQTBCLFlBQVksR0FBRztBQUMvRCxxQkFBTztBQUFBLFlBQ1Q7QUFFQSxrQkFBTSxzQkFBa0IsMEJBQVcsWUFBWSxVQUFVLFNBQVM7QUFDbEUsbUJBQU8sWUFBWSxlQUFlO0FBQUEsVUFDcEMsQ0FBQztBQUVELHdCQUFVLDBCQUFXLFNBQVMsOEJBQThCLENBQUMsR0FBRyxlQUFlO0FBQzdFLGdCQUFJLFdBQVcsU0FBUywrREFBMEIsWUFBWSxHQUFHO0FBQy9ELHFCQUFPO0FBQUEsWUFDVDtBQUVBLGtCQUFNLHNCQUFrQiwwQkFBVyxZQUFZLFVBQVUsU0FBUztBQUNsRSxtQkFBTyxTQUFTLGVBQWU7QUFBQSxVQUNqQyxDQUFDO0FBRUQsb0JBQU0sMkJBQVUsU0FBUyxPQUFPO0FBQUEsUUFDbEM7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
164
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY2hhbmdlLWV4dGVuc2lvbi1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgY2hhbmdlcyB0aGUgZXh0ZW5zaW9uIG9mIEphdmFTY3JpcHQgZmlsZXMgYWZ0ZXIgdGhlIGJ1aWxkIHByb2Nlc3MuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcmV3cml0ZXMgZmlsZSBleHRlbnNpb25zIGF0IGJ1aWxkIHRpbWU7IHJlcXVpcmVzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQuICovXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnZXNidWlsZCc7XG5cbmltcG9ydCB7IHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vLi4vLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuLi8uLi9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGNoYW5nZXMgdGhlIGV4dGVuc2lvbiBvZiBKYXZhU2NyaXB0IGZpbGVzIGFmdGVyIHRoZSBidWlsZCBwcm9jZXNzLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGNoYW5nZSB0aGUgZmlsZXMgdG8uXG4gKiBAcmV0dXJucyBBbiBlc2J1aWxkIGBQbHVnaW5gIG9iamVjdCB0aGF0IGhhbmRsZXMgdGhlIHJlbmFtaW5nIGFuZCBtb2RpZmljYXRpb24gb2Ygb3V0cHV0IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlRXh0ZW5zaW9uUGx1Z2luKGV4dGVuc2lvbjogc3RyaW5nKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnY2hhbmdlLWV4dGVuc2lvbicsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIHJlc3VsdC5vdXRwdXRGaWxlcyA/PyBbXSkge1xuICAgICAgICAgIGlmICghZmlsZS5wYXRoLmVuZHNXaXRoKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuSnNFeHRlbnNpb24pIHx8IGZpbGUucGF0aC5lbmRzV2l0aChPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRqc0V4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld1BhdGggPSByZXBsYWNlQWxsKGZpbGUucGF0aCwgL1xcLmpzJC9nLCBleHRlbnNpb24pO1xuXG4gICAgICAgICAgbGV0IG5ld1RleHQgPSByZXBsYWNlQWxsKGZpbGUudGV4dCwgL3JlcXVpcmVcXChbXCInXSg/PEltcG9ydFBhdGg+Lis/KVtcIiddXFwpL2csICh7IGNhcHR1cmVkR3JvdXBBcmdzOiBbaW1wb3J0UGF0aCA9ICcnXSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW1wb3J0UGF0aC5lbmRzV2l0aChPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkR0c0V4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaXhlZEltcG9ydFBhdGggPSByZXBsYWNlQWxsKGltcG9ydFBhdGgsIC9cXC50cyQvZywgZXh0ZW5zaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBgcmVxdWlyZSgnJHtmaXhlZEltcG9ydFBhdGh9JylgO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbmV3VGV4dCA9IHJlcGxhY2VBbGwobmV3VGV4dCwgL2Zyb20gXCIoPzxJbXBvcnRQYXRoPi4rPylcIi9nLCAoeyBjYXB0dXJlZEdyb3VwQXJnczogW2ltcG9ydFBhdGggPSAnJ10gfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGltcG9ydFBhdGguZW5kc1dpdGgoT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EdHNFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZml4ZWRJbXBvcnRQYXRoID0gcmVwbGFjZUFsbChpbXBvcnRQYXRoLCAvXFwudHMkL2csIGV4dGVuc2lvbik7XG4gICAgICAgICAgICByZXR1cm4gYGZyb20gXCIke2ZpeGVkSW1wb3J0UGF0aH1cImA7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUobmV3UGF0aCwgbmV3VGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsc0JBQTBCO0FBRTFCLG9CQUEyQjtBQUMzQiwyQ0FBMEM7QUFRbkMsU0FBUyxzQkFBc0IsV0FBMkI7QUFDL0QsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTSxPQUFhO0FBQ2pCLFlBQU0sTUFBTSxPQUFPLFdBQVc7QUFDNUIsbUJBQVcsUUFBUSxPQUFPLGVBQWUsQ0FBQyxHQUFHO0FBQzNDLGNBQUksQ0FBQyxLQUFLLEtBQUssU0FBUywrREFBMEIsV0FBVyxLQUFLLEtBQUssS0FBSyxTQUFTLCtEQUEwQixZQUFZLEdBQUc7QUFDNUg7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sY0FBVSwwQkFBVyxLQUFLLE1BQU0sVUFBVSxTQUFTO0FBRXpELGNBQUksY0FBVSwwQkFBVyxLQUFLLE1BQU0sMENBQTBDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNO0FBQzFILGdCQUFJLFdBQVcsU0FBUywrREFBMEIsWUFBWSxHQUFHO0FBQy9ELHFCQUFPO0FBQUEsWUFDVDtBQUVBLGtCQUFNLHNCQUFrQiwwQkFBVyxZQUFZLFVBQVUsU0FBUztBQUNsRSxtQkFBTyxZQUFZLGVBQWU7QUFBQSxVQUNwQyxDQUFDO0FBRUQsd0JBQVUsMEJBQVcsU0FBUyw4QkFBOEIsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU07QUFDeEcsZ0JBQUksV0FBVyxTQUFTLCtEQUEwQixZQUFZLEdBQUc7QUFDL0QscUJBQU87QUFBQSxZQUNUO0FBRUEsa0JBQU0sc0JBQWtCLDBCQUFXLFlBQVksVUFBVSxTQUFTO0FBQ2xFLG1CQUFPLFNBQVMsZUFBZTtBQUFBLFVBQ2pDLENBQUM7QUFFRCxvQkFBTSwyQkFBVSxTQUFTLE9BQU87QUFBQSxRQUNsQztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * This module defines an esbuild plugin that changes the extension of JavaScript files after the build process.
5
5
  */
@@ -201,4 +201,4 @@ async function enableCommunityPlugin(obsidianConfigFolder, pluginId) {
201
201
  0 && (module.exports = {
202
202
  copyToObsidianPluginsFolderPlugin
203
203
  });
204
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGF1dG9tYXRpY2FsbHkgY29waWVzIHRoZSBidWlsZCBvdXRwdXRcbiAqIHRvIHRoZSBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlciBkdXJpbmcgZGV2ZWxvcG1lbnQuIFRoaXMgcGx1Z2luIGhlbHBzIHN0cmVhbWxpbmVcbiAqIHRoZSBkZXZlbG9wbWVudCB3b3JrZmxvdyBieSBlbnN1cmluZyB0aGF0IHRoZSBsYXRlc3QgYnVpbGQgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICogaW4gdGhlIGNvcnJlY3QgT2JzaWRpYW4gZm9sZGVyIGZvciB0ZXN0aW5nIGFuZCB1c2UuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIGVzYnVpbGQgcGx1Z2luIHRoYXQgY29waWVzIGJ1aWxkIG91dHB1dCB0byBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlcjsgcmVxdWlyZXMgYSBsaXZlIGVzYnVpbGQgY29udGV4dC4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi8uLi8uLi9kZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBkaXJuYW1lLFxuICBqb2luLFxuICB0b1Bvc2l4UGF0aFxufSBmcm9tICcuLi8uLi8uLi9wYXRoLnRzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgY29waWVzIHRoZSBidWlsZCBvdXRwdXQgdG8gdGhlIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBpc1Byb2R1Y3Rpb25CdWlsZCAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJ1aWxkIGlzIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAqIEBwYXJhbSBkaXN0Rm9sZGVyIC0gVGhlIGZvbGRlciB3aGVyZSB0aGUgYnVpbHQgZmlsZXMgYXJlIGxvY2F0ZWQuXG4gKiBAcGFyYW0gb2JzaWRpYW5Db25maWdGb2xkZXIgLSBUaGUgZm9sZGVyIG9mIHRoZSBPYnNpZGlhbiBjb25maWd1cmF0aW9uLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBwbHVnaW4gd2lsbCBub3QgY29weSBmaWxlcy5cbiAqIEBwYXJhbSBwbHVnaW5OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIE9ic2lkaWFuIHBsdWdpbi5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luKFxuICBpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbixcbiAgZGlzdEZvbGRlcjogc3RyaW5nLFxuICBvYnNpZGlhbkNvbmZpZ0ZvbGRlcjogc3RyaW5nLFxuICBwbHVnaW5OYW1lOiBzdHJpbmdcbik6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2NvcHktdG8tb2JzaWRpYW4tcGx1Z2lucy1mb2xkZXInLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5vbkVuZChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChpc1Byb2R1Y3Rpb25CdWlsZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb2JzaWRpYW5Db25maWdGb2xkZXIpIHtcbiAgICAgICAgICBnZXRMaWJEZWJ1Z2dlcignY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luJykoXG4gICAgICAgICAgICAnTm8gT2JzaWRpYW4gY29uZmlnIGZvbGRlciBjb25maWd1cmVkLiBgT0JTSURJQU5fQ09ORklHX0ZPTERFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCBpbiBzeXN0ZW0gb3IgaW4gYC5lbnZgIGZpbGUuIFRoZSBjb21waWxlZCBwbHVnaW4gd2lsbCBub3QgYmUgY29waWVkIGludG8gT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzaWRpYW5Db25maWdGb2xkZXIgPSB0b1Bvc2l4UGF0aChvYnNpZGlhbkNvbmZpZ0ZvbGRlcik7XG5cbiAgICAgICAgY29uc3QgcGx1Z2luRm9sZGVyID0gam9pbihvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgJ3BsdWdpbnMnLCBwbHVnaW5OYW1lKTtcblxuICAgICAgICBpZiAoIWV4aXN0c1N5bmMocGx1Z2luRm9sZGVyKSkge1xuICAgICAgICAgIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjcChkaXN0Rm9sZGVyLCBwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IGhvdFJlbG9hZEZvbGRlciA9IGpvaW4ob2JzaWRpYW5Db25maWdGb2xkZXIsICdwbHVnaW5zL2hvdC1yZWxvYWQnKTtcbiAgICAgICAgaWYgKCFleGlzdHNTeW5jKGhvdFJlbG9hZEZvbGRlcikpIHtcbiAgICAgICAgICBhd2FpdCBta2Rpcihob3RSZWxvYWRGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnN0IGhvdFJlbG9hZFJlcG9VcmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3BqZWJ5L2hvdC1yZWxvYWQvbWFzdGVyLyc7XG4gICAgICAgICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBbJ21haW4uanMnLCAnbWFuaWZlc3QuanNvbiddKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gaG90UmVsb2FkUmVwb1VybCArIGZpbGVOYW1lO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBXZSBydW4gdGhpcyBvdXRzaWRlIG9mIE9ic2lkaWFuLCBzbyB3ZSBkb24ndCBoYXZlIGByZXF1ZXN0VXJsKClgLlxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmaWxlVXJsKTtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihob3RSZWxvYWRGb2xkZXIsIGZpbGVOYW1lKSwgdGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKG9ic2lkaWFuQ29uZmlnRm9sZGVyLCAnaG90LXJlbG9hZCcpO1xuICAgICAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4ob2JzaWRpYW5Db25maWdGb2xkZXIsIHBsdWdpbk5hbWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBlbmFibGVDb21tdW5pdHlQbHVnaW4ob2JzaWRpYW5Db25maWdGb2xkZXI6IHN0cmluZywgcGx1Z2luSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb21tdW5pdHlQbHVnaW5zUGF0aCA9IGpvaW4ob2JzaWRpYW5Db25maWdGb2xkZXIsICdjb21tdW5pdHktcGx1Z2lucy5qc29uJyk7XG4gIGxldCBwbHVnaW5zOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoZXhpc3RzU3luYyhjb21tdW5pdHlQbHVnaW5zUGF0aCkpIHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoY29tbXVuaXR5UGx1Z2luc1BhdGgsICd1dGYtOCcpO1xuICAgIHBsdWdpbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgaWYgKCFwbHVnaW5zLmluY2x1ZGVzKHBsdWdpbklkKSkge1xuICAgIHBsdWdpbnMucHVzaChwbHVnaW5JZCk7XG4gICAgY29uc3QgSlNPTl9JTkRFTlQgPSAyO1xuICAgIGF3YWl0IHdyaXRlRmlsZShjb21tdW5pdHlQbHVnaW5zUGF0aCwgSlNPTi5zdHJpbmdpZnkocGx1Z2lucywgbnVsbCwgSlNPTl9JTkRFTlQpLCAndXRmLTgnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXZhbEluT2JzaWRpYW4oe1xuICAgICAgYXJnczogeyBwbHVnaW5JZCB9LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvdyAtLSBObyBhY3R1YWwgc2hhZG93aW5nIGFzIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCBleHRlcm5hbGx5LlxuICAgICAgYXN5bmMgZm4oeyBhcHAsIHBsdWdpbklkIH0pIHtcbiAgICAgICAgYXdhaXQgYXBwLnBsdWdpbnMuZW5hYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG4gICAgICB9LFxuICAgICAgdmF1bHRQYXRoOiBkaXJuYW1lKG9ic2lkaWFuQ29uZmlnRm9sZGVyKVxuICAgIH0pO1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuICAgIGNvbnN0IGlzTm90Rm91bmQgPSBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ0VOT0VOVCcpIHx8IGVycm9yTWVzc2FnZS5pbmNsdWRlcygnbm90IGZvdW5kJykgfHwgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdub3QgcmVjb2duaXplZCcpO1xuICAgIGlmIChpc05vdEZvdW5kKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBPYnNpZGlhbiBDTEkgaXMgbm90IGluc3RhbGxlZC4gUGx1Z2luICcke3BsdWdpbklkfScgd2lsbCBiZSBlbmFibGVkIG9uIG5leHQgdmF1bHQgb3Blbi4gU2VlIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9jbGlgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGVuYWJsZSBwbHVnaW4gJyR7cGx1Z2luSWR9JyB2aWEgT2JzaWRpYW4gQ0xJLmAsIGUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxxQkFBMkI7QUFDM0Isc0JBS087QUFDUCwwQ0FBK0I7QUFFL0IsbUJBQStCO0FBQy9CLGtCQUlPO0FBV0EsU0FBUyxrQ0FDZCxtQkFDQSxZQUNBLHNCQUNBLFlBQ1E7QUFDUixTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNLE9BQWE7QUFDakIsWUFBTSxNQUFNLFlBQVk7QUFDdEIsWUFBSSxtQkFBbUI7QUFDckI7QUFBQSxRQUNGO0FBRUEsWUFBSSxDQUFDLHNCQUFzQjtBQUN6QiwyQ0FBZSxtQ0FBbUM7QUFBQSxZQUNoRDtBQUFBLFVBQ0Y7QUFDQTtBQUFBLFFBQ0Y7QUFFQSxtQ0FBdUIseUJBQVksb0JBQW9CO0FBRXZELGNBQU0sbUJBQWUsa0JBQUssc0JBQXNCLFdBQVcsVUFBVTtBQUVyRSxZQUFJLEtBQUMsMkJBQVcsWUFBWSxHQUFHO0FBQzdCLG9CQUFNLHVCQUFNLGNBQWMsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUFBLFFBQy9DO0FBRUEsa0JBQU0sb0JBQUcsWUFBWSxjQUFjLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFFdEQsY0FBTSxzQkFBa0Isa0JBQUssc0JBQXNCLG9CQUFvQjtBQUN2RSxZQUFJLEtBQUMsMkJBQVcsZUFBZSxHQUFHO0FBQ2hDLG9CQUFNLHVCQUFNLGlCQUFpQixFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQ2hELGdCQUFNLG1CQUFtQjtBQUN6QixxQkFBVyxZQUFZLENBQUMsV0FBVyxlQUFlLEdBQUc7QUFDbkQsa0JBQU0sVUFBVSxtQkFBbUI7QUFFbkMsa0JBQU0sV0FBVyxNQUFNLE1BQU0sT0FBTztBQUNwQyxrQkFBTSxPQUFPLE1BQU0sU0FBUyxLQUFLO0FBQ2pDLHNCQUFNLCtCQUFVLGtCQUFLLGlCQUFpQixRQUFRLEdBQUcsSUFBSTtBQUFBLFVBQ3ZEO0FBQUEsUUFDRjtBQUVBLGNBQU0sc0JBQXNCLHNCQUFzQixZQUFZO0FBQzlELGNBQU0sc0JBQXNCLHNCQUFzQixVQUFVO0FBQUEsTUFDOUQsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxlQUFlLHNCQUFzQixzQkFBOEIsVUFBaUM7QUFDbEcsUUFBTSwyQkFBdUIsa0JBQUssc0JBQXNCLHdCQUF3QjtBQUNoRixNQUFJLFVBQW9CLENBQUM7QUFDekIsVUFBSSwyQkFBVyxvQkFBb0IsR0FBRztBQUNwQyxVQUFNLFVBQVUsVUFBTSwwQkFBUyxzQkFBc0IsT0FBTztBQUM1RCxjQUFVLEtBQUssTUFBTSxPQUFPO0FBQUEsRUFDOUI7QUFFQSxNQUFJLENBQUMsUUFBUSxTQUFTLFFBQVEsR0FBRztBQUMvQixZQUFRLEtBQUssUUFBUTtBQUNyQixVQUFNLGNBQWM7QUFDcEIsY0FBTSwyQkFBVSxzQkFBc0IsS0FBSyxVQUFVLFNBQVMsTUFBTSxXQUFXLEdBQUcsT0FBTztBQUFBLEVBQzNGO0FBRUEsTUFBSTtBQUNGLGNBQU0sb0RBQWU7QUFBQSxNQUNuQixNQUFNLEVBQUUsU0FBUztBQUFBO0FBQUEsTUFFakIsTUFBTSxHQUFHLEVBQUUsS0FBSyxVQUFBQSxVQUFTLEdBQUc7QUFDMUIsY0FBTSxJQUFJLFFBQVEsb0JBQW9CQSxTQUFRO0FBQUEsTUFDaEQ7QUFBQSxNQUNBLGVBQVcscUJBQVEsb0JBQW9CO0FBQUEsSUFDekMsQ0FBQztBQUFBLEVBQ0gsU0FBUyxHQUFZO0FBQ25CLFVBQU0sZUFBZSxhQUFhLFFBQVEsRUFBRSxVQUFVLE9BQU8sQ0FBQztBQUM5RCxVQUFNLGFBQWEsYUFBYSxTQUFTLFFBQVEsS0FBSyxhQUFhLFNBQVMsV0FBVyxLQUFLLGFBQWEsU0FBUyxnQkFBZ0I7QUFDbEksUUFBSSxZQUFZO0FBQ2QsY0FBUSxNQUFNLDBDQUEwQyxRQUFRLHdFQUF3RTtBQUFBLElBQzFJLE9BQU87QUFDTCxjQUFRLE1BQU0sNEJBQTRCLFFBQVEsdUJBQXVCLENBQUM7QUFBQSxJQUM1RTtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFsicGx1Z2luSWQiXQp9Cg==
204
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgYXV0b21hdGljYWxseSBjb3BpZXMgdGhlIGJ1aWxkIG91dHB1dFxuICogdG8gdGhlIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyIGR1cmluZyBkZXZlbG9wbWVudC4gVGhpcyBwbHVnaW4gaGVscHMgc3RyZWFtbGluZVxuICogdGhlIGRldmVsb3BtZW50IHdvcmtmbG93IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGxhdGVzdCBidWlsZCBpcyBhbHdheXMgYXZhaWxhYmxlXG4gKiBpbiB0aGUgY29ycmVjdCBPYnNpZGlhbiBmb2xkZXIgZm9yIHRlc3RpbmcgYW5kIHVzZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gdGhhdCBjb3BpZXMgYnVpbGQgb3V0cHV0IHRvIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyOyByZXF1aXJlcyBhIGxpdmUgZXNidWlsZCBjb250ZXh0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgbWtkaXIsXG4gIHJlYWRGaWxlLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnO1xuXG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uLy4uLy4uL2RlYnVnLnRzJztcbmltcG9ydCB7XG4gIGRpcm5hbWUsXG4gIGpvaW4sXG4gIHRvUG9zaXhQYXRoXG59IGZyb20gJy4uLy4uLy4uL3BhdGgudHMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBjb3BpZXMgdGhlIGJ1aWxkIG91dHB1dCB0byB0aGUgT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGlzUHJvZHVjdGlvbkJ1aWxkIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYnVpbGQgaXMgYSBwcm9kdWN0aW9uIGJ1aWxkLlxuICogQHBhcmFtIGRpc3RGb2xkZXIgLSBUaGUgZm9sZGVyIHdoZXJlIHRoZSBidWlsdCBmaWxlcyBhcmUgbG9jYXRlZC5cbiAqIEBwYXJhbSBvYnNpZGlhbkNvbmZpZ0ZvbGRlciAtIFRoZSBmb2xkZXIgb2YgdGhlIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24uIElmIG5vdCBwcm92aWRlZCwgdGhlIHBsdWdpbiB3aWxsIG5vdCBjb3B5IGZpbGVzLlxuICogQHBhcmFtIHBsdWdpbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgT2JzaWRpYW4gcGx1Z2luLlxuICogQHJldHVybnMgQW4gZXNidWlsZCBgUGx1Z2luYCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4oXG4gIGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuLFxuICBkaXN0Rm9sZGVyOiBzdHJpbmcsXG4gIG9ic2lkaWFuQ29uZmlnRm9sZGVyOiBzdHJpbmcsXG4gIHBsdWdpbk5hbWU6IHN0cmluZ1xuKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlcicsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvYnNpZGlhbkNvbmZpZ0ZvbGRlcikge1xuICAgICAgICAgIGdldExpYkRlYnVnZ2VyKCdjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4nKShcbiAgICAgICAgICAgICdObyBPYnNpZGlhbiBjb25maWcgZm9sZGVyIGNvbmZpZ3VyZWQuIGBPQlNJRElBTl9DT05GSUdfRk9MREVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IGluIHN5c3RlbSBvciBpbiBgLmVudmAgZmlsZS4gVGhlIGNvbXBpbGVkIHBsdWdpbiB3aWxsIG5vdCBiZSBjb3BpZWQgaW50byBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlci4nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBvYnNpZGlhbkNvbmZpZ0ZvbGRlciA9IHRvUG9zaXhQYXRoKG9ic2lkaWFuQ29uZmlnRm9sZGVyKTtcblxuICAgICAgICBjb25zdCBwbHVnaW5Gb2xkZXIgPSBqb2luKG9ic2lkaWFuQ29uZmlnRm9sZGVyLCAncGx1Z2lucycsIHBsdWdpbk5hbWUpO1xuXG4gICAgICAgIGlmICghZXhpc3RzU3luYyhwbHVnaW5Gb2xkZXIpKSB7XG4gICAgICAgICAgYXdhaXQgbWtkaXIocGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGNwKGRpc3RGb2xkZXIsIHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgICAgY29uc3QgaG90UmVsb2FkRm9sZGVyID0gam9pbihvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgJ3BsdWdpbnMvaG90LXJlbG9hZCcpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoaG90UmVsb2FkRm9sZGVyKSkge1xuICAgICAgICAgIGF3YWl0IG1rZGlyKGhvdFJlbG9hZEZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgY29uc3QgaG90UmVsb2FkUmVwb1VybCA9ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcGplYnkvaG90LXJlbG9hZC9tYXN0ZXIvJztcbiAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIFsnbWFpbi5qcycsICdtYW5pZmVzdC5qc29uJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVVcmwgPSBob3RSZWxvYWRSZXBvVXJsICsgZmlsZU5hbWU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIFdlIHJ1biB0aGlzIG91dHNpZGUgb2YgT2JzaWRpYW4sIHNvIHdlIGRvbid0IGhhdmUgYHJlcXVlc3RVcmwoKWAuXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZpbGVVcmwpO1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKGhvdFJlbG9hZEZvbGRlciwgZmlsZU5hbWUpLCB0ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4ob2JzaWRpYW5Db25maWdGb2xkZXIsICdob3QtcmVsb2FkJyk7XG4gICAgICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbihvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgcGx1Z2luTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuYWJsZUNvbW11bml0eVBsdWdpbihvYnNpZGlhbkNvbmZpZ0ZvbGRlcjogc3RyaW5nLCBwbHVnaW5JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbW11bml0eVBsdWdpbnNQYXRoID0gam9pbihvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgJ2NvbW11bml0eS1wbHVnaW5zLmpzb24nKTtcbiAgbGV0IHBsdWdpbnM6IHN0cmluZ1tdID0gW107XG4gIGlmIChleGlzdHNTeW5jKGNvbW11bml0eVBsdWdpbnNQYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjb21tdW5pdHlQbHVnaW5zUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcGx1Z2lucyA9IEpTT04ucGFyc2UoY29udGVudCkgYXMgc3RyaW5nW107XG4gIH1cblxuICBpZiAoIXBsdWdpbnMuaW5jbHVkZXMocGx1Z2luSWQpKSB7XG4gICAgcGx1Z2lucy5wdXNoKHBsdWdpbklkKTtcbiAgICBjb25zdCBKU09OX0lOREVOVCA9IDI7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGNvbW11bml0eVBsdWdpbnNQYXRoLCBKU09OLnN0cmluZ2lmeShwbHVnaW5zLCBudWxsLCBKU09OX0lOREVOVCksICd1dGYtOCcpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBldmFsSW5PYnNpZGlhbih7XG4gICAgICBhcmdzOiB7IHBsdWdpbklkIH0sXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIE5vIGFjdHVhbCBzaGFkb3dpbmcgYXMgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV4dGVybmFsbHkuXG4gICAgICBhc3luYyBmbih7IGFwcCwgcGx1Z2luSWQgfSkge1xuICAgICAgICBhd2FpdCBhcHAucGx1Z2lucy5lbmFibGVQbHVnaW5BbmRTYXZlKHBsdWdpbklkKTtcbiAgICAgIH0sXG4gICAgICB2YXVsdFBhdGg6IGRpcm5hbWUob2JzaWRpYW5Db25maWdGb2xkZXIpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSk7XG4gICAgY29uc3QgaXNOb3RGb3VuZCA9IGVycm9yTWVzc2FnZS5pbmNsdWRlcygnRU5PRU5UJykgfHwgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdub3QgZm91bmQnKSB8fCBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ25vdCByZWNvZ25pemVkJyk7XG4gICAgaWYgKGlzTm90Rm91bmQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE9ic2lkaWFuIENMSSBpcyBub3QgaW5zdGFsbGVkLiBQbHVnaW4gJyR7cGx1Z2luSWR9JyB3aWxsIGJlIGVuYWJsZWQgb24gbmV4dCB2YXVsdCBvcGVuLiBTZWUgaHR0cHM6Ly9oZWxwLm9ic2lkaWFuLm1kL2NsaWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZW5hYmxlIHBsdWdpbiAnJHtwbHVnaW5JZH0nIHZpYSBPYnNpZGlhbiBDTEkuYCwgZSk7XG4gICAgfVxuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLHFCQUEyQjtBQUMzQixzQkFLTztBQUNQLDBDQUErQjtBQUUvQixtQkFBK0I7QUFDL0Isa0JBSU87QUFXQSxTQUFTLGtDQUNkLG1CQUNBLFlBQ0Esc0JBQ0EsWUFDUTtBQUNSLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sT0FBYTtBQUNqQixZQUFNLE1BQU0sWUFBWTtBQUN0QixZQUFJLG1CQUFtQjtBQUNyQjtBQUFBLFFBQ0Y7QUFFQSxZQUFJLENBQUMsc0JBQXNCO0FBQ3pCLDJDQUFlLG1DQUFtQztBQUFBLFlBQ2hEO0FBQUEsVUFDRjtBQUNBO0FBQUEsUUFDRjtBQUVBLG1DQUF1Qix5QkFBWSxvQkFBb0I7QUFFdkQsY0FBTSxtQkFBZSxrQkFBSyxzQkFBc0IsV0FBVyxVQUFVO0FBRXJFLFlBQUksS0FBQywyQkFBVyxZQUFZLEdBQUc7QUFDN0Isb0JBQU0sdUJBQU0sY0FBYyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQUEsUUFDL0M7QUFFQSxrQkFBTSxvQkFBRyxZQUFZLGNBQWMsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUV0RCxjQUFNLHNCQUFrQixrQkFBSyxzQkFBc0Isb0JBQW9CO0FBQ3ZFLFlBQUksS0FBQywyQkFBVyxlQUFlLEdBQUc7QUFDaEMsb0JBQU0sdUJBQU0saUJBQWlCLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDaEQsZ0JBQU0sbUJBQW1CO0FBQ3pCLHFCQUFXLFlBQVksQ0FBQyxXQUFXLGVBQWUsR0FBRztBQUNuRCxrQkFBTSxVQUFVLG1CQUFtQjtBQUVuQyxrQkFBTSxXQUFXLE1BQU0sTUFBTSxPQUFPO0FBQ3BDLGtCQUFNLE9BQU8sTUFBTSxTQUFTLEtBQUs7QUFDakMsc0JBQU0sK0JBQVUsa0JBQUssaUJBQWlCLFFBQVEsR0FBRyxJQUFJO0FBQUEsVUFDdkQ7QUFBQSxRQUNGO0FBRUEsY0FBTSxzQkFBc0Isc0JBQXNCLFlBQVk7QUFDOUQsY0FBTSxzQkFBc0Isc0JBQXNCLFVBQVU7QUFBQSxNQUM5RCxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGVBQWUsc0JBQXNCLHNCQUE4QixVQUFpQztBQUNsRyxRQUFNLDJCQUF1QixrQkFBSyxzQkFBc0Isd0JBQXdCO0FBQ2hGLE1BQUksVUFBb0IsQ0FBQztBQUN6QixVQUFJLDJCQUFXLG9CQUFvQixHQUFHO0FBQ3BDLFVBQU0sVUFBVSxVQUFNLDBCQUFTLHNCQUFzQixPQUFPO0FBQzVELGNBQVUsS0FBSyxNQUFNLE9BQU87QUFBQSxFQUM5QjtBQUVBLE1BQUksQ0FBQyxRQUFRLFNBQVMsUUFBUSxHQUFHO0FBQy9CLFlBQVEsS0FBSyxRQUFRO0FBQ3JCLFVBQU0sY0FBYztBQUNwQixjQUFNLDJCQUFVLHNCQUFzQixLQUFLLFVBQVUsU0FBUyxNQUFNLFdBQVcsR0FBRyxPQUFPO0FBQUEsRUFDM0Y7QUFFQSxNQUFJO0FBQ0YsY0FBTSxvREFBZTtBQUFBLE1BQ25CLE1BQU0sRUFBRSxTQUFTO0FBQUE7QUFBQSxNQUVqQixNQUFNLEdBQUcsRUFBRSxLQUFLLFVBQUFBLFVBQVMsR0FBRztBQUMxQixjQUFNLElBQUksUUFBUSxvQkFBb0JBLFNBQVE7QUFBQSxNQUNoRDtBQUFBLE1BQ0EsZUFBVyxxQkFBUSxvQkFBb0I7QUFBQSxJQUN6QyxDQUFDO0FBQUEsRUFDSCxTQUFTLEdBQVk7QUFDbkIsVUFBTSxlQUFlLGFBQWEsUUFBUSxFQUFFLFVBQVUsT0FBTyxDQUFDO0FBQzlELFVBQU0sYUFBYSxhQUFhLFNBQVMsUUFBUSxLQUFLLGFBQWEsU0FBUyxXQUFXLEtBQUssYUFBYSxTQUFTLGdCQUFnQjtBQUNsSSxRQUFJLFlBQVk7QUFDZCxjQUFRLE1BQU0sMENBQTBDLFFBQVEsd0VBQXdFO0FBQUEsSUFDMUksT0FBTztBQUNMLGNBQVEsTUFBTSw0QkFBNEIsUUFBUSx1QkFBdUIsQ0FBQztBQUFBLElBQzVFO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogWyJwbHVnaW5JZCJdCn0K
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * This module defines an esbuild plugin that automatically copies the build output
5
5
  * to the Obsidian plugins folder during development. This plugin helps streamline
@@ -136,4 +136,4 @@ function customEsbuildOptionsPlugin(customizeEsbuildOptions) {
136
136
  0 && (module.exports = {
137
137
  customEsbuildOptionsPlugin
138
138
  });
139
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIGVzYnVpbGQgb3B0aW9ucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gdGhhdCBhcHBsaWVzIGN1c3RvbSBidWlsZCBvcHRpb25zOyByZXF1aXJlcyBhIGxpdmUgZXNidWlsZCBjb250ZXh0LiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEJ1aWxkT3B0aW9ucyxcbiAgUGx1Z2luXG59IGZyb20gJ2VzYnVpbGQnO1xuXG4vKipcbiAqIEEgcGx1Z2luIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gZXNidWlsZCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICpcbiAqIEBwYXJhbSBjdXN0b21pemVFc2J1aWxkT3B0aW9ucyAtIEEgZnVuY3Rpb24gdGhhdCBjdXN0b21pemVzIHRoZSBlc2J1aWxkIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHBsdWdpbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIGVzYnVpbGQgb3B0aW9ucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbUVzYnVpbGRPcHRpb25zUGx1Z2luKGN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zPzogKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucykgPT4gdm9pZCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2N1c3RvbS1lc2J1aWxkLW9wdGlvbnMnLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBjdXN0b21pemVFc2J1aWxkT3B0aW9ucz8uKGJ1aWxkLmluaXRpYWxPcHRpb25zKTtcbiAgICB9XG4gIH07XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CTyxTQUFTLDJCQUEyQix5QkFBbUU7QUFDNUcsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTSxPQUFhO0FBQ2pCLGdDQUEwQixNQUFNLGNBQWM7QUFBQSxJQUNoRDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
139
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY3VzdG9tLWVzYnVpbGQtb3B0aW9ucy1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gZXNidWlsZCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBlc2J1aWxkIHBsdWdpbiB0aGF0IGFwcGxpZXMgY3VzdG9tIGJ1aWxkIG9wdGlvbnM7IHJlcXVpcmVzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQnVpbGRPcHRpb25zLFxuICBQbHVnaW5cbn0gZnJvbSAnZXNidWlsZCc7XG5cbi8qKlxuICogQSBwbHVnaW4gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBlc2J1aWxkIG9wdGlvbnMgdG8gYmUgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuXG4gKlxuICogQHBhcmFtIGN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zIC0gQSBmdW5jdGlvbiB0aGF0IGN1c3RvbWl6ZXMgdGhlIGVzYnVpbGQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcGx1Z2luIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gZXNidWlsZCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tRXNidWlsZE9wdGlvbnNQbHVnaW4oY3VzdG9taXplRXNidWlsZE9wdGlvbnM/OiAob3B0aW9uczogQnVpbGRPcHRpb25zKSA9PiB2b2lkKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnY3VzdG9tLWVzYnVpbGQtb3B0aW9ucycsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zPy4oYnVpbGQuaW5pdGlhbE9wdGlvbnMpO1xuICAgIH1cbiAgfTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJPLFNBQVMsMkJBQTJCLHlCQUFtRTtBQUM1RyxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNLE9BQWE7QUFDakIsZ0NBQTBCLE1BQU0sY0FBYztBQUFBLElBQ2hEO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @packageDocumentation
2
+ * @file
3
3
  *
4
4
  * This module defines an esbuild plugin that allows for custom esbuild options to be used during the build process.
5
5
  */