footprintjs 10.0.1 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/AGENTS.md +2 -1
  2. package/CLAUDE.md +61 -7
  3. package/README.md +136 -312
  4. package/dist/esm/index.d.ts +62 -2
  5. package/dist/esm/index.js +13 -6
  6. package/dist/esm/lib/attempt/anySignal.d.ts +19 -0
  7. package/dist/esm/lib/attempt/anySignal.js +39 -0
  8. package/dist/esm/lib/attempt/call.d.ts +88 -0
  9. package/dist/esm/lib/attempt/call.js +129 -0
  10. package/dist/esm/lib/attempt/category.d.ts +37 -0
  11. package/dist/esm/lib/attempt/category.js +131 -0
  12. package/dist/esm/lib/attempt/correlation.d.ts +95 -0
  13. package/dist/esm/lib/attempt/correlation.js +178 -0
  14. package/dist/esm/lib/attempt/deadline.d.ts +44 -0
  15. package/dist/esm/lib/attempt/deadline.js +101 -0
  16. package/dist/esm/lib/attempt/decision.d.ts +52 -0
  17. package/dist/esm/lib/attempt/decision.js +134 -0
  18. package/dist/esm/lib/attempt/effect.d.ts +76 -0
  19. package/dist/esm/lib/attempt/effect.js +160 -0
  20. package/dist/esm/lib/attempt/errors.d.ts +41 -0
  21. package/dist/esm/lib/attempt/errors.js +44 -0
  22. package/dist/esm/lib/attempt/index.d.ts +18 -0
  23. package/dist/esm/lib/attempt/index.js +15 -0
  24. package/dist/esm/lib/attempt/name.d.ts +21 -0
  25. package/dist/esm/lib/attempt/name.js +43 -0
  26. package/dist/esm/lib/attempt/observed.d.ts +66 -0
  27. package/dist/esm/lib/attempt/observed.js +171 -0
  28. package/dist/esm/lib/attempt/policy.d.ts +45 -0
  29. package/dist/esm/lib/attempt/policy.js +83 -0
  30. package/dist/esm/lib/attempt/record.d.ts +11 -0
  31. package/dist/esm/lib/attempt/record.js +24 -0
  32. package/dist/esm/lib/attempt/retryLoopContext.d.ts +18 -0
  33. package/dist/esm/lib/attempt/retryLoopContext.js +24 -0
  34. package/dist/esm/lib/attempt/retryLoopTypes.d.ts +18 -0
  35. package/dist/esm/lib/attempt/retryLoopTypes.js +2 -0
  36. package/dist/esm/lib/attempt/runner.d.ts +157 -0
  37. package/dist/esm/lib/attempt/runner.js +523 -0
  38. package/dist/esm/lib/attempt/standalone.d.ts +47 -0
  39. package/dist/esm/lib/attempt/standalone.js +126 -0
  40. package/dist/esm/lib/attempt/types.d.ts +453 -0
  41. package/dist/esm/lib/attempt/types.js +16 -0
  42. package/dist/esm/lib/budget/index.d.ts +9 -0
  43. package/dist/esm/lib/budget/index.js +9 -0
  44. package/dist/esm/lib/budget/timeBudget.d.ts +136 -0
  45. package/dist/esm/lib/budget/timeBudget.js +666 -0
  46. package/dist/esm/lib/builder/FlowChartBuilder.d.ts +88 -3
  47. package/dist/esm/lib/builder/FlowChartBuilder.js +199 -9
  48. package/dist/esm/lib/builder/retryLoop.d.ts +56 -0
  49. package/dist/esm/lib/builder/retryLoop.js +283 -0
  50. package/dist/esm/lib/builder/types.d.ts +35 -1
  51. package/dist/esm/lib/builder/types.js +1 -1
  52. package/dist/esm/lib/decide/decide.js +2 -2
  53. package/dist/esm/lib/decide/index.d.ts +1 -1
  54. package/dist/esm/lib/decide/index.js +2 -2
  55. package/dist/esm/lib/decide/types.d.ts +3 -0
  56. package/dist/esm/lib/decide/types.js +1 -8
  57. package/dist/esm/lib/engine/graph/StageNode.d.ts +11 -1
  58. package/dist/esm/lib/engine/graph/StageNode.js +1 -1
  59. package/dist/esm/lib/engine/graph/prefixNodeTree.js +5 -1
  60. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
  61. package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
  62. package/dist/esm/lib/engine/handlers/ResumeEntry.js +3 -1
  63. package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
  64. package/dist/esm/lib/engine/handlers/StageRunner.d.ts +8 -1
  65. package/dist/esm/lib/engine/handlers/StageRunner.js +36 -9
  66. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +24 -5
  67. package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
  68. package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
  69. package/dist/esm/lib/engine/handlers/stageError.d.ts +9 -0
  70. package/dist/esm/lib/engine/handlers/stageError.js +23 -1
  71. package/dist/esm/lib/engine/index.d.ts +2 -2
  72. package/dist/esm/lib/engine/index.js +1 -1
  73. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
  74. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +68 -40
  75. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
  76. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
  77. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
  78. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +61 -9
  79. package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
  80. package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
  81. package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +23 -0
  82. package/dist/esm/lib/engine/narrative/formatting/sentences.js +127 -1
  83. package/dist/esm/lib/engine/narrative/index.d.ts +2 -2
  84. package/dist/esm/lib/engine/narrative/index.js +1 -1
  85. package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +27 -21
  86. package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
  87. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
  88. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
  89. package/dist/esm/lib/engine/narrative/recorders/index.d.ts +1 -1
  90. package/dist/esm/lib/engine/narrative/recorders/index.js +1 -1
  91. package/dist/esm/lib/engine/narrative/types.d.ts +74 -5
  92. package/dist/esm/lib/engine/narrative/types.js +1 -1
  93. package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
  94. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +194 -118
  95. package/dist/esm/lib/engine/traversalContext.d.ts +7 -2
  96. package/dist/esm/lib/engine/traversalContext.js +6 -3
  97. package/dist/esm/lib/engine/types.d.ts +52 -57
  98. package/dist/esm/lib/engine/types.js +1 -1
  99. package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
  100. package/dist/esm/lib/errors/terminalFailure.js +60 -0
  101. package/dist/esm/lib/{decide → filter}/evaluator.d.ts +7 -2
  102. package/dist/esm/lib/filter/evaluator.js +135 -0
  103. package/dist/esm/lib/ids/idempotencyKey.d.ts +14 -0
  104. package/dist/esm/lib/ids/idempotencyKey.js +24 -0
  105. package/dist/esm/lib/memory/StageContext.d.ts +123 -3
  106. package/dist/esm/lib/memory/StageContext.js +245 -4
  107. package/dist/esm/lib/memory/attention.d.ts +26 -0
  108. package/dist/esm/lib/memory/attention.js +171 -0
  109. package/dist/esm/lib/memory/borrowedMutation.d.ts +8 -0
  110. package/dist/esm/lib/memory/borrowedMutation.js +14 -1
  111. package/dist/esm/lib/memory/frameTypes.d.ts +38 -0
  112. package/dist/esm/lib/memory/frameTypes.js +3 -1
  113. package/dist/esm/lib/memory/redaction.d.ts +12 -0
  114. package/dist/esm/lib/memory/redaction.js +54 -5
  115. package/dist/esm/lib/pause/record.js +10 -1
  116. package/dist/esm/lib/pause/types.d.ts +19 -0
  117. package/dist/esm/lib/pause/types.js +17 -1
  118. package/dist/esm/lib/reactive/createTypedScope.js +3 -1
  119. package/dist/esm/lib/reactive/types.d.ts +36 -4
  120. package/dist/esm/lib/reactive/types.js +3 -1
  121. package/dist/esm/lib/recorder/AttemptRecorder.d.ts +141 -0
  122. package/dist/esm/lib/recorder/AttemptRecorder.js +412 -0
  123. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +36 -2
  124. package/dist/esm/lib/recorder/ControlDepRecorder.js +50 -2
  125. package/dist/esm/lib/recorder/EmitRecorder.d.ts +3 -0
  126. package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
  127. package/dist/esm/lib/recorder/InOutRecorder.d.ts +37 -1
  128. package/dist/esm/lib/recorder/InOutRecorder.js +75 -6
  129. package/dist/esm/lib/recorder/QualityRecorder.d.ts +32 -5
  130. package/dist/esm/lib/recorder/QualityRecorder.js +87 -29
  131. package/dist/esm/lib/recorder/TopologyRecorder.d.ts +35 -5
  132. package/dist/esm/lib/recorder/TopologyRecorder.js +76 -2
  133. package/dist/esm/lib/recorder/attemptMetricRows.d.ts +11 -0
  134. package/dist/esm/lib/recorder/attemptMetricRows.js +202 -0
  135. package/dist/esm/lib/recorder/attemptMetrics.d.ts +7 -0
  136. package/dist/esm/lib/recorder/attemptMetrics.js +165 -0
  137. package/dist/esm/lib/recorder/attemptMetricsTypes.d.ts +114 -0
  138. package/dist/esm/lib/recorder/attemptMetricsTypes.js +2 -0
  139. package/dist/esm/lib/recorder/attemptOTel.d.ts +78 -0
  140. package/dist/esm/lib/recorder/attemptOTel.js +107 -0
  141. package/dist/esm/lib/recorder/attemptSeries.d.ts +81 -0
  142. package/dist/esm/lib/recorder/attemptSeries.js +103 -0
  143. package/dist/esm/lib/recorder/hooks.d.ts +9 -0
  144. package/dist/esm/lib/recorder/hooks.js +4 -1
  145. package/dist/esm/lib/runner/DeferredObserverTier.js +13 -1
  146. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +54 -6
  147. package/dist/esm/lib/runner/ExecutionRuntime.js +57 -5
  148. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +46 -2
  149. package/dist/esm/lib/runner/FlowChartExecutor.js +330 -101
  150. package/dist/esm/lib/runner/RunnableChart.d.ts +6 -0
  151. package/dist/esm/lib/runner/RunnableChart.js +5 -1
  152. package/dist/esm/lib/runner/attach.d.ts +2 -1
  153. package/dist/esm/lib/runner/attach.js +8 -2
  154. package/dist/esm/lib/runner/checkpoint.js +3 -1
  155. package/dist/esm/lib/runner/deadline.d.ts +42 -0
  156. package/dist/esm/lib/runner/deadline.js +90 -0
  157. package/dist/esm/lib/runner/index.d.ts +3 -1
  158. package/dist/esm/lib/runner/index.js +2 -1
  159. package/dist/esm/lib/runner/options.d.ts +17 -0
  160. package/dist/esm/lib/runner/options.js +3 -1
  161. package/dist/esm/lib/runner/recordSink.d.ts +128 -0
  162. package/dist/esm/lib/runner/recordSink.js +296 -0
  163. package/dist/esm/lib/runner/resume.d.ts +3 -0
  164. package/dist/esm/lib/runner/resume.js +22 -2
  165. package/dist/esm/lib/runner/snapshot.d.ts +2 -2
  166. package/dist/esm/lib/runner/snapshot.js +6 -2
  167. package/dist/esm/lib/scope/ScopeFacade.d.ts +118 -4
  168. package/dist/esm/lib/scope/ScopeFacade.js +304 -7
  169. package/dist/esm/lib/scope/recorders/DebugRecorder.d.ts +17 -3
  170. package/dist/esm/lib/scope/recorders/DebugRecorder.js +79 -13
  171. package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +10 -0
  172. package/dist/esm/lib/scope/recorders/MetricRecorder.js +15 -2
  173. package/dist/esm/lib/scope/runtime.d.ts +3 -0
  174. package/dist/esm/lib/scope/runtime.js +1 -1
  175. package/dist/esm/lib/scope/types.d.ts +6 -0
  176. package/dist/esm/lib/scope/types.js +1 -1
  177. package/dist/esm/lib/sinks/fileSink.d.ts +135 -0
  178. package/dist/esm/lib/sinks/fileSink.js +387 -0
  179. package/dist/esm/recorders.d.ts +8 -2
  180. package/dist/esm/recorders.js +7 -1
  181. package/dist/esm/sinks.d.ts +23 -0
  182. package/dist/esm/sinks.js +23 -0
  183. package/dist/esm/trace.d.ts +2 -2
  184. package/dist/esm/trace.js +1 -1
  185. package/dist/index.js +77 -60
  186. package/dist/lib/attempt/anySignal.js +43 -0
  187. package/dist/lib/attempt/call.js +134 -0
  188. package/dist/lib/attempt/category.js +136 -0
  189. package/dist/lib/attempt/correlation.js +186 -0
  190. package/dist/lib/attempt/deadline.js +112 -0
  191. package/dist/lib/attempt/decision.js +139 -0
  192. package/dist/lib/attempt/effect.js +174 -0
  193. package/dist/lib/attempt/errors.js +49 -0
  194. package/dist/lib/attempt/index.js +26 -0
  195. package/dist/lib/attempt/name.js +48 -0
  196. package/dist/lib/attempt/observed.js +177 -0
  197. package/dist/lib/attempt/policy.js +92 -0
  198. package/dist/lib/attempt/record.js +29 -0
  199. package/dist/lib/attempt/retryLoopContext.js +31 -0
  200. package/dist/lib/attempt/retryLoopTypes.js +3 -0
  201. package/dist/lib/attempt/runner.js +530 -0
  202. package/dist/lib/attempt/standalone.js +130 -0
  203. package/dist/lib/attempt/types.js +17 -0
  204. package/dist/lib/budget/index.js +17 -0
  205. package/dist/lib/budget/timeBudget.js +674 -0
  206. package/dist/lib/builder/FlowChartBuilder.js +199 -9
  207. package/dist/lib/builder/retryLoop.js +287 -0
  208. package/dist/lib/builder/types.js +1 -1
  209. package/dist/lib/decide/decide.js +2 -2
  210. package/dist/lib/decide/index.js +2 -2
  211. package/dist/lib/decide/types.js +1 -8
  212. package/dist/lib/engine/graph/StageNode.js +1 -1
  213. package/dist/lib/engine/graph/prefixNodeTree.js +5 -1
  214. package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
  215. package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
  216. package/dist/lib/engine/handlers/ResumeEntry.js +3 -1
  217. package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
  218. package/dist/lib/engine/handlers/StageRunner.js +36 -9
  219. package/dist/lib/engine/handlers/SubflowExecutor.js +24 -5
  220. package/dist/lib/engine/handlers/commitStage.js +24 -5
  221. package/dist/lib/engine/handlers/stageError.js +26 -2
  222. package/dist/lib/engine/index.js +1 -1
  223. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +67 -39
  224. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
  225. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +60 -8
  226. package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
  227. package/dist/lib/engine/narrative/formatting/sentences.js +131 -2
  228. package/dist/lib/engine/narrative/index.js +1 -1
  229. package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
  230. package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
  231. package/dist/lib/engine/narrative/recorders/index.js +1 -1
  232. package/dist/lib/engine/narrative/types.js +1 -1
  233. package/dist/lib/engine/traversal/FlowchartTraverser.js +192 -116
  234. package/dist/lib/engine/traversalContext.js +6 -3
  235. package/dist/lib/engine/types.js +1 -1
  236. package/dist/lib/errors/terminalFailure.js +64 -0
  237. package/dist/lib/filter/evaluator.js +139 -0
  238. package/dist/lib/ids/idempotencyKey.js +28 -0
  239. package/dist/lib/memory/StageContext.js +246 -5
  240. package/dist/lib/memory/attention.js +175 -0
  241. package/dist/lib/memory/borrowedMutation.js +16 -2
  242. package/dist/lib/memory/frameTypes.js +3 -1
  243. package/dist/lib/memory/redaction.js +54 -5
  244. package/dist/lib/pause/record.js +10 -1
  245. package/dist/lib/pause/types.js +17 -1
  246. package/dist/lib/reactive/createTypedScope.js +3 -1
  247. package/dist/lib/reactive/types.js +3 -1
  248. package/dist/lib/recorder/AttemptRecorder.js +417 -0
  249. package/dist/lib/recorder/ControlDepRecorder.js +50 -2
  250. package/dist/lib/recorder/EmitRecorder.js +1 -1
  251. package/dist/lib/recorder/InOutRecorder.js +75 -6
  252. package/dist/lib/recorder/QualityRecorder.js +87 -29
  253. package/dist/lib/recorder/TopologyRecorder.js +76 -2
  254. package/dist/lib/recorder/attemptMetricRows.js +209 -0
  255. package/dist/lib/recorder/attemptMetrics.js +174 -0
  256. package/dist/lib/recorder/attemptMetricsTypes.js +3 -0
  257. package/dist/lib/recorder/attemptOTel.js +111 -0
  258. package/dist/lib/recorder/attemptSeries.js +113 -0
  259. package/dist/lib/recorder/hooks.js +4 -1
  260. package/dist/lib/runner/DeferredObserverTier.js +13 -1
  261. package/dist/lib/runner/ExecutionRuntime.js +57 -5
  262. package/dist/lib/runner/FlowChartExecutor.js +330 -101
  263. package/dist/lib/runner/RunnableChart.js +5 -1
  264. package/dist/lib/runner/attach.js +8 -2
  265. package/dist/lib/runner/checkpoint.js +3 -1
  266. package/dist/lib/runner/deadline.js +94 -0
  267. package/dist/lib/runner/index.js +4 -2
  268. package/dist/lib/runner/options.js +3 -1
  269. package/dist/lib/runner/recordSink.js +302 -0
  270. package/dist/lib/runner/resume.js +22 -2
  271. package/dist/lib/runner/snapshot.js +6 -2
  272. package/dist/lib/scope/ScopeFacade.js +303 -6
  273. package/dist/lib/scope/recorders/DebugRecorder.js +79 -13
  274. package/dist/lib/scope/recorders/MetricRecorder.js +15 -2
  275. package/dist/lib/scope/runtime.js +1 -1
  276. package/dist/lib/scope/types.js +1 -1
  277. package/dist/lib/sinks/fileSink.js +392 -0
  278. package/dist/recorders.js +10 -2
  279. package/dist/sinks.js +32 -0
  280. package/dist/trace.js +1 -1
  281. package/dist/types/index.d.ts +62 -2
  282. package/dist/types/lib/attempt/anySignal.d.ts +19 -0
  283. package/dist/types/lib/attempt/call.d.ts +88 -0
  284. package/dist/types/lib/attempt/category.d.ts +37 -0
  285. package/dist/types/lib/attempt/correlation.d.ts +95 -0
  286. package/dist/types/lib/attempt/deadline.d.ts +44 -0
  287. package/dist/types/lib/attempt/decision.d.ts +52 -0
  288. package/dist/types/lib/attempt/effect.d.ts +76 -0
  289. package/dist/types/lib/attempt/errors.d.ts +41 -0
  290. package/dist/types/lib/attempt/index.d.ts +18 -0
  291. package/dist/types/lib/attempt/name.d.ts +21 -0
  292. package/dist/types/lib/attempt/observed.d.ts +66 -0
  293. package/dist/types/lib/attempt/policy.d.ts +45 -0
  294. package/dist/types/lib/attempt/record.d.ts +11 -0
  295. package/dist/types/lib/attempt/retryLoopContext.d.ts +18 -0
  296. package/dist/types/lib/attempt/retryLoopTypes.d.ts +18 -0
  297. package/dist/types/lib/attempt/runner.d.ts +157 -0
  298. package/dist/types/lib/attempt/standalone.d.ts +47 -0
  299. package/dist/types/lib/attempt/types.d.ts +453 -0
  300. package/dist/types/lib/budget/index.d.ts +9 -0
  301. package/dist/types/lib/budget/timeBudget.d.ts +136 -0
  302. package/dist/types/lib/builder/FlowChartBuilder.d.ts +88 -3
  303. package/dist/types/lib/builder/retryLoop.d.ts +56 -0
  304. package/dist/types/lib/builder/types.d.ts +35 -1
  305. package/dist/types/lib/decide/index.d.ts +1 -1
  306. package/dist/types/lib/decide/types.d.ts +3 -0
  307. package/dist/types/lib/engine/graph/StageNode.d.ts +11 -1
  308. package/dist/types/lib/engine/handlers/StageRunner.d.ts +8 -1
  309. package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
  310. package/dist/types/lib/engine/handlers/stageError.d.ts +9 -0
  311. package/dist/types/lib/engine/index.d.ts +2 -2
  312. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
  313. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
  314. package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
  315. package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
  316. package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +23 -0
  317. package/dist/types/lib/engine/narrative/index.d.ts +2 -2
  318. package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +27 -21
  319. package/dist/types/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
  320. package/dist/types/lib/engine/narrative/recorders/index.d.ts +1 -1
  321. package/dist/types/lib/engine/narrative/types.d.ts +74 -5
  322. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
  323. package/dist/types/lib/engine/traversalContext.d.ts +7 -2
  324. package/dist/types/lib/engine/types.d.ts +52 -57
  325. package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
  326. package/dist/types/lib/{decide → filter}/evaluator.d.ts +7 -2
  327. package/dist/types/lib/ids/idempotencyKey.d.ts +14 -0
  328. package/dist/types/lib/memory/StageContext.d.ts +123 -3
  329. package/dist/types/lib/memory/attention.d.ts +26 -0
  330. package/dist/types/lib/memory/borrowedMutation.d.ts +8 -0
  331. package/dist/types/lib/memory/frameTypes.d.ts +38 -0
  332. package/dist/types/lib/memory/redaction.d.ts +12 -0
  333. package/dist/types/lib/pause/types.d.ts +19 -0
  334. package/dist/types/lib/reactive/types.d.ts +36 -4
  335. package/dist/types/lib/recorder/AttemptRecorder.d.ts +141 -0
  336. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +36 -2
  337. package/dist/types/lib/recorder/EmitRecorder.d.ts +3 -0
  338. package/dist/types/lib/recorder/InOutRecorder.d.ts +37 -1
  339. package/dist/types/lib/recorder/QualityRecorder.d.ts +32 -5
  340. package/dist/types/lib/recorder/TopologyRecorder.d.ts +35 -5
  341. package/dist/types/lib/recorder/attemptMetricRows.d.ts +11 -0
  342. package/dist/types/lib/recorder/attemptMetrics.d.ts +7 -0
  343. package/dist/types/lib/recorder/attemptMetricsTypes.d.ts +114 -0
  344. package/dist/types/lib/recorder/attemptOTel.d.ts +78 -0
  345. package/dist/types/lib/recorder/attemptSeries.d.ts +81 -0
  346. package/dist/types/lib/recorder/hooks.d.ts +9 -0
  347. package/dist/types/lib/runner/ExecutionRuntime.d.ts +54 -6
  348. package/dist/types/lib/runner/FlowChartExecutor.d.ts +46 -2
  349. package/dist/types/lib/runner/RunnableChart.d.ts +6 -0
  350. package/dist/types/lib/runner/attach.d.ts +2 -1
  351. package/dist/types/lib/runner/deadline.d.ts +42 -0
  352. package/dist/types/lib/runner/index.d.ts +3 -1
  353. package/dist/types/lib/runner/options.d.ts +17 -0
  354. package/dist/types/lib/runner/recordSink.d.ts +128 -0
  355. package/dist/types/lib/runner/resume.d.ts +3 -0
  356. package/dist/types/lib/runner/snapshot.d.ts +2 -2
  357. package/dist/types/lib/scope/ScopeFacade.d.ts +118 -4
  358. package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +17 -3
  359. package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +10 -0
  360. package/dist/types/lib/scope/runtime.d.ts +3 -0
  361. package/dist/types/lib/scope/types.d.ts +6 -0
  362. package/dist/types/lib/sinks/fileSink.d.ts +135 -0
  363. package/dist/types/recorders.d.ts +8 -2
  364. package/dist/types/sinks.d.ts +23 -0
  365. package/dist/types/trace.d.ts +2 -2
  366. package/package.json +20 -6
  367. package/dist/esm/lib/decide/evaluator.js +0 -130
  368. package/dist/lib/decide/evaluator.js +0 -134
