@decaf-ts/integrations 0.4.1-2 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/integrations.cjs +4 -4
  2. package/dist/integrations.js +4 -4
  3. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +13 -5
  4. package/lib/cjs/graph/engine/errors/GraphBreakSignal.cjs +37 -0
  5. package/lib/cjs/graph/engine/errors/index.cjs +3 -2
  6. package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs +22 -0
  7. package/lib/cjs/graph/engine/execution/index.cjs +3 -2
  8. package/lib/cjs/graph/engine/index.cjs +4 -2
  9. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +54 -19
  10. package/lib/cjs/graph/engine/types.cjs +2 -2
  11. package/lib/cjs/graph/shared/nodes/flow-control.cjs +41 -3
  12. package/lib/cjs/index.cjs +3 -3
  13. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +7 -2
  14. package/lib/cjs/nest/keycloakAuthHandler.cjs +5 -3
  15. package/lib/cjs/nest/utils.cjs +15 -4
  16. package/lib/cjs/plugins/superset/templates.cjs +14 -20
  17. package/lib/esm/feature-flags/services/FeatureFlag.service.js +13 -5
  18. package/lib/esm/graph/engine/errors/GraphBreakSignal.js +32 -0
  19. package/lib/esm/graph/engine/errors/index.js +2 -1
  20. package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js +17 -0
  21. package/lib/esm/graph/engine/execution/index.js +2 -1
  22. package/lib/esm/graph/engine/index.js +3 -1
  23. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +53 -18
  24. package/lib/esm/graph/engine/types.js +1 -1
  25. package/lib/esm/graph/shared/nodes/flow-control.js +39 -1
  26. package/lib/esm/index.js +3 -3
  27. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +7 -2
  28. package/lib/esm/nest/keycloakAuthHandler.js +4 -2
  29. package/lib/esm/nest/utils.js +14 -3
  30. package/lib/esm/plugins/superset/templates.js +13 -19
  31. package/lib/types/graph/engine/errors/GraphBreakSignal.d.cts +28 -0
  32. package/lib/types/graph/engine/errors/GraphBreakSignal.d.mts +28 -0
  33. package/lib/types/graph/engine/errors/index.d.cts +1 -0
  34. package/lib/types/graph/engine/errors/index.d.mts +1 -0
  35. package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.cts +22 -0
  36. package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.mts +22 -0
  37. package/lib/types/graph/engine/execution/index.d.cts +1 -0
  38. package/lib/types/graph/engine/execution/index.d.mts +1 -0
  39. package/lib/types/graph/engine/index.d.cts +2 -0
  40. package/lib/types/graph/engine/index.d.mts +2 -0
  41. package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.cts +11 -3
  42. package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.mts +11 -3
  43. package/lib/types/graph/engine/types.d.cts +6 -0
  44. package/lib/types/graph/engine/types.d.mts +6 -0
  45. package/lib/types/graph/shared/nodes/flow-control.d.cts +12 -1
  46. package/lib/types/graph/shared/nodes/flow-control.d.mts +12 -1
  47. package/lib/types/index.d.cts +2 -2
  48. package/lib/types/index.d.mts +2 -2
  49. package/package.json +6 -3
  50. package/plugins/superset/Dockerfile +9 -9
@@ -520,6 +520,43 @@ LogFlowNode = __decorate([
520
520
  model()
521
521
  ], LogFlowNode);
522
522
  export { LogFlowNode };
523
+ /**
524
+ * Break — breaks out of the enclosing loop (foreach/while/until). When
525
+ * executed inside a loop body, the loop terminates early and the loop's
526
+ * `completed`/`state` output carries the results collected so far. The
527
+ * Break node executor throws a {@link GraphBreakSignal} that the enclosing
528
+ * loop executor catches.
529
+ */
530
+ let BreakFlowNode = class BreakFlowNode extends Model {
531
+ };
532
+ __decorate([
533
+ required(),
534
+ uielement("textarea", { label: "Value", placeholder: "Value to forward (collected as the last partial result)" }),
535
+ input({ handle: "value" }),
536
+ __metadata("design:type", Object)
537
+ ], BreakFlowNode.prototype, "value", void 0);
538
+ __decorate([
539
+ required(),
540
+ output({ handle: "broken" }),
541
+ __metadata("design:type", Object)
542
+ ], BreakFlowNode.prototype, "broken", void 0);
543
+ BreakFlowNode = __decorate([
544
+ node("core.flow.break", {
545
+ kind: "core.flow.break",
546
+ category: "Flow Control",
547
+ color: "#ef4444",
548
+ icon: "ti-square-arrow-right",
549
+ width: 96,
550
+ height: 96,
551
+ labels: ["flow", "break", "loop", "control"],
552
+ metadata: {
553
+ title: "Break",
554
+ description: "Breaks out of the enclosing loop. The loop terminates early and returns the results collected so far.",
555
+ },
556
+ }),
557
+ model()
558
+ ], BreakFlowNode);
559
+ export { BreakFlowNode };
523
560
  /**
524
561
  * All built-in flow-control node constructors.
525
562
  */
