@mnaoumov/obsidian-lib 1.0.0 → 1.0.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 (386) hide show
  1. package/README.md +9 -1
  2. package/dist/lib/cjs/__merged.cjs +40 -64
  3. package/dist/lib/cjs/active-file-provider.cjs +40 -64
  4. package/dist/lib/cjs/app.cjs +40 -64
  5. package/dist/lib/cjs/async-with-notice.cjs +40 -64
  6. package/dist/lib/cjs/attachment-path.cjs +40 -64
  7. package/dist/lib/cjs/attachment-unit-folder.cjs +40 -64
  8. package/dist/lib/cjs/backlink-index.cjs +41 -65
  9. package/dist/lib/cjs/backlink.cjs +40 -64
  10. package/dist/lib/cjs/bases-view-registrar.cjs +40 -64
  11. package/dist/lib/cjs/callout.cjs +40 -64
  12. package/dist/lib/cjs/canvas.cjs +40 -64
  13. package/dist/lib/cjs/case-insensitive-file-index.cjs +40 -64
  14. package/dist/lib/cjs/code-block-markdown-information.cjs +40 -64
  15. package/dist/lib/cjs/code-block-reg-exp.cjs +40 -64
  16. package/dist/lib/cjs/codemirror/index.cjs +40 -64
  17. package/dist/lib/cjs/codemirror/state-field-spec.cjs +40 -64
  18. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +40 -64
  19. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +40 -64
  20. package/dist/lib/cjs/command-handlers/command-handler.cjs +40 -64
  21. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +40 -64
  22. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +40 -64
  23. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +40 -64
  24. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +40 -64
  25. package/dist/lib/cjs/command-handlers/index.cjs +40 -64
  26. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +40 -64
  27. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +40 -64
  28. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +40 -64
  29. package/dist/lib/cjs/command-registrar.cjs +40 -64
  30. package/dist/lib/cjs/community-plugins.cjs +40 -64
  31. package/dist/lib/cjs/components/abort-signal-component.cjs +40 -64
  32. package/dist/lib/cjs/components/all-windows-event-component.cjs +40 -64
  33. package/dist/lib/cjs/components/async-error-handler-component.cjs +40 -64
  34. package/dist/lib/cjs/components/async-events-component.cjs +40 -64
  35. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +40 -64
  36. package/dist/lib/cjs/components/component-ex.cjs +41 -65
  37. package/dist/lib/cjs/components/console-debug-component.cjs +40 -64
  38. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +40 -64
  39. package/dist/lib/cjs/components/disposable-component.cjs +40 -64
  40. package/dist/lib/cjs/components/embed-extensions-component.cjs +40 -64
  41. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +40 -64
  42. package/dist/lib/cjs/components/index.cjs +40 -64
  43. package/dist/lib/cjs/components/layout-ready-component.cjs +40 -64
  44. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +40 -64
  45. package/dist/lib/cjs/components/monkey-around-component.cjs +40 -64
  46. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +40 -64
  47. package/dist/lib/cjs/components/plugin-context-component.cjs +40 -64
  48. package/dist/lib/cjs/components/plugin-gate-component.cjs +41 -65
  49. package/dist/lib/cjs/components/plugin-notice-component.cjs +40 -64
  50. package/dist/lib/cjs/components/plugin-settings-component.cjs +41 -65
  51. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +40 -64
  52. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +40 -64
  53. package/dist/lib/cjs/components/pointer-position-component.cjs +40 -64
  54. package/dist/lib/cjs/components/registry-component.cjs +40 -64
  55. package/dist/lib/cjs/components/release-notes-component.cjs +40 -64
  56. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +40 -64
  57. package/dist/lib/cjs/components/rmdir-guard-component.cjs +40 -64
  58. package/dist/lib/cjs/components/settings-migration-component.cjs +40 -64
  59. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +40 -64
  60. package/dist/lib/cjs/components/templates-language-component.cjs +40 -64
  61. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +40 -64
  62. package/dist/lib/cjs/constructors/index.cjs +40 -64
  63. package/dist/lib/cjs/css-class.cjs +40 -64
  64. package/dist/lib/cjs/data-handler.cjs +40 -64
  65. package/dist/lib/cjs/dataview-link.cjs +40 -64
  66. package/dist/lib/cjs/dataview.cjs +40 -64
  67. package/dist/lib/cjs/debug.cjs +40 -64
  68. package/dist/lib/cjs/demo-vault-helper-settings.cjs +40 -64
  69. package/dist/lib/cjs/demo-vault-helper.cjs +40 -64
  70. package/dist/lib/cjs/demo-vault-naming.cjs +40 -64
  71. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +40 -64
  72. package/dist/lib/cjs/desktop-trusted-input.cjs +40 -64
  73. package/dist/lib/cjs/editor-extension-registrar.cjs +40 -64
  74. package/dist/lib/cjs/editor-suggest-registrar.cjs +40 -64
  75. package/dist/lib/cjs/editor.cjs +40 -64
  76. package/dist/lib/cjs/events.cjs +40 -64
  77. package/dist/lib/cjs/extensions-registrar.cjs +40 -64
  78. package/dist/lib/cjs/file-change.cjs +40 -64
  79. package/dist/lib/cjs/file-explorer.cjs +40 -64
  80. package/dist/lib/cjs/file-manager.cjs +40 -64
  81. package/dist/lib/cjs/file-system.cjs +40 -64
  82. package/dist/lib/cjs/folder-note.cjs +40 -64
  83. package/dist/lib/cjs/frontmatter-formatting.cjs +41 -65
  84. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +40 -64
  85. package/dist/lib/cjs/frontmatter.cjs +40 -64
  86. package/dist/lib/cjs/generated-during-build.cjs +41 -65
  87. package/dist/lib/cjs/generated-during-build.d.cts +8 -2
  88. package/dist/lib/cjs/hover-link-source-registrar.cjs +40 -64
  89. package/dist/lib/cjs/html-element.cjs +40 -64
  90. package/dist/lib/cjs/i18n/custom-type-options.cjs +40 -64
  91. package/dist/lib/cjs/i18n/default-translations.cjs +40 -64
  92. package/dist/lib/cjs/i18n/i18n.cjs +40 -64
  93. package/dist/lib/cjs/i18n/index.cjs +40 -64
  94. package/dist/lib/cjs/i18n/locales/en.cjs +40 -64
  95. package/dist/lib/cjs/i18n/locales/index.cjs +40 -64
  96. package/dist/lib/cjs/i18n/locales/translations-map.cjs +40 -64
  97. package/dist/lib/cjs/index.cjs +40 -64
  98. package/dist/lib/cjs/is-in-obsidian.cjs +40 -64
  99. package/dist/lib/cjs/library-styles.cjs +40 -64
  100. package/dist/lib/cjs/library.cjs +40 -64
  101. package/dist/lib/cjs/link-name.cjs +40 -64
  102. package/dist/lib/cjs/link-update-progress.cjs +40 -64
  103. package/dist/lib/cjs/link.cjs +40 -64
  104. package/dist/lib/cjs/logger.cjs +40 -64
  105. package/dist/lib/cjs/loop.cjs +40 -64
  106. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +40 -64
  107. package/dist/lib/cjs/markdown-code-block-processor.cjs +40 -64
  108. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +40 -64
  109. package/dist/lib/cjs/markdown-view.cjs +40 -64
  110. package/dist/lib/cjs/markdown.cjs +40 -64
  111. package/dist/lib/cjs/menu-event-registrar.cjs +40 -64
  112. package/dist/lib/cjs/metadata-cache.cjs +40 -64
  113. package/dist/lib/cjs/mobile-trusted-input.cjs +40 -64
  114. package/dist/lib/cjs/modals/alert.cjs +40 -64
  115. package/dist/lib/cjs/modals/confirm.cjs +40 -64
  116. package/dist/lib/cjs/modals/index.cjs +40 -64
  117. package/dist/lib/cjs/modals/minimizable-modal.cjs +40 -64
  118. package/dist/lib/cjs/modals/modal-command-builder.cjs +40 -64
  119. package/dist/lib/cjs/modals/modal.cjs +40 -64
  120. package/dist/lib/cjs/modals/prompt.cjs +40 -64
  121. package/dist/lib/cjs/modals/select-item.cjs +40 -64
  122. package/dist/lib/cjs/modals/select-option.cjs +40 -64
  123. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +40 -64
  124. package/dist/lib/cjs/note-priority.cjs +41 -65
  125. package/dist/lib/cjs/notebook-navigator.cjs +40 -64
  126. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +40 -64
  127. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +40 -64
  128. package/dist/lib/cjs/obsidian-settings.cjs +40 -64
  129. package/dist/lib/cjs/parse-link.cjs +40 -64
  130. package/dist/lib/cjs/path-settings.cjs +40 -64
  131. package/dist/lib/cjs/pdf.cjs +40 -64
  132. package/dist/lib/cjs/plugin/index.cjs +40 -64
  133. package/dist/lib/cjs/plugin/plugin-api.cjs +40 -64
  134. package/dist/lib/cjs/plugin/plugin-context.cjs +40 -64
  135. package/dist/lib/cjs/plugin/plugin-event-source.cjs +40 -64
  136. package/dist/lib/cjs/plugin/plugin-install-state.cjs +40 -64
  137. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +40 -64
  138. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +41 -65
  139. package/dist/lib/cjs/plugin/plugin.cjs +41 -65
  140. package/dist/lib/cjs/plugin/settings-migration-api.cjs +40 -64
  141. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +40 -64
  142. package/dist/lib/cjs/popovers/field-popover.cjs +40 -64
  143. package/dist/lib/cjs/popovers/index.cjs +40 -64
  144. package/dist/lib/cjs/popovers/popover-anchor.cjs +40 -64
  145. package/dist/lib/cjs/popovers/popover.cjs +40 -64
  146. package/dist/lib/cjs/property-entry.cjs +40 -64
  147. package/dist/lib/cjs/queue.cjs +40 -64
  148. package/dist/lib/cjs/react/app-context.cjs +40 -64
  149. package/dist/lib/cjs/react/index.cjs +40 -64
  150. package/dist/lib/cjs/reference.cjs +40 -64
  151. package/dist/lib/cjs/resource-lock.cjs +40 -64
  152. package/dist/lib/cjs/resource-url.cjs +40 -64
  153. package/dist/lib/cjs/ribbon-icon-registrar.cjs +40 -64
  154. package/dist/lib/cjs/setting-components/checkbox-component.cjs +40 -64
  155. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +40 -64
  156. package/dist/lib/cjs/setting-components/date-component.cjs +40 -64
  157. package/dist/lib/cjs/setting-components/date-time-component.cjs +40 -64
  158. package/dist/lib/cjs/setting-components/email-component.cjs +40 -64
  159. package/dist/lib/cjs/setting-components/file-component.cjs +40 -64
  160. package/dist/lib/cjs/setting-components/index.cjs +40 -64
  161. package/dist/lib/cjs/setting-components/month-component.cjs +40 -64
  162. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +41 -65
  163. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +40 -64
  164. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +40 -64
  165. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +40 -64
  166. package/dist/lib/cjs/setting-components/number-component.cjs +40 -64
  167. package/dist/lib/cjs/setting-components/password-component.cjs +40 -64
  168. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +40 -64
  169. package/dist/lib/cjs/setting-components/telephone-component.cjs +40 -64
  170. package/dist/lib/cjs/setting-components/text-based-component.cjs +40 -64
  171. package/dist/lib/cjs/setting-components/time-component.cjs +40 -64
  172. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +40 -64
  173. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +40 -64
  174. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +40 -64
  175. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +40 -64
  176. package/dist/lib/cjs/setting-components/typed-text-component.cjs +41 -65
  177. package/dist/lib/cjs/setting-components/url-component.cjs +40 -64
  178. package/dist/lib/cjs/setting-components/validator-component.cjs +41 -65
  179. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +40 -64
  180. package/dist/lib/cjs/setting-components/week-component.cjs +40 -64
  181. package/dist/lib/cjs/setting-ex.cjs +40 -64
  182. package/dist/lib/cjs/setting-group-ex.cjs +40 -64
  183. package/dist/lib/cjs/status-bar-item-registrar.cjs +40 -64
  184. package/dist/lib/cjs/templater.cjs +40 -64
  185. package/dist/lib/cjs/transformers/duration-transformer.cjs +40 -64
  186. package/dist/lib/cjs/transformers/index.cjs +40 -64
  187. package/dist/lib/cjs/trusted-input.cjs +40 -64
  188. package/dist/lib/cjs/validation.cjs +40 -64
  189. package/dist/lib/cjs/vault-delete.cjs +40 -64
  190. package/dist/lib/cjs/vault-transaction.cjs +40 -64
  191. package/dist/lib/cjs/vault.cjs +41 -65
  192. package/dist/lib/cjs/view-registrar.cjs +40 -64
  193. package/dist/lib/cjs/workspace.cjs +40 -64
  194. package/dist/lib/esm/__merged.mjs +6 -14
  195. package/dist/lib/esm/active-file-provider.mjs +6 -14
  196. package/dist/lib/esm/app.mjs +6 -14
  197. package/dist/lib/esm/async-with-notice.mjs +6 -14
  198. package/dist/lib/esm/attachment-path.mjs +6 -14
  199. package/dist/lib/esm/attachment-unit-folder.mjs +6 -14
  200. package/dist/lib/esm/backlink-index.mjs +6 -14
  201. package/dist/lib/esm/backlink.mjs +6 -14
  202. package/dist/lib/esm/bases-view-registrar.mjs +6 -14
  203. package/dist/lib/esm/callout.mjs +6 -14
  204. package/dist/lib/esm/canvas.mjs +6 -14
  205. package/dist/lib/esm/case-insensitive-file-index.mjs +6 -14
  206. package/dist/lib/esm/code-block-markdown-information.mjs +5 -13
  207. package/dist/lib/esm/code-block-reg-exp.mjs +6 -14
  208. package/dist/lib/esm/codemirror/index.mjs +6 -14
  209. package/dist/lib/esm/codemirror/state-field-spec.mjs +5 -13
  210. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +6 -14
  211. package/dist/lib/esm/command-handlers/command-handler-component.mjs +6 -14
  212. package/dist/lib/esm/command-handlers/command-handler.mjs +6 -14
  213. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +6 -14
  214. package/dist/lib/esm/command-handlers/file-command-handler.mjs +6 -14
  215. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +6 -14
  216. package/dist/lib/esm/command-handlers/global-command-handler.mjs +6 -14
  217. package/dist/lib/esm/command-handlers/index.mjs +6 -14
  218. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +6 -14
  219. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +6 -14
  220. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +6 -14
  221. package/dist/lib/esm/command-registrar.mjs +6 -14
  222. package/dist/lib/esm/community-plugins.mjs +6 -14
  223. package/dist/lib/esm/components/abort-signal-component.mjs +6 -14
  224. package/dist/lib/esm/components/all-windows-event-component.mjs +6 -14
  225. package/dist/lib/esm/components/async-error-handler-component.mjs +6 -14
  226. package/dist/lib/esm/components/async-events-component.mjs +6 -14
  227. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +6 -14
  228. package/dist/lib/esm/components/component-ex.mjs +6 -14
  229. package/dist/lib/esm/components/console-debug-component.mjs +6 -14
  230. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +6 -14
  231. package/dist/lib/esm/components/disposable-component.mjs +6 -14
  232. package/dist/lib/esm/components/embed-extensions-component.mjs +6 -14
  233. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +6 -14
  234. package/dist/lib/esm/components/index.mjs +6 -14
  235. package/dist/lib/esm/components/layout-ready-component.mjs +6 -14
  236. package/dist/lib/esm/components/menu-event-registrar-component.mjs +6 -14
  237. package/dist/lib/esm/components/monkey-around-component.mjs +6 -14
  238. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +6 -14
  239. package/dist/lib/esm/components/plugin-context-component.mjs +6 -14
  240. package/dist/lib/esm/components/plugin-gate-component.mjs +6 -14
  241. package/dist/lib/esm/components/plugin-notice-component.mjs +6 -14
  242. package/dist/lib/esm/components/plugin-settings-component.mjs +6 -14
  243. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +6 -14
  244. package/dist/lib/esm/components/plugin-suggestion-component.mjs +6 -14
  245. package/dist/lib/esm/components/pointer-position-component.mjs +6 -14
  246. package/dist/lib/esm/components/registry-component.mjs +6 -14
  247. package/dist/lib/esm/components/release-notes-component.mjs +6 -14
  248. package/dist/lib/esm/components/rename-delete-handler-component.mjs +6 -14
  249. package/dist/lib/esm/components/rmdir-guard-component.mjs +6 -14
  250. package/dist/lib/esm/components/settings-migration-component.mjs +6 -14
  251. package/dist/lib/esm/components/syntax-highlighting-component.mjs +6 -14
  252. package/dist/lib/esm/components/templates-language-component.mjs +6 -14
  253. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +6 -14
  254. package/dist/lib/esm/constructors/index.mjs +6 -14
  255. package/dist/lib/esm/css-class.mjs +6 -14
  256. package/dist/lib/esm/data-handler.mjs +6 -14
  257. package/dist/lib/esm/dataview-link.mjs +6 -14
  258. package/dist/lib/esm/dataview.mjs +6 -14
  259. package/dist/lib/esm/debug.mjs +6 -14
  260. package/dist/lib/esm/demo-vault-helper-settings.mjs +5 -13
  261. package/dist/lib/esm/demo-vault-helper.mjs +6 -14
  262. package/dist/lib/esm/demo-vault-naming.mjs +6 -14
  263. package/dist/lib/esm/desktop-demo-vault-opener.mjs +6 -14
  264. package/dist/lib/esm/desktop-trusted-input.mjs +6 -14
  265. package/dist/lib/esm/editor-extension-registrar.mjs +6 -14
  266. package/dist/lib/esm/editor-suggest-registrar.mjs +6 -14
  267. package/dist/lib/esm/editor.mjs +6 -14
  268. package/dist/lib/esm/events.mjs +6 -14
  269. package/dist/lib/esm/extensions-registrar.mjs +6 -14
  270. package/dist/lib/esm/file-change.mjs +6 -14
  271. package/dist/lib/esm/file-explorer.mjs +6 -14
  272. package/dist/lib/esm/file-manager.mjs +6 -14
  273. package/dist/lib/esm/file-system.mjs +6 -14
  274. package/dist/lib/esm/folder-note.mjs +6 -14
  275. package/dist/lib/esm/frontmatter-formatting.mjs +6 -14
  276. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +6 -14
  277. package/dist/lib/esm/frontmatter.mjs +6 -14
  278. package/dist/lib/esm/generated-during-build.d.mts +8 -2
  279. package/dist/lib/esm/generated-during-build.mjs +7 -15
  280. package/dist/lib/esm/hover-link-source-registrar.mjs +6 -14
  281. package/dist/lib/esm/html-element.mjs +6 -14
  282. package/dist/lib/esm/i18n/custom-type-options.mjs +6 -14
  283. package/dist/lib/esm/i18n/default-translations.mjs +6 -14
  284. package/dist/lib/esm/i18n/i18n.mjs +6 -14
  285. package/dist/lib/esm/i18n/index.mjs +6 -14
  286. package/dist/lib/esm/i18n/locales/en.mjs +6 -14
  287. package/dist/lib/esm/i18n/locales/index.mjs +6 -14
  288. package/dist/lib/esm/i18n/locales/translations-map.mjs +6 -14
  289. package/dist/lib/esm/index.mjs +6 -14
  290. package/dist/lib/esm/is-in-obsidian.mjs +6 -14
  291. package/dist/lib/esm/library-styles.mjs +6 -14
  292. package/dist/lib/esm/library.mjs +6 -14
  293. package/dist/lib/esm/link-name.mjs +6 -14
  294. package/dist/lib/esm/link-update-progress.mjs +5 -13
  295. package/dist/lib/esm/link.mjs +6 -14
  296. package/dist/lib/esm/logger.mjs +6 -14
  297. package/dist/lib/esm/loop.mjs +6 -14
  298. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +6 -14
  299. package/dist/lib/esm/markdown-code-block-processor.mjs +6 -14
  300. package/dist/lib/esm/markdown-post-processor-registrar.mjs +6 -14
  301. package/dist/lib/esm/markdown-view.mjs +6 -14
  302. package/dist/lib/esm/markdown.mjs +6 -14
  303. package/dist/lib/esm/menu-event-registrar.mjs +5 -13
  304. package/dist/lib/esm/metadata-cache.mjs +6 -14
  305. package/dist/lib/esm/mobile-trusted-input.mjs +6 -14
  306. package/dist/lib/esm/modals/alert.mjs +6 -14
  307. package/dist/lib/esm/modals/confirm.mjs +6 -14
  308. package/dist/lib/esm/modals/index.mjs +6 -14
  309. package/dist/lib/esm/modals/minimizable-modal.mjs +6 -14
  310. package/dist/lib/esm/modals/modal-command-builder.mjs +6 -14
  311. package/dist/lib/esm/modals/modal.mjs +6 -14
  312. package/dist/lib/esm/modals/prompt.mjs +6 -14
  313. package/dist/lib/esm/modals/select-item.mjs +6 -14
  314. package/dist/lib/esm/modals/select-option.mjs +6 -14
  315. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +6 -14
  316. package/dist/lib/esm/note-priority.mjs +6 -14
  317. package/dist/lib/esm/notebook-navigator.mjs +6 -14
  318. package/dist/lib/esm/obsidian-dev-utils-state.mjs +6 -14
  319. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +6 -14
  320. package/dist/lib/esm/obsidian-settings.mjs +6 -14
  321. package/dist/lib/esm/parse-link.mjs +6 -14
  322. package/dist/lib/esm/path-settings.mjs +6 -14
  323. package/dist/lib/esm/pdf.mjs +6 -14
  324. package/dist/lib/esm/plugin/index.mjs +6 -14
  325. package/dist/lib/esm/plugin/plugin-api.mjs +6 -14
  326. package/dist/lib/esm/plugin/plugin-context.mjs +6 -14
  327. package/dist/lib/esm/plugin/plugin-event-source.mjs +6 -14
  328. package/dist/lib/esm/plugin/plugin-install-state.mjs +6 -14
  329. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +6 -14
  330. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +6 -14
  331. package/dist/lib/esm/plugin/plugin.mjs +6 -14
  332. package/dist/lib/esm/plugin/settings-migration-api.mjs +5 -13
  333. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +6 -14
  334. package/dist/lib/esm/popovers/field-popover.mjs +6 -14
  335. package/dist/lib/esm/popovers/index.mjs +6 -14
  336. package/dist/lib/esm/popovers/popover-anchor.mjs +6 -14
  337. package/dist/lib/esm/popovers/popover.mjs +6 -14
  338. package/dist/lib/esm/property-entry.mjs +6 -14
  339. package/dist/lib/esm/queue.mjs +6 -14
  340. package/dist/lib/esm/react/app-context.mjs +6 -14
  341. package/dist/lib/esm/react/index.mjs +6 -14
  342. package/dist/lib/esm/reference.mjs +6 -14
  343. package/dist/lib/esm/resource-lock.mjs +6 -14
  344. package/dist/lib/esm/resource-url.mjs +6 -14
  345. package/dist/lib/esm/ribbon-icon-registrar.mjs +6 -14
  346. package/dist/lib/esm/setting-components/checkbox-component.mjs +6 -14
  347. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +6 -14
  348. package/dist/lib/esm/setting-components/date-component.mjs +6 -14
  349. package/dist/lib/esm/setting-components/date-time-component.mjs +6 -14
  350. package/dist/lib/esm/setting-components/email-component.mjs +6 -14
  351. package/dist/lib/esm/setting-components/file-component.mjs +6 -14
  352. package/dist/lib/esm/setting-components/index.mjs +6 -14
  353. package/dist/lib/esm/setting-components/month-component.mjs +6 -14
  354. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +6 -14
  355. package/dist/lib/esm/setting-components/multiple-email-component.mjs +6 -14
  356. package/dist/lib/esm/setting-components/multiple-file-component.mjs +6 -14
  357. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -14
  358. package/dist/lib/esm/setting-components/number-component.mjs +6 -14
  359. package/dist/lib/esm/setting-components/password-component.mjs +6 -14
  360. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +6 -14
  361. package/dist/lib/esm/setting-components/telephone-component.mjs +6 -14
  362. package/dist/lib/esm/setting-components/text-based-component.mjs +6 -14
  363. package/dist/lib/esm/setting-components/time-component.mjs +6 -14
  364. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +6 -14
  365. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +6 -14
  366. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +6 -14
  367. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +6 -14
  368. package/dist/lib/esm/setting-components/typed-text-component.mjs +6 -14
  369. package/dist/lib/esm/setting-components/url-component.mjs +6 -14
  370. package/dist/lib/esm/setting-components/validator-component.mjs +6 -14
  371. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +5 -13
  372. package/dist/lib/esm/setting-components/week-component.mjs +6 -14
  373. package/dist/lib/esm/setting-ex.mjs +6 -14
  374. package/dist/lib/esm/setting-group-ex.mjs +6 -14
  375. package/dist/lib/esm/status-bar-item-registrar.mjs +6 -14
  376. package/dist/lib/esm/templater.mjs +6 -14
  377. package/dist/lib/esm/transformers/duration-transformer.mjs +6 -14
  378. package/dist/lib/esm/transformers/index.mjs +6 -14
  379. package/dist/lib/esm/trusted-input.mjs +6 -14
  380. package/dist/lib/esm/validation.mjs +6 -14
  381. package/dist/lib/esm/vault-delete.mjs +6 -14
  382. package/dist/lib/esm/vault-transaction.mjs +6 -14
  383. package/dist/lib/esm/vault.mjs +6 -14
  384. package/dist/lib/esm/view-registrar.mjs +6 -14
  385. package/dist/lib/esm/workspace.mjs +6 -14
  386. package/package.json +69 -24
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  function keepName($unknown) {
@@ -46,17 +38,13 @@ function keepName($unknown) {
46
38
  }
47
39
 
48
40
  (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
41
  const globalThisRecord = globalThis;
51
42
  ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
55
45
  ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
46
  function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
47
+ return module && module.__esModule && "default" in module ? module.default : module;
60
48
  }
61
49
  })();
62
50
  })();
@@ -65,8 +53,6 @@ function keepName($unknown) {
65
53
  if (!originalRequire || originalRequire.__isPatched) {
66
54
  return;
67
55
  }
68
-
69
- // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
56
  require = Object.assign(
71
57
  (id) => requirePatched(id),
72
58
  originalRequire,
@@ -74,53 +60,45 @@ function keepName($unknown) {
74
60
  __isPatched: true
75
61
  }
76
62
  );
77
-
78
63
  function extractDefault(module) {
79
- return module && module.__esModule && 'default' in module ? module.default : module;
64
+ return module && module.__esModule && "default" in module ? module.default : module;
80
65
  }
81
-
82
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
- '@codemirror/autocomplete',
84
- '@codemirror/collab',
85
- '@codemirror/commands',
86
- '@codemirror/language',
87
- '@codemirror/lint',
88
- '@codemirror/search',
89
- '@codemirror/state',
90
- '@codemirror/text',
91
- '@codemirror/view',
92
- '@lezer/common',
93
- '@lezer/highlight',
94
- '@lezer/lr',
95
- 'obsidian']
96
- );
97
-
98
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
- '@codemirror/closebrackets',
100
- '@codemirror/comment',
101
- '@codemirror/fold',
102
- '@codemirror/gutter',
103
- '@codemirror/highlight',
104
- '@codemirror/history',
105
- '@codemirror/matchbrackets',
106
- '@codemirror/panel',
107
- '@codemirror/rangeset',
108
- '@codemirror/rectangular-selection',
109
- '@codemirror/stream-parser',
110
- '@codemirror/tooltip']
111
- );
112
-
66
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
67
+ "@codemirror/autocomplete",
68
+ "@codemirror/collab",
69
+ "@codemirror/commands",
70
+ "@codemirror/language",
71
+ "@codemirror/lint",
72
+ "@codemirror/search",
73
+ "@codemirror/state",
74
+ "@codemirror/text",
75
+ "@codemirror/view",
76
+ "@lezer/common",
77
+ "@lezer/highlight",
78
+ "@lezer/lr",
79
+ "obsidian"
80
+ ]);
81
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
82
+ "@codemirror/closebrackets",
83
+ "@codemirror/comment",
84
+ "@codemirror/fold",
85
+ "@codemirror/gutter",
86
+ "@codemirror/highlight",
87
+ "@codemirror/history",
88
+ "@codemirror/matchbrackets",
89
+ "@codemirror/panel",
90
+ "@codemirror/rangeset",
91
+ "@codemirror/rectangular-selection",
92
+ "@codemirror/stream-parser",
93
+ "@codemirror/tooltip"
94
+ ]);
113
95
  function requirePatched(id) {
114
96
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
97
  return originalRequire?.(id);
116
98
  }
117
-
118
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
99
  if (globalThis.app.isMobile) {
120
- if (id === 'process' || id === 'node:process') {
121
- // eslint-disable-next-line no-console -- Valid usage.
100
+ if (id === "process" || id === "node:process") {
122
101
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
-
124
102
  return process;
125
103
  }
126
104
  } else {
@@ -129,8 +107,6 @@ function keepName($unknown) {
129
107
  return extractDefault(module);
130
108
  }
131
109
  }
132
-
133
- // eslint-disable-next-line no-console -- Valid usage.
134
110
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
111
  return {};
136
112
  }
@@ -186,4 +162,4 @@ class SettingGroupEx extends import_obsidian.SettingGroup {
186
162
  0 && (module.exports = {
187
163
  SettingGroupEx
188
164
  });
189
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NldHRpbmctZ3JvdXAtZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFeHRlbmRzIHRoZSBTZXR0aW5nR3JvdXAgY2xhc3Mgd2l0aCBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGFkZGluZyBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQgeyBTZXR0aW5nR3JvdXAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFNldHRpbmdFeCB9IGZyb20gJy4vc2V0dGluZy1leC50cyc7XG5cbi8qKlxuICogQW4gZXh0ZW5kZWQgc2V0dGluZyBncm91cCB0aGF0IGFsbG93cyB5b3UgdG8gYWRkIGV4dGVuZGVkIHNldHRpbmdzIHRvIHRoZSBzZXR0aW5nIGdyb3VwLlxuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ0dyb3VwRXggZXh0ZW5kcyBTZXR0aW5nR3JvdXAge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzZXR0aW5nIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoY29udGFpbmVyRWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBleHRlbmRlZCBzZXR0aW5nIHRvIHRoZSBzZXR0aW5nIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gYWRkIHRoZSBzZXR0aW5nLlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhZGRTZXR0aW5nRXgoY2FsbGJhY2s6IChzZXR0aW5nOiBTZXR0aW5nRXgpID0+IHZvaWQpOiB0aGlzIHtcbiAgICBjb25zdCBzZXR0aW5nID0gbmV3IFNldHRpbmdFeCh0aGlzLmxpc3RFbCk7XG4gICAgY2FsbGJhY2soc2V0dGluZyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFBNkI7QUFFN0Isd0JBQTBCO0FBS25CLE1BQU0sdUJBQXVCLDZCQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhDLFlBQVksYUFBMEI7QUFDM0MsVUFBTSxXQUFXO0FBQUEsRUFDbkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLGFBQWEsVUFBOEM7QUFDaEUsVUFBTSxVQUFVLElBQUksNEJBQVUsS0FBSyxNQUFNO0FBQ3pDLGFBQVMsT0FBTztBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
165
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NldHRpbmctZ3JvdXAtZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFeHRlbmRzIHRoZSBTZXR0aW5nR3JvdXAgY2xhc3Mgd2l0aCBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGFkZGluZyBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQgeyBTZXR0aW5nR3JvdXAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFNldHRpbmdFeCB9IGZyb20gJy4vc2V0dGluZy1leC50cyc7XG5cbi8qKlxuICogQW4gZXh0ZW5kZWQgc2V0dGluZyBncm91cCB0aGF0IGFsbG93cyB5b3UgdG8gYWRkIGV4dGVuZGVkIHNldHRpbmdzIHRvIHRoZSBzZXR0aW5nIGdyb3VwLlxuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ0dyb3VwRXggZXh0ZW5kcyBTZXR0aW5nR3JvdXAge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzZXR0aW5nIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoY29udGFpbmVyRWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBleHRlbmRlZCBzZXR0aW5nIHRvIHRoZSBzZXR0aW5nIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gYWRkIHRoZSBzZXR0aW5nLlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhZGRTZXR0aW5nRXgoY2FsbGJhY2s6IChzZXR0aW5nOiBTZXR0aW5nRXgpID0+IHZvaWQpOiB0aGlzIHtcbiAgICBjb25zdCBzZXR0aW5nID0gbmV3IFNldHRpbmdFeCh0aGlzLmxpc3RFbCk7XG4gICAgY2FsbGJhY2soc2V0dGluZyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFBNkI7QUFFN0Isd0JBQTBCO0FBS25CLE1BQU0sdUJBQXVCLDZCQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhDLFlBQVksYUFBMEI7QUFDM0MsVUFBTSxXQUFXO0FBQUEsRUFDbkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLGFBQWEsVUFBOEM7QUFDaEUsVUFBTSxVQUFVLElBQUksNEJBQVUsS0FBSyxNQUFNO0FBQ3pDLGFBQVMsT0FBTztBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  function keepName($unknown) {
@@ -46,17 +38,13 @@ function keepName($unknown) {
46
38
  }
47
39
 
48
40
  (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
41
  const globalThisRecord = globalThis;
51
42
  ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
55
45
  ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
46
  function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
47
+ return module && module.__esModule && "default" in module ? module.default : module;
60
48
  }
61
49
  })();
62
50
  })();
@@ -65,8 +53,6 @@ function keepName($unknown) {
65
53
  if (!originalRequire || originalRequire.__isPatched) {
66
54
  return;
67
55
  }
68
-
69
- // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
56
  require = Object.assign(
71
57
  (id) => requirePatched(id),
72
58
  originalRequire,
@@ -74,53 +60,45 @@ function keepName($unknown) {
74
60
  __isPatched: true
75
61
  }
76
62
  );
77
-
78
63
  function extractDefault(module) {
79
- return module && module.__esModule && 'default' in module ? module.default : module;
64
+ return module && module.__esModule && "default" in module ? module.default : module;
80
65
  }
81
-
82
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
- '@codemirror/autocomplete',
84
- '@codemirror/collab',
85
- '@codemirror/commands',
86
- '@codemirror/language',
87
- '@codemirror/lint',
88
- '@codemirror/search',
89
- '@codemirror/state',
90
- '@codemirror/text',
91
- '@codemirror/view',
92
- '@lezer/common',
93
- '@lezer/highlight',
94
- '@lezer/lr',
95
- 'obsidian']
96
- );
97
-
98
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
- '@codemirror/closebrackets',
100
- '@codemirror/comment',
101
- '@codemirror/fold',
102
- '@codemirror/gutter',
103
- '@codemirror/highlight',
104
- '@codemirror/history',
105
- '@codemirror/matchbrackets',
106
- '@codemirror/panel',
107
- '@codemirror/rangeset',
108
- '@codemirror/rectangular-selection',
109
- '@codemirror/stream-parser',
110
- '@codemirror/tooltip']
111
- );
112
-
66
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
67
+ "@codemirror/autocomplete",
68
+ "@codemirror/collab",
69
+ "@codemirror/commands",
70
+ "@codemirror/language",
71
+ "@codemirror/lint",
72
+ "@codemirror/search",
73
+ "@codemirror/state",
74
+ "@codemirror/text",
75
+ "@codemirror/view",
76
+ "@lezer/common",
77
+ "@lezer/highlight",
78
+ "@lezer/lr",
79
+ "obsidian"
80
+ ]);
81
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
82
+ "@codemirror/closebrackets",
83
+ "@codemirror/comment",
84
+ "@codemirror/fold",
85
+ "@codemirror/gutter",
86
+ "@codemirror/highlight",
87
+ "@codemirror/history",
88
+ "@codemirror/matchbrackets",
89
+ "@codemirror/panel",
90
+ "@codemirror/rangeset",
91
+ "@codemirror/rectangular-selection",
92
+ "@codemirror/stream-parser",
93
+ "@codemirror/tooltip"
94
+ ]);
113
95
  function requirePatched(id) {
114
96
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
97
  return originalRequire?.(id);
116
98
  }
117
-
118
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
99
  if (globalThis.app.isMobile) {
120
- if (id === 'process' || id === 'node:process') {
121
- // eslint-disable-next-line no-console -- Valid usage.
100
+ if (id === "process" || id === "node:process") {
122
101
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
-
124
102
  return process;
125
103
  }
126
104
  } else {
@@ -129,8 +107,6 @@ function keepName($unknown) {
129
107
  return extractDefault(module);
130
108
  }
131
109
  }
132
-
133
- // eslint-disable-next-line no-console -- Valid usage.
134
110
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
111
  return {};
136
112
  }
@@ -183,4 +159,4 @@ class PluginStatusBarItemRegistrar {
183
159
  0 && (module.exports = {
184
160
  PluginStatusBarItemRegistrar
185
161
  });
186
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTdGF0dXMgYmFyIGl0ZW0gcmVnaXN0cmFycy5cbiAqL1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogU3RhdHVzIGJhciBpdGVtIHJlZ2lzdHJhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNCYXJJdGVtUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHN0YXR1cyBiYXIgaXRlbS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlZ2lzdGVyZWQgc3RhdHVzIGJhciBpdGVtIGVsZW1lbnQuXG4gICAqL1xuICBhZGRTdGF0dXNCYXJJdGVtOiAoKSA9PiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBTdGF0dXMgYmFyIGl0ZW0gcmVnaXN0cmFyIGluIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgaW1wbGVtZW50cyBTdGF0dXNCYXJJdGVtUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHtAbGluayBQbHVnaW5TdGF0dXNCYXJJdGVtUmVnaXN0cmFyfSBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBPYnNpZGlhbiBwbHVnaW4gaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luKSB7fVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBzdGF0dXMgYmFyIGl0ZW0uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSByZWdpc3RlcmVkIHN0YXR1cyBiYXIgaXRlbSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFN0YXR1c0Jhckl0ZW0oKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5hZGRTdGF0dXNCYXJJdGVtKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFBdUI7QUFpQmhCLE1BQU0sNkJBQStEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTW5FLFlBQStCLFFBQWdCO0FBQWhCO0FBQUEsRUFBaUI7QUFBQSxFQUFqQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8vQixtQkFBZ0M7QUFDckMsV0FBTyxLQUFLLE9BQU8saUJBQWlCO0FBQUEsRUFDdEM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
162
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTdGF0dXMgYmFyIGl0ZW0gcmVnaXN0cmFycy5cbiAqL1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogU3RhdHVzIGJhciBpdGVtIHJlZ2lzdHJhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNCYXJJdGVtUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHN0YXR1cyBiYXIgaXRlbS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlZ2lzdGVyZWQgc3RhdHVzIGJhciBpdGVtIGVsZW1lbnQuXG4gICAqL1xuICBhZGRTdGF0dXNCYXJJdGVtOiAoKSA9PiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBTdGF0dXMgYmFyIGl0ZW0gcmVnaXN0cmFyIGluIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgaW1wbGVtZW50cyBTdGF0dXNCYXJJdGVtUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHtAbGluayBQbHVnaW5TdGF0dXNCYXJJdGVtUmVnaXN0cmFyfSBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBPYnNpZGlhbiBwbHVnaW4gaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luKSB7fVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBzdGF0dXMgYmFyIGl0ZW0uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSByZWdpc3RlcmVkIHN0YXR1cyBiYXIgaXRlbSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFN0YXR1c0Jhckl0ZW0oKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5hZGRTdGF0dXNCYXJJdGVtKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFBdUI7QUFpQmhCLE1BQU0sNkJBQStEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTW5FLFlBQStCLFFBQWdCO0FBQWhCO0FBQUEsRUFBaUI7QUFBQSxFQUFqQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8vQixtQkFBZ0M7QUFDckMsV0FBTyxLQUFLLE9BQU8saUJBQWlCO0FBQUEsRUFDdEM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  function keepName($unknown) {
@@ -46,17 +38,13 @@ function keepName($unknown) {
46
38
  }
47
39
 
48
40
  (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
41
  const globalThisRecord = globalThis;
51
42
  ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
55
45
  ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
46
  function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
47
+ return module && module.__esModule && "default" in module ? module.default : module;
60
48
  }
61
49
  })();
62
50
  })();
@@ -65,8 +53,6 @@ function keepName($unknown) {
65
53
  if (!originalRequire || originalRequire.__isPatched) {
66
54
  return;
67
55
  }
68
-
69
- // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
56
  require = Object.assign(
71
57
  (id) => requirePatched(id),
72
58
  originalRequire,
@@ -74,53 +60,45 @@ function keepName($unknown) {
74
60
  __isPatched: true
75
61
  }
76
62
  );
77
-
78
63
  function extractDefault(module) {
79
- return module && module.__esModule && 'default' in module ? module.default : module;
64
+ return module && module.__esModule && "default" in module ? module.default : module;
80
65
  }
81
-
82
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
- '@codemirror/autocomplete',
84
- '@codemirror/collab',
85
- '@codemirror/commands',
86
- '@codemirror/language',
87
- '@codemirror/lint',
88
- '@codemirror/search',
89
- '@codemirror/state',
90
- '@codemirror/text',
91
- '@codemirror/view',
92
- '@lezer/common',
93
- '@lezer/highlight',
94
- '@lezer/lr',
95
- 'obsidian']
96
- );
97
-
98
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
- '@codemirror/closebrackets',
100
- '@codemirror/comment',
101
- '@codemirror/fold',
102
- '@codemirror/gutter',
103
- '@codemirror/highlight',
104
- '@codemirror/history',
105
- '@codemirror/matchbrackets',
106
- '@codemirror/panel',
107
- '@codemirror/rangeset',
108
- '@codemirror/rectangular-selection',
109
- '@codemirror/stream-parser',
110
- '@codemirror/tooltip']
111
- );
112
-
66
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
67
+ "@codemirror/autocomplete",
68
+ "@codemirror/collab",
69
+ "@codemirror/commands",
70
+ "@codemirror/language",
71
+ "@codemirror/lint",
72
+ "@codemirror/search",
73
+ "@codemirror/state",
74
+ "@codemirror/text",
75
+ "@codemirror/view",
76
+ "@lezer/common",
77
+ "@lezer/highlight",
78
+ "@lezer/lr",
79
+ "obsidian"
80
+ ]);
81
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
82
+ "@codemirror/closebrackets",
83
+ "@codemirror/comment",
84
+ "@codemirror/fold",
85
+ "@codemirror/gutter",
86
+ "@codemirror/highlight",
87
+ "@codemirror/history",
88
+ "@codemirror/matchbrackets",
89
+ "@codemirror/panel",
90
+ "@codemirror/rangeset",
91
+ "@codemirror/rectangular-selection",
92
+ "@codemirror/stream-parser",
93
+ "@codemirror/tooltip"
94
+ ]);
113
95
  function requirePatched(id) {
114
96
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
97
  return originalRequire?.(id);
116
98
  }
117
-
118
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
99
  if (globalThis.app.isMobile) {
120
- if (id === 'process' || id === 'node:process') {
121
- // eslint-disable-next-line no-console -- Valid usage.
100
+ if (id === "process" || id === "node:process") {
122
101
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
-
124
102
  return process;
125
103
  }
126
104
  } else {
@@ -129,8 +107,6 @@ function keepName($unknown) {
129
107
  return extractDefault(module);
130
108
  }
131
109
  }
132
-
133
- // eslint-disable-next-line no-console -- Valid usage.
134
110
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
111
  return {};
136
112
  }
@@ -300,4 +276,4 @@ function isTemplaterApi(value) {
300
276
  requireTemplaterApi,
301
277
  resolveTemplaterApi
302
278
  });
303
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzbGljZSBvZiBUZW1wbGF0ZXIncyBJTlRFUk5BTCBBUEkgdGhpcyBsaWJyYXJ5IHRhbGtzIHRvLCBhbmQgdGhlIHJ1bnRpbWUgbmFycm93aW5nIHRoYXQgZ2V0cyBob2xkXG4gKiBvZiBpdC5cbiAqXG4gKiAqKlRlbXBsYXRlciBwdWJsaXNoZXMgbm8gQVBJLioqIFJlbmRlcmluZyBhIHRlbXBsYXRlIGFnYWluc3QgYSBmaWxlIGFuZCBnZXR0aW5nIHRoZSByZXN1bHRpbmcgc3RyaW5nXG4gKiBiYWNrIGlzIG9ubHkgcmVhY2hhYmxlIHRocm91Z2ggdW5kb2N1bWVudGVkIGludGVybmFscyBoYW5naW5nIG9mZlxuICogYGFwcC5wbHVnaW5zLmdldFBsdWdpbigndGVtcGxhdGVyLW9ic2lkaWFuJykudGVtcGxhdGVyYCBcdTIwMTQgYGNyZWF0ZV9ydW5uaW5nX2NvbmZpZ2AsXG4gKiBgZnVuY3Rpb25zX2dlbmVyYXRvci5nZW5lcmF0ZV9vYmplY3RgLCBgcmVhZF9hbmRfcGFyc2VfdGVtcGxhdGVgLCBhbmQgYSBgUnVuTW9kZWAgZW51bS4gRXZlcnkgcGx1Z2luXG4gKiB0aGF0IHdhbnRzIGl0IHJlLWRlcml2ZXMgdGhlIHNhbWUgcmV2ZXJzZSBlbmdpbmVlcmluZywgd2hpY2ggaXMgd2h5IGl0IGxpdmVzIGhlcmUgaW5zdGVhZC5cbiAqXG4gKiAqKlRoaXMgbW9kdWxlIGlzIGV4cGxpY2l0bHkgQkVTVC1FRkZPUlQuKiogTm90aGluZyBpdCBiaW5kcyB0byBpcyBkb2N1bWVudGVkIG9yIGNvdmVyZWQgYnkgVGVtcGxhdGVyJ3NcbiAqIHNlbWFudGljIHZlcnNpb25pbmcsIHNvIGEgVGVtcGxhdGVyIHJlbGVhc2UgbWF5IHJlbmFtZSBvciByZXNoYXBlIGFueSBvZiBpdCB3aXRob3V0IHdhcm5pbmcuIFRoZSBzaGFwZXNcbiAqIGJlbG93IHdlcmUgcmVhZCBmcm9tIFRlbXBsYXRlciBgMi4yNC4zYC4gVHdvIGRlbGliZXJhdGUgY29uc2VxdWVuY2VzIGZvbGxvdzpcbiAqXG4gKiAtIHtAbGluayByZXNvbHZlVGVtcGxhdGVyQXBpfSByZXR1cm5zIGBudWxsYCBcdTIwMTQgYSBUZW1wbGF0ZXIgdG9vIG9sZCwgdG9vIG5ldyBvciB0b28gYnJva2VuIHRvIHRhbGsgdG9cbiAqICAgcmVhZHMgYXMgXCJub3QgdGhlcmVcIiBhbmQgdGhlIGludGVncmF0aW9uIHN0YXlzIGRvcm1hbnQuXG4gKiAtIHtAbGluayByZXF1aXJlVGVtcGxhdGVyQXBpfSB0aHJvd3MgYSB7QGxpbmsgVGVtcGxhdGVyVW5hdmFpbGFibGVFcnJvcn0gdGhhdCBOQU1FUyB0aGUgcGx1Z2luIGFuZCB0aGVcbiAqICAgcmVhc29uLCByYXRoZXIgdGhhbiBsZXR0aW5nIGEgYENhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgdW5kZWZpbmVkYCBzdXJmYWNlIGZyb20gc29tZXdoZXJlIGluc2lkZVxuICogICBUZW1wbGF0ZXIuXG4gKlxuICogVGhlIHR5cGVzIGFyZSBERUNMQVJFRCBIRVJFIHJhdGhlciB0aGFuIGltcG9ydGVkLCBhbmQgbmFycm93ZWQgdG8gdGhlIG1lbWJlcnMgYWN0dWFsbHkgY2FsbGVkOiBUZW1wbGF0ZXJcbiAqIHNoaXBzIG5vIG5wbSB0eXBlcyBwYWNrYWdlLCBhbmQgZGVwZW5kaW5nIG9uIGl0IHdvdWxkIHR1cm4gYW4gb3B0aW9uYWwgaW50ZWdyYXRpb24gaW50byBhIGJ1aWxkLXRpbWVcbiAqIGRlcGVuZGVuY3kuXG4gKlxuICogVGhlIHNlY29uZCB0aGluZyB0aGlzIG1vZHVsZSBzdXBwbGllcyBpcyBhbiBhY3RpdmUtZmlsZSBhbnN3ZXIuIFdoaWxlIGEgdGVtcGxhdGUgcmVuZGVycyxcbiAqIGBhcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKWAgc3RpbGwgcG9pbnRzIGF0IHdoYXRldmVyIHRoZSB1c2VyIGhhcHBlbnMgdG8gaGF2ZSBvcGVuIFx1MjAxNCBOT1QgYXQgdGhlIGZpbGVcbiAqIHRoZSB0ZW1wbGF0ZSBpcyBiZWluZyByZW5kZXJlZCBmb3IgXHUyMDE0IHNvIGEgcGx1Z2luJ3Mgb3duIGhlbHBlciBjYWxsZWQgZnJvbSBpbnNpZGUgYSB0ZW1wbGF0ZSByZXNvbHZlc1xuICogbGlua3MgYWdhaW5zdCB0aGUgd3Jvbmcgbm90ZS4ge0BsaW5rIFRlbXBsYXRlckFjdGl2ZUZpbGVQcm92aWRlcn0gYW5zd2VycyB3aXRoIHRoZSByZW5kZXIgdGFyZ2V0IGZvciB0aGVcbiAqIGR1cmF0aW9uIG9mIGEge0BsaW5rIHBhcnNlVGVtcGxhdGV9IGNhbGwgYW5kIGZhbGxzIGJhY2sgdG8gdGhlIHdvcmtzcGFjZSBvdGhlcndpc2UuIE5vdGUgdGhpcyBpcyBhYm91dFxuICogdGhlIENPTlNVTUVSJ3MgaGVscGVyczogVGVtcGxhdGVyJ3Mgb3duIGB0cC5maWxlLipgIGFscmVhZHkgcmVzb2x2ZXMgdGhyb3VnaCB0aGUgcnVubmluZyBjb25maWcnc1xuICogYHRhcmdldF9maWxlYCBhbmQgbmVlZHMgbm8gaGVscC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuaW1wb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgeyBnZXRGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFRlbXBsYXRlckZ1bmN0aW9uc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VGVtcGxhdGVyRnVuY3Rpb25zUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXR1cm4gVGVtcGxhdGVyJ3MgYGN1cnJlbnRfZnVuY3Rpb25zX29iamVjdGAgd2hlbiBpdCBhbHJlYWR5IGhhcyBvbmUsIGluc3RlYWQgb2ZcbiAgICogZ2VuZXJhdGluZyBhIGZyZXNoIG9iamVjdC4gUmV1c2UgaXMgY2hlYXBlciBhbmQgZ2l2ZXMgdGhlIG9iamVjdCBvZiB0aGUgcmVuZGVyIGN1cnJlbnRseSBpbiBmbGlnaHQ7XG4gICAqIHBhc3MgYGZhbHNlYCB0byBmb3JjZSBhIG5ldyBvbmUgYnVpbHQgZm9yIGB0YXJnZXRQYXRoT3JGaWxlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXVzZUN1cnJlbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBzaG91bGQgcmVzb2x2ZSBhZ2FpbnN0IFx1MjAxNCB3aGF0IGB0cC5maWxlLipgIHJlcG9ydHMuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBwYXJzZVRlbXBsYXRlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZVRlbXBsYXRlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgdGhlIHRlbXBsYXRlIGlzIHJlbmRlcmVkIEZPUi4gSXQgaXMgd2hhdCBgdHAuZmlsZS4qYCByZXNvbHZlcyB0byBpbnNpZGUgdGhlIHRlbXBsYXRlLCBhbmRcbiAgICogd2hhdCB7QGxpbmsgVGVtcGxhdGVyQWN0aXZlRmlsZVByb3ZpZGVyfSByZXBvcnRzIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNhbGwuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgZmlsZSB0byByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSB0ZW1wbGF0ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJIG9iamVjdCwgbmFycm93ZWQgdG8gdGhlIG1lbWJlcnMgdGhpcyBsaWJyYXJ5IGNhbGxzLlxuICpcbiAqIEl0cyBtZW1iZXJzIGFyZSBgc25ha2VfY2FzZWAgYmVjYXVzZSBUZW1wbGF0ZXIncyBhcmU7IHRoZXkgYXJlIHRyYW5zY3JpYmVkIHJhdGhlciB0aGFuIHJlbmFtZWQgc28gdGhlXG4gKiBzaGFwZSBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IFRlbXBsYXRlcidzIHNvdXJjZSBhdCBhIGdsYW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZXJBcGkge1xuICAvKipcbiAgICogQnVpbGRzIHRoZSB7QGxpbmsgVGVtcGxhdGVyUnVubmluZ0NvbmZpZ30gdGhhdCBkZXNjcmliZXMgb25lIHJlbmRlci5cbiAgICpcbiAgICogQHBhcmFtIHRlbXBsYXRlRmlsZSAtIFRoZSB0ZW1wbGF0ZSBiZWluZyByZW5kZXJlZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGVyZSBpcyBub25lIChhcyB3aGVuIG9ubHlcbiAgICogdGhlIGZ1bmN0aW9ucyBvYmplY3QgaXMgd2FudGVkKS5cbiAgICogQHBhcmFtIHRhcmdldEZpbGUgLSBUaGUgZmlsZSB0aGUgcmVuZGVyIGlzIGZvci5cbiAgICogQHBhcmFtIHJ1bk1vZGUgLSBXaGljaCB7QGxpbmsgVGVtcGxhdGVyUnVuTW9kZX0gdGhlIHJlbmRlciBpcy5cbiAgICogQHJldHVybnMgVGhlIHJ1bm5pbmcgY29uZmlnLlxuICAgKi9cbiAgY3JlYXRlX3J1bm5pbmdfY29uZmlnOiAodGVtcGxhdGVGaWxlOiBURmlsZSB8IHVuZGVmaW5lZCwgdGFyZ2V0RmlsZTogVEZpbGUsIHJ1bk1vZGU6IFRlbXBsYXRlclJ1bk1vZGUpID0+IFRlbXBsYXRlclJ1bm5pbmdDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbnMgb2JqZWN0IChgdHBgKSBvZiB0aGUgcmVuZGVyIGN1cnJlbnRseSBpbiBmbGlnaHQsIHdoZW4gdGhlcmUgaXMgb25lLlxuICAgKi9cbiAgY3VycmVudF9mdW5jdGlvbnNfb2JqZWN0Pzogb2JqZWN0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGZ1bmN0aW9ucyBvYmplY3QgKGB0cGApIGEgdGVtcGxhdGUgaXMgZXZhbHVhdGVkIGFnYWluc3QuXG4gICAqL1xuICBmdW5jdGlvbnNfZ2VuZXJhdG9yOiBUZW1wbGF0ZXJGdW5jdGlvbnNHZW5lcmF0b3I7XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBjb25maWcncyBgdGVtcGxhdGVfZmlsZWAgYW5kIHJlbmRlcnMgaXQsIHJldHVybmluZyB0aGUgcmVzdWx0aW5nIHRleHQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUge0BsaW5rIFRlbXBsYXRlclJ1bm5pbmdDb25maWd9IGRlc2NyaWJpbmcgdGhlIHJlbmRlci4gVGVtcGxhdGVyIHRocm93cyB3aGVuIGl0c1xuICAgKiBgdGVtcGxhdGVfZmlsZWAgaXMgbm90IGEgYFRGaWxlYC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSByZW5kZXJlZCB0ZXh0LlxuICAgKi9cbiAgcmVhZF9hbmRfcGFyc2VfdGVtcGxhdGU6IChjb25maWc6IFRlbXBsYXRlclJ1bm5pbmdDb25maWcpID0+IFByb21pc2U8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBUaGUgYGZ1bmN0aW9uc19nZW5lcmF0b3JgIGhhbGYgb2Yge0BsaW5rIFRlbXBsYXRlckFwaX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVyRnVuY3Rpb25zR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgZnVuY3Rpb25zIG9iamVjdCAoYHRwYCkgZm9yIGEgcnVubmluZyBjb25maWcuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUge0BsaW5rIFRlbXBsYXRlclJ1bm5pbmdDb25maWd9IHRvIGJ1aWxkIGZvci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBmdW5jdGlvbnMgb2JqZWN0LlxuICAgKi9cbiAgZ2VuZXJhdGVfb2JqZWN0OiAoY29uZmlnOiBUZW1wbGF0ZXJSdW5uaW5nQ29uZmlnKSA9PiBQcm9taXNlPG9iamVjdD47XG59XG5cbi8qKlxuICogT25lIFRlbXBsYXRlciByZW5kZXIsIGFzIFRlbXBsYXRlcidzIGBjcmVhdGVfcnVubmluZ19jb25maWdgIGRlc2NyaWJlcyBpdC5cbiAqXG4gKiBJdHMgbWVtYmVycyBhcmUgYHNuYWtlX2Nhc2VgIGJlY2F1c2UgVGVtcGxhdGVyJ3MgYXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlclJ1bm5pbmdDb25maWcge1xuICAvKipcbiAgICogVGhlIGZpbGUgVGVtcGxhdGVyIGNvbnNpZGVycyBhY3RpdmUuIFRlbXBsYXRlciBmaWxscyB0aGlzIGluIGl0c2VsZiBmcm9tXG4gICAqIGB3b3Jrc3BhY2UuYWN0aXZlRWRpdG9yPy5maWxlID8/IHdvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKClgOyBpdCBpcyBvcHRpb25hbCBoZXJlIGJlY2F1c2UgYVxuICAgKiBoYW5kLWJ1aWx0IGNvbmZpZyBtYXkgb21pdCBpdC5cbiAgICovXG4gIGFjdGl2ZV9maWxlPzogbnVsbCB8IFRGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGljaCB7QGxpbmsgVGVtcGxhdGVyUnVuTW9kZX0gdGhlIHJlbmRlciBpcy5cbiAgICovXG4gIHJ1bl9tb2RlOiBUZW1wbGF0ZXJSdW5Nb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGUgcmVuZGVyIGlzIGZvciBcdTIwMTQgd2hhdCBgdHAuZmlsZS4qYCByZXNvbHZlcyB0by5cbiAgICovXG4gIHRhcmdldF9maWxlOiBURmlsZTtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIGJlaW5nIHJlbmRlcmVkLCB3aGVuIHRoZXJlIGlzIG9uZS5cbiAgICovXG4gIHRlbXBsYXRlX2ZpbGU/OiBURmlsZSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUZW1wbGF0ZXIncyBwbHVnaW4gaWQsIGFzIGl0cyBtYW5pZmVzdCBkZWNsYXJlcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFTVBMQVRFUl9QTFVHSU5fSUQgPSAndGVtcGxhdGVyLW9ic2lkaWFuJztcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBUaGVzZSBhcmUgVGVtcGxhdGVyJ3Mgb3duIGBSdW5Nb2RlYCB2YWx1ZXMsIHRyYW5zY3JpYmVkLiAqL1xuLyoqXG4gKiBUZW1wbGF0ZXIncyBgUnVuTW9kZWAgZW51bSwgd2hpY2ggc2F5cyB3aGF0IGtpbmQgb2YgcmVuZGVyIGEge0BsaW5rIFRlbXBsYXRlclJ1bm5pbmdDb25maWd9IGRlc2NyaWJlcy5cbiAqXG4gKiBUaGUgbnVtZXJpYyB2YWx1ZXMgQVJFIFRlbXBsYXRlcidzLCBhbmQgdGhlIG1lbWJlcnMgYXJlIGxpc3RlZCBpbiBpdHMgZGVjbGFyYXRpb24gb3JkZXIgc28gdGhlIHR3byBjYW5cbiAqIGJlIGNvbXBhcmVkIGxpbmUgZm9yIGxpbmUuIFRoZXkgYXJlIHdyaXR0ZW4gb3V0IGV4cGxpY2l0bHkgYWxsIHRoZSBzYW1lLCBiZWNhdXNlIHRoZXkgY3Jvc3MgaW50b1xuICogVGVtcGxhdGVyIGFzIGludGVnZXJzIFx1MjAxNCBuZXZlciByZW51bWJlciB0aGVtLlxuICovXG5leHBvcnQgZW51bSBUZW1wbGF0ZXJSdW5Nb2RlIHtcbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgdGVtcGxhdGUgaW50byBhIG5ld2x5IGNyZWF0ZWQgZmlsZS5cbiAgICovXG4gIENyZWF0ZU5ld0Zyb21UZW1wbGF0ZSA9IDAsXG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgdGVtcGxhdGUgYW5kIGFwcGVuZCB0aGUgcmVzdWx0IHRvIHRoZSBhY3RpdmUgZmlsZS5cbiAgICovXG4gIEFwcGVuZEFjdGl2ZUZpbGUgPSAxLFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHRlbXBsYXRlIGFuZCBvdmVyd3JpdGUgYSBnaXZlbiBmaWxlIHdpdGggdGhlIHJlc3VsdC5cbiAgICovXG4gIE92ZXJ3cml0ZUZpbGUgPSAyLFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHRlbXBsYXRlIGFuZCBvdmVyd3JpdGUgdGhlIGFjdGl2ZSBmaWxlIHdpdGggdGhlIHJlc3VsdC5cbiAgICovXG4gIE92ZXJ3cml0ZUFjdGl2ZUZpbGUgPSAzLFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHRlbXBsYXRlIG9uIGRlbWFuZCwgZm9yIGEgY2FsbGVyIHRoYXQgd2FudHMgdGhlIHJlc3VsdGluZyB0ZXh0IHJhdGhlciB0aGFuIGEgZmlsZVxuICAgKiB3cml0dGVuLiBUaGlzIGlzIHdoYXQge0BsaW5rIHBhcnNlVGVtcGxhdGV9IHVzZXMuXG4gICAqL1xuICBEeW5hbWljUHJvY2Vzc29yID0gNCxcblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0ZW1wbGF0ZSBhcyBhIHN0YXJ0dXAgdGVtcGxhdGUuIHtAbGluayBnZXRUZW1wbGF0ZXJGdW5jdGlvbnN9IHVzZXMgaXQgZm9yIHRoZSB0aHJvd2F3YXlcbiAgICogY29uZmlnIGl0IGJ1aWxkcywgYmVjYXVzZSB0aGF0IGNvbmZpZyByZW5kZXJzIG5vdGhpbmcuXG4gICAqL1xuICBTdGFydHVwVGVtcGxhdGUgPSA1XG59XG4vKiBlc2xpbnQtZW5hYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gVGhlc2UgYXJlIFRlbXBsYXRlcidzIG93biBgUnVuTW9kZWAgdmFsdWVzLCB0cmFuc2NyaWJlZC4gKi9cblxuLyoqXG4gKiBXaHkgVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJIGNvdWxkIG5vdCBiZSBoYW5kZWQgb3Zlci5cbiAqL1xuZXhwb3J0IGVudW0gVGVtcGxhdGVyVW5hdmFpbGFiaWxpdHlSZWFzb24ge1xuICAvKipcbiAgICogVGVtcGxhdGVyIGlzIG5vdCBpbnN0YWxsZWQsIG9yIGlzIGluc3RhbGxlZCBidXQgZGlzYWJsZWQuIE9ic2lkaWFuJ3MgYGdldFBsdWdpbmAgY2Fubm90IHRlbGwgdGhlIHR3b1xuICAgKiBhcGFydCBcdTIwMTQgaXQgcmV0dXJucyBub3RoaW5nIGVpdGhlciB3YXkuXG4gICAqL1xuICBOb3RMb2FkZWQgPSAnbm90TG9hZGVkJyxcblxuICAvKipcbiAgICogVGVtcGxhdGVyIGlzIGxvYWRlZCwgYnV0IGRvZXMgbm90IGV4cG9zZSB0aGUgaW50ZXJuYWxzIHRoaXMgbGlicmFyeSBjYWxscyBcdTIwMTQgaXQgaXMgdG9vIG9sZCwgdG9vIG5ldyxcbiAgICogb3IgaGFzIGJlZW4gcmVzaGFwZWQuXG4gICAqL1xuICBTaGFwZUNoYW5nZWQgPSAnc2hhcGVDaGFuZ2VkJ1xufVxuXG4vKipcbiAqIEFjdGl2ZS1maWxlIHByb3ZpZGVyIHRoYXQgYW5zd2VycyB3aXRoIHRoZSBmaWxlIGEge0BsaW5rIHBhcnNlVGVtcGxhdGV9IHJlbmRlciBpcyBjdXJyZW50bHkgZm9yLFxuICogZmFsbGluZyBiYWNrIHRvIHRoZSB3b3Jrc3BhY2UncyBhY3RpdmUgZmlsZSB3aGVuIG5vIHJlbmRlciBpcyBpbiBmbGlnaHQuXG4gKlxuICogVGhpcyBpcyB0aGUgcGllY2UgdGhhdCBtYWtlcyBhIGNvbnN1bWVyJ3Mgb3duIHRlbXBsYXRlIGhlbHBlcnMgcmVzb2x2ZSBhZ2FpbnN0IHRoZSByaWdodCBub3RlOiBkdXJpbmcgYVxuICogcmVuZGVyIHRoZSB3b3Jrc3BhY2Ugc3RpbGwgaGFzIHdoYXRldmVyIHRoZSB1c2VyIHdhcyBsb29raW5nIGF0IG9wZW4sIHdoaWNoIGlzIHJhcmVseSB0aGUgdGFyZ2V0LlxuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVyQWN0aXZlRmlsZVByb3ZpZGVyIGV4dGVuZHMgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbGUgdGhlIGlubmVybW9zdCBpbi1mbGlnaHQge0BsaW5rIHBhcnNlVGVtcGxhdGV9IHJlbmRlciBpcyBmb3IsIG9yIHRoZSB3b3Jrc3BhY2UncyBhY3RpdmVcbiAgICogZmlsZSB3aGVuIHRoZXJlIGlzIG5vIHJlbmRlciBpbiBmbGlnaHQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhY3RpdmUgZmlsZSwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vbmUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0QWN0aXZlRmlsZSgpOiBudWxsIHwgVEZpbGUge1xuICAgIHJldHVybiBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlKCkgPz8gc3VwZXIuZ2V0QWN0aXZlRmlsZSgpO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJIGNhbm5vdCBiZSBoYW5kZWQgb3ZlciwgY2FycnlpbmcgdGhlXG4gKiB7QGxpbmsgVGVtcGxhdGVyVW5hdmFpbGFiaWxpdHlSZWFzb259IHRoYXQgc2F5cyB3aHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogV2hpY2ggb2YgdGhlIHR3byBmYWlsdXJlcyBvY2N1cnJlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWFzb246IFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIFRlbXBsYXRlclVuYXZhaWxhYmxlRXJyb3J9LlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gV2h5IHRoZSBBUEkgaXMgdW5hdmFpbGFibGUuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocmVhc29uOiBUZW1wbGF0ZXJVbmF2YWlsYWJpbGl0eVJlYXNvbikge1xuICAgIHN1cGVyKGBUaGUgaW50ZXJuYWwgQVBJIG9mIHRoZSBwbHVnaW4gXCIke1RFTVBMQVRFUl9QTFVHSU5fSUR9XCIgaXMgdW5hdmFpbGFibGU6ICR7cmVhc29ufS5gKTtcbiAgICB0aGlzLm5hbWUgPSAnVGVtcGxhdGVyVW5hdmFpbGFibGVFcnJvcic7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIFRlbXBsYXRlcidzIGZ1bmN0aW9ucyBvYmplY3QgXHUyMDE0IHRoZSBgdHBgIGEgdGVtcGxhdGUgaXMgZXZhbHVhdGVkIGFnYWluc3QgXHUyMDE0IHNvIGEgY2FsbGVyIGNhbiBpbnZva2VcbiAqIGB0cC5kYXRlLm5vdygpYCwgYHRwLmZpbGUudGl0bGVgIGFuZCB0aGUgcmVzdCBvdXRzaWRlIGEgdGVtcGxhdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgR2V0VGVtcGxhdGVyRnVuY3Rpb25zUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgZnVuY3Rpb25zIG9iamVjdC5cbiAqIEB0aHJvd3MgQSB7QGxpbmsgVGVtcGxhdGVyVW5hdmFpbGFibGVFcnJvcn0gd2hlbiBUZW1wbGF0ZXIgaXMgbm90IGxvYWRlZCBvciBpdHMgc2hhcGUgaGFzIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUZW1wbGF0ZXJGdW5jdGlvbnMocGFyYW1zOiBHZXRUZW1wbGF0ZXJGdW5jdGlvbnNQYXJhbXMpOiBQcm9taXNlPG9iamVjdD4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHNob3VsZFJldXNlQ3VycmVudCA9IHRydWUsXG4gICAgdGFyZ2V0UGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhcGkgPSByZXF1aXJlVGVtcGxhdGVyQXBpKGFwcCk7XG5cbiAgaWYgKHNob3VsZFJldXNlQ3VycmVudCAmJiBhcGkuY3VycmVudF9mdW5jdGlvbnNfb2JqZWN0KSB7XG4gICAgcmV0dXJuIGFwaS5jdXJyZW50X2Z1bmN0aW9uc19vYmplY3Q7XG4gIH1cblxuICBjb25zdCB0YXJnZXRGaWxlID0gZ2V0RmlsZSh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGU6IHRhcmdldFBhdGhPckZpbGVcbiAgfSk7XG4gIGNvbnN0IGNvbmZpZyA9IGFwaS5jcmVhdGVfcnVubmluZ19jb25maWcodW5kZWZpbmVkLCB0YXJnZXRGaWxlLCBUZW1wbGF0ZXJSdW5Nb2RlLlN0YXJ0dXBUZW1wbGF0ZSk7XG4gIHJldHVybiBhd2FpdCBhcGkuZnVuY3Rpb25zX2dlbmVyYXRvci5nZW5lcmF0ZV9vYmplY3QoY29uZmlnKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmaWxlIHRoZSBpbm5lcm1vc3QgaW4tZmxpZ2h0IHtAbGluayBwYXJzZVRlbXBsYXRlfSByZW5kZXIgaXMgZm9yLlxuICpcbiAqIFJlbmRlcnMgbmVzdCBcdTIwMTQgYSB0ZW1wbGF0ZSBtYXkgcmVuZGVyIGFub3RoZXIgXHUyMDE0IHNvIHRoZSBjYWxscyBmb3JtIGEgc3RhY2sgYW5kIHRoaXMgcmVwb3J0cyB0aGUgdG9wIG9mXG4gKiBpdC4gT3V0c2lkZSBhbnkgcmVuZGVyIGl0IGlzIGBudWxsYC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcmVuZGVyIHRhcmdldCwgb3IgYG51bGxgIHdoZW4gbm8gcmVuZGVyIGlzIGluIGZsaWdodC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBsYXRlclJlbmRlclRhcmdldEZpbGUoKTogbnVsbCB8IFRGaWxlIHtcbiAgcmV0dXJuIHJlbmRlclRhcmdldEZpbGVzLmF0KC0xKSA/PyBudWxsO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBUZW1wbGF0ZXIgdGVtcGxhdGUgYWdhaW5zdCBhIHRhcmdldCBmaWxlIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgdGV4dCwgd2l0aG91dCB3cml0aW5nXG4gKiBhbnl0aGluZy5cbiAqXG4gKiBGb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWxsIHtAbGluayBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlfSBhbmRcbiAqIHtAbGluayBUZW1wbGF0ZXJBY3RpdmVGaWxlUHJvdmlkZXJ9IHJlcG9ydCBgdGFyZ2V0UGF0aE9yRmlsZWAsIHNvIGEgY29uc3VtZXIncyBvd24gaGVscGVycyBpbnZva2VkIGZyb21cbiAqIGluc2lkZSB0aGUgdGVtcGxhdGUgcmVzb2x2ZSBhZ2FpbnN0IGl0IHJhdGhlciB0aGFuIGFnYWluc3Qgd2hhdGV2ZXIgdGhlIHVzZXIgaGFzIG9wZW4uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgUGFyc2VUZW1wbGF0ZVBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIHJlbmRlcmVkIHRleHQuXG4gKiBAdGhyb3dzIEEge0BsaW5rIFRlbXBsYXRlclVuYXZhaWxhYmxlRXJyb3J9IHdoZW4gVGVtcGxhdGVyIGlzIG5vdCBsb2FkZWQgb3IgaXRzIHNoYXBlIGhhcyBjaGFuZ2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUZW1wbGF0ZShwYXJhbXM6IFBhcnNlVGVtcGxhdGVQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHRhcmdldFBhdGhPckZpbGUsXG4gICAgdGVtcGxhdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHRlbXBsYXRlRmlsZSA9IGdldEZpbGUoe1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlOiB0ZW1wbGF0ZVBhdGhPckZpbGVcbiAgfSk7XG4gIGNvbnN0IHRhcmdldEZpbGUgPSBnZXRGaWxlKHtcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZTogdGFyZ2V0UGF0aE9yRmlsZVxuICB9KTtcbiAgY29uc3QgYXBpID0gcmVxdWlyZVRlbXBsYXRlckFwaShhcHApO1xuXG4gIHJlbmRlclRhcmdldEZpbGVzLnB1c2godGFyZ2V0RmlsZSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwaS5yZWFkX2FuZF9wYXJzZV90ZW1wbGF0ZSh7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlIC0tIFRlbXBsYXRlciBBUEkuXG4gICAgICBydW5fbW9kZTogVGVtcGxhdGVyUnVuTW9kZS5EeW5hbWljUHJvY2Vzc29yLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZSAtLSBUZW1wbGF0ZXIgQVBJLlxuICAgICAgdGFyZ2V0X2ZpbGU6IHRhcmdldEZpbGUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlIC0tIFRlbXBsYXRlciBBUEkuXG4gICAgICB0ZW1wbGF0ZV9maWxlOiB0ZW1wbGF0ZUZpbGVcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICByZW5kZXJUYXJnZXRGaWxlcy5wb3AoKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJLCB0aHJvd2luZyB3aGVuIGl0IGNhbm5vdCBiZSBoYWQuXG4gKlxuICogVXNlIHRoaXMgd2hlcmUgdGhlIGNhbGxlciBjYW5ub3QgY2Fycnkgb24gd2l0aG91dCBUZW1wbGF0ZXIgXHUyMDE0IHRoZSBlcnJvciBuYW1lcyB0aGUgcGx1Z2luIGFuZCBzYXlzIHdoaWNoXG4gKiBvZiB0aGUgdHdvIGZhaWx1cmVzIG9jY3VycmVkLiBVc2Uge0BsaW5rIHJlc29sdmVUZW1wbGF0ZXJBcGl9IGluc3RlYWQgd2hlcmUgdGhlIGludGVncmF0aW9uIGlzIG9wdGlvbmFsLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJLlxuICogQHRocm93cyBBIHtAbGluayBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yfSB3aGVuIFRlbXBsYXRlciBpcyBub3QgbG9hZGVkIG9yIGl0cyBzaGFwZSBoYXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVUZW1wbGF0ZXJBcGkoYXBwOiBBcHApOiBUZW1wbGF0ZXJBcGkge1xuICBpZiAoIWFwcC5wbHVnaW5zLmdldFBsdWdpbihURU1QTEFURVJfUExVR0lOX0lEKSkge1xuICAgIHRocm93IG5ldyBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yKFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uLk5vdExvYWRlZCk7XG4gIH1cblxuICBjb25zdCBhcGkgPSByZXNvbHZlVGVtcGxhdGVyQXBpKGFwcCk7XG4gIGlmICghYXBpKSB7XG4gICAgdGhyb3cgbmV3IFRlbXBsYXRlclVuYXZhaWxhYmxlRXJyb3IoVGVtcGxhdGVyVW5hdmFpbGFiaWxpdHlSZWFzb24uU2hhcGVDaGFuZ2VkKTtcbiAgfVxuXG4gIHJldHVybiBhcGk7XG59XG5cbi8qKlxuICogR2V0cyBUZW1wbGF0ZXIncyBpbnRlcm5hbCBBUEksIHdoZW4gVGVtcGxhdGVyIGlzIGluc3RhbGxlZCwgZW5hYmxlZCBhbmQgc3RpbGwgdGhlIHNoYXBlIHRoaXMgbGlicmFyeVxuICogZXhwZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBpbnRlcm5hbCBBUEksIG9yIGBudWxsYCB3aGVuIFRlbXBsYXRlciBpcyBub3QgdGhlcmUgdG8gdGFsayB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVUZW1wbGF0ZXJBcGkoYXBwOiBBcHApOiBudWxsIHwgVGVtcGxhdGVyQXBpIHtcbiAgY29uc3QgcGx1Z2luID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFRFTVBMQVRFUl9QTFVHSU5fSUQpO1xuICBpZiAoIXBsdWdpbiB8fCAhKCd0ZW1wbGF0ZXInIGluIHBsdWdpbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlcjogdW5rbm93biA9IHBsdWdpbi50ZW1wbGF0ZXI7XG4gIHJldHVybiBpc1RlbXBsYXRlckFwaSh0ZW1wbGF0ZXIpID8gdGVtcGxhdGVyIDogbnVsbDtcbn1cblxuLypcbiAqIFRoZSBzdGFjayBvZiBmaWxlcyBpbi1mbGlnaHQgYHBhcnNlVGVtcGxhdGVgIGNhbGxzIGFyZSByZW5kZXJpbmcgZm9yLCBpbm5lcm1vc3QgbGFzdC4gQSBzdGFjayByYXRoZXJcbiAqIHRoYW4gYSBzaW5nbGUgc2xvdCBiZWNhdXNlIGEgdGVtcGxhdGUgbWF5IHJlbmRlciBhbm90aGVyLCBhbmQgYW4gYXJyYXkgcmF0aGVyIHRoYW4gYSByZWFzc2lnbmVkXG4gKiB2YXJpYWJsZSBiZWNhdXNlIHB1c2hpbmcgYW5kIHBvcHBpbmcgYSBgY29uc3RgIG5lZWRzIG5vIHdyaXRlIHRvIGFuIG91dGVyIGJpbmRpbmcgYWNyb3NzIGFuIGBhd2FpdGAuXG4gKi9cbmNvbnN0IHJlbmRlclRhcmdldEZpbGVzOiBURmlsZVtdID0gW107XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgYSB2YWx1ZSBpcyBUZW1wbGF0ZXIncyBpbnRlcm5hbCBBUEksIGJ5IHRoZSBtZW1iZXJzIHRoaXMgbGlicmFyeSBhY3R1YWxseSBjYWxscy5cbiAqXG4gKiBBIHByZWRpY2F0ZSByYXRoZXIgdGhhbiBhIGNhc3Qgb24gcHVycG9zZTogYHRlbXBsYXRlcmAgaXMgbm90IHBhcnQgb2YgT2JzaWRpYW4ncyBgUGx1Z2luYCB0eXBlLCBzbyB0aGVcbiAqIHZhbHVlIGFycml2ZXMgYXMgYHVua25vd25gIGFuZCB0aGUgb25seSBob25lc3Qgd2F5IHRvIHR5cGUgaXQgaXMgdG8gVkVSSUZZIGl0LiBBIFRlbXBsYXRlciB0aGF0IHJlbmFtZXNcbiAqIG9uZSBvZiB0aGVzZSB0aGVyZWZvcmUgcmVhZHMgYXMgXCJub3QgdGhlcmVcIiwgaW5zdGVhZCBvZiB0aHJvd2luZyBmcm9tIGluc2lkZSBhIHJlbmRlci5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgY2FuZGlkYXRlIGB0ZW1wbGF0ZXJgIG9iamVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgaXQgY2FycmllcyBldmVyeSBtZW1iZXIgdGhpcyBsaWJyYXJ5IGNhbGxzLlxuICovXG5mdW5jdGlvbiBpc1RlbXBsYXRlckFwaSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRlbXBsYXRlckFwaSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsIHx8ICEoJ2NyZWF0ZV9ydW5uaW5nX2NvbmZpZycgaW4gdmFsdWUpIHx8IHR5cGVvZiB2YWx1ZS5jcmVhdGVfcnVubmluZ19jb25maWcgIT09ICdmdW5jdGlvbicgfHwgISgncmVhZF9hbmRfcGFyc2VfdGVtcGxhdGUnIGluIHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUucmVhZF9hbmRfcGFyc2VfdGVtcGxhdGUgIT09ICdmdW5jdGlvbicgfHwgISgnZnVuY3Rpb25zX2dlbmVyYXRvcicgaW4gdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25zR2VuZXJhdG9yOiB1bmtub3duID0gdmFsdWUuZnVuY3Rpb25zX2dlbmVyYXRvcjtcbiAgcmV0dXJuIHR5cGVvZiBmdW5jdGlvbnNHZW5lcmF0b3IgPT09ICdvYmplY3QnICYmIGZ1bmN0aW9uc0dlbmVyYXRvciAhPT0gbnVsbCAmJiAnZ2VuZXJhdGVfb2JqZWN0JyBpbiBmdW5jdGlvbnNHZW5lcmF0b3IgJiYgdHlwZW9mIGZ1bmN0aW9uc0dlbmVyYXRvci5nZW5lcmF0ZV9vYmplY3QgPT09ICdmdW5jdGlvbic7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMENBLGtDQUFzQztBQUN0Qyx5QkFBd0I7QUFrSWpCLE1BQU0sc0JBQXNCO0FBVTVCLElBQUssbUJBQUwsa0JBQUtBLHNCQUFMO0FBSUwsRUFBQUEsb0NBQUEsMkJBQXdCLEtBQXhCO0FBS0EsRUFBQUEsb0NBQUEsc0JBQW1CLEtBQW5CO0FBS0EsRUFBQUEsb0NBQUEsbUJBQWdCLEtBQWhCO0FBS0EsRUFBQUEsb0NBQUEseUJBQXNCLEtBQXRCO0FBTUEsRUFBQUEsb0NBQUEsc0JBQW1CLEtBQW5CO0FBTUEsRUFBQUEsb0NBQUEscUJBQWtCLEtBQWxCO0FBL0JVLFNBQUFBO0FBQUEsR0FBQTtBQXNDTCxJQUFLLGdDQUFMLGtCQUFLQyxtQ0FBTDtBQUtMLEVBQUFBLCtCQUFBLGVBQVk7QUFNWixFQUFBQSwrQkFBQSxrQkFBZTtBQVhMLFNBQUFBO0FBQUEsR0FBQTtBQXFCTCxNQUFNLG9DQUFvQyxrREFBc0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9yRCxnQkFBOEI7QUFDNUMsV0FBTyw2QkFBNkIsS0FBSyxNQUFNLGNBQWM7QUFBQSxFQUMvRDtBQUNGO0FBTU8sTUFBTSxrQ0FBa0MsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSW5DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxRQUF1QztBQUN4RCxVQUFNLG1DQUFtQyxtQkFBbUIscUJBQXFCLE1BQU0sR0FBRztBQUMxRixTQUFLLE9BQU87QUFDWixTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUNGO0FBVUEsZUFBc0Isc0JBQXNCLFFBQXNEO0FBQ2hHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxxQkFBcUI7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sTUFBTSxvQkFBb0IsR0FBRztBQUVuQyxNQUFJLHNCQUFzQixJQUFJLDBCQUEwQjtBQUN0RCxXQUFPLElBQUk7QUFBQSxFQUNiO0FBRUEsUUFBTSxpQkFBYSw0QkFBUTtBQUFBLElBQ3pCO0FBQUEsSUFDQSxZQUFZO0FBQUEsRUFDZCxDQUFDO0FBQ0QsUUFBTSxTQUFTLElBQUksc0JBQXNCLFFBQVcsWUFBWSx1QkFBZ0M7QUFDaEcsU0FBTyxNQUFNLElBQUksb0JBQW9CLGdCQUFnQixNQUFNO0FBQzdEO0FBVU8sU0FBUywrQkFBNkM7QUFDM0QsU0FBTyxrQkFBa0IsR0FBRyxFQUFFLEtBQUs7QUFDckM7QUFjQSxlQUFzQixjQUFjLFFBQThDO0FBQ2hGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLG1CQUFlLDRCQUFRO0FBQUEsSUFDM0I7QUFBQSxJQUNBLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFDRCxRQUFNLGlCQUFhLDRCQUFRO0FBQUEsSUFDekI7QUFBQSxJQUNBLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFDRCxRQUFNLE1BQU0sb0JBQW9CLEdBQUc7QUFFbkMsb0JBQWtCLEtBQUssVUFBVTtBQUNqQyxNQUFJO0FBQ0YsV0FBTyxNQUFNLElBQUksd0JBQXdCO0FBQUE7QUFBQSxNQUV2QyxVQUFVO0FBQUE7QUFBQSxNQUVWLGFBQWE7QUFBQTtBQUFBLE1BRWIsZUFBZTtBQUFBLElBQ2pCLENBQUM7QUFBQSxFQUNILFVBQUU7QUFDQSxzQkFBa0IsSUFBSTtBQUFBLEVBQ3hCO0FBQ0Y7QUFZTyxTQUFTLG9CQUFvQixLQUF3QjtBQUMxRCxNQUFJLENBQUMsSUFBSSxRQUFRLFVBQVUsbUJBQW1CLEdBQUc7QUFDL0MsVUFBTSxJQUFJLDBCQUEwQiwyQkFBdUM7QUFBQSxFQUM3RTtBQUVBLFFBQU0sTUFBTSxvQkFBb0IsR0FBRztBQUNuQyxNQUFJLENBQUMsS0FBSztBQUNSLFVBQU0sSUFBSSwwQkFBMEIsaUNBQTBDO0FBQUEsRUFDaEY7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLG9CQUFvQixLQUErQjtBQUNqRSxRQUFNLFNBQVMsSUFBSSxRQUFRLFVBQVUsbUJBQW1CO0FBQ3hELE1BQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxTQUFTO0FBQ3ZDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxZQUFxQixPQUFPO0FBQ2xDLFNBQU8sZUFBZSxTQUFTLElBQUksWUFBWTtBQUNqRDtBQU9BLE1BQU0sb0JBQTZCLENBQUM7QUFZcEMsU0FBUyxlQUFlLE9BQXVDO0FBQzdELE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxRQUFRLEVBQUUsMkJBQTJCLFVBQVUsT0FBTyxNQUFNLDBCQUEwQixjQUFjLEVBQUUsNkJBQTZCLFVBQVUsT0FBTyxNQUFNLDRCQUE0QixjQUFjLEVBQUUseUJBQXlCLFFBQVE7QUFDaFIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHFCQUE4QixNQUFNO0FBQzFDLFNBQU8sT0FBTyx1QkFBdUIsWUFBWSx1QkFBdUIsUUFBUSxxQkFBcUIsc0JBQXNCLE9BQU8sbUJBQW1CLG9CQUFvQjtBQUMzSzsiLAogICJuYW1lcyI6IFsiVGVtcGxhdGVyUnVuTW9kZSIsICJUZW1wbGF0ZXJVbmF2YWlsYWJpbGl0eVJlYXNvbiJdCn0K
279
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzbGljZSBvZiBUZW1wbGF0ZXIncyBJTlRFUk5BTCBBUEkgdGhpcyBsaWJyYXJ5IHRhbGtzIHRvLCBhbmQgdGhlIHJ1bnRpbWUgbmFycm93aW5nIHRoYXQgZ2V0cyBob2xkXG4gKiBvZiBpdC5cbiAqXG4gKiAqKlRlbXBsYXRlciBwdWJsaXNoZXMgbm8gQVBJLioqIFJlbmRlcmluZyBhIHRlbXBsYXRlIGFnYWluc3QgYSBmaWxlIGFuZCBnZXR0aW5nIHRoZSByZXN1bHRpbmcgc3RyaW5nXG4gKiBiYWNrIGlzIG9ubHkgcmVhY2hhYmxlIHRocm91Z2ggdW5kb2N1bWVudGVkIGludGVybmFscyBoYW5naW5nIG9mZlxuICogYGFwcC5wbHVnaW5zLmdldFBsdWdpbigndGVtcGxhdGVyLW9ic2lkaWFuJykudGVtcGxhdGVyYCBcdTIwMTQgYGNyZWF0ZV9ydW5uaW5nX2NvbmZpZ2AsXG4gKiBgZnVuY3Rpb25zX2dlbmVyYXRvci5nZW5lcmF0ZV9vYmplY3RgLCBgcmVhZF9hbmRfcGFyc2VfdGVtcGxhdGVgLCBhbmQgYSBgUnVuTW9kZWAgZW51bS4gRXZlcnkgcGx1Z2luXG4gKiB0aGF0IHdhbnRzIGl0IHJlLWRlcml2ZXMgdGhlIHNhbWUgcmV2ZXJzZSBlbmdpbmVlcmluZywgd2hpY2ggaXMgd2h5IGl0IGxpdmVzIGhlcmUgaW5zdGVhZC5cbiAqXG4gKiAqKlRoaXMgbW9kdWxlIGlzIGV4cGxpY2l0bHkgQkVTVC1FRkZPUlQuKiogTm90aGluZyBpdCBiaW5kcyB0byBpcyBkb2N1bWVudGVkIG9yIGNvdmVyZWQgYnkgVGVtcGxhdGVyJ3NcbiAqIHNlbWFudGljIHZlcnNpb25pbmcsIHNvIGEgVGVtcGxhdGVyIHJlbGVhc2UgbWF5IHJlbmFtZSBvciByZXNoYXBlIGFueSBvZiBpdCB3aXRob3V0IHdhcm5pbmcuIFRoZSBzaGFwZXNcbiAqIGJlbG93IHdlcmUgcmVhZCBmcm9tIFRlbXBsYXRlciBgMi4yNC4zYC4gVHdvIGRlbGliZXJhdGUgY29uc2VxdWVuY2VzIGZvbGxvdzpcbiAqXG4gKiAtIHtAbGluayByZXNvbHZlVGVtcGxhdGVyQXBpfSByZXR1cm5zIGBudWxsYCBcdTIwMTQgYSBUZW1wbGF0ZXIgdG9vIG9sZCwgdG9vIG5ldyBvciB0b28gYnJva2VuIHRvIHRhbGsgdG9cbiAqICAgcmVhZHMgYXMgXCJub3QgdGhlcmVcIiBhbmQgdGhlIGludGVncmF0aW9uIHN0YXlzIGRvcm1hbnQuXG4gKiAtIHtAbGluayByZXF1aXJlVGVtcGxhdGVyQXBpfSB0aHJvd3MgYSB7QGxpbmsgVGVtcGxhdGVyVW5hdmFpbGFibGVFcnJvcn0gdGhhdCBOQU1FUyB0aGUgcGx1Z2luIGFuZCB0aGVcbiAqICAgcmVhc29uLCByYXRoZXIgdGhhbiBsZXR0aW5nIGEgYENhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgdW5kZWZpbmVkYCBzdXJmYWNlIGZyb20gc29tZXdoZXJlIGluc2lkZVxuICogICBUZW1wbGF0ZXIuXG4gKlxuICogVGhlIHR5cGVzIGFyZSBERUNMQVJFRCBIRVJFIHJhdGhlciB0aGFuIGltcG9ydGVkLCBhbmQgbmFycm93ZWQgdG8gdGhlIG1lbWJlcnMgYWN0dWFsbHkgY2FsbGVkOiBUZW1wbGF0ZXJcbiAqIHNoaXBzIG5vIG5wbSB0eXBlcyBwYWNrYWdlLCBhbmQgZGVwZW5kaW5nIG9uIGl0IHdvdWxkIHR1cm4gYW4gb3B0aW9uYWwgaW50ZWdyYXRpb24gaW50byBhIGJ1aWxkLXRpbWVcbiAqIGRlcGVuZGVuY3kuXG4gKlxuICogVGhlIHNlY29uZCB0aGluZyB0aGlzIG1vZHVsZSBzdXBwbGllcyBpcyBhbiBhY3RpdmUtZmlsZSBhbnN3ZXIuIFdoaWxlIGEgdGVtcGxhdGUgcmVuZGVycyxcbiAqIGBhcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKWAgc3RpbGwgcG9pbnRzIGF0IHdoYXRldmVyIHRoZSB1c2VyIGhhcHBlbnMgdG8gaGF2ZSBvcGVuIFx1MjAxNCBOT1QgYXQgdGhlIGZpbGVcbiAqIHRoZSB0ZW1wbGF0ZSBpcyBiZWluZyByZW5kZXJlZCBmb3IgXHUyMDE0IHNvIGEgcGx1Z2luJ3Mgb3duIGhlbHBlciBjYWxsZWQgZnJvbSBpbnNpZGUgYSB0ZW1wbGF0ZSByZXNvbHZlc1xuICogbGlua3MgYWdhaW5zdCB0aGUgd3Jvbmcgbm90ZS4ge0BsaW5rIFRlbXBsYXRlckFjdGl2ZUZpbGVQcm92aWRlcn0gYW5zd2VycyB3aXRoIHRoZSByZW5kZXIgdGFyZ2V0IGZvciB0aGVcbiAqIGR1cmF0aW9uIG9mIGEge0BsaW5rIHBhcnNlVGVtcGxhdGV9IGNhbGwgYW5kIGZhbGxzIGJhY2sgdG8gdGhlIHdvcmtzcGFjZSBvdGhlcndpc2UuIE5vdGUgdGhpcyBpcyBhYm91dFxuICogdGhlIENPTlNVTUVSJ3MgaGVscGVyczogVGVtcGxhdGVyJ3Mgb3duIGB0cC5maWxlLipgIGFscmVhZHkgcmVzb2x2ZXMgdGhyb3VnaCB0aGUgcnVubmluZyBjb25maWcnc1xuICogYHRhcmdldF9maWxlYCBhbmQgbmVlZHMgbm8gaGVscC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuaW1wb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgeyBnZXRGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFRlbXBsYXRlckZ1bmN0aW9uc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VGVtcGxhdGVyRnVuY3Rpb25zUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXR1cm4gVGVtcGxhdGVyJ3MgYGN1cnJlbnRfZnVuY3Rpb25zX29iamVjdGAgd2hlbiBpdCBhbHJlYWR5IGhhcyBvbmUsIGluc3RlYWQgb2ZcbiAgICogZ2VuZXJhdGluZyBhIGZyZXNoIG9iamVjdC4gUmV1c2UgaXMgY2hlYXBlciBhbmQgZ2l2ZXMgdGhlIG9iamVjdCBvZiB0aGUgcmVuZGVyIGN1cnJlbnRseSBpbiBmbGlnaHQ7XG4gICAqIHBhc3MgYGZhbHNlYCB0byBmb3JjZSBhIG5ldyBvbmUgYnVpbHQgZm9yIGB0YXJnZXRQYXRoT3JGaWxlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXVzZUN1cnJlbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBzaG91bGQgcmVzb2x2ZSBhZ2FpbnN0IFx1MjAxNCB3aGF0IGB0cC5maWxlLipgIHJlcG9ydHMuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBwYXJzZVRlbXBsYXRlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZVRlbXBsYXRlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgdGhlIHRlbXBsYXRlIGlzIHJlbmRlcmVkIEZPUi4gSXQgaXMgd2hhdCBgdHAuZmlsZS4qYCByZXNvbHZlcyB0byBpbnNpZGUgdGhlIHRlbXBsYXRlLCBhbmRcbiAgICogd2hhdCB7QGxpbmsgVGVtcGxhdGVyQWN0aXZlRmlsZVByb3ZpZGVyfSByZXBvcnRzIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNhbGwuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgZmlsZSB0byByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSB0ZW1wbGF0ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJIG9iamVjdCwgbmFycm93ZWQgdG8gdGhlIG1lbWJlcnMgdGhpcyBsaWJyYXJ5IGNhbGxzLlxuICpcbiAqIEl0cyBtZW1iZXJzIGFyZSBgc25ha2VfY2FzZWAgYmVjYXVzZSBUZW1wbGF0ZXIncyBhcmU7IHRoZXkgYXJlIHRyYW5zY3JpYmVkIHJhdGhlciB0aGFuIHJlbmFtZWQgc28gdGhlXG4gKiBzaGFwZSBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IFRlbXBsYXRlcidzIHNvdXJjZSBhdCBhIGdsYW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZXJBcGkge1xuICAvKipcbiAgICogQnVpbGRzIHRoZSB7QGxpbmsgVGVtcGxhdGVyUnVubmluZ0NvbmZpZ30gdGhhdCBkZXNjcmliZXMgb25lIHJlbmRlci5cbiAgICpcbiAgICogQHBhcmFtIHRlbXBsYXRlRmlsZSAtIFRoZSB0ZW1wbGF0ZSBiZWluZyByZW5kZXJlZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGVyZSBpcyBub25lIChhcyB3aGVuIG9ubHlcbiAgICogdGhlIGZ1bmN0aW9ucyBvYmplY3QgaXMgd2FudGVkKS5cbiAgICogQHBhcmFtIHRhcmdldEZpbGUgLSBUaGUgZmlsZSB0aGUgcmVuZGVyIGlzIGZvci5cbiAgICogQHBhcmFtIHJ1bk1vZGUgLSBXaGljaCB7QGxpbmsgVGVtcGxhdGVyUnVuTW9kZX0gdGhlIHJlbmRlciBpcy5cbiAgICogQHJldHVybnMgVGhlIHJ1bm5pbmcgY29uZmlnLlxuICAgKi9cbiAgY3JlYXRlX3J1bm5pbmdfY29uZmlnOiAodGVtcGxhdGVGaWxlOiBURmlsZSB8IHVuZGVmaW5lZCwgdGFyZ2V0RmlsZTogVEZpbGUsIHJ1bk1vZGU6IFRlbXBsYXRlclJ1bk1vZGUpID0+IFRlbXBsYXRlclJ1bm5pbmdDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbnMgb2JqZWN0IChgdHBgKSBvZiB0aGUgcmVuZGVyIGN1cnJlbnRseSBpbiBmbGlnaHQsIHdoZW4gdGhlcmUgaXMgb25lLlxuICAgKi9cbiAgY3VycmVudF9mdW5jdGlvbnNfb2JqZWN0Pzogb2JqZWN0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGZ1bmN0aW9ucyBvYmplY3QgKGB0cGApIGEgdGVtcGxhdGUgaXMgZXZhbHVhdGVkIGFnYWluc3QuXG4gICAqL1xuICBmdW5jdGlvbnNfZ2VuZXJhdG9yOiBUZW1wbGF0ZXJGdW5jdGlvbnNHZW5lcmF0b3I7XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBjb25maWcncyBgdGVtcGxhdGVfZmlsZWAgYW5kIHJlbmRlcnMgaXQsIHJldHVybmluZyB0aGUgcmVzdWx0aW5nIHRleHQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUge0BsaW5rIFRlbXBsYXRlclJ1bm5pbmdDb25maWd9IGRlc2NyaWJpbmcgdGhlIHJlbmRlci4gVGVtcGxhdGVyIHRocm93cyB3aGVuIGl0c1xuICAgKiBgdGVtcGxhdGVfZmlsZWAgaXMgbm90IGEgYFRGaWxlYC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSByZW5kZXJlZCB0ZXh0LlxuICAgKi9cbiAgcmVhZF9hbmRfcGFyc2VfdGVtcGxhdGU6IChjb25maWc6IFRlbXBsYXRlclJ1bm5pbmdDb25maWcpID0+IFByb21pc2U8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBUaGUgYGZ1bmN0aW9uc19nZW5lcmF0b3JgIGhhbGYgb2Yge0BsaW5rIFRlbXBsYXRlckFwaX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVyRnVuY3Rpb25zR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgZnVuY3Rpb25zIG9iamVjdCAoYHRwYCkgZm9yIGEgcnVubmluZyBjb25maWcuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUge0BsaW5rIFRlbXBsYXRlclJ1bm5pbmdDb25maWd9IHRvIGJ1aWxkIGZvci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBmdW5jdGlvbnMgb2JqZWN0LlxuICAgKi9cbiAgZ2VuZXJhdGVfb2JqZWN0OiAoY29uZmlnOiBUZW1wbGF0ZXJSdW5uaW5nQ29uZmlnKSA9PiBQcm9taXNlPG9iamVjdD47XG59XG5cbi8qKlxuICogT25lIFRlbXBsYXRlciByZW5kZXIsIGFzIFRlbXBsYXRlcidzIGBjcmVhdGVfcnVubmluZ19jb25maWdgIGRlc2NyaWJlcyBpdC5cbiAqXG4gKiBJdHMgbWVtYmVycyBhcmUgYHNuYWtlX2Nhc2VgIGJlY2F1c2UgVGVtcGxhdGVyJ3MgYXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlclJ1bm5pbmdDb25maWcge1xuICAvKipcbiAgICogVGhlIGZpbGUgVGVtcGxhdGVyIGNvbnNpZGVycyBhY3RpdmUuIFRlbXBsYXRlciBmaWxscyB0aGlzIGluIGl0c2VsZiBmcm9tXG4gICAqIGB3b3Jrc3BhY2UuYWN0aXZlRWRpdG9yPy5maWxlID8/IHdvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKClgOyBpdCBpcyBvcHRpb25hbCBoZXJlIGJlY2F1c2UgYVxuICAgKiBoYW5kLWJ1aWx0IGNvbmZpZyBtYXkgb21pdCBpdC5cbiAgICovXG4gIGFjdGl2ZV9maWxlPzogbnVsbCB8IFRGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGljaCB7QGxpbmsgVGVtcGxhdGVyUnVuTW9kZX0gdGhlIHJlbmRlciBpcy5cbiAgICovXG4gIHJ1bl9tb2RlOiBUZW1wbGF0ZXJSdW5Nb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGUgcmVuZGVyIGlzIGZvciBcdTIwMTQgd2hhdCBgdHAuZmlsZS4qYCByZXNvbHZlcyB0by5cbiAgICovXG4gIHRhcmdldF9maWxlOiBURmlsZTtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIGJlaW5nIHJlbmRlcmVkLCB3aGVuIHRoZXJlIGlzIG9uZS5cbiAgICovXG4gIHRlbXBsYXRlX2ZpbGU/OiBURmlsZSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUZW1wbGF0ZXIncyBwbHVnaW4gaWQsIGFzIGl0cyBtYW5pZmVzdCBkZWNsYXJlcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFTVBMQVRFUl9QTFVHSU5fSUQgPSAndGVtcGxhdGVyLW9ic2lkaWFuJztcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBUaGVzZSBhcmUgVGVtcGxhdGVyJ3Mgb3duIGBSdW5Nb2RlYCB2YWx1ZXMsIHRyYW5zY3JpYmVkLiAqL1xuLyoqXG4gKiBUZW1wbGF0ZXIncyBgUnVuTW9kZWAgZW51bSwgd2hpY2ggc2F5cyB3aGF0IGtpbmQgb2YgcmVuZGVyIGEge0BsaW5rIFRlbXBsYXRlclJ1bm5pbmdDb25maWd9IGRlc2NyaWJlcy5cbiAqXG4gKiBUaGUgbnVtZXJpYyB2YWx1ZXMgQVJFIFRlbXBsYXRlcidzLCBhbmQgdGhlIG1lbWJlcnMgYXJlIGxpc3RlZCBpbiBpdHMgZGVjbGFyYXRpb24gb3JkZXIgc28gdGhlIHR3byBjYW5cbiAqIGJlIGNvbXBhcmVkIGxpbmUgZm9yIGxpbmUuIFRoZXkgYXJlIHdyaXR0ZW4gb3V0IGV4cGxpY2l0bHkgYWxsIHRoZSBzYW1lLCBiZWNhdXNlIHRoZXkgY3Jvc3MgaW50b1xuICogVGVtcGxhdGVyIGFzIGludGVnZXJzIFx1MjAxNCBuZXZlciByZW51bWJlciB0aGVtLlxuICovXG5leHBvcnQgZW51bSBUZW1wbGF0ZXJSdW5Nb2RlIHtcbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgdGVtcGxhdGUgaW50byBhIG5ld2x5IGNyZWF0ZWQgZmlsZS5cbiAgICovXG4gIENyZWF0ZU5ld0Zyb21UZW1wbGF0ZSA9IDAsXG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgdGVtcGxhdGUgYW5kIGFwcGVuZCB0aGUgcmVzdWx0IHRvIHRoZSBhY3RpdmUgZmlsZS5cbiAgICovXG4gIEFwcGVuZEFjdGl2ZUZpbGUgPSAxLFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHRlbXBsYXRlIGFuZCBvdmVyd3JpdGUgYSBnaXZlbiBmaWxlIHdpdGggdGhlIHJlc3VsdC5cbiAgICovXG4gIE92ZXJ3cml0ZUZpbGUgPSAyLFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHRlbXBsYXRlIGFuZCBvdmVyd3JpdGUgdGhlIGFjdGl2ZSBmaWxlIHdpdGggdGhlIHJlc3VsdC5cbiAgICovXG4gIE92ZXJ3cml0ZUFjdGl2ZUZpbGUgPSAzLFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHRlbXBsYXRlIG9uIGRlbWFuZCwgZm9yIGEgY2FsbGVyIHRoYXQgd2FudHMgdGhlIHJlc3VsdGluZyB0ZXh0IHJhdGhlciB0aGFuIGEgZmlsZVxuICAgKiB3cml0dGVuLiBUaGlzIGlzIHdoYXQge0BsaW5rIHBhcnNlVGVtcGxhdGV9IHVzZXMuXG4gICAqL1xuICBEeW5hbWljUHJvY2Vzc29yID0gNCxcblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0ZW1wbGF0ZSBhcyBhIHN0YXJ0dXAgdGVtcGxhdGUuIHtAbGluayBnZXRUZW1wbGF0ZXJGdW5jdGlvbnN9IHVzZXMgaXQgZm9yIHRoZSB0aHJvd2F3YXlcbiAgICogY29uZmlnIGl0IGJ1aWxkcywgYmVjYXVzZSB0aGF0IGNvbmZpZyByZW5kZXJzIG5vdGhpbmcuXG4gICAqL1xuICBTdGFydHVwVGVtcGxhdGUgPSA1XG59XG4vKiBlc2xpbnQtZW5hYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gVGhlc2UgYXJlIFRlbXBsYXRlcidzIG93biBgUnVuTW9kZWAgdmFsdWVzLCB0cmFuc2NyaWJlZC4gKi9cblxuLyoqXG4gKiBXaHkgVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJIGNvdWxkIG5vdCBiZSBoYW5kZWQgb3Zlci5cbiAqL1xuZXhwb3J0IGVudW0gVGVtcGxhdGVyVW5hdmFpbGFiaWxpdHlSZWFzb24ge1xuICAvKipcbiAgICogVGVtcGxhdGVyIGlzIG5vdCBpbnN0YWxsZWQsIG9yIGlzIGluc3RhbGxlZCBidXQgZGlzYWJsZWQuIE9ic2lkaWFuJ3MgYGdldFBsdWdpbmAgY2Fubm90IHRlbGwgdGhlIHR3b1xuICAgKiBhcGFydCBcdTIwMTQgaXQgcmV0dXJucyBub3RoaW5nIGVpdGhlciB3YXkuXG4gICAqL1xuICBOb3RMb2FkZWQgPSAnbm90TG9hZGVkJyxcblxuICAvKipcbiAgICogVGVtcGxhdGVyIGlzIGxvYWRlZCwgYnV0IGRvZXMgbm90IGV4cG9zZSB0aGUgaW50ZXJuYWxzIHRoaXMgbGlicmFyeSBjYWxscyBcdTIwMTQgaXQgaXMgdG9vIG9sZCwgdG9vIG5ldyxcbiAgICogb3IgaGFzIGJlZW4gcmVzaGFwZWQuXG4gICAqL1xuICBTaGFwZUNoYW5nZWQgPSAnc2hhcGVDaGFuZ2VkJ1xufVxuXG4vKipcbiAqIEFjdGl2ZS1maWxlIHByb3ZpZGVyIHRoYXQgYW5zd2VycyB3aXRoIHRoZSBmaWxlIGEge0BsaW5rIHBhcnNlVGVtcGxhdGV9IHJlbmRlciBpcyBjdXJyZW50bHkgZm9yLFxuICogZmFsbGluZyBiYWNrIHRvIHRoZSB3b3Jrc3BhY2UncyBhY3RpdmUgZmlsZSB3aGVuIG5vIHJlbmRlciBpcyBpbiBmbGlnaHQuXG4gKlxuICogVGhpcyBpcyB0aGUgcGllY2UgdGhhdCBtYWtlcyBhIGNvbnN1bWVyJ3Mgb3duIHRlbXBsYXRlIGhlbHBlcnMgcmVzb2x2ZSBhZ2FpbnN0IHRoZSByaWdodCBub3RlOiBkdXJpbmcgYVxuICogcmVuZGVyIHRoZSB3b3Jrc3BhY2Ugc3RpbGwgaGFzIHdoYXRldmVyIHRoZSB1c2VyIHdhcyBsb29raW5nIGF0IG9wZW4sIHdoaWNoIGlzIHJhcmVseSB0aGUgdGFyZ2V0LlxuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVyQWN0aXZlRmlsZVByb3ZpZGVyIGV4dGVuZHMgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbGUgdGhlIGlubmVybW9zdCBpbi1mbGlnaHQge0BsaW5rIHBhcnNlVGVtcGxhdGV9IHJlbmRlciBpcyBmb3IsIG9yIHRoZSB3b3Jrc3BhY2UncyBhY3RpdmVcbiAgICogZmlsZSB3aGVuIHRoZXJlIGlzIG5vIHJlbmRlciBpbiBmbGlnaHQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhY3RpdmUgZmlsZSwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vbmUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0QWN0aXZlRmlsZSgpOiBudWxsIHwgVEZpbGUge1xuICAgIHJldHVybiBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlKCkgPz8gc3VwZXIuZ2V0QWN0aXZlRmlsZSgpO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJIGNhbm5vdCBiZSBoYW5kZWQgb3ZlciwgY2FycnlpbmcgdGhlXG4gKiB7QGxpbmsgVGVtcGxhdGVyVW5hdmFpbGFiaWxpdHlSZWFzb259IHRoYXQgc2F5cyB3aHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogV2hpY2ggb2YgdGhlIHR3byBmYWlsdXJlcyBvY2N1cnJlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWFzb246IFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIFRlbXBsYXRlclVuYXZhaWxhYmxlRXJyb3J9LlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gV2h5IHRoZSBBUEkgaXMgdW5hdmFpbGFibGUuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocmVhc29uOiBUZW1wbGF0ZXJVbmF2YWlsYWJpbGl0eVJlYXNvbikge1xuICAgIHN1cGVyKGBUaGUgaW50ZXJuYWwgQVBJIG9mIHRoZSBwbHVnaW4gXCIke1RFTVBMQVRFUl9QTFVHSU5fSUR9XCIgaXMgdW5hdmFpbGFibGU6ICR7cmVhc29ufS5gKTtcbiAgICB0aGlzLm5hbWUgPSAnVGVtcGxhdGVyVW5hdmFpbGFibGVFcnJvcic7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIFRlbXBsYXRlcidzIGZ1bmN0aW9ucyBvYmplY3QgXHUyMDE0IHRoZSBgdHBgIGEgdGVtcGxhdGUgaXMgZXZhbHVhdGVkIGFnYWluc3QgXHUyMDE0IHNvIGEgY2FsbGVyIGNhbiBpbnZva2VcbiAqIGB0cC5kYXRlLm5vdygpYCwgYHRwLmZpbGUudGl0bGVgIGFuZCB0aGUgcmVzdCBvdXRzaWRlIGEgdGVtcGxhdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgR2V0VGVtcGxhdGVyRnVuY3Rpb25zUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgZnVuY3Rpb25zIG9iamVjdC5cbiAqIEB0aHJvd3MgQSB7QGxpbmsgVGVtcGxhdGVyVW5hdmFpbGFibGVFcnJvcn0gd2hlbiBUZW1wbGF0ZXIgaXMgbm90IGxvYWRlZCBvciBpdHMgc2hhcGUgaGFzIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUZW1wbGF0ZXJGdW5jdGlvbnMocGFyYW1zOiBHZXRUZW1wbGF0ZXJGdW5jdGlvbnNQYXJhbXMpOiBQcm9taXNlPG9iamVjdD4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHNob3VsZFJldXNlQ3VycmVudCA9IHRydWUsXG4gICAgdGFyZ2V0UGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhcGkgPSByZXF1aXJlVGVtcGxhdGVyQXBpKGFwcCk7XG5cbiAgaWYgKHNob3VsZFJldXNlQ3VycmVudCAmJiBhcGkuY3VycmVudF9mdW5jdGlvbnNfb2JqZWN0KSB7XG4gICAgcmV0dXJuIGFwaS5jdXJyZW50X2Z1bmN0aW9uc19vYmplY3Q7XG4gIH1cblxuICBjb25zdCB0YXJnZXRGaWxlID0gZ2V0RmlsZSh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGU6IHRhcmdldFBhdGhPckZpbGVcbiAgfSk7XG4gIGNvbnN0IGNvbmZpZyA9IGFwaS5jcmVhdGVfcnVubmluZ19jb25maWcodW5kZWZpbmVkLCB0YXJnZXRGaWxlLCBUZW1wbGF0ZXJSdW5Nb2RlLlN0YXJ0dXBUZW1wbGF0ZSk7XG4gIHJldHVybiBhd2FpdCBhcGkuZnVuY3Rpb25zX2dlbmVyYXRvci5nZW5lcmF0ZV9vYmplY3QoY29uZmlnKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmaWxlIHRoZSBpbm5lcm1vc3QgaW4tZmxpZ2h0IHtAbGluayBwYXJzZVRlbXBsYXRlfSByZW5kZXIgaXMgZm9yLlxuICpcbiAqIFJlbmRlcnMgbmVzdCBcdTIwMTQgYSB0ZW1wbGF0ZSBtYXkgcmVuZGVyIGFub3RoZXIgXHUyMDE0IHNvIHRoZSBjYWxscyBmb3JtIGEgc3RhY2sgYW5kIHRoaXMgcmVwb3J0cyB0aGUgdG9wIG9mXG4gKiBpdC4gT3V0c2lkZSBhbnkgcmVuZGVyIGl0IGlzIGBudWxsYC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcmVuZGVyIHRhcmdldCwgb3IgYG51bGxgIHdoZW4gbm8gcmVuZGVyIGlzIGluIGZsaWdodC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBsYXRlclJlbmRlclRhcmdldEZpbGUoKTogbnVsbCB8IFRGaWxlIHtcbiAgcmV0dXJuIHJlbmRlclRhcmdldEZpbGVzLmF0KC0xKSA/PyBudWxsO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBUZW1wbGF0ZXIgdGVtcGxhdGUgYWdhaW5zdCBhIHRhcmdldCBmaWxlIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgdGV4dCwgd2l0aG91dCB3cml0aW5nXG4gKiBhbnl0aGluZy5cbiAqXG4gKiBGb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWxsIHtAbGluayBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlfSBhbmRcbiAqIHtAbGluayBUZW1wbGF0ZXJBY3RpdmVGaWxlUHJvdmlkZXJ9IHJlcG9ydCBgdGFyZ2V0UGF0aE9yRmlsZWAsIHNvIGEgY29uc3VtZXIncyBvd24gaGVscGVycyBpbnZva2VkIGZyb21cbiAqIGluc2lkZSB0aGUgdGVtcGxhdGUgcmVzb2x2ZSBhZ2FpbnN0IGl0IHJhdGhlciB0aGFuIGFnYWluc3Qgd2hhdGV2ZXIgdGhlIHVzZXIgaGFzIG9wZW4uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgUGFyc2VUZW1wbGF0ZVBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIHJlbmRlcmVkIHRleHQuXG4gKiBAdGhyb3dzIEEge0BsaW5rIFRlbXBsYXRlclVuYXZhaWxhYmxlRXJyb3J9IHdoZW4gVGVtcGxhdGVyIGlzIG5vdCBsb2FkZWQgb3IgaXRzIHNoYXBlIGhhcyBjaGFuZ2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUZW1wbGF0ZShwYXJhbXM6IFBhcnNlVGVtcGxhdGVQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHRhcmdldFBhdGhPckZpbGUsXG4gICAgdGVtcGxhdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHRlbXBsYXRlRmlsZSA9IGdldEZpbGUoe1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlOiB0ZW1wbGF0ZVBhdGhPckZpbGVcbiAgfSk7XG4gIGNvbnN0IHRhcmdldEZpbGUgPSBnZXRGaWxlKHtcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZTogdGFyZ2V0UGF0aE9yRmlsZVxuICB9KTtcbiAgY29uc3QgYXBpID0gcmVxdWlyZVRlbXBsYXRlckFwaShhcHApO1xuXG4gIHJlbmRlclRhcmdldEZpbGVzLnB1c2godGFyZ2V0RmlsZSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwaS5yZWFkX2FuZF9wYXJzZV90ZW1wbGF0ZSh7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlIC0tIFRlbXBsYXRlciBBUEkuXG4gICAgICBydW5fbW9kZTogVGVtcGxhdGVyUnVuTW9kZS5EeW5hbWljUHJvY2Vzc29yLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZSAtLSBUZW1wbGF0ZXIgQVBJLlxuICAgICAgdGFyZ2V0X2ZpbGU6IHRhcmdldEZpbGUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlIC0tIFRlbXBsYXRlciBBUEkuXG4gICAgICB0ZW1wbGF0ZV9maWxlOiB0ZW1wbGF0ZUZpbGVcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICByZW5kZXJUYXJnZXRGaWxlcy5wb3AoKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJLCB0aHJvd2luZyB3aGVuIGl0IGNhbm5vdCBiZSBoYWQuXG4gKlxuICogVXNlIHRoaXMgd2hlcmUgdGhlIGNhbGxlciBjYW5ub3QgY2Fycnkgb24gd2l0aG91dCBUZW1wbGF0ZXIgXHUyMDE0IHRoZSBlcnJvciBuYW1lcyB0aGUgcGx1Z2luIGFuZCBzYXlzIHdoaWNoXG4gKiBvZiB0aGUgdHdvIGZhaWx1cmVzIG9jY3VycmVkLiBVc2Uge0BsaW5rIHJlc29sdmVUZW1wbGF0ZXJBcGl9IGluc3RlYWQgd2hlcmUgdGhlIGludGVncmF0aW9uIGlzIG9wdGlvbmFsLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGVtcGxhdGVyJ3MgaW50ZXJuYWwgQVBJLlxuICogQHRocm93cyBBIHtAbGluayBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yfSB3aGVuIFRlbXBsYXRlciBpcyBub3QgbG9hZGVkIG9yIGl0cyBzaGFwZSBoYXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVUZW1wbGF0ZXJBcGkoYXBwOiBBcHApOiBUZW1wbGF0ZXJBcGkge1xuICBpZiAoIWFwcC5wbHVnaW5zLmdldFBsdWdpbihURU1QTEFURVJfUExVR0lOX0lEKSkge1xuICAgIHRocm93IG5ldyBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yKFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uLk5vdExvYWRlZCk7XG4gIH1cblxuICBjb25zdCBhcGkgPSByZXNvbHZlVGVtcGxhdGVyQXBpKGFwcCk7XG4gIGlmICghYXBpKSB7XG4gICAgdGhyb3cgbmV3IFRlbXBsYXRlclVuYXZhaWxhYmxlRXJyb3IoVGVtcGxhdGVyVW5hdmFpbGFiaWxpdHlSZWFzb24uU2hhcGVDaGFuZ2VkKTtcbiAgfVxuXG4gIHJldHVybiBhcGk7XG59XG5cbi8qKlxuICogR2V0cyBUZW1wbGF0ZXIncyBpbnRlcm5hbCBBUEksIHdoZW4gVGVtcGxhdGVyIGlzIGluc3RhbGxlZCwgZW5hYmxlZCBhbmQgc3RpbGwgdGhlIHNoYXBlIHRoaXMgbGlicmFyeVxuICogZXhwZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBpbnRlcm5hbCBBUEksIG9yIGBudWxsYCB3aGVuIFRlbXBsYXRlciBpcyBub3QgdGhlcmUgdG8gdGFsayB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVUZW1wbGF0ZXJBcGkoYXBwOiBBcHApOiBudWxsIHwgVGVtcGxhdGVyQXBpIHtcbiAgY29uc3QgcGx1Z2luID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFRFTVBMQVRFUl9QTFVHSU5fSUQpO1xuICBpZiAoIXBsdWdpbiB8fCAhKCd0ZW1wbGF0ZXInIGluIHBsdWdpbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlcjogdW5rbm93biA9IHBsdWdpbi50ZW1wbGF0ZXI7XG4gIHJldHVybiBpc1RlbXBsYXRlckFwaSh0ZW1wbGF0ZXIpID8gdGVtcGxhdGVyIDogbnVsbDtcbn1cblxuLypcbiAqIFRoZSBzdGFjayBvZiBmaWxlcyBpbi1mbGlnaHQgYHBhcnNlVGVtcGxhdGVgIGNhbGxzIGFyZSByZW5kZXJpbmcgZm9yLCBpbm5lcm1vc3QgbGFzdC4gQSBzdGFjayByYXRoZXJcbiAqIHRoYW4gYSBzaW5nbGUgc2xvdCBiZWNhdXNlIGEgdGVtcGxhdGUgbWF5IHJlbmRlciBhbm90aGVyLCBhbmQgYW4gYXJyYXkgcmF0aGVyIHRoYW4gYSByZWFzc2lnbmVkXG4gKiB2YXJpYWJsZSBiZWNhdXNlIHB1c2hpbmcgYW5kIHBvcHBpbmcgYSBgY29uc3RgIG5lZWRzIG5vIHdyaXRlIHRvIGFuIG91dGVyIGJpbmRpbmcgYWNyb3NzIGFuIGBhd2FpdGAuXG4gKi9cbmNvbnN0IHJlbmRlclRhcmdldEZpbGVzOiBURmlsZVtdID0gW107XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgYSB2YWx1ZSBpcyBUZW1wbGF0ZXIncyBpbnRlcm5hbCBBUEksIGJ5IHRoZSBtZW1iZXJzIHRoaXMgbGlicmFyeSBhY3R1YWxseSBjYWxscy5cbiAqXG4gKiBBIHByZWRpY2F0ZSByYXRoZXIgdGhhbiBhIGNhc3Qgb24gcHVycG9zZTogYHRlbXBsYXRlcmAgaXMgbm90IHBhcnQgb2YgT2JzaWRpYW4ncyBgUGx1Z2luYCB0eXBlLCBzbyB0aGVcbiAqIHZhbHVlIGFycml2ZXMgYXMgYHVua25vd25gIGFuZCB0aGUgb25seSBob25lc3Qgd2F5IHRvIHR5cGUgaXQgaXMgdG8gVkVSSUZZIGl0LiBBIFRlbXBsYXRlciB0aGF0IHJlbmFtZXNcbiAqIG9uZSBvZiB0aGVzZSB0aGVyZWZvcmUgcmVhZHMgYXMgXCJub3QgdGhlcmVcIiwgaW5zdGVhZCBvZiB0aHJvd2luZyBmcm9tIGluc2lkZSBhIHJlbmRlci5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgY2FuZGlkYXRlIGB0ZW1wbGF0ZXJgIG9iamVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgaXQgY2FycmllcyBldmVyeSBtZW1iZXIgdGhpcyBsaWJyYXJ5IGNhbGxzLlxuICovXG5mdW5jdGlvbiBpc1RlbXBsYXRlckFwaSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRlbXBsYXRlckFwaSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsIHx8ICEoJ2NyZWF0ZV9ydW5uaW5nX2NvbmZpZycgaW4gdmFsdWUpIHx8IHR5cGVvZiB2YWx1ZS5jcmVhdGVfcnVubmluZ19jb25maWcgIT09ICdmdW5jdGlvbicgfHwgISgncmVhZF9hbmRfcGFyc2VfdGVtcGxhdGUnIGluIHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUucmVhZF9hbmRfcGFyc2VfdGVtcGxhdGUgIT09ICdmdW5jdGlvbicgfHwgISgnZnVuY3Rpb25zX2dlbmVyYXRvcicgaW4gdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25zR2VuZXJhdG9yOiB1bmtub3duID0gdmFsdWUuZnVuY3Rpb25zX2dlbmVyYXRvcjtcbiAgcmV0dXJuIHR5cGVvZiBmdW5jdGlvbnNHZW5lcmF0b3IgPT09ICdvYmplY3QnICYmIGZ1bmN0aW9uc0dlbmVyYXRvciAhPT0gbnVsbCAmJiAnZ2VuZXJhdGVfb2JqZWN0JyBpbiBmdW5jdGlvbnNHZW5lcmF0b3IgJiYgdHlwZW9mIGZ1bmN0aW9uc0dlbmVyYXRvci5nZW5lcmF0ZV9vYmplY3QgPT09ICdmdW5jdGlvbic7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMENBLGtDQUFzQztBQUN0Qyx5QkFBd0I7QUFrSWpCLE1BQU0sc0JBQXNCO0FBVTVCLElBQUssbUJBQUwsa0JBQUtBLHNCQUFMO0FBSUwsRUFBQUEsb0NBQUEsMkJBQXdCLEtBQXhCO0FBS0EsRUFBQUEsb0NBQUEsc0JBQW1CLEtBQW5CO0FBS0EsRUFBQUEsb0NBQUEsbUJBQWdCLEtBQWhCO0FBS0EsRUFBQUEsb0NBQUEseUJBQXNCLEtBQXRCO0FBTUEsRUFBQUEsb0NBQUEsc0JBQW1CLEtBQW5CO0FBTUEsRUFBQUEsb0NBQUEscUJBQWtCLEtBQWxCO0FBL0JVLFNBQUFBO0FBQUEsR0FBQTtBQXNDTCxJQUFLLGdDQUFMLGtCQUFLQyxtQ0FBTDtBQUtMLEVBQUFBLCtCQUFBLGVBQVk7QUFNWixFQUFBQSwrQkFBQSxrQkFBZTtBQVhMLFNBQUFBO0FBQUEsR0FBQTtBQXFCTCxNQUFNLG9DQUFvQyxrREFBc0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9yRCxnQkFBOEI7QUFDNUMsV0FBTyw2QkFBNkIsS0FBSyxNQUFNLGNBQWM7QUFBQSxFQUMvRDtBQUNGO0FBTU8sTUFBTSxrQ0FBa0MsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSW5DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxRQUF1QztBQUN4RCxVQUFNLG1DQUFtQyxtQkFBbUIscUJBQXFCLE1BQU0sR0FBRztBQUMxRixTQUFLLE9BQU87QUFDWixTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUNGO0FBVUEsZUFBc0Isc0JBQXNCLFFBQXNEO0FBQ2hHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxxQkFBcUI7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sTUFBTSxvQkFBb0IsR0FBRztBQUVuQyxNQUFJLHNCQUFzQixJQUFJLDBCQUEwQjtBQUN0RCxXQUFPLElBQUk7QUFBQSxFQUNiO0FBRUEsUUFBTSxpQkFBYSw0QkFBUTtBQUFBLElBQ3pCO0FBQUEsSUFDQSxZQUFZO0FBQUEsRUFDZCxDQUFDO0FBQ0QsUUFBTSxTQUFTLElBQUksc0JBQXNCLFFBQVcsWUFBWSx1QkFBZ0M7QUFDaEcsU0FBTyxNQUFNLElBQUksb0JBQW9CLGdCQUFnQixNQUFNO0FBQzdEO0FBVU8sU0FBUywrQkFBNkM7QUFDM0QsU0FBTyxrQkFBa0IsR0FBRyxFQUFFLEtBQUs7QUFDckM7QUFjQSxlQUFzQixjQUFjLFFBQThDO0FBQ2hGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLG1CQUFlLDRCQUFRO0FBQUEsSUFDM0I7QUFBQSxJQUNBLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFDRCxRQUFNLGlCQUFhLDRCQUFRO0FBQUEsSUFDekI7QUFBQSxJQUNBLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFDRCxRQUFNLE1BQU0sb0JBQW9CLEdBQUc7QUFFbkMsb0JBQWtCLEtBQUssVUFBVTtBQUNqQyxNQUFJO0FBQ0YsV0FBTyxNQUFNLElBQUksd0JBQXdCO0FBQUE7QUFBQSxNQUV2QyxVQUFVO0FBQUE7QUFBQSxNQUVWLGFBQWE7QUFBQTtBQUFBLE1BRWIsZUFBZTtBQUFBLElBQ2pCLENBQUM7QUFBQSxFQUNILFVBQUU7QUFDQSxzQkFBa0IsSUFBSTtBQUFBLEVBQ3hCO0FBQ0Y7QUFZTyxTQUFTLG9CQUFvQixLQUF3QjtBQUMxRCxNQUFJLENBQUMsSUFBSSxRQUFRLFVBQVUsbUJBQW1CLEdBQUc7QUFDL0MsVUFBTSxJQUFJLDBCQUEwQiwyQkFBdUM7QUFBQSxFQUM3RTtBQUVBLFFBQU0sTUFBTSxvQkFBb0IsR0FBRztBQUNuQyxNQUFJLENBQUMsS0FBSztBQUNSLFVBQU0sSUFBSSwwQkFBMEIsaUNBQTBDO0FBQUEsRUFDaEY7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLG9CQUFvQixLQUErQjtBQUNqRSxRQUFNLFNBQVMsSUFBSSxRQUFRLFVBQVUsbUJBQW1CO0FBQ3hELE1BQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxTQUFTO0FBQ3ZDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxZQUFxQixPQUFPO0FBQ2xDLFNBQU8sZUFBZSxTQUFTLElBQUksWUFBWTtBQUNqRDtBQU9BLE1BQU0sb0JBQTZCLENBQUM7QUFZcEMsU0FBUyxlQUFlLE9BQXVDO0FBQzdELE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxRQUFRLEVBQUUsMkJBQTJCLFVBQVUsT0FBTyxNQUFNLDBCQUEwQixjQUFjLEVBQUUsNkJBQTZCLFVBQVUsT0FBTyxNQUFNLDRCQUE0QixjQUFjLEVBQUUseUJBQXlCLFFBQVE7QUFDaFIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHFCQUE4QixNQUFNO0FBQzFDLFNBQU8sT0FBTyx1QkFBdUIsWUFBWSx1QkFBdUIsUUFBUSxxQkFBcUIsc0JBQXNCLE9BQU8sbUJBQW1CLG9CQUFvQjtBQUMzSzsiLAogICJuYW1lcyI6IFsiVGVtcGxhdGVyUnVuTW9kZSIsICJUZW1wbGF0ZXJVbmF2YWlsYWJpbGl0eVJlYXNvbiJdCn0K