@@ -7,4 +7,4 @@
7
7
  * Use CombinedNarrativeRecorder (auto-attached by setEnableNarrative()) instead.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFycmF0aXZlVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvbmFycmF0aXZlVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbmFycmF0aXZlVHlwZXMg4oCUIFNoYXJlZCB0eXBlIGRlZmluaXRpb25zIGZvciB0aGUgbmFycmF0aXZlIHJlY29yZGVyIHN5c3RlbS5cbiAqXG4gKiBQcmV2aW91c2x5OiBDb21iaW5lZE5hcnJhdGl2ZUJ1aWxkZXIudHMgKGZpbGUgcmVuYW1lZCBpbiBwb3N0LXJlbGVhc2UgY2xlYW51cCkuXG4gKiBUaGUgQ29tYmluZWROYXJyYXRpdmVCdWlsZGVyIGNsYXNzIHdhcyByZW1vdmVkIGluIHYxLjAuXG4gKiBVc2UgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciAoYXV0by1hdHRhY2hlZCBieSBzZXRFbmFibGVOYXJyYXRpdmUoKSkgaW5zdGVhZC5cbiAqL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFR5cGVzIChrZXB0IOKAlCB1c2VkIGJ5IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIsIEZsb3dDaGFydEV4ZWN1dG9yLCBldGMuKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB7XG4gIHR5cGU6XG4gICAgfCAnc3RhZ2UnXG4gICAgfCAnc3RlcCdcbiAgICB8ICdjb25kaXRpb24nXG4gICAgfCAnZm9yaydcbiAgICB8ICdzZWxlY3RvcidcbiAgICB8ICdzdWJmbG93J1xuICAgIHwgJ2xvb3AnXG4gICAgfCAnYnJlYWsnXG4gICAgfCAnZXJyb3InXG4gICAgfCAncGF1c2UnXG4gICAgfCAncmVzdW1lJ1xuICAgIHwgJ2VtaXQnXG4gICAgLyoqIEEgZmFpbGVkIGF0dGVtcHQgYXQgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgcmV0cnkgcG9saWN5LCB3aGljaCB3YXNcbiAgICAgKiAgcmV0cmllZC4gUmVuZGVyZWQgYXMgYSBkZXB0aC0xIHN1Yi1pdGVtIG9mIGl0cyBzdGFnZSwgSU4gT1JERVIgYmV0d2VlblxuICAgICAqICB0aGUgYXR0ZW1wdHMnIHJlYWRzIGFuZCB3cml0ZXMuICovXG4gICAgfCAncmV0cnknO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGRlcHRoOiBudW1iZXI7XG4gIHN0YWdlTmFtZT86IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gVXNlIGZvciBVSSBzeW5jLiAqL1xuICBzdGFnZUlkPzogc3RyaW5nO1xuICAvKiogVW5pcXVlIHBlci1leGVjdXRpb24tc3RlcCBpZGVudGlmaWVyLiBGb3JtYXQ6IFtzdWJmbG93UGF0aC9dc3RhZ2VJZCNleGVjdXRpb25JbmRleC5cbiAgICogIExpbmtzIG5hcnJhdGl2ZSBlbnRyaWVzIHRvIHJlY29yZGVyIE1hcCBlbnRyaWVzIGZvciBPKDEpIHRpbWUtdHJhdmVsIGxvb2t1cC5cbiAgICogIFVuZGVmaW5lZCBvbmx5IHdoZW4gVHJhdmVyc2FsQ29udGV4dCBpcyBhYnNlbnQgZnJvbSB0aGUgc291cmNlIGV2ZW50LiAqL1xuICBydW50aW1lU3RhZ2VJZD86IHN0cmluZztcbiAgc3RlcE51bWJlcj86IG51bWJlcjtcbiAgLyoqIFN1YmZsb3cgSUQgd2hlbiB0aGlzIGVudHJ5IHdhcyBnZW5lcmF0ZWQgaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGZvciByb290LWxldmVsLiAqL1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXJlY3Rpb24gZm9yIHN1YmZsb3cgZW50cmllczogJ2VudHJ5JyB3aGVuIGVudGVyaW5nLCAnZXhpdCcgd2hlbiBsZWF2aW5nLlxuICAgKiAgT25seSBwcmVzZW50IG9uIGVudHJpZXMgd2l0aCB0eXBlID09PSAnc3ViZmxvdycuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGV4dCBzY2FubmluZy4gKi9cbiAgZGlyZWN0aW9uPzogJ2VudHJ5JyB8ICdleGl0JztcbiAgLyoqIFNjb3BlIGtleSB0aGF0IHdhcyByZWFkIG9yIHdyaXR0ZW4uIE9ubHkgcHJlc2VudCBvbiAnc3RlcCcgZW50cmllcy5cbiAgICogIFVzZSB0aGlzIGZvciBzdHJ1Y3R1cmVkIGRhdGEgZXh0cmFjdGlvbiAoZS5nLiwgZ3JvdW5kaW5nIGFuYWx5c2lzKVxuICAgKiAgaW5zdGVhZCBvZiBtYXRjaGluZyBvbiByZW5kZXJlZCB0ZXh0IHN0cmluZ3MuICovXG4gIGtleT86IHN0cmluZztcbiAgLyoqIFJhdyB2YWx1ZSBmcm9tIHRoZSBzY29wZSBldmVudCDigJQgYXZhaWxhYmxlIGZvciBwcm9ncmFtbWF0aWMgYWNjZXNzIGFuZCBjdXN0b20gZm9ybWF0dGluZy5cbiAgICogIE9ubHkgcHJlc2VudCBvbiAnc3RlcCcgZW50cmllcyAocmVhZC93cml0ZSBvcHMpLiBUaGlzIGlzIGEgbGl2ZSByZWZlcmVuY2UsIG5vdCBhIGNsb25lLlxuICAgKiAgV2hlbiB1c2luZyBTY29wZUZhY2FkZSwgcmVkYWN0ZWQga2V5cyB3aWxsIGhhdmUgdmFsdWUgJ1tSRURBQ1RFRF0nIChzYW5pdGl6ZWQgdXBzdHJlYW1cbiAgICogIGJ5IFNjb3BlRmFjYWRlIGJlZm9yZSBkaXNwYXRjaGluZyBldmVudHMg4oCUIHRoZSByZWNvcmRlciBkb2VzIG5vdCBlbmZvcmNlIHJlZGFjdGlvbikuICovXG4gIHJhd1ZhbHVlPzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMge1xuICBpbmNsdWRlU3RlcE51bWJlcnM/OiBib29sZWFuO1xuICBpbmNsdWRlVmFsdWVzPzogYm9vbGVhbjtcbiAgaW5kZW50Pzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE5hcnJhdGl2ZUZvcm1hdHRlciDigJQgUGx1Z2dhYmxlIGZvcm1hdHRpbmcgZm9yIENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyU3RhZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlUmVuZGVyQ29udGV4dCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZU51bWJlcjogbnVtYmVyO1xuICBpc0ZpcnN0OiBib29sZWFuO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIExvb3AgaXRlcmF0aW9uIG51bWJlciAoMS1iYXNlZCkuIFByZXNlbnQgd2hlbiB0aGlzIHN0YWdlIGlzIHZpc2l0ZWQgdmlhIGxvb3BUbygpLiAqL1xuICBsb29wSXRlcmF0aW9uPzogbnVtYmVyO1xuICAvKiogVHJ1ZSBmb3IgdGhlIHN0YWdlIGEgcmVzdW1lIHJlLWVudGVyZWQ6IGl0cyBhcnJpdmFsIHdhcyBhbHJlYWR5IHRvbGQgYnkgdGhlIHJlc3VtZSBlbnRyeS4gKi9cbiAgcmVzdW1lZD86IGJvb2xlYW47XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJPcC4gUmV0dXJuIG51bGwgdG8gZXhjbHVkZSB0aGUgZW50cnkuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wUmVuZGVyQ29udGV4dCB7XG4gIHR5cGU6ICdyZWFkJyB8ICd3cml0ZSc7XG4gIGtleTogc3RyaW5nO1xuICByYXdWYWx1ZTogdW5rbm93bjtcbiAgdmFsdWVTdW1tYXJ5OiBzdHJpbmc7XG4gIG9wZXJhdGlvbj86ICdzZXQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgc3RlcE51bWJlcjogbnVtYmVyO1xufVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyRGVjaXNpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERlY2lzaW9uUmVuZGVyQ29udGV4dCB7XG4gIGRlY2lkZXI6IHN0cmluZztcbiAgY2hvc2VuOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIC8qKiBSYXcgZXZpZGVuY2UgZnJvbSBkZWNpZGUoKS9zZWxlY3QoKSDigJQgYXZhaWxhYmxlIGZvciBjdXN0b20gcmVuZGVyaW5nLiAqL1xuICBldmlkZW5jZT86IHVua25vd247XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJGb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JrUmVuZGVyQ29udGV4dCB7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlclN1YmZsb3cuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dSZW5kZXJDb250ZXh0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkaXJlY3Rpb246ICdlbnRyeScgfCAnZXhpdCc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogTWFwcGVkIGlucHV0IHZhbHVlcyBzZW50IGludG8gdGhlIHN1YmZsb3cuIFByZXNlbnQgb24gZW50cnkuICovXG4gIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBTdWJmbG93IHNoYXJlZCBzdGF0ZSBhdCBleGl0LiBQcmVzZW50IG9uIGV4aXQuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJMb29wLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wUmVuZGVyQ29udGV4dCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJCcmVhay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJlYWtSZW5kZXJDb250ZXh0IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJTZWxlY3RlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0ZWRSZW5kZXJDb250ZXh0IHtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdO1xuICB0b3RhbDogbnVtYmVyO1xuICAvKiogUmF3IGV2aWRlbmNlIGZyb20gc2VsZWN0KCkg4oCUIGF2YWlsYWJsZSBmb3IgY3VzdG9tIHJlbmRlcmluZy4gKi9cbiAgZXZpZGVuY2U/OiB1bmtub3duO1xufVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyRXJyb3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yUmVuZGVyQ29udGV4dCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkYXRpb25Jc3N1ZXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gYE5hcnJhdGl2ZUZvcm1hdHRlci5yZW5kZXJSZXRyeWAg4oCUIG9uZSBmYWlsZWQgYXR0ZW1wdCBhdCBhXG4gKiBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgcmV0cnkgcG9saWN5LCB3aGljaCB0aGUgZW5naW5lIHRoZW4gcmV0cmllZC4gRmlyZXMgb25seVxuICogZm9yIGF0dGVtcHRzIGZvbGxvd2VkIGJ5IGFub3RoZXIgYXR0ZW1wdDsgdGhlIGZpbmFsIGZhaWx1cmUgZ29lcyB0b1xuICogYHJlbmRlckVycm9yYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeVJlbmRlckNvbnRleHQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFdoaWNoIGF0dGVtcHQganVzdCBmYWlsZWQsIDEtYmFzZWQuICovXG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGF0dGVtcHRzIHRoZSBwb2xpY3kgYWxsb3dzLCBpbmNsdWRpbmcgdGhlIGZpcnN0LiAqL1xuICBtYXhBdHRlbXB0czogbnVtYmVyO1xuICAvKiogTWlsbGlzZWNvbmRzIHdhaXRlZCBiZWZvcmUgdGhlIG5leHQgYXR0ZW1wdC4gYDBgID0gaW1tZWRpYXRlLiAqL1xuICBkZWxheU1zOiBudW1iZXI7XG4gIC8qKiBUaGUgZmFpbGVkIGF0dGVtcHQncyBlcnJvciBtZXNzYWdlLiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gYE5hcnJhdGl2ZUZvcm1hdHRlci5yZW5kZXJFbWl0YCDigJQgZmlyZXMgZm9yIGV2ZXJ5XG4gKiBjb25zdW1lci1lbWl0dGVkIGV2ZW50IChgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgKS4gQ2FycmllcyB0aGUgZnVsbFxuICogYEVtaXRFdmVudGAgc2hhcGUgc28gZm9ybWF0dGVycyBjYW4gcmVuZGVyIG5hbWUgKyBwYXlsb2FkIHdpdGggZnVsbFxuICogY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWl0UmVuZGVyQ29udGV4dCB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF5bG9hZDogdW5rbm93bjtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgLyoqIFN1bW1hcnkgc3RyaW5nIOKAlCB0aGUgbGlicmFyeSdzIGRlZmF1bHQgdHJ1bmNhdGVkIHBheWxvYWQgcHJldmlldy4gKi9cbiAgcGF5bG9hZFN1bW1hcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQbHVnZ2FibGUgZm9ybWF0dGVyIGZvciBuYXJyYXRpdmUgb3V0cHV0LiBUdXJucyBzdHJ1Y3R1cmVkIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyB0aGF0IG1ha2UgdXAgdGhlIG5hcnJhdGl2ZSBhcnJheS5cbiAqXG4gKiAjIyBXaHkgXCJGb3JtYXR0ZXJcIiwgbm90IFwiUmVuZGVyZXJcIlxuICpcbiAqIEluIHdlYiB0ZXJtaW5vbG9neSBcInJlbmRlcmVyXCIgdXN1YWxseSBtZWFucyBcInR1cm4gZGF0YSBpbnRvIGEgdmlzaWJsZSBVSVwiXG4gKiAocGl4ZWxzLCBET00sIEhUTUwpLiBUaGlzIGludGVyZmFjZSBkb2VzIHNvbWV0aGluZyBzbWFsbGVyOiBpdCBjb252ZXJ0c1xuICogZXZlbnQgY29udGV4dCBpbnRvIGEgdGV4dCBzdHJpbmcuIFRoYXQgaXMgbW9yZSBhY2N1cmF0ZWx5IGNhbGxlZCBhXG4gKiAqZm9ybWF0dGVyKi5cbiAqXG4gKiAjIyBCZWhhdmlvdXJcbiAqXG4gKiBFYWNoIG1ldGhvZCBpcyBvcHRpb25hbCDigJQgdW5pbXBsZW1lbnRlZCBtZXRob2RzIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdFxuICogRW5nbGlzaCBmb3JtYXR0ZXIuIFJldHVybiBgbnVsbGAgZnJvbSBgcmVuZGVyT3BgIHRvIGV4Y2x1ZGUgdGhhdCBlbnRyeVxuICogZnJvbSB0aGUgbmFycmF0aXZlIGVudGlyZWx5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZWMgPSBuYXJyYXRpdmUoe1xuICogICByZW5kZXJlcjoge1xuICogICAgIHJlbmRlck9wKGN0eCkge1xuICogICAgICAgaWYgKGN0eC5rZXkuc3RhcnRzV2l0aCgnX2ludGVybmFsJykpIHJldHVybiBudWxsOyAvLyBmaWx0ZXIgb3V0IGludGVybmFsIGtleXNcbiAqICAgICAgIHJldHVybiBgJHtjdHgudHlwZSA9PT0gJ3JlYWQnID8gJ1JlYWQnIDogJ1dyb3RlJ30gJHtjdHgua2V5fTogJHtjdHgudmFsdWVTdW1tYXJ5fWA7XG4gKiAgICAgfSxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFycmF0aXZlRm9ybWF0dGVyIHtcbiAgcmVuZGVyU3RhZ2U/KGN0eDogU3RhZ2VSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICAvKipcbiAgICogRm9ybWF0IGFuIG9wIChzY29wZSByZWFkL3dyaXRlLCBvciBzdWJmbG93LWlucHV0IGtleSkgaW50byBhIG5hcnJhdGl2ZSBsaW5lLlxuICAgKlxuICAgKiAgIC0gYHN0cmluZ2AgICAg4oaSIHVzZSBhcyB0aGUgbmFycmF0aXZlIGxpbmVcbiAgICogICAtIGBudWxsYCAgICAgIOKGkiBkZWxpYmVyYXRlbHkgZXhjbHVkZSB0aGlzIGVudHJ5IGZyb20gdGhlIG5hcnJhdGl2ZVxuICAgKiAgIC0gYHVuZGVmaW5lZGAg4oaSIHRoaXMgZm9ybWF0dGVyIGRvZXMgbm90IGhhbmRsZSB0aGlzIG9wOyBmYWxsIGJhY2sgdG9cbiAgICogICAgICAgICAgICAgICAgICAgdGhlIGxpYnJhcnkncyBkZWZhdWx0IHRlbXBsYXRlXG4gICAqXG4gICAqIFRoZSBgdW5kZWZpbmVkYCByZXR1cm4gbGV0cyBhIGRvbWFpbi1hd2FyZSBmb3JtYXR0ZXIgaGFuZGxlIG9ubHkgdGhlXG4gICAqIGtleXMgaXQga25vd3MgYWJvdXQgYW5kIGxlYXZlIHRoZSByZXN0IHRvIHRoZSBsaWJyYXJ5IGRlZmF1bHQg4oCUIHdpdGhvdXRcbiAgICogaGF2aW5nIHRvIHJlLWltcGxlbWVudCB0aGUgd2hvbGUgZGVmYXVsdCBpbmxpbmUuXG4gICAqL1xuICByZW5kZXJPcD8oY3R4OiBPcFJlbmRlckNvbnRleHQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICByZW5kZXJEZWNpc2lvbj8oY3R4OiBEZWNpc2lvblJlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIHJlbmRlckZvcms/KGN0eDogRm9ya1JlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIHJlbmRlclNlbGVjdGVkPyhjdHg6IFNlbGVjdGVkUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyU3ViZmxvdz8oY3R4OiBTdWJmbG93UmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyTG9vcD8oY3R4OiBMb29wUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyQnJlYWs/KGN0eDogQnJlYWtSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJFcnJvcj8oY3R4OiBFcnJvclJlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGb3JtYXQgYSByZXRyaWVkIGF0dGVtcHQgaW50byBhIG5hcnJhdGl2ZSBsaW5lLiBSZW5kZXJlZCBhcyBhIGRlcHRoLTFcbiAgICogc3ViLWl0ZW0gb2YgaXRzIHN0YWdlLCBwb3NpdGlvbmVkIGJldHdlZW4gdGhlIGF0dGVtcHRzJyByZWFkcyBhbmQgd3JpdGVzXG4gICAqIHNvIHRoZSBuYXJyYXRpdmUgcmVhZHMgaW4gdGhlIG9yZGVyIHRoaW5ncyBhY3R1YWxseSBoYXBwZW5lZC5cbiAgICovXG4gIHJlbmRlclJldHJ5PyhjdHg6IFJldHJ5UmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgLyoqXG4gICAqIEZvcm1hdCBhIGNvbnN1bWVyLWVtaXR0ZWQgZXZlbnQgKGZyb20gYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYClcbiAgICogaW50byBhIG5hcnJhdGl2ZSBsaW5lLlxuICAgKlxuICAgKiAgIC0gYHN0cmluZ2AgICAg4oaSIHVzZSBhcyB0aGUgbmFycmF0aXZlIGxpbmVcbiAgICogICAtIGBudWxsYCAgICAgIOKGkiBkZWxpYmVyYXRlbHkgZXhjbHVkZSB0aGlzIGVudHJ5XG4gICAqICAgLSBgdW5kZWZpbmVkYCDihpIgdGhpcyBmb3JtYXR0ZXIgZG9lcyBub3QgaGFuZGxlIHRoaXMgZW1pdDsgZmFsbCBiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgIHRvIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdCB0ZW1wbGF0ZVxuICAgKlxuICAgKiBUeXBpY2FsIHBhdHRlcm46IHN3aXRjaCBvbiBgY3R4Lm5hbWVgIChvciBhIHByZWZpeCBvZiBpdCkgYW5kIHJldHVybiBhXG4gICAqIGRvbWFpbi1zcGVjaWZpYyB0ZXh0IGxpbmUgZm9yIHRoZSBldmVudCB0eXBlcyB5b3UgY2FyZSBhYm91dDsgcmV0dXJuXG4gICAqIGB1bmRlZmluZWRgIGZvciBldmVyeXRoaW5nIGVsc2Ugc28gdGhlIGRlZmF1bHQgdGVtcGxhdGUgaGFuZGxlcyBpdC5cbiAgICovXG4gIHJlbmRlckVtaXQ/KGN0eDogRW1pdFJlbmRlckNvbnRleHQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xufVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFycmF0aXZlVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvbmFycmF0aXZlVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbmFycmF0aXZlVHlwZXMg4oCUIFNoYXJlZCB0eXBlIGRlZmluaXRpb25zIGZvciB0aGUgbmFycmF0aXZlIHJlY29yZGVyIHN5c3RlbS5cbiAqXG4gKiBQcmV2aW91c2x5OiBDb21iaW5lZE5hcnJhdGl2ZUJ1aWxkZXIudHMgKGZpbGUgcmVuYW1lZCBpbiBwb3N0LXJlbGVhc2UgY2xlYW51cCkuXG4gKiBUaGUgQ29tYmluZWROYXJyYXRpdmVCdWlsZGVyIGNsYXNzIHdhcyByZW1vdmVkIGluIHYxLjAuXG4gKiBVc2UgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciAoYXV0by1hdHRhY2hlZCBieSBzZXRFbmFibGVOYXJyYXRpdmUoKSkgaW5zdGVhZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRSZWNvcmQgfSBmcm9tICcuLi8uLi9hdHRlbXB0L3R5cGVzLmpzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlcyAoa2VwdCDigJQgdXNlZCBieSBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyLCBGbG93Q2hhcnRFeGVjdXRvciwgZXRjLilcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmVkTmFycmF0aXZlRW50cnkge1xuICB0eXBlOlxuICAgIHwgJ3N0YWdlJ1xuICAgIHwgJ3N0ZXAnXG4gICAgfCAnY29uZGl0aW9uJ1xuICAgIHwgJ2ZvcmsnXG4gICAgfCAnc2VsZWN0b3InXG4gICAgfCAnc3ViZmxvdydcbiAgICB8ICdsb29wJ1xuICAgIHwgJ2JyZWFrJ1xuICAgIHwgJ2Vycm9yJ1xuICAgIHwgJ3BhdXNlJ1xuICAgIHwgJ3Jlc3VtZSdcbiAgICB8ICdlbWl0J1xuICAgIC8qKiBBIGZhaWxlZCBhdHRlbXB0IHRoYXQgd2FzIHJldHJpZWQg4oCUIHJlbmRlcmVkIGJ5IDkuMTXigJMxMC4wIG9ubHkuIFNpbmNlXG4gICAgICogIDEwLjEgdGhlIGJ1aWx0LWluIG5hcnJhdGl2ZSByZW5kZXJzIG9uZSBgJ2F0dGVtcHQnYCBsaW5lIHBlciBhdHRlbXB0XG4gICAgICogIGluc3RlYWQ7IHRoZSBtZW1iZXIgc3RheXMgc28gYSBuYXJyYXRpdmUgc3RvcmVkIGJ5IGFuIGVhcmxpZXIgcmVsZWFzZVxuICAgICAqICBzdGlsbCB0eXBlLWNoZWNrcy4gKi9cbiAgICB8ICdyZXRyeSdcbiAgICAvKiogT25lIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgcmV0cnkgcG9saWN5ICgxMC4xKTogaXRzIG91dGNvbWUsXG4gICAgICogIGR1cmF0aW9uLCBjYXVzZSBhbmQgZGVjaXNpb24uIEEgZGVwdGgtMSBzdWItaXRlbSBvZiBpdHMgc3RhZ2UsIElOIE9SREVSXG4gICAgICogIGJldHdlZW4gdGhlIGF0dGVtcHRzJyByZWFkcyBhbmQgd3JpdGVzOyBmb3IgYSBzdGFnZSB0aGF0IGZhaWxlZCwgdGhlXG4gICAgICogIGxpbmVzIGZvbGxvdyBpdHMgYCdlcnJvcidgIGVudHJ5LiAqL1xuICAgIHwgJ2F0dGVtcHQnO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGRlcHRoOiBudW1iZXI7XG4gIHN0YWdlTmFtZT86IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gVXNlIGZvciBVSSBzeW5jLiAqL1xuICBzdGFnZUlkPzogc3RyaW5nO1xuICAvKiogVW5pcXVlIHBlci1leGVjdXRpb24tc3RlcCBpZGVudGlmaWVyLiBGb3JtYXQ6IFtzdWJmbG93UGF0aC9dc3RhZ2VJZCNleGVjdXRpb25JbmRleC5cbiAgICogIExpbmtzIG5hcnJhdGl2ZSBlbnRyaWVzIHRvIHJlY29yZGVyIE1hcCBlbnRyaWVzIGZvciBPKDEpIHRpbWUtdHJhdmVsIGxvb2t1cC5cbiAgICogIFVuZGVmaW5lZCBvbmx5IHdoZW4gVHJhdmVyc2FsQ29udGV4dCBpcyBhYnNlbnQgZnJvbSB0aGUgc291cmNlIGV2ZW50LiAqL1xuICBydW50aW1lU3RhZ2VJZD86IHN0cmluZztcbiAgc3RlcE51bWJlcj86IG51bWJlcjtcbiAgLyoqIFN1YmZsb3cgSUQgd2hlbiB0aGlzIGVudHJ5IHdhcyBnZW5lcmF0ZWQgaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGZvciByb290LWxldmVsLiAqL1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXJlY3Rpb24gZm9yIHN1YmZsb3cgZW50cmllczogJ2VudHJ5JyB3aGVuIGVudGVyaW5nLCAnZXhpdCcgd2hlbiBsZWF2aW5nLlxuICAgKiAgT25seSBwcmVzZW50IG9uIGVudHJpZXMgd2l0aCB0eXBlID09PSAnc3ViZmxvdycuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGV4dCBzY2FubmluZy4gKi9cbiAgZGlyZWN0aW9uPzogJ2VudHJ5JyB8ICdleGl0JztcbiAgLyoqIFNjb3BlIGtleSB0aGF0IHdhcyByZWFkIG9yIHdyaXR0ZW4uIE9ubHkgcHJlc2VudCBvbiAnc3RlcCcgZW50cmllcy5cbiAgICogIFVzZSB0aGlzIGZvciBzdHJ1Y3R1cmVkIGRhdGEgZXh0cmFjdGlvbiAoZS5nLiwgZ3JvdW5kaW5nIGFuYWx5c2lzKVxuICAgKiAgaW5zdGVhZCBvZiBtYXRjaGluZyBvbiByZW5kZXJlZCB0ZXh0IHN0cmluZ3MuICovXG4gIGtleT86IHN0cmluZztcbiAgLyoqIFJhdyB2YWx1ZSBmcm9tIHRoZSBzY29wZSBldmVudCDigJQgYXZhaWxhYmxlIGZvciBwcm9ncmFtbWF0aWMgYWNjZXNzIGFuZCBjdXN0b20gZm9ybWF0dGluZy5cbiAgICogIE9ubHkgcHJlc2VudCBvbiAnc3RlcCcgZW50cmllcyAocmVhZC93cml0ZSBvcHMpLiBUaGlzIGlzIGEgbGl2ZSByZWZlcmVuY2UsIG5vdCBhIGNsb25lLlxuICAgKiAgV2hlbiB1c2luZyBTY29wZUZhY2FkZSwgcmVkYWN0ZWQga2V5cyB3aWxsIGhhdmUgdmFsdWUgJ1tSRURBQ1RFRF0nIChzYW5pdGl6ZWQgdXBzdHJlYW1cbiAgICogIGJ5IFNjb3BlRmFjYWRlIGJlZm9yZSBkaXNwYXRjaGluZyBldmVudHMg4oCUIHRoZSByZWNvcmRlciBkb2VzIG5vdCBlbmZvcmNlIHJlZGFjdGlvbikuICovXG4gIHJhd1ZhbHVlPzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMge1xuICBpbmNsdWRlU3RlcE51bWJlcnM/OiBib29sZWFuO1xuICBpbmNsdWRlVmFsdWVzPzogYm9vbGVhbjtcbiAgaW5kZW50Pzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE5hcnJhdGl2ZUZvcm1hdHRlciDigJQgUGx1Z2dhYmxlIGZvcm1hdHRpbmcgZm9yIENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyU3RhZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlUmVuZGVyQ29udGV4dCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZU51bWJlcjogbnVtYmVyO1xuICBpc0ZpcnN0OiBib29sZWFuO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIExvb3AgaXRlcmF0aW9uIG51bWJlciAoMS1iYXNlZCkuIFByZXNlbnQgd2hlbiB0aGlzIHN0YWdlIGlzIHZpc2l0ZWQgdmlhIGxvb3BUbygpLiAqL1xuICBsb29wSXRlcmF0aW9uPzogbnVtYmVyO1xuICAvKiogVHJ1ZSBmb3IgdGhlIHN0YWdlIGEgcmVzdW1lIHJlLWVudGVyZWQ6IGl0cyBhcnJpdmFsIHdhcyBhbHJlYWR5IHRvbGQgYnkgdGhlIHJlc3VtZSBlbnRyeS4gKi9cbiAgcmVzdW1lZD86IGJvb2xlYW47XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJPcC4gUmV0dXJuIG51bGwgdG8gZXhjbHVkZSB0aGUgZW50cnkuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wUmVuZGVyQ29udGV4dCB7XG4gIHR5cGU6ICdyZWFkJyB8ICd3cml0ZSc7XG4gIGtleTogc3RyaW5nO1xuICByYXdWYWx1ZTogdW5rbm93bjtcbiAgdmFsdWVTdW1tYXJ5OiBzdHJpbmc7XG4gIG9wZXJhdGlvbj86ICdzZXQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgc3RlcE51bWJlcjogbnVtYmVyO1xufVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyRGVjaXNpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERlY2lzaW9uUmVuZGVyQ29udGV4dCB7XG4gIGRlY2lkZXI6IHN0cmluZztcbiAgY2hvc2VuOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIC8qKiBSYXcgZXZpZGVuY2UgZnJvbSBkZWNpZGUoKS9zZWxlY3QoKSDigJQgYXZhaWxhYmxlIGZvciBjdXN0b20gcmVuZGVyaW5nLiAqL1xuICBldmlkZW5jZT86IHVua25vd247XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJGb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JrUmVuZGVyQ29udGV4dCB7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlclN1YmZsb3cuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dSZW5kZXJDb250ZXh0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkaXJlY3Rpb246ICdlbnRyeScgfCAnZXhpdCc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogTWFwcGVkIGlucHV0IHZhbHVlcyBzZW50IGludG8gdGhlIHN1YmZsb3cuIFByZXNlbnQgb24gZW50cnkuICovXG4gIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBTdWJmbG93IHNoYXJlZCBzdGF0ZSBhdCBleGl0LiBQcmVzZW50IG9uIGV4aXQuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJMb29wLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wUmVuZGVyQ29udGV4dCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJCcmVhay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJlYWtSZW5kZXJDb250ZXh0IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJTZWxlY3RlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0ZWRSZW5kZXJDb250ZXh0IHtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdO1xuICB0b3RhbDogbnVtYmVyO1xuICAvKiogUmF3IGV2aWRlbmNlIGZyb20gc2VsZWN0KCkg4oCUIGF2YWlsYWJsZSBmb3IgY3VzdG9tIHJlbmRlcmluZy4gKi9cbiAgZXZpZGVuY2U/OiB1bmtub3duO1xufVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyRXJyb3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yUmVuZGVyQ29udGV4dCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkYXRpb25Jc3N1ZXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gYE5hcnJhdGl2ZUZvcm1hdHRlci5yZW5kZXJBdHRlbXB0YCDigJQgb25lIGF0dGVtcHQgb2YgYSBzdGFnZVxuICogd2l0aCBhIGRlY2xhcmVkIHJldHJ5IHBvbGljeSAoMTAuMSksIHdoYXRldmVyIGl0cyBvdXRjb21lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dGVtcHRSZW5kZXJDb250ZXh0IHtcbiAgLyoqIFRoZSBzdGFnZSB0aGUgYXR0ZW1wdCByYW4uICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGF0dGVtcHQ6IG91dGNvbWUsIGR1cmF0aW9uLCBjYXRlZ29yeSwgdGhlIHNlcnZlZCBlcnJvciwgYW5kIHRoZSByZXRyeS1vci1zdG9wIGRlY2lzaW9uLiAqL1xuICByZWNvcmQ6IEF0dGVtcHRSZWNvcmQ7XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gYE5hcnJhdGl2ZUZvcm1hdHRlci5yZW5kZXJFbWl0YCDigJQgZmlyZXMgZm9yIGV2ZXJ5XG4gKiBjb25zdW1lci1lbWl0dGVkIGV2ZW50IChgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgKS4gQ2FycmllcyB0aGUgZnVsbFxuICogYEVtaXRFdmVudGAgc2hhcGUgc28gZm9ybWF0dGVycyBjYW4gcmVuZGVyIG5hbWUgKyBwYXlsb2FkIHdpdGggZnVsbFxuICogY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWl0UmVuZGVyQ29udGV4dCB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF5bG9hZDogdW5rbm93bjtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgLyoqIFN1bW1hcnkgc3RyaW5nIOKAlCB0aGUgbGlicmFyeSdzIGRlZmF1bHQgdHJ1bmNhdGVkIHBheWxvYWQgcHJldmlldy4gKi9cbiAgcGF5bG9hZFN1bW1hcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQbHVnZ2FibGUgZm9ybWF0dGVyIGZvciBuYXJyYXRpdmUgb3V0cHV0LiBUdXJucyBzdHJ1Y3R1cmVkIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyB0aGF0IG1ha2UgdXAgdGhlIG5hcnJhdGl2ZSBhcnJheS5cbiAqXG4gKiAjIyBXaHkgXCJGb3JtYXR0ZXJcIiwgbm90IFwiUmVuZGVyZXJcIlxuICpcbiAqIEluIHdlYiB0ZXJtaW5vbG9neSBcInJlbmRlcmVyXCIgdXN1YWxseSBtZWFucyBcInR1cm4gZGF0YSBpbnRvIGEgdmlzaWJsZSBVSVwiXG4gKiAocGl4ZWxzLCBET00sIEhUTUwpLiBUaGlzIGludGVyZmFjZSBkb2VzIHNvbWV0aGluZyBzbWFsbGVyOiBpdCBjb252ZXJ0c1xuICogZXZlbnQgY29udGV4dCBpbnRvIGEgdGV4dCBzdHJpbmcuIFRoYXQgaXMgbW9yZSBhY2N1cmF0ZWx5IGNhbGxlZCBhXG4gKiAqZm9ybWF0dGVyKi5cbiAqXG4gKiAjIyBCZWhhdmlvdXJcbiAqXG4gKiBFYWNoIG1ldGhvZCBpcyBvcHRpb25hbCDigJQgdW5pbXBsZW1lbnRlZCBtZXRob2RzIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdFxuICogRW5nbGlzaCBmb3JtYXR0ZXIuIFJldHVybiBgbnVsbGAgZnJvbSBgcmVuZGVyT3BgIHRvIGV4Y2x1ZGUgdGhhdCBlbnRyeVxuICogZnJvbSB0aGUgbmFycmF0aXZlIGVudGlyZWx5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZWMgPSBuYXJyYXRpdmUoe1xuICogICByZW5kZXJlcjoge1xuICogICAgIHJlbmRlck9wKGN0eCkge1xuICogICAgICAgaWYgKGN0eC5rZXkuc3RhcnRzV2l0aCgnX2ludGVybmFsJykpIHJldHVybiBudWxsOyAvLyBmaWx0ZXIgb3V0IGludGVybmFsIGtleXNcbiAqICAgICAgIHJldHVybiBgJHtjdHgudHlwZSA9PT0gJ3JlYWQnID8gJ1JlYWQnIDogJ1dyb3RlJ30gJHtjdHgua2V5fTogJHtjdHgudmFsdWVTdW1tYXJ5fWA7XG4gKiAgICAgfSxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFycmF0aXZlRm9ybWF0dGVyIHtcbiAgcmVuZGVyU3RhZ2U/KGN0eDogU3RhZ2VSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICAvKipcbiAgICogRm9ybWF0IGFuIG9wIChzY29wZSByZWFkL3dyaXRlLCBvciBzdWJmbG93LWlucHV0IGtleSkgaW50byBhIG5hcnJhdGl2ZSBsaW5lLlxuICAgKlxuICAgKiAgIC0gYHN0cmluZ2AgICAg4oaSIHVzZSBhcyB0aGUgbmFycmF0aXZlIGxpbmVcbiAgICogICAtIGBudWxsYCAgICAgIOKGkiBkZWxpYmVyYXRlbHkgZXhjbHVkZSB0aGlzIGVudHJ5IGZyb20gdGhlIG5hcnJhdGl2ZVxuICAgKiAgIC0gYHVuZGVmaW5lZGAg4oaSIHRoaXMgZm9ybWF0dGVyIGRvZXMgbm90IGhhbmRsZSB0aGlzIG9wOyBmYWxsIGJhY2sgdG9cbiAgICogICAgICAgICAgICAgICAgICAgdGhlIGxpYnJhcnkncyBkZWZhdWx0IHRlbXBsYXRlXG4gICAqXG4gICAqIFRoZSBgdW5kZWZpbmVkYCByZXR1cm4gbGV0cyBhIGRvbWFpbi1hd2FyZSBmb3JtYXR0ZXIgaGFuZGxlIG9ubHkgdGhlXG4gICAqIGtleXMgaXQga25vd3MgYWJvdXQgYW5kIGxlYXZlIHRoZSByZXN0IHRvIHRoZSBsaWJyYXJ5IGRlZmF1bHQg4oCUIHdpdGhvdXRcbiAgICogaGF2aW5nIHRvIHJlLWltcGxlbWVudCB0aGUgd2hvbGUgZGVmYXVsdCBpbmxpbmUuXG4gICAqL1xuICByZW5kZXJPcD8oY3R4OiBPcFJlbmRlckNvbnRleHQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICByZW5kZXJEZWNpc2lvbj8oY3R4OiBEZWNpc2lvblJlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIHJlbmRlckZvcms/KGN0eDogRm9ya1JlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIHJlbmRlclNlbGVjdGVkPyhjdHg6IFNlbGVjdGVkUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyU3ViZmxvdz8oY3R4OiBTdWJmbG93UmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyTG9vcD8oY3R4OiBMb29wUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyQnJlYWs/KGN0eDogQnJlYWtSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJFcnJvcj8oY3R4OiBFcnJvclJlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGb3JtYXQgb25lIGF0dGVtcHQgb2YgYSByZXRyaWVkIHN0YWdlICgxMC4xKSBpbnRvIGEgbmFycmF0aXZlIGxpbmUg4oCUIGFcbiAgICogZGVwdGgtMSBzdWItaXRlbSBvZiBpdHMgc3RhZ2UsIGJldHdlZW4gdGhlIGF0dGVtcHRzJyByZWFkcyBhbmQgd3JpdGVzIChmb3JcbiAgICogYSBzdGFnZSB0aGF0IGZhaWxlZCBmb3IgZ29vZCwgYmVuZWF0aCBpdHMgZXJyb3IgbGluZSkuIEl0IHJlcGxhY2VzIHRoZVxuICAgKiA5LjE14oCTMTAuMCBgcmVuZGVyUmV0cnlgLCB3aGljaCBpcyByZW1vdmVkOiB0aGlzIGxpbmUgc2F5cyBcInJldHJ5aW5nXCIgdG9vLlxuICAgKlxuICAgKiAgIC0gYHN0cmluZ2AgICAg4oaSIHVzZSBhcyB0aGUgbmFycmF0aXZlIGxpbmVcbiAgICogICAtIGBudWxsYCAgICAgIOKGkiBkZWxpYmVyYXRlbHkgZXhjbHVkZSB0aGlzIGVudHJ5XG4gICAqICAgLSBgdW5kZWZpbmVkYCDihpIgZmFsbCBiYWNrIHRvIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdCBzZW50ZW5jZVxuICAgKiAgICAgICAgICAgICAgICAgICAoYEF0dGVtcHQgMiBvZiAzIGF0IEZldGNoIGZhaWxlZCBpbiAxMm1zICjigKYpLCByZXRyeWluZyBpbiAxcy5gKVxuICAgKi9cbiAgcmVuZGVyQXR0ZW1wdD8oY3R4OiBBdHRlbXB0UmVuZGVyQ29udGV4dCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBGb3JtYXQgYSBjb25zdW1lci1lbWl0dGVkIGV2ZW50IChmcm9tIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWApXG4gICAqIGludG8gYSBuYXJyYXRpdmUgbGluZS5cbiAgICpcbiAgICogICAtIGBzdHJpbmdgICAgIOKGkiB1c2UgYXMgdGhlIG5hcnJhdGl2ZSBsaW5lXG4gICAqICAgLSBgbnVsbGAgICAgICDihpIgZGVsaWJlcmF0ZWx5IGV4Y2x1ZGUgdGhpcyBlbnRyeVxuICAgKiAgIC0gYHVuZGVmaW5lZGAg4oaSIHRoaXMgZm9ybWF0dGVyIGRvZXMgbm90IGhhbmRsZSB0aGlzIGVtaXQ7IGZhbGwgYmFja1xuICAgKiAgICAgICAgICAgICAgICAgICB0byB0aGUgbGlicmFyeSdzIGRlZmF1bHQgdGVtcGxhdGVcbiAgICpcbiAgICogVHlwaWNhbCBwYXR0ZXJuOiBzd2l0Y2ggb24gYGN0eC5uYW1lYCAob3IgYSBwcmVmaXggb2YgaXQpIGFuZCByZXR1cm4gYVxuICAgKiBkb21haW4tc3BlY2lmaWMgdGV4dCBsaW5lIGZvciB0aGUgZXZlbnQgdHlwZXMgeW91IGNhcmUgYWJvdXQ7IHJldHVyblxuICAgKiBgdW5kZWZpbmVkYCBmb3IgZXZlcnl0aGluZyBlbHNlIHNvIHRoZSBkZWZhdWx0IHRlbXBsYXRlIGhhbmRsZXMgaXQuXG4gICAqL1xuICByZW5kZXJFbWl0PyhjdHg6IEVtaXRSZW5kZXJDb250ZXh0KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -10,6 +10,14 @@
