@workflow/core 5.0.0-beta.43 → 5.0.0-beta.46

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 (228) hide show
  1. package/dist/attribute-changes.d.ts +3 -5
  2. package/dist/attribute-changes.d.ts.map +1 -1
  3. package/dist/attribute-changes.js +2 -2
  4. package/dist/capabilities.d.ts +6 -6
  5. package/dist/capabilities.js +8 -8
  6. package/dist/capture-stack.d.ts +1 -1
  7. package/dist/capture-stack.js +2 -2
  8. package/dist/class-serialization.d.ts +8 -8
  9. package/dist/class-serialization.js +9 -9
  10. package/dist/classify-error.js +5 -5
  11. package/dist/context-violation-error.d.ts +5 -5
  12. package/dist/context-violation-error.d.ts.map +1 -1
  13. package/dist/context-violation-error.js +5 -5
  14. package/dist/create-hook.d.ts +2 -2
  15. package/dist/create-hook.js +1 -1
  16. package/dist/define-hook.js +2 -2
  17. package/dist/describe-error.d.ts +7 -7
  18. package/dist/describe-error.js +8 -8
  19. package/dist/encryption.d.ts +5 -5
  20. package/dist/encryption.js +7 -7
  21. package/dist/events-consumer.d.ts +20 -8
  22. package/dist/events-consumer.d.ts.map +1 -1
  23. package/dist/events-consumer.js +34 -12
  24. package/dist/flushable-stream.d.ts +4 -4
  25. package/dist/flushable-stream.js +13 -13
  26. package/dist/global.d.ts +4 -2
  27. package/dist/global.d.ts.map +1 -1
  28. package/dist/global.js +8 -5
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/log-format.d.ts +2 -2
  32. package/dist/log-format.js +5 -5
  33. package/dist/logger.js +4 -4
  34. package/dist/private.d.ts +29 -71
  35. package/dist/private.d.ts.map +1 -1
  36. package/dist/private.js +170 -38
  37. package/dist/replay-payload-cache.d.ts +1 -1
  38. package/dist/replay-payload-cache.js +4 -4
  39. package/dist/runtime/compute-instance.d.ts +4 -3
  40. package/dist/runtime/compute-instance.d.ts.map +1 -1
  41. package/dist/runtime/compute-instance.js +5 -4
  42. package/dist/runtime/constants.d.ts +24 -24
  43. package/dist/runtime/constants.d.ts.map +1 -1
  44. package/dist/runtime/constants.js +49 -43
  45. package/dist/runtime/count-step-started-events.d.ts +7 -7
  46. package/dist/runtime/count-step-started-events.js +4 -4
  47. package/dist/runtime/deployment-guard.d.ts +7 -7
  48. package/dist/runtime/deployment-guard.js +8 -8
  49. package/dist/runtime/get-port-lazy.d.ts +2 -2
  50. package/dist/runtime/get-port-lazy.d.ts.map +1 -1
  51. package/dist/runtime/get-port-lazy.js +37 -30
  52. package/dist/runtime/get-world-lazy.d.ts +2 -2
  53. package/dist/runtime/get-world-lazy.js +3 -3
  54. package/dist/runtime/helpers.d.ts +21 -21
  55. package/dist/runtime/helpers.js +27 -27
  56. package/dist/runtime/quickjs-entrypoint.d.ts +21 -10
  57. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
  58. package/dist/runtime/quickjs-entrypoint.js +206 -81
  59. package/dist/runtime/quickjs-runtime.d.ts +31 -15
  60. package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
  61. package/dist/runtime/quickjs-runtime.js +132 -77
  62. package/dist/runtime/quickjs-serde.d.ts +10 -10
  63. package/dist/runtime/quickjs-serde.js +20 -20
  64. package/dist/runtime/replay-budget.d.ts +4 -4
  65. package/dist/runtime/replay-budget.js +5 -5
  66. package/dist/runtime/replay-recovery-reporter.d.ts +1 -1
  67. package/dist/runtime/replay-recovery-reporter.js +2 -2
  68. package/dist/runtime/resume-hook.d.ts +27 -12
  69. package/dist/runtime/resume-hook.d.ts.map +1 -1
  70. package/dist/runtime/resume-hook.js +200 -200
  71. package/dist/runtime/resume-latency.d.ts +40 -30
  72. package/dist/runtime/resume-latency.d.ts.map +1 -1
  73. package/dist/runtime/resume-latency.js +7 -5
  74. package/dist/runtime/run-id-time.d.ts +2 -2
  75. package/dist/runtime/run-id-time.js +5 -5
  76. package/dist/runtime/run.d.ts +22 -5
  77. package/dist/runtime/run.d.ts.map +1 -1
  78. package/dist/runtime/run.js +106 -11
  79. package/dist/runtime/runs.d.ts +4 -4
  80. package/dist/runtime/runs.js +2 -2
  81. package/dist/runtime/start.d.ts +3 -3
  82. package/dist/runtime/start.d.ts.map +1 -1
  83. package/dist/runtime/start.js +29 -25
  84. package/dist/runtime/step-executor.d.ts +14 -14
  85. package/dist/runtime/step-executor.d.ts.map +1 -1
  86. package/dist/runtime/step-executor.js +54 -39
  87. package/dist/runtime/step-latency.d.ts +42 -25
  88. package/dist/runtime/step-latency.d.ts.map +1 -1
  89. package/dist/runtime/step-latency.js +29 -23
  90. package/dist/runtime/step-ownership.d.ts +6 -6
  91. package/dist/runtime/step-ownership.js +8 -8
  92. package/dist/runtime/step-single-flight.d.ts +1 -1
  93. package/dist/runtime/step-single-flight.d.ts.map +1 -1
  94. package/dist/runtime/step-single-flight.js +17 -11
  95. package/dist/runtime/suspension-handler.d.ts +38 -24
  96. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  97. package/dist/runtime/suspension-handler.js +238 -103
  98. package/dist/runtime/unserializable-step.d.ts +34 -0
  99. package/dist/runtime/unserializable-step.d.ts.map +1 -0
  100. package/dist/runtime/unserializable-step.js +52 -0
  101. package/dist/runtime/vm-mode.d.ts +1 -1
  102. package/dist/runtime/vm-mode.js +2 -2
  103. package/dist/runtime/wait-continuation.d.ts +31 -9
  104. package/dist/runtime/wait-continuation.d.ts.map +1 -1
  105. package/dist/runtime/wait-continuation.js +44 -13
  106. package/dist/runtime/wait-until.d.ts +1 -1
  107. package/dist/runtime/wait-until.js +2 -2
  108. package/dist/runtime/world-compatibility.d.ts +20 -9
  109. package/dist/runtime/world-compatibility.d.ts.map +1 -1
  110. package/dist/runtime/world-compatibility.js +24 -13
  111. package/dist/runtime/world-init.d.ts +5 -5
  112. package/dist/runtime/world-init.js +6 -6
  113. package/dist/runtime/world.d.ts.map +1 -1
  114. package/dist/runtime/world.js +13 -3
  115. package/dist/runtime.d.ts.map +1 -1
  116. package/dist/runtime.js +427 -266
  117. package/dist/sealed-box.d.ts +7 -7
  118. package/dist/sealed-box.js +15 -15
  119. package/dist/serialization/client.js +2 -2
  120. package/dist/serialization/codec-devalue-vm.d.ts +1 -1
  121. package/dist/serialization/codec-devalue-vm.js +4 -4
  122. package/dist/serialization/codec-devalue.d.ts +1 -1
  123. package/dist/serialization/codec-devalue.js +2 -2
  124. package/dist/serialization/codec.d.ts +4 -4
  125. package/dist/serialization/codec.js +2 -2
  126. package/dist/serialization/compression.d.ts +12 -11
  127. package/dist/serialization/compression.d.ts.map +1 -1
  128. package/dist/serialization/compression.js +16 -15
  129. package/dist/serialization/encryption.d.ts +7 -7
  130. package/dist/serialization/encryption.d.ts.map +1 -1
  131. package/dist/serialization/encryption.js +8 -8
  132. package/dist/serialization/errors.js +2 -2
  133. package/dist/serialization/format.d.ts +6 -6
  134. package/dist/serialization/format.js +7 -7
  135. package/dist/serialization/hardened.d.ts +23 -22
  136. package/dist/serialization/hardened.d.ts.map +1 -1
  137. package/dist/serialization/hardened.js +47 -32
  138. package/dist/serialization/index.d.ts +1 -1
  139. package/dist/serialization/index.js +2 -2
  140. package/dist/serialization/reducers/class-vm.d.ts +1 -1
  141. package/dist/serialization/reducers/class-vm.js +2 -2
  142. package/dist/serialization/reducers/class.js +2 -2
  143. package/dist/serialization/reducers/common-vm.js +12 -12
  144. package/dist/serialization/reducers/common.js +12 -12
  145. package/dist/serialization/reducers/step-function-vm.d.ts +1 -1
  146. package/dist/serialization/reducers/step-function-vm.js +2 -2
  147. package/dist/serialization/reducers/step-function.js +2 -2
  148. package/dist/serialization/step.js +2 -2
  149. package/dist/serialization/types.d.ts +5 -5
  150. package/dist/serialization/types.js +2 -2
  151. package/dist/serialization/workflow-vm.d.ts +1 -1
  152. package/dist/serialization/workflow-vm.d.ts.map +1 -1
  153. package/dist/serialization/workflow-vm.js +13 -10
  154. package/dist/serialization-format.d.ts +11 -11
  155. package/dist/serialization-format.d.ts.map +1 -1
  156. package/dist/serialization-format.js +30 -24
  157. package/dist/serialization.d.ts +15 -16
  158. package/dist/serialization.d.ts.map +1 -1
  159. package/dist/serialization.js +116 -109
  160. package/dist/set-attributes.js +2 -2
  161. package/dist/source-map.d.ts +1 -1
  162. package/dist/source-map.d.ts.map +1 -1
  163. package/dist/source-map.js +18 -12
  164. package/dist/step/context-storage.d.ts +5 -5
  165. package/dist/step/context-storage.js +1 -1
  166. package/dist/step/writable-stream.d.ts +3 -3
  167. package/dist/step/writable-stream.js +7 -7
  168. package/dist/step.d.ts.map +1 -1
  169. package/dist/step.js +14 -22
  170. package/dist/symbols.d.ts +2 -2
  171. package/dist/symbols.js +3 -3
  172. package/dist/telemetry/semantic-conventions.d.ts +34 -17
  173. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  174. package/dist/telemetry/semantic-conventions.js +32 -17
  175. package/dist/telemetry.d.ts +3 -3
  176. package/dist/telemetry.d.ts.map +1 -1
  177. package/dist/telemetry.js +19 -10
  178. package/dist/test-support/orchestrator-context.d.ts.map +1 -1
  179. package/dist/test-support/orchestrator-context.js +12 -2
  180. package/dist/version.d.ts +1 -1
  181. package/dist/version.js +2 -2
  182. package/dist/vm/index.js +4 -4
  183. package/dist/vm/script-cache.d.ts.map +1 -1
  184. package/dist/vm/script-cache.js +23 -17
  185. package/dist/vm/uint8array-base64.js +1 -1
  186. package/dist/workflow/abort-controller.d.ts +1 -1
  187. package/dist/workflow/abort-controller.js +12 -12
  188. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -1
  189. package/dist/workflow/attribute-dispatcher.js +3 -6
  190. package/dist/workflow/create-hook.js +2 -2
  191. package/dist/workflow/get-workflow-metadata.js +2 -2
  192. package/dist/workflow/hook.d.ts.map +1 -1
  193. package/dist/workflow/hook.js +21 -30
  194. package/dist/workflow/set-attributes.d.ts +1 -1
  195. package/dist/workflow/set-attributes.js +2 -2
  196. package/dist/workflow/sleep.js +2 -2
  197. package/dist/workflow/world-init-stub.d.ts +1 -1
  198. package/dist/workflow/world-init-stub.js +2 -2
  199. package/dist/workflow.d.ts +2 -2
  200. package/dist/workflow.js +26 -13
  201. package/docs/api-reference/create-hook.mdx +15 -15
  202. package/docs/api-reference/create-webhook.mdx +15 -15
  203. package/docs/api-reference/define-hook.mdx +10 -10
  204. package/docs/api-reference/fatal-error.mdx +2 -2
  205. package/docs/api-reference/fetch.mdx +7 -7
  206. package/docs/api-reference/get-step-metadata.mdx +2 -2
  207. package/docs/api-reference/get-workflow-metadata.mdx +3 -3
  208. package/docs/api-reference/get-writable.mdx +7 -7
  209. package/docs/api-reference/index.mdx +1 -1
  210. package/docs/api-reference/retryable-error.mdx +1 -1
  211. package/docs/api-reference/set-attributes.mdx +2 -2
  212. package/docs/api-reference/sleep.mdx +3 -3
  213. package/docs/foundations/cancellation.mdx +31 -31
  214. package/docs/foundations/errors-and-retries.mdx +42 -11
  215. package/docs/foundations/hooks.mdx +35 -35
  216. package/docs/foundations/idempotency.mdx +9 -9
  217. package/docs/foundations/serialization.mdx +21 -22
  218. package/docs/foundations/starting-workflows.mdx +36 -37
  219. package/docs/foundations/streaming.mdx +46 -41
  220. package/docs/foundations/versioning.mdx +3 -3
  221. package/docs/foundations/workflows-and-steps.mdx +9 -9
  222. package/docs/how-it-works/cancellation.mdx +62 -62
  223. package/docs/how-it-works/code-transform.mdx +66 -54
  224. package/docs/how-it-works/encryption.mdx +25 -21
  225. package/docs/how-it-works/event-sourcing.mdx +53 -35
  226. package/docs/how-it-works/framework-integrations.mdx +12 -12
  227. package/docs/how-it-works/understanding-directives.mdx +21 -21
  228. package/package.json +7 -7
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * This module provides standardized telemetry attributes following OpenTelemetry semantic conventions
5
5
  * for instrumenting workflow execution, step processing, and related operations. Each exported function
6
- * creates a properly formatted attribute object that can be used with OpenTelemetry spans.
6
+ * creates a properly formatted attribute object for use with OpenTelemetry spans.
7
7
  *
8
8
  * The semantic conventions are organized into several categories:
9
9
  * - **Workflow attributes**: Track workflow lifecycle, status, and metadata
@@ -11,7 +11,7 @@
11
11
  * - **Queue attributes**: Instrument message queue operations
12
12
  * - **Deployment attributes**: Capture deployment environment information
13
13
  *
14
- * All attribute functions are type-safe and leverage existing backend types to ensure
14
+ * All attribute functions are type-safe and use existing backend types to ensure
15
15
  * consistency between telemetry data and actual system state.
16
16
  *
17
17
  * @example
@@ -113,10 +113,16 @@ export const WorkflowStepsCreated = SemanticConvention('workflow.steps.created')
113
113
  export const WorkflowHooksCreated = SemanticConvention('workflow.hooks.created');
114
114
  /** Number of waits created during workflow execution */
115
115
  export const WorkflowWaitsCreated = SemanticConvention('workflow.waits.created');
116
+ /**
117
+ * Number of steps this suspension finalized as failed because their
118
+ * arguments refused to serialize (step_created placeholder + step_failed
119
+ * carrying the SerializationError; see finalizeUnserializableStep).
120
+ */
121
+ export const WorkflowStepsFailedSerialization = SemanticConvention('workflow.steps.failed_serialization');
116
122
  /**
117
123
  * Number of inline-owned steps this invocation re-executed because it is a
118
124
  * redelivery of their owning queue message (crash recovery for inline
119
- * steps see the inline step ownership changelog, workflow#2780).
125
+ * steps; see the inline step ownership changelog, workflow#2780).
120
126
  */
121
127
  export const WorkflowOwnedRecoverySteps = SemanticConvention('workflow.inline_ownership.owned_recovery_steps');
122
128
  /**
@@ -137,7 +143,7 @@ export const WorkflowRouteEntrypointAgeMs = SemanticConvention('workflow.route.e
137
143
  /** Time spent evaluating the generated route module body before creating the entrypoint */
138
144
  export const WorkflowRouteModuleBodyInitMs = SemanticConvention('workflow.route.module_body_init_ms');
139
145
  /**
140
- * Compute instance handling this route the synthesized `COMPUTE_INSTANCE_ID`.
146
+ * Compute instance handling this route: the synthesized `COMPUTE_INSTANCE_ID`.
141
147
  * Uses OTEL `faas.instance` (execution-environment id, reused across
142
148
  * invocations to the same function):
143
149
  * https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/
@@ -181,11 +187,11 @@ export const StepRsfsMs = SemanticConvention('step.rsfs_ms');
181
187
  /**
182
188
  * Client-measured synchronous workflow-function replay duration in
183
189
  * milliseconds, excluding awaited network I/O, of only the FINAL replay pass
184
- * within the rsfs window the pass that reached and scheduled the first
190
+ * within the rsfs window: the pass that reached and scheduled the first
185
191
  * step. Not accumulated across earlier pre-first-step passes (e.g. a
186
192
  * workflow-body `setAttributes()` detour replays more than once, and a
187
193
  * redelivery omits earlier invocations' work entirely), so this must not be
188
- * read as "the replay portion of rsfs" step.rsfs_ms covers the whole
194
+ * read as "the replay portion of rsfs"; step.rsfs_ms covers the whole
189
195
  * window. Only present alongside step.rsfs_ms and only for the run's first
190
196
  * step (see runtime/step-latency.ts).
191
197
  */
@@ -248,18 +254,23 @@ export const HookFound = SemanticConvention('workflow.hook.found');
248
254
  * `hook_received` write failed transiently but the queue dispatch succeeded, so
249
255
  * the resume is recovered via the consumer's re-ensure. Corresponds to
250
256
  * `ResumedHook.resilientResume === true`.
257
+ *
258
+ * No longer emitted: the lazy path writes no event to fail, and the sequential
259
+ * path has no queue-delivered payload to recover from. Retained so dashboards
260
+ * and queries built on the attribute keep resolving while older producers are
261
+ * still deployed.
251
262
  */
252
263
  export const HookResilientResume = SemanticConvention('workflow.hook.resilient_resume');
