@mnaoumov/obsidian-lib 3.3.0 → 3.3.1

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 (775) hide show
  1. package/dist/lib/cjs/@types/i18next.d.cts +1 -1
  2. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +3 -3
  3. package/dist/lib/cjs/@types/original-fs.d.cts +2 -1
  4. package/dist/lib/cjs/__merged.cjs +2 -21
  5. package/dist/lib/cjs/__merged.d.cts +1 -1
  6. package/dist/lib/cjs/active-file-provider.cjs +1 -47
  7. package/dist/lib/cjs/active-file-provider.d.cts +1 -1
  8. package/dist/lib/cjs/app.cjs +1 -47
  9. package/dist/lib/cjs/app.d.cts +1 -1
  10. package/dist/lib/cjs/async-with-notice.cjs +2 -21
  11. package/dist/lib/cjs/async-with-notice.d.cts +2 -1
  12. package/dist/lib/cjs/attachment-path.cjs +2 -21
  13. package/dist/lib/cjs/attachment-path.d.cts +1 -1
  14. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -21
  15. package/dist/lib/cjs/attachment-unit-folder.d.cts +1 -1
  16. package/dist/lib/cjs/backlink-index.cjs +2 -21
  17. package/dist/lib/cjs/backlink-index.d.cts +1 -1
  18. package/dist/lib/cjs/backlink.cjs +2 -21
  19. package/dist/lib/cjs/backlink.d.cts +1 -1
  20. package/dist/lib/cjs/bases-view-registrar.cjs +2 -21
  21. package/dist/lib/cjs/bases-view-registrar.d.cts +1 -1
  22. package/dist/lib/cjs/callout.cjs +2 -21
  23. package/dist/lib/cjs/callout.d.cts +2 -1
  24. package/dist/lib/cjs/canvas.cjs +2 -21
  25. package/dist/lib/cjs/canvas.d.cts +1 -1
  26. package/dist/lib/cjs/case-insensitive-file-index.cjs +2 -21
  27. package/dist/lib/cjs/case-insensitive-file-index.d.cts +1 -1
  28. package/dist/lib/cjs/code-block-markdown-information.cjs +1 -47
  29. package/dist/lib/cjs/code-block-markdown-information.d.cts +1 -1
  30. package/dist/lib/cjs/code-block-reg-exp.cjs +1 -47
  31. package/dist/lib/cjs/code-block-reg-exp.d.cts +1 -1
  32. package/dist/lib/cjs/codemirror/index.cjs +2 -48
  33. package/dist/lib/cjs/codemirror/index.d.cts +1 -1
  34. package/dist/lib/cjs/codemirror/state-field-spec.cjs +1 -47
  35. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
  36. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +2 -21
  37. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +1 -1
  38. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -21
  39. package/dist/lib/cjs/command-handlers/command-handler-component.d.cts +1 -1
  40. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -21
  41. package/dist/lib/cjs/command-handlers/command-handler.d.cts +1 -1
  42. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +2 -21
  43. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +1 -1
  44. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +5 -24
  45. package/dist/lib/cjs/command-handlers/file-command-handler.d.cts +1 -1
  46. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +5 -24
  47. package/dist/lib/cjs/command-handlers/folder-command-handler.d.cts +1 -1
  48. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +3 -22
  49. package/dist/lib/cjs/command-handlers/global-command-handler.d.cts +1 -1
  50. package/dist/lib/cjs/command-handlers/index.cjs +11 -57
  51. package/dist/lib/cjs/command-handlers/index.d.cts +1 -1
  52. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -21
  53. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.d.cts +1 -1
  54. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +1 -47
  55. package/dist/lib/cjs/command-handlers/open-settings-command-handler.d.cts +1 -1
  56. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -47
  57. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.d.cts +1 -1
  58. package/dist/lib/cjs/command-registrar.cjs +1 -47
  59. package/dist/lib/cjs/command-registrar.d.cts +1 -1
  60. package/dist/lib/cjs/community-plugins.cjs +2 -21
  61. package/dist/lib/cjs/community-plugins.d.cts +1 -1
  62. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -21
  63. package/dist/lib/cjs/components/abort-signal-component.d.cts +2 -1
  64. package/dist/lib/cjs/components/all-windows-event-component.cjs +1 -47
  65. package/dist/lib/cjs/components/all-windows-event-component.d.cts +2 -1
  66. package/dist/lib/cjs/components/async-error-handler-component.cjs +2 -21
  67. package/dist/lib/cjs/components/async-error-handler-component.d.cts +1 -1
  68. package/dist/lib/cjs/components/async-events-component.cjs +2 -21
  69. package/dist/lib/cjs/components/async-events-component.d.cts +1 -1
  70. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +1 -47
  71. package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +1 -1
  72. package/dist/lib/cjs/components/component-ex.cjs +3 -16
  73. package/dist/lib/cjs/components/component-ex.d.cts +1 -1
  74. package/dist/lib/cjs/components/console-debug-component.cjs +2 -21
  75. package/dist/lib/cjs/components/console-debug-component.d.cts +1 -1
  76. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -21
  77. package/dist/lib/cjs/components/core-plugin-toggle-component.d.cts +1 -1
  78. package/dist/lib/cjs/components/disposable-component.cjs +3 -16
  79. package/dist/lib/cjs/components/disposable-component.d.cts +1 -1
  80. package/dist/lib/cjs/components/embed-extensions-component.cjs +1 -47
  81. package/dist/lib/cjs/components/embed-extensions-component.d.cts +1 -1
  82. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +1 -47
  83. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.d.cts +1 -1
  84. package/dist/lib/cjs/components/index.cjs +30 -76
  85. package/dist/lib/cjs/components/index.d.cts +1 -1
  86. package/dist/lib/cjs/components/layout-ready-component.cjs +2 -21
  87. package/dist/lib/cjs/components/layout-ready-component.d.cts +1 -1
  88. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +1 -47
  89. package/dist/lib/cjs/components/menu-event-registrar-component.d.cts +1 -1
  90. package/dist/lib/cjs/components/monkey-around-component.cjs +2 -21
  91. package/dist/lib/cjs/components/monkey-around-component.d.cts +1 -1
  92. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +2 -21
  93. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +1 -1
  94. package/dist/lib/cjs/components/plugin-context-component.cjs +2 -21
  95. package/dist/lib/cjs/components/plugin-context-component.d.cts +1 -1
  96. package/dist/lib/cjs/components/plugin-gate-component.cjs +2 -21
  97. package/dist/lib/cjs/components/plugin-gate-component.d.cts +2 -1
  98. package/dist/lib/cjs/components/plugin-notice-component.cjs +3 -16
  99. package/dist/lib/cjs/components/plugin-notice-component.d.cts +2 -1
  100. package/dist/lib/cjs/components/plugin-settings-component.cjs +2 -21
  101. package/dist/lib/cjs/components/plugin-settings-component.d.cts +1 -1
  102. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -21
  103. package/dist/lib/cjs/components/plugin-settings-tab-component.d.cts +1 -1
  104. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +2 -21
  105. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +2 -1
  106. package/dist/lib/cjs/components/pointer-position-component.cjs +1 -47
  107. package/dist/lib/cjs/components/pointer-position-component.d.cts +1 -1
  108. package/dist/lib/cjs/components/registry-component.cjs +2 -21
  109. package/dist/lib/cjs/components/registry-component.d.cts +1 -1
  110. package/dist/lib/cjs/components/release-notes-component.cjs +2 -21
  111. package/dist/lib/cjs/components/release-notes-component.d.cts +2 -1
  112. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +3 -16
  113. package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +1 -1
  114. package/dist/lib/cjs/components/rmdir-guard-component.cjs +1 -47
  115. package/dist/lib/cjs/components/rmdir-guard-component.d.cts +1 -1
  116. package/dist/lib/cjs/components/settings-migration-component.cjs +2 -21
  117. package/dist/lib/cjs/components/settings-migration-component.d.cts +1 -1
  118. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +2 -21
  119. package/dist/lib/cjs/components/syntax-highlighting-component.d.cts +1 -1
  120. package/dist/lib/cjs/components/templates-language-component.cjs +3 -49
  121. package/dist/lib/cjs/components/templates-language-component.d.cts +1 -1
  122. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +3 -16
  123. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.d.cts +1 -1
  124. package/dist/lib/cjs/constructors/index.cjs +2 -48
  125. package/dist/lib/cjs/constructors/index.d.cts +1 -1
  126. package/dist/lib/cjs/css-class.cjs +1 -47
  127. package/dist/lib/cjs/css-class.d.cts +1 -1
  128. package/dist/lib/cjs/data-handler.cjs +1 -47
  129. package/dist/lib/cjs/data-handler.d.cts +1 -1
  130. package/dist/lib/cjs/dataview-link.cjs +2 -21
  131. package/dist/lib/cjs/dataview-link.d.cts +1 -1
  132. package/dist/lib/cjs/dataview.cjs +2 -21
  133. package/dist/lib/cjs/dataview.d.cts +2 -1
  134. package/dist/lib/cjs/debug.cjs +2 -21
  135. package/dist/lib/cjs/debug.d.cts +1 -1
  136. package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -47
  137. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
  138. package/dist/lib/cjs/demo-vault-helper.cjs +2 -21
  139. package/dist/lib/cjs/demo-vault-helper.d.cts +1 -1
  140. package/dist/lib/cjs/demo-vault-naming.cjs +1 -47
  141. package/dist/lib/cjs/demo-vault-naming.d.cts +1 -1
  142. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +3 -16
  143. package/dist/lib/cjs/desktop-demo-vault-opener.d.cts +1 -1
  144. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -21
  145. package/dist/lib/cjs/desktop-trusted-input.d.cts +2 -1
  146. package/dist/lib/cjs/editor-extension-registrar.cjs +2 -21
  147. package/dist/lib/cjs/editor-extension-registrar.d.cts +1 -1
  148. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -21
  149. package/dist/lib/cjs/editor-suggest-registrar.d.cts +1 -1
  150. package/dist/lib/cjs/editor.cjs +2 -21
  151. package/dist/lib/cjs/editor.d.cts +1 -1
  152. package/dist/lib/cjs/events.cjs +2 -21
  153. package/dist/lib/cjs/events.d.cts +1 -1
  154. package/dist/lib/cjs/extensions-registrar.cjs +2 -21
  155. package/dist/lib/cjs/extensions-registrar.d.cts +1 -1
  156. package/dist/lib/cjs/file-change.cjs +2 -21
  157. package/dist/lib/cjs/file-change.d.cts +2 -1
  158. package/dist/lib/cjs/file-explorer.cjs +2 -21
  159. package/dist/lib/cjs/file-explorer.d.cts +1 -1
  160. package/dist/lib/cjs/file-manager.cjs +2 -21
  161. package/dist/lib/cjs/file-manager.d.cts +2 -1
  162. package/dist/lib/cjs/file-system.cjs +2 -21
  163. package/dist/lib/cjs/file-system.d.cts +1 -1
  164. package/dist/lib/cjs/folder-note.cjs +2 -21
  165. package/dist/lib/cjs/folder-note.d.cts +1 -1
  166. package/dist/lib/cjs/frontmatter-formatting.cjs +2 -21
  167. package/dist/lib/cjs/frontmatter-formatting.d.cts +1 -1
  168. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +2 -21
  169. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +1 -1
  170. package/dist/lib/cjs/frontmatter.cjs +2 -21
  171. package/dist/lib/cjs/frontmatter.d.cts +1 -1
  172. package/dist/lib/cjs/generated-during-build.cjs +2 -48
  173. package/dist/lib/cjs/generated-during-build.d.cts +1 -1
  174. package/dist/lib/cjs/hover-link-source-registrar.cjs +2 -21
  175. package/dist/lib/cjs/hover-link-source-registrar.d.cts +1 -1
  176. package/dist/lib/cjs/html-element.cjs +1 -47
  177. package/dist/lib/cjs/html-element.d.cts +2 -1
  178. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -47
  179. package/dist/lib/cjs/i18n/custom-type-options.d.cts +1 -1
  180. package/dist/lib/cjs/i18n/default-translations.cjs +1 -47
  181. package/dist/lib/cjs/i18n/default-translations.d.cts +1 -1
  182. package/dist/lib/cjs/i18n/i18n.cjs +3 -22
  183. package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
  184. package/dist/lib/cjs/i18n/index.cjs +5 -51
  185. package/dist/lib/cjs/i18n/index.d.cts +1 -1
  186. package/dist/lib/cjs/i18n/locales/en.cjs +1 -47
  187. package/dist/lib/cjs/i18n/locales/en.d.cts +1 -1
  188. package/dist/lib/cjs/i18n/locales/index.cjs +3 -49
  189. package/dist/lib/cjs/i18n/locales/index.d.cts +1 -1
  190. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -47
  191. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -1
  192. package/dist/lib/cjs/index.cjs +96 -142
  193. package/dist/lib/cjs/index.d.cts +1 -1
  194. package/dist/lib/cjs/is-in-obsidian.cjs +1 -47
  195. package/dist/lib/cjs/is-in-obsidian.d.cts +1 -1
  196. package/dist/lib/cjs/library-references.d.cts +2 -0
  197. package/dist/lib/cjs/library-styles.cjs +2 -21
  198. package/dist/lib/cjs/library-styles.d.cts +2 -1
  199. package/dist/lib/cjs/library.cjs +1 -47
  200. package/dist/lib/cjs/link-name.cjs +1 -47
  201. package/dist/lib/cjs/link-name.d.cts +1 -1
  202. package/dist/lib/cjs/link-update-progress.cjs +1 -47
  203. package/dist/lib/cjs/link-update-progress.d.cts +1 -1
  204. package/dist/lib/cjs/link.cjs +3 -16
  205. package/dist/lib/cjs/link.d.cts +2 -1
  206. package/dist/lib/cjs/logger.cjs +2 -21
  207. package/dist/lib/cjs/logger.d.cts +2 -1
  208. package/dist/lib/cjs/loop.cjs +3 -16
  209. package/dist/lib/cjs/loop.d.cts +2 -1
  210. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +2 -21
  211. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +2 -1
  212. package/dist/lib/cjs/markdown-code-block-processor.cjs +2 -21
  213. package/dist/lib/cjs/markdown-code-block-processor.d.cts +2 -1
  214. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -21
  215. package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +2 -1
  216. package/dist/lib/cjs/markdown-view.cjs +1 -47
  217. package/dist/lib/cjs/markdown-view.d.cts +1 -1
  218. package/dist/lib/cjs/markdown.cjs +3 -16
  219. package/dist/lib/cjs/markdown.d.cts +2 -1
  220. package/dist/lib/cjs/menu-event-registrar.cjs +1 -47
  221. package/dist/lib/cjs/menu-event-registrar.d.cts +1 -1
  222. package/dist/lib/cjs/metadata-cache.cjs +3 -16
  223. package/dist/lib/cjs/metadata-cache.d.cts +1 -1
  224. package/dist/lib/cjs/mobile-trusted-input.cjs +1 -47
  225. package/dist/lib/cjs/mobile-trusted-input.d.cts +1 -1
  226. package/dist/lib/cjs/modals/alert.cjs +2 -21
  227. package/dist/lib/cjs/modals/alert.d.cts +2 -1
  228. package/dist/lib/cjs/modals/confirm.cjs +2 -21
  229. package/dist/lib/cjs/modals/confirm.d.cts +2 -1
  230. package/dist/lib/cjs/modals/index.cjs +10 -56
  231. package/dist/lib/cjs/modals/index.d.cts +1 -1
  232. package/dist/lib/cjs/modals/minimizable-modal.cjs +2 -21
  233. package/dist/lib/cjs/modals/minimizable-modal.d.cts +1 -1
  234. package/dist/lib/cjs/modals/modal-command-builder.cjs +2 -21
  235. package/dist/lib/cjs/modals/modal-command-builder.d.cts +2 -1
  236. package/dist/lib/cjs/modals/modal.cjs +2 -21
  237. package/dist/lib/cjs/modals/modal.d.cts +1 -1
  238. package/dist/lib/cjs/modals/prompt.cjs +2 -21
  239. package/dist/lib/cjs/modals/prompt.d.cts +2 -1
  240. package/dist/lib/cjs/modals/select-item.cjs +2 -21
  241. package/dist/lib/cjs/modals/select-item.d.cts +1 -1
  242. package/dist/lib/cjs/modals/select-option.cjs +2 -21
  243. package/dist/lib/cjs/modals/select-option.d.cts +2 -1
  244. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -47
  245. package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +1 -1
  246. package/dist/lib/cjs/note-priority.cjs +2 -21
  247. package/dist/lib/cjs/note-priority.d.cts +1 -1
  248. package/dist/lib/cjs/notebook-navigator.cjs +1 -47
  249. package/dist/lib/cjs/notebook-navigator.d.cts +1 -1
  250. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +2 -21
  251. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +1 -1
  252. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +2 -21
  253. package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +1 -1
  254. package/dist/lib/cjs/obsidian-settings.cjs +2 -21
  255. package/dist/lib/cjs/obsidian-settings.d.cts +1 -1
  256. package/dist/lib/cjs/parse-link.cjs +3 -22
  257. package/dist/lib/cjs/parse-link.d.cts +1 -1
  258. package/dist/lib/cjs/path-settings.cjs +2 -21
  259. package/dist/lib/cjs/path-settings.d.cts +1 -1
  260. package/dist/lib/cjs/pdf.cjs +2 -21
  261. package/dist/lib/cjs/pdf.d.cts +2 -1
  262. package/dist/lib/cjs/plugin/index.cjs +10 -56
  263. package/dist/lib/cjs/plugin/index.d.cts +1 -1
  264. package/dist/lib/cjs/plugin/plugin-api-schema.cjs +2 -21
  265. package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +1 -1
  266. package/dist/lib/cjs/plugin/plugin-api.cjs +2 -21
  267. package/dist/lib/cjs/plugin/plugin-api.d.cts +1 -1
  268. package/dist/lib/cjs/plugin/plugin-context.cjs +2 -21
  269. package/dist/lib/cjs/plugin/plugin-context.d.cts +2 -1
  270. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -47
  271. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +1 -1
  272. package/dist/lib/cjs/plugin/plugin-install-state.cjs +1 -47
  273. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +1 -1
  274. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -47
  275. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +1 -1
  276. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +2 -21
  277. package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +2 -1
  278. package/dist/lib/cjs/plugin/plugin.cjs +2 -21
  279. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  280. package/dist/lib/cjs/plugin/settings-migration-api.cjs +2 -21
  281. package/dist/lib/cjs/plugin/settings-migration-api.d.cts +1 -1
  282. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -21
  283. package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +1 -1
  284. package/dist/lib/cjs/popovers/field-popover.cjs +2 -21
  285. package/dist/lib/cjs/popovers/field-popover.d.cts +1 -1
  286. package/dist/lib/cjs/popovers/index.cjs +4 -50
  287. package/dist/lib/cjs/popovers/index.d.cts +1 -1
  288. package/dist/lib/cjs/popovers/popover-anchor.cjs +2 -21
  289. package/dist/lib/cjs/popovers/popover-anchor.d.cts +2 -1
  290. package/dist/lib/cjs/popovers/popover.cjs +2 -21
  291. package/dist/lib/cjs/popovers/popover.d.cts +2 -1
  292. package/dist/lib/cjs/property-entry.cjs +1 -47
  293. package/dist/lib/cjs/property-entry.d.cts +1 -1
  294. package/dist/lib/cjs/queue.cjs +2 -21
  295. package/dist/lib/cjs/queue.d.cts +2 -1
  296. package/dist/lib/cjs/react/app-context.cjs +2 -21
  297. package/dist/lib/cjs/react/app-context.d.cts +1 -1
  298. package/dist/lib/cjs/react/index.cjs +2 -48
  299. package/dist/lib/cjs/react/index.d.cts +1 -1
  300. package/dist/lib/cjs/reference.cjs +2 -21
  301. package/dist/lib/cjs/reference.d.cts +1 -1
  302. package/dist/lib/cjs/resource-lock.cjs +2 -21
  303. package/dist/lib/cjs/resource-lock.d.cts +2 -1
  304. package/dist/lib/cjs/resource-url.cjs +2 -21
  305. package/dist/lib/cjs/resource-url.d.cts +1 -1
  306. package/dist/lib/cjs/ribbon-icon-registrar.cjs +2 -21
  307. package/dist/lib/cjs/ribbon-icon-registrar.d.cts +2 -1
  308. package/dist/lib/cjs/setting-components/checkbox-component.cjs +2 -21
  309. package/dist/lib/cjs/setting-components/checkbox-component.d.cts +2 -1
  310. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +2 -21
  311. package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +2 -1
  312. package/dist/lib/cjs/setting-components/date-component.cjs +2 -21
  313. package/dist/lib/cjs/setting-components/date-component.d.cts +2 -1
  314. package/dist/lib/cjs/setting-components/date-time-component.cjs +2 -21
  315. package/dist/lib/cjs/setting-components/date-time-component.d.cts +2 -1
  316. package/dist/lib/cjs/setting-components/email-component.cjs +1 -47
  317. package/dist/lib/cjs/setting-components/email-component.d.cts +2 -1
  318. package/dist/lib/cjs/setting-components/file-component.cjs +1 -47
  319. package/dist/lib/cjs/setting-components/file-component.d.cts +2 -1
  320. package/dist/lib/cjs/setting-components/index.cjs +27 -73
  321. package/dist/lib/cjs/setting-components/index.d.cts +1 -1
  322. package/dist/lib/cjs/setting-components/month-component.cjs +2 -21
  323. package/dist/lib/cjs/setting-components/month-component.d.cts +2 -1
  324. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +2 -21
  325. package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +3 -1
  326. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +1 -47
  327. package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +2 -1
  328. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +2 -21
  329. package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +2 -1
  330. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +2 -21
  331. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +2 -1
  332. package/dist/lib/cjs/setting-components/number-component.cjs +1 -47
  333. package/dist/lib/cjs/setting-components/number-component.d.cts +2 -1
  334. package/dist/lib/cjs/setting-components/password-component.cjs +1 -47
  335. package/dist/lib/cjs/setting-components/password-component.d.cts +2 -1
  336. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +2 -21
  337. package/dist/lib/cjs/setting-components/setting-component-wrapper.d.cts +2 -1
  338. package/dist/lib/cjs/setting-components/telephone-component.cjs +1 -47
  339. package/dist/lib/cjs/setting-components/telephone-component.d.cts +2 -1
  340. package/dist/lib/cjs/setting-components/text-based-component.cjs +2 -21
  341. package/dist/lib/cjs/setting-components/text-based-component.d.cts +1 -1
  342. package/dist/lib/cjs/setting-components/time-component.cjs +2 -21
  343. package/dist/lib/cjs/setting-components/time-component.d.cts +2 -1
  344. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +2 -21
  345. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +2 -1
  346. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +2 -21
  347. package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +3 -1
  348. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +2 -21
  349. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +3 -1
  350. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -47
  351. package/dist/lib/cjs/setting-components/typed-range-text-component.d.cts +1 -1
  352. package/dist/lib/cjs/setting-components/typed-text-component.cjs +2 -21
  353. package/dist/lib/cjs/setting-components/typed-text-component.d.cts +2 -1
  354. package/dist/lib/cjs/setting-components/url-component.cjs +1 -47
  355. package/dist/lib/cjs/setting-components/url-component.d.cts +2 -1
  356. package/dist/lib/cjs/setting-components/validator-component.cjs +2 -21
  357. package/dist/lib/cjs/setting-components/validator-component.d.cts +1 -1
  358. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +1 -47
  359. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.d.cts +1 -1
  360. package/dist/lib/cjs/setting-components/week-component.cjs +2 -21
  361. package/dist/lib/cjs/setting-components/week-component.d.cts +2 -1
  362. package/dist/lib/cjs/setting-ex.cjs +2 -21
  363. package/dist/lib/cjs/setting-ex.d.cts +2 -1
  364. package/dist/lib/cjs/setting-group-ex.cjs +2 -21
  365. package/dist/lib/cjs/setting-group-ex.d.cts +2 -1
  366. package/dist/lib/cjs/status-bar-item-registrar.cjs +2 -21
  367. package/dist/lib/cjs/status-bar-item-registrar.d.cts +2 -1
  368. package/dist/lib/cjs/templater.cjs +1 -47
  369. package/dist/lib/cjs/templater.d.cts +1 -1
  370. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -21
  371. package/dist/lib/cjs/transformers/duration-transformer.d.cts +1 -1
  372. package/dist/lib/cjs/transformers/index.cjs +2 -48
  373. package/dist/lib/cjs/transformers/index.d.cts +1 -1
  374. package/dist/lib/cjs/trusted-input.cjs +2 -21
  375. package/dist/lib/cjs/trusted-input.d.cts +1 -1
  376. package/dist/lib/cjs/validation.cjs +2 -21
  377. package/dist/lib/cjs/validation.d.cts +1 -1
  378. package/dist/lib/cjs/vault-delete.cjs +2 -21
  379. package/dist/lib/cjs/vault-delete.d.cts +1 -1
  380. package/dist/lib/cjs/vault-transaction.cjs +3 -16
  381. package/dist/lib/cjs/vault-transaction.d.cts +1 -1
  382. package/dist/lib/cjs/vault.cjs +3 -16
  383. package/dist/lib/cjs/vault.d.cts +1 -1
  384. package/dist/lib/cjs/view-registrar.cjs +2 -21
  385. package/dist/lib/cjs/view-registrar.d.cts +1 -1
  386. package/dist/lib/cjs/workspace.cjs +2 -21
  387. package/dist/lib/cjs/workspace.d.cts +2 -1
  388. package/dist/lib/esm/@types/i18next.d.mts +1 -1
  389. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +3 -3
  390. package/dist/lib/esm/@types/original-fs.d.mts +2 -1
  391. package/dist/lib/esm/__merged.d.mts +1 -1
  392. package/dist/lib/esm/__merged.mjs +2 -11
  393. package/dist/lib/esm/active-file-provider.d.mts +1 -1
  394. package/dist/lib/esm/active-file-provider.mjs +1 -37
  395. package/dist/lib/esm/app.d.mts +1 -1
  396. package/dist/lib/esm/app.mjs +1 -37
  397. package/dist/lib/esm/async-with-notice.d.mts +2 -1
  398. package/dist/lib/esm/async-with-notice.mjs +2 -11
  399. package/dist/lib/esm/attachment-path.d.mts +1 -1
  400. package/dist/lib/esm/attachment-path.mjs +2 -11
  401. package/dist/lib/esm/attachment-unit-folder.d.mts +1 -1
  402. package/dist/lib/esm/attachment-unit-folder.mjs +2 -11
  403. package/dist/lib/esm/backlink-index.d.mts +1 -1
  404. package/dist/lib/esm/backlink-index.mjs +2 -11
  405. package/dist/lib/esm/backlink.d.mts +1 -1
  406. package/dist/lib/esm/backlink.mjs +2 -11
  407. package/dist/lib/esm/bases-view-registrar.d.mts +1 -1
  408. package/dist/lib/esm/bases-view-registrar.mjs +2 -11
  409. package/dist/lib/esm/callout.d.mts +2 -1
  410. package/dist/lib/esm/callout.mjs +2 -11
  411. package/dist/lib/esm/canvas.d.mts +1 -1
  412. package/dist/lib/esm/canvas.mjs +2 -11
  413. package/dist/lib/esm/case-insensitive-file-index.d.mts +1 -1
  414. package/dist/lib/esm/case-insensitive-file-index.mjs +2 -11
  415. package/dist/lib/esm/code-block-markdown-information.d.mts +1 -1
  416. package/dist/lib/esm/code-block-markdown-information.mjs +0 -36
  417. package/dist/lib/esm/code-block-reg-exp.d.mts +1 -1
  418. package/dist/lib/esm/code-block-reg-exp.mjs +1 -37
  419. package/dist/lib/esm/codemirror/index.d.mts +1 -1
  420. package/dist/lib/esm/codemirror/index.mjs +1 -37
  421. package/dist/lib/esm/codemirror/state-field-spec.d.mts +1 -1
  422. package/dist/lib/esm/codemirror/state-field-spec.mjs +0 -36
  423. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +1 -1
  424. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +2 -11
  425. package/dist/lib/esm/command-handlers/command-handler-component.d.mts +1 -1
  426. package/dist/lib/esm/command-handlers/command-handler-component.mjs +2 -11
  427. package/dist/lib/esm/command-handlers/command-handler.d.mts +1 -1
  428. package/dist/lib/esm/command-handlers/command-handler.mjs +2 -11
  429. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +1 -1
  430. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +2 -11
  431. package/dist/lib/esm/command-handlers/file-command-handler.d.mts +1 -1
  432. package/dist/lib/esm/command-handlers/file-command-handler.mjs +5 -14
  433. package/dist/lib/esm/command-handlers/folder-command-handler.d.mts +1 -1
  434. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +5 -14
  435. package/dist/lib/esm/command-handlers/global-command-handler.d.mts +1 -1
  436. package/dist/lib/esm/command-handlers/global-command-handler.mjs +3 -12
  437. package/dist/lib/esm/command-handlers/index.d.mts +1 -1
  438. package/dist/lib/esm/command-handlers/index.mjs +1 -37
  439. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.d.mts +1 -1
  440. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +2 -11
  441. package/dist/lib/esm/command-handlers/open-settings-command-handler.d.mts +1 -1
  442. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +1 -37
  443. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.d.mts +1 -1
  444. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +1 -37
  445. package/dist/lib/esm/command-registrar.d.mts +1 -1
  446. package/dist/lib/esm/command-registrar.mjs +1 -37
  447. package/dist/lib/esm/community-plugins.d.mts +1 -1
  448. package/dist/lib/esm/community-plugins.mjs +2 -11
  449. package/dist/lib/esm/components/abort-signal-component.d.mts +2 -1
  450. package/dist/lib/esm/components/abort-signal-component.mjs +2 -11
  451. package/dist/lib/esm/components/all-windows-event-component.d.mts +2 -1
  452. package/dist/lib/esm/components/all-windows-event-component.mjs +1 -37
  453. package/dist/lib/esm/components/async-error-handler-component.d.mts +1 -1
  454. package/dist/lib/esm/components/async-error-handler-component.mjs +2 -11
  455. package/dist/lib/esm/components/async-events-component.d.mts +1 -1
  456. package/dist/lib/esm/components/async-events-component.mjs +2 -11
  457. package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +1 -1
  458. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +1 -37
  459. package/dist/lib/esm/components/component-ex.d.mts +1 -1
  460. package/dist/lib/esm/components/component-ex.mjs +3 -6
  461. package/dist/lib/esm/components/console-debug-component.d.mts +1 -1
  462. package/dist/lib/esm/components/console-debug-component.mjs +2 -11
  463. package/dist/lib/esm/components/core-plugin-toggle-component.d.mts +1 -1
  464. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +2 -11
  465. package/dist/lib/esm/components/disposable-component.d.mts +1 -1
  466. package/dist/lib/esm/components/disposable-component.mjs +3 -6
  467. package/dist/lib/esm/components/embed-extensions-component.d.mts +1 -1
  468. package/dist/lib/esm/components/embed-extensions-component.mjs +1 -37
  469. package/dist/lib/esm/components/generate-markdown-link-default-params-component.d.mts +1 -1
  470. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +1 -37
  471. package/dist/lib/esm/components/index.d.mts +1 -1
  472. package/dist/lib/esm/components/index.mjs +1 -37
  473. package/dist/lib/esm/components/layout-ready-component.d.mts +1 -1
  474. package/dist/lib/esm/components/layout-ready-component.mjs +2 -11
  475. package/dist/lib/esm/components/menu-event-registrar-component.d.mts +1 -1
  476. package/dist/lib/esm/components/menu-event-registrar-component.mjs +1 -37
  477. package/dist/lib/esm/components/monkey-around-component.d.mts +1 -1
  478. package/dist/lib/esm/components/monkey-around-component.mjs +2 -11
  479. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +1 -1
  480. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +2 -11
  481. package/dist/lib/esm/components/plugin-context-component.d.mts +1 -1
  482. package/dist/lib/esm/components/plugin-context-component.mjs +2 -11
  483. package/dist/lib/esm/components/plugin-gate-component.d.mts +2 -1
  484. package/dist/lib/esm/components/plugin-gate-component.mjs +2 -11
  485. package/dist/lib/esm/components/plugin-notice-component.d.mts +2 -1
  486. package/dist/lib/esm/components/plugin-notice-component.mjs +3 -6
  487. package/dist/lib/esm/components/plugin-settings-component.d.mts +1 -1
  488. package/dist/lib/esm/components/plugin-settings-component.mjs +2 -11
  489. package/dist/lib/esm/components/plugin-settings-tab-component.d.mts +1 -1
  490. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +2 -11
  491. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +2 -1
  492. package/dist/lib/esm/components/plugin-suggestion-component.mjs +2 -11
  493. package/dist/lib/esm/components/pointer-position-component.d.mts +1 -1
  494. package/dist/lib/esm/components/pointer-position-component.mjs +1 -37
  495. package/dist/lib/esm/components/registry-component.d.mts +1 -1
  496. package/dist/lib/esm/components/registry-component.mjs +2 -11
  497. package/dist/lib/esm/components/release-notes-component.d.mts +2 -1
  498. package/dist/lib/esm/components/release-notes-component.mjs +2 -11
  499. package/dist/lib/esm/components/rename-delete-handler-component.d.mts +1 -1
  500. package/dist/lib/esm/components/rename-delete-handler-component.mjs +3 -6
  501. package/dist/lib/esm/components/rmdir-guard-component.d.mts +1 -1
  502. package/dist/lib/esm/components/rmdir-guard-component.mjs +1 -37
  503. package/dist/lib/esm/components/settings-migration-component.d.mts +1 -1
  504. package/dist/lib/esm/components/settings-migration-component.mjs +2 -11
  505. package/dist/lib/esm/components/syntax-highlighting-component.d.mts +1 -1
  506. package/dist/lib/esm/components/syntax-highlighting-component.mjs +2 -11
  507. package/dist/lib/esm/components/templates-language-component.d.mts +1 -1
  508. package/dist/lib/esm/components/templates-language-component.mjs +3 -39
  509. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.d.mts +1 -1
  510. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +3 -6
  511. package/dist/lib/esm/constructors/index.d.mts +1 -1
  512. package/dist/lib/esm/constructors/index.mjs +1 -37
  513. package/dist/lib/esm/css-class.d.mts +1 -1
  514. package/dist/lib/esm/css-class.mjs +1 -37
  515. package/dist/lib/esm/data-handler.d.mts +1 -1
  516. package/dist/lib/esm/data-handler.mjs +1 -37
  517. package/dist/lib/esm/dataview-link.d.mts +1 -1
  518. package/dist/lib/esm/dataview-link.mjs +2 -11
  519. package/dist/lib/esm/dataview.d.mts +2 -1
  520. package/dist/lib/esm/dataview.mjs +2 -11
  521. package/dist/lib/esm/debug.d.mts +1 -1
  522. package/dist/lib/esm/debug.mjs +2 -11
  523. package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
  524. package/dist/lib/esm/demo-vault-helper-settings.mjs +0 -36
  525. package/dist/lib/esm/demo-vault-helper.d.mts +1 -1
  526. package/dist/lib/esm/demo-vault-helper.mjs +2 -11
  527. package/dist/lib/esm/demo-vault-naming.d.mts +1 -1
  528. package/dist/lib/esm/demo-vault-naming.mjs +1 -37
  529. package/dist/lib/esm/desktop-demo-vault-opener.d.mts +1 -1
  530. package/dist/lib/esm/desktop-demo-vault-opener.mjs +3 -6
  531. package/dist/lib/esm/desktop-trusted-input.d.mts +2 -1
  532. package/dist/lib/esm/desktop-trusted-input.mjs +2 -11
  533. package/dist/lib/esm/editor-extension-registrar.d.mts +1 -1
  534. package/dist/lib/esm/editor-extension-registrar.mjs +2 -11
  535. package/dist/lib/esm/editor-suggest-registrar.d.mts +1 -1
  536. package/dist/lib/esm/editor-suggest-registrar.mjs +2 -11
  537. package/dist/lib/esm/editor.d.mts +1 -1
  538. package/dist/lib/esm/editor.mjs +2 -11
  539. package/dist/lib/esm/events.d.mts +1 -1
  540. package/dist/lib/esm/events.mjs +2 -11
  541. package/dist/lib/esm/extensions-registrar.d.mts +1 -1
  542. package/dist/lib/esm/extensions-registrar.mjs +2 -11
  543. package/dist/lib/esm/file-change.d.mts +2 -1
  544. package/dist/lib/esm/file-change.mjs +2 -11
  545. package/dist/lib/esm/file-explorer.d.mts +1 -1
  546. package/dist/lib/esm/file-explorer.mjs +2 -11
  547. package/dist/lib/esm/file-manager.d.mts +2 -1
  548. package/dist/lib/esm/file-manager.mjs +2 -11
  549. package/dist/lib/esm/file-system.d.mts +1 -1
  550. package/dist/lib/esm/file-system.mjs +2 -11
  551. package/dist/lib/esm/folder-note.d.mts +1 -1
  552. package/dist/lib/esm/folder-note.mjs +2 -11
  553. package/dist/lib/esm/frontmatter-formatting.d.mts +1 -1
  554. package/dist/lib/esm/frontmatter-formatting.mjs +2 -11
  555. package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +1 -1
  556. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +2 -11
  557. package/dist/lib/esm/frontmatter.d.mts +1 -1
  558. package/dist/lib/esm/frontmatter.mjs +2 -11
  559. package/dist/lib/esm/generated-during-build.d.mts +1 -1
  560. package/dist/lib/esm/generated-during-build.mjs +2 -38
  561. package/dist/lib/esm/hover-link-source-registrar.d.mts +1 -1
  562. package/dist/lib/esm/hover-link-source-registrar.mjs +2 -11
  563. package/dist/lib/esm/html-element.d.mts +2 -1
  564. package/dist/lib/esm/html-element.mjs +1 -37
  565. package/dist/lib/esm/i18n/custom-type-options.d.mts +1 -1
  566. package/dist/lib/esm/i18n/custom-type-options.mjs +1 -37
  567. package/dist/lib/esm/i18n/default-translations.d.mts +1 -1
  568. package/dist/lib/esm/i18n/default-translations.mjs +1 -37
  569. package/dist/lib/esm/i18n/i18n.d.mts +1 -1
  570. package/dist/lib/esm/i18n/i18n.mjs +2 -11
  571. package/dist/lib/esm/i18n/index.d.mts +1 -1
  572. package/dist/lib/esm/i18n/index.mjs +1 -37
  573. package/dist/lib/esm/i18n/locales/en.d.mts +1 -1
  574. package/dist/lib/esm/i18n/locales/en.mjs +1 -37
  575. package/dist/lib/esm/i18n/locales/index.d.mts +1 -1
  576. package/dist/lib/esm/i18n/locales/index.mjs +1 -37
  577. package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -1
  578. package/dist/lib/esm/i18n/locales/translations-map.mjs +1 -37
  579. package/dist/lib/esm/index.d.mts +1 -1
  580. package/dist/lib/esm/index.mjs +1 -37
  581. package/dist/lib/esm/is-in-obsidian.d.mts +1 -1
  582. package/dist/lib/esm/is-in-obsidian.mjs +1 -37
  583. package/dist/lib/esm/library-references.d.mts +2 -0
  584. package/dist/lib/esm/library-styles.d.mts +2 -1
  585. package/dist/lib/esm/library-styles.mjs +2 -11
  586. package/dist/lib/esm/library.mjs +1 -37
  587. package/dist/lib/esm/link-name.d.mts +1 -1
  588. package/dist/lib/esm/link-name.mjs +1 -37
  589. package/dist/lib/esm/link-update-progress.d.mts +1 -1
  590. package/dist/lib/esm/link-update-progress.mjs +0 -36
  591. package/dist/lib/esm/link.d.mts +2 -1
  592. package/dist/lib/esm/link.mjs +3 -6
  593. package/dist/lib/esm/logger.d.mts +2 -1
  594. package/dist/lib/esm/logger.mjs +2 -11
  595. package/dist/lib/esm/loop.d.mts +2 -1
  596. package/dist/lib/esm/loop.mjs +3 -6
  597. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +2 -1
  598. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +2 -11
  599. package/dist/lib/esm/markdown-code-block-processor.d.mts +2 -1
  600. package/dist/lib/esm/markdown-code-block-processor.mjs +2 -11
  601. package/dist/lib/esm/markdown-post-processor-registrar.d.mts +2 -1
  602. package/dist/lib/esm/markdown-post-processor-registrar.mjs +2 -11
  603. package/dist/lib/esm/markdown-view.d.mts +1 -1
  604. package/dist/lib/esm/markdown-view.mjs +1 -37
  605. package/dist/lib/esm/markdown.d.mts +2 -1
  606. package/dist/lib/esm/markdown.mjs +3 -6
  607. package/dist/lib/esm/menu-event-registrar.d.mts +1 -1
  608. package/dist/lib/esm/menu-event-registrar.mjs +0 -36
  609. package/dist/lib/esm/metadata-cache.d.mts +1 -1
  610. package/dist/lib/esm/metadata-cache.mjs +3 -6
  611. package/dist/lib/esm/mobile-trusted-input.d.mts +1 -1
  612. package/dist/lib/esm/mobile-trusted-input.mjs +1 -37
  613. package/dist/lib/esm/modals/alert.d.mts +2 -1
  614. package/dist/lib/esm/modals/alert.mjs +2 -11
  615. package/dist/lib/esm/modals/confirm.d.mts +2 -1
  616. package/dist/lib/esm/modals/confirm.mjs +2 -11
  617. package/dist/lib/esm/modals/index.d.mts +1 -1
  618. package/dist/lib/esm/modals/index.mjs +1 -37
  619. package/dist/lib/esm/modals/minimizable-modal.d.mts +1 -1
  620. package/dist/lib/esm/modals/minimizable-modal.mjs +2 -11
  621. package/dist/lib/esm/modals/modal-command-builder.d.mts +2 -1
  622. package/dist/lib/esm/modals/modal-command-builder.mjs +2 -11
  623. package/dist/lib/esm/modals/modal.d.mts +1 -1
  624. package/dist/lib/esm/modals/modal.mjs +2 -11
  625. package/dist/lib/esm/modals/prompt.d.mts +2 -1
  626. package/dist/lib/esm/modals/prompt.mjs +2 -11
  627. package/dist/lib/esm/modals/select-item.d.mts +1 -1
  628. package/dist/lib/esm/modals/select-item.mjs +2 -11
  629. package/dist/lib/esm/modals/select-option.d.mts +2 -1
  630. package/dist/lib/esm/modals/select-option.mjs +2 -11
  631. package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +1 -1
  632. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +1 -37
  633. package/dist/lib/esm/note-priority.d.mts +1 -1
  634. package/dist/lib/esm/note-priority.mjs +2 -11
  635. package/dist/lib/esm/notebook-navigator.d.mts +1 -1
  636. package/dist/lib/esm/notebook-navigator.mjs +1 -37
  637. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +1 -1
  638. package/dist/lib/esm/obsidian-dev-utils-state.mjs +2 -11
  639. package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +1 -1
  640. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +2 -11
  641. package/dist/lib/esm/obsidian-settings.d.mts +1 -1
  642. package/dist/lib/esm/obsidian-settings.mjs +2 -11
  643. package/dist/lib/esm/parse-link.d.mts +1 -1
  644. package/dist/lib/esm/parse-link.mjs +2 -11
  645. package/dist/lib/esm/path-settings.d.mts +1 -1
  646. package/dist/lib/esm/path-settings.mjs +2 -11
  647. package/dist/lib/esm/pdf.d.mts +2 -1
  648. package/dist/lib/esm/pdf.mjs +2 -11
  649. package/dist/lib/esm/plugin/index.d.mts +1 -1
  650. package/dist/lib/esm/plugin/index.mjs +1 -37
  651. package/dist/lib/esm/plugin/plugin-api-schema.d.mts +1 -1
  652. package/dist/lib/esm/plugin/plugin-api-schema.mjs +2 -11
  653. package/dist/lib/esm/plugin/plugin-api.d.mts +1 -1
  654. package/dist/lib/esm/plugin/plugin-api.mjs +2 -11
  655. package/dist/lib/esm/plugin/plugin-context.d.mts +2 -1
  656. package/dist/lib/esm/plugin/plugin-context.mjs +2 -11
  657. package/dist/lib/esm/plugin/plugin-event-source.d.mts +1 -1
  658. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -37
  659. package/dist/lib/esm/plugin/plugin-install-state.d.mts +1 -1
  660. package/dist/lib/esm/plugin/plugin-install-state.mjs +1 -37
  661. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +1 -1
  662. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -37
  663. package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +2 -1
  664. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +2 -11
  665. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  666. package/dist/lib/esm/plugin/plugin.mjs +2 -11
  667. package/dist/lib/esm/plugin/settings-migration-api.d.mts +1 -1
  668. package/dist/lib/esm/plugin/settings-migration-api.mjs +2 -11
  669. package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +1 -1
  670. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +2 -11
  671. package/dist/lib/esm/popovers/field-popover.d.mts +1 -1
  672. package/dist/lib/esm/popovers/field-popover.mjs +2 -11
  673. package/dist/lib/esm/popovers/index.d.mts +1 -1
  674. package/dist/lib/esm/popovers/index.mjs +1 -37
  675. package/dist/lib/esm/popovers/popover-anchor.d.mts +2 -1
  676. package/dist/lib/esm/popovers/popover-anchor.mjs +2 -11
  677. package/dist/lib/esm/popovers/popover.d.mts +2 -1
  678. package/dist/lib/esm/popovers/popover.mjs +2 -11
  679. package/dist/lib/esm/property-entry.d.mts +1 -1
  680. package/dist/lib/esm/property-entry.mjs +1 -37
  681. package/dist/lib/esm/queue.d.mts +2 -1
  682. package/dist/lib/esm/queue.mjs +2 -11
  683. package/dist/lib/esm/react/app-context.d.mts +1 -1
  684. package/dist/lib/esm/react/app-context.mjs +2 -11
  685. package/dist/lib/esm/react/index.d.mts +1 -1
  686. package/dist/lib/esm/react/index.mjs +1 -37
  687. package/dist/lib/esm/reference.d.mts +1 -1
  688. package/dist/lib/esm/reference.mjs +2 -11
  689. package/dist/lib/esm/resource-lock.d.mts +2 -1
  690. package/dist/lib/esm/resource-lock.mjs +2 -11
  691. package/dist/lib/esm/resource-url.d.mts +1 -1
  692. package/dist/lib/esm/resource-url.mjs +2 -11
  693. package/dist/lib/esm/ribbon-icon-registrar.d.mts +2 -1
  694. package/dist/lib/esm/ribbon-icon-registrar.mjs +2 -11
  695. package/dist/lib/esm/setting-components/checkbox-component.d.mts +2 -1
  696. package/dist/lib/esm/setting-components/checkbox-component.mjs +2 -11
  697. package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +2 -1
  698. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +2 -11
  699. package/dist/lib/esm/setting-components/date-component.d.mts +2 -1
  700. package/dist/lib/esm/setting-components/date-component.mjs +2 -11
  701. package/dist/lib/esm/setting-components/date-time-component.d.mts +2 -1
  702. package/dist/lib/esm/setting-components/date-time-component.mjs +2 -11
  703. package/dist/lib/esm/setting-components/email-component.d.mts +2 -1
  704. package/dist/lib/esm/setting-components/email-component.mjs +1 -37
  705. package/dist/lib/esm/setting-components/file-component.d.mts +2 -1
  706. package/dist/lib/esm/setting-components/file-component.mjs +1 -37
  707. package/dist/lib/esm/setting-components/index.d.mts +1 -1
  708. package/dist/lib/esm/setting-components/index.mjs +1 -37
  709. package/dist/lib/esm/setting-components/month-component.d.mts +2 -1
  710. package/dist/lib/esm/setting-components/month-component.mjs +2 -11
  711. package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +3 -1
  712. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +2 -11
  713. package/dist/lib/esm/setting-components/multiple-email-component.d.mts +2 -1
  714. package/dist/lib/esm/setting-components/multiple-email-component.mjs +1 -37
  715. package/dist/lib/esm/setting-components/multiple-file-component.d.mts +2 -1
  716. package/dist/lib/esm/setting-components/multiple-file-component.mjs +2 -11
  717. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +2 -1
  718. package/dist/lib/esm/setting-components/multiple-text-component.mjs +2 -11
  719. package/dist/lib/esm/setting-components/number-component.d.mts +2 -1
  720. package/dist/lib/esm/setting-components/number-component.mjs +1 -37
  721. package/dist/lib/esm/setting-components/password-component.d.mts +2 -1
  722. package/dist/lib/esm/setting-components/password-component.mjs +1 -37
  723. package/dist/lib/esm/setting-components/setting-component-wrapper.d.mts +2 -1
  724. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +2 -11
  725. package/dist/lib/esm/setting-components/telephone-component.d.mts +2 -1
  726. package/dist/lib/esm/setting-components/telephone-component.mjs +1 -37
  727. package/dist/lib/esm/setting-components/text-based-component.d.mts +1 -1
  728. package/dist/lib/esm/setting-components/text-based-component.mjs +2 -11
  729. package/dist/lib/esm/setting-components/time-component.d.mts +2 -1
  730. package/dist/lib/esm/setting-components/time-component.mjs +2 -11
  731. package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +2 -1
  732. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +2 -11
  733. package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +3 -1
  734. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +2 -11
  735. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +3 -1
  736. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +2 -11
  737. package/dist/lib/esm/setting-components/typed-range-text-component.d.mts +1 -1
  738. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +1 -37
  739. package/dist/lib/esm/setting-components/typed-text-component.d.mts +2 -1
  740. package/dist/lib/esm/setting-components/typed-text-component.mjs +2 -11
  741. package/dist/lib/esm/setting-components/url-component.d.mts +2 -1
  742. package/dist/lib/esm/setting-components/url-component.mjs +1 -37
  743. package/dist/lib/esm/setting-components/validator-component.d.mts +1 -1
  744. package/dist/lib/esm/setting-components/validator-component.mjs +2 -11
  745. package/dist/lib/esm/setting-components/value-component-with-change-tracking.d.mts +1 -1
  746. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +0 -36
  747. package/dist/lib/esm/setting-components/week-component.d.mts +2 -1
  748. package/dist/lib/esm/setting-components/week-component.mjs +2 -11
  749. package/dist/lib/esm/setting-ex.d.mts +2 -1
  750. package/dist/lib/esm/setting-ex.mjs +2 -11
  751. package/dist/lib/esm/setting-group-ex.d.mts +2 -1
  752. package/dist/lib/esm/setting-group-ex.mjs +2 -11
  753. package/dist/lib/esm/status-bar-item-registrar.d.mts +2 -1
  754. package/dist/lib/esm/status-bar-item-registrar.mjs +2 -11
  755. package/dist/lib/esm/templater.d.mts +1 -1
  756. package/dist/lib/esm/templater.mjs +1 -37
  757. package/dist/lib/esm/transformers/duration-transformer.d.mts +1 -1
  758. package/dist/lib/esm/transformers/duration-transformer.mjs +2 -11
  759. package/dist/lib/esm/transformers/index.d.mts +1 -1
  760. package/dist/lib/esm/transformers/index.mjs +1 -37
  761. package/dist/lib/esm/trusted-input.d.mts +1 -1
  762. package/dist/lib/esm/trusted-input.mjs +2 -11
  763. package/dist/lib/esm/validation.d.mts +1 -1
  764. package/dist/lib/esm/validation.mjs +2 -11
  765. package/dist/lib/esm/vault-delete.d.mts +1 -1
  766. package/dist/lib/esm/vault-delete.mjs +2 -11
  767. package/dist/lib/esm/vault-transaction.d.mts +1 -1
  768. package/dist/lib/esm/vault-transaction.mjs +3 -6
  769. package/dist/lib/esm/vault.d.mts +1 -1
  770. package/dist/lib/esm/vault.mjs +3 -6
  771. package/dist/lib/esm/view-registrar.d.mts +1 -1
  772. package/dist/lib/esm/view-registrar.mjs +2 -11
  773. package/dist/lib/esm/workspace.d.mts +2 -1
  774. package/dist/lib/esm/workspace.mjs +2 -11
  775. package/package.json +15 -4
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import {
@@ -138,4 +129,4 @@ export {
138
129
  retryWithTimeoutNotice,
139
130
  runWithTimeoutNotice
140
131
  };
141
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzeW5jLXdpdGgtbm90aWNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBSZXRyeU9wdGlvbnMsXG4gIFRpbWVvdXRDb250ZXh0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBpbnZva2VBc3luY1NhZmVseSxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXRcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmV0cnlXaXRoVGltZW91dE5vdGljZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gY29udGVudCB0byBzaG93IGluIHRoZSBub3RpY2UgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0aW1lZC1vdXQgbWVzc2FnZS4gUmVzb2x2ZWQgb25seSBpZlxuICAgKiB0aGUgb3BlcmF0aW9uIGV4Y2VlZHMgdGhlIHRpbWVvdXQsIHNob3duIGFzIGEgcGVybWFuZW50IG5vdGljZSwgYW5kIGhpZGRlbiB3aGVuIHRoZSBvcGVyYXRpb25cbiAgICogY29tcGxldGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHNob3cgdGhlIHRpbWVvdXQgbm90aWNlLiBXaGVuIGBudWxsYCAob3IgYHNob3VsZFNob3dUaW1lb3V0Tm90aWNlYFxuICAgKiBpcyBgZmFsc2VgKSwgbm8gbm90aWNlIGlzIHNob3duIGFuZCB0aGUgdGltZW91dCBpcyBvbmx5IGxvZ2dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIHJldHJ5IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+IHtcbiAgLyoqXG4gICAqIEN1c3RvbSBjb250ZW50IHRvIHNob3cgaW4gdGhlIG5vdGljZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHRpbWVkLW91dCBtZXNzYWdlLiBSZXNvbHZlZCBvbmx5IGlmXG4gICAqIHRoZSBvcGVyYXRpb24gZXhjZWVkcyB7QGxpbmsgUnVuV2l0aFRpbWVvdXROb3RpY2VQYXJhbXMudGltZW91dEluTWlsbGlzZWNvbmRzfSwgc2hvd24gYXMgYVxuICAgKiBwZXJtYW5lbnQgbm90aWNlLCBhbmQgaGlkZGVuIHdoZW4gdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gc2hvdyB0aGUgdGltZW91dCBub3RpY2UuIFdoZW4gYG51bGxgIChvciBgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2VgXG4gICAqIGlzIGBmYWxzZWApLCBubyBub3RpY2UgaXMgc2hvd24gYW5kIHRoZSB0aW1lb3V0IGlzIG9ubHkgbG9nZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBudWxsIHwgUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJldHJpZXMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgYHRydWVgIG9yIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQgYW5kIGRpc3BsYXlzIGEgbm90aWNlIGlmIHRoZSBmdW5jdGlvbiB0aW1lcyBvdXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIG9yIHJlamVjdHMgd2hlbiB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnlXaXRoVGltZW91dE5vdGljZShwYXJhbXM6IFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBvblRpbWVvdXQ6IHJlc29sdmVPblRpbWVvdXQocGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlLCBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50LCBwYXJhbXMuY29udGVudClcbiAgfSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgdGltZW91dCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0Tm90aWNlPFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIHJ1bldpdGhUaW1lb3V0KHtcbiAgICAuLi5wYXJhbXMsXG4gICAgb25UaW1lb3V0OiByZXNvbHZlT25UaW1lb3V0KHBhcmFtcy5zaG91bGRTaG93VGltZW91dE5vdGljZSwgcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudCwgcGFyYW1zLmNvbnRlbnQpXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblRpbWVvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQsIHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc2hvd0N1c3RvbUNvbnRlbnROb3RpY2UoY29udGV4dCwgcGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY29udGV4dC5kdXJhdGlvbik7XG4gIGxldCBydW5uaW5nVGltZUVsOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIGNvbnN0IFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMgPSAxMDAwO1xuICBjb25zdCBjbGVhbnVwID0geyBpbnRlcnZhbElkOiAwIH07XG5cbiAgY29uc3Qgbm90aWNlID0gcGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoY3JlYXRlRnJhZ21lbnQoKGYpID0+IHtcbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25OYW1lKSB7XG4gICAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5vcGVyYXRpb24pKTtcbiAgICAgIGYuYXBwZW5kVGV4dCgnOiAnKTtcbiAgICAgIGYuYXBwZW5kVGV4dChjb250ZXh0Lm9wZXJhdGlvbk5hbWUpO1xuICAgICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICB9XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UudGltZWRPdXQsIHsgZHVyYXRpb246IGNvbnRleHQuZHVyYXRpb24gfSkpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UucnVubmluZ0ZvcikpO1xuICAgIGYuYXBwZW5kVGV4dCgnICcpO1xuICAgIHJ1bm5pbmdUaW1lRWwgPSBmLmNyZWF0ZVNwYW4oKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5taWxsaXNlY29uZHMpKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnRlcm1pbmF0ZU9wZXJhdGlvbikpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgY29uc3QgYnV0dG9uID0gZi5jcmVhdGVFbCgnYnV0dG9uJywge1xuICAgICAgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKVxuICAgIH0pO1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGNvbnRleHQudGVybWluYXRlT3BlcmF0aW9uKCk7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChjbGVhbnVwLmludGVydmFsSWQpO1xuICAgICAgbm90aWNlLmhpZGUoKTtcbiAgICB9KTtcbiAgfSkpO1xuXG4gIHVwZGF0ZVJ1bm5pbmdUaW1lKCk7XG4gIGNsZWFudXAuaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVSdW5uaW5nVGltZSwgU0VDT05EX0lOX01JTExJU0VDT05EUyk7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICBub3RpY2UuaGlkZSgpO1xuICB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGVSdW5uaW5nVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzID0gTWF0aC5tYXgoY29udGV4dC5kdXJhdGlvbiwgTWF0aC5yb3VuZCgocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpIC8gU0VDT05EX0lOX01JTExJU0VDT05EUykgKiBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcbiAgICBydW5uaW5nVGltZUVsLnRleHRDb250ZW50ID0gU3RyaW5nKHJ1bm5pbmdUaW1lSW5NaWxsaXNlY29uZHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dFdpdGhvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQpOiB2b2lkIHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIGNvbnRleHQuZHVyYXRpb24pO1xuXG4gIGNvbnRleHQub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIGdldERlYnVnZ2VyKCdBc3luY1dpdGhOb3RpY2U6b25UaW1lb3V0V2l0aG91dE5vdGljZScpKCdPcGVyYXRpb24gY29tcGxldGVkIGFmdGVyIHRpbWVvdXQnLCB7XG4gICAgICBvcGVyYXRpb25OYW1lOiBjb250ZXh0Lm9wZXJhdGlvbk5hbWUsXG4gICAgICB0b3RhbER1cmF0aW9uOiBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSB0aW1lb3V0IGhhbmRsZXIgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0Tm90aWNlfSAvIHtAbGluayBydW5XaXRoVGltZW91dE5vdGljZX0uIEEgbm90aWNlXG4gKiBpcyBzaG93biBvbmx5IHdoZW4gbm90aWNlcyBhcmUgZW5hYmxlZCBBTkQgYSByZWFsIHtAbGluayBQbHVnaW5Ob3RpY2VDb21wb25lbnR9IGlzIHN1cHBsaWVkOyBvdGhlcndpc2VcbiAqIHRoZSB0aW1lb3V0IGlzIHNpbGVudGx5IGxvZ2dlZC5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgLSBXaGV0aGVyIGEgdGltZW91dCBub3RpY2UgaXMgcmVxdWVzdGVkIChkZWZhdWx0cyB0byBgdHJ1ZWApLlxuICogQHBhcmFtIHBsdWdpbk5vdGljZUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdXNlZCB0byBzaG93IHRoZSBub3RpY2UsIGlmIGFueS5cbiAqIEBwYXJhbSBjb250ZW50IC0gT3B0aW9uYWwgY3VzdG9tIGNvbnRlbnQgZm9yIHRoZSBub3RpY2UuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBoYW5kbGVyIHRvIHBhc3MgdG8gdGhlIHVuZGVybHlpbmcgcmV0cnkvcnVuIGhlbHBlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU9uVGltZW91dChcbiAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz5cbik6IChjb250ZXh0OiBUaW1lb3V0Q29udGV4dCkgPT4gdm9pZCB7XG4gIHJldHVybiAhKHNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWUpIHx8IHBsdWdpbk5vdGljZUNvbXBvbmVudCA9PT0gbnVsbFxuICAgID8gb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICAgIDogKGNvbnRleHQpOiB2b2lkID0+IHtcbiAgICAgIG9uVGltZW91dE5vdGljZShjb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQsIGNvbnRlbnQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNob3dDdXN0b21Db250ZW50Tm90aWNlKGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudCwgY29udGVudDogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBsZXQgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgbGV0IG5vdGljZTogTm90aWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgIG5vdGljZT8uaGlkZSgpO1xuICB9KTtcblxuICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnQsIHt9KTtcbiAgICAvLyBUaGUgb3BlcmF0aW9uIG1heSBoYXZlIGNvbXBsZXRlZCB3aGlsZSB0aGUgY29udGVudCB3YXMgcmVzb2x2aW5nOyBpZiBzbywgZG8gbm90IHNob3cgYSBzdGFsZSBub3RpY2UuXG4gICAgaWYgKGlzT3BlcmF0aW9uQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5vdGljZSA9IHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKHJlc29sdmVkQ29udGVudCwgeyBpc1Blcm1hbmVudDogdHJ1ZSB9KTtcbiAgfSk7XG59XG4iXSwKICAi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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hc3luYy13aXRoLW5vdGljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBSZXRyeU9wdGlvbnMsXG4gIFRpbWVvdXRDb250ZXh0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBpbnZva2VBc3luY1NhZmVseSxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXRcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmV0cnlXaXRoVGltZW91dE5vdGljZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gY29udGVudCB0byBzaG93IGluIHRoZSBub3RpY2UgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0aW1lZC1vdXQgbWVzc2FnZS4gUmVzb2x2ZWQgb25seSBpZlxuICAgKiB0aGUgb3BlcmF0aW9uIGV4Y2VlZHMgdGhlIHRpbWVvdXQsIHNob3duIGFzIGEgcGVybWFuZW50IG5vdGljZSwgYW5kIGhpZGRlbiB3aGVuIHRoZSBvcGVyYXRpb25cbiAgICogY29tcGxldGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHNob3cgdGhlIHRpbWVvdXQgbm90aWNlLiBXaGVuIGBudWxsYCAob3IgYHNob3VsZFNob3dUaW1lb3V0Tm90aWNlYFxuICAgKiBpcyBgZmFsc2VgKSwgbm8gbm90aWNlIGlzIHNob3duIGFuZCB0aGUgdGltZW91dCBpcyBvbmx5IGxvZ2dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIHJldHJ5IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+IHtcbiAgLyoqXG4gICAqIEN1c3RvbSBjb250ZW50IHRvIHNob3cgaW4gdGhlIG5vdGljZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHRpbWVkLW91dCBtZXNzYWdlLiBSZXNvbHZlZCBvbmx5IGlmXG4gICAqIHRoZSBvcGVyYXRpb24gZXhjZWVkcyB7QGxpbmsgUnVuV2l0aFRpbWVvdXROb3RpY2VQYXJhbXMudGltZW91dEluTWlsbGlzZWNvbmRzfSwgc2hvd24gYXMgYVxuICAgKiBwZXJtYW5lbnQgbm90aWNlLCBhbmQgaGlkZGVuIHdoZW4gdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gc2hvdyB0aGUgdGltZW91dCBub3RpY2UuIFdoZW4gYG51bGxgIChvciBgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2VgXG4gICAqIGlzIGBmYWxzZWApLCBubyBub3RpY2UgaXMgc2hvd24gYW5kIHRoZSB0aW1lb3V0IGlzIG9ubHkgbG9nZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBudWxsIHwgUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJldHJpZXMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgYHRydWVgIG9yIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQgYW5kIGRpc3BsYXlzIGEgbm90aWNlIGlmIHRoZSBmdW5jdGlvbiB0aW1lcyBvdXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIG9yIHJlamVjdHMgd2hlbiB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnlXaXRoVGltZW91dE5vdGljZShwYXJhbXM6IFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBvblRpbWVvdXQ6IHJlc29sdmVPblRpbWVvdXQocGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlLCBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50LCBwYXJhbXMuY29udGVudClcbiAgfSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgdGltZW91dCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0Tm90aWNlPFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIHJ1bldpdGhUaW1lb3V0KHtcbiAgICAuLi5wYXJhbXMsXG4gICAgb25UaW1lb3V0OiByZXNvbHZlT25UaW1lb3V0KHBhcmFtcy5zaG91bGRTaG93VGltZW91dE5vdGljZSwgcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudCwgcGFyYW1zLmNvbnRlbnQpXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblRpbWVvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQsIHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc2hvd0N1c3RvbUNvbnRlbnROb3RpY2UoY29udGV4dCwgcGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY29udGV4dC5kdXJhdGlvbik7XG4gIGxldCBydW5uaW5nVGltZUVsOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIGNvbnN0IFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMgPSAxMDAwO1xuICBjb25zdCBjbGVhbnVwID0geyBpbnRlcnZhbElkOiAwIH07XG5cbiAgY29uc3Qgbm90aWNlID0gcGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoY3JlYXRlRnJhZ21lbnQoKGYpID0+IHtcbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25OYW1lKSB7XG4gICAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5vcGVyYXRpb24pKTtcbiAgICAgIGYuYXBwZW5kVGV4dCgnOiAnKTtcbiAgICAgIGYuYXBwZW5kVGV4dChjb250ZXh0Lm9wZXJhdGlvbk5hbWUpO1xuICAgICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICB9XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UudGltZWRPdXQsIHsgZHVyYXRpb246IGNvbnRleHQuZHVyYXRpb24gfSkpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UucnVubmluZ0ZvcikpO1xuICAgIGYuYXBwZW5kVGV4dCgnICcpO1xuICAgIHJ1bm5pbmdUaW1lRWwgPSBmLmNyZWF0ZVNwYW4oKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5taWxsaXNlY29uZHMpKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnRlcm1pbmF0ZU9wZXJhdGlvbikpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgY29uc3QgYnV0dG9uID0gZi5jcmVhdGVFbCgnYnV0dG9uJywge1xuICAgICAgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKVxuICAgIH0pO1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGNvbnRleHQudGVybWluYXRlT3BlcmF0aW9uKCk7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChjbGVhbnVwLmludGVydmFsSWQpO1xuICAgICAgbm90aWNlLmhpZGUoKTtcbiAgICB9KTtcbiAgfSkpO1xuXG4gIHVwZGF0ZVJ1bm5pbmdUaW1lKCk7XG4gIGNsZWFudXAuaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVSdW5uaW5nVGltZSwgU0VDT05EX0lOX01JTExJU0VDT05EUyk7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICBub3RpY2UuaGlkZSgpO1xuICB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGVSdW5uaW5nVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzID0gTWF0aC5tYXgoY29udGV4dC5kdXJhdGlvbiwgTWF0aC5yb3VuZCgocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpIC8gU0VDT05EX0lOX01JTExJU0VDT05EUykgKiBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcbiAgICBydW5uaW5nVGltZUVsLnRleHRDb250ZW50ID0gU3RyaW5nKHJ1bm5pbmdUaW1lSW5NaWxsaXNlY29uZHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dFdpdGhvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQpOiB2b2lkIHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIGNvbnRleHQuZHVyYXRpb24pO1xuXG4gIGNvbnRleHQub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIGdldERlYnVnZ2VyKCdBc3luY1dpdGhOb3RpY2U6b25UaW1lb3V0V2l0aG91dE5vdGljZScpKCdPcGVyYXRpb24gY29tcGxldGVkIGFmdGVyIHRpbWVvdXQnLCB7XG4gICAgICBvcGVyYXRpb25OYW1lOiBjb250ZXh0Lm9wZXJhdGlvbk5hbWUsXG4gICAgICB0b3RhbER1cmF0aW9uOiBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSB0aW1lb3V0IGhhbmRsZXIgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0Tm90aWNlfSAvIHtAbGluayBydW5XaXRoVGltZW91dE5vdGljZX0uIEEgbm90aWNlXG4gKiBpcyBzaG93biBvbmx5IHdoZW4gbm90aWNlcyBhcmUgZW5hYmxlZCBBTkQgYSByZWFsIHtAbGluayBQbHVnaW5Ob3RpY2VDb21wb25lbnR9IGlzIHN1cHBsaWVkOyBvdGhlcndpc2VcbiAqIHRoZSB0aW1lb3V0IGlzIHNpbGVudGx5IGxvZ2dlZC5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgLSBXaGV0aGVyIGEgdGltZW91dCBub3RpY2UgaXMgcmVxdWVzdGVkIChkZWZhdWx0cyB0byBgdHJ1ZWApLlxuICogQHBhcmFtIHBsdWdpbk5vdGljZUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdXNlZCB0byBzaG93IHRoZSBub3RpY2UsIGlmIGFueS5cbiAqIEBwYXJhbSBjb250ZW50IC0gT3B0aW9uYWwgY3VzdG9tIGNvbnRlbnQgZm9yIHRoZSBub3RpY2UuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBoYW5kbGVyIHRvIHBhc3MgdG8gdGhlIHVuZGVybHlpbmcgcmV0cnkvcnVuIGhlbHBlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU9uVGltZW91dChcbiAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz5cbik6IChjb250ZXh0OiBUaW1lb3V0Q29udGV4dCkgPT4gdm9pZCB7XG4gIHJldHVybiAhKHNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWUpIHx8IHBsdWdpbk5vdGljZUNvbXBvbmVudCA9PT0gbnVsbFxuICAgID8gb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICAgIDogKGNvbnRleHQpOiB2b2lkID0+IHtcbiAgICAgIG9uVGltZW91dE5vdGljZShjb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQsIGNvbnRlbnQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNob3dDdXN0b21Db250ZW50Tm90aWNlKGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudCwgY29udGVudDogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBsZXQgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgbGV0IG5vdGljZTogTm90aWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgIG5vdGljZT8uaGlkZSgpO1xuICB9KTtcblxuICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnQsIHt9KTtcbiAgICAvLyBUaGUgb3BlcmF0aW9uIG1heSBoYXZlIGNvbXBsZXRlZCB3aGlsZSB0aGUgY29udGVudCB3YXMgcmVzb2x2aW5nOyBpZiBzbywgZG8gbm90IHNob3cgYSBzdGFsZSBub3RpY2UuXG4gICAgaWYgKGlzT3BlcmF0aW9uQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5vdGljZSA9IHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKHJlc29sdmVkQ29udGVudCwgeyBpc1Blcm1hbmVudDogdHJ1ZSB9KTtcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7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
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import {
@@ -350,4 +341,4 @@ export {
350
341
  hasOwnAttachmentFolder,
351
342
  isAtProperAttachmentPath
352
343
  };
353
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwaUNvbnRyYWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQXJndW1lbnRzU2NoZW1hLFxuICBjcmVhdGVUeXBlR3VhcmRTY2hlbWFcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZVN0cmluZyxcbiAgcmVwbGFjZUFsbCxcbiAgdHJpbVN0YXJ0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHtcbiAgZ2V0RGF0YUFkYXB0ZXJFeCxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNQYXRoT3JGaWxlLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGZpbmRQbHVnaW5BcGkgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXRzPzogRmlsZVN0YXRzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBMYXppbHkgcmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICpcbiAgICogVGhlIGNvbnRlbnQgaXMgcmVhZCBvbiBkZW1hbmQgb25seSB3aGVuIGEgY29uc3VtZXIgYWN0dWFsbHkgbmVlZHMgdGhlIGJ5dGVzIChlLmcuIGEgdGVtcGxhdGVcbiAgICogdG9rZW4gdGhhdCBlbWJlZHMgdGhlbSkuIEZvciB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgbm90aGluZyBwdWxscyB0aGUgYnl0ZXMsIHNvIHRoZSBwb3RlbnRpYWxseVxuICAgKiBleHBlbnNpdmUgKHNpemUtcHJvcG9ydGlvbmFsKSBgcmVhZEJpbmFyeWAgbmV2ZXIgcnVucy4gQ29uc3VtZXJzIHRoYXQgbWF5IGNhbGwgdGhpcyBtb3JlIHRoYW5cbiAgICogb25jZSBzaG91bGQgbWVtb2l6ZSB0aGUgZmlyc3QgY2FsbC4gYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gYXR0YWNobWVudCBmaWxlIHRvIHJlYWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6ICgoKSA9PiBQcm9taXNlPEFycmF5QnVmZmVyPikgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBnZW5lcmF0ZWQgYXR0YWNobWVudCBmaWxlIG5hbWUgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIHNsaWNlIG9mIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyByZWdpc3RyeSBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIGRlY2xhcmVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQ6XG4gKiB0aGF0IHBsdWdpbiBzaGlwcyBpdHMgc3VyZmFjZSBhcyBhIGhhbmQtd3JpdHRlbiBgYXBpLmQudHNgLCBub3QgYXMgYSBwYWNrYWdlIChzZWUgcnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuXG4gKi9cbmludGVyZmFjZSBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgZnVsbCBhdHRhY2htZW50LXBhdGggcmVzb2x2ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2FtZSBmaWVsZHMgYXMge0BsaW5rIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXN9LCB3aGljaCB0aGVcbiAgICogICBwbHVnaW4gZGVjbGFyZXMgZmllbGQgZm9yIGZpZWxkLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdHRhY2htZW50J3MgcGF0aCBmcm9tIHRoZSB2YXVsdCByb290LlxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzOiAocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgZGVzaWduYXRlZCBhIGZvbGRlciBhbiBhdHRhY2htZW50IHVuaXQgZm9sZGVyLiBTeW5jaHJvbm91cyBvbiBwdXJwb3NlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZm9sZGVyIGlzIGRlc2lnbmF0ZWQuXG4gICAqL1xuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAocGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaS5pc0F0dGFjaG1lbnRVbml0Rm9sZGVyfS5cbiAqL1xuaW50ZXJmYWNlIEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciwgYXMgYSB2YXVsdC1yZWxhdGl2ZSBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwbHVnaW4gaWQgYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgaXRzIEFQSSB1bmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX1BMVUdJTl9JRCA9ICdvYnNpZGlhbi1jdXN0b20tYXR0YWNobWVudC1sb2NhdGlvbic7XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IHZlcnNpb25zIG9mIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyBBUEkgdGhpcyBtb2R1bGUgY29tcGlsZWQgYWdhaW5zdC4gYDEuMy4wYCBpcyB0aGUgZmlyc3RcbiAqIHRvIGNhcnJ5IHRoZSB0d28gYXR0YWNobWVudC1wYXRoIG1ldGhvZHMuXG4gKi9cbmNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfVkVSU0lPTl9SQU5HRSA9ICdeMS4zLjAnO1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCBvZiB0aGUgbWVtYmVycyBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBzbyBhIHJlY29yZCB0aGF0IGxhY2tzXG4gKiBlaXRoZXIgaXMgcGFzc2VkIG92ZXIsIGFuZCBhIHBheWxvYWQgdGhhdCBicmVha3MgaXRzIHNpZ25hdHVyZSBpcyByZXBvcnRlZCB3aGlsZSB0aGUgYFBsdWdpbkFwaWAgZGVidWdnZXIgaXMgb24uXG4gKlxuICogQSBjb3B5IG9mIHRob3NlIHR3byBlbnRyaWVzIG9mIGBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BUElfQ09OVFJBQ1RgLCB3aGljaCBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHNoaXBzIGFzIGl0cyByb290IGBhcGktY29udHJhY3QudHNgXG4gKiBhbmQgcHVibGlzaGVzLiBLZWVwIHRoZSBndWFyZHMgaW4gYWdyZWVtZW50IHdpdGggdGhhdCBmaWxlLCBzbyB0aGUgcHJvdmlkZXIgYW5kIHRoaXMgY29uc3VtZXIgY2hlY2sgb25lIGRlZmluaXRpb24uXG4gKi9cbmNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfQ09OVFJBQ1Q6IEFwaUNvbnRyYWN0PEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkF0dGFjaG1lbnRQYXRoQXBpPiA9IHtcbiAgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYXZhaWxhYmxlLXBhdGgtZm9yLWF0dGFjaG1lbnRzIHBhcmFtcycsXG4gICAgICB0eXBlR3VhcmQ6IGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtc1xuICAgIH1dKSxcbiAgICBvdXRwdXQ6IGNyZWF0ZVR5cGVHdWFyZFNjaGVtYSh7IGV4cGVjdGVkOiAnYW4gYXR0YWNobWVudCBwYXRoJywgdHlwZUd1YXJkOiBpc1N0cmluZyB9KVxuICB9LFxuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYXR0YWNobWVudC11bml0LWZvbGRlciBwYXJhbXM6IHsgZm9sZGVyUGF0aDogc3RyaW5nIH0nLFxuICAgICAgdHlwZUd1YXJkOiBpc0N1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXNcbiAgICB9XSksXG4gICAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2EgYm9vbGVhbicsIHR5cGVHdWFyZDogaXNCb29sZWFuIH0pXG4gIH1cbn07XG5cbi8qKlxuICogRHVtbXkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IERVTU1ZX1BBVEggPSAnX19EVU1NWV9fJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0QXR0YWNobWVudEZpbGVQYXRoIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBvbGQgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZE5vdGVQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogU2hvdWxkIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBoYXNPd25BdHRhY2htZW50Rm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNPd25BdHRhY2htZW50Rm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNBdFByb3BlckF0dGFjaG1lbnRQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBhdHRhY2htZW50IHRvIGNoZWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd259XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlIHRoYXQgcmVmZXJlbmNlcyB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jfS5cbiAqL1xuaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jfS5cbiAqL1xuaW50ZXJmYWNlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBiYXNlIG5hbWUgb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlQXR0YWNobWVudEZvbGRlcn0uXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlQXR0YWNobWVudEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFRoZSBhdHRhY2htZW50IGZvbGRlciBhIG5vdGUgcmVzb2x2ZXMgdG8sIGJlZm9yZSB0aGUgYXR0YWNobWVudCBmaWxlIG5hbWUgaXMgYXBwZW5kZWQuXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlQXR0YWNobWVudEZvbGRlclJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgYXR0YWNobWVudCBmb2xkZXIsIG9yIGBudWxsYCB3aGVuIGl0IGRvZXMgbm90IGV4aXN0IGluIHRoZSB2YXVsdCB5ZXQuXG4gICAqL1xuICByZWFkb25seSBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbm9ybWFsaXplZCBhdHRhY2htZW50IGZvbGRlciBwYXRoLCB3aGV0aGVyIG9yIG5vdCB0aGUgZm9sZGVyIGV4aXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnQgb2YgdGhlIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgc2V0dGluZyB0aGF0IGZvbGxvd3MgYC4vYCwgb3IgYG51bGxgIHdoZW4gdGhlIHNldHRpbmcgaXMgbm90XG4gICAqIHJlbGF0aXZlIHRvIHRoZSBub3RlLiBPbmx5IGEgcmVsYXRpdmUgc2V0dGluZyBtYXkgaGF2ZSBpdHMgbWlzc2luZyBmb2xkZXIgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aDogbnVsbCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgcGF0aCBmb3IgYW4gYXR0YWNobWVudCB3aXRoaW4gYSBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZmlsZSBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoKHBhcmFtczogR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkgPSBmaW5kQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKCk7XG4gIGlmICghY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKSB7XG4gICAgLy8gTm9ib2R5IG92ZXJyaWRlcyB0aGUgcmVzb2x1dGlvbiwgc28gaXQgaXMgZW50aXJlbHkgc3luY2hyb25vdXMuXG4gICAgLy8gVGhlIHNhbWUgY29yZSBhbnN3ZXJzIGBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGxgLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSB0d28gaW4gc3RlcC5cbiAgICByZXR1cm4gZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luYyh7XG4gICAgICBhcHAsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xuICBjb25zdCBhdHRhY2htZW50RmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoIH0pO1xuXG4gIHJldHVybiBhd2FpdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHtcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBhdHRhY2htZW50RmlsZVN0YXRzOiBhdHRhY2htZW50RmlsZT8uc3RhdCxcbiAgICBjb250ZXh0OiBwYXJhbXMuY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBvbGROb3RlUGF0aE9yRmlsZTogcGFyYW1zLm9sZE5vdGVQYXRoT3JGaWxlLFxuICAgIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6IGF0dGFjaG1lbnRGaWxlID8gKCk6IFByb21pc2U8QXJyYXlCdWZmZXI+ID0+IGFwcC52YXVsdC5yZWFkQmluYXJ5KGF0dGFjaG1lbnRGaWxlKSA6IG51bGwsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmb3IgYSBnaXZlbiBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGgocGFyYW1zOiBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiBwYXJlbnRGb2xkZXJQYXRoKFxuICAgIGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgICBhcHAsXG4gICAgICBjb250ZXh0LFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUgKipzeW5jaHJvbm91c2x5KiosIHdoZW4gdGhhdCBpcyBwb3NzaWJsZSBhdCBhbGwuXG4gKlxuICogT2JzaWRpYW4gYnVpbGRzIGl0cyBmaWxlL2ZvbGRlciBjb250ZXh0IG1lbnVzIGFuZCBldmFsdWF0ZXMgYSBjb21tYW5kJ3MgYGNoZWNrQ2FsbGJhY2tgIHN5bmNocm9ub3VzbHksIHNvIGFcbiAqIGNhbGxlciBkZWNpZGluZyB3aGV0aGVyIHRvIG1lcmVseSAqb2ZmZXIqIGEgY29tbWFuZCBjYW5ub3QgYXdhaXQge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofS4gVGhpcyBpc1xuICogdGhlIHN5bmNocm9ub3VzIHR3aW4gc3VjaCBhIGNhbGxlciBjYW4gdXNlIGluc3RlYWQuXG4gKlxuICogVGhlIGFuc3dlciBpcyBgbnVsbGAgd2hlbiBpdCBpcyBub3Qga25vd2FibGUgc3luY2hyb25vdXNseSBcdTIwMTQgdGhhdCBpcywgd2hlbiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHB1Ymxpc2hlc1xuICogaXRzIGF0dGFjaG1lbnQtcGF0aCBBUEkgYW5kIHRoZXJlZm9yZSBvd25zIHRoZSByZXNvbHV0aW9uLCB3aGljaCBpcyBnZW51aW5lbHkgYXN5bmNocm9ub3VzLiBgbnVsbGAgbWVhbnMgXCJhc2sge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofVwiLCBuZXZlciBcInRoZXJlIGlzIG5vIGF0dGFjaG1lbnRcbiAqIGZvbGRlclwiLiBPdGhlcndpc2UgdGhlIGFuc3dlciBpcyBleGFjdCByYXRoZXIgdGhhbiBhIGd1ZXNzOiBpdCBpcyBwcm9kdWNlZCBieSB0aGUgdmVyeSBzYW1lIGNvZGVcbiAqIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0gcnVucywgd2hvc2Ugb25seSBhc3luY2hyb25vdXMgc3RlcCBcdTIwMTQgY3JlYXRpbmcgYSBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIFx1MjAxNFxuICogaXMgdW5yZWFjaGFibGUgb24gdGhpcyBwYXRoLlxuICpcbiAqIFRoZXJlIGlzIGRlbGliZXJhdGVseSBubyBgY29udGV4dGAgcGFyYW1ldGVyOiB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0fSBvbmx5IGV2ZXIgcmVhY2hlcyB0aGF0IHBsdWdpbidzXG4gKiByZXNvbHZlciwgYW5kIHRoaXMgZnVuY3Rpb24gYW5zd2VycyBgbnVsbGAgd2hlbmV2ZXIgaXQgaXMgcHVibGlzaGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggc3luYyBvciBudWxsIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGgsIG9yIGBudWxsYCB3aGVuIGl0IGNhbiBvbmx5IGJlIHJlc29sdmVkIGFzeW5jaHJvbm91c2x5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsKHBhcmFtczogR2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcblxuICByZXR1cm4gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpXG4gICAgPyBudWxsXG4gICAgOiBwYXJlbnRGb2xkZXJQYXRoKGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMoe1xuICAgICAgYXBwLFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgLy8gTWF0ZXJpYWxpemluZyBhIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgaXMgdGhlIE9ORSBnZW51aW5lbHkgYXN5bmNocm9ub3VzIHN0ZXAgaW4gdGhpcyBmdW5jdGlvbi5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGxpdmVzIGluIHRoZSBzeW5jaHJvbm91cyBjb3JlLCB3aGljaCB0aGUgc3luY2hyb25vdXMgZW50cnkgcG9pbnRzIHJldXNlIHZlcmJhdGltLlxuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIoeyBhcHAsIG5vdGVQYXRoT3JGaWxlIH0pO1xuICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIuZm9sZGVyICYmIGF0dGFjaG1lbnRGb2xkZXIucmVsYXRpdmVQYXRoICYmICFzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbikge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlci5wYXRoKTtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtcyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGF0dGFjaG1lbnQtdW5pdC1mb2xkZXIgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgdGhyb3VnaCBpdHMgcGx1Z2luIEFQSS5cbiAqXG4gKiBUaGUgZGVzaWduYXRpb24gaXMgb25lIHBsdWdpbidzIHNldHRpbmcgYnV0IGV2ZXJ5IHJlbG9jYXRpbmcgcGx1Z2luJ3MgYnVzaW5lc3MsIHNvIGl0IGlzIHJlYWQgZnJvbSB0aGUgc2FtZVxuICogQVBJIHRoYXQgYW5zd2VycyB0aGUgYXR0YWNobWVudCBwYXRoIGl0c2VsZi4gUmVhZGluZyBpdCBoZXJlIHJhdGhlciB0aGFuIGhhdmluZyBlYWNoIGNhbGxlciBsb29rIGZvciB0aGVcbiAqIHBsdWdpbiBpcyB0aGUgcG9pbnQgXHUyMDE0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIHBsdWdpbiBhbmQgdG9ybiBhcGFydCBieSBhbm90aGVyIGlzIGV4YWN0bHkgdGhlIGZhaWx1cmVcbiAqIGBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoYCBleGlzdHMgdG8gcHJldmVudC5cbiAqXG4gKiBgdW5kZWZpbmVkYCBtZWFucyBub2JvZHkgcHVibGlzaGVkIGEgZGVzaWduYXRpb24sIHRoZSBzYW1lIFwibm9ib2R5IG93bnMgdGhpcyBwb2xpY3lcIiBhbnN3ZXIgdGhhdCBzZW5kc1xuICoge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0gdG8gT2JzaWRpYW4ncyBvd24gcmVzb2x1dGlvbi4gSXQgaXMgZGlzdGluY3QgZnJvbSBhIGRlc2lnbmF0aW9uIHRoYXQgYW5zd2Vyc1xuICogYGZhbHNlYCBmb3IgZXZlcnkgZm9sZGVyLlxuICpcbiAqIFRoZSByZWdpc3RyeSBpcyBsb29rZWQgdXAgb25jZSwgd2hlbiB0aGlzIGlzIGNhbGxlZCwgc28gYSBjYWxsZXIgd2Fsa2luZyBhIGZvbGRlcidzIGFuY2VzdG9ycyBhc2tzIHRoZSBzYW1lXG4gKiBBUEkgYWxsIHRoZSB3YXkgdXAuXG4gKlxuICogQHBhcmFtIF9hcHAgLSBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS4gVW51c2VkIHNpbmNlIHRoZSBhbnN3ZXIgY29tZXMgZnJvbSB0aGUgcGx1Z2luIEFQSSByZWdpc3RyeTtcbiAqICAga2VwdCBzbyBleGlzdGluZyBjYWxsZXJzIGNvbXBpbGUgdW5jaGFuZ2VkLlxuICogQHJldHVybnMgVGhlIGRlc2lnbmF0aW9uIHByZWRpY2F0ZSwgb3IgYHVuZGVmaW5lZGAgd2hlbiBub2JvZHkgcHVibGlzaGVkIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKF9hcHA6IEFwcCk6ICgoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSA9IGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKTtcbiAgcmV0dXJuIGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaVxuICAgID8gKGZvbGRlclBhdGg6IHN0cmluZyk6IGJvb2xlYW4gPT4gY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpLmlzQXR0YWNobWVudFVuaXRGb2xkZXIoeyBmb2xkZXJQYXRoIH0pXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBub3RlJ3MgYXR0YWNobWVudCBmb2xkZXIgaXMgc3BlY2lmaWMgdG8gdGhhdCBub3RlIHJhdGhlciB0aGFuIHNoYXJlZCB3aXRoIGl0cyBzaWJsaW5ncy5cbiAqXG4gKiBUaGUgYW5zd2VyIGlzIGRlcml2ZWQgYnkgY29tcGFyaW5nIHRoZSBub3RlJ3MgYXR0YWNobWVudCBmb2xkZXIgd2l0aCB0aGUgb25lIGEgc2FtZS1mb2xkZXIgc2libGluZyBub3RlXG4gKiB3b3VsZCBnZXQ6IHRoZXkgZGlmZmVyIG9ubHkgd2hlbiB0aGUgZm9sZGVyIGRlcGVuZHMgb24gdGhlIG5vdGUncyBOQU1FLiBFdmVyeSBidWlsdC1pblxuICogYGF0dGFjaG1lbnRGb2xkZXJQYXRoYCBtb2RlIFx1MjAxNCB0aGUgdmF1bHQgcm9vdCwgYSBmaXhlZCBmb2xkZXIsIHRoZSBub3RlJ3Mgb3duIGZvbGRlciAoYC4vYCksIGEgc3ViZm9sZGVyIG9mXG4gKiB0aGUgbm90ZSdzIGZvbGRlciAoYC4vc3ViYCkgXHUyMDE0IGlzIHNoYXJlZCBieSBldmVyeSBub3RlIGluIHRoYXQgZm9sZGVyLCBzbyBpdCBhbnN3ZXJzIGBmYWxzZWA7IGB0cnVlYCBhcmlzZXNcbiAqIGZyb20gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCdzIHJlc29sdmVyIGRlcml2aW5nIHRoZSBmb2xkZXIgZnJvbSB0aGUgbm90ZSdzIG5hbWUuXG4gKlxuICogVGhpcyBpcyB0aGUgZGlzdGluY3Rpb24gYSBjYWxsZXIgbmVlZHMgYmVmb3JlIHN3ZWVwaW5nIGFuIGF0dGFjaG1lbnQgZm9sZGVyIHdob2xlc2FsZTogb25seSBhXG4gKiBub3RlLXNwZWNpZmljIGZvbGRlciBjYW4gYmUgdHJlYXRlZCBhcyBiZWxvbmdpbmcgdG8gdGhlIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBoYXMgb3duIGF0dGFjaG1lbnQgZm9sZGVyIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBub3RlIGhhcyBpdHMgb3duIGF0dGFjaG1lbnQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzT3duQXR0YWNobWVudEZvbGRlcihwYXJhbXM6IEhhc093bkF0dGFjaG1lbnRGb2xkZXJQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZTogcGF0aFxuICB9KTtcbiAgY29uc3QgZHVtbXlBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZTogam9pbihkaXJuYW1lKHBhdGgpLCBgJHtEVU1NWV9QQVRIfS4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApXG4gIH0pO1xuICByZXR1cm4gYXR0YWNobWVudEZvbGRlclBhdGggIT09IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGg7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gYXR0YWNobWVudCBhbHJlYWR5IHNpdHMgYXQgaXRzIHByb3BlciBhdHRhY2htZW50IHBhdGguXG4gKlxuICogUmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgYXR0YWNobWVudCdzIGN1cnJlbnQgcGF0aCBpcywgd2l0aGluIGl0cyBwcm9wZXIgYXR0YWNobWVudCBmb2xkZXIsIGVpdGhlciB0aGUgcHJvcGVyXG4gKiBiYXNlIG5hbWUgb3IgdGhlIHByb3BlciBiYXNlIG5hbWUgcGx1cyBhbiBPYnNpZGlhbiBkZWR1cGxpY2F0aW9uIHN1ZmZpeCAoYSBzcGFjZSBmb2xsb3dlZCBieSBkaWdpdHMsIGUuZy5cbiAqIGBpbWcgMWApIHdpdGggdGhlIHNhbWUgZXh0ZW5zaW9uLiBUaGUgcHJvcGVyIHBhdGggaXMgY29tcHV0ZWQgdmlhIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9IHdpdGhcbiAqIHtAbGluayBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMuc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrfSBzZXQgdG8gYHRydWVgICh0aGUgdGFyZ2V0IGJlZm9yZSBhbnlcbiAqIGRlZHVwbGljYXRpb24gc3VmZml4KSwgYW5kIHRoZSBjb21wYXJpc29uIHJlc3BlY3RzIHRoZSBmaWxlIHN5c3RlbSBjYXNlLXNlbnNpdGl2aXR5IGZsYWdcbiAqIChgZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlYCkgdGhhdCBgZ2V0U2FmZVJlbmFtZVBhdGhgIHVzZXMuXG4gKlxuICogVGhpcyBsZXRzIGEgY2FsbGVyIHJlY29nbml6ZSBhIGRlZHVwbGljYXRpb24tcGFya2VkIGF0dGFjaG1lbnQgYXMgYWxyZWFkeS1jb2xsZWN0ZWQsIHNvIGEgXCJuZWVkcyBtb3ZlP1wiXG4gKiBkZWNpc2lvbiBtYWRlIGFnYWluc3QgdGhlIGRlZHVwbGljYXRpb24tZnJlZSBwcm9wZXIgcGF0aCBjb252ZXJnZXMgaW5zdGVhZCBvZiByZS1zY2hlZHVsaW5nIHRoZSBmaWxlIGZvcmV2ZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBpcyBhdCBwcm9wZXIgYXR0YWNobWVudCBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBgdHJ1ZWAgd2hlbiB0aGUgYXR0YWNobWVudCBpcyBhbHJlYWR5IGF0IGl0cyBwcm9wZXIgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aChwYXJhbXM6IElzQXRQcm9wZXJBdHRhY2htZW50UGF0aFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGN1cnJlbnRQYXRoID0gZ2V0UGF0aChhcHAsIGF0dGFjaG1lbnRQYXRoT3JGaWxlKTtcbiAgY29uc3QgcHJvcGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICB9KTtcblxuICBjb25zdCBpc0luc2Vuc2l0aXZlID0gZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlO1xuXG4gIGZ1bmN0aW9uIGZvbGQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzSW5zZW5zaXRpdmUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZm9sZChkaXJuYW1lKGN1cnJlbnRQYXRoKSkgIT09IGZvbGQoZGlybmFtZShwcm9wZXJQYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjdXJyZW50RXh0ZW5zaW9uID0gZXh0bmFtZShjdXJyZW50UGF0aCk7XG4gIGNvbnN0IHByb3BlckV4dGVuc2lvbiA9IGV4dG5hbWUocHJvcGVyUGF0aCk7XG4gIGlmIChmb2xkKGN1cnJlbnRFeHRlbnNpb24pICE9PSBmb2xkKHByb3BlckV4dGVuc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjdXJyZW50QmFzZU5hbWUgPSBiYXNlbmFtZShjdXJyZW50UGF0aCwgY3VycmVudEV4dGVuc2lvbik7XG4gIGNvbnN0IHByb3BlckJhc2VOYW1lID0gYmFzZW5hbWUocHJvcGVyUGF0aCwgcHJvcGVyRXh0ZW5zaW9uKTtcblxuICBpZiAoZm9sZChjdXJyZW50QmFzZU5hbWUpID09PSBmb2xkKHByb3BlckJhc2VOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgZGVkdXBsaWNhdGlvblByZWZpeCA9IGAke3Byb3BlckJhc2VOYW1lfSBgO1xuICBpZiAoIWZvbGQoY3VycmVudEJhc2VOYW1lKS5zdGFydHNXaXRoKGZvbGQoZGVkdXBsaWNhdGlvblByZWZpeCkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGVkdXBsaWNhdGlvblN1ZmZpeCA9IGN1cnJlbnRCYXNlTmFtZS5zbGljZShkZWR1cGxpY2F0aW9uUHJlZml4Lmxlbmd0aCk7XG4gIHJldHVybiAvXlxcZCskLy50ZXN0KGRlZHVwbGljYXRpb25TdWZmaXgpO1xufVxuXG4vKipcbiAqIEZpbmRzIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyBhdHRhY2htZW50LXBhdGggQVBJIGluIHRoZSBwbHVnaW4gQVBJIHJlZ2lzdHJ5LiBJdHMgcHJlc2VuY2UgaXMgdGhlXG4gKiBzeW5jaHJvbm91cyBwcm9iZSBmb3IgXCJzb21lYm9keSBlbHNlIG93bnMgdGhlIHJlc29sdXRpb25cIi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiB0aGF0IHBsdWdpbiBwdWJsaXNoZXMgbm8gcmVjb3JkIHNhdGlzZnlpbmcgdGhlIHJhbmdlIGFuZCBjb250cmFjdC5cbiAqL1xuZnVuY3Rpb24gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB8IG51bGwge1xuICByZXR1cm4gZmluZFBsdWdpbkFwaTxDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaT4oe1xuICAgIGFwaVZlcnNpb25SYW5nZTogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9WRVJTSU9OX1JBTkdFLFxuICAgIGNvbnRyYWN0OiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX0NPTlRSQUNULFxuICAgIHBsdWdpbklkOiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9QTFVHSU5fSURcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0sIHJlYWNoZWQgd2hlbiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHB1Ymxpc2hlcyBub1xuICogYXR0YWNobWVudC1wYXRoIEFQSS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBzeW5jIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luYyhwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmNQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG5cbiAgcmV0dXJuIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmMoe1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c30sIHdoaWNoIGNhbm5vdCBjcmVhdGUgYSBtaXNzaW5nIGF0dGFjaG1lbnRcbiAqIGZvbGRlci4gSXRzIGNhbGxlciBjcmVhdGVzIHRoZSBmb2xkZXIgZmlyc3Qgd2hlbiB0aGF0IGlzIHdhbnRlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbixcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHsgYXBwLCBub3RlUGF0aE9yRmlsZSB9KTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IG5vcm1hbGl6ZVN0cmluZyhub3JtYWxpemVTbGFzaGVzKHBhcmFtcy5hdHRhY2htZW50RmlsZUJhc2VOYW1lKSk7XG5cbiAgLy8gQSBmb2xkZXIgdGhhdCBkb2VzIG5vdCBleGlzdCB5ZXQgc3RpbGwgb3ducyB0aGUgYXR0YWNobWVudCBwYXRoLlxuICAvLyBSZXNvbHZpbmcgaXQgYXMgYSBub24tZXhpc3RpbmcgZm9sZGVyIHN0b3BzIHRoZSBhbnN3ZXIgZnJvbSBjb2xsYXBzaW5nIHRvIHRoZSB2YXVsdCByb290LlxuICBjb25zdCBmb2xkZXIgPSBhdHRhY2htZW50Rm9sZGVyLmZvbGRlciA/PyBnZXRGb2xkZXIoeyBhcHAsIHBhdGhPckZvbGRlcjogYXR0YWNobWVudEZvbGRlci5wYXRoLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG5cbiAgY29uc3QgcHJlZml4ID0gZm9sZGVyLmdldFBhcmVudFByZWZpeCgpO1xuICByZXR1cm4gc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgPyBtYWtlRmlsZU5hbWUoe1xuICAgICAgZmlsZUJhc2VOYW1lOiBwcmVmaXggKyBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgICAgZmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb25cbiAgICB9KVxuICAgIDogYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgocHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZm9sZGVyUGF0aCcpID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RhdHModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBGaWxlU3RhdHMge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICYmIHZhbHVlICE9PSBudWxsXG4gICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnY3RpbWUnKSA9PT0gJ251bWJlcidcbiAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdtdGltZScpID09PSAnbnVtYmVyJ1xuICAgICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ3NpemUnKSA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXMge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQoa2V5OiBrZXlvZiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKTogdW5rbm93biB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHZhbHVlIGFzIG9iamVjdCwga2V5KTtcbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlU3RhdHMgPSByZWFkKCdhdHRhY2htZW50RmlsZVN0YXRzJyk7XG4gIGNvbnN0IGNvbnRleHQgPSByZWFkKCdjb250ZXh0Jyk7XG4gIGNvbnN0IG5vdGVQYXRoT3JGaWxlID0gcmVhZCgnbm90ZVBhdGhPckZpbGUnKTtcbiAgY29uc3Qgb2xkTm90ZVBhdGhPckZpbGUgPSByZWFkKCdvbGROb3RlUGF0aE9yRmlsZScpO1xuICBjb25zdCByZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID0gcmVhZCgncmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCcpO1xuICByZXR1cm4gdHlwZW9mIHJlYWQoJ2F0dGFjaG1lbnRGaWxlQmFzZU5hbWUnKSA9PT0gJ3N0cmluZydcbiAgICAmJiB0eXBlb2YgcmVhZCgnYXR0YWNobWVudEZpbGVFeHRlbnNpb24nKSA9PT0gJ3N0cmluZydcbiAgICAmJiAoYXR0YWNobWVudEZpbGVTdGF0cyA9PT0gdW5kZWZpbmVkIHx8IGlzRmlsZVN0YXRzKGF0dGFjaG1lbnRGaWxlU3RhdHMpKVxuICAgICYmIE9iamVjdC52YWx1ZXMoQXR0YWNobWVudFBhdGhDb250ZXh0KS5pbmNsdWRlcyhjb250ZXh0KVxuICAgICYmIChub3RlUGF0aE9yRmlsZSA9PT0gbnVsbCB8fCBpc1BhdGhPckZpbGUobm90ZVBhdGhPckZpbGUpKVxuICAgICYmIGlzUGF0aE9yRmlsZShyZWFkKCdvbGRBdHRhY2htZW50UGF0aE9yRmlsZScpKVxuICAgICYmIChvbGROb3RlUGF0aE9yRmlsZSA9PT0gdW5kZWZpbmVkIHx8IGlzUGF0aE9yRmlsZShvbGROb3RlUGF0aE9yRmlsZSkpXG4gICAgJiYgKHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQgPT09IG51bGwgfHwgdHlwZW9mIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQgPT09ICdmdW5jdGlvbicpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrJykpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcEdlbmVyYXRlZEF0dGFjaG1lbnRGaWxlTmFtZScpKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uJykpO1xufVxuZnVuY3Rpb24gaXNPcHRpb25hbEJvb2xlYW4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgaXNCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCBieSBjb21iaW5pbmcgbXVsdGlwbGUgc2xhc2hlcyBpbnRvIGEgc2luZ2xlIHNsYXNoIGFuZCByZW1vdmluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBwYXRoLFxuICAgIHJlcGxhY2VyOiAnLycsXG4gICAgc2VhcmNoVmFsdWU6IC8oPzpbXFxcXC9dKSsvZ1xuICB9KTtcbiAgcGF0aCA9IHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHBhdGgsXG4gICAgcmVwbGFjZXI6ICcnLFxuICAgIHNlYXJjaFZhbHVlOiAvXlxcLyt8XFwvKyQvZ1xuICB9KTtcbiAgcmV0dXJuIHBhdGggfHwgJy8nO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBgYXR0YWNobWVudEZvbGRlclBhdGhgIHNldHRpbmcgYWdhaW5zdCBhIG5vdGUgaW50byBhIGNvbmNyZXRlIGF0dGFjaG1lbnQgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgcmVzb2x2ZSBhdHRhY2htZW50IGZvbGRlciBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhdHRhY2htZW50IGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIocGFyYW1zOiBSZXNvbHZlQXR0YWNobWVudEZvbGRlclBhcmFtcyk6IFJlc29sdmVBdHRhY2htZW50Rm9sZGVyUmVzdWx0IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBsZXQgYXR0YWNobWVudEZvbGRlclBhdGggPSBhcHAudmF1bHQuZ2V0Q29uZmlnKCdhdHRhY2htZW50Rm9sZGVyUGF0aCcpIGFzIHN0cmluZztcbiAgY29uc3QgaXNDdXJyZW50Rm9sZGVyID0gYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuJyB8fCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4vJztcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gYXR0YWNobWVudEZvbGRlclBhdGguc3RhcnRzV2l0aCgnLi8nKVxuICAgID8gdHJpbVN0YXJ0KHtcbiAgICAgICRzdHJpbmc6IGF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICAgICAgcHJlZml4OiAnLi8nXG4gICAgfSlcbiAgICA6IG51bGw7XG5cbiAgLy8gQSBub3RlIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IChhIHJlbmFtZSB0YXJnZXQsIGEgZHVtbXkgc2libGluZykgc3RpbGwgYmVsb25ncyB0byBpdHMgb3duIGZvbGRlci5cbiAgLy8gTWF0ZXJpYWxpemluZyBpdCBmcm9tIGl0cyBwYXRoIGtlZXBzIHRoYXQgZm9sZGVyLCB3aGVyZSBhIHZhdWx0IGxvb2t1cCB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIHJvb3QuXG4gIC8vIE9ubHkgYW4gZXhwbGljaXRseSBub3RlLWxlc3MgYXR0YWNobWVudCByZXNvbHZlcyB0byB0aGUgdmF1bHQgcm9vdC5cbiAgY29uc3Qgbm90ZUZpbGVPck51bGwgPSBub3RlUGF0aE9yRmlsZSA9PT0gbnVsbFxuICAgID8gbnVsbFxuICAgIDogZ2V0RmlsZSh7XG4gICAgICBhcHAsXG4gICAgICBwYXRoT3JGaWxlOiBub3RlUGF0aE9yRmlsZSxcbiAgICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gIGlmIChpc0N1cnJlbnRGb2xkZXIpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5wYXRoID8/ICcnIDogJyc7XG4gIH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSAobm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LmdldFBhcmVudFByZWZpeCgpID8/ICcnIDogJycpICsgcmVsYXRpdmVQYXRoO1xuICB9XG5cbiAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3JtYWxpemVTdHJpbmcobm9ybWFsaXplU2xhc2hlcyhhdHRhY2htZW50Rm9sZGVyUGF0aCkpO1xuXG4gIHJldHVybiB7XG4gICAgZm9sZGVyOiBnZXRGb2xkZXJPck51bGwoeyBhcHAsIGlzQ2FzZUluc2Vuc2l0aXZlOiB0cnVlLCBwYXRoT3JGb2xkZXI6IGF0dGFjaG1lbnRGb2xkZXJQYXRoIH0pLFxuICAgIHBhdGg6IGF0dGFjaG1l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
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRhY2htZW50LXBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwaUNvbnRyYWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQXJndW1lbnRzU2NoZW1hLFxuICBjcmVhdGVUeXBlR3VhcmRTY2hlbWFcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZVN0cmluZyxcbiAgcmVwbGFjZUFsbCxcbiAgdHJpbVN0YXJ0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHtcbiAgZ2V0RGF0YUFkYXB0ZXJFeCxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNQYXRoT3JGaWxlLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGZpbmRQbHVnaW5BcGkgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXRzPzogRmlsZVN0YXRzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBMYXppbHkgcmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICpcbiAgICogVGhlIGNvbnRlbnQgaXMgcmVhZCBvbiBkZW1hbmQgb25seSB3aGVuIGEgY29uc3VtZXIgYWN0dWFsbHkgbmVlZHMgdGhlIGJ5dGVzIChlLmcuIGEgdGVtcGxhdGVcbiAgICogdG9rZW4gdGhhdCBlbWJlZHMgdGhlbSkuIEZvciB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgbm90aGluZyBwdWxscyB0aGUgYnl0ZXMsIHNvIHRoZSBwb3RlbnRpYWxseVxuICAgKiBleHBlbnNpdmUgKHNpemUtcHJvcG9ydGlvbmFsKSBgcmVhZEJpbmFyeWAgbmV2ZXIgcnVucy4gQ29uc3VtZXJzIHRoYXQgbWF5IGNhbGwgdGhpcyBtb3JlIHRoYW5cbiAgICogb25jZSBzaG91bGQgbWVtb2l6ZSB0aGUgZmlyc3QgY2FsbC4gYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gYXR0YWNobWVudCBmaWxlIHRvIHJlYWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6ICgoKSA9PiBQcm9taXNlPEFycmF5QnVmZmVyPikgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBnZW5lcmF0ZWQgYXR0YWNobWVudCBmaWxlIG5hbWUgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIHNsaWNlIG9mIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyByZWdpc3RyeSBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIGRlY2xhcmVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQ6XG4gKiB0aGF0IHBsdWdpbiBzaGlwcyBpdHMgc3VyZmFjZSBhcyBhIGhhbmQtd3JpdHRlbiBgYXBpLmQudHNgLCBub3QgYXMgYSBwYWNrYWdlIChzZWUgcnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuXG4gKi9cbmludGVyZmFjZSBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgZnVsbCBhdHRhY2htZW50LXBhdGggcmVzb2x2ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2FtZSBmaWVsZHMgYXMge0BsaW5rIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXN9LCB3aGljaCB0aGVcbiAgICogICBwbHVnaW4gZGVjbGFyZXMgZmllbGQgZm9yIGZpZWxkLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdHRhY2htZW50J3MgcGF0aCBmcm9tIHRoZSB2YXVsdCByb290LlxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzOiAocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgZGVzaWduYXRlZCBhIGZvbGRlciBhbiBhdHRhY2htZW50IHVuaXQgZm9sZGVyLiBTeW5jaHJvbm91cyBvbiBwdXJwb3NlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZm9sZGVyIGlzIGRlc2lnbmF0ZWQuXG4gICAqL1xuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAocGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaS5pc0F0dGFjaG1lbnRVbml0Rm9sZGVyfS5cbiAqL1xuaW50ZXJmYWNlIEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciwgYXMgYSB2YXVsdC1yZWxhdGl2ZSBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwbHVnaW4gaWQgYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgaXRzIEFQSSB1bmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX1BMVUdJTl9JRCA9ICdvYnNpZGlhbi1jdXN0b20tYXR0YWNobWVudC1sb2NhdGlvbic7XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IHZlcnNpb25zIG9mIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyBBUEkgdGhpcyBtb2R1bGUgY29tcGlsZWQgYWdhaW5zdC4gYDEuMy4wYCBpcyB0aGUgZmlyc3RcbiAqIHRvIGNhcnJ5IHRoZSB0d28gYXR0YWNobWVudC1wYXRoIG1ldGhvZHMuXG4gKi9cbmNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfVkVSU0lPTl9SQU5HRSA9ICdeMS4zLjAnO1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCBvZiB0aGUgbWVtYmVycyBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBzbyBhIHJlY29yZCB0aGF0IGxhY2tzXG4gKiBlaXRoZXIgaXMgcGFzc2VkIG92ZXIsIGFuZCBhIHBheWxvYWQgdGhhdCBicmVha3MgaXRzIHNpZ25hdHVyZSBpcyByZXBvcnRlZCB3aGlsZSB0aGUgYFBsdWdpbkFwaWAgZGVidWdnZXIgaXMgb24uXG4gKlxuICogQSBjb3B5IG9mIHRob3NlIHR3byBlbnRyaWVzIG9mIGBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BUElfQ09OVFJBQ1RgLCB3aGljaCBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHNoaXBzIGFzIGl0cyByb290IGBhcGktY29udHJhY3QudHNgXG4gKiBhbmQgcHVibGlzaGVzLiBLZWVwIHRoZSBndWFyZHMgaW4gYWdyZWVtZW50IHdpdGggdGhhdCBmaWxlLCBzbyB0aGUgcHJvdmlkZXIgYW5kIHRoaXMgY29uc3VtZXIgY2hlY2sgb25lIGRlZmluaXRpb24uXG4gKi9cbmNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfQ09OVFJBQ1Q6IEFwaUNvbnRyYWN0PEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkF0dGFjaG1lbnRQYXRoQXBpPiA9IHtcbiAgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYXZhaWxhYmxlLXBhdGgtZm9yLWF0dGFjaG1lbnRzIHBhcmFtcycsXG4gICAgICB0eXBlR3VhcmQ6IGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtc1xuICAgIH1dKSxcbiAgICBvdXRwdXQ6IGNyZWF0ZVR5cGVHdWFyZFNjaGVtYSh7IGV4cGVjdGVkOiAnYW4gYXR0YWNobWVudCBwYXRoJywgdHlwZUd1YXJkOiBpc1N0cmluZyB9KVxuICB9LFxuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYXR0YWNobWVudC11bml0LWZvbGRlciBwYXJhbXM6IHsgZm9sZGVyUGF0aDogc3RyaW5nIH0nLFxuICAgICAgdHlwZUd1YXJkOiBpc0N1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXNcbiAgICB9XSksXG4gICAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2EgYm9vbGVhbicsIHR5cGVHdWFyZDogaXNCb29sZWFuIH0pXG4gIH1cbn07XG5cbi8qKlxuICogRHVtbXkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IERVTU1ZX1BBVEggPSAnX19EVU1NWV9fJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0QXR0YWNobWVudEZpbGVQYXRoIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBvbGQgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZE5vdGVQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogU2hvdWxkIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBoYXNPd25BdHRhY2htZW50Rm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNPd25BdHRhY2htZW50Rm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNBdFByb3BlckF0dGFjaG1lbnRQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBhdHRhY2htZW50IHRvIGNoZWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd259XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlIHRoYXQgcmVmZXJlbmNlcyB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jfS5cbiAqL1xuaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jfS5cbiAqL1xuaW50ZXJmYWNlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBiYXNlIG5hbWUgb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlQXR0YWNobWVudEZvbGRlcn0uXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlQXR0YWNobWVudEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFRoZSBhdHRhY2htZW50IGZvbGRlciBhIG5vdGUgcmVzb2x2ZXMgdG8sIGJlZm9yZSB0aGUgYXR0YWNobWVudCBmaWxlIG5hbWUgaXMgYXBwZW5kZWQuXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlQXR0YWNobWVudEZvbGRlclJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgYXR0YWNobWVudCBmb2xkZXIsIG9yIGBudWxsYCB3aGVuIGl0IGRvZXMgbm90IGV4aXN0IGluIHRoZSB2YXVsdCB5ZXQuXG4gICAqL1xuICByZWFkb25seSBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbm9ybWFsaXplZCBhdHRhY2htZW50IGZvbGRlciBwYXRoLCB3aGV0aGVyIG9yIG5vdCB0aGUgZm9sZGVyIGV4aXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnQgb2YgdGhlIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgc2V0dGluZyB0aGF0IGZvbGxvd3MgYC4vYCwgb3IgYG51bGxgIHdoZW4gdGhlIHNldHRpbmcgaXMgbm90XG4gICAqIHJlbGF0aXZlIHRvIHRoZSBub3RlLiBPbmx5IGEgcmVsYXRpdmUgc2V0dGluZyBtYXkgaGF2ZSBpdHMgbWlzc2luZyBmb2xkZXIgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aDogbnVsbCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgcGF0aCBmb3IgYW4gYXR0YWNobWVudCB3aXRoaW4gYSBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZmlsZSBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoKHBhcmFtczogR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkgPSBmaW5kQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKCk7XG4gIGlmICghY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKSB7XG4gICAgLy8gTm9ib2R5IG92ZXJyaWRlcyB0aGUgcmVzb2x1dGlvbiwgc28gaXQgaXMgZW50aXJlbHkgc3luY2hyb25vdXMuXG4gICAgLy8gVGhlIHNhbWUgY29yZSBhbnN3ZXJzIGBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGxgLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSB0d28gaW4gc3RlcC5cbiAgICByZXR1cm4gZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luYyh7XG4gICAgICBhcHAsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xuICBjb25zdCBhdHRhY2htZW50RmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoIH0pO1xuXG4gIHJldHVybiBhd2FpdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHtcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBhdHRhY2htZW50RmlsZVN0YXRzOiBhdHRhY2htZW50RmlsZT8uc3RhdCxcbiAgICBjb250ZXh0OiBwYXJhbXMuY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBvbGROb3RlUGF0aE9yRmlsZTogcGFyYW1zLm9sZE5vdGVQYXRoT3JGaWxlLFxuICAgIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6IGF0dGFjaG1lbnRGaWxlID8gKCk6IFByb21pc2U8QXJyYXlCdWZmZXI+ID0+IGFwcC52YXVsdC5yZWFkQmluYXJ5KGF0dGFjaG1lbnRGaWxlKSA6IG51bGwsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmb3IgYSBnaXZlbiBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGgocGFyYW1zOiBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiBwYXJlbnRGb2xkZXJQYXRoKFxuICAgIGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgICBhcHAsXG4gICAgICBjb250ZXh0LFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUgKipzeW5jaHJvbm91c2x5KiosIHdoZW4gdGhhdCBpcyBwb3NzaWJsZSBhdCBhbGwuXG4gKlxuICogT2JzaWRpYW4gYnVpbGRzIGl0cyBmaWxlL2ZvbGRlciBjb250ZXh0IG1lbnVzIGFuZCBldmFsdWF0ZXMgYSBjb21tYW5kJ3MgYGNoZWNrQ2FsbGJhY2tgIHN5bmNocm9ub3VzbHksIHNvIGFcbiAqIGNhbGxlciBkZWNpZGluZyB3aGV0aGVyIHRvIG1lcmVseSAqb2ZmZXIqIGEgY29tbWFuZCBjYW5ub3QgYXdhaXQge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofS4gVGhpcyBpc1xuICogdGhlIHN5bmNocm9ub3VzIHR3aW4gc3VjaCBhIGNhbGxlciBjYW4gdXNlIGluc3RlYWQuXG4gKlxuICogVGhlIGFuc3dlciBpcyBgbnVsbGAgd2hlbiBpdCBpcyBub3Qga25vd2FibGUgc3luY2hyb25vdXNseSDigJQgdGhhdCBpcywgd2hlbiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHB1Ymxpc2hlc1xuICogaXRzIGF0dGFjaG1lbnQtcGF0aCBBUEkgYW5kIHRoZXJlZm9yZSBvd25zIHRoZSByZXNvbHV0aW9uLCB3aGljaCBpcyBnZW51aW5lbHkgYXN5bmNocm9ub3VzLiBgbnVsbGAgbWVhbnMgXCJhc2sge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofVwiLCBuZXZlciBcInRoZXJlIGlzIG5vIGF0dGFjaG1lbnRcbiAqIGZvbGRlclwiLiBPdGhlcndpc2UgdGhlIGFuc3dlciBpcyBleGFjdCByYXRoZXIgdGhhbiBhIGd1ZXNzOiBpdCBpcyBwcm9kdWNlZCBieSB0aGUgdmVyeSBzYW1lIGNvZGVcbiAqIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0gcnVucywgd2hvc2Ugb25seSBhc3luY2hyb25vdXMgc3RlcCDigJQgY3JlYXRpbmcgYSBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIOKAlFxuICogaXMgdW5yZWFjaGFibGUgb24gdGhpcyBwYXRoLlxuICpcbiAqIFRoZXJlIGlzIGRlbGliZXJhdGVseSBubyBgY29udGV4dGAgcGFyYW1ldGVyOiB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0fSBvbmx5IGV2ZXIgcmVhY2hlcyB0aGF0IHBsdWdpbidzXG4gKiByZXNvbHZlciwgYW5kIHRoaXMgZnVuY3Rpb24gYW5zd2VycyBgbnVsbGAgd2hlbmV2ZXIgaXQgaXMgcHVibGlzaGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggc3luYyBvciBudWxsIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGgsIG9yIGBudWxsYCB3aGVuIGl0IGNhbiBvbmx5IGJlIHJlc29sdmVkIGFzeW5jaHJvbm91c2x5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsKHBhcmFtczogR2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcblxuICByZXR1cm4gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpXG4gICAgPyBudWxsXG4gICAgOiBwYXJlbnRGb2xkZXJQYXRoKGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMoe1xuICAgICAgYXBwLFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgLy8gTWF0ZXJpYWxpemluZyBhIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgaXMgdGhlIE9ORSBnZW51aW5lbHkgYXN5bmNocm9ub3VzIHN0ZXAgaW4gdGhpcyBmdW5jdGlvbi5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGxpdmVzIGluIHRoZSBzeW5jaHJvbm91cyBjb3JlLCB3aGljaCB0aGUgc3luY2hyb25vdXMgZW50cnkgcG9pbnRzIHJldXNlIHZlcmJhdGltLlxuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIoeyBhcHAsIG5vdGVQYXRoT3JGaWxlIH0pO1xuICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIuZm9sZGVyICYmIGF0dGFjaG1lbnRGb2xkZXIucmVsYXRpdmVQYXRoICYmICFzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbikge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlci5wYXRoKTtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtcyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGF0dGFjaG1lbnQtdW5pdC1mb2xkZXIgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgdGhyb3VnaCBpdHMgcGx1Z2luIEFQSS5cbiAqXG4gKiBUaGUgZGVzaWduYXRpb24gaXMgb25lIHBsdWdpbidzIHNldHRpbmcgYnV0IGV2ZXJ5IHJlbG9jYXRpbmcgcGx1Z2luJ3MgYnVzaW5lc3MsIHNvIGl0IGlzIHJlYWQgZnJvbSB0aGUgc2FtZVxuICogQVBJIHRoYXQgYW5zd2VycyB0aGUgYXR0YWNobWVudCBwYXRoIGl0c2VsZi4gUmVhZGluZyBpdCBoZXJlIHJhdGhlciB0aGFuIGhhdmluZyBlYWNoIGNhbGxlciBsb29rIGZvciB0aGVcbiAqIHBsdWdpbiBpcyB0aGUgcG9pbnQg4oCUIGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIHBsdWdpbiBhbmQgdG9ybiBhcGFydCBieSBhbm90aGVyIGlzIGV4YWN0bHkgdGhlIGZhaWx1cmVcbiAqIGBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoYCBleGlzdHMgdG8gcHJldmVudC5cbiAqXG4gKiBgdW5kZWZpbmVkYCBtZWFucyBub2JvZHkgcHVibGlzaGVkIGEgZGVzaWduYXRpb24sIHRoZSBzYW1lIFwibm9ib2R5IG93bnMgdGhpcyBwb2xpY3lcIiBhbnN3ZXIgdGhhdCBzZW5kc1xuICoge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0gdG8gT2JzaWRpYW4ncyBvd24gcmVzb2x1dGlvbi4gSXQgaXMgZGlzdGluY3QgZnJvbSBhIGRlc2lnbmF0aW9uIHRoYXQgYW5zd2Vyc1xuICogYGZhbHNlYCBmb3IgZXZlcnkgZm9sZGVyLlxuICpcbiAqIFRoZSByZWdpc3RyeSBpcyBsb29rZWQgdXAgb25jZSwgd2hlbiB0aGlzIGlzIGNhbGxlZCwgc28gYSBjYWxsZXIgd2Fsa2luZyBhIGZvbGRlcidzIGFuY2VzdG9ycyBhc2tzIHRoZSBzYW1lXG4gKiBBUEkgYWxsIHRoZSB3YXkgdXAuXG4gKlxuICogQHBhcmFtIF9hcHAgLSBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS4gVW51c2VkIHNpbmNlIHRoZSBhbnN3ZXIgY29tZXMgZnJvbSB0aGUgcGx1Z2luIEFQSSByZWdpc3RyeTtcbiAqICAga2VwdCBzbyBleGlzdGluZyBjYWxsZXJzIGNvbXBpbGUgdW5jaGFuZ2VkLlxuICogQHJldHVybnMgVGhlIGRlc2lnbmF0aW9uIHByZWRpY2F0ZSwgb3IgYHVuZGVmaW5lZGAgd2hlbiBub2JvZHkgcHVibGlzaGVkIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKF9hcHA6IEFwcCk6ICgoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSA9IGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKTtcbiAgcmV0dXJuIGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaVxuICAgID8gKGZvbGRlclBhdGg6IHN0cmluZyk6IGJvb2xlYW4gPT4gY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpLmlzQXR0YWNobWVudFVuaXRGb2xkZXIoeyBmb2xkZXJQYXRoIH0pXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBub3RlJ3MgYXR0YWNobWVudCBmb2xkZXIgaXMgc3BlY2lmaWMgdG8gdGhhdCBub3RlIHJhdGhlciB0aGFuIHNoYXJlZCB3aXRoIGl0cyBzaWJsaW5ncy5cbiAqXG4gKiBUaGUgYW5zd2VyIGlzIGRlcml2ZWQgYnkgY29tcGFyaW5nIHRoZSBub3RlJ3MgYXR0YWNobWVudCBmb2xkZXIgd2l0aCB0aGUgb25lIGEgc2FtZS1mb2xkZXIgc2libGluZyBub3RlXG4gKiB3b3VsZCBnZXQ6IHRoZXkgZGlmZmVyIG9ubHkgd2hlbiB0aGUgZm9sZGVyIGRlcGVuZHMgb24gdGhlIG5vdGUncyBOQU1FLiBFdmVyeSBidWlsdC1pblxuICogYGF0dGFjaG1lbnRGb2xkZXJQYXRoYCBtb2RlIOKAlCB0aGUgdmF1bHQgcm9vdCwgYSBmaXhlZCBmb2xkZXIsIHRoZSBub3RlJ3Mgb3duIGZvbGRlciAoYC4vYCksIGEgc3ViZm9sZGVyIG9mXG4gKiB0aGUgbm90ZSdzIGZvbGRlciAoYC4vc3ViYCkg4oCUIGlzIHNoYXJlZCBieSBldmVyeSBub3RlIGluIHRoYXQgZm9sZGVyLCBzbyBpdCBhbnN3ZXJzIGBmYWxzZWA7IGB0cnVlYCBhcmlzZXNcbiAqIGZyb20gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCdzIHJlc29sdmVyIGRlcml2aW5nIHRoZSBmb2xkZXIgZnJvbSB0aGUgbm90ZSdzIG5hbWUuXG4gKlxuICogVGhpcyBpcyB0aGUgZGlzdGluY3Rpb24gYSBjYWxsZXIgbmVlZHMgYmVmb3JlIHN3ZWVwaW5nIGFuIGF0dGFjaG1lbnQgZm9sZGVyIHdob2xlc2FsZTogb25seSBhXG4gKiBub3RlLXNwZWNpZmljIGZvbGRlciBjYW4gYmUgdHJlYXRlZCBhcyBiZWxvbmdpbmcgdG8gdGhlIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBoYXMgb3duIGF0dGFjaG1lbnQgZm9sZGVyIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBub3RlIGhhcyBpdHMgb3duIGF0dGFjaG1lbnQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzT3duQXR0YWNobWVudEZvbGRlcihwYXJhbXM6IEhhc093bkF0dGFjaG1lbnRGb2xkZXJQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZTogcGF0aFxuICB9KTtcbiAgY29uc3QgZHVtbXlBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZTogam9pbihkaXJuYW1lKHBhdGgpLCBgJHtEVU1NWV9QQVRIfS4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApXG4gIH0pO1xuICByZXR1cm4gYXR0YWNobWVudEZvbGRlclBhdGggIT09IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGg7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gYXR0YWNobWVudCBhbHJlYWR5IHNpdHMgYXQgaXRzIHByb3BlciBhdHRhY2htZW50IHBhdGguXG4gKlxuICogUmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgYXR0YWNobWVudCdzIGN1cnJlbnQgcGF0aCBpcywgd2l0aGluIGl0cyBwcm9wZXIgYXR0YWNobWVudCBmb2xkZXIsIGVpdGhlciB0aGUgcHJvcGVyXG4gKiBiYXNlIG5hbWUgb3IgdGhlIHByb3BlciBiYXNlIG5hbWUgcGx1cyBhbiBPYnNpZGlhbiBkZWR1cGxpY2F0aW9uIHN1ZmZpeCAoYSBzcGFjZSBmb2xsb3dlZCBieSBkaWdpdHMsIGUuZy5cbiAqIGBpbWcgMWApIHdpdGggdGhlIHNhbWUgZXh0ZW5zaW9uLiBUaGUgcHJvcGVyIHBhdGggaXMgY29tcHV0ZWQgdmlhIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9IHdpdGhcbiAqIHtAbGluayBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMuc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrfSBzZXQgdG8gYHRydWVgICh0aGUgdGFyZ2V0IGJlZm9yZSBhbnlcbiAqIGRlZHVwbGljYXRpb24gc3VmZml4KSwgYW5kIHRoZSBjb21wYXJpc29uIHJlc3BlY3RzIHRoZSBmaWxlIHN5c3RlbSBjYXNlLXNlbnNpdGl2aXR5IGZsYWdcbiAqIChgZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlYCkgdGhhdCBgZ2V0U2FmZVJlbmFtZVBhdGhgIHVzZXMuXG4gKlxuICogVGhpcyBsZXRzIGEgY2FsbGVyIHJlY29nbml6ZSBhIGRlZHVwbGljYXRpb24tcGFya2VkIGF0dGFjaG1lbnQgYXMgYWxyZWFkeS1jb2xsZWN0ZWQsIHNvIGEgXCJuZWVkcyBtb3ZlP1wiXG4gKiBkZWNpc2lvbiBtYWRlIGFnYWluc3QgdGhlIGRlZHVwbGljYXRpb24tZnJlZSBwcm9wZXIgcGF0aCBjb252ZXJnZXMgaW5zdGVhZCBvZiByZS1zY2hlZHVsaW5nIHRoZSBmaWxlIGZvcmV2ZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBpcyBhdCBwcm9wZXIgYXR0YWNobWVudCBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBgdHJ1ZWAgd2hlbiB0aGUgYXR0YWNobWVudCBpcyBhbHJlYWR5IGF0IGl0cyBwcm9wZXIgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aChwYXJhbXM6IElzQXRQcm9wZXJBdHRhY2htZW50UGF0aFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGN1cnJlbnRQYXRoID0gZ2V0UGF0aChhcHAsIGF0dGFjaG1lbnRQYXRoT3JGaWxlKTtcbiAgY29uc3QgcHJvcGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICB9KTtcblxuICBjb25zdCBpc0luc2Vuc2l0aXZlID0gZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlO1xuXG4gIGZ1bmN0aW9uIGZvbGQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzSW5zZW5zaXRpdmUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZm9sZChkaXJuYW1lKGN1cnJlbnRQYXRoKSkgIT09IGZvbGQoZGlybmFtZShwcm9wZXJQYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjdXJyZW50RXh0ZW5zaW9uID0gZXh0bmFtZShjdXJyZW50UGF0aCk7XG4gIGNvbnN0IHByb3BlckV4dGVuc2lvbiA9IGV4dG5hbWUocHJvcGVyUGF0aCk7XG4gIGlmIChmb2xkKGN1cnJlbnRFeHRlbnNpb24pICE9PSBmb2xkKHByb3BlckV4dGVuc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjdXJyZW50QmFzZU5hbWUgPSBiYXNlbmFtZShjdXJyZW50UGF0aCwgY3VycmVudEV4dGVuc2lvbik7XG4gIGNvbnN0IHByb3BlckJhc2VOYW1lID0gYmFzZW5hbWUocHJvcGVyUGF0aCwgcHJvcGVyRXh0ZW5zaW9uKTtcblxuICBpZiAoZm9sZChjdXJyZW50QmFzZU5hbWUpID09PSBmb2xkKHByb3BlckJhc2VOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgZGVkdXBsaWNhdGlvblByZWZpeCA9IGAke3Byb3BlckJhc2VOYW1lfSBgO1xuICBpZiAoIWZvbGQoY3VycmVudEJhc2VOYW1lKS5zdGFydHNXaXRoKGZvbGQoZGVkdXBsaWNhdGlvblByZWZpeCkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGVkdXBsaWNhdGlvblN1ZmZpeCA9IGN1cnJlbnRCYXNlTmFtZS5zbGljZShkZWR1cGxpY2F0aW9uUHJlZml4Lmxlbmd0aCk7XG4gIHJldHVybiAvXlxcZCskLy50ZXN0KGRlZHVwbGljYXRpb25TdWZmaXgpO1xufVxuXG4vKipcbiAqIEZpbmRzIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyBhdHRhY2htZW50LXBhdGggQVBJIGluIHRoZSBwbHVnaW4gQVBJIHJlZ2lzdHJ5LiBJdHMgcHJlc2VuY2UgaXMgdGhlXG4gKiBzeW5jaHJvbm91cyBwcm9iZSBmb3IgXCJzb21lYm9keSBlbHNlIG93bnMgdGhlIHJlc29sdXRpb25cIi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiB0aGF0IHBsdWdpbiBwdWJsaXNoZXMgbm8gcmVjb3JkIHNhdGlzZnlpbmcgdGhlIHJhbmdlIGFuZCBjb250cmFjdC5cbiAqL1xuZnVuY3Rpb24gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB8IG51bGwge1xuICByZXR1cm4gZmluZFBsdWdpbkFwaTxDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaT4oe1xuICAgIGFwaVZlcnNpb25SYW5nZTogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9WRVJTSU9OX1JBTkdFLFxuICAgIGNvbnRyYWN0OiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX0NPTlRSQUNULFxuICAgIHBsdWdpbklkOiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9QTFVHSU5fSURcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0sIHJlYWNoZWQgd2hlbiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHB1Ymxpc2hlcyBub1xuICogYXR0YWNobWVudC1wYXRoIEFQSS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBzeW5jIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luYyhwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmNQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG5cbiAgcmV0dXJuIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmMoe1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c30sIHdoaWNoIGNhbm5vdCBjcmVhdGUgYSBtaXNzaW5nIGF0dGFjaG1lbnRcbiAqIGZvbGRlci4gSXRzIGNhbGxlciBjcmVhdGVzIHRoZSBmb2xkZXIgZmlyc3Qgd2hlbiB0aGF0IGlzIHdhbnRlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbixcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHsgYXBwLCBub3RlUGF0aE9yRmlsZSB9KTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IG5vcm1hbGl6ZVN0cmluZyhub3JtYWxpemVTbGFzaGVzKHBhcmFtcy5hdHRhY2htZW50RmlsZUJhc2VOYW1lKSk7XG5cbiAgLy8gQSBmb2xkZXIgdGhhdCBkb2VzIG5vdCBleGlzdCB5ZXQgc3RpbGwgb3ducyB0aGUgYXR0YWNobWVudCBwYXRoLlxuICAvLyBSZXNvbHZpbmcgaXQgYXMgYSBub24tZXhpc3RpbmcgZm9sZGVyIHN0b3BzIHRoZSBhbnN3ZXIgZnJvbSBjb2xsYXBzaW5nIHRvIHRoZSB2YXVsdCByb290LlxuICBjb25zdCBmb2xkZXIgPSBhdHRhY2htZW50Rm9sZGVyLmZvbGRlciA/PyBnZXRGb2xkZXIoeyBhcHAsIHBhdGhPckZvbGRlcjogYXR0YWNobWVudEZvbGRlci5wYXRoLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG5cbiAgY29uc3QgcHJlZml4ID0gZm9sZGVyLmdldFBhcmVudFByZWZpeCgpO1xuICByZXR1cm4gc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgPyBtYWtlRmlsZU5hbWUoe1xuICAgICAgZmlsZUJhc2VOYW1lOiBwcmVmaXggKyBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgICAgZmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb25cbiAgICB9KVxuICAgIDogYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgocHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZm9sZGVyUGF0aCcpID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RhdHModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBGaWxlU3RhdHMge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICYmIHZhbHVlICE9PSBudWxsXG4gICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnY3RpbWUnKSA9PT0gJ251bWJlcidcbiAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdtdGltZScpID09PSAnbnVtYmVyJ1xuICAgICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ3NpemUnKSA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXMge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQoa2V5OiBrZXlvZiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKTogdW5rbm93biB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHZhbHVlIGFzIG9iamVjdCwga2V5KTtcbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlU3RhdHMgPSByZWFkKCdhdHRhY2htZW50RmlsZVN0YXRzJyk7XG4gIGNvbnN0IGNvbnRleHQgPSByZWFkKCdjb250ZXh0Jyk7XG4gIGNvbnN0IG5vdGVQYXRoT3JGaWxlID0gcmVhZCgnbm90ZVBhdGhPckZpbGUnKTtcbiAgY29uc3Qgb2xkTm90ZVBhdGhPckZpbGUgPSByZWFkKCdvbGROb3RlUGF0aE9yRmlsZScpO1xuICBjb25zdCByZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID0gcmVhZCgncmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCcpO1xuICByZXR1cm4gdHlwZW9mIHJlYWQoJ2F0dGFjaG1lbnRGaWxlQmFzZU5hbWUnKSA9PT0gJ3N0cmluZydcbiAgICAmJiB0eXBlb2YgcmVhZCgnYXR0YWNobWVudEZpbGVFeHRlbnNpb24nKSA9PT0gJ3N0cmluZydcbiAgICAmJiAoYXR0YWNobWVudEZpbGVTdGF0cyA9PT0gdW5kZWZpbmVkIHx8IGlzRmlsZVN0YXRzKGF0dGFjaG1lbnRGaWxlU3RhdHMpKVxuICAgICYmIE9iamVjdC52YWx1ZXMoQXR0YWNobWVudFBhdGhDb250ZXh0KS5pbmNsdWRlcyhjb250ZXh0KVxuICAgICYmIChub3RlUGF0aE9yRmlsZSA9PT0gbnVsbCB8fCBpc1BhdGhPckZpbGUobm90ZVBhdGhPckZpbGUpKVxuICAgICYmIGlzUGF0aE9yRmlsZShyZWFkKCdvbGRBdHRhY2htZW50UGF0aE9yRmlsZScpKVxuICAgICYmIChvbGROb3RlUGF0aE9yRmlsZSA9PT0gdW5kZWZpbmVkIHx8IGlzUGF0aE9yRmlsZShvbGROb3RlUGF0aE9yRmlsZSkpXG4gICAgJiYgKHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQgPT09IG51bGwgfHwgdHlwZW9mIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQgPT09ICdmdW5jdGlvbicpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrJykpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcEdlbmVyYXRlZEF0dGFjaG1lbnRGaWxlTmFtZScpKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uJykpO1xufVxuZnVuY3Rpb24gaXNPcHRpb25hbEJvb2xlYW4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgaXNCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCBieSBjb21iaW5pbmcgbXVsdGlwbGUgc2xhc2hlcyBpbnRvIGEgc2luZ2xlIHNsYXNoIGFuZCByZW1vdmluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBwYXRoLFxuICAgIHJlcGxhY2VyOiAnLycsXG4gICAgc2VhcmNoVmFsdWU6IC8oPzpbXFxcXC9dKSsvZ1xuICB9KTtcbiAgcGF0aCA9IHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHBhdGgsXG4gICAgcmVwbGFjZXI6ICcnLFxuICAgIHNlYXJjaFZhbHVlOiAvXlxcLyt8XFwvKyQvZ1xuICB9KTtcbiAgcmV0dXJuIHBhdGggfHwgJy8nO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBgYXR0YWNobWVudEZvbGRlclBhdGhgIHNldHRpbmcgYWdhaW5zdCBhIG5vdGUgaW50byBhIGNvbmNyZXRlIGF0dGFjaG1lbnQgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgcmVzb2x2ZSBhdHRhY2htZW50IGZvbGRlciBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhdHRhY2htZW50IGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIocGFyYW1zOiBSZXNvbHZlQXR0YWNobWVudEZvbGRlclBhcmFtcyk6IFJlc29sdmVBdHRhY2htZW50Rm9sZGVyUmVzdWx0IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBsZXQgYXR0YWNobWVudEZvbGRlclBhdGggPSBhcHAudmF1bHQuZ2V0Q29uZmlnKCdhdHRhY2htZW50Rm9sZGVyUGF0aCcpIGFzIHN0cmluZztcbiAgY29uc3QgaXNDdXJyZW50Rm9sZGVyID0gYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuJyB8fCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4vJztcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gYXR0YWNobWVudEZvbGRlclBhdGguc3RhcnRzV2l0aCgnLi8nKVxuICAgID8gdHJpbVN0YXJ0KHtcbiAgICAgICRzdHJpbmc6IGF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICAgICAgcHJlZml4OiAnLi8nXG4gICAgfSlcbiAgICA6IG51bGw7XG5cbiAgLy8gQSBub3RlIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IChhIHJlbmFtZSB0YXJnZXQsIGEgZHVtbXkgc2libGluZykgc3RpbGwgYmVsb25ncyB0byBpdHMgb3duIGZvbGRlci5cbiAgLy8gTWF0ZXJpYWxpemluZyBpdCBmcm9tIGl0cyBwYXRoIGtlZXBzIHRoYXQgZm9sZGVyLCB3aGVyZSBhIHZhdWx0IGxvb2t1cCB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIHJvb3QuXG4gIC8vIE9ubHkgYW4gZXhwbGljaXRseSBub3RlLWxlc3MgYXR0YWNobWVudCByZXNvbHZlcyB0byB0aGUgdmF1bHQgcm9vdC5cbiAgY29uc3Qgbm90ZUZpbGVPck51bGwgPSBub3RlUGF0aE9yRmlsZSA9PT0gbnVsbFxuICAgID8gbnVsbFxuICAgIDogZ2V0RmlsZSh7XG4gICAgICBhcHAsXG4gICAgICBwYXRoT3JGaWxlOiBub3RlUGF0aE9yRmlsZSxcbiAgICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gIGlmIChpc0N1cnJlbnRGb2xkZXIpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5wYXRoID8/ICcnIDogJyc7XG4gIH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSAobm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LmdldFBhcmVudFByZWZpeCgpID8/ICcnIDogJycpICsgcmVsYXRpdmVQYXRoO1xuICB9XG5cbiAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3JtYWxpemVTdHJpbmcobm9ybWFsaXplU2xhc2hlcyhhdHRhY2htZW50Rm9sZGVyUGF0aCkpO1xuXG4gIHJldHVybiB7XG4gICAgZm9sZGVyOiBnZXRGb2xkZXJPck51bGwoeyBhcHAsIGlzQ2FzZUluc2Vuc2l0aXZlOiB0cnVlLCBwYXRoT3JGb2xkZXI6IGF0dGFjaG1lbnRGb2xkZXJQYXRoIH0pLFxuICAgIHBhdGg6IGF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICAgIHJlbGF0aXZlUGF0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
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import { dirname } from "@mnaoumov/typescript-lib/path";
@@ -67,4 +58,4 @@ export {
67
58
  findAttachmentUnitFolderPath,
68
59
  rebasePathOntoFolder
69
60
  };
70
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqXG4gKiBXaGljaCBpcyB3aHkgdGhlIGRlc2lnbmF0aW9uIGl0c2VsZiBpcyByZWFkIGZyb20gb25lIHNoYXJlZCBzb3VyY2UgcmF0aGVyIHRoYW4gc3VwcGxpZWQgcGVyIGNhbGxlcjogcGFzc1xuICogYW4ge0BsaW5rIEFwcH0gYW5kIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSB3YWxrcyB3aXRoIHdoYXRldmVyIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmBcbiAqIHB1Ymxpc2hlcyB0aHJvdWdoIGl0cyBwbHVnaW4gQVBJLCBzbyBldmVyeSBwbHVnaW4gZGVjaWRlcyBmcm9tIG9uZSBhbnN3ZXIuIFRoZSBleHBsaWNpdC1wcmVkaWNhdGUgZm9ybSByZW1haW5zIGZvciBhIGNhbGxlciB0aGF0IGdlbnVpbmVseSBvd25zIGl0cyBvd24gcGF0dGVybnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB7IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uIH0gZnJvbSAnLi9hdHRhY2htZW50LXBhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSwgcmVhZGluZyB0aGUgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYFxuICogcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhGcm9tQXBwUGFyYW1zfSBcdTIwMTQgaXQgaXMgdGhlIGZvcm0gdGhhdCBtYWtlcyBldmVyeSBwbHVnaW5cbiAqIGRlY2lkZSBmcm9tIG9uZSBwdWJsaXNoZWQgYW5zd2VyLlxuICovXG5leHBvcnQgdHlwZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zID0gRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMgfCBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoV2l0aFByZWRpY2F0ZVBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHdhbGtpbmcgd2l0aCBhIHByZWRpY2F0ZSB0aGUgY2FsbGVyIG93bnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aFdpdGhQcmVkaWNhdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyIHBhdGggaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWJhc2VQYXRoT250b0ZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlcidzIG5ldyBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3Rm9sZGVyUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3Mgb2xkIHBhdGguXG4gICAqL1xuICByZWFkb25seSBvbGRGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJlYmFzZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZm9sZGVyIHRoYXQgYW4gYXR0YWNobWVudCBtdXN0IHRyYXZlbCB3aXRoLlxuICpcbiAqIFJldHVybnMgdGhlICoqb3V0ZXJtb3N0KiogZGVzaWduYXRlZCBhbmNlc3Rvciwgbm90IHRoZSBuZWFyZXN0IG9uZS4gV2l0aCBuZXN0ZWQgZGVzaWduYXRpb25zLFxuICogbW92aW5nIHRoZSBuZWFyZXN0IHdvdWxkIHRlYXIgdGhlIG91dGVyIHRyZWUgaW4gaGFsZiwgd2hpY2ggaXMgdGhlIGZhaWx1cmUgdGhlIHdob2xlIGZlYXR1cmUgZXhpc3RzXG4gKiB0byBwcmV2ZW50LlxuICpcbiAqIFRoZSB2YXVsdCByb290IGlzIG5ldmVyIGEgdW5pdCwgaG93ZXZlciB0aGUgcGF0dGVybnMgYXJlIHdyaXR0ZW46IGRlc2lnbmF0aW5nIGl0IHdvdWxkIG1ha2UgZXZlcnlcbiAqIHJlbG9jYXRpb24gYSBuby1vcCBhdCBiZXN0IGFuZCBhIHZhdWx0LXdpZGUgbW92ZSBhdCB3b3JzdC5cbiAqXG4gKiBQYXNzaW5nIGFuIHtAbGluayBBcHB9IHdhbGtzIHdpdGggdGhlIGRlc2lnbmF0aW9uIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpblxuICogQVBJOyB3aGVuIG5vYm9keSBwdWJsaXNoZWQgb25lLCBub3RoaW5nIGlzIGRlc2lnbmF0ZWQgYW5kIHRoZSBhbnN3ZXIgaXMgYG51bGxgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgYXR0YWNobWVudCB1bml0IGZvbGRlci5cbiAqIEByZXR1cm5zIFRoZSB1bml0IGZvbGRlcidzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBhdHRhY2htZW50IGJlbG9uZ3MgdG8gbm8gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgocGFyYW1zOiBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBkaXJuYW1lKHBhcmFtcy5hdHRhY2htZW50UGF0aCk7XG4gIGlmICghcGFyZW50Rm9sZGVyUGF0aCB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLicgfHwgcGFyZW50Rm9sZGVyUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIgPSAnY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyJyBpbiBwYXJhbXNcbiAgICA/IHBhcmFtcy5jaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJcbiAgICA6IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKHBhcmFtcy5hcHApO1xuXG4gIGlmICghY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IHBhcmVudEZvbGRlclBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAobGV0IGNvdW50ID0gMTsgY291bnQgPD0gc2VnbWVudHMubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gc2VnbWVudHMuc2xpY2UoMCwgY291bnQpLmpvaW4oJy8nKTtcbiAgICBpZiAoY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmViYXNlcyBhIHBhdGggZnJvbSBvbmUgZm9sZGVyIG9udG8gYW5vdGhlci5cbiAqXG4gKiBVc2VkIHRvIHdvcmsgb3V0IHdoZXJlIGEgbGlua2VkIGF0dGFjaG1lbnQgZW5kcyB1cCBvbmNlIGl0cyB3aG9sZSB1bml0IGZvbGRlciBoYXMgbW92ZWQsIHNvIHRoZVxuICogbGluayBjYW4gYmUgcG9pbnRlZCBhdCB0aGUgZmlsZSdzIG5ldyBob21lIHJhdGhlciB0aGFuIGF0IHdoZXJlIHRoZSBmb2xkZXIgdXNlZCB0byBiZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlYmFzaW5nIHRoZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlYmFzZWQgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlIHBhdGggZG9lcyBub3Qgc2l0IGluc2lkZSB0aGUgb2xkIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYmFzZVBhdGhPbnRvRm9sZGVyKHBhcmFtczogUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gYCR7cGFyYW1zLm9sZEZvbGRlclBhdGh9L2A7XG4gIHJldHVybiBwYXJhbXMucGF0aC5zdGFydHNXaXRoKHByZWZpeCkgPyBgJHtwYXJhbXMubmV3Rm9sZGVyUGF0aH0vJHtwYXJhbXMucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKX1gIDogbnVsbDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLFNBQVMsZUFBZTtBQUV4QixTQUFTLDhDQUE4QztBQWdGaEQsU0FBUyw2QkFBNkIsUUFBMkQ7QUFDdEcsUUFBTSxtQkFBbUIsUUFBUSxPQUFPLGNBQWM7QUFDdEQsTUFBSSxDQUFDLG9CQUFvQixxQkFBcUIsT0FBTyxxQkFBcUIsS0FBSztBQUM3RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sOEJBQThCLGlDQUFpQyxTQUNqRSxPQUFPLDhCQUNQLHVDQUF1QyxPQUFPLEdBQUc7QUFFckQsTUFBSSxDQUFDLDZCQUE2QjtBQUNoQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sV0FBVyxpQkFBaUIsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFPO0FBQzNELFdBQVMsUUFBUSxHQUFHLFNBQVMsU0FBUyxRQUFRLFNBQVM7QUFDckQsVUFBTSxZQUFZLFNBQVMsTUFBTSxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUc7QUFDbkQsUUFBSSw0QkFBNEIsU0FBUyxHQUFHO0FBQzFDLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVdPLFNBQVMscUJBQXFCLFFBQW1EO0FBQ3RGLFFBQU0sU0FBUyxHQUFHLE9BQU8sYUFBYTtBQUN0QyxTQUFPLE9BQU8sS0FBSyxXQUFXLE1BQU0sSUFBSSxHQUFHLE9BQU8sYUFBYSxJQUFJLE9BQU8sS0FBSyxNQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUs7QUFDMUc7IiwKICAibmFtZXMiOiBbXQp9Cg==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRhY2htZW50LXVuaXQtZm9sZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqXG4gKiBXaGljaCBpcyB3aHkgdGhlIGRlc2lnbmF0aW9uIGl0c2VsZiBpcyByZWFkIGZyb20gb25lIHNoYXJlZCBzb3VyY2UgcmF0aGVyIHRoYW4gc3VwcGxpZWQgcGVyIGNhbGxlcjogcGFzc1xuICogYW4ge0BsaW5rIEFwcH0gYW5kIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSB3YWxrcyB3aXRoIHdoYXRldmVyIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmBcbiAqIHB1Ymxpc2hlcyB0aHJvdWdoIGl0cyBwbHVnaW4gQVBJLCBzbyBldmVyeSBwbHVnaW4gZGVjaWRlcyBmcm9tIG9uZSBhbnN3ZXIuIFRoZSBleHBsaWNpdC1wcmVkaWNhdGUgZm9ybSByZW1haW5zIGZvciBhIGNhbGxlciB0aGF0IGdlbnVpbmVseSBvd25zIGl0cyBvd24gcGF0dGVybnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB7IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uIH0gZnJvbSAnLi9hdHRhY2htZW50LXBhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSwgcmVhZGluZyB0aGUgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYFxuICogcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhGcm9tQXBwUGFyYW1zfSDigJQgaXQgaXMgdGhlIGZvcm0gdGhhdCBtYWtlcyBldmVyeSBwbHVnaW5cbiAqIGRlY2lkZSBmcm9tIG9uZSBwdWJsaXNoZWQgYW5zd2VyLlxuICovXG5leHBvcnQgdHlwZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zID0gRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMgfCBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoV2l0aFByZWRpY2F0ZVBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHdhbGtpbmcgd2l0aCBhIHByZWRpY2F0ZSB0aGUgY2FsbGVyIG93bnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aFdpdGhQcmVkaWNhdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyIHBhdGggaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWJhc2VQYXRoT250b0ZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlcidzIG5ldyBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3Rm9sZGVyUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3Mgb2xkIHBhdGguXG4gICAqL1xuICByZWFkb25seSBvbGRGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJlYmFzZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZm9sZGVyIHRoYXQgYW4gYXR0YWNobWVudCBtdXN0IHRyYXZlbCB3aXRoLlxuICpcbiAqIFJldHVybnMgdGhlICoqb3V0ZXJtb3N0KiogZGVzaWduYXRlZCBhbmNlc3Rvciwgbm90IHRoZSBuZWFyZXN0IG9uZS4gV2l0aCBuZXN0ZWQgZGVzaWduYXRpb25zLFxuICogbW92aW5nIHRoZSBuZWFyZXN0IHdvdWxkIHRlYXIgdGhlIG91dGVyIHRyZWUgaW4gaGFsZiwgd2hpY2ggaXMgdGhlIGZhaWx1cmUgdGhlIHdob2xlIGZlYXR1cmUgZXhpc3RzXG4gKiB0byBwcmV2ZW50LlxuICpcbiAqIFRoZSB2YXVsdCByb290IGlzIG5ldmVyIGEgdW5pdCwgaG93ZXZlciB0aGUgcGF0dGVybnMgYXJlIHdyaXR0ZW46IGRlc2lnbmF0aW5nIGl0IHdvdWxkIG1ha2UgZXZlcnlcbiAqIHJlbG9jYXRpb24gYSBuby1vcCBhdCBiZXN0IGFuZCBhIHZhdWx0LXdpZGUgbW92ZSBhdCB3b3JzdC5cbiAqXG4gKiBQYXNzaW5nIGFuIHtAbGluayBBcHB9IHdhbGtzIHdpdGggdGhlIGRlc2lnbmF0aW9uIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpblxuICogQVBJOyB3aGVuIG5vYm9keSBwdWJsaXNoZWQgb25lLCBub3RoaW5nIGlzIGRlc2lnbmF0ZWQgYW5kIHRoZSBhbnN3ZXIgaXMgYG51bGxgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgYXR0YWNobWVudCB1bml0IGZvbGRlci5cbiAqIEByZXR1cm5zIFRoZSB1bml0IGZvbGRlcidzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBhdHRhY2htZW50IGJlbG9uZ3MgdG8gbm8gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgocGFyYW1zOiBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBkaXJuYW1lKHBhcmFtcy5hdHRhY2htZW50UGF0aCk7XG4gIGlmICghcGFyZW50Rm9sZGVyUGF0aCB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLicgfHwgcGFyZW50Rm9sZGVyUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIgPSAnY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyJyBpbiBwYXJhbXNcbiAgICA/IHBhcmFtcy5jaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJcbiAgICA6IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKHBhcmFtcy5hcHApO1xuXG4gIGlmICghY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IHBhcmVudEZvbGRlclBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAobGV0IGNvdW50ID0gMTsgY291bnQgPD0gc2VnbWVudHMubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gc2VnbWVudHMuc2xpY2UoMCwgY291bnQpLmpvaW4oJy8nKTtcbiAgICBpZiAoY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmViYXNlcyBhIHBhdGggZnJvbSBvbmUgZm9sZGVyIG9udG8gYW5vdGhlci5cbiAqXG4gKiBVc2VkIHRvIHdvcmsgb3V0IHdoZXJlIGEgbGlua2VkIGF0dGFjaG1lbnQgZW5kcyB1cCBvbmNlIGl0cyB3aG9sZSB1bml0IGZvbGRlciBoYXMgbW92ZWQsIHNvIHRoZVxuICogbGluayBjYW4gYmUgcG9pbnRlZCBhdCB0aGUgZmlsZSdzIG5ldyBob21lIHJhdGhlciB0aGFuIGF0IHdoZXJlIHRoZSBmb2xkZXIgdXNlZCB0byBiZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlYmFzaW5nIHRoZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlYmFzZWQgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlIHBhdGggZG9lcyBub3Qgc2l0IGluc2lkZSB0aGUgb2xkIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYmFzZVBhdGhPbnRvRm9sZGVyKHBhcmFtczogUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gYCR7cGFyYW1zLm9sZEZvbGRlclBhdGh9L2A7XG4gIHJldHVybiBwYXJhbXMucGF0aC5zdGFydHNXaXRoKHByZWZpeCkgPyBgJHtwYXJhbXMubmV3Rm9sZGVyUGF0aH0vJHtwYXJhbXMucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKX1gIDogbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsU0FBUyxlQUFlO0FBRXhCLFNBQVMsOENBQThDO0FBZ0ZoRCxTQUFTLDZCQUE2QixRQUEyRDtBQUN0RyxRQUFNLG1CQUFtQixRQUFRLE9BQU8sY0FBYztBQUN0RCxNQUFJLENBQUMsb0JBQW9CLHFCQUFxQixPQUFPLHFCQUFxQixLQUFLO0FBQzdFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSw4QkFBOEIsaUNBQWlDLFNBQ2pFLE9BQU8sOEJBQ1AsdUNBQXVDLE9BQU8sR0FBRztBQUVyRCxNQUFJLENBQUMsNkJBQTZCO0FBQ2hDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxXQUFXLGlCQUFpQixNQUFNLEdBQUcsRUFBRSxPQUFPLE9BQU87QUFDM0QsV0FBUyxRQUFRLEdBQUcsU0FBUyxTQUFTLFFBQVEsU0FBUztBQUNyRCxVQUFNLFlBQVksU0FBUyxNQUFNLEdBQUcsS0FBSyxFQUFFLEtBQUssR0FBRztBQUNuRCxRQUFJLDRCQUE0QixTQUFTLEdBQUc7QUFDMUMsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBV08sU0FBUyxxQkFBcUIsUUFBbUQ7QUFDdEYsUUFBTSxTQUFTLEdBQUcsT0FBTyxhQUFhO0FBQ3RDLFNBQU8sT0FBTyxLQUFLLFdBQVcsTUFBTSxJQUFJLEdBQUcsT0FBTyxhQUFhLElBQUksT0FBTyxLQUFLLE1BQU0sT0FBTyxNQUFNLENBQUMsS0FBSztBQUMxRzsiLCJuYW1lcyI6W119
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import { ensureNonNullable } from "@mnaoumov/typescript-lib/type-guards";
@@ -149,4 +140,4 @@ function removeSource(data, sourcePath) {
149
140
  export {
150
141
  getIndexedBacklinksForFile
151
142
  };
152
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JhY2tsaW5rLWluZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQW5zd2VycyBcIndoaWNoIHJlZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGlzIGZpbGU/XCIgYnkgbG9va2luZyBvbmx5IGF0IHRoZSBub3RlcyB0aGF0IENPVUxEIGhvbGQgb25lLCBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcgZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBtZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIGlzIG5vdCBhbiBpbmRleCBsb29rdXAuIFJlYWQgb3V0IG9mIHRoZSAxLjE0LjIgYnVuZGxlLCBpdCBpc1xuICogYGl0ZXJhdGVBbGxSZWZzYCBcdTIwMTQgZXZlcnkgYGZyb250bWF0dGVyTGlua3NgLCBgbGlua3NgIGFuZCBgZW1iZWRzYCBlbnRyeSBvZiBldmVyeSBjYWNoZWQgbm90ZSwgcGx1cyBldmVyeVxuICogcmVmZXJlbmNlIGVhY2ggYGxpbmtVcGRhdGVyc2AgZW50cnkgKHRoZSBjYW52YXMgb25lKSByZXBvcnRzIFx1MjAxNCB3aXRoIG9uZSBgZ2V0Rmlyc3RMaW5rcGF0aERlc3RgIHBlciByZWZlcmVuY2UsXG4gKiBrZWVwaW5nIHRob3NlIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAuIFRoYXQgaXMgfjExNSBtcyBhdCAxMDBrIHJlZmVyZW5jZXMgYW5kIH4zMjAgbXMgYXQgMjUwaywgcGFpZCBvbmNlIHBlciBmaWxlXG4gKiBieSBldmVyeSBwZXItZmlsZSBiYWNrbGluayBsb29rdXAsIHNvIGEgMTAwMC1ub3RlIGZvbGRlciByZW5hbWUgaW4gYSA1MGstbm90ZSB2YXVsdCB0b29rIDkyNCBzLlxuICpcbiAqIFdoYXQgbWFrZXMgYSBuYXJyb3dlciBhbnN3ZXIgZXhhY3QgaXMgYSBwcm9wZXJ0eSBvZiBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aERlc3RgOiBldmVyeSBicmFuY2ggb2YgaXQgY2FuIG9ubHlcbiAqIHJldHVybiBhIGZpbGUgd2hvc2UgbG93ZXJjYXNlZCBuYW1lIGlzIHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgdGhlIGxpbmtwYXRoLCBvciB0aGF0IHNlZ21lbnQgcGx1c1xuICogYC5tZGAuIFRoZSBvbmUgZXhjZXB0aW9uIGlzIHRoZSBlbXB0eSBsaW5rcGF0aCAoYFtbI0hlYWRpbmddXWApLCB3aGljaCByZXR1cm5zIHRoZSBzb3VyY2Ugbm90ZSBpdHNlbGYuIFNvIGFcbiAqIG5vdGUgY2FuIGhvbGQgYSByZWZlcmVuY2UgdG8gYGZpbGVgIG9ubHkgaWYgaXQgaG9sZHMgYSByZWZlcmVuY2Ugd2hvc2UgbGFzdCBzZWdtZW50IG1hdGNoZXMgb25lIG9mIGBmaWxlYCdzXG4gKiBuYW1lIGtleXMsIG9yIGlmIGl0IElTIGBmaWxlYC4gVGhpcyBtb2R1bGUgaW5kZXhlcyBub3RlcyBieSB0aG9zZSBzZWdtZW50cywgdGFrZXMgdGhlIGNhbmRpZGF0ZXMgZm9yIGBmaWxlYCxcbiAqIGFuZCBydW5zIE9ic2lkaWFuJ3Mgb3duIHByZWRpY2F0ZSBcdTIwMTQgYGdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtwYXRoLCBzb3VyY2UpID09PSBmaWxlYCBcdTIwMTQgb3ZlciB0aGUgY2FuZGlkYXRlcydcbiAqIHJlZmVyZW5jZXMgb25seS4gVGhlIGNhbmRpZGF0ZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIHJlYWwgYmFja2xpbmtzIGFuZCB0aGUgcHJlZGljYXRlIGlzIHRoZSBzYW1lIG9uZSwgc29cbiAqIHRoZSBhbnN3ZXIgaXMgdGhlIG9uZSB0aGUgZnVsbCB3YWxrIGdpdmVzLCBhIGZpbGUgcmVnaXN0ZXJlZCBhdCBhIG5vbi1leGlzdGluZyBwYXRoIGluY2x1ZGVkLiBPbmx5IHRoZSBPUkRFUlxuICogb2YgdGhlIG5vdGVzIGluIHRoZSBhbnN3ZXIgZGlmZmVyczogdGhlIGZpbGUgaXRzZWxmIGZpcnN0LCB0aGVuIHRoZSBjYW5kaWRhdGVzIGluIGluZGV4IG9yZGVyLlxuICpcbiAqIFRoZSBpbmRleCBpcyBrZXB0IGZyZXNoIHdpdGhvdXQgbGlzdGVuaW5nIHRvIGFueXRoaW5nLiBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgIG1hcHMgYSBub3RlIHRvIHRoZSBoYXNoIG9mXG4gKiBpdHMgY29udGVudCwgYW5kIHRoZSByZWZlcmVuY2VzIGFyZSBhIGZ1bmN0aW9uIG9mIHRoYXQgaGFzaCwgc28gZWFjaCBxdWVyeSBjb21wYXJlcyBldmVyeSBub3RlJ3MgaGFzaFxuICogYWdhaW5zdCB0aGUgb25lIGl0IHdhcyBpbmRleGVkIGF0IGFuZCByZS1yZWFkcyBvbmx5IHRoZSBub3RlcyB0aGF0IGNoYW5nZWQuIFRoYXQgaXMgb25lIHByb3BlcnR5IGNvbXBhcmlzb25cbiAqIHBlciBub3RlIGFuZCBubyByZXNvbHV0aW9uIGF0IGFsbCwgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNjYW4gT2JzaWRpYW4gaXRzZWxmIHJ1bnMgb24gZXZlcnkgcmVuYW1lXG4gKiAoYHVwZGF0ZVJlbGF0ZWRMaW5rc2ApLiBEZXBlbmRpbmcgb24gbm8gZXZlbnQgYWxzbyBtZWFucyBkZXBlbmRpbmcgb24gbm8gZXZlbnQgT1JERVIsIHdoaWNoIG1hdHRlcnMgYmVjYXVzZVxuICogcmVuYW1lIGhhbmRsZXJzIHF1ZXJ5IGZyb20gaW5zaWRlIHRoZSB2YXVsdCBgcmVuYW1lYCBldmVudC5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgaW5kZXggcGVyIGBBcHBgLCBoZWxkIGluIHRoZSByZWFsbS1nbG9iYWwgc2hhcmVkLXN0YXRlIGJhZywgc28gZXZlcnkgcGx1Z2luIGJ1bmRsaW5nIHRoaXMgbGlicmFyeVxuICogc2hhcmVzIGl0IHJhdGhlciB0aGFuIGVhY2ggYnVpbGRpbmcgaXRzIG93bi4gV2hhdCBpcyBzdG9yZWQgdGhlcmUgaXMgcGxhaW4gZGF0YSByZWFkIHN0cnVjdHVyYWxseSAobWFwcyBhbmRcbiAqIHNldHMsIG5ldmVyIGEgY2xhc3MgaW5zdGFuY2UpLCBiZWNhdXNlIHRoZSBiYWcgY3Jvc3NlcyBjb3BpZXMgb2YgdGhpcyBsaWJyYXJ5IGF0IGRpZmZlcmVudCB2ZXJzaW9ucy4gVGhlIGtleVxuICogY2FycmllcyBhIHZlcnNpb246IGEgY2hhbmdlIHRvIHdoYXQgYSBrZXkgTUVBTlMgKGhvdyBhIG5hbWUga2V5IGlzIGRlcml2ZWQpIG11c3QgbW92ZSB0byBhIG5ldyBrZXksIHNvIGFuIG9sZGVyXG4gKiBjb3B5IG5ldmVyIHJlYWRzIGFuIGluZGV4IGJ1aWx0IGJ5IGRpZmZlcmVudCBydWxlcy5cbiAqXG4gKiBUaGUgYGxpbmtVcGRhdGVyc2Agc2lkZSBpcyBzdGlsbCB3YWxrZWQgaW4gZnVsbCBvbiBldmVyeSBxdWVyeS4gSW4gMS4xNC4yIHRoZSBvbmx5IHVwZGF0ZXIgaXMgdGhlIGNhbnZhc1xuICogb25lLCB3aG9zZSByZWZlcmVuY2VzIGxpdmUgaW4gdGhlIGNhbnZhcyBpbmRleCByYXRoZXIgdGhhbiBpbiBgZmlsZUNhY2hlYCwgc28gdGhlcmUgaXMgbm8gaGFzaCB0byBrZXkgdGhlbVxuICogYnk7IGEgdmF1bHQncyBjYW52YXNlcyBob2xkIGEgc21hbGwgZnJhY3Rpb24gb2YgaXRzIHJlZmVyZW5jZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IEN1c3RvbUFycmF5RGljdEltcGwgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuaW50ZXJmYWNlIEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgcmVhZG9ubHkgaW5kZXhlZEhhc2hlczogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgbmFtZUtleVNvdXJjZVBhdGhzOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj47XG4gIHJlYWRvbmx5IHNvdXJjZVBhdGhOYW1lS2V5czogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+O1xufVxuXG5jb25zdCBNQVJLRE9XTl9TVUZGSVggPSAnLm1kJztcblxuLyoqXG4gKiBUaGUgc2FtZSBhbnN3ZXIgYXMgYGFwcC5tZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIChPYnNpZGlhbidzIG93biwgdW5wYXRjaGVkKSwgZnJvbSB0aGUgY2FuZGlkYXRlXG4gKiBub3RlcyBvbmx5LiBTZWUgdGhlIGZpbGUgaGVhZGVyIGZvciB3aHkgdGhlIGFuc3dlciBpcyBleGFjdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgd2hvc2UgYmFja2xpbmtzIHRvIGZpbmQuIEl0IG1heSBiZSBhIG5vbi1leGlzdGluZyBmaWxlIHJlZ2lzdGVyZWQgZm9yIHRoZSBxdWVyeS5cbiAqIEByZXR1cm5zIFRoZSByZWZlcmVuY2VzIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAsIGtleWVkIGJ5IHRoZSBwYXRoIG9mIHRoZSBub3RlIG9yIGNhbnZhcyBob2xkaW5nIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRleGVkQmFja2xpbmtzRm9yRmlsZShhcHA6IEFwcCwgZmlsZTogVEZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGRhdGEgPSBnZXRCYWNrbGlua0luZGV4RGF0YShhcHApO1xuICByZWZyZXNoKGFwcCwgZGF0YSk7XG5cbiAgY29uc3QgbWV0YWRhdGFDYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlO1xuICBjb25zdCBiYWNrbGlua3MgPSBuZXcgQ3VzdG9tQXJyYXlEaWN0SW1wbDxSZWZlcmVuY2U+KCk7XG5cbiAgLy8gVGhlIGZpbGUgaXRzZWxmIGlzIGEgY2FuZGlkYXRlIGZvciBpdHMgb3duIGBbWyNIZWFkaW5nXV1gIHJlZmVyZW5jZXMsIHdob3NlIGVtcHR5IGxpbmtwYXRoIG5hbWVzIG5vIHNlZ21lbnQuXG4gIGNvbnN0IGNhbmRpZGF0ZVNvdXJjZVBhdGhzID0gbmV3IFNldDxzdHJpbmc+KFtmaWxlLnBhdGhdKTtcbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIGdldFRhcmdldE5hbWVLZXlzKGZpbGUubmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IHNvdXJjZVBhdGggb2YgZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpID8/IFtdKSB7XG4gICAgICBjYW5kaWRhdGVTb3VyY2VQYXRocy5hZGQoc291cmNlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGNhbmRpZGF0ZVNvdXJjZVBhdGhzKSB7XG4gICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgZ2V0Q2FjaGVSZWZlcmVuY2VzKGdldENhY2hlZE1ldGFkYXRhKGFwcCwgc291cmNlUGF0aCkpKSB7XG4gICAgICBjb2xsZWN0KHNvdXJjZVBhdGgsIHJlZmVyZW5jZSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5rVXBkYXRlciBvZiBPYmplY3QudmFsdWVzKG1ldGFkYXRhQ2FjaGUubGlua1VwZGF0ZXJzKSkge1xuICAgIGxpbmtVcGRhdGVyPy5pdGVyYXRlUmVmZXJlbmNlcyhjb2xsZWN0KTtcbiAgfVxuXG4gIHJldHVybiBiYWNrbGlua3M7XG5cbiAgZnVuY3Rpb24gY29sbGVjdChzb3VyY2VQYXRoOiBzdHJpbmcsIHJlZmVyZW5jZTogUmVmZXJlbmNlKTogdm9pZCB7XG4gICAgaWYgKG1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoZ2V0TGlua3BhdGgocmVmZXJlbmNlLmxpbmspLCBzb3VyY2VQYXRoKSA9PT0gZmlsZSkge1xuICAgICAgYmFja2xpbmtzLmFkZChzb3VyY2VQYXRoLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCYWNrbGlua0luZGV4RGF0YShhcHA6IEFwcCk6IEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgY29uc3QgaW5kZXhlcyA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSgnYmFja2xpbmtJbmRleGVzQnlBcHBWMScsIG5ldyBXZWFrTWFwPEFwcCwgQmFja2xpbmtJbmRleERhdGE+KCkpLnZhbHVlO1xuICBsZXQgZGF0YSA9IGluZGV4ZXMuZ2V0KGFwcCk7XG4gIGlmICghZGF0YSkge1xuICAgIGRhdGEgPSB7XG4gICAgICBpbmRleGVkSGFzaGVzOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgICAgbmFtZUtleVNvdXJjZVBhdGhzOiBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCksXG4gICAgICBzb3VyY2VQYXRoTmFtZUtleXM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKVxuICAgIH07XG4gICAgaW5kZXhlcy5zZXQoYXBwLCBkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FjaGVkTWV0YWRhdGEoYXBwOiBBcHAsIHNvdXJjZVBhdGg6IHN0cmluZyk6IENhY2hlZE1ldGFkYXRhIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFzaCA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtzb3VyY2VQYXRoXT8uaGFzaDtcbiAgcmV0dXJuIGhhc2ggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbaGFzaF07XG59XG5cbi8qKlxuICogTGlzdHMgYSBjYWNoZWQgbm90ZSdzIHJlZmVyZW5jZXMgaW4gdGhlIG9yZGVyIE9ic2lkaWFuJ3Mgb3duIHdhbGsgdmlzaXRzIHRoZW06IGBmcm9udG1hdHRlckxpbmtzYCwgdGhlblxuICogYGxpbmtzYCwgdGhlbiBgZW1iZWRzYC5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgbm90ZSdzIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBub3RlJ3MgcmVmZXJlbmNlcy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IHVuZGVmaW5lZCk6IFJlZmVyZW5jZVtdIHtcbiAgcmV0dXJuIGNhY2hlID8gWy4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MgPz8gW10sIC4uLmNhY2hlLmxpbmtzID8/IFtdLCAuLi5jYWNoZS5lbWJlZHMgPz8gW11dIDogW107XG59XG5cbi8qKlxuICogU3RyaXBzIHRoZSBzdWJwYXRoIGZyb20gYSBsaW5rLCB0aGUgd2F5IE9ic2lkaWFuJ3MgYGdldExpbmtwYXRoYCBkb2VzLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIGxpbmsgdGV4dCwgc3VjaCBhcyBgZm9sZGVyL05vdGUjSGVhZGluZ2AuXG4gKiBAcmV0dXJucyBUaGUgbGlua3BhdGgsIHN1Y2ggYXMgYGZvbGRlci9Ob3RlYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TGlua3BhdGgobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaEluZGV4ID0gbGluay5pbmRleE9mKCcjJyk7XG4gIHJldHVybiBoYXNoSW5kZXggPT09IC0xID8gbGluayA6IGxpbmsuc2xpY2UoMCwgaGFzaEluZGV4KTtcbn1cblxuLyoqXG4gKiBUaGUga2V5IGEgcmVmZXJlbmNlIGlzIGluZGV4ZWQgdW5kZXI6IHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgaXRzIGxpbmtwYXRoLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIHJlZmVyZW5jZSdzIGxpbmsgdGV4dC5cbiAqIEByZXR1cm5zIFRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZU5hbWVLZXkobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGlua3BhdGggPSBnZXRMaW5rcGF0aChsaW5rKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbGlua3BhdGguc2xpY2UobGlua3BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xufVxuXG4vKipcbiAqIFRoZSBrZXlzIHVuZGVyIHdoaWNoIGEgcmVmZXJlbmNlIHRvIGEgZmlsZSB3aXRoIHRoaXMgbmFtZSBjYW4gYmUgaW5kZXhlZC4gYGdldExpbmtwYXRoRGVzdGAgbWF0Y2hlcyBhXG4gKiBzZWdtZW50IGFnYWluc3QgdGhlIGZpbGUncyBuYW1lLCBhbmQgYWdhaW5zdCB0aGUgbmFtZSB3aXRoIGAubWRgIGFwcGVuZGVkLCBzbyBhIG5vdGUgbmFtZWQgYE5vdGUubWRgIGlzXG4gKiByZWFjaGFibGUgZnJvbSBib3RoIGBub3RlLm1kYCBhbmQgYG5vdGVgLlxuICpcbiAqIEBwYXJhbSBmaWxlTmFtZSAtIFRoZSBmaWxlJ3MgbmFtZSwgZXh0ZW5zaW9uIGluY2x1ZGVkLlxuICogQHJldHVybnMgVGhlIGtleXMuXG4gKi9cbmZ1bmN0aW9uIGdldFRhcmdldE5hbWVLZXlzKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG5hbWVLZXkgPSBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbmFtZUtleS5lbmRzV2l0aChNQVJLRE9XTl9TVUZGSVgpID8gW25hbWVLZXksIG5hbWVLZXkuc2xpY2UoMCwgLU1BUktET1dOX1NVRkZJWC5sZW5ndGgpXSA6IFtuYW1lS2V5XTtcbn1cblxuZnVuY3Rpb24gaW5kZXhTb3VyY2UoYXBwOiBBcHAsIGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhLCBzb3VyY2VQYXRoOiBzdHJpbmcsIGhhc2g6IHN0cmluZyk6IHZvaWQge1xuICByZW1vdmVTb3VyY2UoZGF0YSwgc291cmNlUGF0aCk7XG4gIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtoYXNoXTtcbiAgLypcbiAgICogQSBub3RlJ3MgYGZpbGVDYWNoZWAgZW50cnkgY2FuIGNhcnJ5IGl0cyBuZXcgaGFzaCBiZWZvcmUgdGhlIG1ldGFkYXRhIGZvciB0aGF0IGhhc2ggaXMgc3RvcmVkLiBSZWNvcmRpbmdcbiAgICogdGhlIGhhc2ggdGhlbiB3b3VsZCBwaW4gdGhlIG5vdGUgYXQgXCJubyByZWZlcmVuY2VzXCIgdW50aWwgaXRzIGNvbnRlbnQgY2hhbmdlZCBhZ2Fpbiwgc28gbGVhdmUgaXRcbiAgICogdW5yZWNvcmRlZCBhbmQgbGV0IHRoZSBuZXh0IHF1ZXJ5IGxvb2sgYWdhaW4uXG4gICAqL1xuICBpZiAoIWNhY2hlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmFtZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlKSkge1xuICAgIG5hbWVLZXlzLmFkZChnZXRSZWZlcmVuY2VOYW1lS2V5KHJlZmVyZW5jZS5saW5rKSk7XG4gIH1cbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIG5hbWVLZXlzKSB7XG4gICAgbGV0IHNvdXJjZVBhdGhzID0gZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpO1xuICAgIGlmICghc291cmNlUGF0aHMpIHtcbiAgICAgIHNvdXJjZVBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5zZXQobmFtZUtleSwgc291cmNlUGF0aHMpO1xuICAgIH1cbiAgICBzb3VyY2VQYXRocy5hZGQoc291cmNlUGF0aCk7XG4gIH1cbiAgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuc2V0KHNvdXJjZVBhdGgsIG5hbWVLZXlzKTtcbiAgZGF0YS5pbmRleGVkSGFzaGVzLnNldChzb3VyY2VQYXRoLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gcmVmcmVzaChhcHA6IEFwcCwgZGF0YTogQmFja2xpbmtJbmRleERhdGEpOiB2b2lkIHtcbiAgY29uc3QgZmlsZUNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlO1xuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5rZXlzKCkpIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oZmlsZUNhY2hlLCBzb3VyY2VQYXRoKSkge1xuICAgICAgcmVtb3ZlU291cmNlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW3NvdXJjZVBhdGgsIHsgaGFzaCB9XSBvZiBPYmplY3QuZW50cmllcyhmaWxlQ2FjaGUpKSB7XG4gICAgaWYgKGRhdGEuaW5kZXhlZEhhc2hlcy5nZXQoc291cmNlUGF0aCkgIT09IGhhc2gpIHtcbiAgICAgIGluZGV4U291cmNlKGFwcCwgZGF0YSwgc291cmNlUGF0aCwgaGFzaCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNvdXJjZShkYXRhOiBCYWNrbGlua0luZGV4RGF0YSwgc291cmNlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5nZXQoc291cmNlUGF0aCkgPz8gW10pIHtcbiAgICBjb25zdCBzb3VyY2VQYXRocyA9IGVuc3VyZU5vbk51bGxhYmxlKGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSk7XG4gICAgc291cmNlUGF0aHMuZGVsZXRlKHNvdXJjZVBhdGgpO1xuICAgIGlmIChzb3VyY2VQYXRocy5zaXplID09PSAwKSB7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5kZWxldGUobmFtZUtleSk7XG4gICAgfVxuICB9XG4gIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLmRlbGV0ZShzb3VyY2VQYXRoKTtcbiAgZGF0YS5pbmRleGVkSGFzaGVzLmRlbGV0ZShzb3VyY2VQYXRoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0RBLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsMkJBQTJCO0FBRXBDLFNBQVMsZ0NBQWdDO0FBUXpDLE1BQU0sa0JBQWtCO0FBVWpCLFNBQVMsMkJBQTJCLEtBQVUsTUFBeUM7QUFDNUYsUUFBTSxPQUFPLHFCQUFxQixHQUFHO0FBQ3JDLFVBQVEsS0FBSyxJQUFJO0FBRWpCLFFBQU0sZ0JBQWdCLElBQUk7QUFDMUIsUUFBTSxZQUFZLElBQUksb0JBQStCO0FBR3JELFFBQU0sdUJBQXVCLG9CQUFJLElBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztBQUN4RCxhQUFXLFdBQVcsa0JBQWtCLEtBQUssSUFBSSxHQUFHO0FBQ2xELGVBQVcsY0FBYyxLQUFLLG1CQUFtQixJQUFJLE9BQU8sS0FBSyxDQUFDLEdBQUc7QUFDbkUsMkJBQXFCLElBQUksVUFBVTtBQUFBLElBQ3JDO0FBQUEsRUFDRjtBQUVBLGFBQVcsY0FBYyxzQkFBc0I7QUFDN0MsZUFBVyxhQUFhLG1CQUFtQixrQkFBa0IsS0FBSyxVQUFVLENBQUMsR0FBRztBQUM5RSxjQUFRLFlBQVksU0FBUztBQUFBLElBQy9CO0FBQUEsRUFDRjtBQUVBLGFBQVcsZUFBZSxPQUFPLE9BQU8sY0FBYyxZQUFZLEdBQUc7QUFDbkUsaUJBQWEsa0JBQWtCLE9BQU87QUFBQSxFQUN4QztBQUVBLFNBQU87QUFFUCxXQUFTLFFBQVEsWUFBb0IsV0FBNEI7QUFDL0QsUUFBSSxjQUFjLHFCQUFxQixZQUFZLFVBQVUsSUFBSSxHQUFHLFVBQVUsTUFBTSxNQUFNO0FBQ3hGLGdCQUFVLElBQUksWUFBWSxTQUFTO0FBQUEsSUFDckM7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLHFCQUFxQixLQUE2QjtBQUN6RCxRQUFNLFVBQVUseUJBQXlCLDBCQUEwQixvQkFBSSxRQUFnQyxDQUFDLEVBQUU7QUFDMUcsTUFBSSxPQUFPLFFBQVEsSUFBSSxHQUFHO0FBQzFCLE1BQUksQ0FBQyxNQUFNO0FBQ1QsV0FBTztBQUFBLE1BQ0wsZUFBZSxvQkFBSSxJQUFvQjtBQUFBLE1BQ3ZDLG9CQUFvQixvQkFBSSxJQUF5QjtBQUFBLE1BQ2pELG9CQUFvQixvQkFBSSxJQUF5QjtBQUFBLElBQ25EO0FBQ0EsWUFBUSxJQUFJLEtBQUssSUFBSTtBQUFBLEVBQ3ZCO0FBQ0EsU0FBTztBQUNUO0FBRUEsU0FBUyxrQkFBa0IsS0FBVSxZQUFnRDtBQUNuRixRQUFNLE9BQU8sSUFBSSxjQUFjLFVBQVUsVUFBVSxHQUFHO0FBQ3RELFNBQU8sU0FBUyxTQUFZLFNBQVksSUFBSSxjQUFjLGNBQWMsSUFBSTtBQUM5RTtBQVNBLFNBQVMsbUJBQW1CLE9BQWdEO0FBQzFFLFNBQU8sUUFBUSxDQUFDLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxHQUFHLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ25HO0FBUUEsU0FBUyxZQUFZLE1BQXNCO0FBQ3pDLFFBQU0sWUFBWSxLQUFLLFFBQVEsR0FBRztBQUNsQyxTQUFPLGNBQWMsS0FBSyxPQUFPLEtBQUssTUFBTSxHQUFHLFNBQVM7QUFDMUQ7QUFRQSxTQUFTLG9CQUFvQixNQUFzQjtBQUNqRCxRQUFNLFdBQVcsWUFBWSxJQUFJLEVBQUUsWUFBWTtBQUMvQyxTQUFPLFNBQVMsTUFBTSxTQUFTLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDckQ7QUFVQSxTQUFTLGtCQUFrQixVQUE0QjtBQUNyRCxRQUFNLFVBQVUsU0FBUyxZQUFZO0FBQ3JDLFNBQU8sUUFBUSxTQUFTLGVBQWUsSUFBSSxDQUFDLFNBQVMsUUFBUSxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPO0FBQzVHO0FBRUEsU0FBUyxZQUFZLEtBQVUsTUFBeUIsWUFBb0IsTUFBb0I7QUFDOUYsZUFBYSxNQUFNLFVBQVU7QUFDN0IsUUFBTSxRQUFRLElBQUksY0FBYyxjQUFjLElBQUk7QUFNbEQsTUFBSSxDQUFDLE9BQU87QUFDVjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQVcsb0JBQUksSUFBWTtBQUNqQyxhQUFXLGFBQWEsbUJBQW1CLEtBQUssR0FBRztBQUNqRCxhQUFTLElBQUksb0JBQW9CLFVBQVUsSUFBSSxDQUFDO0FBQUEsRUFDbEQ7QUFDQSxhQUFXLFdBQVcsVUFBVTtBQUM5QixRQUFJLGNBQWMsS0FBSyxtQkFBbUIsSUFBSSxPQUFPO0FBQ3JELFFBQUksQ0FBQyxhQUFhO0FBQ2hCLG9CQUFjLG9CQUFJLElBQVk7QUFDOUIsV0FBSyxtQkFBbUIsSUFBSSxTQUFTLFdBQVc7QUFBQSxJQUNsRDtBQUNBLGdCQUFZLElBQUksVUFBVTtBQUFBLEVBQzVCO0FBQ0EsT0FBSyxtQkFBbUIsSUFBSSxZQUFZLFFBQVE7QUFDaEQsT0FBSyxjQUFjLElBQUksWUFBWSxJQUFJO0FBQ3pDO0FBRUEsU0FBUyxRQUFRLEtBQVUsTUFBK0I7QUFDeEQsUUFBTSxZQUFZLElBQUksY0FBYztBQUVwQyxhQUFXLGNBQWMsS0FBSyxtQkFBbUIsS0FBSyxHQUFHO0FBQ3ZELFFBQUksQ0FBQyxPQUFPLE9BQU8sV0FBVyxVQUFVLEdBQUc7QUFDekMsbUJBQWEsTUFBTSxVQUFVO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBRUEsYUFBVyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLFFBQVEsU0FBUyxHQUFHO0FBQzlELFFBQUksS0FBSyxjQUFjLElBQUksVUFBVSxNQUFNLE1BQU07QUFDL0Msa0JBQVksS0FBSyxNQUFNLFlBQVksSUFBSTtBQUFBLElBQ3pDO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxhQUFhLE1BQXlCLFlBQTBCO0FBQ3ZFLGFBQVcsV0FBVyxLQUFLLG1CQUFtQixJQUFJLFVBQVUsS0FBSyxDQUFDLEdBQUc7QUFDbkUsVUFBTSxjQUFjLGtCQUFrQixLQUFLLG1CQUFtQixJQUFJLE9BQU8sQ0FBQztBQUMxRSxnQkFBWSxPQUFPLFVBQVU7QUFDN0IsUUFBSSxZQUFZLFNBQVMsR0FBRztBQUMxQixXQUFLLG1CQUFtQixPQUFPLE9BQU87QUFBQSxJQUN4QztBQUFBLEVBQ0Y7QUFDQSxPQUFLLG1CQUFtQixPQUFPLFVBQVU7QUFDekMsT0FBSyxjQUFjLE9BQU8sVUFBVTtBQUN0QzsiLAogICJuYW1lcyI6IFtdCn0K
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrbGluay1pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQW5zd2VycyBcIndoaWNoIHJlZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGlzIGZpbGU/XCIgYnkgbG9va2luZyBvbmx5IGF0IHRoZSBub3RlcyB0aGF0IENPVUxEIGhvbGQgb25lLCBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcgZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBtZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIGlzIG5vdCBhbiBpbmRleCBsb29rdXAuIFJlYWQgb3V0IG9mIHRoZSAxLjE0LjIgYnVuZGxlLCBpdCBpc1xuICogYGl0ZXJhdGVBbGxSZWZzYCDigJQgZXZlcnkgYGZyb250bWF0dGVyTGlua3NgLCBgbGlua3NgIGFuZCBgZW1iZWRzYCBlbnRyeSBvZiBldmVyeSBjYWNoZWQgbm90ZSwgcGx1cyBldmVyeVxuICogcmVmZXJlbmNlIGVhY2ggYGxpbmtVcGRhdGVyc2AgZW50cnkgKHRoZSBjYW52YXMgb25lKSByZXBvcnRzIOKAlCB3aXRoIG9uZSBgZ2V0Rmlyc3RMaW5rcGF0aERlc3RgIHBlciByZWZlcmVuY2UsXG4gKiBrZWVwaW5nIHRob3NlIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAuIFRoYXQgaXMgfjExNSBtcyBhdCAxMDBrIHJlZmVyZW5jZXMgYW5kIH4zMjAgbXMgYXQgMjUwaywgcGFpZCBvbmNlIHBlciBmaWxlXG4gKiBieSBldmVyeSBwZXItZmlsZSBiYWNrbGluayBsb29rdXAsIHNvIGEgMTAwMC1ub3RlIGZvbGRlciByZW5hbWUgaW4gYSA1MGstbm90ZSB2YXVsdCB0b29rIDkyNCBzLlxuICpcbiAqIFdoYXQgbWFrZXMgYSBuYXJyb3dlciBhbnN3ZXIgZXhhY3QgaXMgYSBwcm9wZXJ0eSBvZiBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aERlc3RgOiBldmVyeSBicmFuY2ggb2YgaXQgY2FuIG9ubHlcbiAqIHJldHVybiBhIGZpbGUgd2hvc2UgbG93ZXJjYXNlZCBuYW1lIGlzIHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgdGhlIGxpbmtwYXRoLCBvciB0aGF0IHNlZ21lbnQgcGx1c1xuICogYC5tZGAuIFRoZSBvbmUgZXhjZXB0aW9uIGlzIHRoZSBlbXB0eSBsaW5rcGF0aCAoYFtbI0hlYWRpbmddXWApLCB3aGljaCByZXR1cm5zIHRoZSBzb3VyY2Ugbm90ZSBpdHNlbGYuIFNvIGFcbiAqIG5vdGUgY2FuIGhvbGQgYSByZWZlcmVuY2UgdG8gYGZpbGVgIG9ubHkgaWYgaXQgaG9sZHMgYSByZWZlcmVuY2Ugd2hvc2UgbGFzdCBzZWdtZW50IG1hdGNoZXMgb25lIG9mIGBmaWxlYCdzXG4gKiBuYW1lIGtleXMsIG9yIGlmIGl0IElTIGBmaWxlYC4gVGhpcyBtb2R1bGUgaW5kZXhlcyBub3RlcyBieSB0aG9zZSBzZWdtZW50cywgdGFrZXMgdGhlIGNhbmRpZGF0ZXMgZm9yIGBmaWxlYCxcbiAqIGFuZCBydW5zIE9ic2lkaWFuJ3Mgb3duIHByZWRpY2F0ZSDigJQgYGdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtwYXRoLCBzb3VyY2UpID09PSBmaWxlYCDigJQgb3ZlciB0aGUgY2FuZGlkYXRlcydcbiAqIHJlZmVyZW5jZXMgb25seS4gVGhlIGNhbmRpZGF0ZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIHJlYWwgYmFja2xpbmtzIGFuZCB0aGUgcHJlZGljYXRlIGlzIHRoZSBzYW1lIG9uZSwgc29cbiAqIHRoZSBhbnN3ZXIgaXMgdGhlIG9uZSB0aGUgZnVsbCB3YWxrIGdpdmVzLCBhIGZpbGUgcmVnaXN0ZXJlZCBhdCBhIG5vbi1leGlzdGluZyBwYXRoIGluY2x1ZGVkLiBPbmx5IHRoZSBPUkRFUlxuICogb2YgdGhlIG5vdGVzIGluIHRoZSBhbnN3ZXIgZGlmZmVyczogdGhlIGZpbGUgaXRzZWxmIGZpcnN0LCB0aGVuIHRoZSBjYW5kaWRhdGVzIGluIGluZGV4IG9yZGVyLlxuICpcbiAqIFRoZSBpbmRleCBpcyBrZXB0IGZyZXNoIHdpdGhvdXQgbGlzdGVuaW5nIHRvIGFueXRoaW5nLiBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgIG1hcHMgYSBub3RlIHRvIHRoZSBoYXNoIG9mXG4gKiBpdHMgY29udGVudCwgYW5kIHRoZSByZWZlcmVuY2VzIGFyZSBhIGZ1bmN0aW9uIG9mIHRoYXQgaGFzaCwgc28gZWFjaCBxdWVyeSBjb21wYXJlcyBldmVyeSBub3RlJ3MgaGFzaFxuICogYWdhaW5zdCB0aGUgb25lIGl0IHdhcyBpbmRleGVkIGF0IGFuZCByZS1yZWFkcyBvbmx5IHRoZSBub3RlcyB0aGF0IGNoYW5nZWQuIFRoYXQgaXMgb25lIHByb3BlcnR5IGNvbXBhcmlzb25cbiAqIHBlciBub3RlIGFuZCBubyByZXNvbHV0aW9uIGF0IGFsbCwgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNjYW4gT2JzaWRpYW4gaXRzZWxmIHJ1bnMgb24gZXZlcnkgcmVuYW1lXG4gKiAoYHVwZGF0ZVJlbGF0ZWRMaW5rc2ApLiBEZXBlbmRpbmcgb24gbm8gZXZlbnQgYWxzbyBtZWFucyBkZXBlbmRpbmcgb24gbm8gZXZlbnQgT1JERVIsIHdoaWNoIG1hdHRlcnMgYmVjYXVzZVxuICogcmVuYW1lIGhhbmRsZXJzIHF1ZXJ5IGZyb20gaW5zaWRlIHRoZSB2YXVsdCBgcmVuYW1lYCBldmVudC5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgaW5kZXggcGVyIGBBcHBgLCBoZWxkIGluIHRoZSByZWFsbS1nbG9iYWwgc2hhcmVkLXN0YXRlIGJhZywgc28gZXZlcnkgcGx1Z2luIGJ1bmRsaW5nIHRoaXMgbGlicmFyeVxuICogc2hhcmVzIGl0IHJhdGhlciB0aGFuIGVhY2ggYnVpbGRpbmcgaXRzIG93bi4gV2hhdCBpcyBzdG9yZWQgdGhlcmUgaXMgcGxhaW4gZGF0YSByZWFkIHN0cnVjdHVyYWxseSAobWFwcyBhbmRcbiAqIHNldHMsIG5ldmVyIGEgY2xhc3MgaW5zdGFuY2UpLCBiZWNhdXNlIHRoZSBiYWcgY3Jvc3NlcyBjb3BpZXMgb2YgdGhpcyBsaWJyYXJ5IGF0IGRpZmZlcmVudCB2ZXJzaW9ucy4gVGhlIGtleVxuICogY2FycmllcyBhIHZlcnNpb246IGEgY2hhbmdlIHRvIHdoYXQgYSBrZXkgTUVBTlMgKGhvdyBhIG5hbWUga2V5IGlzIGRlcml2ZWQpIG11c3QgbW92ZSB0byBhIG5ldyBrZXksIHNvIGFuIG9sZGVyXG4gKiBjb3B5IG5ldmVyIHJlYWRzIGFuIGluZGV4IGJ1aWx0IGJ5IGRpZmZlcmVudCBydWxlcy5cbiAqXG4gKiBUaGUgYGxpbmtVcGRhdGVyc2Agc2lkZSBpcyBzdGlsbCB3YWxrZWQgaW4gZnVsbCBvbiBldmVyeSBxdWVyeS4gSW4gMS4xNC4yIHRoZSBvbmx5IHVwZGF0ZXIgaXMgdGhlIGNhbnZhc1xuICogb25lLCB3aG9zZSByZWZlcmVuY2VzIGxpdmUgaW4gdGhlIGNhbnZhcyBpbmRleCByYXRoZXIgdGhhbiBpbiBgZmlsZUNhY2hlYCwgc28gdGhlcmUgaXMgbm8gaGFzaCB0byBrZXkgdGhlbVxuICogYnk7IGEgdmF1bHQncyBjYW52YXNlcyBob2xkIGEgc21hbGwgZnJhY3Rpb24gb2YgaXRzIHJlZmVyZW5jZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IEN1c3RvbUFycmF5RGljdEltcGwgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuaW50ZXJmYWNlIEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgcmVhZG9ubHkgaW5kZXhlZEhhc2hlczogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgbmFtZUtleVNvdXJjZVBhdGhzOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj47XG4gIHJlYWRvbmx5IHNvdXJjZVBhdGhOYW1lS2V5czogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+O1xufVxuXG5jb25zdCBNQVJLRE9XTl9TVUZGSVggPSAnLm1kJztcblxuLyoqXG4gKiBUaGUgc2FtZSBhbnN3ZXIgYXMgYGFwcC5tZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIChPYnNpZGlhbidzIG93biwgdW5wYXRjaGVkKSwgZnJvbSB0aGUgY2FuZGlkYXRlXG4gKiBub3RlcyBvbmx5LiBTZWUgdGhlIGZpbGUgaGVhZGVyIGZvciB3aHkgdGhlIGFuc3dlciBpcyBleGFjdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgd2hvc2UgYmFja2xpbmtzIHRvIGZpbmQuIEl0IG1heSBiZSBhIG5vbi1leGlzdGluZyBmaWxlIHJlZ2lzdGVyZWQgZm9yIHRoZSBxdWVyeS5cbiAqIEByZXR1cm5zIFRoZSByZWZlcmVuY2VzIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAsIGtleWVkIGJ5IHRoZSBwYXRoIG9mIHRoZSBub3RlIG9yIGNhbnZhcyBob2xkaW5nIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRleGVkQmFja2xpbmtzRm9yRmlsZShhcHA6IEFwcCwgZmlsZTogVEZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGRhdGEgPSBnZXRCYWNrbGlua0luZGV4RGF0YShhcHApO1xuICByZWZyZXNoKGFwcCwgZGF0YSk7XG5cbiAgY29uc3QgbWV0YWRhdGFDYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlO1xuICBjb25zdCBiYWNrbGlua3MgPSBuZXcgQ3VzdG9tQXJyYXlEaWN0SW1wbDxSZWZlcmVuY2U+KCk7XG5cbiAgLy8gVGhlIGZpbGUgaXRzZWxmIGlzIGEgY2FuZGlkYXRlIGZvciBpdHMgb3duIGBbWyNIZWFkaW5nXV1gIHJlZmVyZW5jZXMsIHdob3NlIGVtcHR5IGxpbmtwYXRoIG5hbWVzIG5vIHNlZ21lbnQuXG4gIGNvbnN0IGNhbmRpZGF0ZVNvdXJjZVBhdGhzID0gbmV3IFNldDxzdHJpbmc+KFtmaWxlLnBhdGhdKTtcbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIGdldFRhcmdldE5hbWVLZXlzKGZpbGUubmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IHNvdXJjZVBhdGggb2YgZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpID8/IFtdKSB7XG4gICAgICBjYW5kaWRhdGVTb3VyY2VQYXRocy5hZGQoc291cmNlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGNhbmRpZGF0ZVNvdXJjZVBhdGhzKSB7XG4gICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgZ2V0Q2FjaGVSZWZlcmVuY2VzKGdldENhY2hlZE1ldGFkYXRhKGFwcCwgc291cmNlUGF0aCkpKSB7XG4gICAgICBjb2xsZWN0KHNvdXJjZVBhdGgsIHJlZmVyZW5jZSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5rVXBkYXRlciBvZiBPYmplY3QudmFsdWVzKG1ldGFkYXRhQ2FjaGUubGlua1VwZGF0ZXJzKSkge1xuICAgIGxpbmtVcGRhdGVyPy5pdGVyYXRlUmVmZXJlbmNlcyhjb2xsZWN0KTtcbiAgfVxuXG4gIHJldHVybiBiYWNrbGlua3M7XG5cbiAgZnVuY3Rpb24gY29sbGVjdChzb3VyY2VQYXRoOiBzdHJpbmcsIHJlZmVyZW5jZTogUmVmZXJlbmNlKTogdm9pZCB7XG4gICAgaWYgKG1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoZ2V0TGlua3BhdGgocmVmZXJlbmNlLmxpbmspLCBzb3VyY2VQYXRoKSA9PT0gZmlsZSkge1xuICAgICAgYmFja2xpbmtzLmFkZChzb3VyY2VQYXRoLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCYWNrbGlua0luZGV4RGF0YShhcHA6IEFwcCk6IEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgY29uc3QgaW5kZXhlcyA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSgnYmFja2xpbmtJbmRleGVzQnlBcHBWMScsIG5ldyBXZWFrTWFwPEFwcCwgQmFja2xpbmtJbmRleERhdGE+KCkpLnZhbHVlO1xuICBsZXQgZGF0YSA9IGluZGV4ZXMuZ2V0KGFwcCk7XG4gIGlmICghZGF0YSkge1xuICAgIGRhdGEgPSB7XG4gICAgICBpbmRleGVkSGFzaGVzOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgICAgbmFtZUtleVNvdXJjZVBhdGhzOiBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCksXG4gICAgICBzb3VyY2VQYXRoTmFtZUtleXM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKVxuICAgIH07XG4gICAgaW5kZXhlcy5zZXQoYXBwLCBkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FjaGVkTWV0YWRhdGEoYXBwOiBBcHAsIHNvdXJjZVBhdGg6IHN0cmluZyk6IENhY2hlZE1ldGFkYXRhIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFzaCA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtzb3VyY2VQYXRoXT8uaGFzaDtcbiAgcmV0dXJuIGhhc2ggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbaGFzaF07XG59XG5cbi8qKlxuICogTGlzdHMgYSBjYWNoZWQgbm90ZSdzIHJlZmVyZW5jZXMgaW4gdGhlIG9yZGVyIE9ic2lkaWFuJ3Mgb3duIHdhbGsgdmlzaXRzIHRoZW06IGBmcm9udG1hdHRlckxpbmtzYCwgdGhlblxuICogYGxpbmtzYCwgdGhlbiBgZW1iZWRzYC5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgbm90ZSdzIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBub3RlJ3MgcmVmZXJlbmNlcy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IHVuZGVmaW5lZCk6IFJlZmVyZW5jZVtdIHtcbiAgcmV0dXJuIGNhY2hlID8gWy4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MgPz8gW10sIC4uLmNhY2hlLmxpbmtzID8/IFtdLCAuLi5jYWNoZS5lbWJlZHMgPz8gW11dIDogW107XG59XG5cbi8qKlxuICogU3RyaXBzIHRoZSBzdWJwYXRoIGZyb20gYSBsaW5rLCB0aGUgd2F5IE9ic2lkaWFuJ3MgYGdldExpbmtwYXRoYCBkb2VzLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIGxpbmsgdGV4dCwgc3VjaCBhcyBgZm9sZGVyL05vdGUjSGVhZGluZ2AuXG4gKiBAcmV0dXJucyBUaGUgbGlua3BhdGgsIHN1Y2ggYXMgYGZvbGRlci9Ob3RlYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TGlua3BhdGgobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaEluZGV4ID0gbGluay5pbmRleE9mKCcjJyk7XG4gIHJldHVybiBoYXNoSW5kZXggPT09IC0xID8gbGluayA6IGxpbmsuc2xpY2UoMCwgaGFzaEluZGV4KTtcbn1cblxuLyoqXG4gKiBUaGUga2V5IGEgcmVmZXJlbmNlIGlzIGluZGV4ZWQgdW5kZXI6IHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgaXRzIGxpbmtwYXRoLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIHJlZmVyZW5jZSdzIGxpbmsgdGV4dC5cbiAqIEByZXR1cm5zIFRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZU5hbWVLZXkobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGlua3BhdGggPSBnZXRMaW5rcGF0aChsaW5rKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbGlua3BhdGguc2xpY2UobGlua3BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xufVxuXG4vKipcbiAqIFRoZSBrZXlzIHVuZGVyIHdoaWNoIGEgcmVmZXJlbmNlIHRvIGEgZmlsZSB3aXRoIHRoaXMgbmFtZSBjYW4gYmUgaW5kZXhlZC4gYGdldExpbmtwYXRoRGVzdGAgbWF0Y2hlcyBhXG4gKiBzZWdtZW50IGFnYWluc3QgdGhlIGZpbGUncyBuYW1lLCBhbmQgYWdhaW5zdCB0aGUgbmFtZSB3aXRoIGAubWRgIGFwcGVuZGVkLCBzbyBhIG5vdGUgbmFtZWQgYE5vdGUubWRgIGlzXG4gKiByZWFjaGFibGUgZnJvbSBib3RoIGBub3RlLm1kYCBhbmQgYG5vdGVgLlxuICpcbiAqIEBwYXJhbSBmaWxlTmFtZSAtIFRoZSBmaWxlJ3MgbmFtZSwgZXh0ZW5zaW9uIGluY2x1ZGVkLlxuICogQHJldHVybnMgVGhlIGtleXMuXG4gKi9cbmZ1bmN0aW9uIGdldFRhcmdldE5hbWVLZXlzKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG5hbWVLZXkgPSBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbmFtZUtleS5lbmRzV2l0aChNQVJLRE9XTl9TVUZGSVgpID8gW25hbWVLZXksIG5hbWVLZXkuc2xpY2UoMCwgLU1BUktET1dOX1NVRkZJWC5sZW5ndGgpXSA6IFtuYW1lS2V5XTtcbn1cblxuZnVuY3Rpb24gaW5kZXhTb3VyY2UoYXBwOiBBcHAsIGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhLCBzb3VyY2VQYXRoOiBzdHJpbmcsIGhhc2g6IHN0cmluZyk6IHZvaWQge1xuICByZW1vdmVTb3VyY2UoZGF0YSwgc291cmNlUGF0aCk7XG4gIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtoYXNoXTtcbiAgLypcbiAgICogQSBub3RlJ3MgYGZpbGVDYWNoZWAgZW50cnkgY2FuIGNhcnJ5IGl0cyBuZXcgaGFzaCBiZWZvcmUgdGhlIG1ldGFkYXRhIGZvciB0aGF0IGhhc2ggaXMgc3RvcmVkLiBSZWNvcmRpbmdcbiAgICogdGhlIGhhc2ggdGhlbiB3b3VsZCBwaW4gdGhlIG5vdGUgYXQgXCJubyByZWZlcmVuY2VzXCIgdW50aWwgaXRzIGNvbnRlbnQgY2hhbmdlZCBhZ2Fpbiwgc28gbGVhdmUgaXRcbiAgICogdW5yZWNvcmRlZCBhbmQgbGV0IHRoZSBuZXh0IHF1ZXJ5IGxvb2sgYWdhaW4uXG4gICAqL1xuICBpZiAoIWNhY2hlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmFtZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlKSkge1xuICAgIG5hbWVLZXlzLmFkZChnZXRSZWZlcmVuY2VOYW1lS2V5KHJlZmVyZW5jZS5saW5rKSk7XG4gIH1cbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIG5hbWVLZXlzKSB7XG4gICAgbGV0IHNvdXJjZVBhdGhzID0gZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpO1xuICAgIGlmICghc291cmNlUGF0aHMpIHtcbiAgICAgIHNvdXJjZVBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5zZXQobmFtZUtleSwgc291cmNlUGF0aHMpO1xuICAgIH1cbiAgICBzb3VyY2VQYXRocy5hZGQoc291cmNlUGF0aCk7XG4gIH1cbiAgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuc2V0KHNvdXJjZVBhdGgsIG5hbWVLZXlzKTtcbiAgZGF0YS5pbmRleGVkSGFzaGVzLnNldChzb3VyY2VQYXRoLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gcmVmcmVzaChhcHA6IEFwcCwgZGF0YTogQmFja2xpbmtJbmRleERhdGEpOiB2b2lkIHtcbiAgY29uc3QgZmlsZUNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlO1xuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5rZXlzKCkpIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oZmlsZUNhY2hlLCBzb3VyY2VQYXRoKSkge1xuICAgICAgcmVtb3ZlU291cmNlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW3NvdXJjZVBhdGgsIHsgaGFzaCB9XSBvZiBPYmplY3QuZW50cmllcyhmaWxlQ2FjaGUpKSB7XG4gICAgaWYgKGRhdGEuaW5kZXhlZEhhc2hlcy5nZXQoc291cmNlUGF0aCkgIT09IGhhc2gpIHtcbiAgICAgIGluZGV4U291cmNlKGFwcCwgZGF0YSwgc291cmNlUGF0aCwgaGFzaCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNvdXJjZShkYXRhOiBCYWNrbGlua0luZGV4RGF0YSwgc291cmNlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5nZXQoc291cmNlUGF0aCkgPz8gW10pIHtcbiAgICBjb25zdCBzb3VyY2VQYXRocyA9IGVuc3VyZU5vbk51bGxhYmxlKGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSk7XG4gICAgc291cmNlUGF0aHMuZGVsZXRlKHNvdXJjZVBhdGgpO1xuICAgIGlmIChzb3VyY2VQYXRocy5zaXplID09PSAwKSB7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5kZWxldGUobmFtZUtleSk7XG4gICAgfVxuICB9XG4gIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLmRlbGV0ZShzb3VyY2VQYXRoKTtcbiAgZGF0YS5pbmRl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
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *