cdktn 0.24.0-pre.99 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.jsii +2 -2
  2. package/lib/annotations.js +1 -1
  3. package/lib/app.js +1 -1
  4. package/lib/aspect.js +1 -1
  5. package/lib/backends/azurerm-backend.js +2 -2
  6. package/lib/backends/cloud-backend.js +4 -4
  7. package/lib/backends/consul-backend.js +2 -2
  8. package/lib/backends/cos-backend.js +2 -2
  9. package/lib/backends/gcs-backend.js +2 -2
  10. package/lib/backends/http-backend.js +2 -2
  11. package/lib/backends/local-backend.js +2 -2
  12. package/lib/backends/oss-backend.js +2 -2
  13. package/lib/backends/pg-backend.js +2 -2
  14. package/lib/backends/remote-backend.js +4 -4
  15. package/lib/backends/s3-backend.js +2 -2
  16. package/lib/backends/swift-backend.js +2 -2
  17. package/lib/complex-computed-list.js +26 -26
  18. package/lib/functions/provider-function.js +1 -1
  19. package/lib/functions/terraform-functions.generated.js +1 -1
  20. package/lib/importable-resource.js +1 -1
  21. package/lib/manifest.js +1 -1
  22. package/lib/resource.js +1 -1
  23. package/lib/terraform-asset.js +1 -1
  24. package/lib/terraform-backend.js +1 -1
  25. package/lib/terraform-count.js +1 -1
  26. package/lib/terraform-data-resource.js +1 -1
  27. package/lib/terraform-data-source.js +1 -1
  28. package/lib/terraform-element.js +1 -1
  29. package/lib/terraform-ephemeral-resource.js +1 -1
  30. package/lib/terraform-functions.js +1 -1
  31. package/lib/terraform-hcl-module.js +1 -1
  32. package/lib/terraform-iterator.js +5 -5
  33. package/lib/terraform-local.js +1 -1
  34. package/lib/terraform-module.js +1 -1
  35. package/lib/terraform-operators.js +1 -1
  36. package/lib/terraform-output.js +1 -1
  37. package/lib/terraform-provider.js +1 -1
  38. package/lib/terraform-provisioner.js +1 -1
  39. package/lib/terraform-remote-state.js +1 -1
  40. package/lib/terraform-resource-targets.js +1 -1
  41. package/lib/terraform-resource.js +1 -1
  42. package/lib/terraform-stack.js +1 -1
  43. package/lib/terraform-variable.js +2 -2
  44. package/lib/testing/index.js +1 -1
  45. package/lib/testing/matchers.js +1 -1
  46. package/lib/tokens/lazy.js +2 -2
  47. package/lib/tokens/resolvable.js +2 -2
  48. package/lib/tokens/string-fragments.js +1 -1
  49. package/lib/tokens/token.js +2 -2
  50. package/lib/tsconfig.tsbuildinfo +1 -1
  51. package/lib/upgrade-id-aspect.js +1 -1
  52. package/package.json +1 -1
@@ -85,6 +85,6 @@ class TerraformRemoteState extends terraform_element_1.TerraformElement {
85
85
  }
86
86
  exports.TerraformRemoteState = TerraformRemoteState;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- TerraformRemoteState[_a] = { fqn: "cdktn.TerraformRemoteState", version: "0.24.0-pre.99" };
88
+ TerraformRemoteState[_a] = { fqn: "cdktn.TerraformRemoteState", version: "0.24.0" };
89
89
  TerraformRemoteState.tfResourceType = "terraform_remote_state";
90
90
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlbW90ZS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXJyYWZvcm0tcmVtb3RlLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMkRBQXVEO0FBQ3ZELHFDQUFpQztBQUNqQyxpQ0FBb0Q7QUFDcEQsaURBQXFDO0FBU3JDLCtDQUErQztBQUMvQyxNQUFzQixvQkFDcEIsU0FBUSxvQ0FBZ0I7SUFLeEIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ08sT0FBZSxFQUNmLE1BQXNDO1FBRXZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFIL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWdDO0lBR3pELENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYztRQUM3QixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQWM7UUFDM0IsT0FBTyxjQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxVQUFVLENBQUMsTUFBYztRQUM5QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sR0FBRyxDQUFDLE1BQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGtCQUEwQjtRQUMxRCxPQUFPLElBQUEsa0JBQUcsRUFDUiwrQkFBK0IsSUFBSSxDQUFDLGdCQUFnQixZQUFZLGtCQUFrQixFQUFFLEVBQ3BGLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUMzQixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDMUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNuQixPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLHNCQUFzQixFQUFFO29CQUN0QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEM7d0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO3dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtxQkFDN0IsRUFDRCxJQUFJLENBQUMsWUFBWSxDQUNsQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsT0FBTztZQUNMLElBQUksRUFBRTtnQkFDSixzQkFBc0IsRUFBRTtvQkFDdEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDO3dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUzt3QkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTt3QkFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7cUJBQzdCLEVBQ0QsSUFBSSxDQUFDLFlBQVksQ0FDbEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBQ00sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUN2RDtTQUNGLENBQUM7SUFDSixDQUFDOztBQXBHSCxvREFxR0M7OztBQWpHd0IsbUNBQWMsR0FBRyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtRWxlbWVudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1lbGVtZW50XCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlLCBrZXlzVG9TbmFrZUNhc2UgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyByZWYgfSBmcm9tIFwiLi90ZkV4cHJlc3Npb25cIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlIH0gZnJvbSBcIi4vdG9rZW5zL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IElUZXJyYWZvcm1BZGRyZXNzYWJsZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1hZGRyZXNzYWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUNvbmZpZyB7XG4gIHJlYWRvbmx5IHdvcmtzcGFjZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZGVmYXVsdHM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRlcnJhZm9ybVJlbW90ZVN0YXRlXG4gIGV4dGVuZHMgVGVycmFmb3JtRWxlbWVudFxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlID0gXCJ0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFja2VuZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgXCJkYXRhLnRlcnJhZm9ybV9yZW1vdGVfc3RhdGVcIik7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nKG91dHB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCkpO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlcihvdXRwdXQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShvdXRwdXQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMaXN0KG91dHB1dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCkpO1xuICB9XG5cbiAgcHVibGljIGdldEJvb2xlYW4ob3V0cHV0OiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShvdXRwdXQpO1xuICB9XG5cbiAgcHVibGljIGdldChvdXRwdXQ6IHN0cmluZyk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCk7XG4gIH1cblxuICBwcml2YXRlIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHJlZihcbiAgICAgIGBkYXRhLnRlcnJhZm9ybV9yZW1vdGVfc3RhdGUuJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9Lm91dHB1dHMuJHt0ZXJyYWZvcm1BdHRyaWJ1dGV9YCxcbiAgICAgIHRoaXMuY2RrdGZTdGFjayxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Q29uZmlnKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBjb25maWdPYmogPSBrZXlzVG9TbmFrZUNhc2UoeyAuLi50aGlzLmNvbmZpZyB9KTtcbiAgICBkZWxldGUgY29uZmlnT2JqLndvcmtzcGFjZTtcbiAgICBkZWxldGUgY29uZmlnT2JqLmRlZmF1bHRzO1xuICAgIHJldHVybiBjb25maWdPYmo7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGlzIHJlc291cmNlIHRvIHRoZSB0ZXJyYWZvcm0gSlNPTiBvdXRwdXQuXG4gICAqL1xuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YToge1xuICAgICAgICB0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlOiB7XG4gICAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja2VuZDogdGhpcy5iYWNrZW5kLFxuICAgICAgICAgICAgICB3b3Jrc3BhY2U6IHRoaXMuY29uZmlnLndvcmtzcGFjZSxcbiAgICAgICAgICAgICAgZGVmYXVsdHM6IHRoaXMuY29uZmlnLmRlZmF1bHRzLFxuICAgICAgICAgICAgICBjb25maWc6IHRoaXMuZXh0cmFjdENvbmZpZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGlzIHJlc291cmNlIHRvIHRoZSB0ZXJyYWZvcm0gSlNPTiBvdXRwdXQuXG4gICAqL1xuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YToge1xuICAgICAgICB0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlOiB7XG4gICAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja2VuZDogdGhpcy5iYWNrZW5kLFxuICAgICAgICAgICAgICB3b3Jrc3BhY2U6IHRoaXMuY29uZmlnLndvcmtzcGFjZSxcbiAgICAgICAgICAgICAgZGVmYXVsdHM6IHRoaXMuY29uZmlnLmRlZmF1bHRzLFxuICAgICAgICAgICAgICBjb25maWc6IHRoaXMuZXh0cmFjdENvbmZpZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcHVibGljIHRvTWV0YWRhdGEoKTogYW55IHtcbiAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMucmF3T3ZlcnJpZGVzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIHRlcnJhZm9ybV9yZW1vdGVfc3RhdGU6IE9iamVjdC5rZXlzKHRoaXMucmF3T3ZlcnJpZGVzKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -34,5 +34,5 @@ class TerraformResourceTargets {
34
34
  }
35
35
  exports.TerraformResourceTargets = TerraformResourceTargets;
36
36
  _a = JSII_RTTI_SYMBOL_1;
37
- TerraformResourceTargets[_a] = { fqn: "cdktn.TerraformResourceTargets", version: "0.24.0-pre.99" };
37
+ TerraformResourceTargets[_a] = { fqn: "cdktn.TerraformResourceTargets", version: "0.24.0" };
38
38
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlc291cmNlLXRhcmdldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVycmFmb3JtLXJlc291cmNlLXRhcmdldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7O0dBR0c7QUFFSCxxQ0FBa0U7QUFHbEU7O0dBRUc7QUFDSCxNQUFhLHdCQUF3QjtJQUFyQztRQUNVLHVCQUFrQixHQUFtQyxJQUFJLEdBQUcsRUFHakUsQ0FBQztLQTBCTDtJQXhCUyxrQkFBa0I7UUFDeEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNsRCxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQ3pFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTJCLEVBQUUsTUFBYztRQUNsRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUEsNkJBQW9CLEVBQ3hCLE1BQU0sRUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUN0RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxNQUFjO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFBLHlCQUFnQixFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQTdCSCw0REE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IG1vdmVUYXJnZXRBbHJlYWR5U2V0LCBtb3ZlVGFyZ2V0Tm90U2V0IH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1yZXNvdXJjZVwiO1xuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1SZXNvdXJjZVRhcmdldHMge1xuICBwcml2YXRlIF9yZXNvdXJjZVRhcmdldE1hcDogTWFwPHN0cmluZywgVGVycmFmb3JtUmVzb3VyY2U+ID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgVGVycmFmb3JtUmVzb3VyY2VcbiAgPigpO1xuXG4gIHByaXZhdGUgcHJldHR5UHJpbnRFbnRyaWVzKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuZW50cmllcygpXS5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnIpID0+IGFjY3VtICsgXCJcXG5cIiArIGAke2N1cnJbMF19OiAke2N1cnJbMV0uZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgXCJcIixcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFJlc291cmNlVGFyZ2V0KHJlc291cmNlOiBUZXJyYWZvcm1SZXNvdXJjZSwgdGFyZ2V0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuaGFzKHRhcmdldCkpIHtcbiAgICAgIHRocm93IG1vdmVUYXJnZXRBbHJlYWR5U2V0KFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMuX3Jlc291cmNlVGFyZ2V0TWFwLmdldCh0YXJnZXQpPy5mcmllbmRseVVuaXF1ZUlkLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuc2V0KHRhcmdldCwgcmVzb3VyY2UpO1xuICB9XG5cbiAgcHVibGljIGdldFJlc291cmNlQnlUYXJnZXQodGFyZ2V0OiBzdHJpbmcpOiBUZXJyYWZvcm1SZXNvdXJjZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuZ2V0KHRhcmdldCk7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG1vdmVUYXJnZXROb3RTZXQodGFyZ2V0LCB0aGlzLnByZXR0eVByaW50RW50cmllcygpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -400,5 +400,5 @@ class TerraformResource extends terraform_element_1.TerraformElement {
400
400
  }
401
401
  exports.TerraformResource = TerraformResource;
402
402
  _a = JSII_RTTI_SYMBOL_1;