253
264
  /**
254
265
  * Consumer-side signal (on the workflow execution span) that this replay
255
266
  * materialized the `hook_received` event from the queue message's `hookInput`
256
- * because the producer's direct write had not landed the completion of the
257
- * recovery path {@link HookResilientResume} began.
267
+ * because no committed event was found, which completes the recovery path
268
+ * {@link HookResilientResume} began.
258
269
  *
259
270
  * Legacy / non-atomic re-ensure signal only. Atomic lazy resumes
260
271
  * (resumeId + digest) go through the hoisted preload write instead, whose
261
272
  * response cannot tell whether the producer or the consumer won the
262
- * `(runId, resumeId)` claim so this attribute is deliberately NOT emitted
273
+ * `(runId, resumeId)` claim, so this attribute is deliberately NOT emitted
263
274
  * for them (emitting `true` unconditionally would count every producer-won
264
275
  * resume as a recovery). The producer-begin ({@link HookResilientResume}) /
265
276
  * consumer-materialized pairing is therefore no longer complete for atomic
@@ -270,10 +281,10 @@ export const HookResilientResumeMaterialized = SemanticConvention('workflow.hook
270
281
  * Consumer-side signal (on the workflow execution span) of how a lazy hook
271
282
  * resume initialized its replay state:
272
283
  *
273
- * - `hook_received_stream` the hoisted `hook_received` write returned a
284
+ * - `hook_received_stream`: the hoisted `hook_received` write returned a
274
285
  * usable replay preload (run + complete event log), so the invocation
275
286
  * skipped both the `run_started` write and the initial `events.list`.
276
- * - `hook_received_fallback` the hoisted write succeeded but returned no
287
+ * - `hook_received_fallback`: the hoisted write succeeded but returned no
277
288
  * usable preload (a CBOR response from an older server, a World that
278
289
  * ignored the opt-in, a bounded `hasMore` page, or a preload that failed
279
290
  * validation); the invocation fell back to the `run_started` setup without
@@ -284,8 +295,8 @@ export const HookResilientResumeMaterialized = SemanticConvention('workflow.hook
284
295
  *
285
296
  * This is a latency/setup-path signal: it says which requests initialized
286
297
  * the invocation, NOT that this consumer created the `hook_received` event
287
- * (the hoisted write may equally have converged on the producer's — claim
288
- * ownership is not observable client-side; cf.
298
+ * (the hoisted write may equally have converged on the producer's, since
299
+ * claim ownership is not observable client-side; cf.
289
300
  * {@link HookResilientResumeMaterialized}).
290
301
  */
291
302
  export const HookResumeSetupSource = SemanticConvention('workflow.resume_setup_source');