@@ -535,5 +572,6 @@ export const GRAPH_FLOW_CONTROL_NODES = [
535
572
  ReturnFlowNode,
536
573
  CodeFlowNode,
537
574
  LogFlowNode,
575
+ BreakFlowNode,
538
576
  ];
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3NoYXJlZC9ub2Rlcy9mbG93LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sYUFBYSxHQUVkLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBZTtBQUVuQzs7O0dBR0c7QUFnQkksSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVyxTQUFRLEtBQUs7Q0FlcEMsQ0FBQTtBQVhDO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDakYsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzt5Q0FDWDtBQUtoQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0lBQ25GLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQzs7d0NBQ1o7QUFLZjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDO0lBQ3BGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFB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QTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzVFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7MENBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztJQUM3RSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7OzJDQUNaO0FBVE4sV0FBVztJQWR2QixJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ3JCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxhQUFhO1FBQ25CLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFDM0MsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUFFLEtBQUs7WUFDWixXQUFXLEVBQUUseUVBQXlFO1NBQ3ZGO0tBQ0YsQ0FBQztJQUNELEtBQUssRUFBRTtHQUNLLFdBQVcsQ0FVdkI7O0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxVQUFVO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxZQUFZO0lBQ1osV0FBVztDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL25vZGVzL2Zsb3ctY29udHJvbFxuICogQHN1bW1hcnkgUHJvZHVjdGlvbiBmbG93LWNvbnRyb2wgbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICogQGRlc2NyaXB0aW9uIENhbm9uaWNhbCBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIGZvciB0aGUgdGVuIEFMRlJFRC01XG4gKiBmbG93LWNvbnRyb2wga2luZHMuIFRoZXNlIGFyZSBncmFwaC1sZXZlbCBtYWNyb3M6IHRoZSBlbmdpbmUncyBwbGFubmVyXG4gKiByZWNvZ25pc2VzIHRoZW0gYXMgb3JkaW5hcnkgZXhlY3V0YWJsZSBub2RlcyAowqc1LjcpIGJ1dCB0aGV5IGhhdmUgbm9cbiAqIGJ1aWx0LWluIGV4ZWN1dG9ycyDigJQgZG93bnN0cmVhbSBwcm9qZWN0cyAoZS5nLiBBTEZSRUQpIHJlZ2lzdGVyIGN1c3RvbVxuICogZXhlY3V0b3JzIG9yIGNvbXBpbGUgdGhlbSBpbnRvIE1hc3RyYSBjb21wb3NpdGlvbiBBUElzICjCpzIyLjIuMikuXG4gKlxuICogVGhlIHRocmVlIGxvb3Aga2luZHMgKGBjb3JlLmxvb3AuZm9yZWFjaC93aGlsZS91bnRpbGApIGFscmVhZHkgaGF2ZSBidWlsdC1pblxuICogZXhlY3V0b3JzICjCpzUuOSkgYW5kIGFyZSBOT1QgcmVkZWNsYXJlZCBoZXJlLlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50LCBoaWRkZW4gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIGdyYXBoRGVmaW5pdGlvbk9mLFxuICBpbnB1dCxcbiAgbm9kZSxcbiAgb3V0cHV0LFxuICBQb3J0RGlyZWN0aW9uLFxuICB0eXBlIEdyYXBoUG9ydERlZmluaXRpb24sXG59IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlTWV0YWRhdGFDaGFuZ2UsIFN3aXRjaE5vZGVNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgR3JhcGhOb2RlIH0gZnJvbSBcIi4vYmFzZVwiO1xuXG4vKipcbiAqIElmIOKAlCBjb25kaXRpb25hbCBicmFuY2guIEV2YWx1YXRlcyBhIGBDb25kaXRpb25FeHByZXNzaW9uYCAowqcyMi4zKSBhbmRcbiAqIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGB0aGVuYCBvciBgZWxzZWAgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5pZlwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmlmXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZjU5ZTBiXCIsXG4gIGljb246IFwidGktYXJyb3dzLXNwbGl0LTJcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb25kaXRpb25hbFwiLCBcImJyYW5jaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJJZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIHRoZSBjb25maWd1cmVkIGNvbmRpdGlvbiBhbmQgcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgbWF0Y2hpbmcgb3V0cHV0LlwiLFxuICAgIGNvbmRpdGlvbjogeyBvcDogXCJlcVwiLCBsZWZ0OiB7IGNvbnN0OiB0cnVlIH0sIHJpZ2h0OiB7IGNvbnN0OiB0cnVlIH0gfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIElmRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGV2YWx1YXRlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlRoZW5cIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gY29uZGl0aW9uIGlzIHRydWVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInRoZW5cIiB9KVxuICB0aGVuITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFbHNlXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGNvbmRpdGlvbiBpcyBmYWxzZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZWxzZVwiIH0pXG4gIGVsc2UhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFN3aXRjaCDigJQgbXVsdGktYnJhbmNoLiBSb3V0ZXMgdGhlIGlucHV0IHRvIG9uZSBvZiB0aGUgY2FzZSBvdXRwdXQgcG9ydHNcbiAqIG9yIGBkZWZhdWx0YCBiYXNlZCBvbiBtYXRjaGluZyBjb25kaXRpb25zLiBFYWNoIGNhc2UgZGVmaW5lcyBhXG4gKiB7QGxpbmsgU3dpdGNoQ2FzZUNvbmRpdGlvbn0gKGdyYXBoaWNhbCBvciBjb2RlIG1vZGUpIGFuZCBhIGRlZGljYXRlZFxuICogb3V0cHV0IHBvcnQuIENhc2VzIGFyZSBzdG9yZWQgaW4gYG1ldGFkYXRhLnN3aXRjaC5jYXNlc2AgYW5kIHRoZVxuICogcmVuZGVyZXIgY3JlYXRlcyBkeW5hbWljIG91dHB1dCBwb3J0cyBmcm9tIHRoZW0gKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqXG4gKiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLiBFYWNoIGNhc2UgZ2V0cyBpdHMgb3duXG4gKiBvdXRwdXQgcG9ydCBvbiB0aGUgcmlnaHQgc2lkZSwgbGFiZWxlZCB3aXRoIHRoZSBjYXNlIGxhYmVsLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5zd2l0Y2hcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5zd2l0Y2hcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNmOTczMTZcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3Mtc2h1ZmZsZVwiLFxuICB3aWR0aDogMTIwLFxuICBoZWlnaHQ6IDE0MCxcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwic3dpdGNoXCIsIFwibXVsdGktYnJhbmNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlN3aXRjaFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk11bHRpLWJyYW5jaCBzd2l0Y2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIGNhc2Ugb3V0cHV0LCBvciB0aGUgZGVmYXVsdCBvdXRwdXQuXCIsXG4gICAgc3dpdGNoOiB7XG4gICAgICBjYXNlczogW10sXG4gICAgICBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIsXG4gICAgICBoYXNEZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBHcmFwaE5vZGUge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBzd2l0Y2ggb25cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRGVmYXVsdFwiLCBwbGFjZWhvbGRlcjogXCJEZWZhdWx0IG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pXG4gIGRlZmF1bHQhOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbm9kZSdzIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaCBmcm9tIHRoZSBnaXZlbiBzd2l0Y2hcbiAgICogbWV0YWRhdGEuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd24gb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGU7IHRoZVxuICAgKiBgZGVmYXVsdGAgcG9ydCBhbHdheXMgcmVuZGVycyAqKmxhc3QqKiAoREVDQUYtMzIgwqcyMSBwb3J0LW9yZGVyaW5nIHJ1bGUsXG4gICAqIERFQ0FGLTM0IMKnNi4yKS4gV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydFxuICAgKiBpcyBvbWl0dGVkIGVudGlyZWx5LiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLlxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGFwcGx5TWV0YWRhdGEobWV0YTogU3dpdGNoTm9kZU1ldGFkYXRhKTogTm9kZU1ldGFkYXRhQ2hhbmdlIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gZ3JhcGhEZWZpbml0aW9uT2YodGhpcyBhcyBuZXZlcik7XG4gICAgY29uc3QgZGVmYXVsdFBvcnROYW1lID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBoYXNEZWZhdWx0ID0gbWV0YS5oYXNEZWZhdWx0ID09PSB0cnVlO1xuXG4gICAgLy8gQmFzZSBwb3J0cyBleGNsdWRpbmcgYW55IHBvcnQgdGhhdCBjb2xsaWRlcyB3aXRoIGEgY2FzZSBvdXRwdXQgcG9ydC5cbiAgICBjb25zdCBiYXNlUG9ydHMgPSBkZWZpbml0aW9uLnBvcnRzLmZpbHRlcihcbiAgICAgIChwKSA9PiAhbWV0YS5jYXNlcy5zb21lKChjKSA9PiBjLm91dHB1dFBvcnQgPT09IHAucHJvcGVydHkpXG4gICAgKTtcbiAgICAvLyBTZXBhcmF0ZSB0aGUgZGVmYXVsdCBvdXRwdXQgcG9ydCBzbyBpdCBjYW4gYmUgcGxhY2VkIGxhc3QgKG9yIG9taXR0ZWQpLlxuICAgIGNvbnN0IG5vbkRlZmF1bHRQb3J0cyA9IGJhc2VQb3J0cy5maWx0ZXIoXG4gICAgICAocCkgPT4gcC5wcm9wZXJ0eSAhPT0gZGVmYXVsdFBvcnROYW1lXG4gICAgKTtcbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IGJhc2VQb3J0cy5maW5kKChwKSA9PiBwLnByb3BlcnR5ID09PSBkZWZhdWx0UG9ydE5hbWUpO1xuXG4gICAgY29uc3QgY2FzZVBvcnRzOiBHcmFwaFBvcnREZWZpbml0aW9uW10gPSBtZXRhLmNhc2VzLm1hcCgoYykgPT4gKHtcbiAgICAgIHByb3BlcnR5OiBjLm91dHB1dFBvcnQsXG4gICAgICBuYW1lOiBjLmxhYmVsLFxuICAgICAgZGlyZWN0aW9uOiBQb3J0RGlyZWN0aW9uLk9VVFBVVCxcbiAgICAgIGxhYmVsOiBjLmxhYmVsLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIHBhdGg6IGMub3V0cHV0UG9ydCxcbiAgICB9KSk7XG5cbiAgICAvLyBQb3J0IG9yZGVyOiBpbnB1dHMvbm9uLWRlZmF1bHQgb3V0cHV0cyBmaXJzdCwgY2FzZSBvdXRwdXRzIG5leHQsIGRlZmF1bHQgbGFzdC5cbiAgICBjb25zdCBwb3J0cyA9IFsuLi5ub25EZWZhdWx0UG9ydHMsIC4uLmNhc2VQb3J0c107XG4gICAgaWYgKGhhc0RlZmF1bHQgJiYgZGVmYXVsdFBvcnQpIHtcbiAgICAgIHBvcnRzLnB1c2goZGVmYXVsdFBvcnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2VDb3VudCA9IG1ldGEuY2FzZXMubGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICBwb3J0cyxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgd2lkdGg6IGRlZmluaXRpb24ud2lkdGggPz8gMTIwLFxuICAgICAgICBoZWlnaHQ6IGNhc2VDb3VudCA+IDAgPyAxNDAgKyBjYXNlQ291bnQgKiAyNCA6IGRlZmluaXRpb24uaGVpZ2h0ID8/IDE0MCxcbiAgICAgIH0sXG4gICAgICBkYXRhUGF0Y2g6IHsgc3dpdGNoTWV0YWRhdGE6IG1ldGEgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUGFyYWxsZWwg4oCUIHNwbGl0cyBleGVjdXRpb24gaW50byBjb25jdXJyZW50IGJyYW5jaGVzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5wYXJhbGxlbFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnBhcmFsbGVsXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjMDZiNmQ0XCIsXG4gIGljb246IFwidGktYXJyb3dzLXZlcnRpY2FsXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwicGFyYWxsZWxcIiwgXCJjb25jdXJyZW50XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlBhcmFsbGVsXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3BsaXRzIGV4ZWN1dGlvbiBpbnRvIGNvbmN1cnJlbnQgYnJhbmNoZXMuIEFsbCBicmFuY2hlcyBydW4gaW4gcGFyYWxsZWwgYW5kIG91dHB1dHMgYXJlIGNvbGxlY3RlZC5cIixcbiAgICBicmFuY2hDb3VudDogMixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFBhcmFsbGVsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGZhbiBvdXRcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQnJhbmNoZXNcIiwgcGxhY2Vob2xkZXI6IFwiQ29sbGVjdGVkIGJyYW5jaCBvdXRwdXRzXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJicmFuY2hlc1wiIH0pXG4gIGJyYW5jaGVzITogdW5rbm93bltdO1xufVxuXG4vKipcbiAqIE1lcmdlIOKAlCBub3JtYWxpc2VzIGJyYW5jaC9wYXJhbGxlbCBvdXRwdXRzIGludG8gYSBzaW5nbGUgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5tZXJnZVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93Lm1lcmdlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzBkOTQ4OFwiLFxuICBpY29uOiBcInRpLWFycm93cy1tZXJnZVwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcIm1lcmdlXCIsIFwiam9pblwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJNZXJnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk1lcmdlcyBtdWx0aXBsZSBicmFuY2ggb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG5vcm1hbGlzZWQgb3V0cHV0IG9iamVjdC5cIixcbiAgICBzdHJhdGVneTogXCJjb25jYXRcIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE1lcmdlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkJyYW5jaCBvdXRwdXRzXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dHMgdG8gbWVyZ2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVzXCIgfSlcbiAgdmFsdWVzITogdW5rbm93bltdO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIk1lcmdlZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWVyZ2VkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwibWVyZ2VkXCIgfSlcbiAgbWVyZ2VkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBNYXAg4oCUIHRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5tYXBcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5tYXBcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjODRjYzE2XCIsXG4gIGljb246IFwidGktYXJyb3dzLXJpZ2h0LWxlZnRcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtYXBcIiwgXCJ0cmFuc2Zvcm1cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWFwXCIsXG4gICAgZGVzY3JpcHRpb246IFwiVHJhbnNmb3JtcyB0aGUgY3VycmVudCBpbnB1dCBpbnRvIGEgbmV3IG91dHB1dCBvYmplY3QgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgbWFwcGVyLlwiLFxuICAgIG1hcHBlcjoge30sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBNYXBGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gdHJhbnNmb3JtXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlRyYW5zZm9ybWVkIG91dHB1dFwiLCBwbGFjZWhvbGRlcjogXCJNYXBwZWQgcmVzdWx0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIERlbGF5IOKAlCBwYXVzZXMgZXhlY3V0aW9uIGZvciBhIGNvbmZpZ3VyZWQgZHVyYXRpb24uXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmRlbGF5XCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuZGVsYXlcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjYTNhM2EzXCIsXG4gIGljb246IFwidGktY2xvY2staG91ci00XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiZGVsYXlcIiwgXCJ3YWl0XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkRlbGF5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUGF1c2VzIGV4ZWN1dGlvbiBmb3IgdGhlIGNvbmZpZ3VyZWQgZHVyYXRpb24gKGluIG1pbGxpc2Vjb25kcyksIHRoZW4gZm9yd2FyZHMgdGhlIGlucHV0IHVuY2hhbmdlZC5cIixcbiAgICBkdXJhdGlvbk1zOiAxMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRGVsYXlGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZm9yd2FyZCBhZnRlciBkZWxheVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJPdXRwdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlT3V0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBFcnJvciBib3VuZGFyeSDigJQgdHJ5L2NhdGNoL2ZpbmFsbHkgd29ya2Zsb3cgYmVoYXZpb3VyLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5lcnJvckJvdW5kYXJ5XCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2VmNDQ0NFwiLFxuICBpY29uOiBcInRpLXNoaWVsZC1jaGVja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImVycm9yXCIsIFwidHJ5LWNhdGNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkVycm9yIGJvdW5kYXJ5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiV3JhcHMgdGhlIGlucHV0IGluIGEgdHJ5L2NhdGNoL2ZpbmFsbHkuIEVtaXRzIHRoZSByZXN1bHQgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIG9uIGZhaWx1cmUuXCIsXG4gICAgZmluYWxseTogZmFsc2UsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBFcnJvckJvdW5kYXJ5Rmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGd1YXJkXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlc3VsdFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgb24gc3VjY2Vzc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFcnJvclwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgb24gZmFpbHVyZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZXJyb3JcIiB9KVxuICBlcnJvciE6IHVua25vd247XG59XG5cbi8qKlxuICogSHVtYW4gYXBwcm92YWwg4oCUIHN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93Lmh1bWFuQXBwcm92YWxcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5odW1hbkFwcHJvdmFsXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZDk0NmVmXCIsXG4gIGljb246IFwidGktdXNlci1jaGVja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImFwcHJvdmFsXCIsIFwic3VzcGVuZFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJIdW1hbiBhcHByb3ZhbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuIEVtaXRzIHRoZSBhcHByb3ZlZCB2YWx1ZSBvciBhIHJlamVjdGlvbi5cIixcbiAgICBhcHByb3ZlcnM6IFtdLFxuICAgIHRpbWVvdXRNczogODY0MDAwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBIdW1hbkFwcHJvdmFsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHBlbmRpbmcgYXBwcm92YWxcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQXBwcm92ZWRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gYXBwcm92ZWRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImFwcHJvdmVkXCIgfSlcbiAgYXBwcm92ZWQhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlamVjdGVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIHJlamVjdGVkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZWplY3RlZFwiIH0pXG4gIHJlamVjdGVkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBSZXR1cm4g4oCUIGRlZmluZXMgYW5kIG5vcm1hbGlzZXMgdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cucmV0dXJuXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cucmV0dXJuXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzIyYzU1ZVwiLFxuICBpY29uOiBcInRpLWFycm93LWJhY2stdXBcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJyZXR1cm5cIiwgXCJvdXRwdXRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiUmV0dXJuXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTm9ybWFsaXNlcyB0aGUgaW5wdXQgaW50byB0aGUgZmluYWwgd29ya2Zsb3cgb3V0cHV0IG9iamVjdC5cIixcbiAgICBvdXRwdXRTY2hlbWE6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUmV0dXJuRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIG5vcm1hbGlzZVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXR1cm5lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTm9ybWFsaXNlZCBvdXRwdXRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG5cbi8qKlxuICogQ29kZSDigJQgc2FuZGJveGVkIEpTL1RTIGNvZGUgZXhlY3V0aW9uIChBTEZSRUQtNSDCpzcsIERFQ0FGLTMyIMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSdzIHtAbGluayBDb2RlR3JhcGhOb2RlRXhlY3V0b3J9IGRlbGVnYXRlcyB0byB0aGUgcGx1Z2dhYmxlXG4gKiB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9LiBUaGUgZGVmYXVsdFxuICogYElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcmAgKGJhY2tlZCBieSBgaXNvbGF0ZWQtdm1gKSBlbmZvcmNlcyB0aGVcbiAqIENvZGUgTm9kZSByZXN0cmljdGlvbnM6IG5vIGltcG9ydHMsIG5vIHJlcXVpcmVzLCBwdXJlIGZ1bmN0aW9ucyBvbmx5LiBUaGVcbiAqIHNhbmRib3ggY29udGV4dCBleHBvc2VzIGAkaW5wdXRgLCBgJHZhcnNgLCBgJGl0ZW1gLCBgJGluZGV4YCwgYCRub2RlYCwgYW5kXG4gKiBgJG91dHB1dGAgYXMgZGF0YSB2YXJpYWJsZXMuIFR5cGVTY3JpcHQgaXMgc3VwcG9ydGVkIHZpYSB0cmFuc3BpbGF0aW9uLlxuICovXG5cbi8qKlxuICogSW5wdXQgc2NoZW1hIGZvciB0aGUgQ29kZSBub2RlLiBUaGUgYEBpbnB1dGAgb24gYENvZGVGbG93Tm9kZS5pbnB1dGAgaXMgYVxuICogc2NoZW1hIGdyb3VwIOKAlCB0aGUgbmVzdGVkIG1vZGVsJ3MgYEBpbnB1dGAgcG9ydHMgYXJlIHNwbGljZWQgaW50byB0aGVcbiAqIHBhcmVudCB1bnByZWZpeGVkLiBgY29kZWAgaGFzIGBAaW5wdXRgICsgYEB1aWVsZW1lbnQoXCJjb2RlLWVkaXRvclwiKWAsIHNvIGl0XG4gKiBhcHBlYXJzIGFzIGEgcG9ydCBBTkQgaW4gdGhlIENSVUQgbW9kYWwgKHRoZSBvbmx5IHZpc2libGUgZmllbGQpLiBgZGF0YWBcbiAqIGhhcyBgQGlucHV0YCArIGBAaGlkZGVuKClgIGJ1dCBubyBgQHVpZWxlbWVudGAsIHNvIGl0IGlzIGEgY2FudmFzLW9ubHkgcG9ydFxuICogKGZvciBlZGdlIGNvbm5lY3Rpb25zIGZyb20gd29ya2Zsb3cgaW5wdXQgYmFkZ2VzKSBidXQgbmV2ZXIgYXBwZWFycyBpbiB0aGVcbiAqIENSVUQgbW9kYWwuIGBsYW5ndWFnZWAgaGFzIG5vIGBAaW5wdXRgIGFuZCBubyBgQHVpZWxlbWVudGAsIHNvIGl0IGlzXG4gKiBuZWl0aGVyIGEgcG9ydCBub3IgcmVuZGVyZWQg4oCUIGl0IGRlZmF1bHRzIHRvIGBcImphdmFzY3JpcHRcImAuXG4gKi9cbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgQ29kZUlucHV0U2NoZW1hIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBsYW5ndWFnZTogc3RyaW5nID0gXCJqYXZhc2NyaXB0XCI7XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImNvZGUtZWRpdG9yXCIsIHsgbGFiZWw6IFwiQ29kZVwiLCBwbGFjZWhvbGRlcjogXCIvLyBVc2VyLWF1dGhvcmVkIEpTIGNvZGVcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiY29kZVwiIH0pXG4gIGNvZGUhOiBzdHJpbmc7XG5cbiAgQGhpZGRlbigpXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJkYXRhXCIgfSlcbiAgZGF0YT86IHVua25vd247XG59XG5cbkBub2RlKFwiY29yZS5mbG93LmNvZGVcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5jb2RlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzdjM2FlZFwiLFxuICBpY29uOiBcInRpLWNvZGVcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb2RlXCIsIFwic2FuZGJveFwiLCBcInRyYW5zZm9ybVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJDb2RlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUnVucyB1c2VyLWF1dGhvcmVkIEpTL1RTIGluIGEgcmVzdHJpY3RlZCBWTSBzYW5kYm94LiBTdXBwb3J0cyBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cIixcbiAgICB0aW1lb3V0TXM6IDEwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBDb2RlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJpbnB1dFwiLCBtb2RlbDogQ29kZUlucHV0U2NoZW1hIH0pXG4gIGlucHV0ITogQ29kZUlucHV0U2NoZW1hO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBMb2cg4oCUIGxvZ3MgdGhlIGlucHV0IHZhbHVlIGFuZCBmb3J3YXJkcyBpdCB1bmNoYW5nZWQgb24gdGhlIGBsb2dnZWRgXG4gKiBvdXRwdXQgcG9ydC4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcsIGF1ZGl0IHRyYWlscywgYW5kIGRpc2NhcmQvc2lkZS1lZmZlY3RcbiAqIGJyYW5jaGVzIGluIGEgd29ya2Zsb3cuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmxvZ1wiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmxvZ1wiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM2MzY2ZjFcIixcbiAgaWNvbjogXCJ0aS10ZXJtaW5hbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImxvZ1wiLCBcImRlYnVnXCIsIFwidXRpbGl0eVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJMb2dcIixcbiAgICBkZXNjcmlwdGlvbjogXCJMb2dzIHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgZXhlY3V0aW9uIGxvZ2dlciBhbmQgZm9yd2FyZHMgaXQgdW5jaGFuZ2VkLlwiLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTG9nRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGxvZ1wiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJMb2dnZWQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJsb2dnZWRcIiB9KVxuICBsb2dnZWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEFsbCBidWlsdC1pbiBmbG93LWNvbnRyb2wgbm9kZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBHUkFQSF9GTE9XX0NPTlRST0xfTk9ERVMgPSBbXG4gIElmRmxvd05vZGUsXG4gIFN3aXRjaEZsb3dOb2RlLFxuICBQYXJhbGxlbEZsb3dOb2RlLFxuICBNZXJnZUZsb3dOb2RlLFxuICBNYXBGbG93Tm9kZSxcbiAgRGVsYXlGbG93Tm9kZSxcbiAgRXJyb3JCb3VuZGFyeUZsb3dOb2RlLFxuICBIdW1hbkFwcHJvdmFsRmxvd05vZGUsXG4gIFJldHVybkZsb3dOb2RlLFxuICBDb2RlRmxvd05vZGUsXG4gIExvZ0Zsb3dOb2RlLFxuXSBhcyBjb25zdDtcbiJdfQ==
577
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3NoYXJlZC9ub2Rlcy9mbG93LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sYUFBYSxHQUVkLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBZTtBQUVuQzs7O0dBR0c7QUFnQkksSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVyxTQUFRLEtBQUs7Q0FlcEMsQ0FBQTtBQVhDO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDakYsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzt5Q0FDWDtBQUtoQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0lBQ25GLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQzs7d0NBQ1o7QUFLZjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDO0lBQ3BGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFB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LEVBQUUsQ0FBQzs7NkNBQ1o7QUFSTixhQUFhO0lBZHpCLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtRQUN2QixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQztRQUM1QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsT0FBTztZQUNkLFdBQVcsRUFBRSx1R0FBdUc7U0FDckg7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssYUFBYSxDQVN6Qjs7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFVBQVU7SUFDVixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixXQUFXO0lBQ1gsYUFBYTtJQUNiLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsY0FBYztJQUNkLFlBQVk7SUFDWixXQUFXO0lBQ1gsYUFBYTtDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL25vZGVzL2Zsb3ctY29udHJvbFxuICogQHN1bW1hcnkgUHJvZHVjdGlvbiBmbG93LWNvbnRyb2wgbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICogQGRlc2NyaXB0aW9uIENhbm9uaWNhbCBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIGZvciB0aGUgdGVuIEFMRlJFRC01XG4gKiBmbG93LWNvbnRyb2wga2luZHMuIFRoZXNlIGFyZSBncmFwaC1sZXZlbCBtYWNyb3M6IHRoZSBlbmdpbmUncyBwbGFubmVyXG4gKiByZWNvZ25pc2VzIHRoZW0gYXMgb3JkaW5hcnkgZXhlY3V0YWJsZSBub2RlcyAowqc1LjcpIGJ1dCB0aGV5IGhhdmUgbm9cbiAqIGJ1aWx0LWluIGV4ZWN1dG9ycyDigJQgZG93bnN0cmVhbSBwcm9qZWN0cyAoZS5nLiBBTEZSRUQpIHJlZ2lzdGVyIGN1c3RvbVxuICogZXhlY3V0b3JzIG9yIGNvbXBpbGUgdGhlbSBpbnRvIE1hc3RyYSBjb21wb3NpdGlvbiBBUElzICjCpzIyLjIuMikuXG4gKlxuICogVGhlIHRocmVlIGxvb3Aga2luZHMgKGBjb3JlLmxvb3AuZm9yZWFjaC93aGlsZS91bnRpbGApIGFscmVhZHkgaGF2ZSBidWlsdC1pblxuICogZXhlY3V0b3JzICjCpzUuOSkgYW5kIGFyZSBOT1QgcmVkZWNsYXJlZCBoZXJlLlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50LCBoaWRkZW4gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIGdyYXBoRGVmaW5pdGlvbk9mLFxuICBpbnB1dCxcbiAgbm9kZSxcbiAgb3V0cHV0LFxuICBQb3J0RGlyZWN0aW9uLFxuICB0eXBlIEdyYXBoUG9ydERlZmluaXRpb24sXG59IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlTWV0YWRhdGFDaGFuZ2UsIFN3aXRjaE5vZGVNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgR3JhcGhOb2RlIH0gZnJvbSBcIi4vYmFzZVwiO1xuXG4vKipcbiAqIElmIOKAlCBjb25kaXRpb25hbCBicmFuY2guIEV2YWx1YXRlcyBhIGBDb25kaXRpb25FeHByZXNzaW9uYCAowqcyMi4zKSBhbmRcbiAqIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGB0aGVuYCBvciBgZWxzZWAgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5pZlwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmlmXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZjU5ZTBiXCIsXG4gIGljb246IFwidGktYXJyb3dzLXNwbGl0LTJcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb25kaXRpb25hbFwiLCBcImJyYW5jaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJJZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIHRoZSBjb25maWd1cmVkIGNvbmRpdGlvbiBhbmQgcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgbWF0Y2hpbmcgb3V0cHV0LlwiLFxuICAgIGNvbmRpdGlvbjogeyBvcDogXCJlcVwiLCBsZWZ0OiB7IGNvbnN0OiB0cnVlIH0sIHJpZ2h0OiB7IGNvbnN0OiB0cnVlIH0gfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIElmRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGV2YWx1YXRlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlRoZW5cIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gY29uZGl0aW9uIGlzIHRydWVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInRoZW5cIiB9KVxuICB0aGVuITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFbHNlXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGNvbmRpdGlvbiBpcyBmYWxzZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZWxzZVwiIH0pXG4gIGVsc2UhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFN3aXRjaCDigJQgbXVsdGktYnJhbmNoLiBSb3V0ZXMgdGhlIGlucHV0IHRvIG9uZSBvZiB0aGUgY2FzZSBvdXRwdXQgcG9ydHNcbiAqIG9yIGBkZWZhdWx0YCBiYXNlZCBvbiBtYXRjaGluZyBjb25kaXRpb25zLiBFYWNoIGNhc2UgZGVmaW5lcyBhXG4gKiB7QGxpbmsgU3dpdGNoQ2FzZUNvbmRpdGlvbn0gKGdyYXBoaWNhbCBvciBjb2RlIG1vZGUpIGFuZCBhIGRlZGljYXRlZFxuICogb3V0cHV0IHBvcnQuIENhc2VzIGFyZSBzdG9yZWQgaW4gYG1ldGFkYXRhLnN3aXRjaC5jYXNlc2AgYW5kIHRoZVxuICogcmVuZGVyZXIgY3JlYXRlcyBkeW5hbWljIG91dHB1dCBwb3J0cyBmcm9tIHRoZW0gKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqXG4gKiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLiBFYWNoIGNhc2UgZ2V0cyBpdHMgb3duXG4gKiBvdXRwdXQgcG9ydCBvbiB0aGUgcmlnaHQgc2lkZSwgbGFiZWxlZCB3aXRoIHRoZSBjYXNlIGxhYmVsLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5zd2l0Y2hcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5zd2l0Y2hcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNmOTczMTZcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3Mtc2h1ZmZsZVwiLFxuICB3aWR0aDogMTIwLFxuICBoZWlnaHQ6IDE0MCxcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwic3dpdGNoXCIsIFwibXVsdGktYnJhbmNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlN3aXRjaFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk11bHRpLWJyYW5jaCBzd2l0Y2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIGNhc2Ugb3V0cHV0LCBvciB0aGUgZGVmYXVsdCBvdXRwdXQuXCIsXG4gICAgc3dpdGNoOiB7XG4gICAgICBjYXNlczogW10sXG4gICAgICBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIsXG4gICAgICBoYXNEZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBHcmFwaE5vZGUge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBzd2l0Y2ggb25cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRGVmYXVsdFwiLCBwbGFjZWhvbGRlcjogXCJEZWZhdWx0IG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pXG4gIGRlZmF1bHQhOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbm9kZSdzIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaCBmcm9tIHRoZSBnaXZlbiBzd2l0Y2hcbiAgICogbWV0YWRhdGEuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd24gb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGU7IHRoZVxuICAgKiBgZGVmYXVsdGAgcG9ydCBhbHdheXMgcmVuZGVycyAqKmxhc3QqKiAoREVDQUYtMzIgwqcyMSBwb3J0LW9yZGVyaW5nIHJ1bGUsXG4gICAqIERFQ0FGLTM0IMKnNi4yKS4gV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydFxuICAgKiBpcyBvbWl0dGVkIGVudGlyZWx5LiBUaGUgbm9kZSBncm93cyBpbiBoZWlnaHQgYXMgY2FzZXMgYXJlIGFkZGVkLlxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGFwcGx5TWV0YWRhdGEobWV0YTogU3dpdGNoTm9kZU1ldGFkYXRhKTogTm9kZU1ldGFkYXRhQ2hhbmdlIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gZ3JhcGhEZWZpbml0aW9uT2YodGhpcyBhcyBuZXZlcik7XG4gICAgY29uc3QgZGVmYXVsdFBvcnROYW1lID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBoYXNEZWZhdWx0ID0gbWV0YS5oYXNEZWZhdWx0ID09PSB0cnVlO1xuXG4gICAgLy8gQmFzZSBwb3J0cyBleGNsdWRpbmcgYW55IHBvcnQgdGhhdCBjb2xsaWRlcyB3aXRoIGEgY2FzZSBvdXRwdXQgcG9ydC5cbiAgICBjb25zdCBiYXNlUG9ydHMgPSBkZWZpbml0aW9uLnBvcnRzLmZpbHRlcihcbiAgICAgIChwKSA9PiAhbWV0YS5jYXNlcy5zb21lKChjKSA9PiBjLm91dHB1dFBvcnQgPT09IHAucHJvcGVydHkpXG4gICAgKTtcbiAgICAvLyBTZXBhcmF0ZSB0aGUgZGVmYXVsdCBvdXRwdXQgcG9ydCBzbyBpdCBjYW4gYmUgcGxhY2VkIGxhc3QgKG9yIG9taXR0ZWQpLlxuICAgIGNvbnN0IG5vbkRlZmF1bHRQb3J0cyA9IGJhc2VQb3J0cy5maWx0ZXIoXG4gICAgICAocCkgPT4gcC5wcm9wZXJ0eSAhPT0gZGVmYXVsdFBvcnROYW1lXG4gICAgKTtcbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IGJhc2VQb3J0cy5maW5kKChwKSA9PiBwLnByb3BlcnR5ID09PSBkZWZhdWx0UG9ydE5hbWUpO1xuXG4gICAgY29uc3QgY2FzZVBvcnRzOiBHcmFwaFBvcnREZWZpbml0aW9uW10gPSBtZXRhLmNhc2VzLm1hcCgoYykgPT4gKHtcbiAgICAgIHByb3BlcnR5OiBjLm91dHB1dFBvcnQsXG4gICAgICBuYW1lOiBjLmxhYmVsLFxuICAgICAgZGlyZWN0aW9uOiBQb3J0RGlyZWN0aW9uLk9VVFBVVCxcbiAgICAgIGxhYmVsOiBjLmxhYmVsLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIHBhdGg6IGMub3V0cHV0UG9ydCxcbiAgICB9KSk7XG5cbiAgICAvLyBQb3J0IG9yZGVyOiBpbnB1dHMvbm9uLWRlZmF1bHQgb3V0cHV0cyBmaXJzdCwgY2FzZSBvdXRwdXRzIG5leHQsIGRlZmF1bHQgbGFzdC5cbiAgICBjb25zdCBwb3J0cyA9IFsuLi5ub25EZWZhdWx0UG9ydHMsIC4uLmNhc2VQb3J0c107XG4gICAgaWYgKGhhc0RlZmF1bHQgJiYgZGVmYXVsdFBvcnQpIHtcbiAgICAgIHBvcnRzLnB1c2goZGVmYXVsdFBvcnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2VDb3VudCA9IG1ldGEuY2FzZXMubGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICBwb3J0cyxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgd2lkdGg6IGRlZmluaXRpb24ud2lkdGggPz8gMTIwLFxuICAgICAgICBoZWlnaHQ6IGNhc2VDb3VudCA+IDAgPyAxNDAgKyBjYXNlQ291bnQgKiAyNCA6IGRlZmluaXRpb24uaGVpZ2h0ID8/IDE0MCxcbiAgICAgIH0sXG4gICAgICBkYXRhUGF0Y2g6IHsgc3dpdGNoTWV0YWRhdGE6IG1ldGEgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUGFyYWxsZWwg4oCUIHNwbGl0cyBleGVjdXRpb24gaW50byBjb25jdXJyZW50IGJyYW5jaGVzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5wYXJhbGxlbFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnBhcmFsbGVsXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjMDZiNmQ0XCIsXG4gIGljb246IFwidGktYXJyb3dzLXZlcnRpY2FsXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwicGFyYWxsZWxcIiwgXCJjb25jdXJyZW50XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlBhcmFsbGVsXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3BsaXRzIGV4ZWN1dGlvbiBpbnRvIGNvbmN1cnJlbnQgYnJhbmNoZXMuIEFsbCBicmFuY2hlcyBydW4gaW4gcGFyYWxsZWwgYW5kIG91dHB1dHMgYXJlIGNvbGxlY3RlZC5cIixcbiAgICBicmFuY2hDb3VudDogMixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFBhcmFsbGVsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGZhbiBvdXRcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQnJhbmNoZXNcIiwgcGxhY2Vob2xkZXI6IFwiQ29sbGVjdGVkIGJyYW5jaCBvdXRwdXRzXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJicmFuY2hlc1wiIH0pXG4gIGJyYW5jaGVzITogdW5rbm93bltdO1xufVxuXG4vKipcbiAqIE1lcmdlIOKAlCBub3JtYWxpc2VzIGJyYW5jaC9wYXJhbGxlbCBvdXRwdXRzIGludG8gYSBzaW5nbGUgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5tZXJnZVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93Lm1lcmdlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzBkOTQ4OFwiLFxuICBpY29uOiBcInRpLWFycm93cy1tZXJnZVwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcIm1lcmdlXCIsIFwiam9pblwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJNZXJnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk1lcmdlcyBtdWx0aXBsZSBicmFuY2ggb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG5vcm1hbGlzZWQgb3V0cHV0IG9iamVjdC5cIixcbiAgICBzdHJhdGVneTogXCJjb25jYXRcIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE1lcmdlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkJyYW5jaCBvdXRwdXRzXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dHMgdG8gbWVyZ2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVzXCIgfSlcbiAgdmFsdWVzITogdW5rbm93bltdO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIk1lcmdlZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWVyZ2VkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwibWVyZ2VkXCIgfSlcbiAgbWVyZ2VkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBNYXAg4oCUIHRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5tYXBcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5tYXBcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjODRjYzE2XCIsXG4gIGljb246IFwidGktYXJyb3dzLXJpZ2h0LWxlZnRcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtYXBcIiwgXCJ0cmFuc2Zvcm1cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWFwXCIsXG4gICAgZGVzY3JpcHRpb246IFwiVHJhbnNmb3JtcyB0aGUgY3VycmVudCBpbnB1dCBpbnRvIGEgbmV3IG91dHB1dCBvYmplY3QgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgbWFwcGVyLlwiLFxuICAgIG1hcHBlcjoge30sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBNYXBGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gdHJhbnNmb3JtXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlRyYW5zZm9ybWVkIG91dHB1dFwiLCBwbGFjZWhvbGRlcjogXCJNYXBwZWQgcmVzdWx0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIERlbGF5IOKAlCBwYXVzZXMgZXhlY3V0aW9uIGZvciBhIGNvbmZpZ3VyZWQgZHVyYXRpb24uXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmRlbGF5XCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuZGVsYXlcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjYTNhM2EzXCIsXG4gIGljb246IFwidGktY2xvY2staG91ci00XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiZGVsYXlcIiwgXCJ3YWl0XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkRlbGF5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUGF1c2VzIGV4ZWN1dGlvbiBmb3IgdGhlIGNvbmZpZ3VyZWQgZHVyYXRpb24gKGluIG1pbGxpc2Vjb25kcyksIHRoZW4gZm9yd2FyZHMgdGhlIGlucHV0IHVuY2hhbmdlZC5cIixcbiAgICBkdXJhdGlvbk1zOiAxMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRGVsYXlGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZm9yd2FyZCBhZnRlciBkZWxheVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJPdXRwdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlT3V0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBFcnJvciBib3VuZGFyeSDigJQgdHJ5L2NhdGNoL2ZpbmFsbHkgd29ya2Zsb3cgYmVoYXZpb3VyLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5lcnJvckJvdW5kYXJ5XCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2VmNDQ0NFwiLFxuICBpY29uOiBcInRpLXNoaWVsZC1jaGVja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImVycm9yXCIsIFwidHJ5LWNhdGNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkVycm9yIGJvdW5kYXJ5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiV3JhcHMgdGhlIGlucHV0IGluIGEgdHJ5L2NhdGNoL2ZpbmFsbHkuIEVtaXRzIHRoZSByZXN1bHQgb24gc3VjY2Vzcywgb3IgdGhlIGVycm9yIG9uIGZhaWx1cmUuXCIsXG4gICAgZmluYWxseTogZmFsc2UsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBFcnJvckJvdW5kYXJ5Rmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGd1YXJkXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlc3VsdFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgb24gc3VjY2Vzc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFcnJvclwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgb24gZmFpbHVyZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZXJyb3JcIiB9KVxuICBlcnJvciE6IHVua25vd247XG59XG5cbi8qKlxuICogSHVtYW4gYXBwcm92YWwg4oCUIHN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93Lmh1bWFuQXBwcm92YWxcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5odW1hbkFwcHJvdmFsXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZDk0NmVmXCIsXG4gIGljb246IFwidGktdXNlci1jaGVja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImFwcHJvdmFsXCIsIFwic3VzcGVuZFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJIdW1hbiBhcHByb3ZhbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuIEVtaXRzIHRoZSBhcHByb3ZlZCB2YWx1ZSBvciBhIHJlamVjdGlvbi5cIixcbiAgICBhcHByb3ZlcnM6IFtdLFxuICAgIHRpbWVvdXRNczogODY0MDAwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBIdW1hbkFwcHJvdmFsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHBlbmRpbmcgYXBwcm92YWxcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQXBwcm92ZWRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gYXBwcm92ZWRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImFwcHJvdmVkXCIgfSlcbiAgYXBwcm92ZWQhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlamVjdGVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIHJlamVjdGVkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZWplY3RlZFwiIH0pXG4gIHJlamVjdGVkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBSZXR1cm4g4oCUIGRlZmluZXMgYW5kIG5vcm1hbGlzZXMgdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cucmV0dXJuXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cucmV0dXJuXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzIyYzU1ZVwiLFxuICBpY29uOiBcInRpLWFycm93LWJhY2stdXBcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJyZXR1cm5cIiwgXCJvdXRwdXRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiUmV0dXJuXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTm9ybWFsaXNlcyB0aGUgaW5wdXQgaW50byB0aGUgZmluYWwgd29ya2Zsb3cgb3V0cHV0IG9iamVjdC5cIixcbiAgICBvdXRwdXRTY2hlbWE6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUmV0dXJuRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIG5vcm1hbGlzZVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXR1cm5lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTm9ybWFsaXNlZCBvdXRwdXRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG5cbi8qKlxuICogQ29kZSDigJQgc2FuZGJveGVkIEpTL1RTIGNvZGUgZXhlY3V0aW9uIChBTEZSRUQtNSDCpzcsIERFQ0FGLTMyIMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSdzIHtAbGluayBDb2RlR3JhcGhOb2RlRXhlY3V0b3J9IGRlbGVnYXRlcyB0byB0aGUgcGx1Z2dhYmxlXG4gKiB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9LiBUaGUgZGVmYXVsdFxuICogYElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcmAgKGJhY2tlZCBieSBgaXNvbGF0ZWQtdm1gKSBlbmZvcmNlcyB0aGVcbiAqIENvZGUgTm9kZSByZXN0cmljdGlvbnM6IG5vIGltcG9ydHMsIG5vIHJlcXVpcmVzLCBwdXJlIGZ1bmN0aW9ucyBvbmx5LiBUaGVcbiAqIHNhbmRib3ggY29udGV4dCBleHBvc2VzIGAkaW5wdXRgLCBgJHZhcnNgLCBgJGl0ZW1gLCBgJGluZGV4YCwgYCRub2RlYCwgYW5kXG4gKiBgJG91dHB1dGAgYXMgZGF0YSB2YXJpYWJsZXMuIFR5cGVTY3JpcHQgaXMgc3VwcG9ydGVkIHZpYSB0cmFuc3BpbGF0aW9uLlxuICovXG5cbi8qKlxuICogSW5wdXQgc2NoZW1hIGZvciB0aGUgQ29kZSBub2RlLiBUaGUgYEBpbnB1dGAgb24gYENvZGVGbG93Tm9kZS5pbnB1dGAgaXMgYVxuICogc2NoZW1hIGdyb3VwIOKAlCB0aGUgbmVzdGVkIG1vZGVsJ3MgYEBpbnB1dGAgcG9ydHMgYXJlIHNwbGljZWQgaW50byB0aGVcbiAqIHBhcmVudCB1bnByZWZpeGVkLiBgY29kZWAgaGFzIGBAaW5wdXRgICsgYEB1aWVsZW1lbnQoXCJjb2RlLWVkaXRvclwiKWAsIHNvIGl0XG4gKiBhcHBlYXJzIGFzIGEgcG9ydCBBTkQgaW4gdGhlIENSVUQgbW9kYWwgKHRoZSBvbmx5IHZpc2libGUgZmllbGQpLiBgZGF0YWBcbiAqIGhhcyBgQGlucHV0YCArIGBAaGlkZGVuKClgIGJ1dCBubyBgQHVpZWxlbWVudGAsIHNvIGl0IGlzIGEgY2FudmFzLW9ubHkgcG9ydFxuICogKGZvciBlZGdlIGNvbm5lY3Rpb25zIGZyb20gd29ya2Zsb3cgaW5wdXQgYmFkZ2VzKSBidXQgbmV2ZXIgYXBwZWFycyBpbiB0aGVcbiAqIENSVUQgbW9kYWwuIGBsYW5ndWFnZWAgaGFzIG5vIGBAaW5wdXRgIGFuZCBubyBgQHVpZWxlbWVudGAsIHNvIGl0IGlzXG4gKiBuZWl0aGVyIGEgcG9ydCBub3IgcmVuZGVyZWQg4oCUIGl0IGRlZmF1bHRzIHRvIGBcImphdmFzY3JpcHRcImAuXG4gKi9cbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgQ29kZUlucHV0U2NoZW1hIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBsYW5ndWFnZTogc3RyaW5nID0gXCJqYXZhc2NyaXB0XCI7XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImNvZGUtZWRpdG9yXCIsIHsgbGFiZWw6IFwiQ29kZVwiLCBwbGFjZWhvbGRlcjogXCIvLyBVc2VyLWF1dGhvcmVkIEpTIGNvZGVcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiY29kZVwiIH0pXG4gIGNvZGUhOiBzdHJpbmc7XG5cbiAgQGhpZGRlbigpXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJkYXRhXCIgfSlcbiAgZGF0YT86IHVua25vd247XG59XG5cbkBub2RlKFwiY29yZS5mbG93LmNvZGVcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5jb2RlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzdjM2FlZFwiLFxuICBpY29uOiBcInRpLWNvZGVcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb2RlXCIsIFwic2FuZGJveFwiLCBcInRyYW5zZm9ybVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJDb2RlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUnVucyB1c2VyLWF1dGhvcmVkIEpTL1RTIGluIGEgcmVzdHJpY3RlZCBWTSBzYW5kYm94LiBTdXBwb3J0cyBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cIixcbiAgICB0aW1lb3V0TXM6IDEwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBDb2RlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJpbnB1dFwiLCBtb2RlbDogQ29kZUlucHV0U2NoZW1hIH0pXG4gIGlucHV0ITogQ29kZUlucHV0U2NoZW1hO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBMb2cg4oCUIGxvZ3MgdGhlIGlucHV0IHZhbHVlIGFuZCBmb3J3YXJkcyBpdCB1bmNoYW5nZWQgb24gdGhlIGBsb2dnZWRgXG4gKiBvdXRwdXQgcG9ydC4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcsIGF1ZGl0IHRyYWlscywgYW5kIGRpc2NhcmQvc2lkZS1lZmZlY3RcbiAqIGJyYW5jaGVzIGluIGEgd29ya2Zsb3cuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmxvZ1wiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmxvZ1wiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM2MzY2ZjFcIixcbiAgaWNvbjogXCJ0aS10ZXJtaW5hbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImxvZ1wiLCBcImRlYnVnXCIsIFwidXRpbGl0eVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJMb2dcIixcbiAgICBkZXNjcmlwdGlvbjogXCJMb2dzIHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgZXhlY3V0aW9uIGxvZ2dlciBhbmQgZm9yd2FyZHMgaXQgdW5jaGFuZ2VkLlwiLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTG9nRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGxvZ1wiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJMb2dnZWQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJsb2dnZWRcIiB9KVxuICBsb2dnZWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEJyZWFrIOKAlCBicmVha3Mgb3V0IG9mIHRoZSBlbmNsb3NpbmcgbG9vcCAoZm9yZWFjaC93aGlsZS91bnRpbCkuIFdoZW5cbiAqIGV4ZWN1dGVkIGluc2lkZSBhIGxvb3AgYm9keSwgdGhlIGxvb3AgdGVybWluYXRlcyBlYXJseSBhbmQgdGhlIGxvb3Anc1xuICogYGNvbXBsZXRlZGAvYHN0YXRlYCBvdXRwdXQgY2FycmllcyB0aGUgcmVzdWx0cyBjb2xsZWN0ZWQgc28gZmFyLiBUaGVcbiAqIEJyZWFrIG5vZGUgZXhlY3V0b3IgdGhyb3dzIGEge0BsaW5rIEdyYXBoQnJlYWtTaWduYWx9IHRoYXQgdGhlIGVuY2xvc2luZ1xuICogbG9vcCBleGVjdXRvciBjYXRjaGVzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5icmVha1wiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmJyZWFrXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZWY0NDQ0XCIsXG4gIGljb246IFwidGktc3F1YXJlLWFycm93LXJpZ2h0XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiYnJlYWtcIiwgXCJsb29wXCIsIFwiY29udHJvbFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJCcmVha1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkJyZWFrcyBvdXQgb2YgdGhlIGVuY2xvc2luZyBsb29wLiBUaGUgbG9vcCB0ZXJtaW5hdGVzIGVhcmx5IGFuZCByZXR1cm5zIHRoZSByZXN1bHRzIGNvbGxlY3RlZCBzbyBmYXIuXCIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBCcmVha0Zsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJWYWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBmb3J3YXJkIChjb2xsZWN0ZWQgYXMgdGhlIGxhc3QgcGFydGlhbCByZXN1bHQpXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiYnJva2VuXCIgfSlcbiAgYnJva2VuITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBbGwgYnVpbHQtaW4gZmxvdy1jb250cm9sIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfRkxPV19DT05UUk9MX05PREVTID0gW1xuICBJZkZsb3dOb2RlLFxuICBTd2l0Y2hGbG93Tm9kZSxcbiAgUGFyYWxsZWxGbG93Tm9kZSxcbiAgTWVyZ2VGbG93Tm9kZSxcbiAgTWFwRmxvd05vZGUsXG4gIERlbGF5Rmxvd05vZGUsXG4gIEVycm9yQm91bmRhcnlGbG93Tm9kZSxcbiAgSHVtYW5BcHByb3ZhbEZsb3dOb2RlLFxuICBSZXR1cm5GbG93Tm9kZSxcbiAgQ29kZUZsb3dOb2RlLFxuICBMb2dGbG93Tm9kZSxcbiAgQnJlYWtGbG93Tm9kZSxcbl0gYXMgY29uc3Q7XG4iXX0=
package/lib/esm/index.js CHANGED
@@ -6,8 +6,8 @@
6
6
  export * from "./utils.js";