403
- TerraformResource[_a] = { fqn: "cdktn.TerraformResource", version: "0.24.0-pre.99" };
403
+ TerraformResource[_a] = { fqn: "cdktn.TerraformResource", version: "0.24.0" };
404
404
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBdUVBLG9EQXFCQzs7QUF6RkQscUNBQWlDO0FBQ2pDLDJEQUF1RDtBQUV2RCxpQ0FLZ0I7QUFFaEIsaURBQWlEO0FBRWpELDhEQUFvRTtBQUNwRSxpRkFBaUU7QUFJakUsdURBQW1EO0FBS25ELGlFQUFpRTtBQUNqRSxpQ0FBa0M7QUFNbEMseUZBQW9GO0FBQ3BGLHVEQUFtRDtBQUNuRCxxQ0FLa0I7QUFFbEIsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUF5QnhFOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsU0FBc0M7SUFFdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxHQUFHLFNBQVM7UUFDWixHQUFHLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU07WUFDdkMsQ0FBQyxDQUFDO2dCQUNFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDMUIsT0FBTyxDQUFDLENBQUM7b0JBQ1gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFDZixDQUFDO2dCQUNILENBQUMsQ0FBQzthQUNIO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUNmLENBQUM7QUFDSixDQUFDO0FBd0NELCtDQUErQztBQUMvQyxNQUFhLGlCQUNYLFNBQVEsb0NBQWdCO0lBc0J4QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQStCO1FBQ3ZF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LElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7YUFDL0QsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsRUFBRSxFQUFFLEVBQUU7WUFDTixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1NBQy9ELENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLEVBQVU7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFBLDJDQUFrQyxFQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDWixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFDdEQ7Z0JBQ0UsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTthQUMvRCxDQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzVELElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztJQUNKLENBQUM7O0FBdmRILDhDQXdkQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUVsZW1lbnQgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZWxlbWVudFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUHJvdmlkZXIgfSBmcm9tIFwiLi90ZXJyYWZvcm0tcHJvdmlkZXJcIjtcbmltcG9ydCB7XG4gIGtleXNUb1NuYWtlQ2FzZSxcbiAgZGVlcE1lcmdlLFxuICBwcm9jZXNzRHluYW1pY0F0dHJpYnV0ZXMsXG4gIHByb2Nlc3NEeW5hbWljQXR0cmlidXRlc0ZvckhjbCxcbn0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybURlcGVuZGFibGUgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZGVwZW5kYWJsZVwiO1xuaW1wb3J0IHsgcmVmLCBkZXBlbmRhYmxlIH0gZnJvbSBcIi4vdGZFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBJUmVzb2x2YWJsZSwgSVJlc29sdmVDb250ZXh0IH0gZnJvbSBcIi4vdG9rZW5zL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IGNhcHR1cmVDcmVhdGlvblN0YWNrIH0gZnJvbSBcIi4vdG9rZW5zL3ByaXZhdGUvc3RhY2stdHJhY2VcIjtcbmltcG9ydCB7IFByb3ZpZGVyRmVhdHVyZSB9IGZyb20gXCIuL3Byb3ZpZGVyLWZlYXR1cmUtY29uc3RyYWludHNcIjtcbmltcG9ydCB7IElJbnRlcnBvbGF0aW5nUGFyZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtSXRlcmF0b3IgfSBmcm9tIFwiLi90ZXJyYWZvcm0taXRlcmF0b3JcIjtcbmltcG9ydCB7IFByZWNvbmRpdGlvbiwgUG9zdGNvbmRpdGlvbiB9IGZyb20gXCIuL3RlcnJhZm9ybS1jb25kaXRpb25zXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1Db3VudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1jb3VudFwiO1xuaW1wb3J0IHtcbiAgU1NIUHJvdmlzaW9uZXJDb25uZWN0aW9uLFxuICBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbixcbn0gZnJvbSBcIi4vdGVycmFmb3JtLXByb3Zpc2lvbmVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5pbXBvcnQge1xuICBGaWxlUHJvdmlzaW9uZXIsXG4gIExvY2FsRXhlY1Byb3Zpc2lvbmVyLFxuICBSZW1vdGVFeGVjUHJvdmlzaW9uZXIsXG59IGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aXNpb25lclwiO1xuaW1wb3J0IHsgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uIH0gZnJvbSBcIi4vdmFsaWRhdGlvbnMvdmFsaWRhdGUtdGVycmFmb3JtLXZlcnNpb25cIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXN0YWNrXCI7XG5pbXBvcnQge1xuICBtb3ZlZFRvUmVzb3VyY2VPZkRpZmZlcmVudFR5cGUsXG4gIHJlc291cmNlR2l2ZW5Ud29Nb3ZlT3BlcmF0aW9uc0J5SWQsXG4gIHJlc291cmNlR2l2ZW5Ud29Nb3ZlT3BlcmF0aW9uc0J5VGFyZ2V0LFxuICByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeVRhcmdldEFuZElkLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuY29uc3QgVEVSUkFGT1JNX1JFU09VUkNFX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJjZGt0Zi9UZXJyYWZvcm1SZXNvdXJjZVwiKTtcblxuZXhwb3J0IGludGVyZmFjZSBJVGVycmFmb3JtUmVzb3VyY2Uge1xuICByZWFkb25seSB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZyaWVuZGx5VW5pcXVlSWQ6IHN0cmluZztcblxuICBkZXBlbmRzT24/OiBzdHJpbmdbXTtcbiAgY291bnQ/OiBudW1iZXIgfCBUZXJyYWZvcm1Db3VudDtcbiAgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbiAgbGlmZWN5Y2xlPzogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGU7XG4gIGZvckVhY2g/OiBJVGVycmFmb3JtSXRlcmF0b3I7XG5cbiAgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyk6IElSZXNvbHZhYmxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlIHtcbiAgcmVhZG9ubHkgY3JlYXRlQmVmb3JlRGVzdHJveT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHByZXZlbnREZXN0cm95PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdIHwgXCJhbGxcIjtcbiAgcmVhZG9ubHkgcmVwbGFjZVRyaWdnZXJlZEJ5PzogQXJyYXk8SVRlcnJhZm9ybURlcGVuZGFibGUgfCBzdHJpbmc+O1xuICByZWFkb25seSBwcmVjb25kaXRpb24/OiBQcmVjb25kaXRpb25bXTtcbiAgcmVhZG9ubHkgcG9zdGNvbmRpdGlvbj86IFBvc3Rjb25kaXRpb25bXTtcbn1cblxuLyoqXG4gKiBwcmVwYXJlcyBhIGxpZmVjeWNsZSBvYmplY3QgZm9yIGJlaW5nIHJlbmRlcmVkIGFzIEpTT05cbiAqIGN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uOlxuICogIC0gY29udmVydHMgYWxsIHJlcGxhY2VUcmlnZ2VyZWRCeSBpdGVtcyB0aGF0IGFyZSBJVGVycmFmb3JtRGVwZW5kYWJsZXMgdG8gc3RyaW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmZWN5Y2xlVG9UZXJyYWZvcm0oXG4gIGxpZmVjeWNsZT86IFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlLFxuKTogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWxpZmVjeWNsZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmxpZmVjeWNsZSxcbiAgICAuLi4obGlmZWN5Y2xlPy5yZXBsYWNlVHJpZ2dlcmVkQnk/Lmxlbmd0aFxuICAgICAgPyB7XG4gICAgICAgICAgcmVwbGFjZVRyaWdnZXJlZEJ5OiBsaWZlY3ljbGU/LnJlcGxhY2VUcmlnZ2VyZWRCeT8ubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4geC5mcW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgcmVhZG9ubHkgZGVwZW5kc09uPzogSVRlcnJhZm9ybURlcGVuZGFibGVbXTtcbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXIgfCBUZXJyYWZvcm1Db3VudDtcbiAgcmVhZG9ubHkgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbiAgcmVhZG9ubHkgbGlmZWN5Y2xlPzogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGU7XG4gIHJlYWRvbmx5IGZvckVhY2g/OiBJVGVycmFmb3JtSXRlcmF0b3I7XG4gIHJlYWRvbmx5IHByb3Zpc2lvbmVycz86IEFycmF5PFxuICAgIEZpbGVQcm92aXNpb25lciB8IExvY2FsRXhlY1Byb3Zpc2lvbmVyIHwgUmVtb3RlRXhlY1Byb3Zpc2lvbmVyXG4gID47XG4gIHJlYWRvbmx5IGNvbm5lY3Rpb24/OiBTU0hQcm92aXNpb25lckNvbm5lY3Rpb24gfCBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck1ldGFkYXRhIHtcbiAgcmVhZG9ubHkgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3ZpZGVyVmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZUNvbmZpZyBleHRlbmRzIFRlcnJhZm9ybU1ldGFBcmd1bWVudHMge1xuICByZWFkb25seSB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE/OiBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck1ldGFkYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVJlc291cmNlTW92ZUJ5VGFyZ2V0IHtcbiAgcmVhZG9ubHkgbW92ZVRhcmdldDogc3RyaW5nO1xuICByZWFkb25seSBpbmRleD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeUlkIHtcbiAgcmVhZG9ubHkgdG86IHN0cmluZztcbiAgcmVhZG9ubHkgZnJvbTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVJlc291cmNlSW1wb3J0IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1SZXNvdXJjZVxuICBleHRlbmRzIFRlcnJhZm9ybUVsZW1lbnRcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtUmVzb3VyY2UsIElUZXJyYWZvcm1EZXBlbmRhYmxlLCBJSW50ZXJwb2xhdGluZ1BhcmVudFxue1xuICBwdWJsaWMgcmVhZG9ubHkgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YT86IFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yTWV0YWRhdGE7XG5cbiAgLy8gVGVycmFmb3JtTWV0YUFyZ3VtZW50c1xuXG4gIHB1YmxpYyBkZXBlbmRzT24/OiBzdHJpbmdbXTtcbiAgcHVibGljIGNvdW50PzogbnVtYmVyIHwgVGVycmFmb3JtQ291bnQ7XG4gIHB1YmxpYyBwcm92aWRlcj86IFRlcnJhZm9ybVByb3ZpZGVyO1xuICBwdWJsaWMgbGlmZWN5Y2xlPzogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGU7XG4gIHB1YmxpYyBmb3JFYWNoPzogSVRlcnJhZm9ybUl0ZXJhdG9yO1xuICBwdWJsaWMgY29ubmVjdGlvbj86IFNTSFByb3Zpc2lvbmVyQ29ubmVjdGlvbiB8IFdpbnJtUHJvdmlzaW9uZXJDb25uZWN0aW9uO1xuICBwdWJsaWMgcHJvdmlzaW9uZXJzPzogQXJyYXk8XG4gICAgRmlsZVByb3Zpc2lvbmVyIHwgTG9jYWxFeGVjUHJvdmlzaW9uZXIgfCBSZW1vdGVFeGVjUHJvdmlzaW9uZXJcbiAgPjtcbiAgcHJpdmF0ZSBfaW1wb3J0ZWQ/OiBUZXJyYWZvcm1SZXNvdXJjZUltcG9ydDtcbiAgcHJpdmF0ZSBfbW92ZWRCeVRhcmdldD86IFRlcnJhZm9ybVJlc291cmNlTW92ZUJ5VGFyZ2V0O1xuICBwcml2YXRlIF9tb3ZlZEJ5SWQ/OiBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeUlkO1xuICBwcml2YXRlIF9oYXNNb3ZlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogVGVycmFmb3JtUmVzb3VyY2VDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBURVJSQUZPUk1fUkVTT1VSQ0VfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUgPSBjb25maWcudGVycmFmb3JtUmVzb3VyY2VUeXBlO1xuICAgIHRoaXMudGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGEgPSBjb25maWcudGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnLmRlcGVuZHNPbikpIHtcbiAgICAgIHRoaXMuZGVwZW5kc09uID0gY29uZmlnLmRlcGVuZHNPbi5tYXAoKGRlcGVuZGVuY3kpID0+XG4gICAgICAgIGRlcGVuZGFibGUoZGVwZW5kZW5jeSksXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvdW50ID0gY29uZmlnLmNvdW50O1xuICAgIHRoaXMucHJvdmlkZXIgPSBjb25maWcucHJvdmlkZXI7XG4gICAgdGhpcy5saWZlY3ljbGUgPSBjb25maWcubGlmZWN5Y2xlO1xuICAgIHRoaXMuZm9yRWFjaCA9IGNvbmZpZy5mb3JFYWNoO1xuICAgIHRoaXMucHJvdmlzaW9uZXJzID0gY29uZmlnLnByb3Zpc2lvbmVycztcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25maWcuY29ubmVjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNUZXJyYWZvcm1SZXNvdXJjZSh4OiBhbnkpOiB4IGlzIFRlcnJhZm9ybVJlc291cmNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgeCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBURVJSQUZPUk1fUkVTT1VSQ0VfU1lNQk9MIGluIHhcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGhhc1Jlc291cmNlTW92ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW92ZWRCeUlkIHx8IHRoaXMuX21vdmVkQnlUYXJnZXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldExpc3RBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNMaXN0KHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCb29sZWFuQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlckxpc3RBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJMaXN0KFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHJpbmdNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmdNYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlck1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlck1hcChcbiAgICAgIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Qm9vbGVhbk1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0Jvb2xlYW5NYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEFueU1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0FueU1hcCh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlcnJhZm9ybU1ldGFBcmd1bWVudHMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGFzc2VydChcbiAgICAgICF0aGlzLmZvckVhY2ggfHwgdHlwZW9mIHRoaXMuY291bnQgPT09IFwidW5kZWZpbmVkXCIsXG4gICAgICBgZm9yRWFjaCBhbmQgY291bnQgYXJlIGJvdGggc2V0LCBidXQgdGhleSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBZb3UgY2FuIG9ubHkgdXNlIGVpdGhlciBvZiB0aGVtLiBDaGVjayB0aGUgcmVzb3VyY2UgYXQgcGF0aDogJHt0aGlzLm5vZGUucGF0aH1gLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVwZW5kc09uOiB0aGlzLmRlcGVuZHNPbixcbiAgICAgIGNvdW50OiBUZXJyYWZvcm1Db3VudC5pc1RlcnJhZm9ybUNvdW50KHRoaXMuY291bnQpXG4gICAgICAgID8gdGhpcy5jb3VudC50b1RlcnJhZm9ybSgpXG4gICAgICAgIDogdGhpcy5jb3VudCxcbiAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyPy5mcW4sXG4gICAgICBsaWZlY3ljbGU6IGxpZmVjeWNsZVRvVGVycmFmb3JtKHRoaXMubGlmZWN5Y2xlKSxcbiAgICAgIGZvckVhY2g6IHRoaXMuZm9yRWFjaD8uX2dldEZvckVhY2hFeHByZXNzaW9uKCksXG4gICAgICBjb25uZWN0aW9uOiB0aGlzLmNvbm5lY3Rpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8vIGpzaWkgY2FuJ3QgaGFuZGxlIGFic3RyYWN0IGNsYXNzZXM/XG4gIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBzIGEgd3JpdGUtb25seSBhdHRyaWJ1dGUncyBhbHJlYWR5LW1hcHBlZCB2YWx1ZSBzbyB0aGF0XG4gICAqIGBQcm92aWRlckZlYXR1cmUuV1JJVEVfT05MWV9BVFRSSUJVVEVTYCB1c2FnZSBpcyByZWdpc3RlcmVkIGF0XG4gICAqICpyZXNvbHZlKiB0aW1lIGluc3RlYWQgb2YgYXQgbXV0YXRpb24gdGltZSAoc2V0dGVyL2NvbnN0cnVjdG9yKS5cbiAgICogQ2FsbGVkIGJ5IGdlbmVyYXRlZCBiaW5kaW5ncyBmcm9tIGBzeW50aGVzaXplQXR0cmlidXRlcygpYCBhbmRcbiAgICogYHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKClgLCBlLmcuXG4gICAqIGBzZWNyZXRfa2V5X3dvOiB0aGlzLm1hcmtXcml0ZU9ubHlBdHRyaWJ1dGUoY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fc2VjcmV0S2V5V28pKWA7XG4gICAqIG5vdCBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqXG4gICAqIGB1bmRlZmluZWRgIHBhc3NlcyB0aHJvdWdoIGNvbXBsZXRlbHkgdW5jaGFuZ2VkLCBzbyB0aGUgZXhpc3RpbmdcbiAgICogdW5kZWZpbmVkLWZpbHRlcmluZyB0aGF0IG9taXRzIHVuc2V0IGF0dHJpYnV0ZXMgZnJvbSBzeW50aGVzaXplZFxuICAgKiBvdXRwdXQgKHNlZSBgcmVzb2x2ZSgpYCBpbiBgdG9rZW5zL3ByaXZhdGUvcmVzb2x2ZS50c2AsIGFuZCB0aGVcbiAgICogYHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWRgIGZpbHRlciBpbiBnZW5lcmF0ZWRcbiAgICogYHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKClgKSBrZWVwcyB3b3JraW5nIHVudG91Y2hlZC4gYG51bGxgIGlzIGFsc29cbiAgICogcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkOiBpdCBhbHJlYWR5IHJlbmRlcnMgYXMgYW4gZXhwbGljaXRcbiAgICogbnVsbC1vdXQgYW5kIG11c3Qgbm90IGFybSB0aGUgdmFsaWRhdGlvbiBlaXRoZXIuXG4gICAqXG4gICAqIEFueSBvdGhlciB2YWx1ZSAtIGluY2x1ZGluZyBvbmUgdGhhdCB3aWxsIGl0c2VsZiByZXNvbHZlIHRvIG5vdGhpbmdcbiAgICogKGUuZy4gYSBgTGF6eWAvYElSZXNvbHZhYmxlYCBwcm9kdWNlciB3aXRoIG5vIHZhbHVlIHRvIGNvbnRyaWJ1dGUpIC1cbiAgICogaXMgd3JhcHBlZCBpbiBhIHRva2VuIHdob3NlIGByZXNvbHZlKClgIGRlZmVycyB0byB0aGUgcmVhbCByZXNvbHZlclxuICAgKiBmaXJzdCBhbmQgcmVnaXN0ZXJzIHVzYWdlIG9ubHkgaWYgd2hhdCBjb21lcyBiYWNrIGlzIG5vdFxuICAgKiBgbnVsbGAvYHVuZGVmaW5lZGA7IHRoZSByZXNvbHZlZCB2YWx1ZSBpcyB0aGVuIHJldHVybmVkIHVuY2hhbmdlZCxcbiAgICogc28gd2hhdCBhY3R1YWxseSByZW5kZXJzIGlzIHVudG91Y2hlZCBieSB0aGlzIHdyYXBwZXIuIEEgcHJvZHVjZXJcbiAgICogdGhhdCByZXNvbHZlcyB0byBgdW5kZWZpbmVkYCB0aGVyZWZvcmUgbmVpdGhlciByZWdpc3RlcnMgdXNhZ2Ugbm9yXG4gICAqIGxlYXZlcyBhbnl0aGluZyBiZWhpbmQgaW4gdGhlIHN5bnRoZXNpemVkIGF0dHJpYnV0ZSAtIHRoZSBvbWlzc2lvblxuICAgKiBiZWhhdmVzIGV4YWN0bHkgYXMgaWYgdGhlIGF0dHJpYnV0ZSBoYWQgbmV2ZXIgYmVlbiBzZXQuXG4gICAqXG4gICAqIFJlZ2lzdHJhdGlvbiBnb2VzIHRocm91Z2ggYF9yZWdpc3RlclJlc29sdmVEaXNjb3ZlcmVkUHJvdmlkZXJGZWF0dXJlVXNhZ2VgXG4gICAqIHJhdGhlciB0aGFuIGByZWdpc3RlclByb3ZpZGVyRmVhdHVyZVVzYWdlYDogdXNhZ2UgaGVyZSBpcyBvbmx5IGtub3duIGF0XG4gICAqIHJlc29sdmUgdGltZSwgYW5kIGEgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgcmVzb2x2ZWQgYWNyb3NzIG1hbnlcbiAgICogc3ludGhlc2lzIHBhc3NlcyBvdmVyIGl0cyBsaWZldGltZSAocmVwZWF0ZWQgYGFwcC5zeW50aCgpYCBjYWxscyxcbiAgICogdGVzdHMgcmV1c2luZyBhIGNvbnN0cnVjdCB0cmVlKSwgc28gaXQgbXVzdCByZXByZXNlbnQgb25seSB0aGUgQ1VSUkVOVFxuICAgKiBwYXNzIHJhdGhlciB0aGFuIGFjY3VtdWxhdGUgZm9yZXZlci4gRXZlcnkgdmFsaWRhdGlvbi1lbmFibGVkIGVudHJ5XG4gICAqIHBvaW50IChgQXBwLnN5bnRoYDsgYFRlc3Rpbmcuc3ludGhgL2BzeW50aEhjbGAgd2l0aCB2YWxpZGF0aW9ucztcbiAgICogYFN0YWNrU3ludGhlc2l6ZXIuc3ludGhlc2l6ZWApIHJ1bnMgYSBwcmVwYXJlIHN0ZXAgdGhhdCBkZWFjdGl2YXRlcyBhbnlcbiAgICogc3RhbGUgcmVnaXN0cmF0aW9uIGFuZCB0aGVuIHJlc29sdmVzIGV2ZXJ5IGVsZW1lbnQncyBgdG9UZXJyYWZvcm0oKWBcbiAgICogYmVmb3JlIHRoYXQgc2FtZSBlbnRyeSBwb2ludCdzIHZhbGlkYXRpb25zIHJ1biAtIHNlZVxuICAgKiBgVGVycmFmb3JtU3RhY2suX3J1blByZXBhcmluZ1Jlc29sdmVgIC0gc28gd2hhdGV2ZXIgdGhpcyBjbG9zdXJlXG4gICAqIChyZS0pcmVnaXN0ZXJzIGR1cmluZyB0aGF0IHByZXBhcmUgc3RlcCBpcyBhbHdheXMgdmlzaWJsZSB0byB0aGVcbiAgICogdmFsaWRhdGlvbiB0aGF0IHJlYWRzIGl0IGFmdGVyd2FyZHMsIGFuZCBub3RoaW5nIGxlZnQgb3ZlciBmcm9tIGFuXG4gICAqIGVhcmxpZXIgcGFzcyBsZWFrcyBpbnRvIHRoZSBjdXJyZW50IG9uZS5cbiAgICovXG4gIHByb3RlY3RlZCBtYXJrV3JpdGVPbmx5QXR0cmlidXRlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0aW9uU3RhY2s6IGNhcHR1cmVDcmVhdGlvblN0YWNrKCksXG4gICAgICAvLyBBcnJvdyBmdW5jdGlvbjogYHRoaXNgIHN0YXlzIHRoZSByZXNvdXJjZSBsZXhpY2FsbHkuIGB0b1N0cmluZygpYFxuICAgICAgLy8gYmVsb3cgbXVzdCByZW1haW4gYSBzaG9ydGhhbmQgbWV0aG9kIGluc3RlYWQgLSBpdHMgYHRoaXNgIGlzIHRoZVxuICAgICAgLy8gd3JhcHBlciB0b2tlbiBvYmplY3QgYmVpbmcgc3RyaW5naWZpZWQuXG4gICAgICByZXNvbHZlOiAoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBjb250ZXh0LnJlc29sdmUodmFsdWUpO1xuICAgICAgICBpZiAocmVzb2x2ZWQgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyUmVzb2x2ZURpc2NvdmVyZWRQcm92aWRlckZlYXR1cmVVc2FnZShcbiAgICAgICAgICAgIFByb3ZpZGVyRmVhdHVyZS5XUklURV9PTkxZX0FUVFJJQlVURVMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgICB9LFxuICAgICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHRoaXMpO1xuICAgICAgfSxcbiAgICB9IGFzIElSZXNvbHZhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhpcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IGRlZXBNZXJnZShcbiAgICAgIHByb2Nlc3NEeW5hbWljQXR0cmlidXRlcyh0aGlzLnN5bnRoZXNpemVBdHRyaWJ1dGVzKCkpLFxuICAgICAga2V5c1RvU25ha2VDYXNlKHRoaXMudGVycmFmb3JtTWV0YUFyZ3VtZW50cyksXG4gICAgICB7XG4gICAgICAgIHByb3Zpc2lvbmVyOiB0aGlzLnByb3Zpc2lvbmVycz8ubWFwKCh7IHR5cGUsIC4uLnByb3BzIH0pID0+ICh7XG4gICAgICAgICAgW3R5cGVdOiBrZXlzVG9TbmFrZUNhc2UocHJvcHMpLFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgKTtcblxuICAgIGF0dHJpYnV0ZXNbXCIvL1wiXSA9IHtcbiAgICAgIC4uLihhdHRyaWJ1dGVzW1wiLy9cIl0gPz8ge30pLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3ROb2RlTWV0YWRhdGEsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vdmVkQmxvY2sgPSB0aGlzLl9idWlsZE1vdmVkQmxvY2soKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2U6IHRoaXMuX2hhc01vdmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDoge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXToge1xuICAgICAgICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogYXR0cmlidXRlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgIG1vdmVkOiBtb3ZlZEJsb2NrXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0bzogbW92ZWRCbG9jay50byxcbiAgICAgICAgICAgICAgZnJvbTogbW92ZWRCbG9jay5mcm9tLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaW1wb3J0OiB0aGlzLl9pbXBvcnRlZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMuX2ltcG9ydGVkLnByb3ZpZGVyPy5mcW4sXG4gICAgICAgICAgICAgIGlkOiB0aGlzLl9pbXBvcnRlZC5pZCxcbiAgICAgICAgICAgICAgdG86IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGVlcE1lcmdlKFxuICAgICAgcHJvY2Vzc0R5bmFtaWNBdHRyaWJ1dGVzRm9ySGNsKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSksXG4gICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy50ZXJyYWZvcm1NZXRhQXJndW1lbnRzKSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlzaW9uZXI6IHRoaXMucHJvdmlzaW9uZXJzPy5tYXAoKHsgdHlwZSwgLi4ucHJvcHMgfSkgPT4gKHtcbiAgICAgICAgICBbdHlwZV06IHtcbiAgICAgICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICB2YWx1ZToga2V5c1RvU25ha2VDYXNlKHByb3BzKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgKTtcblxuICAgIGF0dHJpYnV0ZXNbXCIvL1wiXSA9IHtcbiAgICAgIC4uLihhdHRyaWJ1dGVzW1wiLy9cIl0gPz8ge30pLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3ROb2RlTWV0YWRhdGEsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vdmVkQmxvY2sgPSB0aGlzLl9idWlsZE1vdmVkQmxvY2soKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2U6IHRoaXMuX2hhc01vdmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDoge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXToge1xuICAgICAgICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogYXR0cmlidXRlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgIG1vdmVkOiBtb3ZlZEJsb2NrXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0bzoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBtb3ZlZEJsb2NrLnRvLFxuICAgICAgICAgICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnJvbToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBtb3ZlZEJsb2NrLmZyb20sXG4gICAgICAgICAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaW1wb3J0OiB0aGlzLl9pbXBvcnRlZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9pbXBvcnRlZC5pZCxcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLl9pbXBvcnRlZC5wcm92aWRlclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5faW1wb3J0ZWQucHJvdmlkZXIuZnFuLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9NZXRhZGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBvdmVycmlkZXM6IE9iamVjdC5rZXlzKHRoaXMucmF3T3ZlcnJpZGVzKS5sZW5ndGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGVdOiBPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcyksXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGltcG9ydHM6IHRoaXMuX2ltcG9ydGVkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXTogW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG1vdmVkOlxuICAgICAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0IHx8IHRoaXMuX21vdmVkQnlJZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBbdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGVdOiBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVmKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfSR7XG4gICAgICAgIHRoaXMuZm9yRWFjaCA/IFwiLipcIiA6IFwiXCJcbiAgICAgIH0uJHt0ZXJyYWZvcm1BdHRyaWJ1dGV9YCxcbiAgICAgIHRoaXMuY2RrdGZTdGFjayxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGltcG9ydEZyb20oaWQ6IHN0cmluZywgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcikge1xuICAgIHRoaXMuX2ltcG9ydGVkID0geyBpZCwgcHJvdmlkZXIgfTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBWYWxpZGF0ZVRlcnJhZm9ybVZlcnNpb24oXG4gICAgICAgIFwiPj0xLjVcIixcbiAgICAgICAgYEltcG9ydCBibG9ja3MgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBUZXJyYWZvcm0gPj0xLjUuIFBsZWFzZSB1cGdyYWRlIHlvdXIgVGVycmFmb3JtIHZlcnNpb24uYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQ6IHN0cmluZykge1xuICAgIHJldHVybiBUZXJyYWZvcm1TdGFjay5vZih0aGlzKS5tb3ZlVGFyZ2V0cy5nZXRSZXNvdXJjZUJ5VGFyZ2V0KG1vdmVUYXJnZXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkUmVzb3VyY2VUYXJnZXQobW92ZVRhcmdldDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRlcnJhZm9ybVN0YWNrLm9mKHRoaXMpLm1vdmVUYXJnZXRzLmFkZFJlc291cmNlVGFyZ2V0KFxuICAgICAgdGhpcyxcbiAgICAgIG1vdmVUYXJnZXQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkTW92ZWRCbG9ja0J5VGFyZ2V0KFxuICAgIG1vdmVkVGFyZ2V0OiBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeVRhcmdldCxcbiAgKTogeyB0bzogc3RyaW5nOyBmcm9tOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgeyBtb3ZlVGFyZ2V0LCBpbmRleCB9ID0gbW92ZWRUYXJnZXQ7XG4gICAgY29uc3QgcmVzb3VyY2VUb01vdmVUbyA9IHRoaXMuX2dldFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQpO1xuICAgIGlmICh0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZSAhPT0gcmVzb3VyY2VUb01vdmVUby50ZXJyYWZvcm1SZXNvdXJjZVR5cGUpIHtcbiAgICAgIHRocm93IG1vdmVkVG9SZXNvdXJjZU9mRGlmZmVyZW50VHlwZShcbiAgICAgICAgbW92ZVRhcmdldCxcbiAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUsXG4gICAgICAgIHJlc291cmNlVG9Nb3ZlVG8udGVycmFmb3JtUmVzb3VyY2VUeXBlLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgdG8gPSBpbmRleFxuICAgICAgPyB0eXBlb2YgaW5kZXggPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHtyZXNvdXJjZVRvTW92ZVRvLmZyaWVuZGx5VW5pcXVlSWR9W1wiJHtpbmRleH1cIl1gXG4gICAgICAgIDogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7cmVzb3VyY2VUb01vdmVUby5mcmllbmRseVVuaXF1ZUlkfVske2luZGV4fV1gXG4gICAgICA6IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3Jlc291cmNlVG9Nb3ZlVG8uZnJpZW5kbHlVbmlxdWVJZH1gO1xuICAgIGNvbnN0IGZyb20gPSBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YDtcbiAgICByZXR1cm4geyB0bywgZnJvbSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRNb3ZlZEJsb2NrKCk6IHsgdG86IHN0cmluZzsgZnJvbTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9tb3ZlZEJ5VGFyZ2V0ICYmIHRoaXMuX21vdmVkQnlJZCkge1xuICAgICAgdGhyb3cgcmVzb3VyY2VHaXZlblR3b01vdmVPcGVyYXRpb25zQnlUYXJnZXRBbmRJZChcbiAgICAgICAgdGhpcy5ub2RlLmlkLFxuICAgICAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0Lm1vdmVUYXJnZXQsXG4gICAgICAgIHsgdG86IHRoaXMuX21vdmVkQnlJZC50bywgZnJvbTogdGhpcy5fbW92ZWRCeUlkLmZyb20gfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9tb3ZlZEJ5VGFyZ2V0KSB7XG4gICAgICBjb25zdCBtb3ZlZEJsb2NrQnlUYXJnZXQgPSB0aGlzLl9idWlsZE1vdmVkQmxvY2tCeVRhcmdldChcbiAgICAgICAgdGhpcy5fbW92ZWRCeVRhcmdldCxcbiAgICAgICk7XG4gICAgICByZXR1cm4geyB0bzogbW92ZWRCbG9ja0J5VGFyZ2V0LnRvLCBmcm9tOiBtb3ZlZEJsb2NrQnlUYXJnZXQuZnJvbSB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fbW92ZWRCeUlkKSB7XG4gICAgICByZXR1cm4geyB0bzogdGhpcy5fbW92ZWRCeUlkLnRvLCBmcm9tOiB0aGlzLl9tb3ZlZEJ5SWQuZnJvbSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGlzIHJlc291cmNlIHRvIHRoZSB0YXJnZXQgcmVzb3VyY2UgZ2l2ZW4gYnkgbW92ZVRhcmdldC5cbiAgICogQHBhcmFtIG1vdmVUYXJnZXQgVGhlIHByZXZpb3VzbHkgc2V0IHVzZXIgZGVmaW5lZCBzdHJpbmcgc2V0IGJ5IC5hZGRNb3ZlVGFyZ2V0KCkgY29ycmVzcG9uZGluZyB0byB0aGUgcmVzb3VyY2UgdG8gbW92ZSB0by5cbiAgICogQHBhcmFtIGluZGV4IE9wdGlvbmFsIFRoZSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoZSBrZXkgdGhlIHJlc291cmNlIGlzIHRvIGFwcGVhciBpbiB0aGUgZm9yZWFjaCBvZiBhIHJlc291cmNlIHRvIG1vdmUgdG9cbiAgICovXG4gIHB1YmxpYyBtb3ZlVG8obW92ZVRhcmdldDogc3RyaW5nLCBpbmRleD86IHN0cmluZyB8IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9tb3ZlZEJ5VGFyZ2V0KSB7XG4gICAgICB0aHJvdyByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeVRhcmdldChcbiAgICAgICAgdGhpcy5mcmllbmRseVVuaXF1ZUlkLFxuICAgICAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0Lm1vdmVUYXJnZXQsXG4gICAgICAgIG1vdmVUYXJnZXQsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0ID0geyBtb3ZlVGFyZ2V0LCBpbmRleCB9O1xuICAgIHRoaXMuX2hhc01vdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgdXNlciBkZWZpbmVkIG1vdmVUYXJnZXQgc3RyaW5nIHRvIHRoaXMgcmVzb3VyY2UgdG8gYmUgbGF0ZXIgdXNlZCBpbiAubW92ZVRvKG1vdmVUYXJnZXQpIHRvIHJlc29sdmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBtb3ZlLlxuICAgKiBAcGFyYW0gbW92ZVRhcmdldCBUaGUgc3RyaW5nIG1vdmUgdGFyZ2V0IHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoaXMgcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhZGRNb3ZlVGFyZ2V0KG1vdmVUYXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuX2FkZFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoaXMgcmVzb3VyY2UgdG8gdGhlIHJlc291cmNlIGNvcnJlc3BvbmRpbmcgdG8gXCJpZFwiXG4gICAqIEBwYXJhbSBpZCBGdWxsIGlkIG9mIHJlc291cmNlIHRvIG1vdmUgdG8sIGUuZy4gXCJhd3NfczNfYnVja2V0LmV4YW1wbGVcIlxuICAgKi9cbiAgcHVibGljIG1vdmVUb0lkKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fbW92ZWRCeUlkKSB7XG4gICAgICB0aHJvdyByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeUlkKFxuICAgICAgICB0aGlzLm5vZGUuaWQsXG4gICAgICAgIHsgdG86IHRoaXMuX21vdmVkQnlJZC5mcm9tLCBmcm9tOiB0aGlzLl9tb3ZlZEJ5SWQudG8gfSxcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBpZCxcbiAgICAgICAgICBmcm9tOiBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fbW92ZWRCeUlkID0ge1xuICAgICAgdG86IGlkLFxuICAgICAgZnJvbTogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgfTtcbiAgICB0aGlzLl9oYXNNb3ZlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0aGUgcmVzb3VyY2UgY29ycmVzcG9uZGluZyB0byBcImlkXCIgdG8gdGhpcyByZXNvdXJjZS4gTm90ZSB0aGF0IHRoZSByZXNvdXJjZSBiZWluZyBtb3ZlZCBmcm9tIG11c3QgYmUgbWFya2VkIGFzIG1vdmVkIHVzaW5nIGl0cyBpbnN0YW5jZSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGlkIEZ1bGwgaWQgb2YgcmVzb3VyY2UgYmVpbmcgbW92ZWQgZnJvbSwgZS5nLiBcImF3c19zM19idWNrZXQuZXhhbXBsZVwiXG4gICAqL1xuICBwdWJsaWMgbW92ZUZyb21JZChpZDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX21vdmVkQnlJZCkge1xuICAgICAgdGhyb3cgcmVzb3VyY2VHaXZlblR3b01vdmVPcGVyYXRpb25zQnlJZChcbiAgICAgICAgdGhpcy5ub2RlLmlkLFxuICAgICAgICB7IHRvOiB0aGlzLl9tb3ZlZEJ5SWQuZnJvbSwgZnJvbTogdGhpcy5fbW92ZWRCeUlkLnRvIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0bzogaWQsXG4gICAgICAgICAgZnJvbTogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9tb3ZlZEJ5SWQgPSB7XG4gICAgICB0bzogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgICBmcm9tOiBpZCxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -457,7 +457,7 @@ class TerraformStack extends constructs_1.Construct {
457
457
  }