@@ -299,7 +310,7 @@ export const StepResilientDispatchRecovered = SemanticConvention('workflow.step.
299
310
  /**
300
311
  * Consumer-side signal (on the workflow execution span) that this delivery
301
312
  * materialized the `step_created` event from the queue message's `stepInput`
302
- * because the producer's direct write had not landed the completion of the
313
+ * because the producer's direct write had not landed, which completes the
303
314
  * recovery path {@link StepResilientDispatchRecovered} began.
304
315
  */
305
316
  export const StepResilientDispatchMaterialized = SemanticConvention('workflow.step.resilient_dispatch_materialized');
@@ -309,7 +320,7 @@ export const StepResilientDispatchMaterialized = SemanticConvention('workflow.st
309
320
  // hook resume, and only there: one resumption produces exactly one sample, so
310
321
  // a later step in the same invocation, a retry, or a redelivery never
311
322
  // re-reports it. The phases are non-overlapping and sum exactly to
312
- // {@link ResumeTotalMs} see runtime/resume-latency.ts for the boundary
323
+ // {@link ResumeTotalMs}; see runtime/resume-latency.ts for the boundary
313
324
  // definitions and the emission gate.
314
325
  //
315
326
  // Deliberately carries no `resumeId`, run ID, or token: the metric is meant to
@@ -343,7 +354,11 @@ export const ResumeStepClaimMs = SemanticConvention('workflow.resume.phase.step_
343
354
  export const ResumeStepPrepareMs = SemanticConvention('workflow.resume.phase.step_prepare_ms');
344
355
  /** What triggered the measured resumption. */
345
356
  export const ResumeTrigger = SemanticConvention('workflow.resume.trigger');
346
- /** Which `resumeHook()` dispatch path produced this resume. */
357
+ /**
358
+ * Which `resumeHook()` dispatch path produced this resume. `parallel` only
359
+ * appears for messages published by an older producer, which wrote
360
+ * `hook_received` itself in parallel with the publish.
361
+ */
347
362
  export const ResumeStrategy = SemanticConvention('workflow.resume.strategy');
348
363
  /**
349
364
  * How the consuming invocation initialized replay state. Distinct from the
@@ -436,4 +451,4 @@ export const RpcMethod = SemanticConvention('rpc.method');
436
451
  export const ErrorRetryable = SemanticConvention('error.retryable');
437
452
  /** Error category (workflow-specific: fatal, retryable, transient) */
438
453
  export const ErrorCategory = SemanticConvention('error.category');
439
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtC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Q0FBQyxNQUFNLGdDQUFnQyxHQUFHLGtCQUFrQixDQUNoRSw4Q0FBOEMsQ0FDL0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGtCQUFrQixDQUM3RCwyQ0FBMkMsQ0FDNUMsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQVMsYUFBYSxDQUFDLENBQUM7QUFFcEUsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxZQUFZLENBQUMsQ0FBQztBQUVsRSxxREFBcUQ7QUFDckQsZ0ZBQWdGO0FBRWhGLHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQVUsaUJBQWlCLENBQUMsQ0FBQztBQUU3RSxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUU3QyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zIGZvciBWZXJjZWwgV29ya2Zsb3cgdGVsZW1ldHJ5LlxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHN0YW5kYXJkaXplZCB0ZWxlbWV0cnkgYXR0cmlidXRlcyBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogZm9yIGluc3RydW1lbnRpbmcgd29ya2Zsb3cgZXhlY3V0aW9uLCBzdGVwIHByb2Nlc3NpbmcsIGFuZCByZWxhdGVkIG9wZXJhdGlvbnMuIEVhY2ggZXhwb3J0ZWQgZnVuY3Rpb25cbiAqIGNyZWF0ZXMgYSBwcm9wZXJseSBmb3JtYXR0ZWQgYXR0cmlidXRlIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHdpdGggT3BlblRlbGVtZXRyeSBzcGFucy5cbiAqXG4gKiBUaGUgc2VtYW50aWMgY29udmVudGlvbnMgYXJlIG9yZ2FuaXplZCBpbnRvIHNldmVyYWwgY2F0ZWdvcmllczpcbiAqIC0gKipXb3JrZmxvdyBhdHRyaWJ1dGVzKio6IFRyYWNrIHdvcmtmbG93IGxpZmVjeWNsZSwgc3RhdHVzLCBhbmQgbWV0YWRhdGFcbiAqIC0gKipTdGVwIGF0dHJpYnV0ZXMqKjogTW9uaXRvciBpbmRpdmlkdWFsIHN0ZXAgZXhlY3V0aW9uLCByZXRyaWVzLCBhbmQgcmVzdWx0c1xuICogLSAqKlF1ZXVlIGF0dHJpYnV0ZXMqKjogSW5zdHJ1bWVudCBtZXNzYWdlIHF1ZXVlIG9wZXJhdGlvbnNcbiAqIC0gKipEZXBsb3ltZW50IGF0dHJpYnV0ZXMqKjogQ2FwdHVyZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGluZm9ybWF0aW9uXG4gKlxuICogQWxsIGF0dHJpYnV0ZSBmdW5jdGlvbnMgYXJlIHR5cGUtc2FmZSBhbmQgbGV2ZXJhZ2UgZXhpc3RpbmcgYmFja2VuZCB0eXBlcyB0byBlbnN1cmVcbiAqIGNvbnNpc3RlbmN5IGJldHdlZW4gdGVsZW1ldHJ5IGRhdGEgYW5kIGFjdHVhbCBzeXN0ZW0gc3RhdGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCAqIGFzIEF0dHJpYnV0ZSBmcm9tICcuL3RlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9ucy5qcyc7XG4gKlxuICogLy8gU2V0IHdvcmtmbG93IGF0dHJpYnV0ZXMgb24gYSBzcGFuXG4gKiBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICogICAuLi5BdHRyaWJ1dGUuV29ya2Zsb3dOYW1lKCdteS13b3JrZmxvdycpLFxuICogICAuLi5BdHRyaWJ1dGUuV29ya2Zsb3dPcGVyYXRpb24oJ3N0YXJ0JyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd1J1blN0YXR1cygncnVubmluZycpLFxuICogfSk7XG4gKlxuICogLy8gU2V0IHN0ZXAgYXR0cmlidXRlc1xuICogc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAqICAgLi4uQXR0cmlidXRlLlN0ZXBOYW1lKCdwcm9jZXNzLWRhdGEnKSxcbiAqICAgLi4uQXR0cmlidXRlLlN0ZXBTdGF0dXMoJ2NvbXBsZXRlZCcpLFxuICogICAuLi5BdHRyaWJ1dGUuU3RlcEF0dGVtcHQoMSksXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvfSBPcGVuVGVsZW1ldHJ5IFNlbWFudGljIENvbnZlbnRpb25zXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2VJZCwgU3RlcCwgV29ya2Zsb3dSdW4gfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZW1hbnRpYyBjb252ZW50aW9uIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBhdHRyaWJ1dGUgb2JqZWN0LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgYXR0cmlidXRlIG5hbWUgZm9sbG93aW5nIE9wZW5UZWxlbWV0cnkgc2VtYW50aWMgY29udmVudGlvbnNcbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHZhbHVlIGFuZCByZXR1cm5zIGFuIGF0dHJpYnV0ZSBvYmplY3RcbiAqL1xuZnVuY3Rpb24gU2VtYW50aWNDb252ZW50aW9uPFQ+KC4uLm5hbWVzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gKHZhbHVlOiBUKSA9PlxuICAgIE9iamVjdC5mcm9tRW50cmllcyhuYW1lcy5tYXAoKG5hbWUpID0+IFtuYW1lLCB2YWx1ZV0gYXMgY29uc3QpKTtcbn1cblxuLy8gV29ya2Zsb3cgYXR0cmlidXRlc1xuXG4vKiogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93IGJlaW5nIGV4ZWN1dGVkICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93Lm5hbWUnKTtcblxuLyoqIFRoZSBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkIG9uIHRoZSB3b3JrZmxvdyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93T3BlcmF0aW9uID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnc3RhcnQnIHwgJ2V4ZWN1dGUnIHwgJ2V4ZWN1dGVfdjInIHwgJ3J1bidcbj4oJ3dvcmtmbG93Lm9wZXJhdGlvbicpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgc3BlY2lmaWMgd29ya2Zsb3cgcnVuIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5JZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ydW4uaWQnKTtcblxuLyoqIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSB3b3JrZmxvdyBydW4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1J1blN0YXR1cyA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgV29ya2Zsb3dSdW5bJ3N0YXR1cyddIHwgJ3dvcmtmbG93X3N1c3BlbmRlZCdcbj4oJ3dvcmtmbG93LnJ1bi5zdGF0dXMnKTtcblxuLyoqIFRpbWVzdGFtcCB3aGVuIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3RhcnRlZCAoVW5peCB0aW1lc3RhbXApICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdGFydGVkQXQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN0YXJ0ZWRfYXQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIGV2ZW50cyBwcm9jZXNzZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXZlbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5jb3VudCdcbik7XG5cbi8qKiBXaGV0aGVyIHdvcmtmbG93IGV4ZWN1dGlvbiBzdGFydHMgd2l0aCByZXBsYXkgb3IgcmVzdW1lcyBhIHJldGFpbmVkIFZNICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFeGVjdXRpb25Nb2RlID0gU2VtYW50aWNDb252ZW50aW9uPCdyZXBsYXknIHwgJ3JldGFpbmVkJz4oXG4gICd3b3JrZmxvdy5leGVjdXRpb24ubW9kZSdcbik7XG5cbi8qKlxuICogRXZlbnRzIHRoZSByZXBsYXkgd2Fsa2VkIHBhc3QgdGhhdCBubyBjb25zdW1lciBjbGFpbWVkLCBzdGlsbCBoZWxkIHdoZW4gdGhlXG4gKiByZXBsYXkgc3RvcHBlZC5cbiAqXG4gKiBBIG5vbi16ZXJvIGNvdW50IG9uIGEgc3VzcGVuc2lvbiBpcyBvcmRpbmFyeTogYW4gb3V0LW9mLWJhbmQgZGVsaXZlcnkgdGhhdFxuICogbGFuZGVkIGFoZWFkIG9mIHRoZSBjb2RlIHRoYXQgcmVhZHMgaXQgd2FpdHMgZm9yIHRoZSByZXBsYXkgdGhhdCBnZXRzIHRoZXJlLlxuICogRnJvbSBpbnNpZGUgb25lIHJlcGxheSB0aGF0IGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZXZlbnQgbm8gcmVwbGF5IHdpbGxcbiAqIGV2ZXIgY2xhaW0sIGJlY2F1c2UgdGhlIHR3byBkaWZmZXIgb25seSBpbiB3aGF0IHRoZSBuZXh0IHJlcGxheSBkb2VzLiBTbyB0aGVcbiAqIGNvdW50IGdvZXMgb24gdGhlIHNwYW4gaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBydW4sIGFuZCB0aGUgY2FzZSB3b3J0aCBhY3RpbmdcbiAqIG9uIGlzIGEgcXVlcnkgYWNyb3NzIGEgcnVuJ3Mgc3BhbnM6IHRoZSBzYW1lXG4gKiB7QGxpbmsgV29ya2Zsb3dQYXJrZWRFdmVudElkfSBoZWxkIG9uIHN1c3BlbnNpb24gYWZ0ZXIgc3VzcGVuc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UGFya2VkRXZlbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYXJrZWQuY291bnQnXG4pO1xuXG4vKiogT2xkZXN0IGV2ZW50IHN0aWxsIGhlbGQgdW5jbGFpbWVkIHdoZW4gdGhlIHJlcGxheSBzdG9wcGVkLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UGFya2VkRXZlbnRJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhcmtlZC5ldmVudF9pZCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSBvbGRlc3QgZXZlbnQgc3RpbGwgaGVsZCB1bmNsYWltZWQgd2hlbiB0aGUgcmVwbGF5IHN0b3BwZWQuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dQYXJrZWRFdmVudFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYXJrZWQuZXZlbnRfdHlwZSdcbik7XG5cbi8qKiBOdW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgd29ya2Zsb3cgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0FyZ3VtZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5hcmd1bWVudHMuY291bnQnXG4pO1xuXG4vKiogVHlwZSBvZiB0aGUgd29ya2Zsb3cgcmVzdWx0ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSZXN1bHRUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5yZXN1bHQudHlwZSdcbik7XG5cbi8qKiBXaGV0aGVyIHRyYWNlIGNvbnRleHQgd2FzIHByb3BhZ2F0ZWQgdG8gdGhpcyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1RyYWNlUHJvcGFnYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnRyYWNlLnByb3BhZ2F0ZWQnXG4pO1xuXG4vLyBRdWlja0pTIFZNIGVuZ2luZSBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgVk0gZW5naW5lIGV4ZWN1dGluZyB0aGUgd29ya2Zsb3cgZnVuY3Rpb24gZm9yIHRoaXMgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Vm0gPSBTZW1hbnRpY0NvbnZlbnRpb248J25vZGUnIHwgJ3F1aWNranMnPignd29ya2Zsb3cudm0nKTtcblxuLyoqIE91dGNvbWUgb2YgYSBRdWlja0pTIFZNIHdvcmtmbG93IGludm9jYXRpb24gKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTT3V0Y29tZSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2NvbXBsZXRlZCcgfCAnc3VzcGVuZGVkJyB8ICdmYWlsZWQnXG4+KCd3b3JrZmxvdy52bS5vdXRjb21lJyk7XG5cbi8qKiBXaGV0aGVyIHByZWxvYWRlZCBldmVudHMgZnJvbSBgZXZlbnRzLmNyZWF0ZSgncnVuX3N0YXJ0ZWQnKWAgd2VyZSB1c2VkICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0V2ZW50c1ByZWxvYWRlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnZtLmV2ZW50cy5wcmVsb2FkZWQnXG4pO1xuXG4vKiogVG90YWwgbnVtYmVyIG9mIGV2ZW50cyBmZXRjaGVkIGZyb20gdGhlIHdvcmxkIGZvciB0aGlzIGludm9jYXRpb24gKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTRXZlbnRzRmV0Y2hlZENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMuZmV0Y2hlZF9jb3VudCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgcGFnZXMgcmVxdWlyZWQgdG8gZmV0Y2ggYWxsIGV2ZW50cyAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNFdmVudHNGZXRjaGVkUGFnZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnZtLmV2ZW50cy5mZXRjaGVkX3BhZ2VzJ1xuKTtcblxuLyoqIE51bWJlciBvZiBwZW5kaW5nIFZNIG9wZXJhdGlvbnMgY2FwdHVyZWQgYXQgc3VzcGVuc2lvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNQZW5kaW5nT3BzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnZtLnBlbmRpbmdfb3BzX2NvdW50J1xuKTtcblxuLyoqIE51bWJlciBvZiBzdGVwcyBleGVjdXRlZCBpbmxpbmUgKGxpdmUtVk0gY29udGludWF0aW9uKSB0aGlzIGludm9jYXRpb24gKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTSW5saW5lU3RlcHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3F1aWNranMuaW5saW5lX3N0ZXBzJ1xuKTtcblxuLyoqIEFjdGl2ZSB0cmFjZS1jb3JyZWxhdGlvbiBtb2RlIGZvciB0aGlzIGludm9jYXRpb24gKGxpbmtlZCBvciBjb250aW51b3VzKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHJhY2VNb2RlID0gU2VtYW50aWNDb252ZW50aW9uPCdsaW5rZWQnIHwgJ2NvbnRpbnVvdXMnPihcbiAgJ3dvcmtmbG93LnRyYWNlLm1vZGUnXG4pO1xuXG4vKiogV2hldGhlciB0aGlzIHdvcmtmbG93IGludm9jYXRpb24gaXMgdXNpbmcgdGhlIHR1cmJvIGZpcnN0LWRlbGl2ZXJ5IHBhdGggKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1R1cmJvID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCd3b3JrZmxvdy50dXJibycpO1xuXG4vKiogTmFtZSBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgd29ya2Zsb3cgZmFpbHVyZSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5uYW1lJ1xuKTtcblxuLyoqIEVycm9yIG1lc3NhZ2Ugd2hlbiB3b3JrZmxvdyBmYWlscyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JNZXNzYWdlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5tZXNzYWdlJ1xuKTtcblxuLyoqIEVycm9yIGNsYXNzaWZpY2F0aW9uIGNvZGUgKFVTRVJfRVJST1IsIFJVTlRJTUVfRVJST1IsIGV0Yy4pICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFcnJvckNvZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmVycm9yLmNvZGUnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHN0ZXBzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3RlcHNDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdGVwcy5jcmVhdGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiBob29rcyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0hvb2tzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuaG9va3MuY3JlYXRlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygd2FpdHMgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dXYWl0c0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LndhaXRzLmNyZWF0ZWQnXG4pO1xuXG4vKipcbiAqIE51bWJlciBvZiBpbmxpbmUtb3duZWQgc3RlcHMgdGhpcyBpbnZvY2F0aW9uIHJlLWV4ZWN1dGVkIGJlY2F1c2UgaXQgaXMgYVxuICogcmVkZWxpdmVyeSBvZiB0aGVpciBvd25pbmcgcXVldWUgbWVzc2FnZSAoY3Jhc2ggcmVjb3ZlcnkgZm9yIGlubGluZVxuICogc3RlcHMg4oCUIHNlZSB0aGUgaW5saW5lIHN0ZXAgb3duZXJzaGlwIGNoYW5nZWxvZywgd29ya2Zsb3cjMjc4MCkuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd093bmVkUmVjb3ZlcnlTdGVwcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuaW5saW5lX293bmVyc2hpcC5vd25lZF9yZWNvdmVyeV9zdGVwcydcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIHBlbmRpbmcgc3RlcHMgZm9yIHdoaWNoIHRoaXMgcmVwbGF5IHN1cHByZXNzZWQgdGhlIGltbWVkaWF0ZVxuICogcmVxdWV1ZSAoYW5vdGhlciBpbnZvY2F0aW9uIGlubGluZS1vd25zIHRoZW0gdW5kZXIgYSBsaXZlIGxlYXNlKSBhbmRcbiAqIGVuc3VyZWQgYSBkZWxheWVkIGJhY2tzdG9wIHdha2UgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QmFja3N0b3BXYWtlc0FybWVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5pbmxpbmVfb3duZXJzaGlwLmJhY2tzdG9wX3dha2VzX2FybWVkJ1xuKTtcblxuLy8gUm91dGUgYXR0cmlidXRlc1xuXG4vKiogVGhlIHdvcmtmbG93IHJ1bnRpbWUgcm91dGUgYmVpbmcgaGFuZGxlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPCdmbG93Jz4oXG4gICd3b3JrZmxvdy5yb3V0ZS50eXBlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyByb3V0ZSBpbnZvY2F0aW9uIHJldXNlZCBhbiBhbHJlYWR5LWNyZWF0ZWQgcmVxdWVzdCBoYW5kbGVyICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUhhbmRsZXJDYWNoZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5oYW5kbGVyX2NhY2hlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgdGltZXMgdGhpcyBpbi1tZW1vcnkgcm91dGUgaGFuZGxlciBoYXMgYmVlbiBpbnZva2VkICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUludm9jYXRpb25Db3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUuaW52b2NhdGlvbl9jb3VudCdcbik7XG5cbi8qKiBUaW1lIHNpbmNlIHRoaXMgcm91dGUgZW50cnlwb2ludCB3YXMgY29uc3RydWN0ZWQsIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVFbnRyeXBvaW50QWdlTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLmVudHJ5cG9pbnRfYWdlX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgZXZhbHVhdGluZyB0aGUgZ2VuZXJhdGVkIHJvdXRlIG1vZHVsZSBib2R5IGJlZm9yZSBjcmVhdGluZyB0aGUgZW50cnlwb2ludCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVNb2R1bGVCb2R5SW5pdE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5tb2R1bGVfYm9keV9pbml0X21zJ1xuKTtcblxuLyoqXG4gKiBDb21wdXRlIGluc3RhbmNlIGhhbmRsaW5nIHRoaXMgcm91dGUg4oCUIHRoZSBzeW50aGVzaXplZCBgQ09NUFVURV9JTlNUQU5DRV9JRGAuXG4gKiBVc2VzIE9URUwgYGZhYXMuaW5zdGFuY2VgIChleGVjdXRpb24tZW52aXJvbm1lbnQgaWQsIHJldXNlZCBhY3Jvc3NcbiAqIGludm9jYXRpb25zIHRvIHRoZSBzYW1lIGZ1bmN0aW9uKTpcbiAqIGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvYXR0cmlidXRlcy1yZWdpc3RyeS9mYWFzL1xuICovXG5leHBvcnQgY29uc3QgRmFhc0luc3RhbmNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2ZhYXMuaW5zdGFuY2UnKTtcblxuLy8gU3RlcCBhdHRyaWJ1dGVzXG5cbi8qKiBOYW1lIG9mIHRoZSBzdGVwIGZ1bmN0aW9uIGJlaW5nIGV4ZWN1dGVkICovXG5leHBvcnQgY29uc3QgU3RlcE5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5uYW1lJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHN0ZXAgaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBTdGVwSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5pZCcpO1xuXG4vKiogQ3VycmVudCBhdHRlbXB0IG51bWJlciBmb3Igc3RlcCBleGVjdXRpb24gKHN0YXJ0cyBhdCAxKSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBBdHRlbXB0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAuYXR0ZW1wdCcpO1xuXG4vKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIHN0ZXAgKi9cbmV4cG9ydCBjb25zdCBTdGVwU3RhdHVzID0gU2VtYW50aWNDb252ZW50aW9uPFN0ZXBbJ3N0YXR1cyddPignc3RlcC5zdGF0dXMnKTtcblxuLyoqIE1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgYWxsb3dlZCBmb3IgdGhpcyBzdGVwICovXG5leHBvcnQgY29uc3QgU3RlcE1heFJldHJpZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5tYXhfcmV0cmllcycpO1xuXG4vKiogV2hldGhlciB0cmFjZSBjb250ZXh0IHdhcyBwcm9wYWdhdGVkIHRvIHRoaXMgc3RlcCBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwVHJhY2VQcm9wYWdhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC50cmFjZS5wcm9wYWdhdGVkJ1xuKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgdGltZS10by1maXJzdC1zdGVwIGxhdGVuY3kgaW4gbWlsbGlzZWNvbmRzOiBydW4gY3JlYXRpb24g4oaSXG4gKiB0aGlzIHN0ZXAncyBib2R5IGJlZ2lubmluZyB0byBleGVjdXRlLCBtaW51cyBwcmUtc3RlcCBob29rLWNyZWF0aW9uIHRpbWUuXG4gKiBPbmx5IHByZXNlbnQgb24gdGhlIHJ1bidzIGZpcnN0IHN0ZXAgZXhlY3V0aW9uIHdoZW4gaXQgcXVhbGlmaWVkIGZvclxuICogbWVhc3VyZW1lbnQgKHNlZSBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwVHRmc01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAudHRmc19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBzdGVwLXRvLXN0ZXAgb3ZlcmhlYWQgaW4gbWlsbGlzZWNvbmRzOiB0aGUgcHJldmlvdXMgc3RlcCdzXG4gKiB0ZXJtaW5hbCBldmVudCDihpIgdGhpcyBzdGVwJ3MgYm9keSBiZWdpbm5pbmcgdG8gZXhlY3V0ZS4gT25seSBwcmVzZW50IHdoZW5cbiAqIHRoZSB0d28gc3RlcHMgcmFuIGJhY2stdG8tYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTdHNvTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5zdHNvX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHJ1bl9zdGFydGVkLXRvLWZpcnN0LXN0ZXAgbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHM6IHRoZVxuICogYHJ1bl9zdGFydGVkYCByZXNwb25zZSBsYW5kaW5nIChvciwgdW5kZXIgdHVyYm8sIHRoZSBsb2NhbCBydW4gc3ludGhlc2lzXG4gKiBpbnN0YW50KSDihpIgdGhpcyBzdGVwJ3Mgc3RhcnQgUE9TVCBiZWluZyBpc3N1ZWQuIEEgc3ViLXdpbmRvdyBvZiB0dGZzIHRoYXRcbiAqIGlzb2xhdGVzIHJlcGxheSBvdmVyaGVhZCBmcm9tIHRoZSBydW4tY3JlYXRpb24gcXVldWUgaG9wLiBPbmx5IHByZXNlbnQgb25cbiAqIHRoZSBydW4ncyBmaXJzdCBzdGVwIGV4ZWN1dGlvbiB3aGVuIGl0IHF1YWxpZmllZCBmb3IgbWVhc3VyZW1lbnQgKHNlZVxuICogcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFJzZnNNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnJzZnNfbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgc3luY2hyb25vdXMgd29ya2Zsb3ctZnVuY3Rpb24gcmVwbGF5IGR1cmF0aW9uIGluXG4gKiBtaWxsaXNlY29uZHMsIGV4Y2x1ZGluZyBhd2FpdGVkIG5ldHdvcmsgSS9PLCBvZiBvbmx5IHRoZSBGSU5BTCByZXBsYXkgcGFzc1xuICogd2l0aGluIHRoZSByc2ZzIHdpbmRvdyDigJQgdGhlIHBhc3MgdGhhdCByZWFjaGVkIGFuZCBzY2hlZHVsZWQgdGhlIGZpcnN0XG4gKiBzdGVwLiBOb3QgYWNjdW11bGF0ZWQgYWNyb3NzIGVhcmxpZXIgcHJlLWZpcnN0LXN0ZXAgcGFzc2VzIChlLmcuIGFcbiAqIHdvcmtmbG93LWJvZHkgYHNldEF0dHJpYnV0ZXMoKWAgZGV0b3VyIHJlcGxheXMgbW9yZSB0aGFuIG9uY2UsIGFuZCBhXG4gKiByZWRlbGl2ZXJ5IG9taXRzIGVhcmxpZXIgaW52b2NhdGlvbnMnIHdvcmsgZW50aXJlbHkpLCBzbyB0aGlzIG11c3Qgbm90IGJlXG4gKiByZWFkIGFzIFwidGhlIHJlcGxheSBwb3J0aW9uIG9mIHJzZnNcIiDigJQgc3RlcC5yc2ZzX21zIGNvdmVycyB0aGUgd2hvbGVcbiAqIHdpbmRvdy4gT25seSBwcmVzZW50IGFsb25nc2lkZSBzdGVwLnJzZnNfbXMgYW5kIG9ubHkgZm9yIHRoZSBydW4ncyBmaXJzdFxuICogc3RlcCAoc2VlIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBGaW5hbFNjaGVkdWxpbmdSZXBsYXlNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5maW5hbF9zY2hlZHVsaW5nX3JlcGxheV9tcydcbik7XG5cbi8qKlxuICogUnVudGltZSBzdGFydHVwLWxhdGVuY3kgb3B0aW1pemF0aW9ucyBhY3RpdmUgZm9yIHRoZSB0dGZzL3N0c28gbWVhc3VyZW1lbnRcbiAqIChlLmcuICd0dXJibycsICdsYXp5U3RlcFN0YXJ0JywgJ29wdGltaXN0aWNTdGFydCcpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcExhdGVuY3lPcHRpbWl6YXRpb25zID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZ1tdPihcbiAgJ3N0ZXAubGF0ZW5jeV9vcHRpbWl6YXRpb25zJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgd2FzIHNraXBwZWQgZHVyaW5nIGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTa2lwcGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCdzdGVwLnNraXBwZWQnKTtcblxuLyoqIFJlYXNvbiB3aHkgdGhlIHN0ZXAgd2FzIHNraXBwZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwU2tpcFJlYXNvbiA9XG4gIFNlbWFudGljQ29udmVudGlvbjxTdGVwWydzdGF0dXMnXT4oJ3N0ZXAuc2tpcF9yZWFzb24nKTtcblxuLyoqIE51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBzdGVwIGZ1bmN0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcEFyZ3VtZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLmFyZ3VtZW50cy5jb3VudCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSBzdGVwIHJlc3VsdCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXN1bHRUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAucmVzdWx0LnR5cGUnKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHN0ZXAgZmFpbHVyZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBFcnJvck5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5lcnJvci5uYW1lJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gc3RlcCBmYWlscyAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBFcnJvck1lc3NhZ2UgPVxuICBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5lcnJvci5tZXNzYWdlJyk7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIGZhaWxlZCB3aXRoIGEgZmF0YWwgZXJyb3IgKG5vIHJldHJpZXMpICovXG5leHBvcnQgY29uc3QgU3RlcEZhdGFsRXJyb3IgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3N0ZXAuZmF0YWxfZXJyb3InKTtcblxuLyoqIFdoZXRoZXIgYWxsIHJldHJ5IGF0dGVtcHRzIGhhdmUgYmVlbiBleGhhdXN0ZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlFeGhhdXN0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnJldHJ5LmV4aGF1c3RlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBuZXh0IHJldHJ5IGF0dGVtcHQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlUaW1lb3V0U2Vjb25kcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5yZXRyeS50aW1lb3V0X3NlY29uZHMnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCB3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgdGhpcyBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5V2lsbFJldHJ5ID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC5yZXRyeS53aWxsX3JldHJ5J1xuKTtcblxuLy8gUXVldWUvTWVzc2FnaW5nIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIG1lc3NhZ2luZyBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L21lc3NhZ2luZy9tZXNzYWdpbmctc3BhbnMvXG5cbi8qKiBNZXNzYWdpbmcgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ21lc3NhZ2luZy5zeXN0ZW0nKTtcblxuLyoqIERlc3RpbmF0aW9uIG5hbWUvcXVldWUgbmFtZSAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLmRlc3RpbmF0aW9uLm5hbWUpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nRGVzdGluYXRpb25OYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICdtZXNzYWdpbmcuZGVzdGluYXRpb24ubmFtZSdcbik7XG5cbi8qKiBUaGUgbWVzc2FnZSBpZCBiZWluZyBoYW5kbGVkIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcubWVzc2FnZS5pZCkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdNZXNzYWdlSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248TWVzc2FnZUlkPihcbiAgJ21lc3NhZ2luZy5tZXNzYWdlLmlkJ1xuKTtcblxuLyoqIE9wZXJhdGlvbiB0eXBlIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcub3BlcmF0aW9uLnR5cGUpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nT3BlcmF0aW9uVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3B1Ymxpc2gnIHwgJ3JlY2VpdmUnIHwgJ3Byb2Nlc3MnXG4+KCdtZXNzYWdpbmcub3BlcmF0aW9uLnR5cGUnKTtcblxuLyoqIFRpbWUgdGFrZW4gdG8gZW5xdWV1ZSB0aGUgbWVzc2FnZSBpbiBtaWxsaXNlY29uZHMgKHdvcmtmbG93LXNwZWNpZmljKSAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlT3ZlcmhlYWRNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUub3ZlcmhlYWRfbXMnXG4pO1xuXG4vLyBEZXBsb3ltZW50IGF0dHJpYnV0ZXNcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCAqL1xuZXhwb3J0IGNvbnN0IERlcGxveW1lbnRJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdkZXBsb3ltZW50LmlkJyk7XG5cbi8qKiBUaGUgZGVwbG95bWVudCBhIHJ1biBpcyBwaW5uZWQgdG8sIHNldCBvbmx5IG9uIGEgbWlzcm91dGVkIGRlbGl2ZXJ5LiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuUGlubmVkRGVwbG95bWVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5kZXBsb3ltZW50LnBpbm5lZF9pZCdcbik7XG5cbi8qKiBSZS1yb3V0ZSBhdHRlbXB0cyBmb3IgdGhpcyBtaXNyb3V0ZWQgZGVsaXZlcnksIGluY2x1ZGluZyB0aGlzIG9uZS4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaFJldHJ5Q291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnRfbWlzbWF0Y2gucmV0cnlfY291bnQnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgbWlzcm91dGVkIGRlbGl2ZXJ5IHdhcyByZS1yb3V0ZWQgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBydW4uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dEZXBsb3ltZW50TWlzbWF0Y2hSZWNvdmVyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5kZXBsb3ltZW50X21pc21hdGNoLnJlY292ZXJlZCdcbik7XG5cbi8vIEhvb2sgYXR0cmlidXRlc1xuXG4vKiogVG9rZW4gaWRlbnRpZnlpbmcgYSBzcGVjaWZpYyBob29rICovXG5leHBvcnQgY29uc3QgSG9va1Rva2VuID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93Lmhvb2sudG9rZW4nKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGhvb2sgaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBIb29rSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cuaG9vay5pZCcpO1xuXG4vKiogV2hldGhlciBhIGhvb2sgd2FzIGZvdW5kIGJ5IGl0cyB0b2tlbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tGb3VuZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cuaG9vay5mb3VuZCcpO1xuXG4vKipcbiAqIFByb2R1Y2VyLXNpZGUgc2lnbmFsIChvbiB0aGUgYGhvb2sucmVzdW1lYCBzcGFuKSB0aGF0IHRoZSBkaXJlY3RcbiAqIGBob29rX3JlY2VpdmVkYCB3cml0ZSBmYWlsZWQgdHJhbnNpZW50bHkgYnV0IHRoZSBxdWV1ZSBkaXNwYXRjaCBzdWNjZWVkZWQsIHNvXG4gKiB0aGUgcmVzdW1lIGlzIHJlY292ZXJlZCB2aWEgdGhlIGNvbnN1bWVyJ3MgcmUtZW5zdXJlLiBDb3JyZXNwb25kcyB0b1xuICogYFJlc3VtZWRIb29rLnJlc2lsaWVudFJlc3VtZSA9PT0gdHJ1ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzaWxpZW50UmVzdW1lID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuaG9vay5yZXNpbGllbnRfcmVzdW1lJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSB0aGF0IHRoaXMgcmVwbGF5XG4gKiBtYXRlcmlhbGl6ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudCBmcm9tIHRoZSBxdWV1ZSBtZXNzYWdlJ3MgYGhvb2tJbnB1dGBcbiAqIGJlY2F1c2UgdGhlIHByb2R1Y2VyJ3MgZGlyZWN0IHdyaXRlIGhhZCBub3QgbGFuZGVkIOKAlCB0aGUgY29tcGxldGlvbiBvZiB0aGVcbiAqIHJlY292ZXJ5IHBhdGgge0BsaW5rIEhvb2tSZXNpbGllbnRSZXN1bWV9IGJlZ2FuLlxuICpcbiAqIExlZ2FjeSAvIG5vbi1hdG9taWMgcmUtZW5zdXJlIHNpZ25hbCBvbmx5LiBBdG9taWMgbGF6eSByZXN1bWVzXG4gKiAocmVzdW1lSWQgKyBkaWdlc3QpIGdvIHRocm91Z2ggdGhlIGhvaXN0ZWQgcHJlbG9hZCB3cml0ZSBpbnN0ZWFkLCB3aG9zZVxuICogcmVzcG9uc2UgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgcHJvZHVjZXIgb3IgdGhlIGNvbnN1bWVyIHdvbiB0aGVcbiAqIGAocnVuSWQsIHJlc3VtZUlkKWAgY2xhaW0g4oCUIHNvIHRoaXMgYXR0cmlidXRlIGlzIGRlbGliZXJhdGVseSBOT1QgZW1pdHRlZFxuICogZm9yIHRoZW0gKGVtaXR0aW5nIGB0cnVlYCB1bmNvbmRpdGlvbmFsbHkgd291bGQgY291bnQgZXZlcnkgcHJvZHVjZXItd29uXG4gKiByZXN1bWUgYXMgYSByZWNvdmVyeSkuIFRoZSBwcm9kdWNlci1iZWdpbiAoe0BsaW5rIEhvb2tSZXNpbGllbnRSZXN1bWV9KSAvXG4gKiBjb25zdW1lci1tYXRlcmlhbGl6ZWQgcGFpcmluZyBpcyB0aGVyZWZvcmUgbm8gbG9uZ2VyIGNvbXBsZXRlIGZvciBhdG9taWNcbiAqIGxhenkgcmVzdW1wdGlvbnM7IHVzZSB7QGxpbmsgSG9va1Jlc3VtZVNldHVwU291cmNlfSB0byBvYnNlcnZlIHRoYXQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tSZXNpbGllbnRSZXN1bWVNYXRlcmlhbGl6ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5ob29rLnJlc2lsaWVudF9yZXN1bWVfbWF0ZXJpYWxpemVkJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSBvZiBob3cgYSBsYXp5IGhvb2tcbiAqIHJlc3VtZSBpbml0aWFsaXplZCBpdHMgcmVwbGF5IHN0YXRlOlxuICpcbiAqIC0gYGhvb2tfcmVjZWl2ZWRfc3RyZWFtYCDigJQgdGhlIGhvaXN0ZWQgYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIHJldHVybmVkIGFcbiAqICAgdXNhYmxlIHJlcGxheSBwcmVsb2FkIChydW4gKyBjb21wbGV0ZSBldmVudCBsb2cpLCBzbyB0aGUgaW52b2NhdGlvblxuICogICBza2lwcGVkIGJvdGggdGhlIGBydW5fc3RhcnRlZGAgd3JpdGUgYW5kIHRoZSBpbml0aWFsIGBldmVudHMubGlzdGAuXG4gKiAtIGBob29rX3JlY2VpdmVkX2ZhbGxiYWNrYCDigJQgdGhlIGhvaXN0ZWQgd3JpdGUgc3VjY2VlZGVkIGJ1dCByZXR1cm5lZCBub1xuICogICB1c2FibGUgcHJlbG9hZCAoYSBDQk9SIHJlc3BvbnNlIGZyb20gYW4gb2xkZXIgc2VydmVyLCBhIFdvcmxkIHRoYXRcbiAqICAgaWdub3JlZCB0aGUgb3B0LWluLCBhIGJvdW5kZWQgYGhhc01vcmVgIHBhZ2UsIG9yIGEgcHJlbG9hZCB0aGF0IGZhaWxlZFxuICogICB2YWxpZGF0aW9uKTsgdGhlIGludm9jYXRpb24gZmVsbCBiYWNrIHRvIHRoZSBgcnVuX3N0YXJ0ZWRgIHNldHVwIHdpdGhvdXRcbiAqICAgcmUtcG9zdGluZyB0aGUgaG9vay5cbiAqXG4gKiBBYnNlbnQgb24gbGVnYWN5IGhvb2sgZGVsaXZlcmllcyAobm8gcmVzdW1lSWQvZGlnZXN0KSBhbmQgb24gZXZlcnkgb3RoZXJcbiAqIGRlbGl2ZXJ5IGtpbmQsIHdoaWNoIHRha2UgdGhlIGBydW5fc3RhcnRlZGAgc2V0dXAgdW5jb25kaXRpb25hbGx5LlxuICpcbiAqIFRoaXMgaXMgYSBsYXRlbmN5L3NldHVwLXBhdGggc2lnbmFsOiBpdCBzYXlzIHdoaWNoIHJlcXVlc3RzIGluaXRpYWxpemVkXG4gKiB0aGUgaW52b2NhdGlvbiwgTk9UIHRoYXQgdGhpcyBjb25zdW1lciBjcmVhdGVkIHRoZSBgaG9va19yZWNlaXZlZGAgZXZlbnRcbiAqICh0aGUgaG9pc3RlZCB3cml0ZSBtYXkgZXF1YWxseSBoYXZlIGNvbnZlcmdlZCBvbiB0aGUgcHJvZHVjZXIncyDigJQgY2xhaW1cbiAqIG93bmVyc2hpcCBpcyBub3Qgb2JzZXJ2YWJsZSBjbGllbnQtc2lkZTsgY2YuXG4gKiB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZU1hdGVyaWFsaXplZH0pLlxuICovXG5leHBvcnQgY29uc3QgSG9va1Jlc3VtZVNldHVwU291cmNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5yZXN1bWVfc2V0dXBfc291cmNlJ1xuKTtcblxuLyoqXG4gKiBQcm9kdWNlci1zaWRlIHNpZ25hbCAob24gdGhlIHN1c3BlbnNpb24gc3BhbikgY291bnRpbmcgc3RlcHMgd2hvc2UgZGlyZWN0XG4gKiBgc3RlcF9jcmVhdGVkYCB3cml0ZSBmYWlsZWQgdHJhbnNpZW50bHkgd2hpbGUgdGhlaXIgYHN0ZXBJbnB1dGAtY2FycnlpbmdcbiAqIHF1ZXVlIHB1Ymxpc2ggc3VjY2VlZGVkLCBzbyBzdGVwIGNyZWF0aW9uIGlzIHJlY292ZXJlZCB2aWEgdGhlIGNvbnN1bWVyJ3NcbiAqIHJlLWVuc3VyZS4gTWlycm9ycyB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0uXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwUmVzaWxpZW50RGlzcGF0Y2hSZWNvdmVyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN0ZXAucmVzaWxpZW50X2Rpc3BhdGNoX3JlY292ZXJlZCdcbik7XG5cbi8qKlxuICogQ29uc3VtZXItc2lkZSBzaWduYWwgKG9uIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3BhbikgdGhhdCB0aGlzIGRlbGl2ZXJ5XG4gKiBtYXRlcmlhbGl6ZWQgdGhlIGBzdGVwX2NyZWF0ZWRgIGV2ZW50IGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UncyBgc3RlcElucHV0YFxuICogYmVjYXVzZSB0aGUgcHJvZHVjZXIncyBkaXJlY3Qgd3JpdGUgaGFkIG5vdCBsYW5kZWQg4oCUIHRoZSBjb21wbGV0aW9uIG9mIHRoZVxuICogcmVjb3ZlcnkgcGF0aCB7QGxpbmsgU3RlcFJlc2lsaWVudERpc3BhdGNoUmVjb3ZlcmVkfSBiZWdhbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXNpbGllbnREaXNwYXRjaE1hdGVyaWFsaXplZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnN0ZXAucmVzaWxpZW50X2Rpc3BhdGNoX21hdGVyaWFsaXplZCdcbik7XG5cbi8vIEhvb2stdHJpZ2dlcmVkIHRpbWUtdG8tcmVzdW1lIChUVFIpIGF0dHJpYnV0ZXNcbi8vXG4vLyBTZXQgb24gdGhlIGBzdGVwLmV4ZWN1dGUgPG5hbWU+YCBzcGFuIG9mIHRoZSBGSVJTVCBkdXJhYmxlIHN0ZXAgZm9sbG93aW5nIGFcbi8vIGhvb2sgcmVzdW1lLCBhbmQgb25seSB0aGVyZTogb25lIHJlc3VtcHRpb24gcHJvZHVjZXMgZXhhY3RseSBvbmUgc2FtcGxlLCBzb1xuLy8gYSBsYXRlciBzdGVwIGluIHRoZSBzYW1lIGludm9jYXRpb24sIGEgcmV0cnksIG9yIGEgcmVkZWxpdmVyeSBuZXZlclxuLy8gcmUtcmVwb3J0cyBpdC4gVGhlIHBoYXNlcyBhcmUgbm9uLW92ZXJsYXBwaW5nIGFuZCBzdW0gZXhhY3RseSB0b1xuLy8ge0BsaW5rIFJlc3VtZVRvdGFsTXN9IOKAlCBzZWUgcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyBmb3IgdGhlIGJvdW5kYXJ5XG4vLyBkZWZpbml0aW9ucyBhbmQgdGhlIGVtaXNzaW9uIGdhdGUuXG4vL1xuLy8gRGVsaWJlcmF0ZWx5IGNhcnJpZXMgbm8gYHJlc3VtZUlkYCwgcnVuIElELCBvciB0b2tlbjogdGhlIG1ldHJpYyBpcyBtZWFudCB0b1xuLy8gYmUgYWdncmVnYXRlZCBhY3Jvc3MgZXZlcnkgcmVzdW1lLCBhbmQgaGlnaC1jYXJkaW5hbGl0eSBrZXlzIHdvdWxkIG1ha2UgdGhhdFxuLy8gcHJvaGliaXRpdmUuIEV4aXN0aW5nIHRyYWNlLWNvcnJlbGF0aW9uIGZpZWxkcyBvbiB0aGUgc2FtZSBzcGFuIGFyZVxuLy8gdW5jaGFuZ2VkIGFuZCBzdGlsbCBpZGVudGlmeSB0aGUgaW5kaXZpZHVhbCBydW4uXG5cbi8qKiBUb3RhbCBUVFI6IGVudHJ5IGludG8gYHJlc3VtZUhvb2soKWAg4oaSIGltbWVkaWF0ZWx5IGJlZm9yZSBgc3RlcEZuLmFwcGx5KClgLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVRvdGFsTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS50b3RhbF9tcydcbik7XG5cbi8qKiBQaGFzZTogYHJlc3VtZUhvb2soKWAgZW50cnkg4oaSIHRoZSBxdWV1ZSBwdWJsaXNoIGJlaW5nIHJlcXVlc3RlZC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVQcm9kdWNlclByZXBNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnByb2R1Y2VyX3ByZXBfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHF1ZXVlIHB1Ymxpc2ggcmVxdWVzdGVkIOKGkiB0aGUgZmluYWwgY29uc3VtZXIncyBoYW5kbGVyIGJlaW5nIGVudGVyZWQuICovXG5leHBvcnQgY29uc3QgUmVzdW1lUXVldWVEZWxpdmVyeU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2UucXVldWVfZGVsaXZlcnlfbXMnXG4pO1xuXG4vKiogUGhhc2U6IGNvbnN1bWVyIGVudHJ5IOKGkiByZXBsYXkgYmVnaW5uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVNldHVwTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5yZXN1bWVfc2V0dXBfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHJlcGxheSBiZWdpbm5pbmcg4oaSIHRoZSBuZXh0IGR1cmFibGUgc3RlcCBiZWluZyBlbmNvdW50ZXJlZC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVSZXBsYXlNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnJlcGxheV9tcydcbik7XG5cbi8qKiBQaGFzZTogc3RlcCBlbmNvdW50ZXJlZCDihpIgdGhlIGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QgYmVnaW5uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0ZXBEaXNwYXRjaE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2Uuc3RlcF9kaXNwYXRjaF9tcydcbik7XG5cbi8qKlxuICogUGhhc2U6IGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QgYmVnaW5uaW5nIOKGkiBpdHMgcmVzcG9uc2UgcmV0dXJuaW5nLiBPbWl0dGVkXG4gKiB1bmRlciBvcHRpbWlzdGljIGlubGluZSBzdGFydCwgd2hlcmUgdGhlIGNsYWltIGlzIG5vdCBhd2FpdGVkIGJlZm9yZSB0aGVcbiAqIGJvZHkgcnVucyBhbmQgdGhlcmVmb3JlIGhhcyBubyBjb21wbGV0aW9uIGluc3RhbnQgYXQgdGhhdCBwb2ludDsgdGhlIHRpbWVcbiAqIGlzIHRoZW4gcmVwb3J0ZWQgZW50aXJlbHkgYXMge0BsaW5rIFJlc3VtZVN0ZXBQcmVwYXJlTXN9LlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcENsYWltTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5zdGVwX2NsYWltX21zJ1xuKTtcblxuLyoqXG4gKiBQaGFzZTogY2xhaW0gcmV0dXJuaW5nIOKGkiBpbW1lZGlhdGVseSBiZWZvcmUgYHN0ZXBGbi5hcHBseSgpYC4gRGVsaWJlcmF0ZWx5XG4gKiBpbmNsdWRlcyBlbmNyeXB0aW9uLWtleSByZXNvbHV0aW9uLCBhcmd1bWVudCBoeWRyYXRpb24sIGFuZCBzdGVwLWNvbnRleHRcbiAqIHNldHVwOyBgd29ya2Zsb3cucXVldWUuZGVzZXJpYWxpemVfdGltZV9tc2Agc3RpbGwgaXNvbGF0ZXMgaHlkcmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcFByZXBhcmVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnN0ZXBfcHJlcGFyZV9tcydcbik7XG5cbi8qKiBXaGF0IHRyaWdnZXJlZCB0aGUgbWVhc3VyZWQgcmVzdW1wdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVUcmlnZ2VyID0gU2VtYW50aWNDb252ZW50aW9uPCdob29rJz4oXG4gICd3b3JrZmxvdy5yZXN1bWUudHJpZ2dlcidcbik7XG5cbi8qKiBXaGljaCBgcmVzdW1lSG9vaygpYCBkaXNwYXRjaCBwYXRoIHByb2R1Y2VkIHRoaXMgcmVzdW1lLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0cmF0ZWd5ID0gU2VtYW50aWNDb252ZW50aW9uPCdwYXJhbGxlbCcgfCAnc2VxdWVudGlhbCc+KFxuICAnd29ya2Zsb3cucmVzdW1lLnN0cmF0ZWd5J1xuKTtcblxuLyoqXG4gKiBIb3cgdGhlIGNvbnN1bWluZyBpbnZvY2F0aW9uIGluaXRpYWxpemVkIHJlcGxheSBzdGF0ZS4gRGlzdGluY3QgZnJvbSB0aGVcbiAqIHByZS1leGlzdGluZyB7QGxpbmsgSG9va1Jlc3VtZVNldHVwU291cmNlfSAoYHdvcmtmbG93LnJlc3VtZV9zZXR1cF9zb3VyY2VgLFxuICogb24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSwgd2hpY2ggcmVwb3J0cyB0aGUgZmluZXItZ3JhaW5lZFxuICogaG9pc3RlZC13cml0ZSBvdXRjb21lOyB0aGlzIG9uZSBpcyB0aGUgVFRSIGRpbWVuc2lvbiBhbmQgc2hhcmVzIHRoZSBtZXRyaWMnc1xuICogdGhyZWUtdmFsdWUgdm9jYWJ1bGFyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVNldHVwU291cmNlID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnaG9va19wcmVsb2FkJyB8ICdydW5fc3RhcnRlZCcgfCAnZXZlbnRfbG9hZCdcbj4oJ3dvcmtmbG93LnJlc3VtZS5zZXR1cF9zb3VyY2UnKTtcblxuLyoqIFdoZXRoZXIgdGhlIG1lYXN1cmVkIHN0ZXAgcmFuIGluIHRoZSByZXN1bWluZyBpbnZvY2F0aW9uIG9yIGEgcXVldWVkIG9uZS4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTdGVwRXhlY3V0aW9uID0gU2VtYW50aWNDb252ZW50aW9uPCdpbmxpbmUnIHwgJ2Rpc3BhdGNoZWQnPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5zdGVwX2V4ZWN1dGlvbidcbik7XG5cbi8vIFdlYmhvb2sgYXR0cmlidXRlc1xuXG4vKiogTnVtYmVyIG9mIHdlYmhvb2sgaGFuZGxlcnMgdHJpZ2dlcmVkICovXG5leHBvcnQgY29uc3QgV2ViaG9va0hhbmRsZXJzVHJpZ2dlcmVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3ZWJob29rLmhhbmRsZXJzLnRyaWdnZXJlZCdcbik7XG5cbi8vIFN1c3BlbnNpb24gYXR0cmlidXRlc1xuXG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uU3RhdGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J3N1c3BlbmRlZCc+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5zdGF0ZSdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uSG9va0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLmhvb2tfY291bnQnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvblN0ZXBDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5zdGVwX2NvdW50J1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25XYWl0Q291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24ud2FpdF9jb3VudCdcbik7XG5cbi8vIFdvcmxkL1N0b3JhZ2UgYXR0cmlidXRlcyAtIFN0YW5kYXJkIE9URUwgSFRUUCBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2h0dHAvaHR0cC1zcGFucy9cblxuLyoqIEhUVFAgcmVxdWVzdCBtZXRob2QgKHN0YW5kYXJkIE9URUw6IGh0dHAucmVxdWVzdC5tZXRob2QpICovXG5leHBvcnQgY29uc3QgSHR0cFJlcXVlc3RNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ2h0dHAucmVxdWVzdC5tZXRob2QnXG4pO1xuXG4vKiogUm91dGUgcGF0dGVybiBmb3IgdGhlIHJlcXVlc3QgKHN0YW5kYXJkIE9URUw6IGh0dHAucm91dGUpICovXG5leHBvcnQgY29uc3QgSHR0cFJvdXRlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2h0dHAucm91dGUnKTtcblxuLyoqIEZ1bGwgVVJMIG9mIHRoZSByZXF1ZXN0IChzdGFuZGFyZCBPVEVMOiB1cmwuZnVsbCkgKi9cbmV4cG9ydCBjb25zdCBVcmxGdWxsID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3VybC5mdWxsJyk7XG5cbi8qKiBTZXJ2ZXIgaG9zdG5hbWUgKHN0YW5kYXJkIE9URUw6IHNlcnZlci5hZGRyZXNzKSAqL1xuZXhwb3J0IGNvbnN0IFNlcnZlckFkZHJlc3MgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc2VydmVyLmFkZHJlc3MnKTtcblxuLyoqIFNlcnZlciBwb3J0IChzdGFuZGFyZCBPVEVMOiBzZXJ2ZXIucG9ydCkgKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJQb3J0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3NlcnZlci5wb3J0Jyk7XG5cbi8qKiBIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlIChzdGFuZGFyZCBPVEVMOiBodHRwLnJlc3BvbnNlLnN0YXR1c19jb2RlKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSZXNwb25zZVN0YXR1c0NvZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ2h0dHAucmVzcG9uc2Uuc3RhdHVzX2NvZGUnXG4pO1xuXG4vKiogRXJyb3IgdHlwZSB3aGVuIHJlcXVlc3QgZmFpbHMgKHN0YW5kYXJkIE9URUw6IGVycm9yLnR5cGUpICovXG5leHBvcnQgY29uc3QgRXJyb3JUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2Vycm9yLnR5cGUnKTtcblxuLy8gV29ybGQtc3BlY2lmaWMgY3VzdG9tIGF0dHJpYnV0ZXMgKGZvciB3b3JrZmxvdy1zcGVjaWZpYyBjb250ZXh0KVxuXG4vKiogRm9ybWF0IHVzZWQgZm9yIHBhcnNpbmcgcmVzcG9uc2UgYm9keSAoY2JvciBvciBqc29uKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmxkUGFyc2VGb3JtYXQgPSBTZW1hbnRpY0NvbnZlbnRpb248J2Nib3InIHwgJ2pzb24nPihcbiAgJ3dvcmtmbG93LndvcmxkLnBhcnNlLmZvcm1hdCdcbik7XG5cbi8vIEV2ZW50IGxvYWRpbmcgYXR0cmlidXRlc1xuXG4vKiogTnVtYmVyIG9mIHBhZ2luYXRpb24gcGFnZXMgbG9hZGVkIHdoZW4gZmV0Y2hpbmcgd29ya2Zsb3cgZXZlbnRzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFdmVudHNQYWdlc0xvYWRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhZ2VzX2xvYWRlZCdcbik7XG5cbi8vIFF1ZXVlIHRpbWluZyBicmVha2Rvd24gYXR0cmlidXRlcyAod29ya2Zsb3ctc3BlY2lmaWMpXG5cbi8qKiBUaW1lIHNwZW50IGRlc2VyaWFsaXppbmcgdGhlIHF1ZXVlIG1lc3NhZ2UgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVEZXNlcmlhbGl6ZVRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuZGVzZXJpYWxpemVfdGltZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IGV4ZWN1dGluZyB0aGUgaGFuZGxlciBsb2dpYyBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZUV4ZWN1dGlvblRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuZXhlY3V0aW9uX3RpbWVfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBzZXJpYWxpemluZyB0aGUgcmVzcG9uc2UgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVTZXJpYWxpemVUaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLnNlcmlhbGl6ZV90aW1lX21zJ1xuKTtcblxuLy8gUGF5bG9hZCBjb21wcmVzc2lvbiBhdHRyaWJ1dGVzICh6c3RkIHByZWZlcnJlZCwgZ3ppcCBmYWxsYmFjazsgc3BlY1ZlcnNpb24gPj0gNSlcbi8vXG4vLyBTaXplcyBhcmUgbWVhc3VyZWQgYXQgdGhlIGNvbXByZXNzaW9uIGJvdW5kYXJ5OiBiZWZvcmUgZW5jcnlwdGlvbiBvbiB0aGVcbi8vIHdyaXRlIHBhdGggYW5kIGFmdGVyIGRlY3J5cHRpb24gb24gdGhlIHJlYWQgcGF0aC4gVGhleSB0aGVyZWZvcmUgcmVmbGVjdFxuLy8gY29tcHJlc3Npb24ncyBlZmZlY3QsIG5vdCB0aGUgYXQtcmVzdCBzaXplICh3aGljaCBhbHNvIGluY2x1ZGVzIHRoZVxuLy8gfjI4LWJ5dGUgYGVuY3JgIGVudmVsb3BlIGFuZCwgb24gc29tZSBiYWNrZW5kcywgYmFzZTY0IGV4cGFuc2lvbikuXG5cbi8qKiBXaGV0aGVyIHRoaXMgc2VyaWFsaXplL2Rlc2VyaWFsaXplIHdhcyBhIHdyaXRlIG9yIHJlYWQuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbk9wZXJhdGlvbiA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3NlcmlhbGl6ZScgfCAnZGVzZXJpYWxpemUnXG4+KCd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLm9wZXJhdGlvbicpO1xuXG4vKiogV2hldGhlciBhIGNvbXByZXNzaW9uIGNvZGVjIHdhcyBhcHBsaWVkICh3cml0ZSkgLyBwcmVzZW50IChyZWFkKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3NlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29tcHJlc3NlZCdcbik7XG5cbi8qKiBXaGljaCBjb21wcmVzc2lvbiBjb2RlYyBhcHBsaWVkIC8gd2FzIHByZXNlbnQgKGB6c3RkYCwgYGd6aXBgLCBvciBgbm9uZWApLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25Db2RlYyA9IFNlbWFudGljQ29udmVudGlvbjwnenN0ZCcgfCAnZ3ppcCcgfCAnbm9uZSc+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb2RlYydcbik7XG5cbi8qKiBMb2dpY2FsICh1bmNvbXByZXNzZWQsIGRldmFsdWUtcHJlZml4ZWQpIHBheWxvYWQgc2l6ZSBpbiBieXRlcy4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uVW5jb21wcmVzc2VkQnl0ZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24udW5jb21wcmVzc2VkX2J5dGVzJ1xuKTtcblxuLyoqIFN0b3JlZCAocG9zdC1jb21wcmVzc2lvbiwgcHJlLWVuY3J5cHRpb24pIHBheWxvYWQgc2l6ZSBpbiBieXRlcy4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uU3RvcmVkQnl0ZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uc3RvcmVkX2J5dGVzJ1xuKTtcblxuLyoqIEZyYWN0aW9uIG9mIGJ5dGVzIHNhdmVkIGJ5IGNvbXByZXNzaW9uICgwLi4xKTsgc2V0IG9ubHkgd2hlbiBjb21wcmVzc2VkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25Db21wcmVzc2lvblJhdGlvID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzaW9uX3JhdGlvJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2Ygd29ya2Zsb3cgKGd1ZXN0KSBjb2RlIGV4ZWN1dGlvbnMgc2VyaWFsaXphdGlvbiBjb3VsZCBub3QgYXZvaWRcbiAqIChnZXR0ZXJzLCBwcm94aWVzLCBjdXN0b20gc2VyaWFsaXplcnMpOyBzZXQgb25seSB3aGVuIG5vbi16ZXJvLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkd1ZXN0Q29kZUV4ZWN1dGlvbnMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uZ3Vlc3RfY29kZV9leGVjdXRpb25zJ1xuKTtcblxuLyoqXG4gKiBEZWR1cGxpY2F0ZWQgYGtpbmQgKGRldGFpbClgIGRlc2NyaXB0aW9ucyBvZiB0aGUgZ3Vlc3QtY29kZSBleGVjdXRpb25zO1xuICogc2V0IG9ubHkgd2hlbiBub24temVyby5cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25HdWVzdENvZGVEZXRhaWxzID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZ1tdPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uZ3Vlc3RfY29kZV9kZXRhaWxzJ1xuKTtcblxuLy8gUlBDL1BlZXIgU2VydmljZSBhdHRyaWJ1dGVzIC0gRm9yIHNlcnZpY2UgbWFwcyBhbmQgZGVwZW5kZW5jeSB0cmFja2luZ1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L3JwYy9ycGMtc3BhbnMvXG5cbi8qKiBUaGUgcmVtb3RlIHNlcnZpY2UgbmFtZSBmb3IgRGF0YWRvZyBzZXJ2aWNlIG1hcHMgKERhdGFkb2ctc3BlY2lmaWM6IHBlZXIuc2VydmljZSkgKi9cbmV4cG9ydCBjb25zdCBQZWVyU2VydmljZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdwZWVyLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBzeXN0ZW0gaWRlbnRpZmllciAoc3RhbmRhcmQgT1RFTDogcnBjLnN5c3RlbSkgKi9cbmV4cG9ydCBjb25zdCBScGNTeXN0ZW0gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnN5c3RlbScpO1xuXG4vKiogUlBDIHNlcnZpY2UgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUnBjU2VydmljZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMuc2VydmljZScpO1xuXG4vKiogUlBDIG1ldGhvZCBuYW1lIChzdGFuZGFyZCBPVEVMOiBycGMubWV0aG9kKSAqL1xuZXhwb3J0IGNvbnN0IFJwY01ldGhvZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMubWV0aG9kJyk7XG5cbi8vIEVycm9yIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIGVycm9yIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvZXhjZXB0aW9ucy9leGNlcHRpb25zLXNwYW5zL1xuXG4vKiogV2hldGhlciB0aGUgZXJyb3IgaXMgcmV0cnlhYmxlICh3b3JrZmxvdy1zcGVjaWZpYykgKi9cbmV4cG9ydCBjb25zdCBFcnJvclJldHJ5YWJsZSA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignZXJyb3IucmV0cnlhYmxlJyk7XG5cbi8qKiBFcnJvciBjYXRlZ29yeSAod29ya2Zsb3ctc3BlY2lmaWM6IGZhdGFsLCByZXRyeWFibGUsIHRyYW5zaWVudCkgKi9cbmV4cG9ydCBjb25zdCBFcnJvckNhdGVnb3J5ID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnZmF0YWwnIHwgJ3JldHJ5YWJsZScgfCAndHJhbnNpZW50J1xuPignZXJyb3IuY2F0ZWdvcnknKTtcbiJdfQ==
454
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtC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LE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGtCQUFrQixDQUM3RCwwQ0FBMEMsQ0FDM0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLGtCQUFrQixDQUNoRSw4Q0FBOEMsQ0FDL0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGtCQUFrQixDQUM3RCwyQ0FBMkMsQ0FDNUMsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQVMsYUFBYSxDQUFDLENBQUM7QUFFcEUsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxZQUFZLENBQUMsQ0FBQztBQUVsRSxxREFBcUQ7QUFDckQsZ0ZBQWdGO0FBRWhGLHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQVUsaUJBQWlCLENBQUMsQ0FBQztBQUU3RSxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUU3QyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zIGZvciBWZXJjZWwgV29ya2Zsb3cgdGVsZW1ldHJ5LlxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHN0YW5kYXJkaXplZCB0ZWxlbWV0cnkgYXR0cmlidXRlcyBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogZm9yIGluc3RydW1lbnRpbmcgd29ya2Zsb3cgZXhlY3V0aW9uLCBzdGVwIHByb2Nlc3NpbmcsIGFuZCByZWxhdGVkIG9wZXJhdGlvbnMuIEVhY2ggZXhwb3J0ZWQgZnVuY3Rpb25cbiAqIGNyZWF0ZXMgYSBwcm9wZXJseSBmb3JtYXR0ZWQgYXR0cmlidXRlIG9iamVjdCBmb3IgdXNlIHdpdGggT3BlblRlbGVtZXRyeSBzcGFucy5cbiAqXG4gKiBUaGUgc2VtYW50aWMgY29udmVudGlvbnMgYXJlIG9yZ2FuaXplZCBpbnRvIHNldmVyYWwgY2F0ZWdvcmllczpcbiAqIC0gKipXb3JrZmxvdyBhdHRyaWJ1dGVzKio6IFRyYWNrIHdvcmtmbG93IGxpZmVjeWNsZSwgc3RhdHVzLCBhbmQgbWV0YWRhdGFcbiAqIC0gKipTdGVwIGF0dHJpYnV0ZXMqKjogTW9uaXRvciBpbmRpdmlkdWFsIHN0ZXAgZXhlY3V0aW9uLCByZXRyaWVzLCBhbmQgcmVzdWx0c1xuICogLSAqKlF1ZXVlIGF0dHJpYnV0ZXMqKjogSW5zdHJ1bWVudCBtZXNzYWdlIHF1ZXVlIG9wZXJhdGlvbnNcbiAqIC0gKipEZXBsb3ltZW50IGF0dHJpYnV0ZXMqKjogQ2FwdHVyZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGluZm9ybWF0aW9uXG4gKlxuICogQWxsIGF0dHJpYnV0ZSBmdW5jdGlvbnMgYXJlIHR5cGUtc2FmZSBhbmQgdXNlIGV4aXN0aW5nIGJhY2tlbmQgdHlwZXMgdG8gZW5zdXJlXG4gKiBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRlbGVtZXRyeSBkYXRhIGFuZCBhY3R1YWwgc3lzdGVtIHN0YXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgKiBhcyBBdHRyaWJ1dGUgZnJvbSAnLi90ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMuanMnO1xuICpcbiAqIC8vIFNldCB3b3JrZmxvdyBhdHRyaWJ1dGVzIG9uIGEgc3BhblxuICogc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93TmFtZSgnbXktd29ya2Zsb3cnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93T3BlcmF0aW9uKCdzdGFydCcpLFxuICogICAuLi5BdHRyaWJ1dGUuV29ya2Zsb3dSdW5TdGF0dXMoJ3J1bm5pbmcnKSxcbiAqIH0pO1xuICpcbiAqIC8vIFNldCBzdGVwIGF0dHJpYnV0ZXNcbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwTmFtZSgncHJvY2Vzcy1kYXRhJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwU3RhdHVzKCdjb21wbGV0ZWQnKSxcbiAqICAgLi4uQXR0cmlidXRlLlN0ZXBBdHRlbXB0KDEpLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L30gT3BlblRlbGVtZXRyeSBTZW1hbnRpYyBDb252ZW50aW9uc1xuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlSWQsIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2VtYW50aWMgY29udmVudGlvbiBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIGZvbGxvd2luZyBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgcmV0dXJucyBhbiBhdHRyaWJ1dGUgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIFNlbWFudGljQ29udmVudGlvbjxUPiguLi5uYW1lczogc3RyaW5nW10pIHtcbiAgcmV0dXJuICh2YWx1ZTogVCkgPT5cbiAgICBPYmplY3QuZnJvbUVudHJpZXMobmFtZXMubWFwKChuYW1lKSA9PiBbbmFtZSwgdmFsdWVdIGFzIGNvbnN0KSk7XG59XG5cbi8vIFdvcmtmbG93IGF0dHJpYnV0ZXNcblxuLyoqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdyBiZWluZyBleGVjdXRlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93TmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5uYW1lJyk7XG5cbi8qKiBUaGUgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZCBvbiB0aGUgd29ya2Zsb3cgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd09wZXJhdGlvbiA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3N0YXJ0JyB8ICdleGVjdXRlJyB8ICdleGVjdXRlX3YyJyB8ICdydW4nXG4+KCd3b3JrZmxvdy5vcGVyYXRpb24nKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIHNwZWNpZmljIHdvcmtmbG93IHJ1biBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cucnVuLmlkJyk7XG5cbi8qKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgd29ya2Zsb3cgcnVuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5TdGF0dXMgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gIFdvcmtmbG93UnVuWydzdGF0dXMnXSB8ICd3b3JrZmxvd19zdXNwZW5kZWQnXG4+KCd3b3JrZmxvdy5ydW4uc3RhdHVzJyk7XG5cbi8qKiBUaW1lc3RhbXAgd2hlbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXJ0ZWQgKFVuaXggdGltZXN0YW1wKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3RhcnRlZEF0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdGFydGVkX2F0J1xuKTtcblxuLyoqIE51bWJlciBvZiBldmVudHMgcHJvY2Vzc2VkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V2ZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMuY291bnQnXG4pO1xuXG4vKiogV2hldGhlciB3b3JrZmxvdyBleGVjdXRpb24gc3RhcnRzIHdpdGggcmVwbGF5IG9yIHJlc3VtZXMgYSByZXRhaW5lZCBWTSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXhlY3V0aW9uTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwncmVwbGF5JyB8ICdyZXRhaW5lZCc+KFxuICAnd29ya2Zsb3cuZXhlY3V0aW9uLm1vZGUnXG4pO1xuXG4vKipcbiAqIEV2ZW50cyB0aGUgcmVwbGF5IHdhbGtlZCBwYXN0IHRoYXQgbm8gY29uc3VtZXIgY2xhaW1lZCwgc3RpbGwgaGVsZCB3aGVuIHRoZVxuICogcmVwbGF5IHN0b3BwZWQuXG4gKlxuICogQSBub24temVybyBjb3VudCBvbiBhIHN1c3BlbnNpb24gaXMgb3JkaW5hcnk6IGFuIG91dC1vZi1iYW5kIGRlbGl2ZXJ5IHRoYXRcbiAqIGxhbmRlZCBhaGVhZCBvZiB0aGUgY29kZSB0aGF0IHJlYWRzIGl0IHdhaXRzIGZvciB0aGUgcmVwbGF5IHRoYXQgZ2V0cyB0aGVyZS5cbiAqIEZyb20gaW5zaWRlIG9uZSByZXBsYXkgdGhhdCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGV2ZW50IG5vIHJlcGxheSB3aWxsXG4gKiBldmVyIGNsYWltLCBiZWNhdXNlIHRoZSB0d28gZGlmZmVyIG9ubHkgaW4gd2hhdCB0aGUgbmV4dCByZXBsYXkgZG9lcy4gU28gdGhlXG4gKiBjb3VudCBnb2VzIG9uIHRoZSBzcGFuIGluc3RlYWQgb2YgZmFpbGluZyB0aGUgcnVuLCBhbmQgdGhlIGNhc2Ugd29ydGggYWN0aW5nXG4gKiBvbiBpcyBhIHF1ZXJ5IGFjcm9zcyBhIHJ1bidzIHNwYW5zOiB0aGUgc2FtZVxuICoge0BsaW5rIFdvcmtmbG93UGFya2VkRXZlbnRJZH0gaGVsZCBvbiBzdXNwZW5zaW9uIGFmdGVyIHN1c3BlbnNpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1BhcmtlZEV2ZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFya2VkLmNvdW50J1xuKTtcblxuLyoqIE9sZGVzdCBldmVudCBzdGlsbCBoZWxkIHVuY2xhaW1lZCB3aGVuIHRoZSByZXBsYXkgc3RvcHBlZC4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1BhcmtlZEV2ZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYXJrZWQuZXZlbnRfaWQnXG4pO1xuXG4vKiogVHlwZSBvZiB0aGUgb2xkZXN0IGV2ZW50IHN0aWxsIGhlbGQgdW5jbGFpbWVkIHdoZW4gdGhlIHJlcGxheSBzdG9wcGVkLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UGFya2VkRXZlbnRUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFya2VkLmV2ZW50X3R5cGUnXG4pO1xuXG4vKiogTnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dBcmd1bWVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuYXJndW1lbnRzLmNvdW50J1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIHdvcmtmbG93IHJlc3VsdCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UmVzdWx0VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cucmVzdWx0LnR5cGUnXG4pO1xuXG4vKiogV2hldGhlciB0cmFjZSBjb250ZXh0IHdhcyBwcm9wYWdhdGVkIHRvIHRoaXMgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUcmFjZVByb3BhZ2F0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy50cmFjZS5wcm9wYWdhdGVkJ1xuKTtcblxuLy8gUXVpY2tKUyBWTSBlbmdpbmUgYXR0cmlidXRlc1xuXG4vKiogVGhlIFZNIGVuZ2luZSBleGVjdXRpbmcgdGhlIHdvcmtmbG93IGZ1bmN0aW9uIGZvciB0aGlzIGludm9jYXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1ZtID0gU2VtYW50aWNDb252ZW50aW9uPCdub2RlJyB8ICdxdWlja2pzJz4oJ3dvcmtmbG93LnZtJyk7XG5cbi8qKiBPdXRjb21lIG9mIGEgUXVpY2tKUyBWTSB3b3JrZmxvdyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU091dGNvbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdjb21wbGV0ZWQnIHwgJ3N1c3BlbmRlZCcgfCAnZmFpbGVkJ1xuPignd29ya2Zsb3cudm0ub3V0Y29tZScpO1xuXG4vKiogV2hldGhlciBwcmVsb2FkZWQgZXZlbnRzIGZyb20gYGV2ZW50cy5jcmVhdGUoJ3J1bl9zdGFydGVkJylgIHdlcmUgdXNlZCAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNFdmVudHNQcmVsb2FkZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMucHJlbG9hZGVkJ1xuKTtcblxuLyoqIFRvdGFsIG51bWJlciBvZiBldmVudHMgZmV0Y2hlZCBmcm9tIHRoZSB3b3JsZCBmb3IgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0V2ZW50c0ZldGNoZWRDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLmZldGNoZWRfY291bnQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHBhZ2VzIHJlcXVpcmVkIHRvIGZldGNoIGFsbCBldmVudHMgKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTRXZlbnRzRmV0Y2hlZFBhZ2VzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMuZmV0Y2hlZF9wYWdlcydcbik7XG5cbi8qKiBOdW1iZXIgb2YgcGVuZGluZyBWTSBvcGVyYXRpb25zIGNhcHR1cmVkIGF0IHN1c3BlbnNpb24gKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTUGVuZGluZ09wc0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5wZW5kaW5nX29wc19jb3VudCdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc3RlcHMgZXhlY3V0ZWQgaW5saW5lIChsaXZlLVZNIGNvbnRpbnVhdGlvbikgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0lubGluZVN0ZXBzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdxdWlja2pzLmlubGluZV9zdGVwcydcbik7XG5cbi8qKiBBY3RpdmUgdHJhY2UtY29ycmVsYXRpb24gbW9kZSBmb3IgdGhpcyBpbnZvY2F0aW9uIChsaW5rZWQgb3IgY29udGludW91cykgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1RyYWNlTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwnbGlua2VkJyB8ICdjb250aW51b3VzJz4oXG4gICd3b3JrZmxvdy50cmFjZS5tb2RlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyB3b3JrZmxvdyBpbnZvY2F0aW9uIGlzIHVzaW5nIHRoZSB0dXJibyBmaXJzdC1kZWxpdmVyeSBwYXRoICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUdXJibyA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cudHVyYm8nKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHdvcmtmbG93IGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubmFtZSdcbik7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gd29ya2Zsb3cgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTWVzc2FnZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubWVzc2FnZSdcbik7XG5cbi8qKiBFcnJvciBjbGFzc2lmaWNhdGlvbiBjb2RlIChVU0VSX0VSUk9SLCBSVU5USU1FX0VSUk9SLCBldGMuKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5jb2RlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzdGVwcyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0ZXBzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcHMuY3JlYXRlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgaG9va3MgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dIb29rc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93Lmhvb2tzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHdhaXRzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93V2FpdHNDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy53YWl0cy5jcmVhdGVkJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2Ygc3RlcHMgdGhpcyBzdXNwZW5zaW9uIGZpbmFsaXplZCBhcyBmYWlsZWQgYmVjYXVzZSB0aGVpclxuICogYXJndW1lbnRzIHJlZnVzZWQgdG8gc2VyaWFsaXplIChzdGVwX2NyZWF0ZWQgcGxhY2Vob2xkZXIgKyBzdGVwX2ZhaWxlZFxuICogY2FycnlpbmcgdGhlIFNlcmlhbGl6YXRpb25FcnJvcjsgc2VlIGZpbmFsaXplVW5zZXJpYWxpemFibGVTdGVwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3RlcHNGYWlsZWRTZXJpYWxpemF0aW9uID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdGVwcy5mYWlsZWRfc2VyaWFsaXphdGlvbidcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIGlubGluZS1vd25lZCBzdGVwcyB0aGlzIGludm9jYXRpb24gcmUtZXhlY3V0ZWQgYmVjYXVzZSBpdCBpcyBhXG4gKiByZWRlbGl2ZXJ5IG9mIHRoZWlyIG93bmluZyBxdWV1ZSBtZXNzYWdlIChjcmFzaCByZWNvdmVyeSBmb3IgaW5saW5lXG4gKiBzdGVwczsgc2VlIHRoZSBpbmxpbmUgc3RlcCBvd25lcnNoaXAgY2hhbmdlbG9nLCB3b3JrZmxvdyMyNzgwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93T3duZWRSZWNvdmVyeVN0ZXBzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5pbmxpbmVfb3duZXJzaGlwLm93bmVkX3JlY292ZXJ5X3N0ZXBzJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2YgcGVuZGluZyBzdGVwcyBmb3Igd2hpY2ggdGhpcyByZXBsYXkgc3VwcHJlc3NlZCB0aGUgaW1tZWRpYXRlXG4gKiByZXF1ZXVlIChhbm90aGVyIGludm9jYXRpb24gaW5saW5lLW93bnMgdGhlbSB1bmRlciBhIGxpdmUgbGVhc2UpIGFuZFxuICogZW5zdXJlZCBhIGRlbGF5ZWQgYmFja3N0b3Agd2FrZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dCYWNrc3RvcFdha2VzQXJtZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmlubGluZV9vd25lcnNoaXAuYmFja3N0b3Bfd2FrZXNfYXJtZWQnXG4pO1xuXG4vLyBSb3V0ZSBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgd29ya2Zsb3cgcnVudGltZSByb3V0ZSBiZWluZyBoYW5kbGVkICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZVR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J2Zsb3cnPihcbiAgJ3dvcmtmbG93LnJvdXRlLnR5cGUnXG4pO1xuXG4vKiogV2hldGhlciB0aGlzIHJvdXRlIGludm9jYXRpb24gcmV1c2VkIGFuIGFscmVhZHktY3JlYXRlZCByZXF1ZXN0IGhhbmRsZXIgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlSGFuZGxlckNhY2hlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnJvdXRlLmhhbmRsZXJfY2FjaGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiB0aW1lcyB0aGlzIGluLW1lbW9yeSByb3V0ZSBoYW5kbGVyIGhhcyBiZWVuIGludm9rZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlSW52b2NhdGlvbkNvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5pbnZvY2F0aW9uX2NvdW50J1xuKTtcblxuLyoqIFRpbWUgc2luY2UgdGhpcyByb3V0ZSBlbnRyeXBvaW50IHdhcyBjb25zdHJ1Y3RlZCwgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUVudHJ5cG9pbnRBZ2VNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUuZW50cnlwb2ludF9hZ2VfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBldmFsdWF0aW5nIHRoZSBnZW5lcmF0ZWQgcm91dGUgbW9kdWxlIGJvZHkgYmVmb3JlIGNyZWF0aW5nIHRoZSBlbnRyeXBvaW50ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZU1vZHVsZUJvZHlJbml0TXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLm1vZHVsZV9ib2R5X2luaXRfbXMnXG4pO1xuXG4vKipcbiAqIENvbXB1dGUgaW5zdGFuY2UgaGFuZGxpbmcgdGhpcyByb3V0ZTogdGhlIHN5bnRoZXNpemVkIGBDT01QVVRFX0lOU1RBTkNFX0lEYC5cbiAqIFVzZXMgT1RFTCBgZmFhcy5pbnN0YW5jZWAgKGV4ZWN1dGlvbi1lbnZpcm9ubWVudCBpZCwgcmV1c2VkIGFjcm9zc1xuICogaW52b2NhdGlvbnMgdG8gdGhlIHNhbWUgZnVuY3Rpb24pOlxuICogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9hdHRyaWJ1dGVzLXJlZ2lzdHJ5L2ZhYXMvXG4gKi9cbmV4cG9ydCBjb25zdCBGYWFzSW5zdGFuY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZmFhcy5pbnN0YW5jZScpO1xuXG4vLyBTdGVwIGF0dHJpYnV0ZXNcblxuLyoqIE5hbWUgb2YgdGhlIHN0ZXAgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLm5hbWUnKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RlcCBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmlkJyk7XG5cbi8qKiBDdXJyZW50IGF0dGVtcHQgbnVtYmVyIGZvciBzdGVwIGV4ZWN1dGlvbiAoc3RhcnRzIGF0IDEpICovXG5leHBvcnQgY29uc3QgU3RlcEF0dGVtcHQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5hdHRlbXB0Jyk7XG5cbi8qKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgc3RlcCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTdGF0dXMgPSBTZW1hbnRpY0NvbnZlbnRpb248U3RlcFsnc3RhdHVzJ10+KCdzdGVwLnN0YXR1cycpO1xuXG4vKiogTWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBhbGxvd2VkIGZvciB0aGlzIHN0ZXAgKi9cbmV4cG9ydCBjb25zdCBTdGVwTWF4UmV0cmllcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLm1heF9yZXRyaWVzJyk7XG5cbi8qKiBXaGV0aGVyIHRyYWNlIGNvbnRleHQgd2FzIHByb3BhZ2F0ZWQgdG8gdGhpcyBzdGVwIGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBUcmFjZVByb3BhZ2F0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnRyYWNlLnByb3BhZ2F0ZWQnXG4pO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCB0aW1lLXRvLWZpcnN0LXN0ZXAgbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHM6IHJ1biBjcmVhdGlvbiDihpJcbiAqIHRoaXMgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUsIG1pbnVzIHByZS1zdGVwIGhvb2stY3JlYXRpb24gdGltZS5cbiAqIE9ubHkgcHJlc2VudCBvbiB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBleGVjdXRpb24gd2hlbiBpdCBxdWFsaWZpZWQgZm9yXG4gKiBtZWFzdXJlbWVudCAoc2VlIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBUdGZzTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC50dGZzX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHN0ZXAtdG8tc3RlcCBvdmVyaGVhZCBpbiBtaWxsaXNlY29uZHM6IHRoZSBwcmV2aW91cyBzdGVwJ3NcbiAqIHRlcm1pbmFsIGV2ZW50IOKGkiB0aGlzIHN0ZXAncyBib2R5IGJlZ2lubmluZyB0byBleGVjdXRlLiBPbmx5IHByZXNlbnQgd2hlblxuICogdGhlIHR3byBzdGVwcyByYW4gYmFjay10by1iYWNrLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFN0c29NcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnN0c29fbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgcnVuX3N0YXJ0ZWQtdG8tZmlyc3Qtc3RlcCBsYXRlbmN5IGluIG1pbGxpc2Vjb25kczogdGhlXG4gKiBgcnVuX3N0YXJ0ZWRgIHJlc3BvbnNlIGxhbmRpbmcgKG9yLCB1bmRlciB0dXJibywgdGhlIGxvY2FsIHJ1biBzeW50aGVzaXNcbiAqIGluc3RhbnQpIOKGkiB0aGlzIHN0ZXAncyBzdGFydCBQT1NUIGJlaW5nIGlzc3VlZC4gQSBzdWItd2luZG93IG9mIHR0ZnMgdGhhdFxuICogaXNvbGF0ZXMgcmVwbGF5IG92ZXJoZWFkIGZyb20gdGhlIHJ1bi1jcmVhdGlvbiBxdWV1ZSBob3AuIE9ubHkgcHJlc2VudCBvblxuICogdGhlIHJ1bidzIGZpcnN0IHN0ZXAgZXhlY3V0aW9uIHdoZW4gaXQgcXVhbGlmaWVkIGZvciBtZWFzdXJlbWVudCAoc2VlXG4gKiBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwUnNmc01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAucnNmc19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBzeW5jaHJvbm91cyB3b3JrZmxvdy1mdW5jdGlvbiByZXBsYXkgZHVyYXRpb24gaW5cbiAqIG1pbGxpc2Vjb25kcywgZXhjbHVkaW5nIGF3YWl0ZWQgbmV0d29yayBJL08sIG9mIG9ubHkgdGhlIEZJTkFMIHJlcGxheSBwYXNzXG4gKiB3aXRoaW4gdGhlIHJzZnMgd2luZG93OiB0aGUgcGFzcyB0aGF0IHJlYWNoZWQgYW5kIHNjaGVkdWxlZCB0aGUgZmlyc3RcbiAqIHN0ZXAuIE5vdCBhY2N1bXVsYXRlZCBhY3Jvc3MgZWFybGllciBwcmUtZmlyc3Qtc3RlcCBwYXNzZXMgKGUuZy4gYVxuICogd29ya2Zsb3ctYm9keSBgc2V0QXR0cmlidXRlcygpYCBkZXRvdXIgcmVwbGF5cyBtb3JlIHRoYW4gb25jZSwgYW5kIGFcbiAqIHJlZGVsaXZlcnkgb21pdHMgZWFybGllciBpbnZvY2F0aW9ucycgd29yayBlbnRpcmVseSksIHNvIHRoaXMgbXVzdCBub3QgYmVcbiAqIHJlYWQgYXMgXCJ0aGUgcmVwbGF5IHBvcnRpb24gb2YgcnNmc1wiOyBzdGVwLnJzZnNfbXMgY292ZXJzIHRoZSB3aG9sZVxuICogd2luZG93LiBPbmx5IHByZXNlbnQgYWxvbmdzaWRlIHN0ZXAucnNmc19tcyBhbmQgb25seSBmb3IgdGhlIHJ1bidzIGZpcnN0XG4gKiBzdGVwIChzZWUgcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcEZpbmFsU2NoZWR1bGluZ1JlcGxheU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLmZpbmFsX3NjaGVkdWxpbmdfcmVwbGF5X21zJ1xuKTtcblxuLyoqXG4gKiBSdW50aW1lIHN0YXJ0dXAtbGF0ZW5jeSBvcHRpbWl6YXRpb25zIGFjdGl2ZSBmb3IgdGhlIHR0ZnMvc3RzbyBtZWFzdXJlbWVudFxuICogKGUuZy4gJ3R1cmJvJywgJ2xhenlTdGVwU3RhcnQnLCAnb3B0aW1pc3RpY1N0YXJ0JykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwTGF0ZW5jeU9wdGltaXphdGlvbnMgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nW10+KFxuICAnc3RlcC5sYXRlbmN5X29wdGltaXphdGlvbnMnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCB3YXMgc2tpcHBlZCBkdXJpbmcgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcFNraXBwZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3N0ZXAuc2tpcHBlZCcpO1xuXG4vKiogUmVhc29uIHdoeSB0aGUgc3RlcCB3YXMgc2tpcHBlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTa2lwUmVhc29uID1cbiAgU2VtYW50aWNDb252ZW50aW9uPFN0ZXBbJ3N0YXR1cyddPignc3RlcC5za2lwX3JlYXNvbicpO1xuXG4vKiogTnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHN0ZXAgZnVuY3Rpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwQXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAuYXJndW1lbnRzLmNvdW50J1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIHN0ZXAgcmVzdWx0ICovXG5leHBvcnQgY29uc3QgU3RlcFJlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5yZXN1bHQudHlwZScpO1xuXG4vKiogTmFtZSBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgc3RlcCBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgU3RlcEVycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmVycm9yLm5hbWUnKTtcblxuLyoqIEVycm9yIG1lc3NhZ2Ugd2hlbiBzdGVwIGZhaWxzICovXG5leHBvcnQgY29uc3QgU3RlcEVycm9yTWVzc2FnZSA9XG4gIFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmVycm9yLm1lc3NhZ2UnKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgZmFpbGVkIHdpdGggYSBmYXRhbCBlcnJvciAobm8gcmV0cmllcykgKi9cbmV4cG9ydCBjb25zdCBTdGVwRmF0YWxFcnJvciA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignc3RlcC5mYXRhbF9lcnJvcicpO1xuXG4vKiogV2hldGhlciBhbGwgcmV0cnkgYXR0ZW1wdHMgaGF2ZSBiZWVuIGV4aGF1c3RlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeUV4aGF1c3RlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAucmV0cnkuZXhoYXVzdGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIG5leHQgcmV0cnkgYXR0ZW1wdCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeVRpbWVvdXRTZWNvbmRzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLnJldHJ5LnRpbWVvdXRfc2Vjb25kcydcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIHdpbGwgYmUgcmV0cmllZCBhZnRlciB0aGlzIGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlXaWxsUmV0cnkgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnJldHJ5LndpbGxfcmV0cnknXG4pO1xuXG4vLyBRdWV1ZS9NZXNzYWdpbmcgYXR0cmlidXRlcyAtIFN0YW5kYXJkIE9URUwgbWVzc2FnaW5nIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvbWVzc2FnaW5nL21lc3NhZ2luZy1zcGFucy9cblxuLyoqIE1lc3NhZ2luZyBzeXN0ZW0gaWRlbnRpZmllciAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLnN5c3RlbSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdTeXN0ZW0gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignbWVzc2FnaW5nLnN5c3RlbScpO1xuXG4vKiogRGVzdGluYXRpb24gbmFtZS9xdWV1ZSBuYW1lIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcuZGVzdGluYXRpb24ubmFtZSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdEZXN0aW5hdGlvbk5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ21lc3NhZ2luZy5kZXN0aW5hdGlvbi5uYW1lJ1xuKTtcblxuLyoqIFRoZSBtZXNzYWdlIGlkIGJlaW5nIGhhbmRsZWQgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5tZXNzYWdlLmlkKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ01lc3NhZ2VJZCA9IFNlbWFudGljQ29udmVudGlvbjxNZXNzYWdlSWQ+KFxuICAnbWVzc2FnaW5nLm1lc3NhZ2UuaWQnXG4pO1xuXG4vKiogT3BlcmF0aW9uIHR5cGUgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdPcGVyYXRpb25UeXBlID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAncHVibGlzaCcgfCAncmVjZWl2ZScgfCAncHJvY2Vzcydcbj4oJ21lc3NhZ2luZy5vcGVyYXRpb24udHlwZScpO1xuXG4vKiogVGltZSB0YWtlbiB0byBlbnF1ZXVlIHRoZSBtZXNzYWdlIGluIG1pbGxpc2Vjb25kcyAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgUXVldWVPdmVyaGVhZE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5vdmVyaGVhZF9tcydcbik7XG5cbi8vIERlcGxveW1lbnQgYXR0cmlidXRlc1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50ICovXG5leHBvcnQgY29uc3QgRGVwbG95bWVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2RlcGxveW1lbnQuaWQnKTtcblxuLyoqIFRoZSBkZXBsb3ltZW50IGEgcnVuIGlzIHBpbm5lZCB0bywgc2V0IG9ubHkgb24gYSBtaXNyb3V0ZWQgZGVsaXZlcnkuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5QaW5uZWREZXBsb3ltZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnQucGlubmVkX2lkJ1xuKTtcblxuLyoqIFJlLXJvdXRlIGF0dGVtcHRzIGZvciB0aGlzIG1pc3JvdXRlZCBkZWxpdmVyeSwgaW5jbHVkaW5nIHRoaXMgb25lLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RGVwbG95bWVudE1pc21hdGNoUmV0cnlDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZGVwbG95bWVudF9taXNtYXRjaC5yZXRyeV9jb3VudCdcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBtaXNyb3V0ZWQgZGVsaXZlcnkgd2FzIHJlLXJvdXRlZCBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIHJ1bi4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaFJlY292ZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnRfbWlzbWF0Y2gucmVjb3ZlcmVkJ1xuKTtcblxuLy8gSG9vayBhdHRyaWJ1dGVzXG5cbi8qKiBUb2tlbiBpZGVudGlmeWluZyBhIHNwZWNpZmljIGhvb2sgKi9cbmV4cG9ydCBjb25zdCBIb29rVG9rZW4gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cuaG9vay50b2tlbicpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgaG9vayBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IEhvb2tJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ob29rLmlkJyk7XG5cbi8qKiBXaGV0aGVyIGEgaG9vayB3YXMgZm91bmQgYnkgaXRzIHRva2VuICovXG5leHBvcnQgY29uc3QgSG9va0ZvdW5kID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCd3b3JrZmxvdy5ob29rLmZvdW5kJyk7XG5cbi8qKlxuICogUHJvZHVjZXItc2lkZSBzaWduYWwgKG9uIHRoZSBgaG9vay5yZXN1bWVgIHNwYW4pIHRoYXQgdGhlIGRpcmVjdFxuICogYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIGZhaWxlZCB0cmFuc2llbnRseSBidXQgdGhlIHF1ZXVlIGRpc3BhdGNoIHN1Y2NlZWRlZCwgc29cbiAqIHRoZSByZXN1bWUgaXMgcmVjb3ZlcmVkIHZpYSB0aGUgY29uc3VtZXIncyByZS1lbnN1cmUuIENvcnJlc3BvbmRzIHRvXG4gKiBgUmVzdW1lZEhvb2sucmVzaWxpZW50UmVzdW1lID09PSB0cnVlYC5cbiAqXG4gKiBObyBsb25nZXIgZW1pdHRlZDogdGhlIGxhenkgcGF0aCB3cml0ZXMgbm8gZXZlbnQgdG8gZmFpbCwgYW5kIHRoZSBzZXF1ZW50aWFsXG4gKiBwYXRoIGhhcyBubyBxdWV1ZS1kZWxpdmVyZWQgcGF5bG9hZCB0byByZWNvdmVyIGZyb20uIFJldGFpbmVkIHNvIGRhc2hib2FyZHNcbiAqIGFuZCBxdWVyaWVzIGJ1aWx0IG9uIHRoZSBhdHRyaWJ1dGUga2VlcCByZXNvbHZpbmcgd2hpbGUgb2xkZXIgcHJvZHVjZXJzIGFyZVxuICogc3RpbGwgZGVwbG95ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzaWxpZW50UmVzdW1lID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuaG9vay5yZXNpbGllbnRfcmVzdW1lJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSB0aGF0IHRoaXMgcmVwbGF5XG4gKiBtYXRlcmlhbGl6ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudCBmcm9tIHRoZSBxdWV1ZSBtZXNzYWdlJ3MgYGhvb2tJbnB1dGBcbiAqIGJlY2F1c2Ugbm8gY29tbWl0dGVkIGV2ZW50IHdhcyBmb3VuZCwgd2hpY2ggY29tcGxldGVzIHRoZSByZWNvdmVyeSBwYXRoXG4gKiB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0gYmVnYW4uXG4gKlxuICogTGVnYWN5IC8gbm9uLWF0b21pYyByZS1lbnN1cmUgc2lnbmFsIG9ubHkuIEF0b21pYyBsYXp5IHJlc3VtZXNcbiAqIChyZXN1bWVJZCArIGRpZ2VzdCkgZ28gdGhyb3VnaCB0aGUgaG9pc3RlZCBwcmVsb2FkIHdyaXRlIGluc3RlYWQsIHdob3NlXG4gKiByZXNwb25zZSBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSBwcm9kdWNlciBvciB0aGUgY29uc3VtZXIgd29uIHRoZVxuICogYChydW5JZCwgcmVzdW1lSWQpYCBjbGFpbSwgc28gdGhpcyBhdHRyaWJ1dGUgaXMgZGVsaWJlcmF0ZWx5IE5PVCBlbWl0dGVkXG4gKiBmb3IgdGhlbSAoZW1pdHRpbmcgYHRydWVgIHVuY29uZGl0aW9uYWxseSB3b3VsZCBjb3VudCBldmVyeSBwcm9kdWNlci13b25cbiAqIHJlc3VtZSBhcyBhIHJlY292ZXJ5KS4gVGhlIHByb2R1Y2VyLWJlZ2luICh7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0pIC9cbiAqIGNvbnN1bWVyLW1hdGVyaWFsaXplZCBwYWlyaW5nIGlzIHRoZXJlZm9yZSBubyBsb25nZXIgY29tcGxldGUgZm9yIGF0b21pY1xuICogbGF6eSByZXN1bXB0aW9uczsgdXNlIHtAbGluayBIb29rUmVzdW1lU2V0dXBTb3VyY2V9IHRvIG9ic2VydmUgdGhhdCBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgSG9va1Jlc2lsaWVudFJlc3VtZU1hdGVyaWFsaXplZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93Lmhvb2sucmVzaWxpZW50X3Jlc3VtZV9tYXRlcmlhbGl6ZWQnXG4pO1xuXG4vKipcbiAqIENvbnN1bWVyLXNpZGUgc2lnbmFsIChvbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHNwYW4pIG9mIGhvdyBhIGxhenkgaG9va1xuICogcmVzdW1lIGluaXRpYWxpemVkIGl0cyByZXBsYXkgc3RhdGU6XG4gKlxuICogLSBgaG9va19yZWNlaXZlZF9zdHJlYW1gOiB0aGUgaG9pc3RlZCBgaG9va19yZWNlaXZlZGAgd3JpdGUgcmV0dXJuZWQgYVxuICogICB1c2FibGUgcmVwbGF5IHByZWxvYWQgKHJ1biArIGNvbXBsZXRlIGV2ZW50IGxvZyksIHNvIHRoZSBpbnZvY2F0aW9uXG4gKiAgIHNraXBwZWQgYm90aCB0aGUgYHJ1bl9zdGFydGVkYCB3cml0ZSBhbmQgdGhlIGluaXRpYWwgYGV2ZW50cy5saXN0YC5cbiAqIC0gYGhvb2tfcmVjZWl2ZWRfZmFsbGJhY2tgOiB0aGUgaG9pc3RlZCB3cml0ZSBzdWNjZWVkZWQgYnV0IHJldHVybmVkIG5vXG4gKiAgIHVzYWJsZSBwcmVsb2FkIChhIENCT1IgcmVzcG9uc2UgZnJvbSBhbiBvbGRlciBzZXJ2ZXIsIGEgV29ybGQgdGhhdFxuICogICBpZ25vcmVkIHRoZSBvcHQtaW4sIGEgYm91bmRlZCBgaGFzTW9yZWAgcGFnZSwgb3IgYSBwcmVsb2FkIHRoYXQgZmFpbGVkXG4gKiAgIHZhbGlkYXRpb24pOyB0aGUgaW52b2NhdGlvbiBmZWxsIGJhY2sgdG8gdGhlIGBydW5fc3RhcnRlZGAgc2V0dXAgd2l0aG91dFxuICogICByZS1wb3N0aW5nIHRoZSBob29rLlxuICpcbiAqIEFic2VudCBvbiBsZWdhY3kgaG9vayBkZWxpdmVyaWVzIChubyByZXN1bWVJZC9kaWdlc3QpIGFuZCBvbiBldmVyeSBvdGhlclxuICogZGVsaXZlcnkga2luZCwgd2hpY2ggdGFrZSB0aGUgYHJ1bl9zdGFydGVkYCBzZXR1cCB1bmNvbmRpdGlvbmFsbHkuXG4gKlxuICogVGhpcyBpcyBhIGxhdGVuY3kvc2V0dXAtcGF0aCBzaWduYWw6IGl0IHNheXMgd2hpY2ggcmVxdWVzdHMgaW5pdGlhbGl6ZWRcbiAqIHRoZSBpbnZvY2F0aW9uLCBOT1QgdGhhdCB0aGlzIGNvbnN1bWVyIGNyZWF0ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudFxuICogKHRoZSBob2lzdGVkIHdyaXRlIG1heSBlcXVhbGx5IGhhdmUgY29udmVyZ2VkIG9uIHRoZSBwcm9kdWNlcidzLCBzaW5jZVxuICogY2xhaW0gb3duZXJzaGlwIGlzIG5vdCBvYnNlcnZhYmxlIGNsaWVudC1zaWRlOyBjZi5cbiAqIHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lTWF0ZXJpYWxpemVkfSkuXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzdW1lU2V0dXBTb3VyY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VtZV9zZXR1cF9zb3VyY2UnXG4pO1xuXG4vKipcbiAqIFByb2R1Y2VyLXNpZGUgc2lnbmFsIChvbiB0aGUgc3VzcGVuc2lvbiBzcGFuKSBjb3VudGluZyBzdGVwcyB3aG9zZSBkaXJlY3RcbiAqIGBzdGVwX2NyZWF0ZWRgIHdyaXRlIGZhaWxlZCB0cmFuc2llbnRseSB3aGlsZSB0aGVpciBgc3RlcElucHV0YC1jYXJyeWluZ1xuICogcXVldWUgcHVibGlzaCBzdWNjZWVkZWQsIHNvIHN0ZXAgY3JlYXRpb24gaXMgcmVjb3ZlcmVkIHZpYSB0aGUgY29uc3VtZXInc1xuICogcmUtZW5zdXJlLiBNaXJyb3JzIHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lfS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXNpbGllbnREaXNwYXRjaFJlY292ZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcC5yZXNpbGllbnRfZGlzcGF0Y2hfcmVjb3ZlcmVkJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSB0aGF0IHRoaXMgZGVsaXZlcnlcbiAqIG1hdGVyaWFsaXplZCB0aGUgYHN0ZXBfY3JlYXRlZGAgZXZlbnQgZnJvbSB0aGUgcXVldWUgbWVzc2FnZSdzIGBzdGVwSW5wdXRgXG4gKiBiZWNhdXNlIHRoZSBwcm9kdWNlcidzIGRpcmVjdCB3cml0ZSBoYWQgbm90IGxhbmRlZCwgd2hpY2ggY29tcGxldGVzIHRoZVxuICogcmVjb3ZlcnkgcGF0aCB7QGxpbmsgU3RlcFJlc2lsaWVudERpc3BhdGNoUmVjb3ZlcmVkfSBiZWdhbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXNpbGllbnREaXNwYXRjaE1hdGVyaWFsaXplZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnN0ZXAucmVzaWxpZW50X2Rpc3BhdGNoX21hdGVyaWFsaXplZCdcbik7XG5cbi8vIEhvb2stdHJpZ2dlcmVkIHRpbWUtdG8tcmVzdW1lIChUVFIpIGF0dHJpYnV0ZXNcbi8vXG4vLyBTZXQgb24gdGhlIGBzdGVwLmV4ZWN1dGUgPG5hbWU+YCBzcGFuIG9mIHRoZSBGSVJTVCBkdXJhYmxlIHN0ZXAgZm9sbG93aW5nIGFcbi8vIGhvb2sgcmVzdW1lLCBhbmQgb25seSB0aGVyZTogb25lIHJlc3VtcHRpb24gcHJvZHVjZXMgZXhhY3RseSBvbmUgc2FtcGxlLCBzb1xuLy8gYSBsYXRlciBzdGVwIGluIHRoZSBzYW1lIGludm9jYXRpb24sIGEgcmV0cnksIG9yIGEgcmVkZWxpdmVyeSBuZXZlclxuLy8gcmUtcmVwb3J0cyBpdC4gVGhlIHBoYXNlcyBhcmUgbm9uLW92ZXJsYXBwaW5nIGFuZCBzdW0gZXhhY3RseSB0b1xuLy8ge0BsaW5rIFJlc3VtZVRvdGFsTXN9OyBzZWUgcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyBmb3IgdGhlIGJvdW5kYXJ5XG4vLyBkZWZpbml0aW9ucyBhbmQgdGhlIGVtaXNzaW9uIGdhdGUuXG4vL1xuLy8gRGVsaWJlcmF0ZWx5IGNhcnJpZXMgbm8gYHJlc3VtZUlkYCwgcnVuIElELCBvciB0b2tlbjogdGhlIG1ldHJpYyBpcyBtZWFudCB0b1xuLy8gYmUgYWdncmVnYXRlZCBhY3Jvc3MgZXZlcnkgcmVzdW1lLCBhbmQgaGlnaC1jYXJkaW5hbGl0eSBrZXlzIHdvdWxkIG1ha2UgdGhhdFxuLy8gcHJvaGliaXRpdmUuIEV4aXN0aW5nIHRyYWNlLWNvcnJlbGF0aW9uIGZpZWxkcyBvbiB0aGUgc2FtZSBzcGFuIGFyZVxuLy8gdW5jaGFuZ2VkIGFuZCBzdGlsbCBpZGVudGlmeSB0aGUgaW5kaXZpZHVhbCBydW4uXG5cbi8qKiBUb3RhbCBUVFI6IGVudHJ5IGludG8gYHJlc3VtZUhvb2soKWAg4oaSIGltbWVkaWF0ZWx5IGJlZm9yZSBgc3RlcEZuLmFwcGx5KClgLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVRvdGFsTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS50b3RhbF9tcydcbik7XG5cbi8qKiBQaGFzZTogYHJlc3VtZUhvb2soKWAgZW50cnkg4oaSIHRoZSBxdWV1ZSBwdWJsaXNoIGJlaW5nIHJlcXVlc3RlZC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVQcm9kdWNlclByZXBNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnByb2R1Y2VyX3ByZXBfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHF1ZXVlIHB1Ymxpc2ggcmVxdWVzdGVkIOKGkiB0aGUgZmluYWwgY29uc3VtZXIncyBoYW5kbGVyIGJlaW5nIGVudGVyZWQuICovXG5leHBvcnQgY29uc3QgUmVzdW1lUXVldWVEZWxpdmVyeU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2UucXVldWVfZGVsaXZlcnlfbXMnXG4pO1xuXG4vKiogUGhhc2U6IGNvbnN1bWVyIGVudHJ5IOKGkiByZXBsYXkgYmVnaW5uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVNldHVwTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5yZXN1bWVfc2V0dXBfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHJlcGxheSBiZWdpbm5pbmcg4oaSIHRoZSBuZXh0IGR1cmFibGUgc3RlcCBiZWluZyBlbmNvdW50ZXJlZC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVSZXBsYXlNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnJlcGxheV9tcydcbik7XG5cbi8qKiBQaGFzZTogc3RlcCBlbmNvdW50ZXJlZCDihpIgdGhlIGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QgYmVnaW5uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0ZXBEaXNwYXRjaE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2Uuc3RlcF9kaXNwYXRjaF9tcydcbik7XG5cbi8qKlxuICogUGhhc2U6IGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QgYmVnaW5uaW5nIOKGkiBpdHMgcmVzcG9uc2UgcmV0dXJuaW5nLiBPbWl0dGVkXG4gKiB1bmRlciBvcHRpbWlzdGljIGlubGluZSBzdGFydCwgd2hlcmUgdGhlIGNsYWltIGlzIG5vdCBhd2FpdGVkIGJlZm9yZSB0aGVcbiAqIGJvZHkgcnVucyBhbmQgdGhlcmVmb3JlIGhhcyBubyBjb21wbGV0aW9uIGluc3RhbnQgYXQgdGhhdCBwb2ludDsgdGhlIHRpbWVcbiAqIGlzIHRoZW4gcmVwb3J0ZWQgZW50aXJlbHkgYXMge0BsaW5rIFJlc3VtZVN0ZXBQcmVwYXJlTXN9LlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcENsYWltTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5zdGVwX2NsYWltX21zJ1xuKTtcblxuLyoqXG4gKiBQaGFzZTogY2xhaW0gcmV0dXJuaW5nIOKGkiBpbW1lZGlhdGVseSBiZWZvcmUgYHN0ZXBGbi5hcHBseSgpYC4gRGVsaWJlcmF0ZWx5XG4gKiBpbmNsdWRlcyBlbmNyeXB0aW9uLWtleSByZXNvbHV0aW9uLCBhcmd1bWVudCBoeWRyYXRpb24sIGFuZCBzdGVwLWNvbnRleHRcbiAqIHNldHVwOyBgd29ya2Zsb3cucXVldWUuZGVzZXJpYWxpemVfdGltZV9tc2Agc3RpbGwgaXNvbGF0ZXMgaHlkcmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcFByZXBhcmVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnN0ZXBfcHJlcGFyZV9tcydcbik7XG5cbi8qKiBXaGF0IHRyaWdnZXJlZCB0aGUgbWVhc3VyZWQgcmVzdW1wdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVUcmlnZ2VyID0gU2VtYW50aWNDb252ZW50aW9uPCdob29rJz4oXG4gICd3b3JrZmxvdy5yZXN1bWUudHJpZ2dlcidcbik7XG5cbi8qKlxuICogV2hpY2ggYHJlc3VtZUhvb2soKWAgZGlzcGF0Y2ggcGF0aCBwcm9kdWNlZCB0aGlzIHJlc3VtZS4gYHBhcmFsbGVsYCBvbmx5XG4gKiBhcHBlYXJzIGZvciBtZXNzYWdlcyBwdWJsaXNoZWQgYnkgYW4gb2xkZXIgcHJvZHVjZXIsIHdoaWNoIHdyb3RlXG4gKiBgaG9va19yZWNlaXZlZGAgaXRzZWxmIGluIHBhcmFsbGVsIHdpdGggdGhlIHB1Ymxpc2guXG4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTdHJhdGVneSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2xhenknIHwgJ3BhcmFsbGVsJyB8ICdzZXF1ZW50aWFsJ1xuPignd29ya2Zsb3cucmVzdW1lLnN0cmF0ZWd5Jyk7XG5cbi8qKlxuICogSG93IHRoZSBjb25zdW1pbmcgaW52b2NhdGlvbiBpbml0aWFsaXplZCByZXBsYXkgc3RhdGUuIERpc3RpbmN0IGZyb20gdGhlXG4gKiBwcmUtZXhpc3Rpbmcge0BsaW5rIEhvb2tSZXN1bWVTZXR1cFNvdXJjZX0gKGB3b3JrZmxvdy5yZXN1bWVfc2V0dXBfc291cmNlYCxcbiAqIG9uIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3BhbiksIHdoaWNoIHJlcG9ydHMgdGhlIGZpbmVyLWdyYWluZWRcbiAqIGhvaXN0ZWQtd3JpdGUgb3V0Y29tZTsgdGhpcyBvbmUgaXMgdGhlIFRUUiBkaW1lbnNpb24gYW5kIHNoYXJlcyB0aGUgbWV0cmljJ3NcbiAqIHRocmVlLXZhbHVlIHZvY2FidWxhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTZXR1cFNvdXJjZSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2hvb2tfcHJlbG9hZCcgfCAncnVuX3N0YXJ0ZWQnIHwgJ2V2ZW50X2xvYWQnXG4+KCd3b3JrZmxvdy5yZXN1bWUuc2V0dXBfc291cmNlJyk7XG5cbi8qKiBXaGV0aGVyIHRoZSBtZWFzdXJlZCBzdGVwIHJhbiBpbiB0aGUgcmVzdW1pbmcgaW52b2NhdGlvbiBvciBhIHF1ZXVlZCBvbmUuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcEV4ZWN1dGlvbiA9IFNlbWFudGljQ29udmVudGlvbjwnaW5saW5lJyB8ICdkaXNwYXRjaGVkJz4oXG4gICd3b3JrZmxvdy5yZXN1bWUuc3RlcF9leGVjdXRpb24nXG4pO1xuXG4vLyBXZWJob29rIGF0dHJpYnV0ZXNcblxuLyoqIE51bWJlciBvZiB3ZWJob29rIGhhbmRsZXJzIHRyaWdnZXJlZCAqL1xuZXhwb3J0IGNvbnN0IFdlYmhvb2tIYW5kbGVyc1RyaWdnZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd2ViaG9vay5oYW5kbGVycy50cmlnZ2VyZWQnXG4pO1xuXG4vLyBTdXNwZW5zaW9uIGF0dHJpYnV0ZXNcblxuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvblN0YXRlID0gU2VtYW50aWNDb252ZW50aW9uPCdzdXNwZW5kZWQnPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uc3RhdGUnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvbkhvb2tDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5ob29rX2NvdW50J1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25TdGVwQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uc3RlcF9jb3VudCdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uV2FpdENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLndhaXRfY291bnQnXG4pO1xuXG4vLyBXb3JsZC9TdG9yYWdlIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIEhUVFAgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9odHRwL2h0dHAtc3BhbnMvXG5cbi8qKiBIVFRQIHJlcXVlc3QgbWV0aG9kIChzdGFuZGFyZCBPVEVMOiBodHRwLnJlcXVlc3QubWV0aG9kKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSZXF1ZXN0TWV0aG9kID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICdodHRwLnJlcXVlc3QubWV0aG9kJ1xuKTtcblxuLyoqIFJvdXRlIHBhdHRlcm4gZm9yIHRoZSByZXF1ZXN0IChzdGFuZGFyZCBPVEVMOiBodHRwLnJvdXRlKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSb3V0ZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdodHRwLnJvdXRlJyk7XG5cbi8qKiBGdWxsIFVSTCBvZiB0aGUgcmVxdWVzdCAoc3RhbmRhcmQgT1RFTDogdXJsLmZ1bGwpICovXG5leHBvcnQgY29uc3QgVXJsRnVsbCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd1cmwuZnVsbCcpO1xuXG4vKiogU2VydmVyIGhvc3RuYW1lIChzdGFuZGFyZCBPVEVMOiBzZXJ2ZXIuYWRkcmVzcykgKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJBZGRyZXNzID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3NlcnZlci5hZGRyZXNzJyk7XG5cbi8qKiBTZXJ2ZXIgcG9ydCAoc3RhbmRhcmQgT1RFTDogc2VydmVyLnBvcnQpICovXG5leHBvcnQgY29uc3QgU2VydmVyUG9ydCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzZXJ2ZXIucG9ydCcpO1xuXG4vKiogSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZSAoc3RhbmRhcmQgT1RFTDogaHR0cC5yZXNwb25zZS5zdGF0dXNfY29kZSkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUmVzcG9uc2VTdGF0dXNDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdodHRwLnJlc3BvbnNlLnN0YXR1c19jb2RlJ1xuKTtcblxuLyoqIEVycm9yIHR5cGUgd2hlbiByZXF1ZXN0IGZhaWxzIChzdGFuZGFyZCBPVEVMOiBlcnJvci50eXBlKSAqL1xuZXhwb3J0IGNvbnN0IEVycm9yVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdlcnJvci50eXBlJyk7XG5cbi8vIFdvcmxkLXNwZWNpZmljIGN1c3RvbSBhdHRyaWJ1dGVzIChmb3Igd29ya2Zsb3ctc3BlY2lmaWMgY29udGV4dClcblxuLyoqIEZvcm1hdCB1c2VkIGZvciBwYXJzaW5nIHJlc3BvbnNlIGJvZHkgKGNib3Igb3IganNvbikgKi9cbmV4cG9ydCBjb25zdCBXb3JsZFBhcnNlRm9ybWF0ID0gU2VtYW50aWNDb252ZW50aW9uPCdjYm9yJyB8ICdqc29uJz4oXG4gICd3b3JrZmxvdy53b3JsZC5wYXJzZS5mb3JtYXQnXG4pO1xuXG4vLyBFdmVudCBsb2FkaW5nIGF0dHJpYnV0ZXNcblxuLyoqIE51bWJlciBvZiBwYWdpbmF0aW9uIHBhZ2VzIGxvYWRlZCB3aGVuIGZldGNoaW5nIHdvcmtmbG93IGV2ZW50cyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXZlbnRzUGFnZXNMb2FkZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYWdlc19sb2FkZWQnXG4pO1xuXG4vLyBRdWV1ZSB0aW1pbmcgYnJlYWtkb3duIGF0dHJpYnV0ZXMgKHdvcmtmbG93LXNwZWNpZmljKVxuXG4vKiogVGltZSBzcGVudCBkZXNlcmlhbGl6aW5nIHRoZSBxdWV1ZSBtZXNzYWdlIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlRGVzZXJpYWxpemVUaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLmRlc2VyaWFsaXplX3RpbWVfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBleGVjdXRpbmcgdGhlIGhhbmRsZXIgbG9naWMgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVFeGVjdXRpb25UaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLmV4ZWN1dGlvbl90aW1lX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgc2VyaWFsaXppbmcgdGhlIHJlc3BvbnNlIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlU2VyaWFsaXplVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5zZXJpYWxpemVfdGltZV9tcydcbik7XG5cbi8vIFBheWxvYWQgY29tcHJlc3Npb24gYXR0cmlidXRlcyAoenN0ZCBwcmVmZXJyZWQsIGd6aXAgZmFsbGJhY2s7IHNwZWNWZXJzaW9uID49IDUpXG4vL1xuLy8gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvbiBib3VuZGFyeTogYmVmb3JlIGVuY3J5cHRpb24gb24gdGhlXG4vLyB3cml0ZSBwYXRoIGFuZCBhZnRlciBkZWNyeXB0aW9uIG9uIHRoZSByZWFkIHBhdGguIFRoZXkgdGhlcmVmb3JlIHJlZmxlY3Rcbi8vIGNvbXByZXNzaW9uJ3MgZWZmZWN0LCBub3QgdGhlIGF0LXJlc3Qgc2l6ZSAod2hpY2ggYWxzbyBpbmNsdWRlcyB0aGVcbi8vIH4yOC1ieXRlIGBlbmNyYCBlbnZlbG9wZSBhbmQsIG9uIHNvbWUgYmFja2VuZHMsIGJhc2U2NCBleHBhbnNpb24pLlxuXG4vKiogV2hldGhlciB0aGlzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB3YXMgYSB3cml0ZSBvciByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25PcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzZXJpYWxpemUnIHwgJ2Rlc2VyaWFsaXplJ1xuPignd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5vcGVyYXRpb24nKTtcblxuLyoqIFdoZXRoZXIgYSBjb21wcmVzc2lvbiBjb2RlYyB3YXMgYXBwbGllZCAod3JpdGUpIC8gcHJlc2VudCAocmVhZCkuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvbXByZXNzZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzZWQnXG4pO1xuXG4vKiogV2hpY2ggY29tcHJlc3Npb24gY29kZWMgYXBwbGllZCAvIHdhcyBwcmVzZW50IChgenN0ZGAsIGBnemlwYCwgb3IgYG5vbmVgKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29kZWMgPSBTZW1hbnRpY0NvbnZlbnRpb248J3pzdGQnIHwgJ2d6aXAnIHwgJ25vbmUnPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29kZWMnXG4pO1xuXG4vKiogTG9naWNhbCAodW5jb21wcmVzc2VkLCBkZXZhbHVlLXByZWZpeGVkKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblVuY29tcHJlc3NlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnVuY29tcHJlc3NlZF9ieXRlcydcbik7XG5cbi8qKiBTdG9yZWQgKHBvc3QtY29tcHJlc3Npb24sIHByZS1lbmNyeXB0aW9uKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblN0b3JlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnN0b3JlZF9ieXRlcydcbik7XG5cbi8qKiBGcmFjdGlvbiBvZiBieXRlcyBzYXZlZCBieSBjb21wcmVzc2lvbiAoMC4uMSk7IHNldCBvbmx5IHdoZW4gY29tcHJlc3NlZC4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3Npb25SYXRpbyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb21wcmVzc2lvbl9yYXRpbydcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIHdvcmtmbG93IChndWVzdCkgY29kZSBleGVjdXRpb25zIHNlcmlhbGl6YXRpb24gY291bGQgbm90IGF2b2lkXG4gKiAoZ2V0dGVycywgcHJveGllcywgY3VzdG9tIHNlcmlhbGl6ZXJzKTsgc2V0IG9ubHkgd2hlbiBub24temVyby5cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25HdWVzdENvZGVFeGVjdXRpb25zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmd1ZXN0X2NvZGVfZXhlY3V0aW9ucydcbik7XG5cbi8qKlxuICogRGVkdXBsaWNhdGVkIGBraW5kIChkZXRhaWwpYCBkZXNjcmlwdGlvbnMgb2YgdGhlIGd1ZXN0LWNvZGUgZXhlY3V0aW9ucztcbiAqIHNldCBvbmx5IHdoZW4gbm9uLXplcm8uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uR3Vlc3RDb2RlRGV0YWlscyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmdbXT4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmd1ZXN0X2NvZGVfZGV0YWlscydcbik7XG5cbi8vIFJQQy9QZWVyIFNlcnZpY2UgYXR0cmlidXRlcyAtIEZvciBzZXJ2aWNlIG1hcHMgYW5kIGRlcGVuZGVuY3kgdHJhY2tpbmdcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9ycGMvcnBjLXNwYW5zL1xuXG4vKiogVGhlIHJlbW90ZSBzZXJ2aWNlIG5hbWUgZm9yIERhdGFkb2cgc2VydmljZSBtYXBzIChEYXRhZG9nLXNwZWNpZmljOiBwZWVyLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUGVlclNlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncGVlci5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IHJwYy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgUnBjU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zeXN0ZW0nKTtcblxuLyoqIFJQQyBzZXJ2aWNlIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1NlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBtZXRob2QgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBScGNNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLm1ldGhvZCcpO1xuXG4vLyBFcnJvciBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBlcnJvciBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2V4Y2VwdGlvbnMvZXhjZXB0aW9ucy1zcGFucy9cblxuLyoqIFdoZXRoZXIgdGhlIGVycm9yIGlzIHJldHJ5YWJsZSAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgRXJyb3JSZXRyeWFibGUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ2Vycm9yLnJldHJ5YWJsZScpO1xuXG4vKiogRXJyb3IgY2F0ZWdvcnkgKHdvcmtmbG93LXNwZWNpZmljOiBmYXRhbCwgcmV0cnlhYmxlLCB0cmFuc2llbnQpICovXG5leHBvcnQgY29uc3QgRXJyb3JDYXRlZ29yeSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2ZhdGFsJyB8ICdyZXRyeWFibGUnIHwgJ3RyYW5zaWVudCdcbj4oJ2Vycm9yLmNhdGVnb3J5Jyk7XG4iXX0=
@@ -25,7 +25,7 @@ export declare function getWorkflowTraceMode(): WorkflowTraceMode;
25
25
  * Returns whether a serialized trace carrier is usable, i.e. present and
26
26
  * non-empty. `serializeTraceCarrier()` returns `{}` when no OTEL SDK is
27
27
  * registered or no span is active, and `start()` always attaches the
28
- * carrier to the first queue message so an empty carrier must be treated
28
+ * carrier to the first queue message, so an empty carrier must be treated
29
29
  * the same as an absent one wherever the trace-mode logic branches.
30
30
  */
31
31
  export declare function isUsableTraceCarrier(carrier: Record<string, string> | undefined): carrier is Record<string, string>;
@@ -33,7 +33,7 @@ export declare function isUsableTraceCarrier(carrier: Record<string, string> | u
33
33
  * Returns the trace carrier to attach to messages the current invocation
34
34
  * enqueues. In `linked` mode the ORIGINAL run-origin carrier is forwarded
35
35
  * unchanged (when usable) so every future invocation links back to the same
36
- * origin; otherwise `continuous` mode, or no usable incoming carrier
36
+ * origin; otherwise (`continuous` mode, or no usable incoming carrier)
37
37
  * the current (active) context is serialized, so the trace keeps chaining
38
38
  * (continuous) or the first instrumented invocation becomes the de-facto
39
39
  * origin (linked).
@@ -45,7 +45,7 @@ export declare function getNextTraceCarrier(traceMode: WorkflowTraceMode, incomi
45
45
  *
46
46
  * - In `linked` mode the invocation span is a CHILD of the local delivery
47
47
  * (flow-route) context, so the only link is to the run-origin context
48
- * from the message's trace carrier connecting this bounded per-invocation
48
+ * from the message's trace carrier, connecting this bounded per-invocation
49
49
  * trace back to where the run was started. The run-origin context is a
50
50
  * link, never a parent, and re-enqueues forward the original carrier
51
51
  * unchanged, so the whole run is never stitched into one giant trace.
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQjD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAKxD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAUxD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAMjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAoFD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CAgCZ;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,GAAG,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,IAAI,GACb,IAAI,CAON;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wCAQhC;AAED,wBAAsB,aAAa,kCAElC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAa1E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,qCAE7D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAIjC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAMtE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAS/B;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CACjD,sBAAsB,GAAG,SAAS,CACnC,CAgBA"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQjD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAaxD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAcxD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAMjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAuFD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CAgCZ;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,GAAG,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,IAAI,GACb,IAAI,CAON;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wCAQhC;AAED,wBAAsB,aAAa,kCAElC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAa1E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,qCAE7D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAIjC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAMtE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAS/B;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CACjD,sBAAsB,GAAG,SAAS,CACnC,CAgBA"}