7
7
  export * from "./namespaces/index.js";
8
8
  export * from "./feature-flags/index.js";
9
- export const VERSION = "0.4.1-1";
10
- export const COMMIT = "7ccddad";
11
- export const FULL_VERSION = "0.4.1-1-7ccddad";
9
+ export const VERSION = "0.5.1";
10
+ export const COMMIT = "e21cc70";
11
+ export const FULL_VERSION = "0.5.1-e21cc70";
12
12
  export const PACKAGE_NAME = "@decaf-ts/integrations";
13
13
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDJCQUF3QjtBQUN4QixzQ0FBNkI7QUFDN0IseUNBQWdDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBVyxhQUFhLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFXLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnNcbiAqIEBzdW1tYXJ5IFBhY2thZ2UgZW50cnkgcG9pbnQgZm9yIHNoYXJlZCBpbnRlZ3JhdGlvbiBoZWxwZXJzLlxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHBhY2thZ2UgdXRpbGl0aWVzIGFuZCBidWlsZC10aW1lIHZlcnNpb24gbWV0YWRhdGEgZm9yIGBAZGVjYWYtdHMvaW50ZWdyYXRpb25zYC5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25hbWVzcGFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZlYXR1cmUtZmxhZ3NcIjtcblxuZXhwb3J0IGNvbnN0IFZFUlNJT046IHN0cmluZyA9IFwiIyNWRVJTSU9OIyNcIjtcblxuZXhwb3J0IGNvbnN0IENPTU1JVCA9IFwiIyNDT01NSVQjI1wiO1xuXG5leHBvcnQgY29uc3QgRlVMTF9WRVJTSU9OID0gXCIjI0ZVTExfVkVSU0lPTiMjXCI7XG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUU6IHN0cmluZyA9IFwiIyNQQUNLQUdFIyNcIjtcbiJdfQ==
@@ -8,7 +8,8 @@
8
8
  * on the returned registry before it is handed to the