458
458
  exports.TerraformStack = TerraformStack;
459
459
  _a = JSII_RTTI_SYMBOL_1;
460
- TerraformStack[_a] = { fqn: "cdktn.TerraformStack", version: "0.24.0-pre.99" };
460
+ TerraformStack[_a] = { fqn: "cdktn.TerraformStack", version: "0.24.0" };
461
461
  // eslint-disable-next-line jsdoc/require-jsdoc
462
462
  function terraformElements(node, into = []) {
463
463
  if (terraform_element_1.TerraformElement.isTerraformElement(node)) {
@@ -29,7 +29,7 @@ class VariableType {
29
29
  }
30
30
  exports.VariableType = VariableType;
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- VariableType[_a] = { fqn: "cdktn.VariableType", version: "0.24.0-pre.99" };
32
+ VariableType[_a] = { fqn: "cdktn.VariableType", version: "0.24.0" };
33
33
  VariableType.STRING = "string";
34
34
  VariableType.NUMBER = "number";
35
35
  VariableType.BOOL = "bool";
@@ -157,5 +157,5 @@ class TerraformVariable extends terraform_element_1.TerraformElement {
157
157
  }
158
158
  exports.TerraformVariable = TerraformVariable;
159
159
  _b = JSII_RTTI_SYMBOL_1;
160
- TerraformVariable[_b] = { fqn: "cdktn.TerraformVariable", version: "0.24.0-pre.99" };
160
+ TerraformVariable[_b] = { fqn: "cdktn.TerraformVariable", version: "0.24.0" };
161
161
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXZhcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS12YXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDJEQUF1RDtBQUN2RCxpQ0FBb0Q7QUFDcEQscUNBQWlDO0FBQ2pDLGlEQUFxQztBQUtyQywrQ0FBK0M7QUFDL0MsTUFBc0IsWUFBWTtJQXNCekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQzdCLE9BQU8sUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQWtCO1FBQ3ZDLE9BQU8sU0FBUyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBcUM7UUFDeEQsT0FBTyxXQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQzs7QUExQ0gsb0NBMkNDOzs7QUExQ3dCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLGlCQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2QsZ0JBQUcsR0FBRyxLQUFLLENBQUM7QUFFWixpQkFBSSxHQUFHLE1BQU0sQ0FBQztBQUNkLGdC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QUFjO1FBQ25CLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxFQUMvQyxJQUFJLENBQUMsWUFBWSxDQUNsQjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUM1QyxJQUFJLENBQUMsWUFBWSxDQUNsQjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQzs7QUE3SUgsOENBOElDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWVsZW1lbnRcIjtcbmltcG9ydCB7IGtleXNUb1NuYWtlQ2FzZSwgZGVlcE1lcmdlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnNcIjtcbmltcG9ydCB7IHJlZiB9IGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgSVJlc29sdmFibGUgfSBmcm9tIFwiLi90b2tlbnMvcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybUFkZHJlc3NhYmxlIH0gZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWcgfSBmcm9tIFwiLi90ZXJyYWZvcm0tY29uZGl0aW9uc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlVHlwZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSU5HID0gXCJzdHJpbmdcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOVU1CRVIgPSBcIm51bWJlclwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPT0wgPSBcImJvb2xcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTlkgPSBcImFueVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVCA9IFwibGlzdFwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUCA9IFwibWFwXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUID0gXCJzZXRcIjtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJU1RfU1RSSU5HID0gXCJsaXN0KHN0cmluZylcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUX05VTUJFUiA9IFwibGlzdChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9CT09MID0gXCJsaXN0KGJvb2wpXCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVBfU1RSSU5HID0gXCJtYXAoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUF9OVU1CRVIgPSBcIm1hcChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQX0JPT0wgPSBcIm1hcChib29sKVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUX1NUUklORyA9IFwic2V0KHN0cmluZylcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVRfTlVNQkVSID0gXCJzZXQobnVtYmVyKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFVF9CT09MID0gXCJzZXQoYm9vbClcIjtcblxuICBwdWJsaWMgc3RhdGljIGxpc3QodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBsaXN0KCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWFwKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBgbWFwKCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0KHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBgc2V0KCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHVwbGUoLi4uZWxlbWVudHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGB0dXBsZSgke2VsZW1lbnRzLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb2JqZWN0KGF0dHJpYnV0ZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gYG9iamVjdCh7JHtPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKVxuICAgICAgLm1hcCgoaykgPT4gayArIFwiPVwiICsgYXR0cmlidXRlc1trXSlcbiAgICAgIC5qb2luKFwiLCBcIil9fSlgO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtVmFyaWFibGVDb25maWcge1xuICByZWFkb25seSBkZWZhdWx0PzogYW55O1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgYXJndW1lbnQgaW4gYSB2YXJpYWJsZSBibG9jayBhbGxvd3MgeW91IHRvIHJlc3RyaWN0IHRoZSB0eXBlIG9mIHZhbHVlIHRoYXQgd2lsbCBiZSBhY2NlcHRlZCBhcyB0aGUgdmFsdWUgZm9yIGEgdmFyaWFibGUuIElmIG5vIHR5cGUgY29uc3RyYWludCBpcyBzZXQgdGhlbiBhIHZhbHVlIG9mIGFueSB0eXBlIGlzIGFjY2VwdGVkLlxuICAgKlxuICAgKiBXaGlsZSB0eXBlIGNvbnN0cmFpbnRzIGFyZSBvcHRpb25hbCwgd2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlbTsgdGhleSBzZXJ2ZSBhcyBlYXN5IHJlbWluZGVycyBmb3IgdXNlcnMgb2YgdGhlIG1vZHVsZSwgYW5kIGFsbG93IFRlcnJhZm9ybSB0byByZXR1cm4gYSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHdyb25nIHR5cGUgaXMgdXNlZC5cbiAgICpcbiAgICogVHlwZSBjb25zdHJhaW50cyBhcmUgY3JlYXRlZCBmcm9tIGEgbWl4dHVyZSBvZiB0eXBlIGtleXdvcmRzIGFuZCB0eXBlIGNvbnN0cnVjdG9ycy4gVGhlIHN1cHBvcnRlZCB0eXBlIGtleXdvcmRzIGFyZTpcbiAgICpcbiAgICogLSBzdHJpbmdcbiAgICogLSBudW1iZXJcbiAgICogLSBib29sXG4gICAqXG4gICAqIFRoZSB0eXBlIGNvbnN0cnVjdG9ycyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBjb21wbGV4IHR5cGVzIHN1Y2ggYXMgY29sbGVjdGlvbnM6XG4gICAqXG4gICAqIC0gbGlzdChcXDxUWVBFXFw+KVxuICAgKiAtIHNldChcXDxUWVBFXFw+KVxuICAgKiAtIG1hcChcXDxUWVBFXFw+KVxuICAgKiAtIG9iamVjdCh7XFw8QVRUUiBOQU1FXFw+ID0gXFw8VFlQRVxcPiwgLi4uIH0pXG4gICAqIC0gdHVwbGUoW1xcPFRZUEVcXD4sIC4uLl0pXG4gICAqXG4gICAqIFRoZSBrZXl3b3JkIGFueSBtYXkgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFueSB0eXBlIGlzIGFjY2VwdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBtZWFuaW5nIGFuZCBiZWhhdmlvciBvZiB0aGVzZSBkaWZmZXJlbnQgdHlwZXMsIGFzIHdlbGwgYXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYXV0b21hdGljIGNvbnZlcnNpb24gb2YgY29tcGxleCB0eXBlcywgcmVmZXIgdG8ge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL3R5cGUtY29uc3RyYWludHMgVHlwZSBDb25zdHJhaW50c30uXG4gICAqXG4gICAqIElmIGJvdGggdGhlIHR5cGUgYW5kIGRlZmF1bHQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBnaXZlbiBkZWZhdWx0IHZhbHVlIG11c3QgYmUgY29udmVydGlibGUgdG8gdGhlIHNwZWNpZmllZCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICByZWFkb25seSBzZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qXG4gICAqIFRoZSBudWxsYWJsZSBhcmd1bWVudCBpbiBhIHZhcmlhYmxlIGJsb2NrIGNvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZHVsZSBjYWxsZXIgbWF5IGFzc2lnbiB0aGUgdmFsdWUgbnVsbCB0byB0aGUgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBudWxsYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYXJiaXRyYXJ5IGN1c3RvbSB2YWxpZGF0aW9uIHJ1bGVzIGZvciBhIHBhcnRpY3VsYXIgdmFyaWFibGUgdXNpbmcgYSB2YWxpZGF0aW9uIGJsb2NrIG5lc3RlZCB3aXRoaW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb24/OiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1WYXJpYWJsZVxuICBleHRlbmRzIFRlcnJhZm9ybUVsZW1lbnRcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzZW5zaXRpdmU/OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgbnVsbGFibGU/OiBib29sZWFuO1xuICBwcml2YXRlIF92YWxpZGF0aW9uPzogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgXCJ2YXJcIik7XG5cbiAgICB0aGlzLmRlZmF1bHQgPSBjb25maWcuZGVmYXVsdDtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuc2Vuc2l0aXZlID0gY29uZmlnLnNlbnNpdGl2ZTtcbiAgICB0aGlzLm51bGxhYmxlID0gY29uZmlnLm51bGxhYmxlO1xuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSBjb25maWcudmFsaWRhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RyaW5nVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcy5pbnRlcnBvbGF0aW9uKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBudW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlcih0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpc3RWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJvb2xlYW5WYWx1ZSgpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbi5hc0FueSh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGFkZFZhbGlkYXRpb24odmFsaWRhdGlvbjogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLl92YWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsaWRhdGlvbi5wdXNoKHZhbGlkYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0aW9uKCk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gcmVmKGB2YXIuJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCwgdGhpcy5jZGt0ZlN0YWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVmYXVsdCxcbiAgICAgICAgdHlwZTogXCJhbnlcIixcbiAgICAgIH0sXG5cbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudHlwZSxcbiAgICAgICAgdHlwZTogXCJ0eXBlXCIsXG4gICAgICB9LFxuICAgICAgc2Vuc2l0aXZlOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnNlbnNpdGl2ZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9LFxuICAgICAgbnVsbGFibGU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMubnVsbGFibGUsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsaWRhdGlvbj8ubWFwKCh2YWxpZGF0aW9uKSA9PiAoe1xuICAgICAgICAgIGVycm9yX21lc3NhZ2U6IHZhbGlkYXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgICAgIGNvbmRpdGlvbjogdmFsaWRhdGlvbi5jb25kaXRpb24sXG4gICAgICAgIH0pKSxcbiAgICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwib2JqZWN0TGlzdFwiLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWU/LnZhbHVlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0OiB0aGlzLmRlZmF1bHQsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNlbnNpdGl2ZTogdGhpcy5zZW5zaXRpdmUsXG4gICAgICBudWxsYWJsZTogdGhpcy5udWxsYWJsZSxcbiAgICAgIHZhbGlkYXRpb246IHRoaXMudmFsaWRhdGlvbj8ubWFwKCh2YWxpZGF0aW9uKSA9PiAoe1xuICAgICAgICBlcnJvcl9tZXNzYWdlOiB2YWxpZGF0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZGl0aW9uOiB2YWxpZGF0aW9uLmNvbmRpdGlvbixcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhcmlhYmxlOiB7XG4gICAgICAgIFt0aGlzLmZyaWVuZGx5VW5pcXVlSWRdOiBkZWVwTWVyZ2UoXG4gICAgICAgICAga2V5c1RvU25ha2VDYXNlKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSksXG4gICAgICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy5zeW50aGVzaXplQXR0cmlidXRlcygpKSxcbiAgICAgICAgICB0aGlzLnJhd092ZXJyaWRlcyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIHN0cmluZyB0b2tlbiByZWZlcmVuY2luZyB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZVxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZTtcbiAgfVxufVxuIl19
@@ -182,5 +182,5 @@ class Testing {
182
182
  }
183
183
  exports.Testing = Testing;
184
184
  _a = JSII_RTTI_SYMBOL_1;
185
- Testing[_a] = { fqn: "cdktn.Testing", version: "0.24.0-pre.99" };
185
+ Testing[_a] = { fqn: "cdktn.Testing", version: "0.24.0" };
186
186
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFFbkMsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyw4QkFBOEI7QUFFOUIsaUVBQThDO0FBQzlDLDBCQUF5QztBQUN6QywwQ0FBdUM7QUFDdkMsMENBQTJDO0FBRTNDLDBDQUE0QztBQUM1QywyREFBMEQ7QUFDMUQseUNBS29CO0FBZXBCLE1BQU0sdUJBQXVCLEdBQXFCO0lBQ2hELFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsaUJBQWlCLEVBQUUsS0FBSztDQUN6QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFDbEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUE0QixFQUFFO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FDeEMsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQUcsQ0FBQztZQUNsQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07WUFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFD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QUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUN4QyxRQUFnQixFQUNoQixZQUFvQixFQUNwQixhQUFrQyxFQUFFO1FBRXBDLE9BQU8sSUFBQSwwQ0FBK0IsR0FBRSxDQUN0QyxRQUFRLEVBQ1IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQ2hDLFVBQVUsQ0FDWCxDQUFDLElBQUksQ0FBQztJQUNULENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUMxQixRQUFnQixFQUNoQixZQUFvQjtRQUVwQixPQUFPLElBQUEsMENBQStCLEdBQUUsQ0FDdEMsUUFBUSxFQUNSLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUNoQyxFQUFFLENBQ0gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFFBQWdCO1FBQy9DLE9BQU8sSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLElBQUEsZ0JBQVMsR0FBRSxDQUFDO0lBQ2QsQ0FBQzs7QUF0UEgsMEJBdVBDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm5vZGU6b3NcIjtcblxuaW1wb3J0IHN0cmluZ2lmeSBmcm9tIFwic2FmZS1zdGFibGUtc3RyaW5naWZ5XCI7XG5pbXBvcnQgeyBBcHAsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgRlVUVVJFX0ZMQUdTIH0gZnJvbSBcIi4uL2ZlYXR1cmVzXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0LCBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgc2V0dXBKZXN0IH0gZnJvbSBcIi4vYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgaW52b2tlQXNwZWN0cyB9IGZyb20gXCIuLi9zeW50aGVzaXplL3N5bnRoZXNpemVyXCI7XG5pbXBvcnQge1xuICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzLFxuICBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMsXG4gIHRvQmVWYWxpZFRlcnJhZm9ybSxcbn0gZnJvbSBcIi4vbWF0Y2hlcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJU2NvcGVDYWxsYmFjayB7XG4gIChzY29wZTogQ29uc3RydWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0aW5nQXBwQ29uZmlnIHtcbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xuICByZWFkb25seSBzdGFja1RyYWNlcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN0dWJWZXJzaW9uPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW5hYmxlRnV0dXJlRmxhZ3M/OiBib29sZWFuO1xuICByZWFkb25seSBmYWtlQ2RrdGZKc29uUGF0aD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5jb25zdCBEZWZhdWx0VGVzdGluZ0FwcENvbmZpZzogVGVzdGluZ0FwcENvbmZpZyA9IHtcbiAgc3RhY2tUcmFjZXM6IGZhbHNlLFxuICBzdHViVmVyc2lvbjogdHJ1ZSxcbiAgZW5hYmxlRnV0dXJlRmxhZ3M6IHRydWUsXG4gIGZha2VDZGt0Zkpzb25QYXRoOiBmYWxzZSxcbn07XG5cbi8qKlxuICogVGVzdGluZyB1dGlsaXRpZXMgZm9yIGNka3RmIGFwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3Rpbmcge1xuICAvKipcbiAgICogUmV0dXJucyBhbiBhcHAgZm9yIHRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqIC0gT3V0cHV0IGRpcmVjdG9yeSBpcyBhIHRlbXAgZGlyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcHAob3B0aW9uczogVGVzdGluZ0FwcENvbmZpZyA9IHt9KTogQXBwIHtcbiAgICBjb25zdCBhcHBDb25maWcgPSB7IC4uLkRlZmF1bHRUZXN0aW5nQXBwQ29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKCFhcHBDb25maWcub3V0ZGlyKSB7XG4gICAgICBhcHBDb25maWcub3V0ZGlyID0gZnMubWtkdGVtcFN5bmMoXG4gICAgICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjZGt0Zi5vdXRkaXIuXCIpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHtcbiAgICAgIG91dGRpcjogYXBwQ29uZmlnLm91dGRpcixcbiAgICAgIHN0YWNrVHJhY2VzOiBhcHBDb25maWcuc3RhY2tUcmFjZXMsXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgfSk7XG5cbiAgICBpZiAoYXBwQ29uZmlnLnN0dWJWZXJzaW9uKSB7XG4gICAgICB0aGlzLnN0dWJWZXJzaW9uKGFwcCk7XG4gICAgfVxuICAgIGlmIChhcHBDb25maWcuZW5hYmxlRnV0dXJlRmxhZ3MpIHtcbiAgICAgIHRoaXMuZW5hYmxlRnV0dXJlRmxhZ3MoYXBwKTtcbiAgICB9XG4gICAgaWYgKGFwcENvbmZpZy5mYWtlQ2RrdGZKc29uUGF0aCkge1xuICAgICAgdGhpcy5mYWtlQ2RrdGZKc29uUGF0aChhcHApO1xuICAgIH1cblxuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0dWJWZXJzaW9uKGFwcDogQXBwKTogQXBwIHtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZWZXJzaW9uXCIsIFwic3R1YmJlZFwiKTtcbiAgICAoYXBwLm1hbmlmZXN0LnZlcnNpb24gYXMgc3RyaW5nKSA9IFwic3R1YmJlZFwiO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZha2VDZGt0Zkpzb25QYXRoKGFwcDogQXBwKTogQXBwIHtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZKc29uUGF0aFwiLCBgJHtwcm9jZXNzLmN3ZCgpfS9jZGt0Zi5qc29uYCk7XG4gICAgYXBwLm5vZGUuc2V0Q29udGV4dChcImNka3RmUmVsYXRpdmVNb2R1bGVzXCIsIFtcIi4vdGVzdC9maXh0dXJlcy9cIl0pO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuYWJsZUZ1dHVyZUZsYWdzKGFwcDogQXBwKTogQXBwIHtcbiAgICBjb25zdCBub2RlID0gYXBwLm5vZGU7XG4gICAgT2JqZWN0LmVudHJpZXMoRlVUVVJFX0ZMQUdTKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICBub2RlLnNldENvbnRleHQoa2V5LCB2YWx1ZSksXG4gICAgKTtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzeW50aFNjb3BlKGZuOiBJU2NvcGVDYWxsYmFjaykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKFRlc3RpbmcuYXBwKCksIFwic3RhY2tcIik7XG4gICAgZm4oc3RhY2spO1xuICAgIHJldHVybiBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gc3ludGhlc2l6ZWQgSlNPTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3ludGgoc3RhY2s6IFRlcnJhZm9ybVN0YWNrLCBydW5WYWxpZGF0aW9ucyA9IGZhbHNlKSB7XG4gICAgaW52b2tlQXNwZWN0cyhzdGFjayk7XG4gICAgaWYgKHJ1blZhbGlkYXRpb25zKSB7XG4gICAgICAvLyBEZWxpYmVyYXRlbHkgbm90IHRoZSBmdWxsIGBwcmVwYXJlU3RhY2soKWAgLSB0aGF0IGFsc28gaW5qZWN0cyBhXG4gICAgICAvLyBsb2NhbCBiYWNrZW5kIHZpYSBgZW5zdXJlQmFja2VuZEV4aXN0cygpYCwgd2hpY2ggd291bGQgYWRkIGFcbiAgICAgIC8vIGJhY2tlbmQgYmxvY2sgdG8gZXZlcnkgZXhpc3Rpbmcgc25hcHNob3QgdGhhdCBuZXZlciBhc2tlZCBmb3Igb25lLlxuICAgICAgLy8gT25seSBydW4gdGhlIHJlc29sdmUvcmVzZXQgaGFsZiB0aGF0IChyZS0pZGlzY292ZXJzIGN1cnJlbnQtcGFzc1xuICAgICAgLy8gcHJvdmlkZXItZmVhdHVyZSBhbmQgVGVycmFmb3JtLWZ1bmN0aW9uIHVzYWdlLCBzbyB0aGUgdmFsaWRhdGlvbnNcbiAgICAgIC8vIGJlbG93IHNlZSB3aGF0IHRoaXMgcGFzcyBhY3R1YWxseSByZW5kZXJzIGluc3RlYWQgb2Ygc3RhbGUgdXNhZ2VcbiAgICAgIC8vIChvciBub25lIGF0IGFsbCkgbGVmdCBvdmVyIGZyb20gYSBwcmV2aW91cyBjYWxsIGFnYWluc3QgdGhlIHNhbWVcbiAgICAgIC8vIHN0YWNrLiBgX3J1blByZXBhcmluZ1Jlc29sdmVgIGNsZWFycyB0aGUgc3RhY2sncyBvd24gZnVuY3Rpb24tdXNhZ2VcbiAgICAgIC8vIHNldHMgaXRzZWxmIGJlZm9yZSByZWRpc2NvdmVyaW5nIC0gc2VlIGBUZXJyYWZvcm1TdGFjay5fdXNlZEZ1bmN0aW9uc2AuXG4gICAgICBzdGFjay5fcnVuUHJlcGFyaW5nUmVzb2x2ZSgpO1xuICAgICAgc3RhY2sucnVuQWxsVmFsaWRhdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZkNvbmZpZyA9IHN0YWNrLnRvVGVycmFmb3JtKCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZ1bmN0aW9uIHJlbW92ZU1ldGFkYXRhKGl0ZW06IGFueSk6IGFueSB7XG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgIHJldHVybiBpdGVtLm1hcChyZW1vdmVNZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGVhbmVkSXRlbSA9IE9iamVjdC5lbnRyaWVzKGl0ZW0pXG4gICAgICAgICAgLy8gb3JkZXIgYWxwaGFiZXRpY2FsbHlcbiAgICAgICAgICAuc29ydCgoW2FdLCBbYl0pID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoeyAuLi5hY2MsIFtrZXldOiByZW1vdmVNZXRhZGF0YSh2YWx1ZSkgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlbW92ZSBtZXRhZGF0YVxuICAgICAgICBkZWxldGUgKGNsZWFuZWRJdGVtIGFzIGFueSlbXCIvL1wiXTtcbiAgICAgICAgcmV0dXJuIGNsZWFuZWRJdGVtO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgY29uc3QgY2xlYW5lZCA9IHJlbW92ZU1ldGFkYXRhKHRmQ29uZmlnKTtcblxuICAgIHJldHVybiBzdHJpbmdpZnkoY2xlYW5lZCwgbnVsbCwgMikgYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIFRlcnJhZm9ybSBzeW50aGVzaXplZCBKU09OLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzeW50aEhjbChcbiAgICBzdGFjazogVGVycmFmb3JtU3RhY2ssXG4gICAgcnVuVmFsaWRhdGlvbnMgPSBmYWxzZSxcbiAgICByZXR1cm5NZXRhZGF0YSA9IGZhbHNlLFxuICApIHtcbiAgICBpbnZva2VBc3BlY3RzKHN0YWNrKTtcbiAgICBpZiAocnVuVmFsaWRhdGlvbnMpIHtcbiAgICAgIC8vIFNlZSB0aGUgbWF0Y2hpbmcgY29tbWVudCBpbiBUZXN0aW5nLnN5bnRoKCk6IG9ubHkgdGhlIHJlc29sdmUvcmVzZXRcbiAgICAgIC8vIGRpc2NvdmVyeSBoYWxmIG9mIHByZXBhcmVTdGFjaygpLCBuZXZlciB0aGUgYmFja2VuZC1pbmplY3RpbmcgaGFsZi5cbiAgICAgIHN0YWNrLl9ydW5QcmVwYXJpbmdSZXNvbHZlKCk7XG4gICAgICBzdGFjay5ydW5BbGxWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHN0YWNrLnRvSGNsVGVycmFmb3JtKCk7XG5cbiAgICBpZiAocmV0dXJuTWV0YWRhdGEpIHJldHVybiBjb25maWcubWV0YWRhdGE7XG5cbiAgICByZXR1cm4gY29uZmlnLmhjbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnVsbFN5bnRoKHN0YWNrOiBUZXJyYWZvcm1TdGFjayk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLm91dGRpci5cIikpO1xuXG4gICAgY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3QoXCJzdHViYmVkXCIsIG91dGRpciwgZmFsc2UpO1xuXG4gICAgc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZSh7XG4gICAgICBvdXRkaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIG1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG5cbiAgICByZXR1cm4gb3V0ZGlyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZW5kZXJDb25zdHJ1Y3RUcmVlKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlbmRlcihjb25zdHJ1Y3QsIDAsIGZhbHNlKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gcmVuZGVyKFxuICAgICAgY29uc3RydWN0OiBJQ29uc3RydWN0LFxuICAgICAgbGV2ZWw6IG51bWJlcixcbiAgICAgIGlzTGFzdDogYm9vbGVhbixcbiAgICApOiBzdHJpbmcge1xuICAgICAgbGV0IHByZWZpeCA9IFwiXCI7XG4gICAgICBpZiAobGV2ZWwgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwYWNlcyA9IFwiIFwiLnJlcGVhdCgobGV2ZWwgLSAxKSAqIDQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBpc0xhc3QgPyBcIuKUlFwiIDogXCLilJxcIjtcbiAgICAgICAgcHJlZml4ID0gYCR7c3BhY2VzfSR7c3ltYm9sfeKUgOKUgCBgO1xuICAgICAgfVxuICAgICAgY29uc3QgbmFtZSA9IEFwcC5pc0FwcChjb25zdHJ1Y3QpXG4gICAgICAgID8gXCJBcHBcIlxuICAgICAgICA6IGAke2NvbnN0cnVjdC5ub2RlLmlkfSAoJHtjb25zdHJ1Y3QuY29uc3RydWN0b3IubmFtZX0pYDtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtuYW1lfVxcbiR7Y29uc3RydWN0Lm5vZGUuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0ID0gaWR4ID09PSBhcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyKGNoaWxkLCBsZXZlbCArIDEsIGlzTGFzdCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpfWA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlRGF0YVNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAge30sXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHt9LFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyhcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXIoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICB7fSxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZCkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBKZXN0KCkge1xuICAgIHNldHVwSmVzdCgpO1xuICB9XG59XG4iXX0=
@@ -33,7 +33,7 @@ class AssertionReturn {
33
33
  }
34
34
  exports.AssertionReturn = AssertionReturn;
35
35
  _a = JSII_RTTI_SYMBOL_1;
36
- AssertionReturn[_a] = { fqn: "cdktn.testingMatchers.AssertionReturn", version: "0.24.0-pre.99" };
36
+ AssertionReturn[_a] = { fqn: "cdktn.testingMatchers.AssertionReturn", version: "0.24.0" };
37
37
  /**
38
38
  * Reformats the contents of the base testing matcher return type AssertionReturn into type useable by jest
39
39
  * @param toReturn
@@ -49,7 +49,7 @@ class Lazy {
49
49
  }
50
50
  exports.Lazy = Lazy;
51
51
  _a = JSII_RTTI_SYMBOL_1;
52
- Lazy[_a] = { fqn: "cdktn.Lazy", version: "0.24.0-pre.99" };
52
+ Lazy[_a] = { fqn: "cdktn.Lazy", version: "0.24.0" };
53
53
  // eslint-disable-next-line jsdoc/require-jsdoc
54
54
  class LazyBase {
55
55
  constructor() {
@@ -77,7 +77,7 @@ class LazyBase {
77
77
  }
78
78
  exports.LazyBase = LazyBase;
79
79
  _b = JSII_RTTI_SYMBOL_1;
80
- LazyBase[_b] = { fqn: "cdktn.LazyBase", version: "0.24.0-pre.99" };
80
+ LazyBase[_b] = { fqn: "cdktn.LazyBase", version: "0.24.0" };
81
81
  // eslint-disable-next-line jsdoc/require-jsdoc
82
82
  class LazyString extends LazyBase {
83
83
  constructor(producer) {
@@ -27,7 +27,7 @@ class StringConcat {
27
27
  }
28
28
  exports.StringConcat = StringConcat;
29
29
  _a = JSII_RTTI_SYMBOL_1;
30
- StringConcat[_a] = { fqn: "cdktn.StringConcat", version: "0.24.0-pre.99" };
30
+ StringConcat[_a] = { fqn: "cdktn.StringConcat", version: "0.24.0" };
31
31
  /**
32
32
  * Default resolver implementation
33
33
  *
@@ -119,5 +119,5 @@ class DefaultTokenResolver {
119
119
  }
120
120
  exports.DefaultTokenResolver = DefaultTokenResolver;
121
121
  _b = JSII_RTTI_SYMBOL_1;
122
- DefaultTokenResolver[_b] = { fqn: "cdktn.DefaultTokenResolver", version: "0.24.0-pre.99" };
122
+ DefaultTokenResolver[_b] = { fqn: "cdktn.DefaultTokenResolver", version: "0.24.0" };
123
123
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbnMvcmVzb2x2YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLGlEQUFpRDtBQUNqRCxtREFBK0M7QUFFL0Msc0NBTW1CO0FBeUluQjs7OztHQUlHO0FBQ0gsTUFBYSxZQUFZO0lBQ3ZCOztPQUVHO0lBQ0ksSUFBSSxDQUFDLElBQXFCLEVBQUUsS0FBc0I7UUFDdkQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxHQUFHLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDOztBQVpILG9DQWFDOzs7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDL0I7O09BRUc7SUFDSCxZQUE2QixNQUE2QjtRQUE3QixXQUFNLEdBQU4sTUFBTSxDQUF1QjtJQUFHLENBQUM7SUFFOUQ7Ozs7O09BS0c7SUFDSSxZQUFZLENBQ2pCLENBQWMsRUFDZCxPQUF3QixFQUN4QixhQUE2QjtRQUU3QixJQUFJLENBQUM7WUFDSCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWxDLHlFQUF5RTtZQUN6RSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUFDLE9BQU8s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QUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBQSwrQ0FBc0MsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNqRCxDQUFDOztBQXBHSCxvREFxR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzL2Jsb2IvZTAxZTQ3Zjc4ZWYxZTliNjAwZWZjZDIzZmY3NzA1YWE4ZDM4NDAxNy9saWIvcmVzb2x2YWJsZS50c1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUb2tlblN0cmluZyB9IGZyb20gXCIuL3ByaXZhdGUvZW5jb2RpbmdcIjtcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSBcIi4vcHJpdmF0ZS90b2tlbi1tYXBcIjtcbmltcG9ydCB7IFRva2VuaXplZFN0cmluZ0ZyYWdtZW50cyB9IGZyb20gXCIuL3N0cmluZy1mcmFnbWVudHNcIjtcbmltcG9ydCB7XG4gIGNhbm5vdENvbmNhdGVuYXRlU3RyaW5nc0luVG9rZW5pemVkTWFwLFxuICBjYW5ub3RDb25jYXRlbmF0ZVN0cmluZ3NJblRva2VuaXplZFN0cmluZ0FycmF5LFxuICBtYXBWYWx1ZUFkZGVkVG9SZWZlcmVuY2VMaXN0LFxuICBudW1iZXJWYWx1ZUFkZGVkVG9SZWZlcmVuY2VMaXN0LFxuICBzdHJpbmdWYWx1ZUFkZGVkVG9SZWZlcmVuY2VMaXN0LFxufSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbi8qKlxuICogQ3VycmVudCByZXNvbHV0aW9uIGNvbnRleHQgZm9yIHRva2Vuc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgZnJvbSB3aGljaCByZXNvbHV0aW9uIGhhcyBiZWVuIGluaXRpYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IElDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiB3ZSBhcmUgc3RpbGwgcHJlcGFyaW5nLCBmYWxzZSBpZiB3ZSdyZSByZW5kZXJpbmcgdGhlIGZpbmFsIG91dHB1dFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlcGFyaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHdoZW4gJHt9IHNob3VsZCBiZSBvbW1pdHRlZCAoYmVjYXVzZSBhbHJlYWR5IGluc2lkZSB0aGVtKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBzdXBwcmVzc0JyYWNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiAke30gc2hvdWxkIG5vdCBiZSBwYXJzZWQsIGFuZCB0cmVhdGVkIGFzIGxpdGVyYWxzXG4gICAqL1xuICBpZ25vcmVFc2NhcGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVHJ1ZSB3aGVuICR7fSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBzdHJpbmcgdG8gYmUgcmVzb2x2ZWQsIG91dHB1dHMgYSB3YXJuaW5nLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgd2FybkVzY2FwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUZXJyYWZvcm1JdGVyYXRvcnMgY2FuIGJlIHBhc3NlZCBmb3IgYmxvY2sgYXR0cmlidXRlcyBhbmQgbm9ybWFsIGxpc3QgYXR0cmlidXRlc1xuICAgKiBib3RoIHJlcXVpcmUgZGlmZmVyZW50IGhhbmRsaW5nIHdoZW4gdGhlIGl0ZXJhYmxlIHZhcmlhYmxlIGlzIGFjY2Vzc2VkXG4gICAqIGUuZy4gYSBkeW5hbWljIGJsb2NrIG5lZWRzIGVhY2gua2V5IHdoaWxlIGEgZm9yIGV4cHJlc3Npb24ganVzdCBuZWVkcyBrZXlcbiAgICovXG4gIGl0ZXJhdG9yQ29udGV4dD86IFwiRFlOQU1JQ19CTE9DS1wiIHwgXCJGT1JfRVhQUkVTU0lPTlwiO1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGFuIGlubmVyIG9iamVjdFxuICAgKi9cbiAgcmVzb2x2ZSh4OiBhbnkpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHBvc3Rwcm9jZXNzb3IgYWZ0ZXIgdGhlIGVudGlyZSB0b2tlbiBzdHJ1Y3R1cmUgaGFzIGJlZW4gcmVzb2x2ZWRcbiAgICovXG4gIHJlZ2lzdGVyUG9zdFByb2Nlc3Nvcihwb3N0UHJvY2Vzc29yOiBJUG9zdFByb2Nlc3Nvcik6IHZvaWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciB2YWx1ZXMgdGhhdCBjYW4gYmUgcmVzb2x2YWJsZSBsYXRlclxuICpcbiAqIFRva2VucyBhcmUgc3BlY2lhbCBvYmplY3RzIHRoYXQgcGFydGljaXBhdGUgaW4gc3ludGhlc2lzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBjcmVhdGlvbiBzdGFjayBvZiB0aGlzIHJlc29sdmFibGUgd2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBlcnJvcnNcbiAgICogdGhyb3duIGR1cmluZyByZXNvbHV0aW9uLlxuICAgKlxuICAgKiBJZiB0aGlzIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgdGhlIHN0YWNrIHdpbGwgbm90IGJlIGF0dGFjaGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRpb25TdGFjazogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIFRva2VuJ3MgdmFsdWUgYXQgcmVzb2x1dGlvbiB0aW1lXG4gICAqL1xuICByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IGFueTtcblxuICAvKipcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcmVzb2x2YWJsZSBvYmplY3QuXG4gICAqXG4gICAqIFJldHVybnMgYSByZXZlcnNpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAgICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFRva2VuIHRoYXQgY2FuIHBvc3QtcHJvY2VzcyB0aGUgY29tcGxldGUgcmVzb2x2ZWQgdmFsdWUsIGFmdGVyIHJlc29sdmUoKSBoYXMgcmVjdXJzZWQgb3ZlciBpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQb3N0UHJvY2Vzc29yIHtcbiAgLyoqXG4gICAqIFByb2Nlc3MgdGhlIGNvbXBsZXRlbHkgcmVzb2x2ZWQgdmFsdWUsIGFmdGVyIGZ1bGwgcmVjdXJzaW9uL3Jlc29sdXRpb24gaGFzIGhhcHBlbmVkXG4gICAqL1xuICBwb3N0UHJvY2VzcyhpbnB1dDogYW55LCBjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnk7XG59XG5cbi8qKlxuICogSG93IHRvIHJlc29sdmUgdG9rZW5zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRva2VuUmVzb2x2ZXIge1xuICAvKipcbiAgICogUmVzb2x2ZSBhIHNpbmdsZSB0b2tlblxuICAgKi9cbiAgcmVzb2x2ZVRva2VuKFxuICAgIHQ6IElSZXNvbHZhYmxlLFxuICAgIGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCxcbiAgICBwb3N0UHJvY2Vzc29yOiBJUG9zdFByb2Nlc3NvcixcbiAgKTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgc3RyaW5nIHdpdGggYXQgbGVhc3Qgb25lIHN0cmluZ2lmaWVkIHRva2VuIGluIGl0XG4gICAqXG4gICAqIChNYXkgdXNlIGNvbmNhdGVuYXRpb24pXG4gICAqL1xuICByZXNvbHZlU3RyaW5nKHM6IFRva2VuaXplZFN0cmluZ0ZyYWdtZW50cywgY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgdG9rZW5pemVkIGxpc3RcbiAgICovXG4gIHJlc29sdmVMaXN0KGw6IHN0cmluZ1tdLCBjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSB0b2tlbml6ZWQgbnVtYmVyIGxpc3RcbiAgICovXG4gIHJlc29sdmVOdW1iZXJMaXN0KGw6IG51bWJlcltdLCBjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSB0b2tlbml6ZWQgbWFwXG4gICAqL1xuICByZXNvbHZlTWFwKG06IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IGFueTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGNvbmNhdGVuYXRlIHN5bWJvbHMgaW4gdGhlIHRhcmdldCBkb2N1bWVudCBsYW5ndWFnZVxuICpcbiAqIEludGVyZmFjZSBzbyBpdCBjb3VsZCBwb3RlbnRpYWxseSBiZSBleHBvc2VkIG92ZXIganNpaS5cbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZyYWdtZW50Q29uY2F0ZW5hdG9yIHtcbiAgLyoqXG4gICAqIEpvaW4gdGhlIGZyYWdtZW50IG9uIHRoZSBsZWZ0IGFuZCBvbiB0aGUgcmlnaHRcbiAgICovXG4gIGpvaW4obGVmdDogYW55IHwgdW5kZWZpbmVkLCByaWdodDogYW55IHwgdW5kZWZpbmVkKTogYW55O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFsbCBmcmFnbWVudHMgdG8gc3RyaW5ncyBhbmQgY29uY2F0cyB0aG9zZVxuICpcbiAqIERyb3BzICd1bmRlZmluZWQncy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ0NvbmNhdCBpbXBsZW1lbnRzIElGcmFnbWVudENvbmNhdGVuYXRvciB7XG4gIC8qKlxuICAgKiBDb25jYXRlbmF0ZXMgc3RyaW5nIGZyYWdtZW50c1xuICAgKi9cbiAgcHVibGljIGpvaW4obGVmdDogYW55IHwgdW5kZWZpbmVkLCByaWdodDogYW55IHwgdW5kZWZpbmVkKTogYW55IHtcbiAgICBpZiAobGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmlnaHQgIT09IHVuZGVmaW5lZCA/IGAke3JpZ2h0fWAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChyaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYCR7bGVmdH1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7bGVmdH0ke3JpZ2h0fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZhdWx0IHJlc29sdmVyIGltcGxlbWVudGF0aW9uXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRva2VuUmVzb2x2ZXIgaW1wbGVtZW50cyBJVG9rZW5SZXNvbHZlciB7XG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0b2tlbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uY2F0OiBJRnJhZ21lbnRDb25jYXRlbmF0b3IpIHt9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgVG9rZW4gcmVzb2x1dGlvblxuICAgKlxuICAgKiBSZXNvbHZlIHRoZSBUb2tlbiwgcmVjdXJzZSBpbnRvIHdoYXRldmVyIGl0IHJldHVybnMsXG4gICAqIHRoZW4gZmluYWxseSBwb3N0LXByb2Nlc3MgaXQuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZVRva2VuKFxuICAgIHQ6IElSZXNvbHZhYmxlLFxuICAgIGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCxcbiAgICBwb3N0UHJvY2Vzc29yOiBJUG9zdFByb2Nlc3NvcixcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCByZXNvbHZlZCA9IHQucmVzb2x2ZShjb250ZXh0KTtcblxuICAgICAgLy8gVGhlIHRva2VuIG1pZ2h0IGhhdmUgcmV0dXJuZWQgbW9yZSB2YWx1ZXMgdGhhdCBuZWVkIHJlc29sdmluZywgcmVjdXJzZVxuICAgICAgcmVzb2x2ZWQgPSBjb250ZXh0LnJlc29sdmUocmVzb2x2ZWQpO1xuICAgICAgcmVzb2x2ZWQgPSBwb3N0UHJvY2Vzc29yLnBvc3RQcm9jZXNzKHJlc29sdmVkLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCBlcnIgPSBlIGFzIGFueTtcbiAgICAgIGxldCBtZXNzYWdlID0gYFJlc29sdXRpb24gZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9LmA7XG4gICAgICBpZiAodC5jcmVhdGlvblN0YWNrPy5sZW5ndGgpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgXFxuT2JqZWN0IGNyZWF0aW9uIHN0YWNrOlxcbiAgYXQgJHt0LmNyZWF0aW9uU3RhY2suam9pbihcbiAgICAgICAgICBcIlxcbiAgYXQgXCIsXG4gICAgICAgICl9YDtcbiAgICAgIH1cblxuICAgICAgZXJyLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHN0cmluZyBmcmFnbWVudHMgdG8gVG9rZW5zXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZVN0cmluZyhcbiAgICBmcmFnbWVudHM6IFRva2VuaXplZFN0cmluZ0ZyYWdtZW50cyxcbiAgICBjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQsXG4gICkge1xuICAgIHJldHVybiBmcmFnbWVudHMubWFwVG9rZW5zKGNvbnRleHQpLmpvaW4odGhpcy5jb25jYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgbGlzdCBvZiBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyByZXNvbHZlTGlzdCh4czogc3RyaW5nW10sIGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIC8vIE11c3QgYmUgYSBzaW5nbGV0b24gbGlzdCB0b2tlbiwgYmVjYXVzZSBjb25jYXRlbmF0aW9uIGlzIG5vdCBhbGxvd2VkLlxuICAgIGlmICh4cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IHN0cmluZ1ZhbHVlQWRkZWRUb1JlZmVyZW5jZUxpc3QoeHMpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ciA9IFRva2VuU3RyaW5nLmZvckxpc3RUb2tlbih4c1swXSk7XG4gICAgY29uc3QgdG9rZW5NYXAgPSBUb2tlbk1hcC5pbnN0YW5jZSgpO1xuICAgIGNvbnN0IGZyYWdtZW50cyA9IHN0ci5zcGxpdCh0b2tlbk1hcC5sb29rdXBUb2tlbi5iaW5kKHRva2VuTWFwKSk7XG4gICAgaWYgKGZyYWdtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IGNhbm5vdENvbmNhdGVuYXRlU3RyaW5nc0luVG9rZW5pemVkU3RyaW5nQXJyYXkoeHNbMF0pO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFnbWVudHMubWFwVG9rZW5zKGNvbnRleHQpLmZpcnN0VmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSBsaXN0IG9mIG51bWJlcnNcbiAgICovXG4gIHB1YmxpYyByZXNvbHZlTnVtYmVyTGlzdCh4czogbnVtYmVyW10sIGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIC8vIE11c3QgYmUgYSBzaW5nbGV0b24gbGlzdCB0b2tlbiwgYmVjYXVzZSBjb25jYXRlbmF0aW9uIGlzIG5vdCBhbGxvd2VkLlxuICAgIGlmICh4cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG51bWJlclZhbHVlQWRkZWRUb1JlZmVyZW5jZUxpc3QoeHMpO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gVG9rZW5NYXAuaW5zdGFuY2UoKS5sb29rdXBOdW1iZXJMaXN0KHhzKTtcbiAgICBpZiAodG9rZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHhzO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dC5yZXNvbHZlKHRva2VuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIG1hcCB0b2tlblxuICAgKi9cbiAgcHVibGljIHJlc29sdmVNYXAoeHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh4cyk7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBtYXBWYWx1ZUFkZGVkVG9SZWZlcmVuY2VMaXN0KEpTT04uc3RyaW5naWZ5KHhzKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyID0gVG9rZW5TdHJpbmcuZm9yTWFwVG9rZW4oa2V5c1swXSk7XG4gICAgY29uc3QgdG9rZW5NYXAgPSBUb2tlbk1hcC5pbnN0YW5jZSgpO1xuICAgIGNvbnN0IGZyYWdtZW50cyA9IHN0ci5zcGxpdCh0b2tlbk1hcC5sb29rdXBUb2tlbi5iaW5kKHRva2VuTWFwKSk7XG4gICAgaWYgKGZyYWdtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IGNhbm5vdENvbmNhdGVuYXRlU3RyaW5nc0luVG9rZW5pemVkTWFwKHhzWzBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZ21lbnRzLm1hcFRva2Vucyhjb250ZXh0KS5maXJzdFZhbHVlO1xuICB9XG59XG4iXX0=
@@ -178,7 +178,7 @@ class TokenizedStringFragments {
178
178
  }
179
179
  exports.TokenizedStringFragments = TokenizedStringFragments;
180
180
  _a = JSII_RTTI_SYMBOL_1;
181
- TokenizedStringFragments[_a] = { fqn: "cdktn.TokenizedStringFragments", version: "0.24.0-pre.99" };
181
+ TokenizedStringFragments[_a] = { fqn: "cdktn.TokenizedStringFragments", version: "0.24.0" };
182
182
  /**
183
183
  * Resolve the value from a single fragment
184
184
  *
@@ -134,7 +134,7 @@ class Token {
134
134
  }
135
135
  exports.Token = Token;
136
136
  _a = JSII_RTTI_SYMBOL_1;
137
- Token[_a] = { fqn: "cdktn.Token", version: "0.24.0-pre.99" };
137
+ Token[_a] = { fqn: "cdktn.Token", version: "0.24.0" };
138
138
  /**
139
139
  * String Map token value representation
140
140
  */
@@ -256,5 +256,5 @@ class Tokenization {
256
256
  }
257
257
  exports.Tokenization = Tokenization;
258
258
  _b = JSII_RTTI_SYMBOL_1;
259
- Tokenization[_b] = { fqn: "cdktn.Tokenization", version: "0.24.0-pre.99" };
259
+ Tokenization[_b] = { fqn: "cdktn.Tokenization", version: "0.24.0" };
260
260
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW5zL3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBSUEsaUNBQThCO0FBQzlCLGlEQUFnRDtBQUNoRCxtREFBZ0Q7QUFDaEQsK0NBQTRDO0FBQzVDLG1EQUErQztBQUkvQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLEtBQUs7SUFDaEI7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBUTtRQUNqQyxPQUFPLElBQUEscUJBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVSxFQUFFLFVBQTJCLEVBQUU7UUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLG9CQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUN2QyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUNsQixPQUFPLENBQUMsV0FBVyxDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFVO1FBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxvQkFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFVLEVBQUUsVUFBMkIsRUFBRTtRQUM1RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtB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QUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSztTQUN2RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFRO1FBQ2pDLE9BQU8sQ0FDTCxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQ3ZCLEdBQUcsS0FBSyxJQUFJO1lBQ1osT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBUztRQUNyQywwSEFBMEg7UUFFMUgsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxXQUFJLENBQUMsV0FBVyxDQUFDO2dCQUN0QixPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDbkIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQztnQkFDakUsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQzs7QUFsSEgsb0NBbUhDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbi8vIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy9ibG9iL2UwMWU0N2Y3OGVmMWU5YjYwMGVmY2QyM2ZmNzcwNWFhOGQzODQwMTcvbGliL3Rva2VuLnRzXG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IExhenkgfSBmcm9tIFwiLi9sYXp5XCI7XG5pbXBvcnQgeyB1bnJlc29sdmVkIH0gZnJvbSBcIi4vcHJpdmF0ZS9lbmNvZGluZ1wiO1xuaW1wb3J0IHsgSW50cmluc2ljIH0gZnJvbSBcIi4vcHJpdmF0ZS9pbnRyaW5zaWNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi9wcml2YXRlL3Jlc29sdmVcIjtcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSBcIi4vcHJpdmF0ZS90b2tlbi1tYXBcIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBJVG9rZW5SZXNvbHZlciB9IGZyb20gXCIuL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IFRva2VuaXplZFN0cmluZ0ZyYWdtZW50cyB9IGZyb20gXCIuL3N0cmluZy1mcmFnbWVudHNcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc3BlY2lhbCBvciBsYXppbHktZXZhbHVhdGVkIHZhbHVlLlxuICpcbiAqIENhbiBiZSB1c2VkIHRvIGRlbGF5IGV2YWx1YXRpb24gb2YgYSBjZXJ0YWluIHZhbHVlIGluIGNhc2UsIGZvciBleGFtcGxlLFxuICogdGhhdCBpdCByZXF1aXJlcyBzb21lIGNvbnRleHQgb3IgbGF0ZS1ib3VuZCBkYXRhLiBDYW4gYWxzbyBiZSB1c2VkIHRvXG4gKiBtYXJrIHZhbHVlcyB0aGF0IG5lZWQgc3BlY2lhbCBwcm9jZXNzaW5nIGF0IGRvY3VtZW50IHJlbmRlcmluZyB0aW1lLlxuICpcbiAqIFRva2VucyBjYW4gYmUgZW1iZWRkZWQgaW50byBzdHJpbmdzIHdoaWxlIHJldGFpbmluZyB0aGVpciBvcmlnaW5hbFxuICogc2VtYW50aWNzLlxuICovXG5leHBvcnQgY2xhc3MgVG9rZW4ge1xuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIG9iaiByZXByZXNlbnRzIGFuIHVucmVzb2x2ZWQgdmFsdWVcbiAgICpcbiAgICogT25lIG9mIHRoZXNlIG11c3QgYmUgdHJ1ZTpcbiAgICpcbiAgICogLSBgb2JqYCBpcyBhbiBJUmVzb2x2YWJsZVxuICAgKiAtIGBvYmpgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGVuY29kZWQgYElSZXNvbHZhYmxlYFxuICAgKiAtIGBvYmpgIGlzIGVpdGhlciBhbiBlbmNvZGVkIG51bWJlciBvciBsaXN0XG4gICAqXG4gICAqIFRoaXMgZG9lcyBOT1QgcmVjdXJzZSBpbnRvIGxpc3RzIG9yIG9iamVjdHMgdG8gc2VlIGlmIHRoZXlcbiAgICogY29udGFpbmluZyByZXNvbHZhYmxlcy5cbiAgICpcbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIHRlc3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVW5yZXNvbHZlZChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1bnJlc29sdmVkKG9iaik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcmV2ZXJzaWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0b2tlblxuICAgKlxuICAgKiBJZiB0aGUgVG9rZW4gaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGxpdGVyYWwsIHRoZSBzdHJpbmdpZmllZCB2YWx1ZSBvZiB0aGVcbiAgICogbGl0ZXJhbCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBhIHNwZWNpYWwgcXVvdGVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKiBvZiB0aGUgVG9rZW4gaXMgcmV0dXJuZWQgdGhhdCBjYW4gYmUgZW1iZWRkZWQgaW50byBvdGhlciBzdHJpbmdzLlxuICAgKlxuICAgKiBTdHJpbmdzIHdpdGggcXVvdGVkIFRva2VucyBpbiB0aGVtIGNhbiBiZSByZXN0b3JlZCBiYWNrIGludG9cbiAgICogY29tcGxleCB2YWx1ZXMgd2l0aCB0aGUgVG9rZW5zIHJlc3RvcmVkIGJ5IGNhbGxpbmcgYHJlc29sdmUoKWBcbiAgICogb24gdGhlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXNTdHJpbmcodmFsdWU6IGFueSwgb3B0aW9uczogRW5jb2RpbmdPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gVG9rZW5NYXAuaW5zdGFuY2UoKS5yZWdpc3RlclN0cmluZyhcbiAgICAgIFRva2VuLmFzQW55KHZhbHVlKSxcbiAgICAgIG9wdGlvbnMuZGlzcGxheUhpbnQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZXZlcnNpYmxlIG51bWJlciByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRva2VuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzTnVtYmVyKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFRva2VuTWFwLmluc3RhbmNlKCkucmVnaXN0ZXJOdW1iZXIoVG9rZW4uYXNBbnkodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZXZlcnNpYmxlIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0b2tlblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc0xpc3QodmFsdWU6IGFueSwgb3B0aW9uczogRW5jb2RpbmdPcHRpb25zID0ge30pOiBzdHJpbmdbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmV2ZXJ5KCh4KSA9PiB0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFRva2VuTWFwLmluc3RhbmNlKCkucmVnaXN0ZXJMaXN0KFxuICAgICAgVG9rZW4uYXNBbnkodmFsdWUpLFxuICAgICAgb3B0aW9ucy5kaXNwbGF5SGludCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJldmVyc2libGUgbGlzdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRva2VuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzTnVtYmVyTGlzdCh2YWx1ZTogYW55KTogbnVtYmVyW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeSgoeCkgPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCIpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBUb2tlbk1hcC5pbnN0YW5jZSgpLnJlZ2lzdGVyTnVtYmVyTGlzdChUb2tlbi5hc0FueSh2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJldmVyc2libGUgbWFwIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdG9rZW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXNNYXAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBtYXBWYWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IEVuY29kaW5nT3B0aW9ucyA9IHt9LFxuICApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAvLyBzaW5jZSB0aGUgcmV0dXJuIHZhbHVlIGlzIGJhc2ljYWxseSBhbiBvYmplY3QsIGp1c3QgZW5jb2RlIGFsd2F5c1xuICAgIHJldHVybiBUb2tlbk1hcC5pbnN0YW5jZSgpLnJlZ2lzdGVyTWFwKFxuICAgICAgVG9rZW4uYXNBbnkodmFsdWUpLFxuICAgICAgbWFwVmFsdWUsXG4gICAgICBvcHRpb25zLmRpc3BsYXlIaW50LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3RyaW5nIE1hcCB0b2tlbiB2YWx1ZSByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJJTkdfTUFQX1RPS0VOX1ZBTFVFID0gXCJTdHJpbmcgTWFwIFRva2VuIFZhbHVlXCI7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJldmVyc2libGUgbWFwIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdG9rZW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXNTdHJpbmdNYXAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBvcHRpb25zOiBFbmNvZGluZ09wdGlvbnMgPSB7fSxcbiAgKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuYXNNYXAodmFsdWUsIFRva2VuLlNUUklOR19NQVBfVE9LRU5fVkFMVUUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE51bWJlciBNYXAgdG9rZW4gdmFsdWUgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTlVNQkVSX01BUF9UT0tFTl9WQUxVRSA9IC0xMjM0NTY3ODk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJldmVyc2libGUgbWFwIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdG9rZW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXNOdW1iZXJNYXAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBvcHRpb25zOiBFbmNvZGluZ09wdGlvbnMgPSB7fSxcbiAgKTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHRoaXMuYXNNYXAodmFsdWUsIFRva2VuLk5VTUJFUl9NQVBfVE9LRU5fVkFMVUUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJldmVyc2libGUgbWFwIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdG9rZW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXNCb29sZWFuTWFwKFxuICAgIHZhbHVlOiBhbnksXG4gICAgb3B0aW9uczogRW5jb2RpbmdPcHRpb25zID0ge30sXG4gICk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4gdGhpcy5hc01hcCh2YWx1ZSwgdHJ1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW55IG1hcCB0b2tlbiByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTllfTUFQX1RPS0VOX1ZBTFVFID0gXCJBbnkgTWFwIFRva2VuIFZhbHVlXCI7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJldmVyc2libGUgbWFwIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdG9rZW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXNBbnlNYXAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBvcHRpb25zOiBFbmNvZGluZ09wdGlvbnMgPSB7fSxcbiAgKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHRoaXMuYXNNYXAodmFsdWUsIFRva2VuLkFOWV9NQVBfVE9LRU5fVkFMVUUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJlc29sdmFibGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzQW55KHZhbHVlOiBhbnkpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIFRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpID8gdmFsdWUgOiBuZXcgSW50cmluc2ljKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBUb2tlbiBjb250YWluaW5nIGEgYG51bGxgIHZhbHVlXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gYHVuZGVmaW5lZGAsIGBuaWxgLCBgTm9uZWAgb3Igc2ltaWxhclxuICAgKiBhcyBpdCB3aWxsIGVuZCB1cCBpbiB0aGUgVGVycmFmb3JtIGNvbmZpZyBhbmQgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseVxuICAgKiBub3Qgc2V0IGFuIGF0dHJpYnV0ZSAod2hpY2ggaXMgc29tZXRpbWVzIHJlcXVpcmVkIGJ5IFRlcnJhZm9ybSBwcm92aWRlcnMpXG4gICAqXG4gICAqIEByZXR1cm5zIGEgVG9rZW4gcmVzb2x2aW5nIHRvIGBudWxsYCBhcyB1bmRlcnN0b29kIGJ5IFRlcnJhZm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBudWxsVmFsdWUoKTogSVJlc29sdmFibGUge1xuICAgIC8vIHBhc3NpbmcgbnVsbCB3b3JrcyBpbiBUeXBlc2NyaXB0LCB0aGlzIGlzIHdoeSB3ZSBjYW4gZG8gdGhpcyBoZXJlXG4gICAgLy8gYnV0IHVzZXJzIHdvdWxkbid0IGJlIGFibGUgdG8gY2FsbCBlLmcuIFRva2VuLmFzX2FueShOb25lKSBpbiBQeXRob25cbiAgICByZXR1cm4gVG9rZW4uYXNBbnkobnVsbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBMZXNzIG9mdC1uZWVkZWQgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgVG9rZW5zXG4gKi9cbmV4cG9ydCBjbGFzcyBUb2tlbml6YXRpb24ge1xuICAvKipcbiAgICogUmV2ZXJzZSBhbnkgdmFsdWUgaW50byBSZXNvbHZhYmxlcywgaWYgcG9zc2libGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmV2ZXJzZSh4OiBhbnkpOiBJUmVzb2x2YWJsZVtdIHtcbiAgICBpZiAoVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZSh4KSkge1xuICAgICAgcmV0dXJuIFt4XTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCByZXZlcnNlZFN0cmluZyA9IFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKHgpO1xuICAgICAgcmV0dXJuIFsuLi5yZXZlcnNlZFN0cmluZy50b2tlbnMsIC4uLnJldmVyc2VkU3RyaW5nLmludHJpbnNpY107XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgICBjb25zdCByZXZlcnNlZExpc3QgPSBUb2tlbml6YXRpb24ucmV2ZXJzZUxpc3QoeCk7XG4gICAgICBpZiAocmV2ZXJzZWRMaXN0KSB7XG4gICAgICAgIHJldHVybiBbcmV2ZXJzZWRMaXN0XTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmV2ZXJzZWROdW1iZXJMaXN0ID0gVG9rZW5pemF0aW9uLnJldmVyc2VOdW1iZXJMaXN0KHgpO1xuICAgICAgcmV0dXJuIHJldmVyc2VkTnVtYmVyTGlzdCA/IFtyZXZlcnNlZE51bWJlckxpc3RdIDogW107XG4gICAgfVxuICAgIGlmICh0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY29uc3QgcmV2ZXJzZWROdW1iZXIgPSBUb2tlbml6YXRpb24ucmV2ZXJzZU51bWJlcih4KTtcbiAgICAgIHJldHVybiByZXZlcnNlZE51bWJlciA/IFtyZXZlcnNlZE51bWJlcl0gOiBbXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJldmVyc2VkTWFwID0gVG9rZW5pemF0aW9uLnJldmVyc2VNYXAoeCk7XG4gICAgICByZXR1cm4gcmV2ZXJzZWRNYXAgPyBbcmV2ZXJzZWRNYXBdIDogW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdOyAvLyBudWxsIG9yIHVuZGVmaW5lZCBjYW5ub3QgYmUgcmV2ZXJzZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBVbi1lbmNvZGUgYSBzdHJpbmcgcG90ZW50aWFsbHkgY29udGFpbmluZyBlbmNvZGVkIHRva2Vuc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZXZlcnNlU3RyaW5nKHM6IHN0cmluZyk6IFRva2VuaXplZFN0cmluZ0ZyYWdtZW50cyB7XG4gICAgcmV0dXJuIFRva2VuTWFwLmluc3RhbmNlKCkuc3BsaXRTdHJpbmcocyk7XG4gIH1cblxuICAvKipcbiAgICogVW4tZW5jb2RlIGEgVG9rZW5pemVkIHZhbHVlIGZyb20gYSBudW1iZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmV2ZXJzZU51bWJlcihuOiBudW1iZXIpOiBJUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIFRva2VuTWFwLmluc3RhbmNlKCkubG9va3VwTnVtYmVyVG9rZW4obik7XG4gIH1cblxuICAvKipcbiAgICogVW4tZW5jb2RlIGEgVG9rZW5pemVkIHZhbHVlIGZyb20gYSBsaXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJldmVyc2VMaXN0KGw6IHN0cmluZ1tdKTogSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBUb2tlbk1hcC5pbnN0YW5jZSgpLmxvb2t1cExpc3QobCk7XG4gIH1cblxuICAvKipcbiAgICogVW4tZW5jb2RlIGEgVG9rZW5pemVkIHZhbHVlIGZyb20gYSBsaXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJldmVyc2VOdW1iZXJMaXN0KGw6IG51bWJlcltdKTogSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBUb2tlbk1hcC5pbnN0YW5jZSgpLmxvb2t1cE51bWJlckxpc3QobCk7XG4gIH1cblxuICAvKipcbiAgICogVW4tZW5jb2RlIGEgVG9rZW5pemVkIHZhbHVlIGZyb20gYSBtYXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmV2ZXJzZU1hcChtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBUb2tlbk1hcC5pbnN0YW5jZSgpLmxvb2t1cE1hcChtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBvYmplY3QgYnkgZXZhbHVhdGluZyBhbGwgdG9rZW5zIGFuZCByZW1vdmluZyBhbnkgdW5kZWZpbmVkIG9yIGVtcHR5IG9iamVjdHMgb3IgYXJyYXlzLlxuICAgKiBWYWx1ZXMgY2FuIG9ubHkgYmUgcHJpbWl0aXZlcywgYXJyYXlzIG9yIHRva2Vucy4gT3RoZXIgb2JqZWN0cyAoaS5lLiB3aXRoIG1ldGhvZHMpIHdpbGwgYmUgcmVqZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZXNvbHZlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBQcmVmaXgga2V5IHBhdGggY29tcG9uZW50cyBmb3IgZGlhZ25vc3RpY3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlc29sdmUob2JqOiBhbnksIG9wdGlvbnM6IFJlc29sdmVPcHRpb25zKTogYW55IHtcbiAgICByZXR1cm4gcmVzb2x2ZShvYmosIHtcbiAgICAgIHNjb3BlOiBvcHRpb25zLnNjb3BlLFxuICAgICAgcmVzb2x2ZXI6IG9wdGlvbnMucmVzb2x2ZXIsXG4gICAgICBwcmVwYXJpbmc6IG9wdGlvbnMucHJlcGFyaW5nICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnByZXBhcmluZyA6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSVJlc29sdmFibGUgb2JqZWN0XG4gICAqXG4gICAqIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gVG9rZW4uaXNVbnJlc29sdmVkKCkgd2hpY2ggd2lsbCBhbHNvIGNoZWNrIGZvclxuICAgKiBlbmNvZGVkIFRva2Vucywgd2hlcmVhcyB0aGlzIG1ldGhvZCB3aWxsIG9ubHkgZG8gYSB0eXBlIGNoZWNrIG9uIHRoZSBnaXZlblxuICAgKiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzUmVzb2x2YWJsZShvYmo6IGFueSk6IG9iaiBpcyBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIG9iaiAhPT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIG9iai5yZXNvbHZlID09PSBcImZ1bmN0aW9uXCJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZ2lmeSBhIG51bWJlciBkaXJlY3RseSBvciBsYXppbHkgaWYgaXQncyBhIFRva2VuLiBJZiBpdCBpcyBhbiBvYmplY3QgKGkuZS4sIHsgUmVmOiAnU29tZUxvZ2ljYWxJZCcgfSksIHJldHVybiBpdCBhcy1pcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5naWZ5TnVtYmVyKHg6IG51bWJlcikge1xuICAgIC8vIG9ubHkgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ3Mgc28gdGhhdCBSZWZzLCBjb25kaXRpb25zLCBhbmQgb3RoZXIgdGhpbmdzIGRvbid0IGVuZCB1cCBzeW50aGVzaXppbmcgYXMgW29iamVjdCBvYmplY3RdXG5cbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHgpKSB7XG4gICAgICByZXR1cm4gTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6IChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBjb250ZXh0LnJlc29sdmUoeCk7XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXNvbHZlZCAhPT0gXCJudW1iZXJcIiA/IHJlc29sdmVkIDogYCR7cmVzb2x2ZWR9YDtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHggIT09IFwibnVtYmVyXCIgPyB4IDogYCR7eH1gO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gdGhlIHJlc29sdmUoKSBvcGVyYXRpb25cbiAqXG4gKiBOT1QgdGhlIHNhbWUgYXMgdGhlIFJlc29sdmVDb250ZXh0OyBSZXNvbHZlQ29udGV4dCBpcyBleHBvc2VkIHRvIFRva2VuXG4gKiBpbXBsZW1lbnRvcnMgYW5kIHJlc29sdXRpb24gaG9va3MsIHdoZXJlYXMgdGhpcyBzdHJ1Y3QgaXMganVzdCB0byBidW5kbGVcbiAqIGEgbnVtYmVyIG9mIHRoaW5ncyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBhcmd1bWVudHMgdG8gcmVzb2x2ZSgpIGluIGFcbiAqIHJlYWRhYmxlIHdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgZnJvbSB3aGljaCByZXNvbHV0aW9uIGlzIHBlcmZvcm1lZFxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IElDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlciB0byBhcHBseSB0byBhbnkgcmVzb2x2YWJsZSB0b2tlbnMgZm91bmRcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVyOiBJVG9rZW5SZXNvbHZlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVzb2x1dGlvbiBpcyBiZWluZyBleGVjdXRlZCBkdXJpbmcgdGhlIHByZXBhcmUgcGhhc2Ugb3Igbm90LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlcGFyaW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIHN0cmluZyBlbmNvZGluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNvZGluZ09wdGlvbnMge1xuICAvKipcbiAgICogQSBoaW50IGZvciB0aGUgVG9rZW4ncyBwdXJwb3NlIHdoZW4gc3RyaW5naWZ5aW5nIGl0XG4gICAqIEBkZWZhdWx0IC0gbm8gZGlzcGxheSBoaW50XG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5SGludD86IHN0cmluZztcbn1cbiJdfQ==