10
10
  * The manifest reflects only subflows that were actually entered during
11
11
  * execution — unvisited branches are not included.
12
12
  *
13
+ * Attempts (10.1): a stage whose retry series retried, gave up or timed out gets a row —
14
+ * `{ stageId, stageName, runtimeStageId, attempts: AttemptSummary }` — on the
15
+ * entry of the subflow it ran in (`ManifestEntry.attempts`). The manifest has
16
+ * no entry for the top-level chart, so a top-level stage's row (or one whose
17
+ * subflow entry this recorder never saw) is served by `getRootAttempts()` and
18
+ * rides the snapshot bundle's `meta.rootAttempts` (absent when empty — the
19
+ * bundle's `data` keeps its shape).
20
+ *
13
21
  * @example
14
22
  * ```typescript
15
23
  * const manifest = new ManifestFlowRecorder();
@@ -25,6 +33,7 @@
25
33
  */
26
34
  Object.defineProperty(exports, "__esModule", { value: true });
27
35
  exports.ManifestFlowRecorder = void 0;
36
+ const attemptSeries_js_1 = require("../../../recorder/attemptSeries.js");
28
37
  class ManifestFlowRecorder {
29
38
  id;
30
39
  /** Stack tracks nesting depth — current subflow is top of stack. */
@@ -33,6 +42,15 @@ class ManifestFlowRecorder {
33
42
  roots = [];
34
43
  /** Full specs stored from dynamic registration events. */
35
44
  specs = new Map();
45
+ /**
46
+ * Open entries by subflowId — where a stage's row lands. Not the stack: parallel subflow siblings exit out of
47
+ * stack order, so the entry a row belongs to may no longer be on it.
48
+ */
49
+ openEntries = new Map();
50
+ /** Rows of top-level stages — the manifest has no entry for the top-level chart. */
51
+ rootAttempts = [];
52
+ /** Per-series tallies of the series that retried, gave up or timed out. */
53
+ attemptBook = new attemptSeries_js_1.AttemptSeriesBook();
36
54
  constructor(id) {
37
55
  this.id = id ?? 'manifest';
38
56
  }
@@ -44,8 +62,10 @@ class ManifestFlowRecorder {
44
62
  children: [],
45
63
  };
46
64
  this.stack.push(entry);
65
+ this.openEntries.set(entry.subflowId, entry);
47
66
  }
48
- onSubflowExit(_event) {
67
+ onSubflowExit(event) {
68
+ this.openEntries.delete(event.subflowId ?? event.name);
49
69
  const completed = this.stack.pop();
50
70
  if (!completed)
51
71
  return;
@@ -57,6 +77,28 @@ class ManifestFlowRecorder {
57
77
  this.roots.push(completed);
58
78
  }
59
79
  }
80
+ /**
81
+ * A series' row lands once, when it ends, on the open entry of the subflow the stage ran in; a top-level
82
+ * stage's (or one whose entry this recorder never saw) on the root rows.
83
+ */
84
+ onAttempt(event) {
85
+ const summary = this.attemptBook.add(event.record)?.summary;
86
+ if (!summary)
87
+ return;
88
+ const row = {
89
+ stageId: event.stageId,
90
+ stageName: event.stageName,
91
+ runtimeStageId: event.record.series,
92
+ attempts: summary,
93
+ };
94
+ const owner = this.openEntries.get((0, attemptSeries_js_1.subflowOfAttempt)(event) ?? '');
95
+ // A row whose subflow entry this recorder never saw (attached mid-run) is kept with the top-level rows — its
96
+ // path-prefixed `stageId` still says where it ran — never dropped.
97
+ if (owner)
98
+ (owner.attempts ??= []).push(row);
99
+ else
100
+ this.rootAttempts.push(row);
101
+ }
60
102
  onSubflowRegistered(event) {
61
103
  if (event.specStructure && !this.specs.has(event.subflowId)) {
62
104
  this.specs.set(event.subflowId, event.specStructure);
@@ -66,6 +108,13 @@ class ManifestFlowRecorder {
66
108
  getManifest() {
67
109
  return [...this.roots];
68
110
  }
111
+ /**
112
+ * Rows of top-level stages whose series retried, gave up or timed out, in the order the series ended — plus any row of a
113
+ * subflow stage whose entry this recorder never saw (its path-prefixed `stageId` says where it ran).
114
+ */
115
+ getRootAttempts() {
116
+ return [...this.rootAttempts];
117
+ }
69
118
  /**
70
119
  * Returns the full spec for a dynamically-registered subflow.
71
120
  * Only populated for subflows auto-registered at runtime (via StageNode
@@ -86,6 +135,7 @@ class ManifestFlowRecorder {
86
135
  description: 'Translator (FlowRecorder) — subflow catalog built during traversal',
87
136
  preferredOperation: 'translate',
88
137
  data: this.getManifest(),
138
+ ...(this.rootAttempts.length > 0 && { meta: { rootAttempts: this.getRootAttempts() } }),
89
139
  };
90
140
  }
91
141
  /** Clears state for reuse. */
@@ -93,7 +143,10 @@ class ManifestFlowRecorder {
93
143
  this.stack = [];
94
144
  this.roots = [];
95
145
  this.specs.clear();
146
+ this.openEntries = new Map();
147
+ this.rootAttempts = [];
148
+ this.attemptBook.clear();
96
149
  }
97
150
  }
98
151
  exports.ManifestFlowRecorder = ManifestFlowRecorder;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuaWZlc3RGbG93UmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvcmVjb3JkZXJzL01hbmlmZXN0Rmxvd1JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7OztBQWdCSCxNQUFhLG9CQUFvQjtJQUN0QixFQUFFLENBQVM7SUFFcEIsb0VBQW9FO0lBQzVELEtBQUssR0FBb0IsRUFBRSxDQUFDO0lBQ3BDLCtEQUErRDtJQUN2RCxLQUFLLEdBQW9CLEVBQUUsQ0FBQztJQUNwQywwREFBMEQ7SUFDbEQsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRTNDLFlBQVksRUFBVztRQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUF1QjtRQUNwQyxNQUFNLEtBQUssR0FBa0I7WUFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUk7WUFDeEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXdCO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFpQztRQUNuRCxJQUFJLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVU7UUFDUixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSxvRUFBb0U7WUFDakYsa0JBQWtCLEVBQUUsV0FBb0I7WUFDeEMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBOUVELG9EQThFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFuaWZlc3RGbG93UmVjb3JkZXIg4oCUIEJ1aWxkcyBhIGxpZ2h0d2VpZ2h0IHN1YmZsb3cgbWFuaWZlc3QgZHVyaW5nIHRyYXZlcnNhbC5cbiAqXG4gKiBDb2xsZWN0cyBzdWJmbG93IG1ldGFkYXRhIChJRCwgbmFtZSwgZGVzY3JpcHRpb24pIGFzIGEgc2lkZSBlZmZlY3Qgb2ZcbiAqIG9ic2VydmluZyB0cmF2ZXJzYWwgZXZlbnRzLiBQcm9kdWNlcyBhIHRyZWUgc3RydWN0dXJlIHN1aXRhYmxlIGZvciBMTE1cbiAqIG5hdmlnYXRpb246IGxpZ2h0d2VpZ2h0IGVub3VnaCB0byBpbmNsdWRlIGluIHNuYXBzaG90cywgd2l0aCBvbi1kZW1hbmRcbiAqIGFjY2VzcyB0byBmdWxsIHNwZWNzIHZpYSBnZXRTcGVjKCkuXG4gKlxuICogVGhlIG1hbmlmZXN0IHJlZmxlY3RzIG9ubHkgc3ViZmxvd3MgdGhhdCB3ZXJlIGFjdHVhbGx5IGVudGVyZWQgZHVyaW5nXG4gKiBleGVjdXRpb24g4oCUIHVudmlzaXRlZCBicmFuY2hlcyBhcmUgbm90IGluY2x1ZGVkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYW5pZmVzdCA9IG5ldyBNYW5pZmVzdEZsb3dSZWNvcmRlcigpO1xuICogZXhlY3V0b3IuYXR0YWNoRmxvd1JlY29yZGVyKG1hbmlmZXN0KTtcbiAqIGF3YWl0IGV4ZWN1dG9yLnJ1bih7IGlucHV0OiBkYXRhIH0pO1xuICpcbiAqIC8vIExpZ2h0d2VpZ2h0IHRyZWUgb2Ygc3ViZmxvdyBJRHMgKyBkZXNjcmlwdGlvbnNcbiAqIGNvbnN0IHRyZWUgPSBtYW5pZmVzdC5nZXRNYW5pZmVzdCgpO1xuICpcbiAqIC8vIEZ1bGwgc3BlYyBmb3IgYSBzcGVjaWZpYyBzdWJmbG93IChpZiBhdmFpbGFibGUpXG4gKiBjb25zdCBzcGVjID0gbWFuaWZlc3QuZ2V0U3BlYygnc2YtY3JlZGl0LWNoZWNrJyk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciwgRmxvd1N1YmZsb3dFdmVudCwgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKiBBIHNpbmdsZSBlbnRyeSBpbiB0aGUgc3ViZmxvdyBtYW5pZmVzdCB0cmVlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW5pZmVzdEVudHJ5IHtcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllciDigJQgdXNlIGZvciBvbi1kZW1hbmQgc3BlYyBsb29rdXAuICovXG4gIHN1YmZsb3dJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQnVpbGQtdGltZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3ViZmxvdyBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIE5lc3RlZCBzdWJmbG93cyBlbnRlcmVkIHdpdGhpbiB0aGlzIHN1YmZsb3cuICovXG4gIGNoaWxkcmVuOiBNYW5pZmVzdEVudHJ5W107XG59XG5cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdEZsb3dSZWNvcmRlciBpbXBsZW1lbnRzIEZsb3dSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqIFN0YWNrIHRyYWNrcyBuZXN0aW5nIGRlcHRoIOKAlCBjdXJyZW50IHN1YmZsb3cgaXMgdG9wIG9mIHN0YWNrLiAqL1xuICBwcml2YXRlIHN0YWNrOiBNYW5pZmVzdEVudHJ5W10gPSBbXTtcbiAgLyoqIFJvb3QtbGV2ZWwgc3ViZmxvd3MgKG5vdCBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgc3ViZmxvdykuICovXG4gIHByaXZhdGUgcm9vdHM6IE1hbmlmZXN0RW50cnlbXSA9IFtdO1xuICAvKiogRnVsbCBzcGVjcyBzdG9yZWQgZnJvbSBkeW5hbWljIHJlZ2lzdHJhdGlvbiBldmVudHMuICovXG4gIHByaXZhdGUgc3BlY3MgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcblxuICBjb25zdHJ1Y3RvcihpZD86IHN0cmluZykge1xuICAgIHRoaXMuaWQgPSBpZCA/PyAnbWFuaWZlc3QnO1xuICB9XG5cbiAgb25TdWJmbG93RW50cnkoZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbnRyeTogTWFuaWZlc3RFbnRyeSA9IHtcbiAgICAgIHN1YmZsb3dJZDogZXZlbnQuc3ViZmxvd0lkID8/IGV2ZW50Lm5hbWUsXG4gICAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGV2ZW50LmRlc2NyaXB0aW9uLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgIH07XG4gICAgdGhpcy5zdGFjay5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIG9uU3ViZmxvd0V4aXQoX2V2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY29tcGxldGVkID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICBpZiAoIWNvbXBsZXRlZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKGNvbXBsZXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9vdHMucHVzaChjb21wbGV0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQoZXZlbnQ6IEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnNwZWNTdHJ1Y3R1cmUgJiYgIXRoaXMuc3BlY3MuaGFzKGV2ZW50LnN1YmZsb3dJZCkpIHtcbiAgICAgIHRoaXMuc3BlY3Muc2V0KGV2ZW50LnN1YmZsb3dJZCwgZXZlbnQuc3BlY1N0cnVjdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIG1hbmlmZXN0IHRyZWUg4oCUIGxpZ2h0d2VpZ2h0LCBzdWl0YWJsZSBmb3Igc25hcHNob3QgaW5jbHVzaW9uLiAqL1xuICBnZXRNYW5pZmVzdCgpOiBNYW5pZmVzdEVudHJ5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5yb290c107XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZnVsbCBzcGVjIGZvciBhIGR5bmFtaWNhbGx5LXJlZ2lzdGVyZWQgc3ViZmxvdy5cbiAgICogT25seSBwb3B1bGF0ZWQgZm9yIHN1YmZsb3dzIGF1dG8tcmVnaXN0ZXJlZCBhdCBydW50aW1lICh2aWEgU3RhZ2VOb2RlXG4gICAqIHJldHVybiB3aXRoIHN1YmZsb3dEZWYpLiBTdGF0aWNhbGx5LWNvbmZpZ3VyZWQgc3ViZmxvd3MgYXJlIG5vdCBpbmNsdWRlZFxuICAgKiBldmVuIGlmIHRoZXkgYXBwZWFyIGluIGdldE1hbmlmZXN0KCkuIFVzZSBGbG93Q2hhcnQuYnVpbGRUaW1lU3RydWN0dXJlXG4gICAqIHRvIGFjY2VzcyBzdGF0aWNhbGx5LWRlZmluZWQgc3ViZmxvdyBzcGVjcy5cbiAgICovXG4gIGdldFNwZWMoc3ViZmxvd0lkOiBzdHJpbmcpOiB1bmtub3duIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjcy5nZXQoc3ViZmxvd0lkKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGFsbCBzdG9yZWQgc3BlYyBJRHMuICovXG4gIGdldFNwZWNJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc3BlY3Mua2V5cygpKTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdNYW5pZmVzdCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RyYW5zbGF0b3IgKEZsb3dSZWNvcmRlcikg4oCUIHN1YmZsb3cgY2F0YWxvZyBidWlsdCBkdXJpbmcgdHJhdmVyc2FsJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogJ3RyYW5zbGF0ZScgYXMgY29uc3QsXG4gICAgICBkYXRhOiB0aGlzLmdldE1hbmlmZXN0KCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBDbGVhcnMgc3RhdGUgZm9yIHJldXNlLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrID0gW107XG4gICAgdGhpcy5yb290cyA9IFtdO1xuICAgIHRoaXMuc3BlY3MuY2xlYXIoKTtcbiAgfVxufVxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuaWZlc3RGbG93UmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvcmVjb3JkZXJzL01hbmlmZXN0Rmxvd1JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRzs7O0FBR0gseUVBQXlGO0FBNEJ6RixNQUFhLG9CQUFvQjtJQUN0QixFQUFFLENBQVM7SUFFcEIsb0VBQW9FO0lBQzVELEtBQUssR0FBb0IsRUFBRSxDQUFDO0lBQ3BDLCtEQUErRDtJQUN2RCxLQUFLLEdBQW9CLEVBQUUsQ0FBQztJQUNwQywwREFBMEQ7SUFDbEQsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBQzNDOzs7T0FHRztJQUNLLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUN2RCxvRkFBb0Y7SUFDNUUsWUFBWSxHQUF5QixFQUFFLENBQUM7SUFDaEQsMkVBQTJFO0lBQzFELFdBQVcsR0FBRyxJQUFJLG9DQUFpQixFQUFFLENBQUM7SUFFdkQsWUFBWSxFQUFXO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXVCO1FBQ3BDLE1BQU0sS0FBSyxHQUFrQjtZQUMzQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUN4QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUF1QjtRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQXVCO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sR0FBRyxHQUF1QjtZQUM5QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDbkMsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUEsbUNBQWdCLEVBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEUsNkdBQTZHO1FBQzdHLG1FQUFtRTtRQUNuRSxJQUFJLEtBQUs7WUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBaUM7UUFDbkQsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsV0FBVztRQUNULE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUFDLFNBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxVQUFVO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixXQUFXLEVBQUUsb0VBQW9FO1lBQ2pGLGtCQUFrQixFQUFFLFdBQW9CO1lBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN4RixDQUFDO0lBQ0osQ0FBQztJQUVELDhCQUE4QjtJQUM5QixLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUF6SEQsb0RBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYW5pZmVzdEZsb3dSZWNvcmRlciDigJQgQnVpbGRzIGEgbGlnaHR3ZWlnaHQgc3ViZmxvdyBtYW5pZmVzdCBkdXJpbmcgdHJhdmVyc2FsLlxuICpcbiAqIENvbGxlY3RzIHN1YmZsb3cgbWV0YWRhdGEgKElELCBuYW1lLCBkZXNjcmlwdGlvbikgYXMgYSBzaWRlIGVmZmVjdCBvZlxuICogb2JzZXJ2aW5nIHRyYXZlcnNhbCBldmVudHMuIFByb2R1Y2VzIGEgdHJlZSBzdHJ1Y3R1cmUgc3VpdGFibGUgZm9yIExMTVxuICogbmF2aWdhdGlvbjogbGlnaHR3ZWlnaHQgZW5vdWdoIHRvIGluY2x1ZGUgaW4gc25hcHNob3RzLCB3aXRoIG9uLWRlbWFuZFxuICogYWNjZXNzIHRvIGZ1bGwgc3BlY3MgdmlhIGdldFNwZWMoKS5cbiAqXG4gKiBUaGUgbWFuaWZlc3QgcmVmbGVjdHMgb25seSBzdWJmbG93cyB0aGF0IHdlcmUgYWN0dWFsbHkgZW50ZXJlZCBkdXJpbmdcbiAqIGV4ZWN1dGlvbiDigJQgdW52aXNpdGVkIGJyYW5jaGVzIGFyZSBub3QgaW5jbHVkZWQuXG4gKlxuICogQXR0ZW1wdHMgKDEwLjEpOiBhIHN0YWdlIHdob3NlIHJldHJ5IHNlcmllcyByZXRyaWVkLCBnYXZlIHVwIG9yIHRpbWVkIG91dCBnZXRzIGEgcm93IOKAlFxuICogYHsgc3RhZ2VJZCwgc3RhZ2VOYW1lLCBydW50aW1lU3RhZ2VJZCwgYXR0ZW1wdHM6IEF0dGVtcHRTdW1tYXJ5IH1gIOKAlCBvbiB0aGVcbiAqIGVudHJ5IG9mIHRoZSBzdWJmbG93IGl0IHJhbiBpbiAoYE1hbmlmZXN0RW50cnkuYXR0ZW1wdHNgKS4gVGhlIG1hbmlmZXN0IGhhc1xuICogbm8gZW50cnkgZm9yIHRoZSB0b3AtbGV2ZWwgY2hhcnQsIHNvIGEgdG9wLWxldmVsIHN0YWdlJ3Mgcm93IChvciBvbmUgd2hvc2VcbiAqIHN1YmZsb3cgZW50cnkgdGhpcyByZWNvcmRlciBuZXZlciBzYXcpIGlzIHNlcnZlZCBieSBgZ2V0Um9vdEF0dGVtcHRzKClgIGFuZFxuICogcmlkZXMgdGhlIHNuYXBzaG90IGJ1bmRsZSdzIGBtZXRhLnJvb3RBdHRlbXB0c2AgKGFic2VudCB3aGVuIGVtcHR5IOKAlCB0aGVcbiAqIGJ1bmRsZSdzIGBkYXRhYCBrZWVwcyBpdHMgc2hhcGUpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYW5pZmVzdCA9IG5ldyBNYW5pZmVzdEZsb3dSZWNvcmRlcigpO1xuICogZXhlY3V0b3IuYXR0YWNoRmxvd1JlY29yZGVyKG1hbmlmZXN0KTtcbiAqIGF3YWl0IGV4ZWN1dG9yLnJ1bih7IGlucHV0OiBkYXRhIH0pO1xuICpcbiAqIC8vIExpZ2h0d2VpZ2h0IHRyZWUgb2Ygc3ViZmxvdyBJRHMgKyBkZXNjcmlwdGlvbnNcbiAqIGNvbnN0IHRyZWUgPSBtYW5pZmVzdC5nZXRNYW5pZmVzdCgpO1xuICpcbiAqIC8vIEZ1bGwgc3BlYyBmb3IgYSBzcGVjaWZpYyBzdWJmbG93IChpZiBhdmFpbGFibGUpXG4gKiBjb25zdCBzcGVjID0gbWFuaWZlc3QuZ2V0U3BlYygnc2YtY3JlZGl0LWNoZWNrJyk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRTdW1tYXJ5IH0gZnJvbSAnLi4vLi4vLi4vYXR0ZW1wdC90eXBlcy5qcyc7XG5pbXBvcnQgeyBBdHRlbXB0U2VyaWVzQm9vaywgc3ViZmxvd09mQXR0ZW1wdCB9IGZyb20gJy4uLy4uLy4uL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93QXR0ZW1wdEV2ZW50LCBGbG93UmVjb3JkZXIsIEZsb3dTdWJmbG93RXZlbnQsIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogT25lIHN0YWdlIGV4ZWN1dGlvbiB3aG9zZSByZXRyeSBzZXJpZXMgcmV0cmllZCwgZ2F2ZSB1cCBvciB0aW1lZCBvdXQsIGF0IGEgZ2xhbmNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW5pZmVzdEF0dGVtcHRSb3cge1xuICAvKiogU3RhYmxlIHN0YWdlIGlkIChwYXRoLXByZWZpeGVkIGluc2lkZSBhIHN1YmZsb3cpLiAqL1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGV4ZWN1dGlvbiDigJQgdGhlIHNlcmllcycgYHJ1bnRpbWVTdGFnZUlkYC4gKi9cbiAgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFRoZSBzZXJpZXMgYXQgYSBnbGFuY2Ug4oCUIGVxdWFsIHRvIHRoZSBzdGFnZSdzIGBTdGFnZVNuYXBzaG90LmF0dGVtcHRTdW1tYXJ5YC4gKi9cbiAgYXR0ZW1wdHM6IEF0dGVtcHRTdW1tYXJ5O1xufVxuXG4vKiogQSBzaW5nbGUgZW50cnkgaW4gdGhlIHN1YmZsb3cgbWFuaWZlc3QgdHJlZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3RFbnRyeSB7XG4gIC8qKiBTdWJmbG93IGlkZW50aWZpZXIg4oCUIHVzZSBmb3Igb24tZGVtYW5kIHNwZWMgbG9va3VwLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN1YmZsb3cgZG9lcy4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBOZXN0ZWQgc3ViZmxvd3MgZW50ZXJlZCB3aXRoaW4gdGhpcyBzdWJmbG93LiAqL1xuICBjaGlsZHJlbjogTWFuaWZlc3RFbnRyeVtdO1xuICAvKiogU3RhZ2VzIHJ1biBkaXJlY3RseSBpbiB0aGlzIHN1YmZsb3cgd2hvc2Ugc2VyaWVzIHJldHJpZWQsIGdhdmUgdXAgb3IgdGltZWQgb3V0IOKAlCBhYnNlbnQgd2hlbiBub25lIGRpZC4gKi9cbiAgYXR0ZW1wdHM/OiBNYW5pZmVzdEF0dGVtcHRSb3dbXTtcbn1cblxuZXhwb3J0IGNsYXNzIE1hbmlmZXN0Rmxvd1JlY29yZGVyIGltcGxlbWVudHMgRmxvd1JlY29yZGVyIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKiogU3RhY2sgdHJhY2tzIG5lc3RpbmcgZGVwdGgg4oCUIGN1cnJlbnQgc3ViZmxvdyBpcyB0b3Agb2Ygc3RhY2suICovXG4gIHByaXZhdGUgc3RhY2s6IE1hbmlmZXN0RW50cnlbXSA9IFtdO1xuICAvKiogUm9vdC1sZXZlbCBzdWJmbG93cyAobm90IG5lc3RlZCBpbnNpZGUgYW5vdGhlciBzdWJmbG93KS4gKi9cbiAgcHJpdmF0ZSByb290czogTWFuaWZlc3RFbnRyeVtdID0gW107XG4gIC8qKiBGdWxsIHNwZWNzIHN0b3JlZCBmcm9tIGR5bmFtaWMgcmVnaXN0cmF0aW9uIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSBzcGVjcyA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xuICAvKipcbiAgICogT3BlbiBlbnRyaWVzIGJ5IHN1YmZsb3dJZCDigJQgd2hlcmUgYSBzdGFnZSdzIHJvdyBsYW5kcy4gTm90IHRoZSBzdGFjazogcGFyYWxsZWwgc3ViZmxvdyBzaWJsaW5ncyBleGl0IG91dCBvZlxuICAgKiBzdGFjayBvcmRlciwgc28gdGhlIGVudHJ5IGEgcm93IGJlbG9uZ3MgdG8gbWF5IG5vIGxvbmdlciBiZSBvbiBpdC5cbiAgICovXG4gIHByaXZhdGUgb3BlbkVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgTWFuaWZlc3RFbnRyeT4oKTtcbiAgLyoqIFJvd3Mgb2YgdG9wLWxldmVsIHN0YWdlcyDigJQgdGhlIG1hbmlmZXN0IGhhcyBubyBlbnRyeSBmb3IgdGhlIHRvcC1sZXZlbCBjaGFydC4gKi9cbiAgcHJpdmF0ZSByb290QXR0ZW1wdHM6IE1hbmlmZXN0QXR0ZW1wdFJvd1tdID0gW107XG4gIC8qKiBQZXItc2VyaWVzIHRhbGxpZXMgb2YgdGhlIHNlcmllcyB0aGF0IHJldHJpZWQsIGdhdmUgdXAgb3IgdGltZWQgb3V0LiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGF0dGVtcHRCb29rID0gbmV3IEF0dGVtcHRTZXJpZXNCb29rKCk7XG5cbiAgY29uc3RydWN0b3IoaWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQgPz8gJ21hbmlmZXN0JztcbiAgfVxuXG4gIG9uU3ViZmxvd0VudHJ5KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW50cnk6IE1hbmlmZXN0RW50cnkgPSB7XG4gICAgICBzdWJmbG93SWQ6IGV2ZW50LnN1YmZsb3dJZCA/PyBldmVudC5uYW1lLFxuICAgICAgbmFtZTogZXZlbnQubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBldmVudC5kZXNjcmlwdGlvbixcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICB9O1xuICAgIHRoaXMuc3RhY2sucHVzaChlbnRyeSk7XG4gICAgdGhpcy5vcGVuRW50cmllcy5zZXQoZW50cnkuc3ViZmxvd0lkLCBlbnRyeSk7XG4gIH1cblxuICBvblN1YmZsb3dFeGl0KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vcGVuRW50cmllcy5kZWxldGUoZXZlbnQuc3ViZmxvd0lkID8/IGV2ZW50Lm5hbWUpO1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgaWYgKCFjb21wbGV0ZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChjb21wbGV0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvb3RzLnB1c2goY29tcGxldGVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSBzZXJpZXMnIHJvdyBsYW5kcyBvbmNlLCB3aGVuIGl0IGVuZHMsIG9uIHRoZSBvcGVuIGVudHJ5IG9mIHRoZSBzdWJmbG93IHRoZSBzdGFnZSByYW4gaW47IGEgdG9wLWxldmVsXG4gICAqIHN0YWdlJ3MgKG9yIG9uZSB3aG9zZSBlbnRyeSB0aGlzIHJlY29yZGVyIG5ldmVyIHNhdykgb24gdGhlIHJvb3Qgcm93cy5cbiAgICovXG4gIG9uQXR0ZW1wdChldmVudDogRmxvd0F0dGVtcHRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSB0aGlzLmF0dGVtcHRCb29rLmFkZChldmVudC5yZWNvcmQpPy5zdW1tYXJ5O1xuICAgIGlmICghc3VtbWFyeSkgcmV0dXJuO1xuICAgIGNvbnN0IHJvdzogTWFuaWZlc3RBdHRlbXB0Um93ID0ge1xuICAgICAgc3RhZ2VJZDogZXZlbnQuc3RhZ2VJZCxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgcnVudGltZVN0YWdlSWQ6IGV2ZW50LnJlY29yZC5zZXJpZXMsXG4gICAgICBhdHRlbXB0czogc3VtbWFyeSxcbiAgICB9O1xuICAgIGNvbnN0IG93bmVyID0gdGhpcy5vcGVuRW50cmllcy5nZXQoc3ViZmxvd09mQXR0ZW1wdChldmVudCkgPz8gJycpO1xuICAgIC8vIEEgcm93IHdob3NlIHN1YmZsb3cgZW50cnkgdGhpcyByZWNvcmRlciBuZXZlciBzYXcgKGF0dGFjaGVkIG1pZC1ydW4pIGlzIGtlcHQgd2l0aCB0aGUgdG9wLWxldmVsIHJvd3Mg4oCUIGl0c1xuICAgIC8vIHBhdGgtcHJlZml4ZWQgYHN0YWdlSWRgIHN0aWxsIHNheXMgd2hlcmUgaXQgcmFuIOKAlCBuZXZlciBkcm9wcGVkLlxuICAgIGlmIChvd25lcikgKG93bmVyLmF0dGVtcHRzID8/PSBbXSkucHVzaChyb3cpO1xuICAgIGVsc2UgdGhpcy5yb290QXR0ZW1wdHMucHVzaChyb3cpO1xuICB9XG5cbiAgb25TdWJmbG93UmVnaXN0ZXJlZChldmVudDogRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuc3BlY1N0cnVjdHVyZSAmJiAhdGhpcy5zcGVjcy5oYXMoZXZlbnQuc3ViZmxvd0lkKSkge1xuICAgICAgdGhpcy5zcGVjcy5zZXQoZXZlbnQuc3ViZmxvd0lkLCBldmVudC5zcGVjU3RydWN0dXJlKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbWFuaWZlc3QgdHJlZSDigJQgbGlnaHR3ZWlnaHQsIHN1aXRhYmxlIGZvciBzbmFwc2hvdCBpbmNsdXNpb24uICovXG4gIGdldE1hbmlmZXN0KCk6IE1hbmlmZXN0RW50cnlbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJvb3RzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3dzIG9mIHRvcC1sZXZlbCBzdGFnZXMgd2hvc2Ugc2VyaWVzIHJldHJpZWQsIGdhdmUgdXAgb3IgdGltZWQgb3V0LCBpbiB0aGUgb3JkZXIgdGhlIHNlcmllcyBlbmRlZCDigJQgcGx1cyBhbnkgcm93IG9mIGFcbiAgICogc3ViZmxvdyBzdGFnZSB3aG9zZSBlbnRyeSB0aGlzIHJlY29yZGVyIG5ldmVyIHNhdyAoaXRzIHBhdGgtcHJlZml4ZWQgYHN0YWdlSWRgIHNheXMgd2hlcmUgaXQgcmFuKS5cbiAgICovXG4gIGdldFJvb3RBdHRlbXB0cygpOiBNYW5pZmVzdEF0dGVtcHRSb3dbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJvb3RBdHRlbXB0c107XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZnVsbCBzcGVjIGZvciBhIGR5bmFtaWNhbGx5LXJlZ2lzdGVyZWQgc3ViZmxvdy5cbiAgICogT25seSBwb3B1bGF0ZWQgZm9yIHN1YmZsb3dzIGF1dG8tcmVnaXN0ZXJlZCBhdCBydW50aW1lICh2aWEgU3RhZ2VOb2RlXG4gICAqIHJldHVybiB3aXRoIHN1YmZsb3dEZWYpLiBTdGF0aWNhbGx5LWNvbmZpZ3VyZWQgc3ViZmxvd3MgYXJlIG5vdCBpbmNsdWRlZFxuICAgKiBldmVuIGlmIHRoZXkgYXBwZWFyIGluIGdldE1hbmlmZXN0KCkuIFVzZSBGbG93Q2hhcnQuYnVpbGRUaW1lU3RydWN0dXJlXG4gICAqIHRvIGFjY2VzcyBzdGF0aWNhbGx5LWRlZmluZWQgc3ViZmxvdyBzcGVjcy5cbiAgICovXG4gIGdldFNwZWMoc3ViZmxvd0lkOiBzdHJpbmcpOiB1bmtub3duIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjcy5nZXQoc3ViZmxvd0lkKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGFsbCBzdG9yZWQgc3BlYyBJRHMuICovXG4gIGdldFNwZWNJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc3BlY3Mua2V5cygpKTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdNYW5pZmVzdCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RyYW5zbGF0b3IgKEZsb3dSZWNvcmRlcikg4oCUIHN1YmZsb3cgY2F0YWxvZyBidWlsdCBkdXJpbmcgdHJhdmVyc2FsJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogJ3RyYW5zbGF0ZScgYXMgY29uc3QsXG4gICAgICBkYXRhOiB0aGlzLmdldE1hbmlmZXN0KCksXG4gICAgICAuLi4odGhpcy5yb290QXR0ZW1wdHMubGVuZ3RoID4gMCAmJiB7IG1ldGE6IHsgcm9vdEF0dGVtcHRzOiB0aGlzLmdldFJvb3RBdHRlbXB0cygpIH0gfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBDbGVhcnMgc3RhdGUgZm9yIHJldXNlLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrID0gW107XG4gICAgdGhpcy5yb290cyA9IFtdO1xuICAgIHRoaXMuc3BlY3MuY2xlYXIoKTtcbiAgICB0aGlzLm9wZW5FbnRyaWVzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMucm9vdEF0dGVtcHRzID0gW107XG4gICAgdGhpcy5hdHRlbXB0Qm9vay5jbGVhcigpO1xuICB9XG59XG4iXX0=
@@ -18,4 +18,4 @@ var SilentNarrativeFlowRecorder_js_1 = require("./SilentNarrativeFlowRecorder.js
18
18
  Object.defineProperty(exports, "SilentNarrativeFlowRecorder", { enumerable: true, get: function () { return SilentNarrativeFlowRecorder_js_1.SilentNarrativeFlowRecorder; } });
19
19
  var WindowedNarrativeFlowRecorder_js_1 = require("./WindowedNarrativeFlowRecorder.js");
20
20
  Object.defineProperty(exports, "WindowedNarrativeFlowRecorder", { enumerable: true, get: function () { return WindowedNarrativeFlowRecorder_js_1.WindowedNarrativeFlowRecorder; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvcmVjb3JkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBCQUEwQjtBQUMxQix1RkFBbUY7QUFBMUUsaUpBQUEsNkJBQTZCLE9BQUE7QUFFdEMscUVBQWlFO0FBQXhELCtIQUFBLG9CQUFvQixPQUFBO0FBQzdCLHlGQUFxRjtBQUE1RSxtSkFBQSw4QkFBOEIsT0FBQTtBQUN2Qyw2RkFBeUY7QUFBaEYsdUpBQUEsZ0NBQWdDLE9BQUE7QUFDekMsNkVBQXlFO0FBQWhFLHVJQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHVGQUFtRjtBQUExRSxpSkFBQSw2QkFBNkIsT0FBQTtBQUN0QyxtRkFBK0U7QUFBdEUsNklBQUEsMkJBQTJCLE9BQUE7QUFDcEMsdUZBQW1GO0FBQTFFLGlKQUFBLDZCQUE2QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9BZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL01hbmlmZXN0Rmxvd1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9NYW5pZmVzdEZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL01pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vUHJvZ3Jlc3NpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9STEVOYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL1NlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IFNpbGVudE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9XaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvcmVjb3JkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBCQUEwQjtBQUMxQix1RkFBbUY7QUFBMUUsaUpBQUEsNkJBQTZCLE9BQUE7QUFFdEMscUVBQWlFO0FBQXhELCtIQUFBLG9CQUFvQixPQUFBO0FBQzdCLHlGQUFxRjtBQUE1RSxtSkFBQSw4QkFBOEIsT0FBQTtBQUN2Qyw2RkFBeUY7QUFBaEYsdUpBQUEsZ0NBQWdDLE9BQUE7QUFDekMsNkVBQXlFO0FBQWhFLHVJQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHVGQUFtRjtBQUExRSxpSkFBQSw2QkFBNkIsT0FBQTtBQUN0QyxtRkFBK0U7QUFBdEUsNklBQUEsMkJBQTJCLE9BQUE7QUFDcEMsdUZBQW1GO0FBQTFFLGlKQUFBLDZCQUE2QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9BZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vTWFuaWZlc3RGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL01hbmlmZXN0Rmxvd1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IE1pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9Qcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL1JMRU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9TaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgV2luZG93ZWROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL1dpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyLmpzJztcbiJdfQ==
@@ -8,4 +8,4 @@
8
8
  * @module
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElDb250cm9sRmxvd05hcnJhdGl2ZSDigJQgSW50ZXJmYWNlIGZvciBjb250cm9sIGZsb3cgbmFycmF0aXZlIGdlbmVyYXRpb24uXG4gKlxuICogQ2FwdHVyZXMgRkxPVyBldmVudHMgZHVyaW5nIHRyYXZlcnNhbDogZGVjaXNpb25zLCBmb3JrcywgbG9vcHMsIHN1YmZsb3dzLlxuICogQ29tcGxlbWVudGFyeSB0byBzY29wZS9yZWNvcmRlcnMvTmFycmF0aXZlUmVjb3JkZXIgd2hpY2ggY2FwdHVyZXMgREFUQSBldmVudHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVjaXNpb25FdmlkZW5jZSwgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9ySW5mby5qcyc7XG5cbi8qKlxuICpcbiAqIFVzZXMgTnVsbCBPYmplY3QgcGF0dGVybjogTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIHNhdGlzZmllcyB0aGlzXG4gKiBpbnRlcmZhY2Ugd2l0aCBlbXB0eSBtZXRob2RzIGZvciB6ZXJvLWNvc3QgZGlzYWJsZWQgcGF0aC5cbiAqL1xuXG4vKipcbiAqIFRoZSBraW5kIG9mIHN0YWdlIHRoYXQgY29tcGxldGVkLiBMZXRzIGNvbnN1bWVycyByb3V0ZSB1bmlmb3JtXG4gKiBcImRpZCB0aGlzIHN0YWdlIGV4ZWN1dGVcIiBoYW5kbGluZyB3aXRob3V0IGEgc2lkZS10YWJsZSBsb29rdXAgaW50b1xuICogdGhlIGNoYXJ0IHNwZWMuIFJlcXVpcmVkIG9uIGV2ZXJ5IGBvblN0YWdlRXhlY3V0ZWRgIGV2ZW50IHNpbmNlXG4gKiBwcm9wb3NhbCAjMDAzIHVuaWZpZWQgdGhlIGV2ZW50IHRvIGZpcmUgZm9yIEFMTCBzdGFnZSBraW5kcy5cbiAqL1xuZXhwb3J0IHR5cGUgU3RhZ2VUeXBlID0gJ2xpbmVhcicgfCAnZGVjaWRlcicgfCAnZm9yaycgfCAnc2VsZWN0b3InIHwgJ3N1YmZsb3ctbW91bnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sRmxvd05hcnJhdGl2ZSB7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIHN0YWdlIGNvbXBsZXRlcyBpdHMgbWFpbiB3b3JrLiBGaXJlcyBmb3IgQUxMIHN0YWdlXG4gICAqIGtpbmRzIChgJ2xpbmVhcidgLCBgJ2RlY2lkZXInYCwgYCdmb3JrJ2AsIGAnc2VsZWN0b3InYCwgYCdzdWJmbG93LW1vdW50J2ApXG4gICAqIEFGVEVSIHRoZSBjb3JyZXNwb25kaW5nIHNwZWNpYWxpemVkIGV2ZW50IChgb25EZWNpc2lvbmAsIGBvbkZvcmtgLFxuICAgKiBgb25TZWxlY3RlZGAsIGBvblN1YmZsb3dFbnRyeWApLiBGb3IgbGluZWFyIHN0YWdlcywgZmlyZXMgYWZ0ZXJcbiAgICogdGhlIHN0YWdlIGZ1bmN0aW9uIHJldHVybnMuXG4gICAqXG4gICAqIENvbnN1bWVycyB0cmFja2luZyBcImRpZCB0aGlzIHN0YWdlIHJ1bj9cIiB1c2UgdGhpcyBldmVudCB1bmlmb3JtbHlcbiAgICogYW5kIHN3aXRjaCBvbiBgc3RhZ2VUeXBlYCBmb3Iga2luZC1zcGVjaWZpYyB3b3JrLlxuICAgKi9cbiAgb25TdGFnZUV4ZWN1dGVkKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCB8IHVuZGVmaW5lZCxcbiAgICBzdGFnZVR5cGU6IFN0YWdlVHlwZSxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIG9uIGxpbmVhciBjb250aW51YXRpb24gZnJvbSBvbmUgc3RhZ2UgdG8gdGhlIG5leHQuICovXG4gIG9uTmV4dChmcm9tU3RhZ2U6IHN0cmluZywgdG9TdGFnZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGRlY2lkZXIgc2VsZWN0cyBhIGJyYW5jaC4gTW9zdCB2YWx1YWJsZSBmb3IgTExNIGNvbnRleHQuICovXG4gIG9uRGVjaXNpb24oXG4gICAgZGVjaWRlck5hbWU6IHN0cmluZyxcbiAgICBjaG9zZW5CcmFuY2g6IHN0cmluZyxcbiAgICByYXRpb25hbGU/OiBzdHJpbmcsXG4gICAgZGVjaWRlckRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZSxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBmb3JrIGV4ZWN1dGVzIGFsbCBjaGlsZHJlbiBpbiBwYXJhbGxlbC4gKi9cbiAgb25Gb3JrKHBhcmVudFN0YWdlOiBzdHJpbmcsIGNoaWxkTmFtZXM6IHN0cmluZ1tdLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgc2VsZWN0b3IgcGlja3MgYSBzdWJzZXQgb2YgY2hpbGRyZW4uICovXG4gIG9uU2VsZWN0ZWQoXG4gICAgcGFyZW50U3RhZ2U6IHN0cmluZyxcbiAgICBzZWxlY3RlZE5hbWVzOiBzdHJpbmdbXSxcbiAgICB0b3RhbENvdW50OiBudW1iZXIsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZW50ZXJpbmcgYSBzdWJmbG93IChuZXN0ZWQgY29udGV4dCBib3VuZGFyeSkuICovXG4gIG9uU3ViZmxvd0VudHJ5KFxuICAgIHN1YmZsb3dOYW1lOiBzdHJpbmcsXG4gICAgc3ViZmxvd0lkPzogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGV4aXRpbmcgYSBzdWJmbG93LiAqL1xuICBvblN1YmZsb3dFeGl0KFxuICAgIHN1YmZsb3dOYW1lOiBzdHJpbmcsXG4gICAgc3ViZmxvd0lkPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZHluYW1pYyBzdWJmbG93IGlzIHJlZ2lzdGVyZWQgZHVyaW5nIHRyYXZlcnNhbC4gKi9cbiAgb25TdWJmbG93UmVnaXN0ZXJlZChzdWJmbG93SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgc3BlY1N0cnVjdHVyZT86IHVua25vd24pOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbG9vcCBpdGVyYXRpb24gKGJhY2stZWRnZSB0cmF2ZXJzYWwpLiAqL1xuICBvbkxvb3AodGFyZ2V0U3RhZ2U6IHN0cmluZywgaXRlcmF0aW9uOiBudW1iZXIsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgdHJpZ2dlcnMgYnJlYWsgKGVhcmx5IHRlcm1pbmF0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHJlYXNvbiAtIE9wdGlvbmFsIHN0cmluZyBwYXNzZWQgdG8gYHNjb3BlLiRicmVhayhyZWFzb24pYC5cbiAgICogQHBhcmFtIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdyAtIFdoZW4gc2V0LCB0aGlzIGJyZWFrIHdhcyByYWlzZWQgb24gdGhlXG4gICAqICAgcGFyZW50IGJlY2F1c2UgYW4gaW5uZXIgc3ViZmxvdyAodGhpcyBpZCkgYnJva2Ugd2l0aCBgcHJvcGFnYXRlQnJlYWtgXG4gICAqICAgZW5hYmxlZC4gVXNlZCBieSByZWNvcmRlcnMgdG8gZGlzdGluZ3Vpc2ggb3JpZ2luYXRpbmcgdnMgcHJvcGFnYXRlZFxuICAgKiAgIGJyZWFrcyBhbmQgcmVuZGVyIHRoZW0gYWNjb3JkaW5nbHkuXG4gICAqL1xuICBvbkJyZWFrKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgICBwcm9wYWdhdGVkRnJvbVN1YmZsb3c/OiBzdHJpbmcsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgdGhyb3dzIGFuIGVycm9yLCB3aXRoIGl0cyBTRVJWRUQgZm9ybTogZm9yIGEgc3RhZ2UncyBvd24gZmFpbHVyZSB0aGF0IGlzXG4gICAqIGBSZWRhY3Rpb25SdWxlLnJldGFpblN0YWdlRXJyb3JgICh0aGUgZGlhZ25vc3RpYyBwb2xpY3kgYXBwbGllZCBvbmNlKSwgZWxzZXdoZXJlIGBleHRyYWN0RXJyb3JJbmZvYC5cbiAgICovXG4gIG9uRXJyb3IoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBhdHRlbXB0IGF0IGEgc3RhZ2Ugd2l0aCBhIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5IGZhaWxlZFxuICAgKiBBTkQgYW5vdGhlciBhdHRlbXB0IHdpbGwgcnVuLiBGaXJlcyBhZnRlciB0aGUgZmFpbGVkIGF0dGVtcHQncyBzdGFnZWRcbiAgICogd3JpdGVzIGFyZSBkaXNjYXJkZWQgYW5kIEJFRk9SRSB0aGUgYmFja29mZiB3YWl0LCBzbyBhIGxpdmUgbW9uaXRvciBsZWFybnNcbiAgICogXCJyZXRyeWluZyBpbiA1MDAgbXNcIiB3aGVuIHRoZSBkZWNpc2lvbiBpcyBtYWRlLCBub3QgYWZ0ZXIgdGhlIHdhaXQuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IGFuIGV4aGF1c3RlZCBwb2xpY3kgZmlyZXMgYGF0dGVtcHRzIC0gMWAgb2YgdGhlc2UgYW5kXG4gICAqIHRoZW4gb25lIGBvbkVycm9yYDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBmaXJlcyBaRVJPIG9mIHRoZXNlIGFuZCBvbmVcbiAgICogYG9uRXJyb3JgLiBUaGUgZmluYWwgYXR0ZW1wdCBuZXZlciBmaXJlcyB0aGlzIGV2ZW50LlxuICAgKi9cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGUgcnVuJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgXG4gICAqIGNsYXNzaWZpZWQgaXRzIGVycm9yIGFzIHRocm90dGxpbmcgKDkuMzkuMCkuIFRoZSBjaGlsZCdzIGZhaWx1cmUgdGFrZXNcbiAgICogaXRzIG9yZGluYXJ5IHBhdGggdG9vOyB0aGlzIG9ubHkgbmFtZXMgaXQgYXMgdGhyb3R0bGluZy5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHBhdXNhYmxlIHN0YWdlIHBhdXNlcyBleGVjdXRpb24uICovXG4gIG9uUGF1c2UoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHBhdXNlRGF0YTogdW5rbm93bixcbiAgICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2VkIHN0YWdlIGlzIHJlc3VtZWQuICovXG4gIG9uUmVzdW1lKHN0YWdlTmFtZTogc3RyaW5nLCBzdGFnZUlkOiBzdHJpbmcsIGhhc0lucHV0OiBib29sZWFuLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBleGVjdXRlcy5cbiAgICogYGlucHV0YCBpcyB0aGUgcmV0YWluZWQgZm9ybSBvZiBgcnVuKHtpbnB1dH0pYCBhZnRlciBzY2hlbWEgdmFsaWRhdGlvbjtcbiAgICogdGhlIHJ1bidzIGtleS9wYXRoIHJlZGFjdGlvbiBhcHBsaWVzIGJlZm9yZSBkaXNwYXRjaC4gU2VlIHtAbGluayBGbG93UnVuRXZlbnR9LlxuICAgKiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgdGhpcyBldmVudCDigJQgdGhleSBmaXJlIGBvblN1YmZsb3dFbnRyeWAuXG4gICAqL1xuICBvblJ1blN0YXJ0KGlucHV0OiB1bmtub3duLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQUZURVIgdGhlIGxhc3Qgc3RhZ2UgY29tbWl0cy5cbiAgICogYG91dHB1dGAgaXMgdGhlIHJldGFpbmVkIGZvcm0gb2YgdGhlIGNoYXJ0J3MgcmV0dXJuLiBOT1QgZmlyZWQgb24gcGF1c2UgKHRoZSBydW5cbiAgICogZGlkbid0IGVuZDsgaXQgc3VzcGVuZGVkKSBvciBvbiB1bmNhdWdodCBlcnJvci4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvXG4gICAqIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RXhpdGAuXG4gICAqL1xuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdHJhdmVyc2FsIHRocm93cyBhXG4gICAqIE5PTi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byBgcnVuKClgJ3MgY2FsbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBURVJNSU5BTCBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBpdCBjbG9zZXMgdGhlIHJ1blxuICAgKiBib3VuZGFyeSBzeW1tZXRyaWNhbGx5IHNvIGV2ZXJ5IGBvblJ1blN0YXJ0YCBpcyBmb2xsb3dlZCBieSBleGFjdGx5XG4gICAqIG9uZSBvZiBgb25SdW5FbmRgIChjbGVhbikgb3IgYG9uUnVuRmFpbGVkYCAoZXJyb3IpLiBXaXRob3V0IGl0LCBhXG4gICAqIGxpdmUgbW9uaXRvciBzZWVzIGBvblJ1blN0YXJ0YCB0aGVuIHNpbGVuY2Ugb24gYSBmYWlsZWQgcnVuIGFuZCBjYW4ndFxuICAgKiB0ZWxsIFwic3RpbGwgcnVubmluZ1wiIGZyb20gXCJjcmFzaGVkLlwiXG4gICAqXG4gICAqIEVycm9ycyBTVElMTCB0aHJvdyDigJQgdGhpcyBpcyB0aGUgb2JzZXJ2YWJsZSB0ZXJtaW5hbCBzaWduYWwsIG5vdCBhXG4gICAqIHJlY292ZXJ5IG1lY2hhbmlzbSAobm8gcm91dGluZywgbm8gZXJyb3Itc3ViZmxvdykuIFBhdXNlIGlzIE5PVCBhblxuICAgKiBlcnJvciwgc28gaXQgZG9lcyBub3QgZmlyZSB0aGlzLiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgaXQ7XG4gICAqIHRoZWlyIGVycm9ycyBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudCBhbmQgc3VyZmFjZSBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogUmV0dXJucyBhY2N1bXVsYXRlZCBuYXJyYXRpdmUgc2VudGVuY2VzIGluIGV4ZWN1dGlvbiBvcmRlci4gKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmF2ZXJzYWxDb250ZXh0IOKAlCByZWFkLW9ubHkgZXhlY3V0aW9uIGNvbnRleHQgZnJvbSB0aGUgdHJhdmVyc2VyLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYXZlcnNhbCBjb250ZXh0IGF0dGFjaGVkIHRvIGV2ZXJ5IEZsb3dSZWNvcmRlciBldmVudC5cbiAqIENyZWF0ZWQgYnkgdGhlIHRyYXZlcnNlciBkdXJpbmcgREZTLCBwYXNzZWQgdG8gcmVjb3JkZXJzIGFzIHJlYWQtb25seSBkYXRhLlxuICogRW5hYmxlcyByZWNvcmRlcnMgdG8gYnVpbGQgdHJlZXMsIGdyb3VwIGJ5IHN1YmZsb3csIGFuZCBjb3JyZWxhdGUgZXZlbnRzXG4gKiB3aXRob3V0IG1haW50YWluaW5nIHRoZWlyIG93biBzdGFja3Mgb3IgcG9zdC1wcm9jZXNzaW5nLlxuICpcbiAqIExpa2UgT3BlblRlbGVtZXRyeSdzIHNwYW4gY29udGV4dDogc3RhZ2VJZCArIHBhcmVudFN0YWdlSWQgZm9ybSBhIHRyZWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhdmVyc2FsQ29udGV4dCB7XG4gIC8qKlxuICAgKiBQZXItYGV4ZWN1dG9yLnJ1bigpYCBpZGVudGlmaWVyLiBHZW5lcmF0ZWQgb25jZSBhdCB0aGUgc3RhcnQgb2YgZXZlcnlcbiAgICogYHJ1bigpYCAoYW5kIGFnYWluIG9uIGByZXN1bWUoKWApOyBzaGFyZWQgYnkgZXZlcnkgZXZlbnQgb2YgdGhhdCBydW47XG4gICAqIGRpZmZlcnMgYWNyb3NzIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhlIHNhbWUgZXhlY3V0b3IuXG4gICAqXG4gICAqIEZvcm1hdDogYCR7RGF0ZS5ub3coKX0tJHtjb3VudGVyfWAg4oCUIHNvcnRhYmxlIGxleGljb2dyYXBoaWNhbGx5ICg9PVxuICAgKiBjaHJvbm9sb2dpY2FsbHkgZm9yIHJ1bnMgPiAxbXMgYXBhcnQpLiBQcm9jZXNzLWxvY2FsIOKAlCBmb3IgY3Jvc3MtXG4gICAqIHByb2Nlc3MgY29ycmVsYXRpb24gdXNlIGBnZXRFbnYoKS50cmFjZUlkYCAoY29uc3VtZXItc3VwcGxpZWQpLlxuICAgKlxuICAgKiBSZWNvcmRlcnMgdGhhdCBhY2N1bXVsYXRlIHN0YXRlIGFjcm9zcyBydW5zIChmb3JrIGJvb2trZWVwaW5nLFxuICAgKiBzaWJsaW5nLWhhbmRvZmYgc3RhdGUsIGV0Yy4pIGRldGVjdCBcIm5ldyBydW5cIiB2aWFcbiAgICogYGV2ZW50LnRyYXZlcnNhbENvbnRleHQucnVuSWQgIT09IHRoaXMubGFzdFJ1bklkYCBhbmQgcmVzZXRcbiAgICogdHJhbnNpZW50IGJvb2trZWVwaW5nLiBSZWNvcmRlcnMgdGhhdCBkb24ndCBjYXJlIGFib3V0IHNjb3BpbmdcbiAgICogaWdub3JlIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHJlYWRvbmx5IHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXguXG4gICAqICBDb3VudGVyIHJlc2V0cyBwZXIgZXhlY3V0b3Ig4oCUIGNvbWJpbmUgd2l0aCBgcnVuSWRgIGZvciBnbG9iYWxseSB1bmlxdWUgc3RlcCBrZXlzLiAqL1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXJlbnQgc3RhZ2UgSUQg4oCUIHdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHRyZWUuIFVuZGVmaW5lZCBhdCByb290LiAqL1xuICByZWFkb25seSBwYXJlbnRTdGFnZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBFWEVDVVRJT04gc3RlcCdzIHJ1bnRpbWVTdGFnZUlkIOKAlCB0aGUgcnVudGltZSB0d2luIG9mXG4gICAqIGBwYXJlbnRTdGFnZUlkYCAoUkZDLTAwMyBEMSkuIFdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHJ1bnRpbWVcbiAgICogYW5jZXN0b3IgY2hhaW47IGxvb3AgcmUtZW50cmllcyBzdGF5IHVuYW1iaWd1b3VzIGJlY2F1c2UgcnVudGltZSBpZHNcbiAgICogKGBzdGFnZUlkI2V4ZWN1dGlvbkluZGV4YCkgZGlmZmVyIHBlciBpdGVyYXRpb24gZXZlbiB3aGVuIHN0YWdlIGlkc1xuICAgKiByZXBlYXQuIENyb3NzZXMgc3ViZmxvdyBib3VuZGFyaWVzOiB0aGUgZmlyc3Qgc3RhZ2UgaW5zaWRlIGEgc3ViZmxvd1xuICAgKiBwb2ludHMgYXQgdGhlIE1PVU5UIHN0YWdlJ3MgcnVudGltZVN0YWdlSWQgaW4gdGhlIHBhcmVudCB0cmF2ZXJzZXIuXG4gICAqIFVuZGVmaW5lZCBvbmx5IGF0IHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgdG9wLWxldmVsIGNoYXJ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50UnVudGltZVN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBTdWJmbG93IElEIHdoZW4gaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGF0IHJvb3QgbGV2ZWwuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3ViZmxvdyBwYXRoIGZvciBuZXN0ZWQgc3ViZmxvd3MgKGUuZy4sIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIikuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogU3ViZmxvdyBuZXN0aW5nIGRlcHRoIG9mIHRoZSBzdGFnZSdzIEFERFJFU1M6IGhvdyBtYW55IHN1YmZsb3cgc2VnbWVudHMgaXRzXG4gICAqIGBydW50aW1lU3RhZ2VJZGAgY2FycmllcyAoMCA9IHRvcCBsZXZlbCwgMSA9IGluc2lkZSBhIHN1YmZsb3cgb3IgYVxuICAgKiBgcGFyYWxsZWxGb3JFYWNoYCBicmFuY2gsIDIgPSBhIHN1YmZsb3cgaW5zaWRlIHRoYXQsIOKApikuIE9uZSBtZWFuaW5nIG9uXG4gICAqIGV2ZXJ5IHN0YW1wIOKAlCBzdGFnZSBldmVudHMsIHRoZSBydW4tYm91bmRhcnkgcm9vdCAoMCkgYW5kIGBvblJlc3VtZWBcbiAgICogKDkuMzcuMDsgdW50aWwgOS4zNi4wIHN0YWdlIGV2ZW50cyBzdGFtcGVkIHRoZSBwYXJlbnQtY2hhaW4gbGVuZ3RoIG9mIHRoZVxuICAgKiBzdGFnZSdzIGNvbnRleHQgaW5zdGVhZCkuXG4gICAqL1xuICByZWFkb25seSBkZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogSG93IG1hbnkgdGltZXMgdGhpcyBzdGFnZSBoYXMgZXhlY3V0ZWQgQkVGT1JFIGluIHRoaXMgcnVuIOKAlCB0aGUgbG9vcFxuICAgKiBpdGVyYXRpb24gY291bnQgd2hlbiBhIG5vZGUgaXMgcmV2aXNpdGVkIChlLmcuIHZpYSBgbG9vcFRvYCkuIEFic2VudCBvbiB0aGVcbiAgICogZmlyc3QgZXhlY3V0aW9uOyBgMWAgb24gdGhlIGZpcnN0IGxvb3AtYmFjaywgYDJgIG9uIHRoZSBuZXh0LCDigKYgKGkuZS5cbiAgICogYHZpc2l0Q291bnQgLSAxYCkuIFJ1bi1zY29wZWQgKHJlc2V0cyBlYWNoIGBydW4oKWAvYHJlc3VtZSgpYCkgYW5kIG1vbm90b25pY1xuICAgKiBhY3Jvc3Mgc3ViZmxvdyByZS1tb3VudHMuIFBvcHVsYXRlZCBmb3IgZXZlcnkgc3RhZ2Uga2luZC4gTWlycm9ycyB0aGVcbiAgICogbmFycmF0aXZlIHJlY29yZGVyJ3MgXCJwYXNzIE5cIiBjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvb3BJdGVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBGb3JrIGJyYW5jaCBJRCB3aGVuIGluc2lkZSBhIHBhcmFsbGVsIG9yIGRlY2lkZXIgYnJhbmNoLiAqL1xuICByZWFkb25seSBmb3JrQnJhbmNoPzogc3RyaW5nO1xuICAvKipcbiAgICogT24gdGhlIGBvblJlc3VtZWAgZXZlbnQgb25seSAoOS4zNy4wKTogdGhlIFBBVVNFRCBleGVjdXRpb24gdGhpcyByZXN1bWVkXG4gICAqIHJ1biBjb250aW51ZXMg4oCUIGEgbGluayBpbiB0aGUgT3BlblRlbGVtZXRyeSBzZW5zZSwgbm90IGEgcGFyZW50LiBBIHJlc3VtZVxuICAgKiBpcyBhIG5ldyBgcnVuSWRgLCBzbyB0aGUgcGF1c2VkIGAocnVuSWQsIHJ1bnRpbWVTdGFnZUlkKWAgY2Fubm90IGJlIGFcbiAgICogcGFyZW50IG9mIGFueXRoaW5nIGluIGl0OyBpdCBpcyBuYW1lZCBoZXJlIGluc3RlYWQuIEFic2VudCB3aGVuIHRoZVxuICAgKiBjaGVja3BvaW50IHByZWRhdGVzIDkuMzcuMCAoaXQgZGlkIG5vdCByZWNvcmQgdGhlIHBhdXNlZCBleGVjdXRpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdW1lZEZyb20/OiBSZXN1bWVMaW5rO1xufVxuXG4vKipcbiAqIFRoZSBwYXVzZWQgZXhlY3V0aW9uIGEgcmVzdW1lIGNvbnRpbnVlcyDigJQgYFRyYXZlcnNhbENvbnRleHQucmVzdW1lZEZyb21gLlxuICogQm90aCBpZHMgYXJlIHRoZSBQQVVTRUQgcnVuJ3M6IGBydW5JZGAgaXMgdGhhdCBydW4ncywgYHJ1bnRpbWVTdGFnZUlkYCB0aGVcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgc3RhZ2UgdGhhdCBwYXVzZWQgKGFzIGl0cyBgb25QYXVzZWAgZXZlbnQgc3RhbXBlZCBpdCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdW1lTGluayB7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlRXhlY3V0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVHJhdmVyc2FsIGNvbnRleHQgZnJvbSB0aGUgZW5naW5lIOKAlCByZWFkLW9ubHksIHNldCBieSB0cmF2ZXJzZXIuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogV2hpY2gga2luZCBvZiBzdGFnZSBjb21wbGV0ZWQuIFRoZSBlbmdpbmUgZmlyZXMgYG9uU3RhZ2VFeGVjdXRlZGBcbiAgICogdW5pZm9ybWx5IGZvciBldmVyeSBzdGFnZSBraW5kIChwcm9wb3NhbCAjMDAzKTsgY29uc3VtZXJzIHJvdXRlIGJ5XG4gICAqIGBzdGFnZVR5cGVgIHdpdGhvdXQgYSBjaGFydC1zcGVjIGxvb2t1cC5cbiAgICovXG4gIHN0YWdlVHlwZTogU3RhZ2VUeXBlO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbk5leHQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dOZXh0RXZlbnQge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25EZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0RlY2lzaW9uRXZlbnQge1xuICBkZWNpZGVyOiBzdHJpbmc7XG4gIGNob3Nlbjogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIFN0cnVjdHVyZWQgZGVjaXNpb24gZXZpZGVuY2UgZnJvbSBkZWNpZGUoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25Gb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93Rm9ya0V2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU2VsZWN0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTZWxlY3RlZEV2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBzdHJpbmdbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIHNlbGVjdGlvbiBldmlkZW5jZSBmcm9tIHNlbGVjdCgpIGhlbHBlci4gKi9cbiAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdWJmbG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3ViZmxvd0V2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2UgdGhpcyB0byBsb29rIHVwIHRoZSBmdWxsIHNwZWMgdmlhIHRoZSBtYW5pZmVzdC4gKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKiogQnVpbGQtdGltZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3ViZmxvdyBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgSU5UTyB0aGUgc3ViZmxvdyAoZnJvbSBpbnB1dE1hcHBlci9pbnB1dEtleXMpLiBQcmVzZW50IG9uIGVudHJ5IGV2ZW50cy4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdCBldmVudHMuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvd1JlZ2lzdGVyZWQgKGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogRnVsbCBzcGVjIHN0cnVjdHVyZSAod2hlbiBhdmFpbGFibGUgZnJvbSBidWlsZFRpbWVTdHJ1Y3R1cmUpLiAqL1xuICBzcGVjU3RydWN0dXJlPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uTG9vcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0xvb3BFdmVudCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93QnJlYWtFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZyZWUtZm9ybSByZWFzb24gc3VwcGxpZWQgYnkgYHNjb3BlLiRicmVhayhyZWFzb24pYC4gQWJzZW50XG4gICAqIHdoZW4gdGhlIHN0YWdlIGludm9rZWQgYCRicmVhaygpYCB3aXRob3V0IGFuIGFyZ3VtZW50LiBQcm9wYWdhdGVzIHdoZW5cbiAgICogYSBzdWJmbG93IGlzIG1vdW50ZWQgd2l0aCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIOKAlCB0aGUgb3V0ZXIgYnJlYWtcbiAgICogZXZlbnQgY2FycmllcyB0aGUgaW5uZXIgYnJlYWsncyByZWFzb24gdG9vLlxuICAgKi9cbiAgcmVhc29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGlzIGJyZWFrIGV2ZW50IHdhcyByYWlzZWQgb24gdGhlIFBBUkVOVCBiZWNhdXNlIGFuIGlubmVyXG4gICAqIHN1YmZsb3cncyBicmVhayBwcm9wYWdhdGVkIHVwICh2aWEgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgKS5cbiAgICogVGhlIG9yaWdpbmF0aW5nIGlubmVyIGJyZWFrIGZpcmVzIGl0cyBvd24gYG9uQnJlYWtgIGV2ZW50IHNlcGFyYXRlbHlcbiAgICog4oCUIHRoaXMgZmxhZyBsZXRzIHJlY29yZGVycyBkaXN0aW5ndWlzaCB0aGUgdHdvLlxuICAgKi9cbiAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkVycm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93RXJyb3JFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBTdHJ1Y3R1cmVkIGVycm9yIGRldGFpbHMg4oCUIHByZXNlcnZlcyBmaWVsZC1sZXZlbCBpc3N1ZXMsIGVycm9yIGNvZGVzLCBldGMuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdmbG93J2Agb24gZXZlcnkgZW5naW5lLWRpc3BhdGNoZWRcbiAgICogZXZlbnQuIGBpc0Zsb3dFdmVudCgpYCBjaGVja3MgaXQgZmlyc3QgKGJhY2tsb2cgQjMpOyBvcHRpb25hbCBzb1xuICAgKiBjb25zdW1lci1mYWJyaWNhdGVkIGV2ZW50cyAodGVzdHMsIHJlcGxheXMpIHJlbWFpbiB0eXBlLXZhbGlkIGFuZCBmYWxsXG4gICAqIGJhY2sgdG8gdGhlIGxlZ2FjeSBwaXBlbGluZUlkLWFic2VuY2UgaGV1cmlzdGljLlxuICAgKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uVGhyb3R0bGVkIOKAlCBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGVcbiAqIGV4ZWN1dG9yJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgIHNhaWQgaXRzIGVycm9yIGlzIHRocm90dGxpbmcgKDkuMzkuMCkuXG4gKlxuICogV0hZIGFuIGV2ZW50OiB0aGUgY2hlY2tlciB1c2VkIHRvIHdyaXRlIGBtb25pdG9yLmlzVGhyb3R0bGVkYCBpbnRvIHRoZVxuICogY2hpbGQncyBmcmFtZSBBRlRFUiB0aGUgY2hpbGQncyBsYXN0IGNvbW1pdCwgc28gdGhlIGZsYWcgbGFuZGVkIG5vd2hlcmUg4oCUXG4gKiBub3QgaW4gc3RhdGUsIG5vdCBpbiB0aGUgbG9nLiBUaHJvdHRsaW5nIGlzIHRlbGVtZXRyeSwgc28gaXQgdHJhdmVscyB0aGVcbiAqIHdheSB0ZWxlbWV0cnkgZG9lczogYXMgYW4gZXZlbnQgYSByZWNvcmRlciBjYW4gY291bnQsIGFsZXJ0IG9uLCBvciBiYWNrIG9mZlxuICogZnJvbS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBzdGlsbCB0YWtlcyBpdHMgb3JkaW5hcnkgcGF0aCAodGhlIGZhbi1vdXRcbiAqIHJlY29yZHMgaXQgYXMgYHsgaXNFcnJvcjogdHJ1ZSB9YCk7IHRoaXMgZXZlbnQgb25seSBjbGFzc2lmaWVzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dUaHJvdHRsZWRFdmVudCB7XG4gIC8qKiBUaGUgZm9yayBjaGlsZCB3aG9zZSBlcnJvciB3YXMgY2xhc3NpZmllZCBhcyB0aHJvdHRsaW5nLiAqL1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIG9mIHRoYXQgY2hpbGQgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSBvZiB0aGUgY2hpbGQncyBlcnJvci4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBjaGlsZCdzIGVycm9yLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIC8qKiBUaGUgRk9SSydzIHN0YW1wIOKAlCB0aGUgZmFuLW91dCBpcyB3aGVyZSB0aGUgY2xhc3NpZmljYXRpb24gaXMgbWFkZS4gKi9cbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3RhZ2VSZXRyeSDigJQgb25lIGZhaWxlZCBhdHRlbXB0IGF0IGEgc3RhZ2VcbiAqIHRoYXQgY2FycmllcyBhIGRlY2xhcmVkIHtAbGluayBpbXBvcnQoJy4uL3R5cGVzLmpzJykuUmV0cnlQb2xpY3l9LCBhbmQgd2hpY2hcbiAqIFdJTEwgYmUgYXR0ZW1wdGVkIGFnYWluLlxuICpcbiAqIFdIWSB0aGlzIGV2ZW50IGV4aXN0czogYSByZXRyeSBoYW5kLXJvbGxlZCBpbnNpZGUgYSBzdGFnZSBmdW5jdGlvbiBsZWF2ZXMgbm9cbiAqIG1hcmsgb24gdGhlIHRyYWNlIGF0IGFsbC4gVGhpcyBldmVudCBpcyB3aGF0IG1ha2VzIGEgZGVjbGFyZWQgcmV0cnkgcGFydCBvZlxuICogdGhlIHJlY29yZCDigJQgd2hpY2ggYXR0ZW1wdCBmYWlsZWQsIHdoeSwgaG93IGxvbmcgdGhlIGVuZ2luZSB3YWl0ZWQsIGFuZCBob3dcbiAqIG1hbnkgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MuXG4gKlxuICogRmlyZXMgb25seSBmb3IgYXR0ZW1wdHMgZm9sbG93ZWQgYnkgYW5vdGhlciBhdHRlbXB0LiBUaGUgZmluYWwgZmFpbHVyZSB0YWtlc1xuICogdGhlIG9yZGluYXJ5IGVycm9yIHBhdGggKGBvbkVycm9yYCksIHNvIHRoZSB0d28gbmV2ZXIgZG91YmxlLXJlcG9ydCB0aGUgc2FtZVxuICogZmFpbHVyZTogYW4gZXhoYXVzdGVkIGBhdHRlbXB0czogM2AgcG9saWN5IGVtaXRzIDIgcmV0cnkgZXZlbnRzICsgMSBlcnJvclxuICogZXZlbnQ7IGEgYHJldHJ5T25gIHRoYXQgZGVjbGluZXMgZW1pdHMgMCByZXRyeSBldmVudHMgKyAxIGVycm9yIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZVJldHJ5RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hpY2ggYXR0ZW1wdCBqdXN0IEZBSUxFRCwgMS1iYXNlZC4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVG90YWwgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MsIGluY2x1ZGluZyB0aGUgZmlyc3QuICovXG4gIG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgdGhlIGVuZ2luZSB3aWxsIHdhaXQgYmVmb3JlIHRoZSBuZXh0IGF0dGVtcHQuIGAwYCA9IGltbWVkaWF0ZS4gKi9cbiAgZGVsYXlNczogbnVtYmVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSDigJQgdGhlIHNhbWUgc3RyaW5nIGBvbkVycm9yYCB3b3VsZCBjYXJyeS4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IGVuZGVkIHRoaXMgYXR0ZW1wdC4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UGF1c2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBEYXRhIGZyb20gdGhlIHBhdXNlIHNpZ25hbCAocXVlc3Rpb24sIHJlYXNvbiwgbWV0YWRhdGEpLiAqL1xuICBwYXVzZURhdGE/OiB1bmtub3duO1xuICAvKiogUGF0aCB0aHJvdWdoIHN1YmZsb3dzIHRvIHRoZSBwYXVzZWQgc3RhZ2UuIEVtcHR5IGF0IHJvb3QgbGV2ZWwuICovXG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SZXN1bWUuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZXN1bWVFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHJlc3VtZSBpbnB1dCB3YXMgcHJvdmlkZWQuICovXG4gIGhhc0lucHV0OiBib29sZWFuO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5TdGFydCAvIG9uUnVuRW5kLlxuICpcbiAqIEJyYWNrZXRzIHRoZSB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBjYWxsLiBTdWJmbG93cyBoYXZlIHRoZWlyIG93blxuICogcGFpciAoYG9uU3ViZmxvd0VudHJ5YCAvIGBvblN1YmZsb3dFeGl0YCk7IHRoZSBydW4gcGFpciBpcyB0aGUgT1VURVJNT1NUXG4gKiBib3VuZGFyeSwgc28gY29uc3VtZXJzIGJ1aWxkaW5nIFwiZXZlcnkgc3RlcCBoYXMgYW4gaW4vb3V0XCIgdmlld3MgY2FuXG4gKiBjbG9zZSB0aGUgY2hhaW4gYXQgdGhlIHRvcCBsZXZlbC5cbiAqXG4gKiAgIC0gYG9uUnVuU3RhcnRgIHBheWxvYWQg4oaSIHRoZSBpbnB1dCBwYXNzZWQgdG8gYHJ1bih7aW5wdXR9KWBcbiAqICAgLSBgb25SdW5FbmRgICAgcGF5bG9hZCDihpIgdGhlIGNoYXJ0J3MgcmV0dXJuIHZhbHVlXG4gKlxuICogQm90aCBhcmUgcmV0YWluZWQgYXQgcnVudGltZSBiZWZvcmUgZGlzcGF0Y2gvZGVmZXJyZWQgY2FwdHVyZSB1c2luZyB0aGVcbiAqIHJ1bidzIFJlZGFjdGlvblJ1bGUgKGByZXRhaW5Cb3VuZGFyeWApOiBvd24gc3RyaW5nIGtleXMgYXQgZXZlcnkgZGVwdGggKGJ5XG4gKiBuYW1lIG9yIGRvdHRlZCBwYXRoKSBhbmQgZXhwbGljaXQgbmVzdGVkIGZpZWxkcy4gU2NhbGFycyBwYXNzIHRocm91Z2g7IGZvcmtcbiAqIGNoaWxkLUlEIGVudmVsb3BlcyBuZWVkIGV4cGxpY2l0IHBhdGhzIHN1Y2ggYXMgZmllbGRzOiB7IGNoaWxkSWQ6IFsncmVzdWx0LnNlY3JldCddIH0uXG4gKiBWYWx1ZXMgYXJlIG5vdCBzY2FubmVkLiBMaXZlIGV4ZWN1dGlvbiBpbnB1dHMgYW5kIHJldHVybiB2YWx1ZXMgc3RheSB1bmNoYW5nZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkV2ZW50IHtcbiAgLyoqIFJldGFpbmVkIGlucHV0IGFmdGVyIHZhbGlkYXRpb24gKGBvblJ1blN0YXJ0YCkgb3IgcmV0YWluZWQgY2hhcnQgcmV0dXJuXG4gICAqICAoYG9uUnVuRW5kYCksIHVuZGVyIHRoZSBrZXkvcGF0aCBjb250cmFjdCBhYm92ZS4gVW5kZWZpbmVkIGlmIG5laXRoZXIuICovXG4gIHBheWxvYWQ/OiB1bmtub3duO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUnVuRmFpbGVkIOKAlCB0aGUgVEVSTUlOQUwgZmFpbHVyZSBib3VuZGFyeVxuICogZm9yIGEgdG9wLWxldmVsIHJ1bi4gTWlycm9yIG9mIGBvblJ1bkVuZGAgZm9yIHRoZSBlcnJvciBwYXRoOiBpdCBmaXJlc1xuICogb25jZSwgZHVyaW5nIHRyYXZlcnNhbCwgd2hlbiB0aGUgcnVuIHRocm93cyBhIG5vbi1wYXVzZSBlcnJvciwgYmVmb3JlXG4gKiB0aGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMuIENhcnJpZXMgdGhlIHN0cnVjdHVyZWQgZXJyb3IgKGZpZWxkLWxldmVsXG4gKiBpc3N1ZXMsIGNvZGVzKSByYXRoZXIgdGhhbiBhIGZsYXR0ZW5lZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkZhaWxlZEV2ZW50IHtcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCB0ZXJtaW5hdGVkIHRoZSBydW4uICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKlxuICogRmxvd1JlY29yZGVyIOKAlCBQbHVnZ2FibGUgb2JzZXJ2ZXIgZm9yIGNvbnRyb2wgZmxvdyBldmVudHMuXG4gKlxuICogTWlycm9ycyB0aGUgc2NvcGUtbGV2ZWwgU2NvcGVSZWNvcmRlciBwYXR0ZXJuIGZvciB0aGUgZW5naW5lIGxheWVyLlxuICogQWxsIG1ldGhvZHMgYXJlIG9wdGlvbmFsIOKAlCBpbXBsZW1lbnQgb25seSB0aGUgaG9va3MgeW91IG5lZWQuXG4gKiBSZWNvcmRlcnMgYXJlIGludm9rZWQgc3luY2hyb25vdXNseSBpbiBhdHRhY2htZW50IG9yZGVyLlxuICogSWYgYSByZWNvcmRlciB0aHJvd3MsIHRoZSBlcnJvciBpcyBjYXVnaHQgYW5kIHN3YWxsb3dlZDsgZXhlY3V0aW9uIGNvbnRpbnVlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWV0cmljc1JlY29yZGVyOiBGbG93UmVjb3JkZXIgPSB7XG4gKiAgIGlkOiAnbWV0cmljcycsXG4gKiAgIG9uTG9vcDogKGV2ZW50KSA9PiByZWNvcmRNZXRyaWMoJ2xvb3AuaXRlcmF0aW9uJywgZXZlbnQuaXRlcmF0aW9uKSxcbiAqICAgb25EZWNpc2lvbjogKGV2ZW50KSA9PiByZWNvcmRNZXRyaWMoJ2RlY2lzaW9uJywgZXZlbnQuY2hvc2VuKSxcbiAqIH07XG4gKiBleGVjdXRvci5hdHRhY2hGbG93UmVjb3JkZXIobWV0cmljc1JlY29yZGVyKTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIG9uU3RhZ2VFeGVjdXRlZD8oZXZlbnQ6IEZsb3dTdGFnZUV2ZW50KTogdm9pZDtcbiAgb25OZXh0PyhldmVudDogRmxvd05leHRFdmVudCk6IHZvaWQ7XG4gIG9uRGVjaXNpb24/KGV2ZW50OiBGbG93RGVjaXNpb25FdmVudCk6IHZvaWQ7XG4gIG9uRm9yaz8oZXZlbnQ6IEZsb3dGb3JrRXZlbnQpOiB2b2lkO1xuICBvblNlbGVjdGVkPyhldmVudDogRmxvd1NlbGVjdGVkRXZlbnQpOiB2b2lkO1xuICBvblN1YmZsb3dFbnRyeT8oZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkO1xuICBvblN1YmZsb3dFeGl0PyhldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiBhIGR5bmFtaWMgc3ViZmxvdyBpcyByZWdpc3RlcmVkIGR1cmluZyB0cmF2ZXJzYWwuICovXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQ/KGV2ZW50OiBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCk6IHZvaWQ7XG4gIG9uTG9vcD8oZXZlbnQ6IEZsb3dMb29wRXZlbnQpOiB2b2lkO1xuICBvbkJyZWFrPyhldmVudDogRmxvd0JyZWFrRXZlbnQpOiB2b2lkO1xuICBvbkVycm9yPyhldmVudDogRmxvd0Vycm9yRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIGZhaWxlZCBhdHRlbXB0IHRoYXQgV0lMTCBiZSByZXRyaWVkLCBmb3Igc3RhZ2VzIGNhcnJ5aW5nIGFcbiAgICogZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3kuIFRoZSBmaW5hbCBmYWlsdXJlIGFycml2ZXMgdmlhIGBvbkVycm9yYCBpbnN0ZWFkLFxuICAgKiBzbyBhIHN0YWdlIG5ldmVyIHJlcG9ydHMgdGhlIHNhbWUgZmFpbHVyZSB0d2ljZS4gU2VlXG4gICAqIHtAbGluayBGbG93U3RhZ2VSZXRyeUV2ZW50fSBmb3IgdGhlIGV4YWN0IGV2ZW50IGFyaXRobWV0aWMuXG4gICAqL1xuICBvblN0YWdlUmV0cnk/KGV2ZW50OiBGbG93U3RhZ2VSZXRyeUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgZm9yayBjaGlsZCdzIGVycm9yIGlzIGNsYXNzaWZpZWQgYXMgdGhyb3R0bGluZyBieSB0aGVcbiAgICogZXhlY3V0b3IncyBgdGhyb3R0bGluZ0Vycm9yQ2hlY2tlcmAg4oCUIHNlZSB7QGxpbmsgRmxvd1Rocm90dGxlZEV2ZW50fS5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhldmVudDogRmxvd1Rocm90dGxlZEV2ZW50KTogdm9pZDtcbiAgb25QYXVzZT8oZXZlbnQ6IEZsb3dQYXVzZUV2ZW50KTogdm9pZDtcbiAgb25SZXN1bWU/KGV2ZW50OiBGbG93UmVzdW1lRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIEJFRk9SRSB0cmF2ZXJzYWwgYmVnaW5zLlxuICAgKiBDYXJyaWVzIGBldmVudC5wYXlsb2FkID0gcnVuKHtpbnB1dH0pYC4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvbid0IGZpcmUgaXQuXG4gICAqL1xuICBvblJ1blN0YXJ0PyhldmVudDogRmxvd1J1bkV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBBRlRFUiB0cmF2ZXJzYWwgY29tcGxldGVzXG4gICAqIGNsZWFubHkuIENhcnJpZXMgYGV2ZW50LnBheWxvYWQgPSBjaGFydCdzIHJldHVybiB2YWx1ZWAuIE5PVCBmaXJlZCBvblxuICAgKiBwYXVzZSAodGhlIHJ1biBkaWRuJ3QgZW5kKSBvciB1bmNhdWdodCBlcnJvci5cbiAgICovXG4gIG9uUnVuRW5kPyhldmVudDogRmxvd1J1bkV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCB3aGVuIHRoZSBydW4gdGhyb3dzIGFcbiAgICogbm9uLXBhdXNlIGVycm9yLCBCRUZPUkUgdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzLiBUaGUgVEVSTUlOQUxcbiAgICogY291bnRlcnBhcnQgdG8gYG9uUnVuRW5kYCDigJQgbGV0cyBhIG1vbml0b3IgY2xvc2UgdGhlIHJ1biBib3VuZGFyeSBvblxuICAgKiBmYWlsdXJlIGluc3RlYWQgb2Ygd2FpdGluZyBmb3JldmVyLiBOT1QgZmlyZWQgb24gcGF1c2UuXG4gICAqL1xuICBvblJ1bkZhaWxlZD8oZXZlbnQ6IEZsb3dSdW5GYWlsZWRFdmVudCk6IHZvaWQ7XG4gIC8qKiBDYWxsZWQgYmVmb3JlIGVhY2ggcnVuIHRvIHJlc2V0IHBlci1ydW4gc3RhdGUuIEltcGxlbWVudCBmb3Igc3RhdGVmdWwgcmVjb3JkZXJzLiAqL1xuICBjbGVhcj8oKTogdm9pZDtcbiAgLyoqIE9wdGlvbmFsOiBleHBvc2UgY29sbGVjdGVkIGRhdGEgZm9yIGluY2x1c2lvbiBpbiBzbmFwc2hvdHMuICovXG4gIHRvU25hcHNob3Q/KCk6IGltcG9ydCgnLi4vLi4vcmVjb3JkZXIvc25hcHNob3QuanMnKS5SZWNvcmRlckJ1bmRsZTtcbn1cbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElDb250cm9sRmxvd05hcnJhdGl2ZSDigJQgSW50ZXJmYWNlIGZvciBjb250cm9sIGZsb3cgbmFycmF0aXZlIGdlbmVyYXRpb24uXG4gKlxuICogQ2FwdHVyZXMgRkxPVyBldmVudHMgZHVyaW5nIHRyYXZlcnNhbDogZGVjaXNpb25zLCBmb3JrcywgbG9vcHMsIHN1YmZsb3dzLlxuICogQ29tcGxlbWVudGFyeSB0byBzY29wZS9yZWNvcmRlcnMvTmFycmF0aXZlUmVjb3JkZXIgd2hpY2ggY2FwdHVyZXMgREFUQSBldmVudHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQXR0ZW1wdFJlY29yZCwgUnVuQ29ycmVsYXRpb24gfSBmcm9tICcuLi8uLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRGVjaXNpb25FdmlkZW5jZSwgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9ySW5mby5qcyc7XG5pbXBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLyoqXG4gKlxuICogVXNlcyBOdWxsIE9iamVjdCBwYXR0ZXJuOiBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3Igc2F0aXNmaWVzIHRoaXNcbiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMgZm9yIHplcm8tY29zdCBkaXNhYmxlZCBwYXRoLlxuICovXG5cbi8qKlxuICogVGhlIGtpbmQgb2Ygc3RhZ2UgdGhhdCBjb21wbGV0ZWQuIExldHMgY29uc3VtZXJzIHJvdXRlIHVuaWZvcm1cbiAqIFwiZGlkIHRoaXMgc3RhZ2UgZXhlY3V0ZVwiIGhhbmRsaW5nIHdpdGhvdXQgYSBzaWRlLXRhYmxlIGxvb2t1cCBpbnRvXG4gKiB0aGUgY2hhcnQgc3BlYy4gUmVxdWlyZWQgb24gZXZlcnkgYG9uU3RhZ2VFeGVjdXRlZGAgZXZlbnQgc2luY2VcbiAqIHByb3Bvc2FsICMwMDMgdW5pZmllZCB0aGUgZXZlbnQgdG8gZmlyZSBmb3IgQUxMIHN0YWdlIGtpbmRzLlxuICovXG5leHBvcnQgdHlwZSBTdGFnZVR5cGUgPSAnbGluZWFyJyB8ICdkZWNpZGVyJyB8ICdmb3JrJyB8ICdzZWxlY3RvcicgfCAnc3ViZmxvdy1tb3VudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgY29tcGxldGVzIGl0cyBtYWluIHdvcmsuIEZpcmVzIGZvciBBTEwgc3RhZ2VcbiAgICoga2luZHMgKGAnbGluZWFyJ2AsIGAnZGVjaWRlcidgLCBgJ2ZvcmsnYCwgYCdzZWxlY3RvcidgLCBgJ3N1YmZsb3ctbW91bnQnYClcbiAgICogQUZURVIgdGhlIGNvcnJlc3BvbmRpbmcgc3BlY2lhbGl6ZWQgZXZlbnQgKGBvbkRlY2lzaW9uYCwgYG9uRm9ya2AsXG4gICAqIGBvblNlbGVjdGVkYCwgYG9uU3ViZmxvd0VudHJ5YCkuIEZvciBsaW5lYXIgc3RhZ2VzLCBmaXJlcyBhZnRlclxuICAgKiB0aGUgc3RhZ2UgZnVuY3Rpb24gcmV0dXJucy5cbiAgICpcbiAgICogQ29uc3VtZXJzIHRyYWNraW5nIFwiZGlkIHRoaXMgc3RhZ2UgcnVuP1wiIHVzZSB0aGlzIGV2ZW50IHVuaWZvcm1seVxuICAgKiBhbmQgc3dpdGNoIG9uIGBzdGFnZVR5cGVgIGZvciBraW5kLXNwZWNpZmljIHdvcmsuXG4gICAqL1xuICBvblN0YWdlRXhlY3V0ZWQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0IHwgdW5kZWZpbmVkLFxuICAgIHN0YWdlVHlwZTogU3RhZ2VUeXBlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbGluZWFyIGNvbnRpbnVhdGlvbiBmcm9tIG9uZSBzdGFnZSB0byB0aGUgbmV4dC4gKi9cbiAgb25OZXh0KGZyb21TdGFnZTogc3RyaW5nLCB0b1N0YWdlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZGVjaWRlciBzZWxlY3RzIGEgYnJhbmNoLiBNb3N0IHZhbHVhYmxlIGZvciBMTE0gY29udGV4dC4gKi9cbiAgb25EZWNpc2lvbihcbiAgICBkZWNpZGVyTmFtZTogc3RyaW5nLFxuICAgIGNob3NlbkJyYW5jaDogc3RyaW5nLFxuICAgIHJhdGlvbmFsZT86IHN0cmluZyxcbiAgICBkZWNpZGVyRGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBEZWNpc2lvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGZvcmsgZXhlY3V0ZXMgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsLiAqL1xuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzZWxlY3RvciBwaWNrcyBhIHN1YnNldCBvZiBjaGlsZHJlbi4gKi9cbiAgb25TZWxlY3RlZChcbiAgICBwYXJlbnRTdGFnZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLFxuICAgIHRvdGFsQ291bnQ6IG51bWJlcixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IFNlbGVjdGlvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBhIHN1YmZsb3cgKG5lc3RlZCBjb250ZXh0IGJvdW5kYXJ5KS4gKi9cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZXhpdGluZyBhIHN1YmZsb3cuICovXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkKHN1YmZsb3dJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBzcGVjU3RydWN0dXJlPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsb29wIGl0ZXJhdGlvbiAoYmFjay1lZGdlIHRyYXZlcnNhbCkuICovXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0cmlnZ2VycyBicmVhayAoZWFybHkgdGVybWluYXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gT3B0aW9uYWwgc3RyaW5nIHBhc3NlZCB0byBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLlxuICAgKiBAcGFyYW0gcHJvcGFnYXRlZEZyb21TdWJmbG93IC0gV2hlbiBzZXQsIHRoaXMgYnJlYWsgd2FzIHJhaXNlZCBvbiB0aGVcbiAgICogICBwYXJlbnQgYmVjYXVzZSBhbiBpbm5lciBzdWJmbG93ICh0aGlzIGlkKSBicm9rZSB3aXRoIGBwcm9wYWdhdGVCcmVha2BcbiAgICogICBlbmFibGVkLiBVc2VkIGJ5IHJlY29yZGVycyB0byBkaXN0aW5ndWlzaCBvcmlnaW5hdGluZyB2cyBwcm9wYWdhdGVkXG4gICAqICAgYnJlYWtzIGFuZCByZW5kZXIgdGhlbSBhY2NvcmRpbmdseS5cbiAgICovXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0aHJvd3MgYW4gZXJyb3IsIHdpdGggaXRzIFNFUlZFRCBmb3JtOiBmb3IgYSBzdGFnZSdzIG93biBmYWlsdXJlIHRoYXQgaXNcbiAgICogYFJlZGFjdGlvblJ1bGUucmV0YWluU3RhZ2VFcnJvcmAgKHRoZSBkaWFnbm9zdGljIHBvbGljeSBhcHBsaWVkIG9uY2UpLCBlbHNld2hlcmUgYGV4dHJhY3RFcnJvckluZm9gLlxuICAgKi9cbiAgb25FcnJvcihcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBlcnJvck1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhdCB0aGUgRU5EIG9mIGV2ZXJ5IGF0dGVtcHQgKDEwLjEpIOKAlCBldmVyeSBvdXRjb21lLCB3aXRoIHRoZVxuICAgKiBhdHRlbXB0J3Mge0BsaW5rIEF0dGVtcHRSZWNvcmR9ICh0aW1pbmcsIG91dGNvbWUsIGNhdGVnb3J5LCB0aGVcbiAgICogcmV0cnktb3Itc3RvcCBkZWNpc2lvbik6IGEgc3RhZ2UncyBvd24gKGByZWNvcmQua2luZCA9PT0gJ3N0YWdlJ2AsIHVuZGVyIGFcbiAgICogcmV0cnkgcG9saWN5LCBhIGB0aW1lb3V0TXNgIG9yIGEgcnVuIGRlYWRsaW5lKSwgYW5kIHRoZSBjYWxscyBpdCBtYWtlc1xuICAgKiAoYCdjYWxsJ2AsIGBzY29wZS4kY2FsbGApIGFuZCBvdXRzaWRlIGF0dGVtcHRzIGl0IHJlcG9ydHMgKGAnb2JzZXJ2ZWQnYClcbiAgICogZHVyaW5nIHRoZSBzdGFnZSAoUDIpLiBBIHN0YWdlIGF0dGVtcHQgZmlyZXMgYmVmb3JlIGBvblN0YWdlUmV0cnlgIHdoZW4gaXRcbiAgICogaXMgcmV0cmllZCwgYW5kIGJlZm9yZSBgb25FcnJvcmAgLyBgb25TdGFnZUV4ZWN1dGVkYCBmb3IgdGhlIGxhc3QuXG4gICAqIGBzdHJ1Y3R1cmVkRXJyb3JgIGlzIHRoZSBhdHRlbXB0J3Mgc2VydmVkIGVycm9yIChgcmF3YCBpbmNsdWRlZCB1bmxlc3MgdGhlXG4gICAqIHBvbGljeSBtYXNrZWQgaXQ7IG5ldmVyIGZvciBhbiBvYnNlcnZlZCBhdHRlbXB0KTsgYWJzZW50IGZvciBhIHN1Y2Nlc3Mgb3JcbiAgICogYSBwYXVzZS5cbiAgICpcbiAgICogRXZlbnQgYXJpdGhtZXRpYzogb25lIHBlciBhdHRlbXB0IOKAlCBmb3IgYSBzdGFnZSwgdGhlIG51bWJlciBvZiBhdHRlbXB0cyBpdFxuICAgKiBtYWRlIHBsdXMgb25lIHBlciBjYWxsIG9yIG9ic2VydmVkIGF0dGVtcHQgKGZpbHRlciBvbiBgcmVjb3JkLmtpbmRgKS5cbiAgICovXG4gIG9uQXR0ZW1wdChcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcmVjb3JkOiBBdHRlbXB0UmVjb3JkLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYW4gYXR0ZW1wdCBhdCBhIHN0YWdlIHdpdGggYSBkZWNsYXJlZCBgcmV0cnlgIHBvbGljeSBmYWlsZWRcbiAgICogQU5EIGFub3RoZXIgYXR0ZW1wdCB3aWxsIHJ1bi4gRmlyZXMgYWZ0ZXIgdGhhdCBhdHRlbXB0J3MgYG9uQXR0ZW1wdGAsXG4gICAqIGFmdGVyIGl0cyBzdGFnZWQgd3JpdGVzIGFyZSBkaXNjYXJkZWQgYW5kIEJFRk9SRSB0aGUgYmFja29mZiB3YWl0LCBzbyBhXG4gICAqIGxpdmUgbW9uaXRvciBsZWFybnMgXCJyZXRyeWluZyBpbiA1MDAgbXNcIiB3aGVuIHRoZSBkZWNpc2lvbiBpcyBtYWRlLCBub3RcbiAgICogYWZ0ZXIgdGhlIHdhaXQuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IGFuIGV4aGF1c3RlZCBwb2xpY3kgZmlyZXMgYGF0dGVtcHRzIC0gMWAgb2YgdGhlc2UgYW5kXG4gICAqIHRoZW4gb25lIGBvbkVycm9yYDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBmaXJlcyBaRVJPIG9mIHRoZXNlIGFuZCBvbmVcbiAgICogYG9uRXJyb3JgLiBUaGUgZmluYWwgYXR0ZW1wdCBuZXZlciBmaXJlcyB0aGlzIGV2ZW50LlxuICAgKi9cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGUgcnVuJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgXG4gICAqIGNsYXNzaWZpZWQgaXRzIGVycm9yIGFzIHRocm90dGxpbmcgKDkuMzkuMCkuIFRoZSBjaGlsZCdzIGZhaWx1cmUgdGFrZXNcbiAgICogaXRzIG9yZGluYXJ5IHBhdGggdG9vOyB0aGlzIG9ubHkgbmFtZXMgaXQgYXMgdGhyb3R0bGluZy5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHBhdXNhYmxlIHN0YWdlIHBhdXNlcyBleGVjdXRpb24uICovXG4gIG9uUGF1c2UoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHBhdXNlRGF0YTogdW5rbm93bixcbiAgICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2VkIHN0YWdlIGlzIHJlc3VtZWQuICovXG4gIG9uUmVzdW1lKHN0YWdlTmFtZTogc3RyaW5nLCBzdGFnZUlkOiBzdHJpbmcsIGhhc0lucHV0OiBib29sZWFuLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBleGVjdXRlcy5cbiAgICogYGlucHV0YCBpcyB0aGUgcmV0YWluZWQgZm9ybSBvZiBgcnVuKHtpbnB1dH0pYCBhZnRlciBzY2hlbWEgdmFsaWRhdGlvbjtcbiAgICogdGhlIHJ1bidzIGtleS9wYXRoIHJlZGFjdGlvbiBhcHBsaWVzIGJlZm9yZSBkaXNwYXRjaC4gU2VlIHtAbGluayBGbG93UnVuRXZlbnR9LlxuICAgKiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgdGhpcyBldmVudCDigJQgdGhleSBmaXJlIGBvblN1YmZsb3dFbnRyeWAuXG4gICAqL1xuICBvblJ1blN0YXJ0KGlucHV0OiB1bmtub3duLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQUZURVIgdGhlIGxhc3Qgc3RhZ2UgY29tbWl0cy5cbiAgICogYG91dHB1dGAgaXMgdGhlIHJldGFpbmVkIGZvcm0gb2YgdGhlIGNoYXJ0J3MgcmV0dXJuLiBOT1QgZmlyZWQgb24gcGF1c2UgKHRoZSBydW5cbiAgICogZGlkbid0IGVuZDsgaXQgc3VzcGVuZGVkKSBvciBvbiB1bmNhdWdodCBlcnJvci4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvXG4gICAqIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RXhpdGAuXG4gICAqL1xuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdHJhdmVyc2FsIHRocm93cyBhXG4gICAqIE5PTi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byBgcnVuKClgJ3MgY2FsbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBURVJNSU5BTCBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBpdCBjbG9zZXMgdGhlIHJ1blxuICAgKiBib3VuZGFyeSBzeW1tZXRyaWNhbGx5IHNvIGV2ZXJ5IGBvblJ1blN0YXJ0YCBpcyBmb2xsb3dlZCBieSBleGFjdGx5XG4gICAqIG9uZSBvZiBgb25SdW5FbmRgIChjbGVhbikgb3IgYG9uUnVuRmFpbGVkYCAoZXJyb3IpLiBXaXRob3V0IGl0LCBhXG4gICAqIGxpdmUgbW9uaXRvciBzZWVzIGBvblJ1blN0YXJ0YCB0aGVuIHNpbGVuY2Ugb24gYSBmYWlsZWQgcnVuIGFuZCBjYW4ndFxuICAgKiB0ZWxsIFwic3RpbGwgcnVubmluZ1wiIGZyb20gXCJjcmFzaGVkLlwiXG4gICAqXG4gICAqIEVycm9ycyBTVElMTCB0aHJvdyDigJQgdGhpcyBpcyB0aGUgb2JzZXJ2YWJsZSB0ZXJtaW5hbCBzaWduYWwsIG5vdCBhXG4gICAqIHJlY292ZXJ5IG1lY2hhbmlzbSAobm8gcm91dGluZywgbm8gZXJyb3Itc3ViZmxvdykuIFBhdXNlIGlzIE5PVCBhblxuICAgKiBlcnJvciwgc28gaXQgZG9lcyBub3QgZmlyZSB0aGlzLiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgaXQ7XG4gICAqIHRoZWlyIGVycm9ycyBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudCBhbmQgc3VyZmFjZSBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LCBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIFJldHVybnMgYWNjdW11bGF0ZWQgbmFycmF0aXZlIHNlbnRlbmNlcyBpbiBleGVjdXRpb24gb3JkZXIuICovXG4gIGdldFNlbnRlbmNlcygpOiBzdHJpbmdbXTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHJhdmVyc2FsQ29udGV4dCDigJQgcmVhZC1vbmx5IGV4ZWN1dGlvbiBjb250ZXh0IGZyb20gdGhlIHRyYXZlcnNlci5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBUcmF2ZXJzYWwgY29udGV4dCBhdHRhY2hlZCB0byBldmVyeSBGbG93UmVjb3JkZXIgZXZlbnQuXG4gKiBDcmVhdGVkIGJ5IHRoZSB0cmF2ZXJzZXIgZHVyaW5nIERGUywgcGFzc2VkIHRvIHJlY29yZGVycyBhcyByZWFkLW9ubHkgZGF0YS5cbiAqIEVuYWJsZXMgcmVjb3JkZXJzIHRvIGJ1aWxkIHRyZWVzLCBncm91cCBieSBzdWJmbG93LCBhbmQgY29ycmVsYXRlIGV2ZW50c1xuICogd2l0aG91dCBtYWludGFpbmluZyB0aGVpciBvd24gc3RhY2tzIG9yIHBvc3QtcHJvY2Vzc2luZy5cbiAqXG4gKiBMaWtlIE9wZW5UZWxlbWV0cnkncyBzcGFuIGNvbnRleHQ6IHN0YWdlSWQgKyBwYXJlbnRTdGFnZUlkIGZvcm0gYSB0cmVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYXZlcnNhbENvbnRleHQge1xuICAvKipcbiAgICogUGVyLWBleGVjdXRvci5ydW4oKWAgaWRlbnRpZmllci4gR2VuZXJhdGVkIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5XG4gICAqIGBydW4oKWAgKGFuZCBhZ2FpbiBvbiBgcmVzdW1lKClgKTsgc2hhcmVkIGJ5IGV2ZXJ5IGV2ZW50IG9mIHRoYXQgcnVuO1xuICAgKiBkaWZmZXJzIGFjcm9zcyBjb25zZWN1dGl2ZSBydW5zIG9mIHRoZSBzYW1lIGV4ZWN1dG9yLlxuICAgKlxuICAgKiBGb3JtYXQ6IGAke0RhdGUubm93KCl9LSR7Y291bnRlcn1gIOKAlCBzb3J0YWJsZSBsZXhpY29ncmFwaGljYWxseSAoPT1cbiAgICogY2hyb25vbG9naWNhbGx5IGZvciBydW5zID4gMW1zIGFwYXJ0KS4gUHJvY2Vzcy1sb2NhbCDigJQgZm9yIGNyb3NzLVxuICAgKiBwcm9jZXNzIGNvcnJlbGF0aW9uIHVzZSBgZ2V0RW52KCkudHJhY2VJZGAgKGNvbnN1bWVyLXN1cHBsaWVkKS5cbiAgICpcbiAgICogUmVjb3JkZXJzIHRoYXQgYWNjdW11bGF0ZSBzdGF0ZSBhY3Jvc3MgcnVucyAoZm9yayBib29ra2VlcGluZyxcbiAgICogc2libGluZy1oYW5kb2ZmIHN0YXRlLCBldGMuKSBkZXRlY3QgXCJuZXcgcnVuXCIgdmlhXG4gICAqIGBldmVudC50cmF2ZXJzYWxDb250ZXh0LnJ1bklkICE9PSB0aGlzLmxhc3RSdW5JZGAgYW5kIHJlc2V0XG4gICAqIHRyYW5zaWVudCBib29ra2VlcGluZy4gUmVjb3JkZXJzIHRoYXQgZG9uJ3QgY2FyZSBhYm91dCBzY29waW5nXG4gICAqIGlnbm9yZSB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiAqL1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgcGVyLWV4ZWN1dGlvbi1zdGVwIGlkZW50aWZpZXIuIEZvcm1hdDogW3N1YmZsb3dQYXRoL11zdGFnZUlkI2V4ZWN1dGlvbkluZGV4LlxuICAgKiAgQ291bnRlciByZXNldHMgcGVyIGV4ZWN1dG9yIOKAlCBjb21iaW5lIHdpdGggYHJ1bklkYCBmb3IgZ2xvYmFsbHkgdW5pcXVlIHN0ZXAga2V5cy4gKi9cbiAgcmVhZG9ubHkgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogUGFyZW50IHN0YWdlIElEIOKAlCB3YWxrIHVwIHRvIHJlY29uc3RydWN0IHRoZSB0cmVlLiBVbmRlZmluZWQgYXQgcm9vdC4gKi9cbiAgcmVhZG9ubHkgcGFyZW50U3RhZ2VJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgRVhFQ1VUSU9OIHN0ZXAncyBydW50aW1lU3RhZ2VJZCDigJQgdGhlIHJ1bnRpbWUgdHdpbiBvZlxuICAgKiBgcGFyZW50U3RhZ2VJZGAgKFJGQy0wMDMgRDEpLiBXYWxrIHVwIHRvIHJlY29uc3RydWN0IHRoZSBydW50aW1lXG4gICAqIGFuY2VzdG9yIGNoYWluOyBsb29wIHJlLWVudHJpZXMgc3RheSB1bmFtYmlndW91cyBiZWNhdXNlIHJ1bnRpbWUgaWRzXG4gICAqIChgc3RhZ2VJZCNleGVjdXRpb25JbmRleGApIGRpZmZlciBwZXIgaXRlcmF0aW9uIGV2ZW4gd2hlbiBzdGFnZSBpZHNcbiAgICogcmVwZWF0LiBDcm9zc2VzIHN1YmZsb3cgYm91bmRhcmllczogdGhlIGZpcnN0IHN0YWdlIGluc2lkZSBhIHN1YmZsb3dcbiAgICogcG9pbnRzIGF0IHRoZSBNT1VOVCBzdGFnZSdzIHJ1bnRpbWVTdGFnZUlkIGluIHRoZSBwYXJlbnQgdHJhdmVyc2VyLlxuICAgKiBVbmRlZmluZWQgb25seSBhdCB0aGUgZmlyc3Qgc3RhZ2Ugb2YgdGhlIHRvcC1sZXZlbCBjaGFydC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBJRCB3aGVuIGluc2lkZSBhIHN1YmZsb3cuIFVuZGVmaW5lZCBhdCByb290IGxldmVsLiAqL1xuICByZWFkb25seSBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKiBGdWxsIHN1YmZsb3cgcGF0aCBmb3IgbmVzdGVkIHN1YmZsb3dzIChlLmcuLCBcInNmLW91dGVyL3NmLWlubmVyXCIpLiAqL1xuICByZWFkb25seSBzdWJmbG93UGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFN1YmZsb3cgbmVzdGluZyBkZXB0aCBvZiB0aGUgc3RhZ2UncyBBRERSRVNTOiBob3cgbWFueSBzdWJmbG93IHNlZ21lbnRzIGl0c1xuICAgKiBgcnVudGltZVN0YWdlSWRgIGNhcnJpZXMgKDAgPSB0b3AgbGV2ZWwsIDEgPSBpbnNpZGUgYSBzdWJmbG93IG9yIGFcbiAgICogYHBhcmFsbGVsRm9yRWFjaGAgYnJhbmNoLCAyID0gYSBzdWJmbG93IGluc2lkZSB0aGF0LCDigKYpLiBPbmUgbWVhbmluZyBvblxuICAgKiBldmVyeSBzdGFtcCDigJQgc3RhZ2UgZXZlbnRzLCB0aGUgcnVuLWJvdW5kYXJ5IHJvb3QgKDApIGFuZCBgb25SZXN1bWVgXG4gICAqICg5LjM3LjA7IHVudGlsIDkuMzYuMCBzdGFnZSBldmVudHMgc3RhbXBlZCB0aGUgcGFyZW50LWNoYWluIGxlbmd0aCBvZiB0aGVcbiAgICogc3RhZ2UncyBjb250ZXh0IGluc3RlYWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHRoaXMgc3RhZ2UgaGFzIGV4ZWN1dGVkIEJFRk9SRSBpbiB0aGlzIHJ1biDigJQgdGhlIGxvb3BcbiAgICogaXRlcmF0aW9uIGNvdW50IHdoZW4gYSBub2RlIGlzIHJldmlzaXRlZCAoZS5nLiB2aWEgYGxvb3BUb2ApLiBBYnNlbnQgb24gdGhlXG4gICAqIGZpcnN0IGV4ZWN1dGlvbjsgYDFgIG9uIHRoZSBmaXJzdCBsb29wLWJhY2ssIGAyYCBvbiB0aGUgbmV4dCwg4oCmIChpLmUuXG4gICAqIGB2aXNpdENvdW50IC0gMWApLiBSdW4tc2NvcGVkIChyZXNldHMgZWFjaCBgcnVuKClgL2ByZXN1bWUoKWApIGFuZCBtb25vdG9uaWNcbiAgICogYWNyb3NzIHN1YmZsb3cgcmUtbW91bnRzLiBQb3B1bGF0ZWQgZm9yIGV2ZXJ5IHN0YWdlIGtpbmQuIE1pcnJvcnMgdGhlXG4gICAqIG5hcnJhdGl2ZSByZWNvcmRlcidzIFwicGFzcyBOXCIgY291bnQuXG4gICAqL1xuICByZWFkb25seSBsb29wSXRlcmF0aW9uPzogbnVtYmVyO1xuICAvKiogRm9yayBicmFuY2ggSUQgd2hlbiBpbnNpZGUgYSBwYXJhbGxlbCBvciBkZWNpZGVyIGJyYW5jaC4gKi9cbiAgcmVhZG9ubHkgZm9ya0JyYW5jaD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9uIHRoZSBgb25SZXN1bWVgIGV2ZW50IG9ubHkgKDkuMzcuMCk6IHRoZSBQQVVTRUQgZXhlY3V0aW9uIHRoaXMgcmVzdW1lZFxuICAgKiBydW4gY29udGludWVzIOKAlCBhIGxpbmsgaW4gdGhlIE9wZW5UZWxlbWV0cnkgc2Vuc2UsIG5vdCBhIHBhcmVudC4gQSByZXN1bWVcbiAgICogaXMgYSBuZXcgYHJ1bklkYCwgc28gdGhlIHBhdXNlZCBgKHJ1bklkLCBydW50aW1lU3RhZ2VJZClgIGNhbm5vdCBiZSBhXG4gICAqIHBhcmVudCBvZiBhbnl0aGluZyBpbiBpdDsgaXQgaXMgbmFtZWQgaGVyZSBpbnN0ZWFkLiBBYnNlbnQgd2hlbiB0aGVcbiAgICogY2hlY2twb2ludCBwcmVkYXRlcyA5LjM3LjAgKGl0IGRpZCBub3QgcmVjb3JkIHRoZSBwYXVzZWQgZXhlY3V0aW9uKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VtZWRGcm9tPzogUmVzdW1lTGluaztcbiAgLyoqXG4gICAqIFRoZSBydW4ncyBjb3JyZWxhdGlvbiAoMTAuMSkg4oCUIGBlbnYudHJhY2VwYXJlbnRgLCBvciBgZW52LnRyYWNlSWRgICsgYGVudi5vcGVyYXRpb25JZGAsIHJlc29sdmVkIG9uY2UgcGVyXG4gICAqIGxlZy4gVGhlIFNBTUUgZnJvemVuIG9iamVjdCwgYnkgcmVmZXJlbmNlLCBvbiBldmVyeSBzdGFtcCBvZiB0aGUgbGVnIChzdWJmbG93cyBpbmNsdWRlZCkgYW5kIG9uXG4gICAqIGBnZXRTbmFwc2hvdCgpLmNvcnJlbGF0aW9uYC4gQWJzZW50IOKAlCBubyBrZXkg4oCUIHdoZW4gdGhlIGVudiBnaXZlcyBub25lLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ycmVsYXRpb24/OiBSdW5Db3JyZWxhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgcGF1c2VkIGV4ZWN1dGlvbiBhIHJlc3VtZSBjb250aW51ZXMg4oCUIGBUcmF2ZXJzYWxDb250ZXh0LnJlc3VtZWRGcm9tYC5cbiAqIEJvdGggaWRzIGFyZSB0aGUgUEFVU0VEIHJ1bidzOiBgcnVuSWRgIGlzIHRoYXQgcnVuJ3MsIGBydW50aW1lU3RhZ2VJZGAgdGhlXG4gKiBleGVjdXRpb24gb2YgdGhlIHN0YWdlIHRoYXQgcGF1c2VkIChhcyBpdHMgYG9uUGF1c2VgIGV2ZW50IHN0YW1wZWQgaXQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VtZUxpbmsge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cy5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdGFnZUV4ZWN1dGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhZ2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFRyYXZlcnNhbCBjb250ZXh0IGZyb20gdGhlIGVuZ2luZSDigJQgcmVhZC1vbmx5LCBzZXQgYnkgdHJhdmVyc2VyLiAqL1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIFdoaWNoIGtpbmQgb2Ygc3RhZ2UgY29tcGxldGVkLiBUaGUgZW5naW5lIGZpcmVzIGBvblN0YWdlRXhlY3V0ZWRgXG4gICAqIHVuaWZvcm1seSBmb3IgZXZlcnkgc3RhZ2Uga2luZCAocHJvcG9zYWwgIzAwMyk7IGNvbnN1bWVycyByb3V0ZSBieVxuICAgKiBgc3RhZ2VUeXBlYCB3aXRob3V0IGEgY2hhcnQtc3BlYyBsb29rdXAuXG4gICAqL1xuICBzdGFnZVR5cGU6IFN0YWdlVHlwZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25OZXh0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93TmV4dEV2ZW50IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uRGVjaXNpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dEZWNpc2lvbkV2ZW50IHtcbiAgZGVjaWRlcjogc3RyaW5nO1xuICBjaG9zZW46IHN0cmluZztcbiAgcmF0aW9uYWxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIGRlY2lzaW9uIGV2aWRlbmNlIGZyb20gZGVjaWRlKCkgaGVscGVyLiAqL1xuICBldmlkZW5jZT86IERlY2lzaW9uRXZpZGVuY2U7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uRm9yay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0ZvcmtFdmVudCB7XG4gIHBhcmVudDogc3RyaW5nO1xuICBjaGlsZHJlbjogc3RyaW5nW107XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblNlbGVjdGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U2VsZWN0ZWRFdmVudCB7XG4gIHBhcmVudDogc3RyaW5nO1xuICBzZWxlY3RlZDogc3RyaW5nW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogU3RydWN0dXJlZCBzZWxlY3Rpb24gZXZpZGVuY2UgZnJvbSBzZWxlY3QoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogU2VsZWN0aW9uRXZpZGVuY2U7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dFdmVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllciDigJQgdXNlIHRoaXMgdG8gbG9vayB1cCB0aGUgZnVsbCBzcGVjIHZpYSB0aGUgbWFuaWZlc3QuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN1YmZsb3cgZG9lcy4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogTWFwcGVkIGlucHV0IHZhbHVlcyBzZW50IElOVE8gdGhlIHN1YmZsb3cgKGZyb20gaW5wdXRNYXBwZXIvaW5wdXRLZXlzKS4gUHJlc2VudCBvbiBlbnRyeSBldmVudHMuICovXG4gIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBTdWJmbG93IHNoYXJlZCBzdGF0ZSBhdCBleGl0LiBQcmVzZW50IG9uIGV4aXQgZXZlbnRzLiAqL1xuICBvdXRwdXRTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN1YmZsb3dSZWdpc3RlcmVkIChkeW5hbWljIHN1YmZsb3cgYXR0YWNobWVudCkuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50IHtcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllci4gKi9cbiAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBCdWlsZC10aW1lIGRlc2NyaXB0aW9uLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3BlYyBzdHJ1Y3R1cmUgKHdoZW4gYXZhaWxhYmxlIGZyb20gYnVpbGRUaW1lU3RydWN0dXJlKS4gKi9cbiAgc3BlY1N0cnVjdHVyZT86IHVua25vd247XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkxvb3AuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMb29wRXZlbnQge1xuICB0YXJnZXQ6IHN0cmluZztcbiAgaXRlcmF0aW9uOiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25CcmVhay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0JyZWFrRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmcmVlLWZvcm0gcmVhc29uIHN1cHBsaWVkIGJ5IGBzY29wZS4kYnJlYWsocmVhc29uKWAuIEFic2VudFxuICAgKiB3aGVuIHRoZSBzdGFnZSBpbnZva2VkIGAkYnJlYWsoKWAgd2l0aG91dCBhbiBhcmd1bWVudC4gUHJvcGFnYXRlcyB3aGVuXG4gICAqIGEgc3ViZmxvdyBpcyBtb3VudGVkIHdpdGggYHByb3BhZ2F0ZUJyZWFrOiB0cnVlYCDigJQgdGhlIG91dGVyIGJyZWFrXG4gICAqIGV2ZW50IGNhcnJpZXMgdGhlIGlubmVyIGJyZWFrJ3MgcmVhc29uIHRvby5cbiAgICovXG4gIHJlYXNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgdGhpcyBicmVhayBldmVudCB3YXMgcmFpc2VkIG9uIHRoZSBQQVJFTlQgYmVjYXVzZSBhbiBpbm5lclxuICAgKiBzdWJmbG93J3MgYnJlYWsgcHJvcGFnYXRlZCB1cCAodmlhIGBTdWJmbG93TW91bnRPcHRpb25zLnByb3BhZ2F0ZUJyZWFrYCkuXG4gICAqIFRoZSBvcmlnaW5hdGluZyBpbm5lciBicmVhayBmaXJlcyBpdHMgb3duIGBvbkJyZWFrYCBldmVudCBzZXBhcmF0ZWx5XG4gICAqIOKAlCB0aGlzIGZsYWcgbGV0cyByZWNvcmRlcnMgZGlzdGluZ3Vpc2ggdGhlIHR3by5cbiAgICovXG4gIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25FcnJvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0Vycm9yRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBlcnJvciBkZXRhaWxzIOKAlCBwcmVzZXJ2ZXMgZmllbGQtbGV2ZWwgaXNzdWVzLCBlcnJvciBjb2RlcywgZXRjLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIGAnZmxvdydgIG9uIGV2ZXJ5IGVuZ2luZS1kaXNwYXRjaGVkXG4gICAqIGV2ZW50LiBgaXNGbG93RXZlbnQoKWAgY2hlY2tzIGl0IGZpcnN0IChiYWNrbG9nIEIzKTsgb3B0aW9uYWwgc29cbiAgICogY29uc3VtZXItZmFicmljYXRlZCBldmVudHMgKHRlc3RzLCByZXBsYXlzKSByZW1haW4gdHlwZS12YWxpZCBhbmQgZmFsbFxuICAgKiBiYWNrIHRvIHRoZSBsZWdhY3kgcGlwZWxpbmVJZC1hYnNlbmNlIGhldXJpc3RpYy5cbiAgICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblRocm90dGxlZCDigJQgYSBmb3JrIGNoaWxkIGZhaWxlZCBhbmQgdGhlXG4gKiBleGVjdXRvcidzIGB0aHJvdHRsaW5nRXJyb3JDaGVja2VyYCBzYWlkIGl0cyBlcnJvciBpcyB0aHJvdHRsaW5nICg5LjM5LjApLlxuICpcbiAqIFdIWSBhbiBldmVudDogdGhlIGNoZWNrZXIgdXNlZCB0byB3cml0ZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgaW50byB0aGVcbiAqIGNoaWxkJ3MgZnJhbWUgQUZURVIgdGhlIGNoaWxkJ3MgbGFzdCBjb21taXQsIHNvIHRoZSBmbGFnIGxhbmRlZCBub3doZXJlIOKAlFxuICogbm90IGluIHN0YXRlLCBub3QgaW4gdGhlIGxvZy4gVGhyb3R0bGluZyBpcyB0ZWxlbWV0cnksIHNvIGl0IHRyYXZlbHMgdGhlXG4gKiB3YXkgdGVsZW1ldHJ5IGRvZXM6IGFzIGFuIGV2ZW50IGEgcmVjb3JkZXIgY2FuIGNvdW50LCBhbGVydCBvbiwgb3IgYmFjayBvZmZcbiAqIGZyb20uIFRoZSBjaGlsZCdzIGZhaWx1cmUgc3RpbGwgdGFrZXMgaXRzIG9yZGluYXJ5IHBhdGggKHRoZSBmYW4tb3V0XG4gKiByZWNvcmRzIGl0IGFzIGB7IGlzRXJyb3I6IHRydWUgfWApOyB0aGlzIGV2ZW50IG9ubHkgY2xhc3NpZmllcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93VGhyb3R0bGVkRXZlbnQge1xuICAvKiogVGhlIGZvcmsgY2hpbGQgd2hvc2UgZXJyb3Igd2FzIGNsYXNzaWZpZWQgYXMgdGhyb3R0bGluZy4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBvZiB0aGF0IGNoaWxkIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG1lc3NhZ2Ugb2YgdGhlIGNoaWxkJ3MgZXJyb3IuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgY2hpbGQncyBlcnJvci4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICAvKiogVGhlIEZPUksncyBzdGFtcCDigJQgdGhlIGZhbi1vdXQgaXMgd2hlcmUgdGhlIGNsYXNzaWZpY2F0aW9uIGlzIG1hZGUuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkF0dGVtcHQg4oCUIG9uZSBhdHRlbXB0LCBhdCBpdHMgZW5kICgxMC4xKTogYVxuICogc3RhZ2UncyBvd24gdW5kZXIgaXRzIHJldHJ5IHBvbGljeSwgYSBgdGltZW91dE1zYCBvciBhIHJ1biBkZWFkbGluZVxuICogKGByZWNvcmQua2luZCA9PT0gJ3N0YWdlJ2ApLCBvciDigJQgZHVyaW5nIHRoZSBzdGFnZSDigJQgYSBjYWxsIGl0IG1hZGVcbiAqIChgJ2NhbGwnYCwgYHNjb3BlLiRjYWxsYCkgb3IgYW4gb3V0c2lkZSBhdHRlbXB0IGl0IHJlcG9ydGVkIChgJ29ic2VydmVkJ2AsXG4gKiBQMikuIGBzdGFnZU5hbWVgIC8gYHN0YWdlSWRgIC8gYHRyYXZlcnNhbENvbnRleHRgIGFyZSB0aGUgc3RhZ2UncyBpbiBldmVyeVxuICogY2FzZTsgZmlsdGVyIG9uIGByZWNvcmQua2luZGAgdG8gY291bnQgb25lIGtpbmQuXG4gKlxuICogV0hZIHRoaXMgZXZlbnQgZXhpc3RzOiBgb25TdGFnZVJldHJ5YCBzYXlzIFwiYXR0ZW1wdCBOIGZhaWxlZCwgcmV0cnlpbmdcIiBhbmRcbiAqIG5vdGhpbmcgZWxzZSDigJQgbm90IGhvdyBsb25nIGEgdHJ5IHRvb2ssIG5vdCB3aHkgdGhlIHNlcmllcyBzdG9wcGVkLCBhbmRcbiAqIG5vdGhpbmcgYXQgYWxsIHdoZW4gYHJldHJ5T25gIGRlY2xpbmVkLiBFdmVyeSBhdHRlbXB0IGlzIGFuXG4gKiB7QGxpbmsgQXR0ZW1wdFJlY29yZH0gaW5zdGVhZCwgd2hhdGV2ZXIgaXRzIG91dGNvbWUsIHdpdGggdGhlIGRlY2lzaW9uIHRoYXRcbiAqIGZvbGxvd2VkIGl0IGluIHRoZSBzaGFwZSBgZGVjaWRlKClgIHJlY29yZHMg4oCUIHRoZSBzYW1lIHJlY29yZHMgdGhlIHN0YWdlJ3NcbiAqIGV4ZWN1dGlvbi10cmVlIG5vZGUga2VlcHMgKGBTdGFnZVNuYXBzaG90LmF0dGVtcHRzYCkuXG4gKlxuICogRmlyZXMgb25jZSBwZXIgYXR0ZW1wdCwgYmVmb3JlIGBvblN0YWdlUmV0cnlgICh3aGVuIHRoZSBhdHRlbXB0IGlzIHJldHJpZWQpXG4gKiBhbmQgYmVmb3JlIGBvbkVycm9yYCAvIGBvblN0YWdlRXhlY3V0ZWRgIChmb3IgdGhlIGxhc3QpLiBUaGUgcmVjb3JkIGlzXG4gKiBmcm96ZW4gYW5kIHN1cnZpdmVzIGBzdHJ1Y3R1cmVkQ2xvbmVgOyBgc3RydWN0dXJlZEVycm9yYCBpcyB0aGUgc2VydmVkIGVycm9yXG4gKiB3aXRoIGByYXdgLCBhcyBvbiB7QGxpbmsgRmxvd1N0YWdlUmV0cnlFdmVudH0g4oCUIGV4Y2VwdCBmb3IgYW4gb2JzZXJ2ZWRcbiAqIGF0dGVtcHQsIHdob3NlIGVycm9yIHRoZSBsaWJyYXJ5IG5ldmVyIHRocmV3IChgcmF3YCBpcyB1bmRlZmluZWQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBdHRlbXB0RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogVGhlIGF0dGVtcHQ6IHRpbWluZywgb3V0Y29tZSwgY2F0ZWdvcnksIGRlY2lzaW9uLCBhbmQgdGhlIHNlcnZlZCBlcnJvciB3aXRob3V0IGByYXdgLiAqL1xuICByZWNvcmQ6IEF0dGVtcHRSZWNvcmQ7XG4gIC8qKiBUaGUgYXR0ZW1wdCdzIHNlcnZlZCBlcnJvciB3aXRoIGByYXdgIOKAlCBhYnNlbnQgZm9yIGEgc3VjY2VzcyBvciBhIHBhdXNlLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I/OiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdGFnZVJldHJ5IOKAlCBvbmUgZmFpbGVkIGF0dGVtcHQgYXQgYSBzdGFnZVxuICogdGhhdCBjYXJyaWVzIGEgZGVjbGFyZWQge0BsaW5rIGltcG9ydCgnLi4vdHlwZXMuanMnKS5SZXRyeVBvbGljeX0sIGFuZCB3aGljaFxuICogV0lMTCBiZSBhdHRlbXB0ZWQgYWdhaW4uXG4gKlxuICogV0hZIHRoaXMgZXZlbnQgZXhpc3RzOiBhIHJldHJ5IGhhbmQtcm9sbGVkIGluc2lkZSBhIHN0YWdlIGZ1bmN0aW9uIGxlYXZlcyBub1xuICogbWFyayBvbiB0aGUgdHJhY2UgYXQgYWxsLiBUaGlzIGV2ZW50IGlzIHdoYXQgbWFrZXMgYSBkZWNsYXJlZCByZXRyeSBwYXJ0IG9mXG4gKiB0aGUgcmVjb3JkIOKAlCB3aGljaCBhdHRlbXB0IGZhaWxlZCwgd2h5LCBob3cgbG9uZyB0aGUgZW5naW5lIHdhaXRlZCwgYW5kIGhvd1xuICogbWFueSBhdHRlbXB0cyB0aGUgcG9saWN5IGFsbG93cy5cbiAqXG4gKiBGaXJlcyBvbmx5IGZvciBhdHRlbXB0cyBmb2xsb3dlZCBieSBhbm90aGVyIGF0dGVtcHQuIFRoZSBmaW5hbCBmYWlsdXJlIHRha2VzXG4gKiB0aGUgb3JkaW5hcnkgZXJyb3IgcGF0aCAoYG9uRXJyb3JgKSwgc28gdGhlIHR3byBuZXZlciBkb3VibGUtcmVwb3J0IHRoZSBzYW1lXG4gKiBmYWlsdXJlOiBhbiBleGhhdXN0ZWQgYGF0dGVtcHRzOiAzYCBwb2xpY3kgZW1pdHMgMiByZXRyeSBldmVudHMgKyAxIGVycm9yXG4gKiBldmVudDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBlbWl0cyAwIHJldHJ5IGV2ZW50cyArIDEgZXJyb3IgZXZlbnQuIEVhY2hcbiAqIGF0dGVtcHQg4oCUIHJldHJpZWQgb3Igbm90IOKAlCBhbHNvIGZpcmVzIHtAbGluayBGbG93QXR0ZW1wdEV2ZW50fSBmaXJzdCAoMTAuMSksXG4gKiB3aGljaCBpcyB3aGVyZSBhIGRlY2xpbmVkIHN0b3AgaXMgcmVjb3JkZWQgKGByZWFzb246ICdkZWNsaW5lZCdgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhZ2VSZXRyeUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFdoaWNoIGF0dGVtcHQganVzdCBGQUlMRUQsIDEtYmFzZWQuICovXG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGF0dGVtcHRzIHRoZSBwb2xpY3kgYWxsb3dzLCBpbmNsdWRpbmcgdGhlIGZpcnN0LiAqL1xuICBtYXhBdHRlbXB0czogbnVtYmVyO1xuICAvKiogTWlsbGlzZWNvbmRzIHRoZSBlbmdpbmUgd2lsbCB3YWl0IGJlZm9yZSB0aGUgbmV4dCBhdHRlbXB0LiBgMGAgPSBpbW1lZGlhdGUuICovXG4gIGRlbGF5TXM6IG51bWJlcjtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG1lc3NhZ2Ug4oCUIHRoZSBzYW1lIHN0cmluZyBgb25FcnJvcmAgd291bGQgY2FycnkuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCBlbmRlZCB0aGlzIGF0dGVtcHQuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25QYXVzZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1BhdXNlRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogRGF0YSBmcm9tIHRoZSBwYXVzZSBzaWduYWwgKHF1ZXN0aW9uLCByZWFzb24sIG1ldGFkYXRhKS4gKi9cbiAgcGF1c2VEYXRhPzogdW5rbm93bjtcbiAgLyoqIFBhdGggdGhyb3VnaCBzdWJmbG93cyB0byB0aGUgcGF1c2VkIHN0YWdlLiBFbXB0eSBhdCByb290IGxldmVsLiAqL1xuICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW107XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUmVzdW1lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UmVzdW1lRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hldGhlciByZXN1bWUgaW5wdXQgd2FzIHByb3ZpZGVkLiAqL1xuICBoYXNJbnB1dDogYm9vbGVhbjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUnVuU3RhcnQgLyBvblJ1bkVuZC5cbiAqXG4gKiBCcmFja2V0cyB0aGUgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgY2FsbC4gU3ViZmxvd3MgaGF2ZSB0aGVpciBvd25cbiAqIHBhaXIgKGBvblN1YmZsb3dFbnRyeWAgLyBgb25TdWJmbG93RXhpdGApOyB0aGUgcnVuIHBhaXIgaXMgdGhlIE9VVEVSTU9TVFxuICogYm91bmRhcnksIHNvIGNvbnN1bWVycyBidWlsZGluZyBcImV2ZXJ5IHN0ZXAgaGFzIGFuIGluL291dFwiIHZpZXdzIGNhblxuICogY2xvc2UgdGhlIGNoYWluIGF0IHRoZSB0b3AgbGV2ZWwuXG4gKlxuICogICAtIGBvblJ1blN0YXJ0YCBwYXlsb2FkIOKGkiB0aGUgaW5wdXQgcGFzc2VkIHRvIGBydW4oe2lucHV0fSlgXG4gKiAgIC0gYG9uUnVuRW5kYCAgIHBheWxvYWQg4oaSIHRoZSBjaGFydCdzIHJldHVybiB2YWx1ZVxuICpcbiAqIEJvdGggYXJlIHJldGFpbmVkIGF0IHJ1bnRpbWUgYmVmb3JlIGRpc3BhdGNoL2RlZmVycmVkIGNhcHR1cmUgdXNpbmcgdGhlXG4gKiBydW4ncyBSZWRhY3Rpb25SdWxlIChgcmV0YWluQm91bmRhcnlgKTogb3duIHN0cmluZyBrZXlzIGF0IGV2ZXJ5IGRlcHRoIChieVxuICogbmFtZSBvciBkb3R0ZWQgcGF0aCkgYW5kIGV4cGxpY2l0IG5lc3RlZCBmaWVsZHMuIFNjYWxhcnMgcGFzcyB0aHJvdWdoOyBmb3JrXG4gKiBjaGlsZC1JRCBlbnZlbG9wZXMgbmVlZCBleHBsaWNpdCBwYXRocyBzdWNoIGFzIGZpZWxkczogeyBjaGlsZElkOiBbJ3Jlc3VsdC5zZWNyZXQnXSB9LlxuICogVmFsdWVzIGFyZSBub3Qgc2Nhbm5lZC4gTGl2ZSBleGVjdXRpb24gaW5wdXRzIGFuZCByZXR1cm4gdmFsdWVzIHN0YXkgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSdW5FdmVudCB7XG4gIC8qKiBSZXRhaW5lZCBpbnB1dCBhZnRlciB2YWxpZGF0aW9uIChgb25SdW5TdGFydGApIG9yIHJldGFpbmVkIGNoYXJ0IHJldHVyblxuICAgKiAgKGBvblJ1bkVuZGApLCB1bmRlciB0aGUga2V5L3BhdGggY29udHJhY3QgYWJvdmUuIFVuZGVmaW5lZCBpZiBuZWl0aGVyLiAqL1xuICBwYXlsb2FkPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblJ1bkZhaWxlZCDigJQgdGhlIFRFUk1JTkFMIGZhaWx1cmUgYm91bmRhcnlcbiAqIGZvciBhIHRvcC1sZXZlbCBydW4uIE1pcnJvciBvZiBgb25SdW5FbmRgIGZvciB0aGUgZXJyb3IgcGF0aDogaXQgZmlyZXNcbiAqIG9uY2UsIGR1cmluZyB0cmF2ZXJzYWwsIHdoZW4gdGhlIHJ1biB0aHJvd3MgYSBub24tcGF1c2UgZXJyb3IsIGJlZm9yZVxuICogdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzLiBDYXJyaWVzIHRoZSBzdHJ1Y3R1cmVkIGVycm9yIChmaWVsZC1sZXZlbFxuICogaXNzdWVzLCBjb2RlcykgcmF0aGVyIHRoYW4gYSBmbGF0dGVuZWQgc3RyaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSdW5GYWlsZWRFdmVudCB7XG4gIC8qKiBTdHJ1Y3R1cmVkIGRldGFpbHMgb2YgdGhlIGVycm9yIHRoYXQgdGVybWluYXRlZCB0aGUgcnVuLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogTmF0aXZlIHRlcm1pbmFsIG93bmVyc2hpcCwgaW5kZXBlbmRlbnQgb2Ygc2VydmVkIGVycm9yIGRldGFpbHMuIEFic2VudCBvbiBsZWdhY3kgbWFudWFsbHkgZW1pdHRlZCBldmVudHMuICovXG4gIHJlYWRvbmx5IGZhaWx1cmU/OiBUZXJtaW5hbEZhaWx1cmVDb250ZXh0O1xufVxuXG4vKipcbiAqIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuICpcbiAqIE1pcnJvcnMgdGhlIHNjb3BlLWxldmVsIFNjb3BlUmVjb3JkZXIgcGF0dGVybiBmb3IgdGhlIGVuZ2luZSBsYXllci5cbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogUmVjb3JkZXJzIGFyZSBpbnZva2VkIHN5bmNocm9ub3VzbHkgaW4gYXR0YWNobWVudCBvcmRlci5cbiAqIElmIGEgcmVjb3JkZXIgdGhyb3dzLCB0aGUgZXJyb3IgaXMgY2F1Z2h0IGFuZCBzd2FsbG93ZWQ7IGV4ZWN1dGlvbiBjb250aW51ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpY3NSZWNvcmRlcjogRmxvd1JlY29yZGVyID0ge1xuICogICBpZDogJ21ldHJpY3MnLFxuICogICBvbkxvb3A6IChldmVudCkgPT4gcmVjb3JkTWV0cmljKCdsb29wLml0ZXJhdGlvbicsIGV2ZW50Lml0ZXJhdGlvbiksXG4gKiAgIG9uRGVjaXNpb246IChldmVudCkgPT4gcmVjb3JkTWV0cmljKCdkZWNpc2lvbicsIGV2ZW50LmNob3NlbiksXG4gKiB9O1xuICogZXhlY3V0b3IuYXR0YWNoRmxvd1JlY29yZGVyKG1ldHJpY3NSZWNvcmRlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UmVjb3JkZXIge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICBvblN0YWdlRXhlY3V0ZWQ/KGV2ZW50OiBGbG93U3RhZ2VFdmVudCk6IHZvaWQ7XG4gIG9uTmV4dD8oZXZlbnQ6IEZsb3dOZXh0RXZlbnQpOiB2b2lkO1xuICBvbkRlY2lzaW9uPyhldmVudDogRmxvd0RlY2lzaW9uRXZlbnQpOiB2b2lkO1xuICBvbkZvcms/KGV2ZW50OiBGbG93Rm9ya0V2ZW50KTogdm9pZDtcbiAgb25TZWxlY3RlZD8oZXZlbnQ6IEZsb3dTZWxlY3RlZEV2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93RW50cnk/KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93RXhpdD8oZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkO1xuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkPyhldmVudDogRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQpOiB2b2lkO1xuICBvbkxvb3A/KGV2ZW50OiBGbG93TG9vcEV2ZW50KTogdm9pZDtcbiAgb25CcmVhaz8oZXZlbnQ6IEZsb3dCcmVha0V2ZW50KTogdm9pZDtcbiAgb25FcnJvcj8oZXZlbnQ6IEZsb3dFcnJvckV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBhdCB0aGUgZW5kIG9mIEVWRVJZIGF0dGVtcHQg4oCUIGEgc3RhZ2UncyBvd24sIGFuZCB0aGUgY2FsbHMgYW5kXG4gICAqIG9ic2VydmVkIGF0dGVtcHRzIGl0IG1ha2VzIGR1cmluZyB0aGUgc3RhZ2UgKGZpbHRlciBvbiBgcmVjb3JkLmtpbmRgKSDigJRcbiAgICogd2l0aCBpdHMgcmVjb3JkIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCAoMTAuMSkuIFNlZVxuICAgKiB7QGxpbmsgRmxvd0F0dGVtcHRFdmVudH0uXG4gICAqL1xuICBvbkF0dGVtcHQ/KGV2ZW50OiBGbG93QXR0ZW1wdEV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciBmYWlsZWQgYXR0ZW1wdCB0aGF0IFdJTEwgYmUgcmV0cmllZCwgZm9yIHN0YWdlcyBjYXJyeWluZyBhXG4gICAqIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5LiBUaGUgZmluYWwgZmFpbHVyZSBhcnJpdmVzIHZpYSBgb25FcnJvcmAgaW5zdGVhZCxcbiAgICogc28gYSBzdGFnZSBuZXZlciByZXBvcnRzIHRoZSBzYW1lIGZhaWx1cmUgdHdpY2UuIFNlZVxuICAgKiB7QGxpbmsgRmxvd1N0YWdlUmV0cnlFdmVudH0gZm9yIHRoZSBleGFjdCBldmVudCBhcml0aG1ldGljLlxuICAgKi9cbiAgb25TdGFnZVJldHJ5PyhldmVudDogRmxvd1N0YWdlUmV0cnlFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQncyBlcnJvciBpcyBjbGFzc2lmaWVkIGFzIHRocm90dGxpbmcgYnkgdGhlXG4gICAqIGV4ZWN1dG9yJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgIOKAlCBzZWUge0BsaW5rIEZsb3dUaHJvdHRsZWRFdmVudH0uXG4gICAqL1xuICBvblRocm90dGxlZD8oZXZlbnQ6IEZsb3dUaHJvdHRsZWRFdmVudCk6IHZvaWQ7XG4gIG9uUGF1c2U/KGV2ZW50OiBGbG93UGF1c2VFdmVudCk6IHZvaWQ7XG4gIG9uUmVzdW1lPyhldmVudDogRmxvd1Jlc3VtZUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBCRUZPUkUgdHJhdmVyc2FsIGJlZ2lucy5cbiAgICogQ2FycmllcyBgZXZlbnQucGF5bG9hZCA9IHJ1bih7aW5wdXR9KWAuIFN1YmZsb3ctdHJhdmVyc2VycyBkb24ndCBmaXJlIGl0LlxuICAgKi9cbiAgb25SdW5TdGFydD8oZXZlbnQ6IEZsb3dSdW5FdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgQUZURVIgdHJhdmVyc2FsIGNvbXBsZXRlc1xuICAgKiBjbGVhbmx5LiBDYXJyaWVzIGBldmVudC5wYXlsb2FkID0gY2hhcnQncyByZXR1cm4gdmFsdWVgLiBOT1QgZmlyZWQgb25cbiAgICogcGF1c2UgKHRoZSBydW4gZGlkbid0IGVuZCkgb3IgdW5jYXVnaHQgZXJyb3IuXG4gICAqL1xuICBvblJ1bkVuZD8oZXZlbnQ6IEZsb3dSdW5FdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgd2hlbiB0aGUgcnVuIHRocm93cyBhXG4gICAqIG5vbi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcy4gVGhlIFRFUk1JTkFMXG4gICAqIGNvdW50ZXJwYXJ0IHRvIGBvblJ1bkVuZGAg4oCUIGxldHMgYSBtb25pdG9yIGNsb3NlIHRoZSBydW4gYm91bmRhcnkgb25cbiAgICogZmFpbHVyZSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci4gTk9UIGZpcmVkIG9uIHBhdXNlLlxuICAgKi9cbiAgb25SdW5GYWlsZWQ/KGV2ZW50OiBGbG93UnVuRmFpbGVkRXZlbnQpOiB2b2lkO1xuICAvKiogQ2FsbGVkIGJlZm9yZSBlYWNoIHJ1biB0byByZXNldCBwZXItcnVuIHN0YXRlLiBJbXBsZW1lbnQgZm9yIHN0YXRlZnVsIHJlY29yZGVycy4gKi9cbiAgY2xlYXI/KCk6IHZvaWQ7XG4gIC8qKiBPcHRpb25hbDogZXhwb3NlIGNvbGxlY3RlZCBkYXRhIGZvciBpbmNsdXNpb24gaW4gc25hcHNob3RzLiAqL1xuICB0b1NuYXBzaG90PygpOiBpbXBvcnQoJy4uLy4uL3JlY29yZGVyL3NuYXBzaG90LmpzJykuUmVjb3JkZXJCdW5kbGU7XG59XG4iXX0=