9
9
  * {@link GraphExecutionEngine}.
10
10
  */
11
- import { GraphNodeExecutorRegistry, ForeachGraphNodeExecutor, WhileGraphNodeExecutor, UntilGraphNodeExecutor, CodeGraphNodeExecutor, LogGraphNodeExecutor, SwitchGraphNodeExecutor, IsolatedVmCodeSandboxEvaluator, } from "./../../graph/index.js";
11
+ import { GraphNodeExecutorRegistry, ForeachGraphNodeExecutor, WhileGraphNodeExecutor, UntilGraphNodeExecutor, CodeGraphNodeExecutor, LogGraphNodeExecutor, SwitchGraphNodeExecutor, BreakGraphNodeExecutor, IsolatedVmCodeSandboxEvaluator, } from "./../../graph/index.js";
12
+ import { GraphBreakSignal } from "./../../graph/engine/errors/GraphBreakSignal.js";
12
13
  const executorMap = {
13
14
  "math.add": (input) => ({ sum: Number(input.a) + Number(input.b) }),
14
15
  "math.multiply": (input) => ({ product: Number(input.x) * 2 }),
@@ -20,6 +21,9 @@ const executorMap = {
20
21
  "core.flow.parallel": (input) => ({ branches: [input["value"] ?? input] }),
21
22
  "core.flow.errorBoundary": (input) => ({ result: input["value"] ?? input }),
22
23
  "core.flow.humanApproval": (input) => ({ approved: input["value"] ?? input }),
24
+ "core.flow.break": (input) => {
25
+ throw new GraphBreakSignal(input["value"]);
26
+ },
23
27
  "core.agent": (input) => ({
24
28
  response: `[Agent response] ${String(input["prompt"] ?? "")}`,
25
29
  actions: [],
@@ -83,7 +87,8 @@ export function createDemoEngineConfig() {
83
87
  registry.register("core.flow.code", new CodeGraphNodeExecutor(engine));
84
88
  registry.register("core.flow.log", new LogGraphNodeExecutor());
85
89
  registry.register("core.flow.switch", new SwitchGraphNodeExecutor(engine));
90
+ registry.register("core.flow.break", new BreakGraphNodeExecutor());
86
91
  },
87
92
  };
88
93
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRvclJlZ2lzdHJ5RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0b3JSZWdpc3RyeUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUNMLHlCQUF5QixFQUt6Qix3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2Qiw4QkFBOEIsR0FDL0IsK0JBQW9CO0FBT3JCLE1BQU0sV0FBVyxHQUErQjtJQUM5QyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkUsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzdFLGlCQUFpQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUNyRSxrQkFBa0IsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxFQUFF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LGtCQUFrQixFQUFFLElBQUksdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL25lc3QvZ3JhcGgvR3JhcGhFeGVjdXRvclJlZ2lzdHJ5RmFjdG9yeVxuICogQHN1bW1hcnkgRmFjdG9yeSB0aGF0IGJ1aWxkcyBhIHBvcHVsYXRlZCB7QGxpbmsgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeX0uXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHJlZ2lzdHJ5IHByZS1sb2FkZWQgd2l0aCB0aGUgZGVtbyBleGVjdXRvcnMgdXNlZCBieVxuICogdGhlIGdyYXBoIGV4ZWN1dGlvbiBiYWNrZW5kJ3Mgc2FtcGxlIHdvcmtmbG93cy4gVGhlIGV4ZWN1dG9ycyBjb3ZlciB0aGVcbiAqIGZsb3ctY29udHJvbCBraW5kcyAoaW5jbHVkaW5nIENvZGUsIExvZywgYW5kIFN3aXRjaCB3aXRoIGNvZGUgY29uZGl0aW9ucyksXG4gKiB0aGUgYWdlbnQga2luZCwgYW5kIHRoZSBsb29wIGtpbmRzLiBBZGRpdGlvbmFsIGV4ZWN1dG9ycyBjYW4gYmUgcmVnaXN0ZXJlZFxuICogb24gdGhlIHJldHVybmVkIHJlZ2lzdHJ5IGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlXG4gKiB7QGxpbmsgR3JhcGhFeGVjdXRpb25FbmdpbmV9LlxuICovXG5pbXBvcnQge1xuICBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5LFxuICBHcmFwaEV4ZWN1dGlvbkVuZ2luZSxcbiAgdHlwZSBHcmFwaE5vZGVFeGVjdXRvcixcbiAgdHlwZSBHcmFwaEV4ZWN1dGlvbkNvbnRleHQsXG4gIHR5cGUgR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIEZvcmVhY2hHcmFwaE5vZGVFeGVjdXRvcixcbiAgV2hpbGVHcmFwaE5vZGVFeGVjdXRvcixcbiAgVW50aWxHcmFwaE5vZGVFeGVjdXRvcixcbiAgQ29kZUdyYXBoTm9kZUV4ZWN1dG9yLFxuICBMb2dHcmFwaE5vZGVFeGVjdXRvcixcbiAgU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IsXG4gIElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcixcbn0gZnJvbSBcIi4uLy4uL2dyYXBoXCI7XG5cbnR5cGUgRXhlY3V0b3JGbiA9IChcbiAgaW5wdXQ6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHQsXG4pID0+IEdyYXBoRXhlY3V0aW9uVmFsdWVzIHwgUHJvbWlzZTxHcmFwaEV4ZWN1dGlvblZhbHVlcz47XG5cbmNvbnN0IGV4ZWN1dG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBFeGVjdXRvckZuPiA9IHtcbiAgXCJtYXRoLmFkZFwiOiAoaW5wdXQpID0+ICh7IHN1bTogTnVtYmVyKGlucHV0LmEpICsgTnVtYmVyKGlucHV0LmIpIH0pLFxuICBcIm1hdGgubXVsdGlwbHlcIjogKGlucHV0KSA9PiAoeyBwcm9kdWN0OiBOdW1iZXIoaW5wdXQueCkgKiAyIH0pLFxuICBcImNvcmUuZmxvdy5tYXBcIjogKGlucHV0KSA9PiAoeyByZXN1bHQ6IHsgbWFwcGVkOiBpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0IH0gfSksXG4gIFwiY29yZS5mbG93LmRlbGF5XCI6IChpbnB1dCkgPT4gKHsgdmFsdWVPdXQ6IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQgfSksXG4gIFwiY29yZS5mbG93LnJldHVyblwiOiAoaW5wdXQpID0+ICh7IHJlc3VsdDogaW5wdXRbXCJ2YWx1ZVwiXSA/PyBpbnB1dCB9KSxcbiAgXCJjb3JlLmZsb3cubWVyZ2VcIjogKGlucHV0KSA9PiAoeyBtZXJnZWQ6IGlucHV0W1widmFsdWVzXCJdID8/IGlucHV0IH0pLFxuICBcImNvcmUuZmxvdy5pZlwiOiAoaW5wdXQpID0+ICh7IHRoZW46IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQgfSksXG4gIFwiY29yZS5mbG93LnBhcmFsbGVsXCI6IChpbnB1dCkgPT4gKHsgYnJhbmNoZXM6IFtpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0XSB9KSxcbiAgXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiOiAoaW5wdXQpID0+ICh7IHJlc3VsdDogaW5wdXRbXCJ2YWx1ZVwiXSA/PyBpbnB1dCB9KSxcbiAgXCJjb3JlLmZsb3cuaHVtYW5BcHByb3ZhbFwiOiAoaW5wdXQpID0+ICh7IGFwcHJvdmVkOiBpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0IH0pLFxuICBcImNvcmUuYWdlbnRcIjogKGlucHV0KSA9PiAoe1xuICAgIHJlc3BvbnNlOiBgW0FnZW50IHJlc3BvbnNlXSAke1N0cmluZyhpbnB1dFtcInByb21wdFwiXSA/PyBcIlwiKX1gLFxuICAgIGFjdGlvbnM6IFtdLFxuICB9KSxcbn07XG5cbi8qKlxuICogQnVpbGRzIGEge0BsaW5rIEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnl9IHBvcHVsYXRlZCB3aXRoIHRoZSBkZW1vIGV4ZWN1dG9ycy5cbiAqXG4gKiBFeGVjdXRvcnMgYXJlIHJlZ2lzdGVyZWQgYnkgKipub2RlIGtpbmQqKiAodGhlIHNhbWUga2V5IHRoZSBlbmdpbmUgdXNlcyB0b1xuICogcmVzb2x2ZSBleGVjdXRvcnMgYXQgcnVudGltZSkuIFRoZSBmb3ItYW5ndWxhciBkZW1vIG5vZGVzIHVzZSB0aGUga2luZCBhc1xuICogdGhlaXIgdGFnLCBzbyB0aGUgc2FtZSBrZXkgd29ya3MgZm9yIGJvdGggZGlzcGF0Y2gtYnkta2luZCBhbmRcbiAqIGRpc3BhdGNoLWJ5LXRhZy5cbiAqXG4gKiBSZWdpc3RlcmVkIGtpbmRzOlxuICogLSBgbWF0aC5hZGRgLCBgbWF0aC5tdWx0aXBseWAg4oCUIGFyaXRobWV0aWMgZGVtbyBleGVjdXRvcnMuXG4gKiAtIGBjb3JlLmZsb3cuKmAg4oCUIGZsb3ctY29udHJvbCBraW5kcyAobWFwLCBkZWxheSwgcmV0dXJuLCBtZXJnZSwgaWYsXG4gKiAgIHBhcmFsbGVsLCBlcnJvckJvdW5kYXJ5LCBodW1hbkFwcHJvdmFsKS4gVGhlIGBjb3JlLmZsb3cuY29kZWAsXG4gKiAgIGBjb3JlLmZsb3cubG9nYCwgYW5kIGBjb3JlLmZsb3cuc3dpdGNoYCBraW5kcyBhcmUgcmVnaXN0ZXJlZCBpblxuICogICBgb25FbmdpbmVDcmVhdGVkYCB2aWEgdGhlaXIgcmVhbCBleGVjdXRvcnMgYmVjYXVzZSBDb2RlIGFuZCBTd2l0Y2hcbiAqICAgbmVlZCB0aGUgZW5naW5lJ3MgYGNvZGVTYW5kYm94RXZhbHVhdG9yYC5cbiAqIC0gYGNvcmUuYWdlbnRgIOKAlCBhZ2VudCBub2RlLlxuICogLSBgY29yZS5sb29wLmZvcmVhY2hgLCBgY29yZS5sb29wLndoaWxlYCwgYGNvcmUubG9vcC51bnRpbGAg4oCUIGxvb3AgZXhlY3V0b3JzXG4gKiAgIChyZWdpc3RlcmVkIGFmdGVyIHRoZSBlbmdpbmUgaXMgY3JlYXRlZCB2aWEgYG9uRW5naW5lQ3JlYXRlZGApLlxuICpcbiAqIEBwYXJhbSBleHRyYSAtIEFkZGl0aW9uYWwgZXhlY3V0b3JzIHRvIG1lcmdlIGludG8gdGhlIHJlZ2lzdHJ5LlxuICogQHJldHVybnMgQSBwb3B1bGF0ZWQgcmVnaXN0cnkgcmVhZHkgZm9yIHVzZSB3aXRoIHtAbGluayBHcmFwaEV4ZWN1dGlvbkVuZ2luZX0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmFwaEV4ZWN1dG9yUmVnaXN0cnkoXG4gIGV4dHJhPzogUmVjb3JkPHN0cmluZywgR3JhcGhOb2RlRXhlY3V0b3I+LFxuKTogR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeSB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnkoKTtcblxuICBmb3IgKGNvbnN0IFtraW5kLCBmbl0gb2YgT2JqZWN0LmVudHJpZXMoZXhlY3V0b3JNYXApKSB7XG4gICAgcmVnaXN0cnkucmVnaXN0ZXIoa2luZCwgeyBleGVjdXRlOiBmbiB9KTtcbiAgfVxuXG4gIGlmIChleHRyYSkge1xuICAgIGZvciAoY29uc3QgW2tpbmQsIGV4ZWN1dG9yXSBvZiBPYmplY3QuZW50cmllcyhleHRyYSkpIHtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKGtpbmQsIGV4ZWN1dG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVnaXN0cnk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEge0BsaW5rIEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnfSBwb3B1bGF0ZWQgd2l0aCBhbGwgZGVtbyBleGVjdXRvcnNcbiAqIGluY2x1ZGluZyBsb29wIGV4ZWN1dG9ycyB0aGF0IG5lZWQgYSBiYWNrLXJlZmVyZW5jZSB0byB0aGUgZW5naW5lIGFuZCB0aGVcbiAqIENvZGUgbm9kZSBleGVjdXRvciB0aGF0IG5lZWRzIHRoZSBlbmdpbmUncyBgY29kZVNhbmRib3hFdmFsdWF0b3JgLlxuICpcbiAqIFRoZSBjb25maWcgd2lyZXMgYW4ge0BsaW5rIElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcn0gKGJhY2tlZCBieVxuICogYGlzb2xhdGVkLXZtYCkgc28gdGhlIENvZGUgTm9kZSBydW5zIGluIGEgdHJ1bHkgaXNvbGF0ZWQgVjggc2FuZGJveC5cbiAqXG4gKiBAcmV0dXJucyBBIGNvbmZpZyBvYmplY3QgcmVhZHkgZm9yIGBuZXcgR3JhcGhFeGVjdXRpb25FbmdpbmUoY29uZmlnKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZW1vRW5naW5lQ29uZmlnKCk6IHtcbiAgcmVnaXN0cnk6IEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnk7XG4gIGRlZmF1bHRPcHRpb25zOiB7IGZhaWxGYXN0OiBib29sZWFuIH07XG4gIGNvZGVTYW5kYm94RXZhbHVhdG9yOiBJc29sYXRlZFZtQ29kZVNhbmRib3hFdmFsdWF0b3I7XG4gIG9uRW5naW5lQ3JlYXRlZDogKGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUpID0+IHZvaWQ7XG59IHtcbiAgY29uc3QgcmVnaXN0cnkgPSBjcmVhdGVHcmFwaEV4ZWN1dG9yUmVnaXN0cnkoKTtcbiAgY29uc3QgY29kZVNhbmRib3hFdmFsdWF0b3IgPSBuZXcgSXNvbGF0ZWRWbUNvZGVTYW5kYm94RXZhbHVhdG9yKCk7XG5cbiAgcmV0dXJuIHtcbiAgICByZWdpc3RyeSxcbiAgICBkZWZhdWx0T3B0aW9uczogeyBmYWlsRmFzdDogZmFsc2UgfSxcbiAgICBjb2RlU2FuZGJveEV2YWx1YXRvcixcbiAgICBvbkVuZ2luZUNyZWF0ZWQ6IChlbmdpbmU6IEdyYXBoRXhlY3V0aW9uRW5naW5lKSA9PiB7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlcihcImNvcmUubG9vcC5mb3JlYWNoXCIsIG5ldyBGb3JlYWNoR3JhcGhOb2RlRXhlY3V0b3IoZW5naW5lKSk7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlcihcImNvcmUubG9vcC53aGlsZVwiLCBuZXcgV2hpbGVHcmFwaE5vZGVFeGVjdXRvcihlbmdpbmUpKTtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKFwiY29yZS5sb29wLnVudGlsXCIsIG5ldyBVbnRpbEdyYXBoTm9kZUV4ZWN1dG9yKGVuZ2luZSkpO1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoXCJjb3JlLmZsb3cuY29kZVwiLCBuZXcgQ29kZUdyYXBoTm9kZUV4ZWN1dG9yKGVuZ2luZSkpO1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoXCJjb3JlLmZsb3cubG9nXCIsIG5ldyBMb2dHcmFwaE5vZGVFeGVjdXRvcigpKTtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKFwiY29yZS5mbG93LnN3aXRjaFwiLCBuZXcgU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IoZW5naW5lKSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRvclJlZ2lzdHJ5RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0b3JSZWdpc3RyeUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUNMLHlCQUF5QixFQUt6Qix3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsOEJBQThCLEdBQy9CLCtCQUFvQjtBQUNyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0RBQW1EO0FBTzlFLE1BQU0sV0FBVyxHQUErQjtJQUM5QyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkUsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzdFLGlCQUFpQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUNyRSxrQkFBa0IsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxF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USxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdkUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7WUFDL0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0UsUUFBUSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL25lc3QvZ3JhcGgvR3JhcGhFeGVjdXRvclJlZ2lzdHJ5RmFjdG9yeVxuICogQHN1bW1hcnkgRmFjdG9yeSB0aGF0IGJ1aWxkcyBhIHBvcHVsYXRlZCB7QGxpbmsgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeX0uXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHJlZ2lzdHJ5IHByZS1sb2FkZWQgd2l0aCB0aGUgZGVtbyBleGVjdXRvcnMgdXNlZCBieVxuICogdGhlIGdyYXBoIGV4ZWN1dGlvbiBiYWNrZW5kJ3Mgc2FtcGxlIHdvcmtmbG93cy4gVGhlIGV4ZWN1dG9ycyBjb3ZlciB0aGVcbiAqIGZsb3ctY29udHJvbCBraW5kcyAoaW5jbHVkaW5nIENvZGUsIExvZywgYW5kIFN3aXRjaCB3aXRoIGNvZGUgY29uZGl0aW9ucyksXG4gKiB0aGUgYWdlbnQga2luZCwgYW5kIHRoZSBsb29wIGtpbmRzLiBBZGRpdGlvbmFsIGV4ZWN1dG9ycyBjYW4gYmUgcmVnaXN0ZXJlZFxuICogb24gdGhlIHJldHVybmVkIHJlZ2lzdHJ5IGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlXG4gKiB7QGxpbmsgR3JhcGhFeGVjdXRpb25FbmdpbmV9LlxuICovXG5pbXBvcnQge1xuICBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5LFxuICBHcmFwaEV4ZWN1dGlvbkVuZ2luZSxcbiAgdHlwZSBHcmFwaE5vZGVFeGVjdXRvcixcbiAgdHlwZSBHcmFwaEV4ZWN1dGlvbkNvbnRleHQsXG4gIHR5cGUgR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIEZvcmVhY2hHcmFwaE5vZGVFeGVjdXRvcixcbiAgV2hpbGVHcmFwaE5vZGVFeGVjdXRvcixcbiAgVW50aWxHcmFwaE5vZGVFeGVjdXRvcixcbiAgQ29kZUdyYXBoTm9kZUV4ZWN1dG9yLFxuICBMb2dHcmFwaE5vZGVFeGVjdXRvcixcbiAgU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IsXG4gIEJyZWFrR3JhcGhOb2RlRXhlY3V0b3IsXG4gIElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcixcbn0gZnJvbSBcIi4uLy4uL2dyYXBoXCI7XG5pbXBvcnQgeyBHcmFwaEJyZWFrU2lnbmFsIH0gZnJvbSBcIi4uLy4uL2dyYXBoL2VuZ2luZS9lcnJvcnMvR3JhcGhCcmVha1NpZ25hbFwiO1xuXG50eXBlIEV4ZWN1dG9yRm4gPSAoXG4gIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0LFxuKSA9PiBHcmFwaEV4ZWN1dGlvblZhbHVlcyB8IFByb21pc2U8R3JhcGhFeGVjdXRpb25WYWx1ZXM+O1xuXG5jb25zdCBleGVjdXRvck1hcDogUmVjb3JkPHN0cmluZywgRXhlY3V0b3JGbj4gPSB7XG4gIFwibWF0aC5hZGRcIjogKGlucHV0KSA9PiAoeyBzdW06IE51bWJlcihpbnB1dC5hKSArIE51bWJlcihpbnB1dC5iKSB9KSxcbiAgXCJtYXRoLm11bHRpcGx5XCI6IChpbnB1dCkgPT4gKHsgcHJvZHVjdDogTnVtYmVyKGlucHV0LngpICogMiB9KSxcbiAgXCJjb3JlLmZsb3cubWFwXCI6IChpbnB1dCkgPT4gKHsgcmVzdWx0OiB7IG1hcHBlZDogaW5wdXRbXCJ2YWx1ZVwiXSA/PyBpbnB1dCB9IH0pLFxuICBcImNvcmUuZmxvdy5kZWxheVwiOiAoaW5wdXQpID0+ICh7IHZhbHVlT3V0OiBpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0IH0pLFxuICBcImNvcmUuZmxvdy5yZXR1cm5cIjogKGlucHV0KSA9PiAoeyByZXN1bHQ6IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQgfSksXG4gIFwiY29yZS5mbG93Lm1lcmdlXCI6IChpbnB1dCkgPT4gKHsgbWVyZ2VkOiBpbnB1dFtcInZhbHVlc1wiXSA/PyBpbnB1dCB9KSxcbiAgXCJjb3JlLmZsb3cuaWZcIjogKGlucHV0KSA9PiAoeyB0aGVuOiBpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0IH0pLFxuICBcImNvcmUuZmxvdy5wYXJhbGxlbFwiOiAoaW5wdXQpID0+ICh7IGJyYW5jaGVzOiBbaW5wdXRbXCJ2YWx1ZVwiXSA/PyBpbnB1dF0gfSksXG4gIFwiY29yZS5mbG93LmVycm9yQm91bmRhcnlcIjogKGlucHV0KSA9PiAoeyByZXN1bHQ6IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQgfSksXG4gIFwiY29yZS5mbG93Lmh1bWFuQXBwcm92YWxcIjogKGlucHV0KSA9PiAoeyBhcHByb3ZlZDogaW5wdXRbXCJ2YWx1ZVwiXSA/PyBpbnB1dCB9KSxcbiAgXCJjb3JlLmZsb3cuYnJlYWtcIjogKGlucHV0KSA9PiB7XG4gICAgdGhyb3cgbmV3IEdyYXBoQnJlYWtTaWduYWwoaW5wdXRbXCJ2YWx1ZVwiXSk7XG4gIH0sXG4gIFwiY29yZS5hZ2VudFwiOiAoaW5wdXQpID0+ICh7XG4gICAgcmVzcG9uc2U6IGBbQWdlbnQgcmVzcG9uc2VdICR7U3RyaW5nKGlucHV0W1wicHJvbXB0XCJdID8/IFwiXCIpfWAsXG4gICAgYWN0aW9uczogW10sXG4gIH0pLFxufTtcblxuLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeX0gcG9wdWxhdGVkIHdpdGggdGhlIGRlbW8gZXhlY3V0b3JzLlxuICpcbiAqIEV4ZWN1dG9ycyBhcmUgcmVnaXN0ZXJlZCBieSAqKm5vZGUga2luZCoqICh0aGUgc2FtZSBrZXkgdGhlIGVuZ2luZSB1c2VzIHRvXG4gKiByZXNvbHZlIGV4ZWN1dG9ycyBhdCBydW50aW1lKS4gVGhlIGZvci1hbmd1bGFyIGRlbW8gbm9kZXMgdXNlIHRoZSBraW5kIGFzXG4gKiB0aGVpciB0YWcsIHNvIHRoZSBzYW1lIGtleSB3b3JrcyBmb3IgYm90aCBkaXNwYXRjaC1ieS1raW5kIGFuZFxuICogZGlzcGF0Y2gtYnktdGFnLlxuICpcbiAqIFJlZ2lzdGVyZWQga2luZHM6XG4gKiAtIGBtYXRoLmFkZGAsIGBtYXRoLm11bHRpcGx5YCDigJQgYXJpdGhtZXRpYyBkZW1vIGV4ZWN1dG9ycy5cbiAqIC0gYGNvcmUuZmxvdy4qYCDigJQgZmxvdy1jb250cm9sIGtpbmRzIChtYXAsIGRlbGF5LCByZXR1cm4sIG1lcmdlLCBpZixcbiAqICAgcGFyYWxsZWwsIGVycm9yQm91bmRhcnksIGh1bWFuQXBwcm92YWwpLiBUaGUgYGNvcmUuZmxvdy5jb2RlYCxcbiAqICAgYGNvcmUuZmxvdy5sb2dgLCBhbmQgYGNvcmUuZmxvdy5zd2l0Y2hgIGtpbmRzIGFyZSByZWdpc3RlcmVkIGluXG4gKiAgIGBvbkVuZ2luZUNyZWF0ZWRgIHZpYSB0aGVpciByZWFsIGV4ZWN1dG9ycyBiZWNhdXNlIENvZGUgYW5kIFN3aXRjaFxuICogICBuZWVkIHRoZSBlbmdpbmUncyBgY29kZVNhbmRib3hFdmFsdWF0b3JgLlxuICogLSBgY29yZS5hZ2VudGAg4oCUIGFnZW50IG5vZGUuXG4gKiAtIGBjb3JlLmxvb3AuZm9yZWFjaGAsIGBjb3JlLmxvb3Aud2hpbGVgLCBgY29yZS5sb29wLnVudGlsYCDigJQgbG9vcCBleGVjdXRvcnNcbiAqICAgKHJlZ2lzdGVyZWQgYWZ0ZXIgdGhlIGVuZ2luZSBpcyBjcmVhdGVkIHZpYSBgb25FbmdpbmVDcmVhdGVkYCkuXG4gKlxuICogQHBhcmFtIGV4dHJhIC0gQWRkaXRpb25hbCBleGVjdXRvcnMgdG8gbWVyZ2UgaW50byB0aGUgcmVnaXN0cnkuXG4gKiBAcmV0dXJucyBBIHBvcHVsYXRlZCByZWdpc3RyeSByZWFkeSBmb3IgdXNlIHdpdGgge0BsaW5rIEdyYXBoRXhlY3V0aW9uRW5naW5lfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyYXBoRXhlY3V0b3JSZWdpc3RyeShcbiAgZXh0cmE/OiBSZWNvcmQ8c3RyaW5nLCBHcmFwaE5vZGVFeGVjdXRvcj4sXG4pOiBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5IHtcbiAgY29uc3QgcmVnaXN0cnkgPSBuZXcgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeSgpO1xuXG4gIGZvciAoY29uc3QgW2tpbmQsIGZuXSBvZiBPYmplY3QuZW50cmllcyhleGVjdXRvck1hcCkpIHtcbiAgICByZWdpc3RyeS5yZWdpc3RlcihraW5kLCB7IGV4ZWN1dGU6IGZuIH0pO1xuICB9XG5cbiAgaWYgKGV4dHJhKSB7XG4gICAgZm9yIChjb25zdCBba2luZCwgZXhlY3V0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGV4dHJhKSkge1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoa2luZCwgZXhlY3V0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWdpc3RyeTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25FbmdpbmVDb25maWd9IHBvcHVsYXRlZCB3aXRoIGFsbCBkZW1vIGV4ZWN1dG9yc1xuICogaW5jbHVkaW5nIGxvb3AgZXhlY3V0b3JzIHRoYXQgbmVlZCBhIGJhY2stcmVmZXJlbmNlIHRvIHRoZSBlbmdpbmUgYW5kIHRoZVxuICogQ29kZSBub2RlIGV4ZWN1dG9yIHRoYXQgbmVlZHMgdGhlIGVuZ2luZSdzIGBjb2RlU2FuZGJveEV2YWx1YXRvcmAuXG4gKlxuICogVGhlIGNvbmZpZyB3aXJlcyBhbiB7QGxpbmsgSXNvbGF0ZWRWbUNvZGVTYW5kYm94RXZhbHVhdG9yfSAoYmFja2VkIGJ5XG4gKiBgaXNvbGF0ZWQtdm1gKSBzbyB0aGUgQ29kZSBOb2RlIHJ1bnMgaW4gYSB0cnVseSBpc29sYXRlZCBWOCBzYW5kYm94LlxuICpcbiAqIEByZXR1cm5zIEEgY29uZmlnIG9iamVjdCByZWFkeSBmb3IgYG5ldyBHcmFwaEV4ZWN1dGlvbkVuZ2luZShjb25maWcpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbW9FbmdpbmVDb25maWcoKToge1xuICByZWdpc3RyeTogR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeTtcbiAgZGVmYXVsdE9wdGlvbnM6IHsgZmFpbEZhc3Q6IGJvb2xlYW4gfTtcbiAgY29kZVNhbmRib3hFdmFsdWF0b3I6IElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgb25FbmdpbmVDcmVhdGVkOiAoZW5naW5lOiBHcmFwaEV4ZWN1dGlvbkVuZ2luZSkgPT4gdm9pZDtcbn0ge1xuICBjb25zdCByZWdpc3RyeSA9IGNyZWF0ZUdyYXBoRXhlY3V0b3JSZWdpc3RyeSgpO1xuICBjb25zdCBjb2RlU2FuZGJveEV2YWx1YXRvciA9IG5ldyBJc29sYXRlZFZtQ29kZVNhbmRib3hFdmFsdWF0b3IoKTtcblxuICByZXR1cm4ge1xuICAgIHJlZ2lzdHJ5LFxuICAgIGRlZmF1bHRPcHRpb25zOiB7IGZhaWxGYXN0OiBmYWxzZSB9LFxuICAgIGNvZGVTYW5kYm94RXZhbHVhdG9yLFxuICAgIG9uRW5naW5lQ3JlYXRlZDogKGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUpID0+IHtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKFwiY29yZS5sb29wLmZvcmVhY2hcIiwgbmV3IEZvcmVhY2hHcmFwaE5vZGVFeGVjdXRvcihlbmdpbmUpKTtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKFwiY29yZS5sb29wLndoaWxlXCIsIG5ldyBXaGlsZUdyYXBoTm9kZUV4ZWN1dG9yKGVuZ2luZSkpO1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoXCJjb3JlLmxvb3AudW50aWxcIiwgbmV3IFVudGlsR3JhcGhOb2RlRXhlY3V0b3IoZW5naW5lKSk7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlcihcImNvcmUuZmxvdy5jb2RlXCIsIG5ldyBDb2RlR3JhcGhOb2RlRXhlY3V0b3IoZW5naW5lKSk7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlcihcImNvcmUuZmxvdy5sb2dcIiwgbmV3IExvZ0dyYXBoTm9kZUV4ZWN1dG9yKCkpO1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoXCJjb3JlLmZsb3cuc3dpdGNoXCIsIG5ldyBTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvcihlbmdpbmUpKTtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKFwiY29yZS5mbG93LmJyZWFrXCIsIG5ldyBCcmVha0dyYXBoTm9kZUV4ZWN1dG9yKCkpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -54,7 +54,9 @@ export class KeycloakAuthHandler extends AuthHandler {
54
54
  extractFromRequest(request) {
55
55
  return this.parseFromRequest(request);
56
56
  }
57
- async validateAuth(data, _request) {
57
+ async validateAuth(data,
58
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
59
+ _request) {
58
60
  if (data.isPublic)
59
61
  return;
60
62
  if (!data.token)
@@ -94,4 +96,4 @@ function getToken(req) {
94
96
  return token.startsWith("Bearer ") ? token.slice("Bearer ".length) : token;
95
97
  }
96
98
  export { getClientRoles } from "./utils.js";
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtBdXRoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXN0L2tleWNsb2FrQXV0aEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQU92RSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixrQkFBa0IsR0FDbkIsbUJBQWdCO0FBWWpCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUl4QztJQUNDO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBS1MsR0FBRztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsbUlBQW1JLENBQ3BJLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxHQUE2QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQW1CLENBQUM7SUFDMUQsQ0FBQztJQUVrQixlQUFlLENBQUMsT0FBd0I7UUFDekQsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQXdCO1FBQ2pELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxR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dWxlIGludGVncmF0aW9ucy9uZXN0L2tleWNsb2FrQXV0aEhhbmRsZXJcbiAqIEBzdW1tYXJ5IEtleWNsb2FrIHJlcXVlc3QgYXV0aCBoYW5kbGVyLlxuICogQGRlc2NyaXB0aW9uIFRyYW5zbGF0ZXMgS2V5Y2xvYWsgSldUIHBheWxvYWRzIGludG8gRGVjYWYtZnJpZW5kbHkgYXV0aCBkYXRhLlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFuZGxlcyB0aGUgcmVxdWVzdC10by1jb250ZXh0IHBsdW1iaW5nLCBsb2dnZXIgYmluZGluZyxcbiAqIGFuZCByb2xlIGNoZWNrcy4gTmFtZXNwYWNlIGV4dHJhY3Rpb24gaXMgaW50ZW50aW9uYWxseSBzcGxpdCBpbnRvIGEgZGVkaWNhdGVkXG4gKiBzdWJjbGFzcyBzbyBwcm92aWRlci1zcGVjaWZpYyBzY29wZSBoYW5kbGluZyBjYW4gYmUgc3dhcHBlZCBpbmRlcGVuZGVudGx5LlxuICovXG5pbXBvcnQgeyBBdXRob3JpemF0aW9uRXJyb3IsIHNlcnZpY2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IEF1dGhIYW5kbGVyLCBBdXRoRGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEp3dFNlcnZpY2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NyeXB0by9pbnRlZ3JhdGlvbi9zZXJ2aWNlcy9qd3RcIjtcblxuaW1wb3J0IHR5cGUge1xuICBBdXRoRXhlY3V0aW9uQ29udGV4dExpa2UsXG4gIEF1dGhSZXF1ZXN0TGlrZSxcbiAgS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBleHRyYWN0S2V5Y2xvYWtSb2xlcyxcbiAgZXh0cmFjdEtleWNsb2FrTmFtZXNwYWNlcyxcbiAgZ2V0UmVhbG1Gcm9tSXNzdWVyLFxufSBmcm9tIFwiLi91dGlsc1wiO1xuXG4vKipcbiAqIEF1dGggZGF0YSByZXR1cm5lZCBieSB7QGxpbmsgS2V5Y2xvYWtBdXRoSGFuZGxlci5leHRyYWN0RnJvbVJlcXVlc3R9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleWNsb2FrQXV0aERhdGEgZXh0ZW5kcyBBdXRoRGF0YSB7XG4gIC8qKiBUaGUgcmF3IEpXVCBleHRyYWN0ZWQgZnJvbSB0aGUgcmVxdWVzdC4gRW1wdHkgZm9yIHB1YmxpYyByb3V0ZXMuICovXG4gIHRva2VuOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSByZXF1ZXN0IHRhcmdldHMgYSBwdWJsaWMgcm91dGUgKHNraXBzIHZhbGlkYXRpb24pLiAqL1xuICBpc1B1YmxpYzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEtleWNsb2FrQXV0aEhhbmRsZXIgZXh0ZW5kcyBBdXRoSGFuZGxlcjxcbiAgQXV0aEV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBDb250ZXh0LFxuICBLZXljbG9ha0F1dGhEYXRhXG4+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIEBzZXJ2aWNlKFwiand0XCIpXG4gIHByb3RlY3RlZCByZWFkb25seSBqd3RTZXJ2aWNlPzogSnd0U2VydmljZTtcblxuICBwcm90ZWN0ZWQgand0KCk6IEp3dFNlcnZpY2Uge1xuICAgIGlmICghdGhpcy5qd3RTZXJ2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCJKd3RTZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGUuIE1ha2Ugc3VyZSB0aGUgaGFuZGxlciBpcyBjcmVhdGVkIHRocm91Z2ggRGVjYWYgc2VydmljZSBpbmplY3Rpb24gb3IgYXNzaWduIGEgdGVzdCBkb3VibGUgZXhwbGljaXRseS5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuand0U2VydmljZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXF1ZXN0RnJvbUNvbnRleHQoY3R4OiBBdXRoRXhlY3V0aW9uQ29udGV4dExpa2UpOiBBdXRoUmVxdWVzdExpa2Uge1xuICAgIHJldHVybiBjdHguc3dpdGNoVG9IdHRwKCkuZ2V0UmVxdWVzdDxBdXRoUmVxdWVzdExpa2U+KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNQdWJsaWNSZXF1ZXN0KHJlcXVlc3Q6IEF1dGhSZXF1ZXN0TGlrZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1B1YmxpY1JvdXRlKHJlcXVlc3QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRnJvbVJlcXVlc3QocmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlKTogS2V5Y2xvYWtBdXRoRGF0YSB7XG4gICAgaWYgKGlzUHVibGljUm91dGUocmVxdWVzdCkpIHtcbiAgICAgIHJldHVybiB7IHJvbGVzOiBbXSwgdG9rZW46IFwiXCIsIGlzUHVibGljOiB0cnVlIH07XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSBnZXRUb2tlbihyZXF1ZXN0KTtcbiAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFwiVG9rZW4gbm90IGZvdW5kXCIpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuand0KCkuZGVjb2RlUGF5bG9hZDxLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZD4odG9rZW4pO1xuICAgIGlmICghcGF5bG9hZCkgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcIkludmFsaWQgdG9rZW5cIik7XG5cbiAgICBjb25zdCByb2xlcyA9IGV4dHJhY3RLZXljbG9ha1JvbGVzKHBheWxvYWQpO1xuICAgIGNvbnN0IG9yZ2FuaXphdGlvbiA9IHBheWxvYWQuYXVkIHx8IHBheWxvYWQuYXpwIHx8IGdldFJlYWxtRnJvbUlzc3Vlcih0b2tlbik7XG4gICAgY29uc3QgdXNlciA9IHBheWxvYWQ/LmVtYWlsID8/IHBheWxvYWQ/LnByZWZlcnJlZF91c2VybmFtZTtcblxuICAgIHJldHVybiB7IHVzZXIsIG9yZ2FuaXphdGlvbiwgcm9sZXMsIHRva2VuLCBpc1B1YmxpYzogZmFsc2UgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHRyYWN0RnJvbVJlcXVlc3QocmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlKTogS2V5Y2xvYWtBdXRoRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VGcm9tUmVxdWVzdChyZXF1ZXN0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyB2YWxpZGF0ZUF1dGgoXG4gICAgZGF0YTogS2V5Y2xvYWtBdXRoRGF0YSxcbiAgICBfcmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChkYXRhLmlzUHVibGljKSByZXR1cm47XG4gICAgaWYgKCFkYXRhLnRva2VuKSB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFwiVG9rZW4gbm90IGZvdW5kXCIpO1xuICAgIGF3YWl0IHRoaXMuand0KCkuZGVjb2RlQXV0aFRva2VuPEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkPihkYXRhLnRva2VuKTtcbiAgfVxufVxuXG4vKipcbiAqIEtleWNsb2FrIGhhbmRsZXIgdmFyaWFudCB0aGF0IGFsc28gZXh0cmFjdHMgbmFtZXNwYWNlIHNjb3BlcyBmcm9tIHRoZSB0b2tlbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleWNsb2FrTmFtZXNwYWNlQXV0aEhhbmRsZXIgZXh0ZW5kcyBLZXljbG9ha0F1dGhIYW5kbGVyIHtcbiAgcHJvdGVjdGVkIHBhcnNlRnJvbVJlcXVlc3QocmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlKTogS2V5Y2xvYWtBdXRoRGF0YSB7XG4gICAgY29uc3QgZGF0YSA9IHN1cGVyLnBhcnNlRnJvbVJlcXVlc3QocmVxdWVzdCk7XG4gICAgaWYgKGRhdGEuaXNQdWJsaWMpIHJldHVybiBkYXRhO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuand0KCkuZGVjb2RlUGF5bG9hZDxLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZD4oZGF0YS50b2tlbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBuYW1lc3BhY2VzOiBleHRyYWN0S2V5Y2xvYWtOYW1lc3BhY2VzKHBheWxvYWQpLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQdWJsaWNSb3V0ZShyZXE6IEF1dGhSZXF1ZXN0TGlrZSk6IGJvb2xlYW4ge1xuICBpZiAocmVxLnBhdGg/LnN0YXJ0c1dpdGgoXCIvcHVibGljXCIpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRUb2tlbihyZXE6IEF1dGhSZXF1ZXN0TGlrZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRva2VuID0gKHJlcS5oZWFkZXJzPy5bXCJ4LWF1dGgtcmVxdWVzdC1hY2Nlc3MtdG9rZW5cIl0gPz9cbiAgICByZXEuaGVhZGVycz8uW1wiYXV0aG9yaXphdGlvblwiXSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoIXRva2VuKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gdG9rZW4uc3RhcnRzV2l0aChcIkJlYXJlciBcIikgPyB0b2tlbi5zbGljZShcIkJlYXJlciBcIi5sZW5ndGgpIDogdG9rZW47XG59XG5cbmV4cG9ydCB7IGdldENsaWVudFJvbGVzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtBdXRoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXN0L2tleWNsb2FrQXV0aEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQU92RSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixrQkFBa0IsR0FDbkIsbUJBQWdCO0FBWWpCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUl4QztJQUNDO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBS1MsR0FBRztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsbUlBQW1JLENBQ3BJLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxHQUE2QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQW1CLENBQUM7SUFDMUQsQ0FBQztJQUVrQixlQUFlLENBQUMsT0FBd0I7UUFDekQsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQXdCO1FBQ2pELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxR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Ii8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvbmVzdC9rZXljbG9ha0F1dGhIYW5kbGVyXG4gKiBAc3VtbWFyeSBLZXljbG9hayByZXF1ZXN0IGF1dGggaGFuZGxlci5cbiAqIEBkZXNjcmlwdGlvbiBUcmFuc2xhdGVzIEtleWNsb2FrIEpXVCBwYXlsb2FkcyBpbnRvIERlY2FmLWZyaWVuZGx5IGF1dGggZGF0YS5cbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgdGhlIHJlcXVlc3QtdG8tY29udGV4dCBwbHVtYmluZywgbG9nZ2VyIGJpbmRpbmcsXG4gKiBhbmQgcm9sZSBjaGVja3MuIE5hbWVzcGFjZSBleHRyYWN0aW9uIGlzIGludGVudGlvbmFsbHkgc3BsaXQgaW50byBhIGRlZGljYXRlZFxuICogc3ViY2xhc3Mgc28gcHJvdmlkZXItc3BlY2lmaWMgc2NvcGUgaGFuZGxpbmcgY2FuIGJlIHN3YXBwZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yLCBzZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBBdXRoSGFuZGxlciwgQXV0aERhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1odHRwL3NlcnZlclwiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBKd3RTZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jcnlwdG8vaW50ZWdyYXRpb24vc2VydmljZXMvand0XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgQXV0aEV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBBdXRoUmVxdWVzdExpa2UsXG4gIEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZXh0cmFjdEtleWNsb2FrUm9sZXMsXG4gIGV4dHJhY3RLZXljbG9ha05hbWVzcGFjZXMsXG4gIGdldFJlYWxtRnJvbUlzc3Vlcixcbn0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBBdXRoIGRhdGEgcmV0dXJuZWQgYnkge0BsaW5rIEtleWNsb2FrQXV0aEhhbmRsZXIuZXh0cmFjdEZyb21SZXF1ZXN0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXljbG9ha0F1dGhEYXRhIGV4dGVuZHMgQXV0aERhdGEge1xuICAvKiogVGhlIHJhdyBKV1QgZXh0cmFjdGVkIGZyb20gdGhlIHJlcXVlc3QuIEVtcHR5IGZvciBwdWJsaWMgcm91dGVzLiAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgcmVxdWVzdCB0YXJnZXRzIGEgcHVibGljIHJvdXRlIChza2lwcyB2YWxpZGF0aW9uKS4gKi9cbiAgaXNQdWJsaWM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBLZXljbG9ha0F1dGhIYW5kbGVyIGV4dGVuZHMgQXV0aEhhbmRsZXI8XG4gIEF1dGhFeGVjdXRpb25Db250ZXh0TGlrZSxcbiAgQ29udGV4dCxcbiAgS2V5Y2xvYWtBdXRoRGF0YVxuPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBAc2VydmljZShcImp3dFwiKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgand0U2VydmljZT86IEp3dFNlcnZpY2U7XG5cbiAgcHJvdGVjdGVkIGp3dCgpOiBKd3RTZXJ2aWNlIHtcbiAgICBpZiAoIXRoaXMuand0U2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiSnd0U2VydmljZSBpcyBub3QgYXZhaWxhYmxlLiBNYWtlIHN1cmUgdGhlIGhhbmRsZXIgaXMgY3JlYXRlZCB0aHJvdWdoIERlY2FmIHNlcnZpY2UgaW5qZWN0aW9uIG9yIGFzc2lnbiBhIHRlc3QgZG91YmxlIGV4cGxpY2l0bHkuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmp3dFNlcnZpY2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVxdWVzdEZyb21Db250ZXh0KGN0eDogQXV0aEV4ZWN1dGlvbkNvbnRleHRMaWtlKTogQXV0aFJlcXVlc3RMaWtlIHtcbiAgICByZXR1cm4gY3R4LnN3aXRjaFRvSHR0cCgpLmdldFJlcXVlc3Q8QXV0aFJlcXVlc3RMaWtlPigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzUHVibGljUmVxdWVzdChyZXF1ZXN0OiBBdXRoUmVxdWVzdExpa2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQdWJsaWNSb3V0ZShyZXF1ZXN0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUZyb21SZXF1ZXN0KHJlcXVlc3Q6IEF1dGhSZXF1ZXN0TGlrZSk6IEtleWNsb2FrQXV0aERhdGEge1xuICAgIGlmIChpc1B1YmxpY1JvdXRlKHJlcXVlc3QpKSB7XG4gICAgICByZXR1cm4geyByb2xlczogW10sIHRva2VuOiBcIlwiLCBpc1B1YmxpYzogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gZ2V0VG9rZW4ocmVxdWVzdCk7XG4gICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcIlRva2VuIG5vdCBmb3VuZFwiKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLmp3dCgpLmRlY29kZVBheWxvYWQ8S2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQ+KHRva2VuKTtcbiAgICBpZiAoIXBheWxvYWQpIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJJbnZhbGlkIHRva2VuXCIpO1xuXG4gICAgY29uc3Qgcm9sZXMgPSBleHRyYWN0S2V5Y2xvYWtSb2xlcyhwYXlsb2FkKTtcbiAgICBjb25zdCBvcmdhbml6YXRpb24gPVxuICAgICAgcGF5bG9hZC5hdWQgfHwgcGF5bG9hZC5henAgfHwgZ2V0UmVhbG1Gcm9tSXNzdWVyKHRva2VuKTtcbiAgICBjb25zdCB1c2VyID0gcGF5bG9hZD8uZW1haWwgPz8gcGF5bG9hZD8ucHJlZmVycmVkX3VzZXJuYW1lO1xuXG4gICAgcmV0dXJuIHsgdXNlciwgb3JnYW5pemF0aW9uLCByb2xlcywgdG9rZW4sIGlzUHVibGljOiBmYWxzZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4dHJhY3RGcm9tUmVxdWVzdChyZXF1ZXN0OiBBdXRoUmVxdWVzdExpa2UpOiBLZXljbG9ha0F1dGhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUZyb21SZXF1ZXN0KHJlcXVlc3QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIHZhbGlkYXRlQXV0aChcbiAgICBkYXRhOiBLZXljbG9ha0F1dGhEYXRhLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBfcmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChkYXRhLmlzUHVibGljKSByZXR1cm47XG4gICAgaWYgKCFkYXRhLnRva2VuKSB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFwiVG9rZW4gbm90IGZvdW5kXCIpO1xuICAgIGF3YWl0IHRoaXMuand0KCkuZGVjb2RlQXV0aFRva2VuPEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkPihkYXRhLnRva2VuKTtcbiAgfVxufVxuXG4vKipcbiAqIEtleWNsb2FrIGhhbmRsZXIgdmFyaWFudCB0aGF0IGFsc28gZXh0cmFjdHMgbmFtZXNwYWNlIHNjb3BlcyBmcm9tIHRoZSB0b2tlbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleWNsb2FrTmFtZXNwYWNlQXV0aEhhbmRsZXIgZXh0ZW5kcyBLZXljbG9ha0F1dGhIYW5kbGVyIHtcbiAgcHJvdGVjdGVkIHBhcnNlRnJvbVJlcXVlc3QocmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlKTogS2V5Y2xvYWtBdXRoRGF0YSB7XG4gICAgY29uc3QgZGF0YSA9IHN1cGVyLnBhcnNlRnJvbVJlcXVlc3QocmVxdWVzdCk7XG4gICAgaWYgKGRhdGEuaXNQdWJsaWMpIHJldHVybiBkYXRhO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuand0KCkuZGVjb2RlUGF5bG9hZDxLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZD4oXG4gICAgICBkYXRhLnRva2VuXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIG5hbWVzcGFjZXM6IGV4dHJhY3RLZXljbG9ha05hbWVzcGFjZXMocGF5bG9hZCksXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1B1YmxpY1JvdXRlKHJlcTogQXV0aFJlcXVlc3RMaWtlKTogYm9vbGVhbiB7XG4gIGlmIChyZXEucGF0aD8uc3RhcnRzV2l0aChcIi9wdWJsaWNcIikpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFRva2VuKHJlcTogQXV0aFJlcXVlc3RMaWtlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdG9rZW4gPSAocmVxLmhlYWRlcnM/LltcIngtYXV0aC1yZXF1ZXN0LWFjY2Vzcy10b2tlblwiXSA/P1xuICAgIHJlcS5oZWFkZXJzPy5bXCJhdXRob3JpemF0aW9uXCJdKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghdG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiB0b2tlbi5zdGFydHNXaXRoKFwiQmVhcmVyIFwiKSA/IHRva2VuLnNsaWNlKFwiQmVhcmVyIFwiLmxlbmd0aCkgOiB0b2tlbjtcbn1cblxuZXhwb3J0IHsgZ2V0Q2xpZW50Um9sZXMgfSBmcm9tIFwiLi91dGlsc1wiO1xuIl19
@@ -1,5 +1,4 @@
1
1
  import { AuthorizationError } from "@decaf-ts/core";
2
- import { getTokenPayload } from "@decaf-ts/crypto/integration/services/jwt";
3
2
  export const DECAF_ADAPTER_OPTIONS = Symbol("DecafAdapterForOptions");
4
3
  export function extractKeycloakRoles(payload) {
5
4
  const roles = new Set();
@@ -47,7 +46,7 @@ export function extractKeycloakNamespaces(payload) {
47
46
  return [...namespaces];
48
47
  }
49
48
  export function getRealmFromIssuer(jwt) {
50
- const payload = getTokenPayload(jwt);
49
+ const payload = decodeJwtPayload(jwt);
51
50
  const iss = payload?.iss;
52
51
  if (!iss) {
53
52
  throw new AuthorizationError("Issuer (iss) is missing");
@@ -66,6 +65,18 @@ export function getRealmFromIssuer(jwt) {
66
65
  }
67
66
  return parts[realmsIndex + 1];
68
67
  }
68
+ function decodeJwtPayload(jwt) {
69
+ const parts = jwt.split(".");
70
+ if (parts.length < 2)
71
+ return null;
72
+ try {
73
+ const payload = Buffer.from(parts[1], "base64url").toString("utf-8");
74
+ return JSON.parse(payload);
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
69
80
  /**
70
81
  * Extracts roles from the `resource_access` claim only, optionally excluding
71
82
  * specified client IDs (e.g. `"account"`). Unlike {@link extractKeycloakRoles}
@@ -89,4 +100,4 @@ export function getClientRoles(payload, excluded = ["account"]) {
89
100
  }
90
101
  return [...roles];
91
102
  }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFdEUsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQTBDO0lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxlQUFlLElBQUksT0FBTyxPQUFPLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVFLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMxRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUM7b0JBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxPQUFzRDtJQUV0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3JDLE1BQU0sYUFBYSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNoRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLElBQUksU0FBUztnQkFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO1NBQU0sSUFBSSxPQUFPLGFBQWEsS0FBSyxRQUFRLElBQUksYUFBYSxFQUFFLENBQUM7UUFDOUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUc7UUFDZixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQztZQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQzVCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxHQUFHLENBQUMsT0FBTyxFQUFFLGVBQWUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxlQUFlLEtBQUssUUFBUTtZQUN6RSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUM1QyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQ2hDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNSLENBQUM7SUFDRixLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sR0FBRyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUM7SUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxDQUFDO1FBQ0gsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksa0JBQWtCLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxxQ0FBcUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsT0FBMEMsRUFDMUMsV0FBcUIsQ0FBQyxTQUFTLENBQUM7SUFFaEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxFQUFFLGVBQWUsQ0FBQztJQUNoRCxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVE7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyRSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2hDLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUFFLFNBQVM7UUFDMUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL25lc3QvdXRpbHNcbiAqIEBzdW1tYXJ5IE5lc3QgaW50ZWdyYXRpb24gdXRpbGl0aWVzLlxuICogQGRlc2NyaXB0aW9uIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSB0aGUgTmVzdCBhdXRoIGFuZCByZXF1ZXN0LWNvbnRleHQgYWRhcHRlcnMuXG4gKi9cbmltcG9ydCB0eXBlIHsgS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBnZXRUb2tlblBheWxvYWQgfSBmcm9tIFwiQGRlY2FmLXRzL2NyeXB0by9pbnRlZ3JhdGlvbi9zZXJ2aWNlcy9qd3RcIjtcblxuZXhwb3J0IGNvbnN0IERFQ0FGX0FEQVBURVJfT1BUSU9OUyA9IFN5bWJvbChcIkRlY2FmQWRhcHRlckZvck9wdGlvbnNcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0S2V5Y2xvYWtSb2xlcyhwYXlsb2FkOiBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCB8IG51bGwpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJvbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQ/LnJlYWxtX2FjY2Vzcz8ucm9sZXMpKSB7XG4gICAgZm9yIChjb25zdCByb2xlIG9mIHBheWxvYWQucmVhbG1fYWNjZXNzLnJvbGVzKSB7XG4gICAgICBpZiAoIXJvbGU/LnN0YXJ0c1dpdGgoXCJuYW1lc3BhY2U6XCIpKSByb2xlcy5hZGQocm9sZSk7XG4gICAgfVxuICB9XG4gIGlmIChwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3MgJiYgdHlwZW9mIHBheWxvYWQucmVzb3VyY2VfYWNjZXNzID09PSBcIm9iamVjdFwiKSB7XG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgT2JqZWN0LmtleXMocGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MpKSB7XG4gICAgICBmb3IgKGNvbnN0IHJvbGUgb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3NbY2xpZW50XT8ucm9sZXMgPz8gW10pIHtcbiAgICAgICAgaWYgKCFyb2xlPy5zdGFydHNXaXRoKFwibmFtZXNwYWNlOlwiKSkgcm9sZXMuYWRkKHJvbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gWy4uLnJvbGVzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RLZXljbG9ha05hbWVzcGFjZXMoXG4gIHBheWxvYWQ6IEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lc3BhY2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHJhd05hbWVzcGFjZXMgPSBwYXlsb2FkPy5uYW1lc3BhY2VzID8/IHBheWxvYWQ/Lm5hbWVzcGFjZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmF3TmFtZXNwYWNlcykpIHtcbiAgICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiByYXdOYW1lc3BhY2VzKSB7XG4gICAgICBpZiAobmFtZXNwYWNlKSBuYW1lc3BhY2VzLmFkZChuYW1lc3BhY2UpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgcmF3TmFtZXNwYWNlcyA9PT0gXCJzdHJpbmdcIiAmJiByYXdOYW1lc3BhY2VzKSB7XG4gICAgbmFtZXNwYWNlcy5hZGQocmF3TmFtZXNwYWNlcyk7XG4gIH1cblxuICBjb25zdCByYXdSb2xlcyA9IFtcbiAgICAuLi4oQXJyYXkuaXNBcnJheShwYXlsb2FkPy5yZWFsbV9hY2Nlc3M/LnJvbGVzKVxuICAgICAgPyBwYXlsb2FkLnJlYWxtX2FjY2Vzcy5yb2xlc1xuICAgICAgOiBbXSksXG4gICAgLi4uKHBheWxvYWQ/LnJlc291cmNlX2FjY2VzcyAmJiB0eXBlb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MgPT09IFwib2JqZWN0XCJcbiAgICAgID8gT2JqZWN0LnZhbHVlcyhwYXlsb2FkLnJlc291cmNlX2FjY2VzcykuZmxhdE1hcChcbiAgICAgICAgICAoY2xpZW50KSA9PiBjbGllbnQ/LnJvbGVzID8/IFtdXG4gICAgICAgIClcbiAgICAgIDogW10pLFxuICBdO1xuICBmb3IgKGNvbnN0IHJvbGUgb2YgcmF3Um9sZXMpIHtcbiAgICBpZiAocm9sZT8uc3RhcnRzV2l0aChcIm5hbWVzcGFjZTpcIikpIHtcbiAgICAgIG5hbWVzcGFjZXMuYWRkKHJvbGUuc2xpY2UoXCJuYW1lc3BhY2U6XCIubGVuZ3RoKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFsuLi5uYW1lc3BhY2VzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWxtRnJvbUlzc3Vlcihqd3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBheWxvYWQgPSBnZXRUb2tlblBheWxvYWQ8eyBpc3M/OiBzdHJpbmcgfT4oand0KTtcbiAgY29uc3QgaXNzID0gcGF5bG9hZD8uaXNzO1xuICBpZiAoIWlzcykge1xuICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJJc3N1ZXIgKGlzcykgaXMgbWlzc2luZ1wiKTtcbiAgfVxuICBsZXQgdXJsOiBVUkw7XG4gIHRyeSB7XG4gICAgdXJsID0gbmV3IFVSTChpc3MpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGBJbnZhbGlkIGlzc3VlciBVUkw6ICR7aXNzfWApO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gdXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJlYWxtc0luZGV4ID0gcGFydHMuaW5kZXhPZihcInJlYWxtc1wiKTtcbiAgaWYgKHJlYWxtc0luZGV4ID09PSAtMSB8fCAhcGFydHNbcmVhbG1zSW5kZXggKyAxXSkge1xuICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoYENhbm5vdCBleHRyYWN0IHJlYWxtIGZyb20gaXNzdWVyOiAke2lzc31gKTtcbiAgfVxuICByZXR1cm4gcGFydHNbcmVhbG1zSW5kZXggKyAxXTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyByb2xlcyBmcm9tIHRoZSBgcmVzb3VyY2VfYWNjZXNzYCBjbGFpbSBvbmx5LCBvcHRpb25hbGx5IGV4Y2x1ZGluZ1xuICogc3BlY2lmaWVkIGNsaWVudCBJRHMgKGUuZy4gYFwiYWNjb3VudFwiYCkuICBVbmxpa2Uge0BsaW5rIGV4dHJhY3RLZXljbG9ha1JvbGVzfVxuICogdGhpcyBkb2VzIE5PVCBpbmNsdWRlIGByZWFsbV9hY2Nlc3Mucm9sZXNgLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkICAgVGhlIGRlY29kZWQgSldUIHBheWxvYWQuXG4gKiBAcGFyYW0gZXhjbHVkZWQgIENsaWVudCBJRHMgdG8gc2tpcC4gIEBkZWZhdWx0IFtcImFjY291bnRcIl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFJvbGVzKFxuICBwYXlsb2FkOiBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCB8IG51bGwsXG4gIGV4Y2x1ZGVkOiBzdHJpbmdbXSA9IFtcImFjY291bnRcIl1cbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmVzb3VyY2VBY2Nlc3MgPSBwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3M7XG4gIGlmICghcmVzb3VyY2VBY2Nlc3MgfHwgdHlwZW9mIHJlc291cmNlQWNjZXNzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gW107XG4gIGNvbnN0IHJvbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgW2NsaWVudElkLCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZUFjY2VzcykpIHtcbiAgICBpZiAoZXhjbHVkZWQuaW5jbHVkZXMoY2xpZW50SWQpKSBjb250aW51ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhPy5yb2xlcykpIHtcbiAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBkYXRhLnJvbGVzKSByb2xlcy5hZGQocm9sZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ucm9sZXNdO1xufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUV0RSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBMEM7SUFDN0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNoQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hELEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksT0FBTyxFQUFFLGVBQWUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUUsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzFELEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztvQkFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFH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QUMsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L3V0aWxzXG4gKiBAc3VtbWFyeSBOZXN0IGludGVncmF0aW9uIHV0aWxpdGllcy5cbiAqIEBkZXNjcmlwdGlvbiBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIE5lc3QgYXV0aCBhbmQgcmVxdWVzdC1jb250ZXh0IGFkYXB0ZXJzLlxuICovXG5pbXBvcnQgdHlwZSB7IEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEF1dGhvcml6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5leHBvcnQgY29uc3QgREVDQUZfQURBUFRFUl9PUFRJT05TID0gU3ltYm9sKFwiRGVjYWZBZGFwdGVyRm9yT3B0aW9uc1wiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RLZXljbG9ha1JvbGVzKHBheWxvYWQ6IEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkIHwgbnVsbCk6IHN0cmluZ1tdIHtcbiAgY29uc3Qgcm9sZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZD8ucmVhbG1fYWNjZXNzPy5yb2xlcykpIHtcbiAgICBmb3IgKGNvbnN0IHJvbGUgb2YgcGF5bG9hZC5yZWFsbV9hY2Nlc3Mucm9sZXMpIHtcbiAgICAgIGlmICghcm9sZT8uc3RhcnRzV2l0aChcIm5hbWVzcGFjZTpcIikpIHJvbGVzLmFkZChyb2xlKTtcbiAgICB9XG4gIH1cbiAgaWYgKHBheWxvYWQ/LnJlc291cmNlX2FjY2VzcyAmJiB0eXBlb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MgPT09IFwib2JqZWN0XCIpIHtcbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBPYmplY3Qua2V5cyhwYXlsb2FkLnJlc291cmNlX2FjY2VzcykpIHtcbiAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBwYXlsb2FkLnJlc291cmNlX2FjY2Vzc1tjbGllbnRdPy5yb2xlcyA/PyBbXSkge1xuICAgICAgICBpZiAoIXJvbGU/LnN0YXJ0c1dpdGgoXCJuYW1lc3BhY2U6XCIpKSByb2xlcy5hZGQocm9sZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ucm9sZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEtleWNsb2FrTmFtZXNwYWNlcyhcbiAgcGF5bG9hZDogS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcmF3TmFtZXNwYWNlcyA9IHBheWxvYWQ/Lm5hbWVzcGFjZXMgPz8gcGF5bG9hZD8ubmFtZXNwYWNlO1xuICBpZiAoQXJyYXkuaXNBcnJheShyYXdOYW1lc3BhY2VzKSkge1xuICAgIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHJhd05hbWVzcGFjZXMpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UpIG5hbWVzcGFjZXMuYWRkKG5hbWVzcGFjZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiByYXdOYW1lc3BhY2VzID09PSBcInN0cmluZ1wiICYmIHJhd05hbWVzcGFjZXMpIHtcbiAgICBuYW1lc3BhY2VzLmFkZChyYXdOYW1lc3BhY2VzKTtcbiAgfVxuXG4gIGNvbnN0IHJhd1JvbGVzID0gW1xuICAgIC4uLihBcnJheS5pc0FycmF5KHBheWxvYWQ/LnJlYWxtX2FjY2Vzcz8ucm9sZXMpXG4gICAgICA/IHBheWxvYWQucmVhbG1fYWNjZXNzLnJvbGVzXG4gICAgICA6IFtdKSxcbiAgICAuLi4ocGF5bG9hZD8ucmVzb3VyY2VfYWNjZXNzICYmIHR5cGVvZiBwYXlsb2FkLnJlc291cmNlX2FjY2VzcyA9PT0gXCJvYmplY3RcIlxuICAgICAgPyBPYmplY3QudmFsdWVzKHBheWxvYWQucmVzb3VyY2VfYWNjZXNzKS5mbGF0TWFwKFxuICAgICAgICAgIChjbGllbnQpID0+IGNsaWVudD8ucm9sZXMgPz8gW11cbiAgICAgICAgKVxuICAgICAgOiBbXSksXG4gIF07XG4gIGZvciAoY29uc3Qgcm9sZSBvZiByYXdSb2xlcykge1xuICAgIGlmIChyb2xlPy5zdGFydHNXaXRoKFwibmFtZXNwYWNlOlwiKSkge1xuICAgICAgbmFtZXNwYWNlcy5hZGQocm9sZS5zbGljZShcIm5hbWVzcGFjZTpcIi5sZW5ndGgpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gWy4uLm5hbWVzcGFjZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVhbG1Gcm9tSXNzdWVyKGp3dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGF5bG9hZCA9IGRlY29kZUp3dFBheWxvYWQ8eyBpc3M/OiBzdHJpbmcgfT4oand0KTtcbiAgY29uc3QgaXNzID0gcGF5bG9hZD8uaXNzO1xuICBpZiAoIWlzcykge1xuICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJJc3N1ZXIgKGlzcykgaXMgbWlzc2luZ1wiKTtcbiAgfVxuICBsZXQgdXJsOiBVUkw7XG4gIHRyeSB7XG4gICAgdXJsID0gbmV3IFVSTChpc3MpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGBJbnZhbGlkIGlzc3VlciBVUkw6ICR7aXNzfWApO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gdXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJlYWxtc0luZGV4ID0gcGFydHMuaW5kZXhPZihcInJlYWxtc1wiKTtcbiAgaWYgKHJlYWxtc0luZGV4ID09PSAtMSB8fCAhcGFydHNbcmVhbG1zSW5kZXggKyAxXSkge1xuICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoYENhbm5vdCBleHRyYWN0IHJlYWxtIGZyb20gaXNzdWVyOiAke2lzc31gKTtcbiAgfVxuICByZXR1cm4gcGFydHNbcmVhbG1zSW5kZXggKyAxXTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlSnd0UGF5bG9hZDxUPihqd3Q6IHN0cmluZyk6IFQgfCBudWxsIHtcbiAgY29uc3QgcGFydHMgPSBqd3Quc3BsaXQoXCIuXCIpO1xuICBpZiAocGFydHMubGVuZ3RoIDwgMikgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHBhcnRzWzFdLCBcImJhc2U2NHVybFwiKS50b1N0cmluZyhcInV0Zi04XCIpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHBheWxvYWQpIGFzIFQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdHMgcm9sZXMgZnJvbSB0aGUgYHJlc291cmNlX2FjY2Vzc2AgY2xhaW0gb25seSwgb3B0aW9uYWxseSBleGNsdWRpbmdcbiAqIHNwZWNpZmllZCBjbGllbnQgSURzIChlLmcuIGBcImFjY291bnRcImApLiAgVW5saWtlIHtAbGluayBleHRyYWN0S2V5Y2xvYWtSb2xlc31cbiAqIHRoaXMgZG9lcyBOT1QgaW5jbHVkZSBgcmVhbG1fYWNjZXNzLnJvbGVzYC5cbiAqXG4gKiBAcGFyYW0gcGF5bG9hZCAgIFRoZSBkZWNvZGVkIEpXVCBwYXlsb2FkLlxuICogQHBhcmFtIGV4Y2x1ZGVkICBDbGllbnQgSURzIHRvIHNraXAuICBAZGVmYXVsdCBbXCJhY2NvdW50XCJdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnRSb2xlcyhcbiAgcGF5bG9hZDogS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQgfCBudWxsLFxuICBleGNsdWRlZDogc3RyaW5nW10gPSBbXCJhY2NvdW50XCJdXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc291cmNlQWNjZXNzID0gcGF5bG9hZD8ucmVzb3VyY2VfYWNjZXNzO1xuICBpZiAoIXJlc291cmNlQWNjZXNzIHx8IHR5cGVvZiByZXNvdXJjZUFjY2VzcyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIFtdO1xuICBjb25zdCByb2xlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IFtjbGllbnRJZCwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VBY2Nlc3MpKSB7XG4gICAgaWYgKGV4Y2x1ZGVkLmluY2x1ZGVzKGNsaWVudElkKSkgY29udGludWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YT8ucm9sZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHJvbGUgb2YgZGF0YS5yb2xlcykgcm9sZXMuYWRkKHJvbGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWy4uLnJvbGVzXTtcbn1cbiJdfQ==