cdktn 0.26.0-pre.20 → 0.26.0-pre.21

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 (114) hide show
  1. package/.jsii +1200 -1116
  2. package/eslint.config.mjs +18 -7
  3. package/jest.config.js +0 -1
  4. package/lib/_tokens.d.ts +7 -0
  5. package/lib/_tokens.js +8 -2
  6. package/lib/annotations.js +1 -1
  7. package/lib/app.js +8 -4
  8. package/lib/aspect.js +1 -1
  9. package/lib/asset-hash.js +1 -1
  10. package/lib/asset-staging.js +1 -1
  11. package/lib/assets.js +4 -4
  12. package/lib/backends/azurerm-backend.d.ts +6 -0
  13. package/lib/backends/azurerm-backend.js +9 -5
  14. package/lib/backends/cloud-backend.js +4 -4
  15. package/lib/backends/consul-backend.d.ts +6 -0
  16. package/lib/backends/consul-backend.js +9 -5
  17. package/lib/backends/cos-backend.d.ts +6 -0
  18. package/lib/backends/cos-backend.js +9 -5
  19. package/lib/backends/gcs-backend.d.ts +6 -0
  20. package/lib/backends/gcs-backend.js +9 -5
  21. package/lib/backends/http-backend.d.ts +6 -0
  22. package/lib/backends/http-backend.js +9 -5
  23. package/lib/backends/local-backend.d.ts +6 -0
  24. package/lib/backends/local-backend.js +9 -5
  25. package/lib/backends/oss-backend.d.ts +6 -0
  26. package/lib/backends/oss-backend.js +9 -5
  27. package/lib/backends/pg-backend.d.ts +6 -0
  28. package/lib/backends/pg-backend.js +9 -5
  29. package/lib/backends/remote-backend.d.ts +12 -0
  30. package/lib/backends/remote-backend.js +17 -9
  31. package/lib/backends/s3-backend.d.ts +6 -0
  32. package/lib/backends/s3-backend.js +9 -5
  33. package/lib/backends/swift-backend.js +2 -2
  34. package/lib/complex-computed-list.d.ts +85 -0
  35. package/lib/complex-computed-list.js +112 -54
  36. package/lib/functions/helpers.d.ts +72 -0
  37. package/lib/functions/helpers.js +73 -14
  38. package/lib/functions/provider-function.js +1 -1
  39. package/lib/functions/terraform-functions.generated.d.ts +3 -0
  40. package/lib/functions/terraform-functions.generated.js +5 -3
  41. package/lib/hcl/render.js +30 -6
  42. package/lib/ignore-strategy.js +1 -1
  43. package/lib/importable-resource.js +1 -1
  44. package/lib/manifest.d.ts +4 -0
  45. package/lib/manifest.js +6 -3
  46. package/lib/private/unique.js +11 -3
  47. package/lib/resource.js +1 -1
  48. package/lib/runtime.d.ts +6 -0
  49. package/lib/runtime.js +12 -3
  50. package/lib/synthesize/required-version.d.ts +32 -0
  51. package/lib/synthesize/required-version.js +205 -0
  52. package/lib/synthesize/synthesizer.d.ts +13 -0
  53. package/lib/synthesize/synthesizer.js +42 -8
  54. package/lib/terraform-asset.d.ts +4 -0
  55. package/lib/terraform-asset.js +6 -3
  56. package/lib/terraform-backend.d.ts +3 -0
  57. package/lib/terraform-backend.js +5 -3
  58. package/lib/terraform-conditions.js +1 -2
  59. package/lib/terraform-count.js +1 -1
  60. package/lib/terraform-data-resource.js +1 -1
  61. package/lib/terraform-data-source.d.ts +4 -0
  62. package/lib/terraform-data-source.js +8 -6
  63. package/lib/terraform-dependable.js +1 -1
  64. package/lib/terraform-dynamic-block.d.ts +4 -0
  65. package/lib/terraform-dynamic-block.js +5 -2
  66. package/lib/terraform-element.d.ts +4 -0
  67. package/lib/terraform-element.js +6 -3
  68. package/lib/terraform-ephemeral-resource.d.ts +4 -0
  69. package/lib/terraform-ephemeral-resource.js +8 -6
  70. package/lib/terraform-functions.d.ts +4 -0
  71. package/lib/terraform-functions.js +6 -3
  72. package/lib/terraform-hcl-module.d.ts +4 -0
  73. package/lib/terraform-hcl-module.js +6 -3
  74. package/lib/terraform-iterator.d.ts +19 -0
  75. package/lib/terraform-iterator.js +25 -11
  76. package/lib/terraform-local.d.ts +4 -0
  77. package/lib/terraform-local.js +6 -3
  78. package/lib/terraform-module.js +1 -1
  79. package/lib/terraform-operators.js +1 -1
  80. package/lib/terraform-output.d.ts +4 -0
  81. package/lib/terraform-output.js +6 -3
  82. package/lib/terraform-provider.d.ts +4 -0
  83. package/lib/terraform-provider.js +6 -3
  84. package/lib/terraform-provisioner.js +1 -1
  85. package/lib/terraform-remote-state.d.ts +3 -0
  86. package/lib/terraform-remote-state.js +5 -3
  87. package/lib/terraform-resource-targets.js +1 -1
  88. package/lib/terraform-resource.d.ts +5 -1
  89. package/lib/terraform-resource.js +16 -9
  90. package/lib/terraform-stack.d.ts +4 -0
  91. package/lib/terraform-stack.js +28 -9
  92. package/lib/terraform-variable.d.ts +7 -0
  93. package/lib/terraform-variable.js +16 -7
  94. package/lib/testing/adapters/jest.d.ts +3 -0
  95. package/lib/testing/adapters/jest.js +10 -1
  96. package/lib/testing/index.js +14 -4
  97. package/lib/testing/matchers.js +61 -19
  98. package/lib/tfExpression.d.ts +48 -0
  99. package/lib/tfExpression.js +53 -15
  100. package/lib/tokens/lazy.d.ts +4 -0
  101. package/lib/tokens/lazy.js +21 -8
  102. package/lib/tokens/private/dependency.js +2 -6
  103. package/lib/tokens/private/resolve.js +3 -3
  104. package/lib/tokens/private/stack-trace.d.ts +1 -1
  105. package/lib/tokens/private/stack-trace.js +1 -2
  106. package/lib/tokens/resolvable.js +2 -2
  107. package/lib/tokens/string-fragments.js +4 -4
  108. package/lib/tokens/token.js +2 -2
  109. package/lib/upgrade-id-aspect.js +1 -1
  110. package/lib/util.d.ts +0 -1
  111. package/lib/util.js +4 -4
  112. package/lib/validations/target-versions.d.ts +12 -0
  113. package/lib/validations/target-versions.js +40 -1
  114. package/package.json +112 -109
@@ -6,10 +6,12 @@ const terraform_backend_1 = require("../terraform-backend");
6
6
  const terraform_remote_state_1 = require("../terraform-remote-state");
7
7
  const util_1 = require("../util");
8
8
  const validations_1 = require("../validations");
9
- // eslint-disable-next-line jsdoc/require-jsdoc
9
+ /**
10
+ * Configures the stack to store its Terraform state in the `s3` backend.
11
+ */
10
12
  class S3Backend extends terraform_backend_1.TerraformBackend {
11
13
  props;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.S3Backend", version: "0.26.0-pre.20" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.S3Backend", version: "0.26.0-pre.21" };
13
15
  constructor(scope, props) {
14
16
  super(scope, "backend", "s3");
15
17
  this.props = props;
@@ -34,12 +36,14 @@ class S3Backend extends terraform_backend_1.TerraformBackend {
34
36
  }
35
37
  }
36
38
  exports.S3Backend = S3Backend;
37
- // eslint-disable-next-line jsdoc/require-jsdoc
39
+ /**
40
+ * A `terraform_remote_state` data source that reads the outputs of a state stored in the `s3` backend.
41
+ */
38
42
  class DataTerraformRemoteStateS3 extends terraform_remote_state_1.TerraformRemoteState {
39
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateS3", version: "0.26.0-pre.20" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateS3", version: "0.26.0-pre.21" };
40
44
  constructor(scope, id, config) {
41
45
  super(scope, id, "s3", config);
42
46
  }
43
47
  }
44
48
  exports.DataTerraformRemoteStateS3 = DataTerraformRemoteStateS3;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9zMy1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSw0REFBd0Q7QUFDeEQsc0VBR21DO0FBQ25DLGtDQUEwQztBQUMxQyxnREFBOEQ7QUFFOUQsK0NBQStDO0FBQy9DLE1BQWEsU0FBVSxTQUFRLG9DQUFnQjtJQUcxQjs7SUFGbkIsWUFDRSxLQUFnQixFQUNDLEtBQXNCO1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRmIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFJdkMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3JCLElBQUksMENBQTRCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUNoRSxTQUFTLEVBQUUsVUFBVTtnQkFDckIsUUFBUSxFQUFFLFVBQVU7YUFDckIsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixPQUFPLElBQUEsc0JBQWUsRUFBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLHVCQUF1QjtRQUMvQixPQUFPLElBQUEsc0JBQWUsRUFBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLHdCQUF3QixDQUM3QixLQUFnQixFQUNoQixJQUFZLEVBQ1osVUFBa0I7UUFFbEIsT0FBTyxJQUFJLDBCQUEwQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDakQsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLFNBQVMsRUFBRSx3QkFBd0I7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsQ0gsOEJBbUNDO0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsMEJBQTJCLFNBQVEsNkNBQW9COztJQUNsRSxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixNQUF3QztRQUV4QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7QUFQSCxnRUFRQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuLi90ZXJyYWZvcm0tYmFja2VuZFwiO1xuaW1wb3J0IHtcbiAgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQ29uZmlnLFxuICBUZXJyYWZvcm1SZW1vdGVTdGF0ZSxcbn0gZnJvbSBcIi4uL3RlcnJhZm9ybS1yZW1vdGUtc3RhdGVcIjtcbmltcG9ydCB7IGtleXNUb1NuYWtlQ2FzZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUZlYXR1cmVUYXJnZXRTdXBwb3J0IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25zXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgUzNCYWNrZW5kIGV4dGVuZHMgVGVycmFmb3JtQmFja2VuZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogUzNCYWNrZW5kQ29uZmlnLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgXCJiYWNrZW5kXCIsIFwiczNcIik7XG5cbiAgICBpZiAocHJvcHMudXNlTG9ja2ZpbGUpIHtcbiAgICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgICBuZXcgVmFsaWRhdGVGZWF0dXJlVGFyZ2V0U3VwcG9ydCh0aGlzLCBcIlMzIG5hdGl2ZSBzdGF0ZSBsb2NraW5nXCIsIHtcbiAgICAgICAgICB0ZXJyYWZvcm06IFwiPj0xLjEwLjBcIixcbiAgICAgICAgICBvcGVudG9mdTogXCI+PTEuMTAuMFwiLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ga2V5c1RvU25ha2VDYXNlKHsgLi4udGhpcy5wcm9wcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIGtleXNUb1NuYWtlQ2FzZSh7IC4uLnRoaXMucHJvcHMgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVtb3RlU3RhdGVEYXRhU291cmNlKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIF9mcm9tU3RhY2s6IHN0cmluZyxcbiAgKTogVGVycmFmb3JtUmVtb3RlU3RhdGUge1xuICAgIHJldHVybiBuZXcgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlUzMoc2NvcGUsIG5hbWUsIHtcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICB3b3Jrc3BhY2U6IFwiJHt0ZXJyYWZvcm0ud29ya3NwYWNlfVwiLFxuICAgIH0pO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlUzMgZXh0ZW5kcyBUZXJyYWZvcm1SZW1vdGVTdGF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBjb25maWc6IERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZVMzQ29uZmlnLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIFwiczNcIiwgY29uZmlnKTtcbiAgfVxufVxuXG4vKipcbiAqIFN0b3JlcyB0aGUgc3RhdGUgYXMgYSBnaXZlbiBrZXkgaW4gYSBnaXZlbiBidWNrZXQgb24gQW1hem9uIFMzLiBUaGlzIGJhY2tlbmRcbiAqIGFsc28gc3VwcG9ydHMgc3RhdGUgbG9ja2luZyBhbmQgY29uc2lzdGVuY3kgY2hlY2tpbmcgdmlhIER5bmFtbyBEQiwgd2hpY2hcbiAqIGNhbiBiZSBlbmFibGVkIGJ5IHNldHRpbmcgdGhlIGR5bmFtb2RiX3RhYmxlIGZpZWxkIHRvIGFuIGV4aXN0aW5nIER5bmFtb0RCXG4gKiB0YWJsZSBuYW1lLiBBIHNpbmdsZSBEeW5hbW9EQiB0YWJsZSBjYW4gYmUgdXNlZCB0byBsb2NrIG11bHRpcGxlIHJlbW90ZVxuICogc3RhdGUgZmlsZXMuIFRlcnJhZm9ybSBnZW5lcmF0ZXMga2V5IG5hbWVzIHRoYXQgaW5jbHVkZSB0aGUgdmFsdWVzIG9mIHRoZVxuICogYnVja2V0IGFuZCBrZXkgdmFyaWFibGVzLlxuICpcbiAqIFdhcm5pbmchIEl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBlbmFibGUgQnVja2V0IFZlcnNpb25pbmcgb24gdGhlXG4gKiBTMyBidWNrZXQgdG8gYWxsb3cgZm9yIHN0YXRlIHJlY292ZXJ5IGluIHRoZSBjYXNlIG9mIGFjY2lkZW50YWwgZGVsZXRpb25zXG4gKiBhbmQgaHVtYW4gZXJyb3IuXG4gKlxuICogUmVhZCBtb3JlIGFib3V0IHRoaXMgYmFja2VuZCBpbiB0aGUgVGVycmFmb3JtIGRvY3M6XG4gKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9zZXR0aW5ncy9iYWNrZW5kcy9zM1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQmFja2VuZENvbmZpZyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTMyBCdWNrZXQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgTGlzdCBvZiBhbGxvd2VkIEFXUyBhY2NvdW50IElEcyB0byBwcmV2ZW50IHBvdGVudGlhbCBkZXN0cnVjdGlvbiBvZiBhIGxpdmUgZW52aXJvbm1lbnQuXG4gICAqIENvbmZsaWN0cyB3aXRoIGZvcmJpZGRlbl9hY2NvdW50X2lkcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRBY2NvdW50SWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEZpbGUgY29udGFpbmluZyBjdXN0b20gcm9vdCBhbmQgaW50ZXJtZWRpYXRlIGNlcnRpZmljYXRlcy5cbiAgICogQ2FuIGFsc28gYmUgc2V0IHVzaW5nIHRoZSBBV1NfQ0FfQlVORExFIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBTZXR0aW5nIGNhX2J1bmRsZSBpbiB0aGUgc2hhcmVkIGNvbmZpZyBmaWxlIGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21DYUJ1bmRsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsKSBDdXN0b20gZW5kcG9pbnQgVVJMIGZvciB0aGUgRUMyIEluc3RhbmNlIE1ldGFkYXRhIFNlcnZpY2UgKElNRFMpIEFQSS5cbiAgICogQ2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIEFXU19FQzJfTUVUQURBVEFfU0VSVklDRV9FTkRQT0lOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGVjMk1ldGFkYXRhU2VydmljZUVuZHBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBNb2RlIHRvIHVzZSBpbiBjb21tdW5pY2F0aW5nIHdpdGggdGhlIG1ldGFkYXRhIHNlcnZpY2UuXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgSVB2NCBhbmQgSVB2Ni5cbiAgICogQ2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIEFXU19FQzJfTUVUQURBVEFfU0VSVklDRV9FTkRQT0lOVF9NT0RFIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZWMyTWV0YWRhdGFTZXJ2aWNlRW5kcG9pbnRNb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBMaXN0IG9mIGZvcmJpZGRlbiBBV1MgYWNjb3VudCBJRHMgdG8gcHJldmVudCBwb3RlbnRpYWwgZGVzdHJ1Y3Rpb24gb2YgYSBsaXZlIGVudmlyb25tZW50LlxuICAgKiBDb25mbGljdHMgd2l0aCBhbGxvd2VkX2FjY291bnRfaWRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yYmlkZGVuQWNjb3VudElkcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBVUkwgb2YgYSBwcm94eSB0byB1c2UgZm9yIEhUVFAgcmVxdWVzdHMgd2hlbiBhY2Nlc3NpbmcgdGhlIEFXUyBBUEkuXG4gICAqIENhbiBhbHNvIGJlIHNldCB1c2luZyB0aGUgSFRUUF9QUk9YWSBvciBodHRwX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQcm94eT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVVJMIG9mIGEgcHJveHkgdG8gdXNlIGZvciBIVFRQUyByZXF1ZXN0cyB3aGVuIGFjY2Vzc2luZyB0aGUgQVdTIEFQSS5cbiAgICogQ2FuIGFsc28gYmUgc2V0IHVzaW5nIHRoZSBIVFRQU19QUk9YWSBvciBodHRwc19wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwpIFdoZXRoZXIgdG8gZXhwbGljaXRseSBhbGxvdyB0aGUgYmFja2VuZCB0byBwZXJmb3JtIFwiaW5zZWN1cmVcIiBTU0wgcmVxdWVzdHMuXG4gICAqIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zZWN1cmU/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cyB0aGF0IHNob3VsZCBub3QgdXNlIEhUVFAgb3IgSFRUUFMgcHJveGllcy5cbiAgICogRWFjaCB2YWx1ZSBjYW4gYmUgb25lIG9mOlxuICAgKiAtIEEgZG9tYWluIG5hbWVcbiAgICogLSBBbiBJUCBhZGRyZXNzXG4gICAqIC0gQSBDSURSIGFkZHJlc3NcbiAgICogLSBBbiBhc3RlcmlzayAoKiksIHRvIGluZGljYXRlIHRoYXQgbm8gcHJveHlpbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBEb21haW4gbmFtZSBhbmQgSVAgYWRkcmVzcyB2YWx1ZXMgY2FuIGFsc28gaW5jbHVkZSBhIHBvcnQgbnVtYmVyLlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgdXNpbmcgdGhlIE5PX1BST1hZIG9yIG5vX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IG5vUHJveHk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNwZWNpZmllcyBob3cgcmV0cmllcyBhcmUgYXR0ZW1wdGVkLlxuICAgKiBWYWxpZCB2YWx1ZXMgYXJlIHN0YW5kYXJkIGFuZCBhZGFwdGl2ZS5cbiAgICogQ2FuIGFsc28gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgQVdTX1JFVFJZX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIHNoYXJlZCBjb25maWcgZmlsZSBwYXJhbWV0ZXIgcmV0cnlfbW9kZS5cbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5TW9kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgTGlzdCBvZiBwYXRocyB0byBBV1Mgc2hhcmVkIGNvbmZpZ3VyYXRpb24gZmlsZXMuXG4gICAqIERlZmF1bHRzIHRvIH4vLmF3cy9jb25maWcuXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRDb25maWdGaWxlcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBMaXN0IG9mIHBhdGhzIHRvIEFXUyBzaGFyZWQgY3JlZGVudGlhbHMgZmlsZXMuXG4gICAqIERlZmF1bHRzIHRvIH4vLmF3cy9jcmVkZW50aWFscy5cbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZENyZWRlbnRpYWxzRmlsZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIHN0YXRlIGZpbGUgaW5zaWRlIHRoZSBTMyBCdWNrZXQuXG4gICAqIFdoZW4gdXNpbmcgYSBub24tZGVmYXVsdCB3b3Jrc3BhY2UsIHRoZSBzdGF0ZSBwYXRoIHdpbGwgYmUgL3dvcmtzcGFjZV9rZXlfcHJlZml4L3dvcmtzcGFjZV9uYW1lL2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBV1MgUmVnaW9uIG9mIHRoZSBTMyBCdWNrZXQgYW5kIER5bmFtb0RCIFRhYmxlIChpZiB1c2VkKS4gVGhpcyBjYW4gYWxzb1xuICAgKiBiZSBzb3VyY2VkIGZyb20gdGhlIEFXU19ERUZBVUxUX1JFR0lPTiBhbmQgQVdTX1JFR0lPTiBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBmb3IgdGhlIEFXUyBTMyBBUEkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBV1NfUzNfRU5EUE9JTlQgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbmRwb2ludHMuczMgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEVuYWJsZSBzZXJ2ZXIgc2lkZSBlbmNyeXB0aW9uIG9mIHRoZSBzdGF0ZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIENhbm5lZCBBQ0wgdG8gYmUgYXBwbGllZCB0byB0aGUgc3RhdGUgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGFjbD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQVdTIGFjY2VzcyBrZXkuIElmIGNvbmZpZ3VyZWQsIG11c3QgYWxzbyBjb25maWd1cmUgc2VjcmV0X2tleS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb21cbiAgICogdGhlIEFXU19BQ0NFU1NfS0VZX0lEIGVudmlyb25tZW50IHZhcmlhYmxlLFxuICAgKiBBV1Mgc2hhcmVkIGNyZWRlbnRpYWxzIGZpbGUgKGUuZy4gfi8uYXdzL2NyZWRlbnRpYWxzKSxcbiAgICogb3IgQVdTIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGUgKGUuZy4gfi8uYXdzL2NvbmZpZykuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEFXUyBzZWNyZXQgYWNjZXNzIGtleS4gSWYgY29uZmlndXJlZCwgbXVzdCBhbHNvIGNvbmZpZ3VyZSBhY2Nlc3Nfa2V5LlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbVxuICAgKiB0aGUgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlLFxuICAgKiBBV1Mgc2hhcmVkIGNyZWRlbnRpYWxzIGZpbGUgKGUuZy4gfi8uYXdzL2NyZWRlbnRpYWxzKSxcbiAgICogb3IgQVdTIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGUgKGUuZy4gfi8uYXdzL2NvbmZpZylcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldEtleT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgYSBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIEtleVxuICAgKiB0byB1c2UgZm9yIGVuY3J5cHRpbmcgdGhlIHN0YXRlLiBOb3RlIHRoYXQgaWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQsXG4gICAqIFRlcnJhZm9ybSB3aWxsIG5lZWQga21zOkVuY3J5cHQsIGttczpEZWNyeXB0IGFuZCBrbXM6R2VuZXJhdGVEYXRhS2V5IHBlcm1pc3Npb25zIG9uIHRoaXMgS01TIGtleS5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBXaGV0aGVyIHRvIHVzZSBhIGxvY2tmaWxlIGZvciBsb2NraW5nIHRoZSBzdGF0ZSBmaWxlLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICogU3RhdGUgbG9ja2luZyBpcyBhbiBvcHQtaW4gZmVhdHVyZSBvZiB0aGUgUzMgYmFja2VuZC5cbiAgICogTG9ja2luZyBjYW4gYmUgZW5hYmxlZCB2aWEgUzMgb3IgRHluYW1vREIgKHNlZSBkeW5hbW9kYlRhYmxlKS4gSG93ZXZlciwgRHluYW1vREItYmFzZWQgbG9ja2luZ1xuICAgKiAgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtaW5vciB2ZXJzaW9uLiBUbyBzdXBwb3J0IG1pZ3JhdGlvbiBmcm9tIG9sZGVyXG4gICAqICAgdmVyc2lvbnMgb2YgVGVycmFmb3JtIHRoYXQgb25seSBzdXBwb3J0IER5bmFtb0RCLWJhc2VkIGxvY2tpbmcsIHRoZSBTMyAodXNlTG9ja2ZpbGUpIGFuZCBEeW5hbW9EQlxuICAgKiAgIChkeW5hbW9kYlRhYmxlKSBhcmd1bWVudHMgY2FuIGJlIGNvbmZpZ3VyZWQgc2ltdWx0YW5lb3VzbHkuXG4gICAqL1xuICByZWFkb25seSB1c2VMb2NrZmlsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIE5hbWUgb2YgRHluYW1vREIgVGFibGUgdG8gdXNlIGZvciBzdGF0ZSBsb2NraW5nIGFuZCBjb25zaXN0ZW5jeS5cbiAgICogVGhlIHRhYmxlIG11c3QgaGF2ZSBhIHBhcnRpdGlvbiBrZXkgbmFtZWQgTG9ja0lEIHdpdGggdHlwZSBvZiBTdHJpbmcuXG4gICAqIElmIG5vdCBjb25maWd1cmVkLCBzdGF0ZSBsb2NraW5nIHdpbGwgYmUgZGlzYWJsZWQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB1c2VMb2NrZmlsZSBpbnN0ZWFkLCB3aGljaCB1c2VzIFMzIGZvciBsb2NraW5nXG4gICAqL1xuICByZWFkb25seSBkeW5hbW9kYlRhYmxlPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBOYW1lIG9mIEFXUyBwcm9maWxlIGluIEFXUyBzaGFyZWQgY3JlZGVudGlhbHMgZmlsZSAoZS5nLiB+Ly5hd3MvY3JlZGVudGlhbHMpXG4gICAqIG9yIEFXUyBzaGFyZWQgY29uZmlndXJhdGlvbiBmaWxlIChlLmcuIH4vLmF3cy9jb25maWcpIHRvIHVzZSBmb3IgY3JlZGVudGlhbHNcbiAgICogYW5kL29yIGNvbmZpZ3VyYXRpb24uIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBV1NfUFJPRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFBhdGggdG8gdGhlIEFXUyBzaGFyZWQgY3JlZGVudGlhbHMgZmlsZS4gRGVmYXVsdHMgdG8gfi8uYXdzL2NyZWRlbnRpYWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkQ3JlZGVudGlhbHNGaWxlPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBNdWx0aS1GYWN0b3IgQXV0aGVudGljYXRpb24gKE1GQSkgdG9rZW4uXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBV1NfU0VTU0lPTl9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIFJvbGUgdG8gYXNzdW1lLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYXNzdW1lUm9sZS5yb2xlQXJuIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSByb2xlQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBJQU0gUG9saWN5IEpTT04gZGVzY3JpYmluZyBmdXJ0aGVyIHJlc3RyaWN0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgSUFNIFJvbGUgYmVpbmcgYXNzdW1lZC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGFzc3VtZVJvbGUucG9saWN5IGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlUG9saWN5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTZXQgb2YgQW1hem9uIFJlc291cmNlIE5hbWVzIChBUk5zKSBvZiBJQU0gUG9saWNpZXMgZGVzY3JpYmluZyBmdXJ0aGVyIHJlc3RyaWN0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgSUFNIFJvbGUgYmVpbmcgYXNzdW1lZC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGFzc3VtZVJvbGUucG9saWN5QXJucyBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZVBvbGljeUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgTWFwIG9mIGFzc3VtZSByb2xlIHNlc3Npb24gdGFncy5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGFzc3VtZVJvbGUudGFncyBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZVRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTZXQgb2YgYXNzdW1lIHJvbGUgc2Vzc2lvbiB0YWcga2V5cyB0byBwYXNzIHRvIGFueSBzdWJzZXF1ZW50IHNlc3Npb25zLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYXNzdW1lUm9sZS50cmFuc2l0aXZlVGFnS2V5cyBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZVRyYW5zaXRpdmVUYWdLZXlzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEV4dGVybmFsIGlkZW50aWZpZXIgdG8gdXNlIHdoZW4gYXNzdW1pbmcgdGhlIHJvbGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBhc3N1bWVfcm9sZS5leHRlcm5hbF9pZCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZXJuYWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2Vzc2lvbiBuYW1lIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYXNzdW1lUm9sZS5zZXNzaW9uTmFtZSBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbk5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFByZWZpeCBhcHBsaWVkIHRvIHRoZSBzdGF0ZSBwYXRoIGluc2lkZSB0aGUgYnVja2V0LlxuICAgKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiB1c2luZyBhIG5vbi1kZWZhdWx0IHdvcmtzcGFjZS4gRGVmYXVsdHMgdG8gZW52OlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlS2V5UHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBDdXN0b20gZW5kcG9pbnQgZm9yIHRoZSBBV1MgRHluYW1vREIgQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVdTX0RZTkFNT0RCX0VORFBPSU5UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZW5kcG9pbnRzLmR5bmFtb2RiIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IGR5bmFtb2RiRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBmb3IgdGhlIEFXUyBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVdTX0lBTV9FTkRQT0lOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGVuZHBvaW50cy5pYW0gaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgaWFtRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBmb3IgdGhlIEFXUyBTZWN1cml0eSBUb2tlbiBTZXJ2aWNlIChTVFMpIEFQSS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFXU19TVFNfRU5EUE9JTlQgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbmRwb2ludHMuc3RzIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IHN0c0VuZHBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBBV1MgcmVnaW9uIGZvciBTVFMuXG4gICAqIElmIHVuc2V0LCBBV1Mgd2lsbCB1c2UgdGhlIHNhbWUgcmVnaW9uIGZvciBTVFMgYXMgb3RoZXIgbm9uLVNUUyBvcGVyYXRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RzUmVnaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBFbmFibGUgcGF0aC1zdHlsZSBTMyBVUkxzXG4gICAqIChodHRwczovLzxIT1NUPi88QlVDS0VUPiBpbnN0ZWFkIG9mIGh0dHBzOi8vPEJVQ0tFVD4uPEhPU1Q+KS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHVzZVBhdGhTdHlsZSBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBmb3JjZVBhdGhTdHlsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEVuYWJsZSBwYXRoLXN0eWxlIFMzIFVSTHNcbiAgICogKGh0dHBzOi8vPEhPU1Q+LzxCVUNLRVQ+IGluc3RlYWQgb2YgaHR0cHM6Ly88QlVDS0VUPi48SE9TVD4pLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUGF0aFN0eWxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2tpcCBjcmVkZW50aWFscyB2YWxpZGF0aW9uIHZpYSB0aGUgU1RTIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IHNraXBDcmVkZW50aWFsc1ZhbGlkYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTa2lwIHZhbGlkYXRpb24gb2YgcHJvdmlkZWQgcmVnaW9uIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBza2lwUmVnaW9uVmFsaWRhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFdoZXRoZXIgdG8gc2tpcCByZXF1ZXN0aW5nIHRoZSBhY2NvdW50IElELlxuICAgKiBVc2VmdWwgZm9yIEFXUyBBUEkgaW1wbGVtZW50YXRpb25zIHRoYXQgZG8gbm90IGhhdmUgdGhlIElBTSwgU1RTIEFQSSwgb3IgbWV0YWRhdGEgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFJlcXVlc3RpbmdBY2NvdW50SWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTa2lwIHVzYWdlIG9mIEVDMiBNZXRhZGF0YSBBUEkuXG4gICAqL1xuICByZWFkb25seSBza2lwTWV0YWRhdGFBcGlDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIERvIG5vdCBpbmNsdWRlIGNoZWNrc3VtIHdoZW4gdXBsb2FkaW5nIFMzIE9iamVjdHMuXG4gICAqIFVzZWZ1bCBmb3Igc29tZSBTMy1Db21wYXRpYmxlIEFQSXMuXG4gICAqL1xuICByZWFkb25seSBza2lwUzNDaGVja3N1bT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW5nIHN0YXRlIHdpdGggU2VydmVyLVNpZGUgRW5jcnlwdGlvbiB3aXRoIEN1c3RvbWVyLVByb3ZpZGVkIEtleXMgKFNTRS1DKS5cbiAgICogVGhpcyBpcyB0aGUgYmFzZTY0LWVuY29kZWQgdmFsdWUgb2YgdGhlIGtleSwgd2hpY2ggbXVzdCBkZWNvZGUgdG8gMjU2IGJpdHMuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBV1NfU1NFX0NVU1RPTUVSX0tFWSBlbnZpcm9ubWVudCB2YXJpYWJsZSxcbiAgICogd2hpY2ggaXMgcmVjb21tZW5kZWQgZHVlIHRvIHRoZSBzZW5zaXRpdml0eSBvZiB0aGUgdmFsdWUuXG4gICAqIFNldHRpbmcgaXQgaW5zaWRlIGEgdGVycmFmb3JtIGZpbGUgd2lsbCBjYXVzZSBpdCB0byBiZSBwZXJzaXN0ZWQgdG8gZGlzayBpbiB0ZXJyYWZvcm0udGZzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHNzZUN1c3RvbWVyS2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgYW4gQVdTIEFQSSByZXF1ZXN0IGlzIHJldHJpZWQgb24gcmV0cnlhYmxlIGZhaWx1cmUuXG4gICAqIERlZmF1bHRzIHRvIDUuXG4gICAqL1xuICByZWFkb25seSBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBVc2UgdGhlIGxlZ2FjeSBhdXRoZW50aWNhdGlvbiB3b3JrZmxvdywgcHJlZmVycmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3ZlciBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIERlZmF1bHRzIHRvIHRydWUuXG4gICAqIFRoaXMgYmVoYXZpb3IgZG9lcyBub3QgYWxpZ24gd2l0aCB0aGUgYXV0aGVudGljYXRpb24gZmxvdyBvZiB0aGUgQVdTIENMSSBvciBTREsncywgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTGVnYWN5V29ya2Zsb3c/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50cz86IFMzQmFja2VuZEVuZHBvaW50Q29uZmlnO1xuICAvKipcbiAgICogQXNzdW1pbmcgYW4gSUFNIFJvbGUgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdHdvIHdheXMuXG4gICAqIFRoZSBwcmVmZXJyZWQgd2F5IGlzIHRvIHVzZSB0aGUgYXJndW1lbnQgYXNzdW1lX3JvbGUsIHRoZSBvdGhlciwgd2hpY2ggaXMgZGVwcmVjYXRlZCwgaXMgd2l0aCBhcmd1bWVudHMgYXQgdGhlIHRvcCBsZXZlbC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGU/OiBTM0JhY2tlbmRBc3N1bWVSb2xlQ29uZmlnO1xuICAvKipcbiAgICogQXNzdW1lIFJvbGUgV2l0aCBXZWIgSWRlbnRpdHkgQ29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eT86IFMzQmFja2VuZEFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNCYWNrZW5kRW5kcG9pbnRDb25maWcge1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBDdXN0b20gZW5kcG9pbnQgVVJMIGZvciB0aGUgQVdTIER5bmFtb0RCIEFQSS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEFXU19FTkRQT0lOVF9VUkxfRFlOQU1PREIgb3IgdGhlIGRlcHJlY2F0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX0RZTkFNT0RCX0VORFBPSU5ULlxuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1vZGI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBVUkwgZm9yIHRoZSBBV1MgSUFNIEFQSS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEFXU19FTkRQT0lOVF9VUkxfSUFNIG9yIHRoZSBkZXByZWNhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlIEFXU19JQU1fRU5EUE9JTlQuXG4gICAqL1xuICByZWFkb25seSBpYW0/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBVUkwgZm9yIHRoZSBBV1MgUzMgQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX0VORFBPSU5UX1VSTF9TMyBvciB0aGUgZGVwcmVjYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBBV1NfUzNfRU5EUE9JTlQuXG4gICAqL1xuICByZWFkb25seSBzMz86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IFVSTCBmb3IgdGhlIEFXUyBJQU0gSWRlbnRpdHkgQ2VudGVyIChmb3JtZXJseSBrbm93biBhcyBBV1MgU1NPKSBBUEkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBBV1NfRU5EUE9JTlRfVVJMX1NTTy5cbiAgICovXG4gIHJlYWRvbmx5IHNzbz86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IFVSTCBmb3IgdGhlIEFXUyBTVFMgQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX0VORFBPSU5UX1VSTF9TVFMgb3IgdGhlIGRlcHJlY2F0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX1NUU19FTkRQT0lOVC5cbiAgICovXG4gIHJlYWRvbmx5IHN0cz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM0JhY2tlbmRBc3N1bWVSb2xlQ29uZmlnIHtcbiAgLyoqXG4gICAqIChSZXF1aXJlZCkgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIElBTSBSb2xlIHRvIGFzc3VtZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIGR1cmF0aW9uIGluZGl2aWR1YWwgY3JlZGVudGlhbHMgd2lsbCBiZSB2YWxpZC5cbiAgICogQ3JlZGVudGlhbHMgYXJlIGF1dG9tYXRpY2FsbHkgcmVuZXdlZCB1cCB0byB0aGUgbWF4aW11bSBkZWZpbmVkIGJ5IHRoZSBBV1MgYWNjb3VudC5cbiAgICogU3BlY2lmaWVkIHVzaW5nIHRoZSBmb3JtYXQgPGhvdXJzPmg8bWludXRlcz5tPHNlY29uZHM+cyB3aXRoIGFueSB1bml0IGJlaW5nIG9wdGlvbmFsLlxuICAgKiBGb3IgZXhhbXBsZSwgYW4gaG91ciBhbmQgYSBoYWxmIGNhbiBiZSBzcGVjaWZpZWQgYXMgMWgzMG0gb3IgOTBtLlxuICAgKiBNdXN0IGJlIGJldHdlZW4gMTUgbWludXRlcyAoMTVtKSBhbmQgMTIgaG91cnMgKDEyaCkuXG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRXh0ZXJuYWwgaWRlbnRpZmllciB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgcm9sZS5cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFsSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIElBTSBQb2xpY3kgSlNPTiBkZXNjcmliaW5nIGZ1cnRoZXIgcmVzdHJpY3RpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBJQU0gUm9sZSBiZWluZyBhc3N1bWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTZXQgb2YgQW1hem9uIFJlc291cmNlIE5hbWVzIChBUk5zKSBvZiBJQU0gUG9saWNpZXMgZGVzY3JpYmluZyBmdXJ0aGVyIHJlc3RyaWN0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgSUFNIFJvbGUgYmVpbmcgYXNzdW1lZC5cbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2Vzc2lvbiBuYW1lIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbk5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNvdXJjZSBpZGVudGl0eSBzcGVjaWZpZWQgYnkgdGhlIHByaW5jaXBhbCBhc3N1bWluZyB0aGVcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUlkZW50aXR5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBNYXAgb2YgYXNzdW1lIHJvbGUgc2Vzc2lvbiB0YWdzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNldCBvZiBhc3N1bWUgcm9sZSBzZXNzaW9uIHRhZyBrZXlzIHRvIHBhc3MgdG8gYW55IHN1YnNlcXVlbnQgc2Vzc2lvbnMuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2l0aXZlVGFnS2V5cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFMzQmFja2VuZEFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlDb25maWcge1xuICAvKipcbiAgICogKFJlcXVpcmVkKSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIFJvbGUgdG8gYXNzdW1lLlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgQVdTX1JPTEVfQVJOIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIGR1cmF0aW9uIGluZGl2aWR1YWwgY3JlZGVudGlhbHMgd2lsbCBiZSB2YWxpZC5cbiAgICogQ3JlZGVudGlhbHMgYXJlIGF1dG9tYXRpY2FsbHkgcmVuZXdlZCB1cCB0byB0aGUgbWF4aW11bSBkZWZpbmVkIGJ5IHRoZSBBV1MgYWNjb3VudC5cbiAgICogU3BlY2lmaWVkIHVzaW5nIHRoZSBmb3JtYXQgPGhvdXJzPmg8bWludXRlcz5tPHNlY29uZHM+cyB3aXRoIGFueSB1bml0IGJlaW5nIG9wdGlvbmFsLlxuICAgKiBGb3IgZXhhbXBsZSwgYW4gaG91ciBhbmQgYSBoYWxmIGNhbiBiZSBzcGVjaWZpZWQgYXMgMWgzMG0gb3IgOTBtLlxuICAgKiBNdXN0IGJlIGJldHdlZW4gMTUgbWludXRlcyAoMTVtKSBhbmQgMTIgaG91cnMgKDEyaCkuXG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgSUFNIFBvbGljeSBKU09OIGRlc2NyaWJpbmcgZnVydGhlciByZXN0cmljdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIElBTSBSb2xlIGJlaW5nIGFzc3VtZWQuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3k/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNldCBvZiBBbWF6b24gUmVzb3VyY2UgTmFtZXMgKEFSTnMpIG9mIElBTSBQb2xpY2llcyBkZXNjcmliaW5nIGZ1cnRoZXIgcmVzdHJpY3RpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBJQU0gUm9sZSBiZWluZyBhc3N1bWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5QXJucz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTZXNzaW9uIG5hbWUgdG8gdXNlIHdoZW4gYXNzdW1pbmcgdGhlIHJvbGUuXG4gICAqIENhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBBV1NfUk9MRV9TRVNTSU9OX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIHZhbHVlIG9mIGEgd2ViIGlkZW50aXR5IHRva2VuIGZyb20gYW4gT3BlbklEIENvbm5lY3QgKE9JREMpIG9yIE9BdXRoIHByb3ZpZGVyLlxuICAgKiBPbmUgb2Ygd2ViX2lkZW50aXR5X3Rva2VuIG9yIHdlYl9pZGVudGl0eV90b2tlbl9maWxlIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgd2ViSWRlbnRpdHlUb2tlbj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRmlsZSBjb250YWluaW5nIGEgd2ViIGlkZW50aXR5IHRva2VuIGZyb20gYW4gT3BlbklEIENvbm5lY3QgKE9JREMpIG9yIE9BdXRoIHByb3ZpZGVyLlxuICAgKiBPbmUgb2Ygd2ViX2lkZW50aXR5X3Rva2VuX2ZpbGUgb3Igd2ViX2lkZW50aXR5X3Rva2VuIGlzIHJlcXVpcmVkLlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgQVdTX1dFQl9JREVOVElUWV9UT0tFTl9GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2ViSWRlbnRpdHlUb2tlbkZpbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlUzNDb25maWdcbiAgZXh0ZW5kcyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVDb25maWcsIFMzQmFja2VuZENvbmZpZyB7fVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9zMy1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSw0REFBd0Q7QUFDeEQsc0VBR21DO0FBQ25DLGtDQUEwQztBQUMxQyxnREFBOEQ7QUFFOUQ7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxvQ0FBZ0I7SUFHMUI7O0lBRm5CLFlBQ0UsS0FBZ0IsRUFDQyxLQUFzQjtRQUV2QyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUZiLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBSXZDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUNyQixJQUFJLDBDQUE0QixDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtnQkFDaEUsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCLFFBQVEsRUFBRSxVQUFVO2FBQ3JCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsT0FBTyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsS0FBZ0IsRUFDaEIsSUFBWSxFQUNaLFVBQWtCO1FBRWxCLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2pELEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixTQUFTLEVBQUUsd0JBQXdCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbENILDhCQW1DQztBQUVEOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSw2Q0FBb0I7O0lBQ2xFLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE1BQXdDO1FBRXhDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDOztBQVBILGdFQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1CYWNrZW5kIH0gZnJvbSBcIi4uL3RlcnJhZm9ybS1iYWNrZW5kXCI7XG5pbXBvcnQge1xuICBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVDb25maWcsXG4gIFRlcnJhZm9ybVJlbW90ZVN0YXRlLFxufSBmcm9tIFwiLi4vdGVycmFmb3JtLXJlbW90ZS1zdGF0ZVwiO1xuaW1wb3J0IHsga2V5c1RvU25ha2VDYXNlIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IFZhbGlkYXRlRmVhdHVyZVRhcmdldFN1cHBvcnQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbnNcIjtcblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBzdGFjayB0byBzdG9yZSBpdHMgVGVycmFmb3JtIHN0YXRlIGluIHRoZSBgczNgIGJhY2tlbmQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0JhY2tlbmQgZXh0ZW5kcyBUZXJyYWZvcm1CYWNrZW5kIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTM0JhY2tlbmRDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBcImJhY2tlbmRcIiwgXCJzM1wiKTtcblxuICAgIGlmIChwcm9wcy51c2VMb2NrZmlsZSkge1xuICAgICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICAgIG5ldyBWYWxpZGF0ZUZlYXR1cmVUYXJnZXRTdXBwb3J0KHRoaXMsIFwiUzMgbmF0aXZlIHN0YXRlIGxvY2tpbmdcIiwge1xuICAgICAgICAgIHRlcnJhZm9ybTogXCI+PTEuMTAuMFwiLFxuICAgICAgICAgIG9wZW50b2Z1OiBcIj49MS4xMC4wXCIsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBrZXlzVG9TbmFrZUNhc2UoeyAuLi50aGlzLnByb3BzIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ga2V5c1RvU25ha2VDYXNlKHsgLi4udGhpcy5wcm9wcyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZW1vdGVTdGF0ZURhdGFTb3VyY2UoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgX2Zyb21TdGFjazogc3RyaW5nLFxuICApOiBUZXJyYWZvcm1SZW1vdGVTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVTMyhzY29wZSwgbmFtZSwge1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHdvcmtzcGFjZTogXCIke3RlcnJhZm9ybS53b3Jrc3BhY2V9XCIsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGB0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlYCBkYXRhIHNvdXJjZSB0aGF0IHJlYWRzIHRoZSBvdXRwdXRzIG9mIGEgc3RhdGUgc3RvcmVkIGluIHRoZSBgczNgIGJhY2tlbmQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVTMyBleHRlbmRzIFRlcnJhZm9ybVJlbW90ZVN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGNvbmZpZzogRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlUzNDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgXCJzM1wiLCBjb25maWcpO1xuICB9XG59XG5cbi8qKlxuICogU3RvcmVzIHRoZSBzdGF0ZSBhcyBhIGdpdmVuIGtleSBpbiBhIGdpdmVuIGJ1Y2tldCBvbiBBbWF6b24gUzMuIFRoaXMgYmFja2VuZFxuICogYWxzbyBzdXBwb3J0cyBzdGF0ZSBsb2NraW5nIGFuZCBjb25zaXN0ZW5jeSBjaGVja2luZyB2aWEgRHluYW1vIERCLCB3aGljaFxuICogY2FuIGJlIGVuYWJsZWQgYnkgc2V0dGluZyB0aGUgZHluYW1vZGJfdGFibGUgZmllbGQgdG8gYW4gZXhpc3RpbmcgRHluYW1vREJcbiAqIHRhYmxlIG5hbWUuIEEgc2luZ2xlIER5bmFtb0RCIHRhYmxlIGNhbiBiZSB1c2VkIHRvIGxvY2sgbXVsdGlwbGUgcmVtb3RlXG4gKiBzdGF0ZSBmaWxlcy4gVGVycmFmb3JtIGdlbmVyYXRlcyBrZXkgbmFtZXMgdGhhdCBpbmNsdWRlIHRoZSB2YWx1ZXMgb2YgdGhlXG4gKiBidWNrZXQgYW5kIGtleSB2YXJpYWJsZXMuXG4gKlxuICogV2FybmluZyEgSXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRoYXQgeW91IGVuYWJsZSBCdWNrZXQgVmVyc2lvbmluZyBvbiB0aGVcbiAqIFMzIGJ1Y2tldCB0byBhbGxvdyBmb3Igc3RhdGUgcmVjb3ZlcnkgaW4gdGhlIGNhc2Ugb2YgYWNjaWRlbnRhbCBkZWxldGlvbnNcbiAqIGFuZCBodW1hbiBlcnJvci5cbiAqXG4gKiBSZWFkIG1vcmUgYWJvdXQgdGhpcyBiYWNrZW5kIGluIHRoZSBUZXJyYWZvcm0gZG9jczpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3NldHRpbmdzL2JhY2tlbmRzL3MzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNCYWNrZW5kQ29uZmlnIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFMzIEJ1Y2tldC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBMaXN0IG9mIGFsbG93ZWQgQVdTIGFjY291bnQgSURzIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlc3RydWN0aW9uIG9mIGEgbGl2ZSBlbnZpcm9ubWVudC5cbiAgICogQ29uZmxpY3RzIHdpdGggZm9yYmlkZGVuX2FjY291bnRfaWRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZEFjY291bnRJZHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRmlsZSBjb250YWluaW5nIGN1c3RvbSByb290IGFuZCBpbnRlcm1lZGlhdGUgY2VydGlmaWNhdGVzLlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgdXNpbmcgdGhlIEFXU19DQV9CVU5ETEUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIFNldHRpbmcgY2FfYnVuZGxlIGluIHRoZSBzaGFyZWQgY29uZmlnIGZpbGUgaXMgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNhQnVuZGxlPzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBVUkwgZm9yIHRoZSBFQzIgSW5zdGFuY2UgTWV0YWRhdGEgU2VydmljZSAoSU1EUykgQVBJLlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgQVdTX0VDMl9NRVRBREFUQV9TRVJWSUNFX0VORFBPSU5UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZWMyTWV0YWRhdGFTZXJ2aWNlRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIE1vZGUgdG8gdXNlIGluIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgbWV0YWRhdGEgc2VydmljZS5cbiAgICogVmFsaWQgdmFsdWVzIGFyZSBJUHY0IGFuZCBJUHY2LlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgQVdTX0VDMl9NRVRBREFUQV9TRVJWSUNFX0VORFBPSU5UX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBlYzJNZXRhZGF0YVNlcnZpY2VFbmRwb2ludE1vZGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIExpc3Qgb2YgZm9yYmlkZGVuIEFXUyBhY2NvdW50IElEcyB0byBwcmV2ZW50IHBvdGVudGlhbCBkZXN0cnVjdGlvbiBvZiBhIGxpdmUgZW52aXJvbm1lbnQuXG4gICAqIENvbmZsaWN0cyB3aXRoIGFsbG93ZWRfYWNjb3VudF9pZHMuXG4gICAqL1xuICByZWFkb25seSBmb3JiaWRkZW5BY2NvdW50SWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVSTCBvZiBhIHByb3h5IHRvIHVzZSBmb3IgSFRUUCByZXF1ZXN0cyB3aGVuIGFjY2Vzc2luZyB0aGUgQVdTIEFQSS5cbiAgICogQ2FuIGFsc28gYmUgc2V0IHVzaW5nIHRoZSBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cFByb3h5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBVUkwgb2YgYSBwcm94eSB0byB1c2UgZm9yIEhUVFBTIHJlcXVlc3RzIHdoZW4gYWNjZXNzaW5nIHRoZSBBV1MgQVBJLlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgdXNpbmcgdGhlIEhUVFBTX1BST1hZIG9yIGh0dHBzX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBzUHJveHk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCkgV2hldGhlciB0byBleHBsaWNpdGx5IGFsbG93IHRoZSBiYWNrZW5kIHRvIHBlcmZvcm0gXCJpbnNlY3VyZVwiIFNTTCByZXF1ZXN0cy5cbiAgICogSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2UuXG4gICAqL1xuICByZWFkb25seSBpbnNlY3VyZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3RzIHRoYXQgc2hvdWxkIG5vdCB1c2UgSFRUUCBvciBIVFRQUyBwcm94aWVzLlxuICAgKiBFYWNoIHZhbHVlIGNhbiBiZSBvbmUgb2Y6XG4gICAqIC0gQSBkb21haW4gbmFtZVxuICAgKiAtIEFuIElQIGFkZHJlc3NcbiAgICogLSBBIENJRFIgYWRkcmVzc1xuICAgKiAtIEFuIGFzdGVyaXNrICgqKSwgdG8gaW5kaWNhdGUgdGhhdCBubyBwcm94eWluZyBzaG91bGQgYmUgcGVyZm9ybWVkIERvbWFpbiBuYW1lIGFuZCBJUCBhZGRyZXNzIHZhbHVlcyBjYW4gYWxzbyBpbmNsdWRlIGEgcG9ydCBudW1iZXIuXG4gICAqIENhbiBhbHNvIGJlIHNldCB1c2luZyB0aGUgTk9fUFJPWFkgb3Igbm9fcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm94eT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU3BlY2lmaWVzIGhvdyByZXRyaWVzIGFyZSBhdHRlbXB0ZWQuXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgc3RhbmRhcmQgYW5kIGFkYXB0aXZlLlxuICAgKiBDYW4gYWxzbyBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSBBV1NfUkVUUllfTU9ERSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgc2hhcmVkIGNvbmZpZyBmaWxlIHBhcmFtZXRlciByZXRyeV9tb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlNb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBMaXN0IG9mIHBhdGhzIHRvIEFXUyBzaGFyZWQgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICogRGVmYXVsdHMgdG8gfi8uYXdzL2NvbmZpZy5cbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZENvbmZpZ0ZpbGVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIExpc3Qgb2YgcGF0aHMgdG8gQVdTIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlcy5cbiAgICogRGVmYXVsdHMgdG8gfi8uYXdzL2NyZWRlbnRpYWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkQ3JlZGVudGlhbHNGaWxlcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgc3RhdGUgZmlsZSBpbnNpZGUgdGhlIFMzIEJ1Y2tldC5cbiAgICogV2hlbiB1c2luZyBhIG5vbi1kZWZhdWx0IHdvcmtzcGFjZSwgdGhlIHN0YXRlIHBhdGggd2lsbCBiZSAvd29ya3NwYWNlX2tleV9wcmVmaXgvd29ya3NwYWNlX25hbWUva2V5XG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIEFXUyBSZWdpb24gb2YgdGhlIFMzIEJ1Y2tldCBhbmQgRHluYW1vREIgVGFibGUgKGlmIHVzZWQpLiBUaGlzIGNhbiBhbHNvXG4gICAqIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVdTX0RFRkFVTFRfUkVHSU9OIGFuZCBBV1NfUkVHSU9OIGVudmlyb25tZW50XG4gICAqIHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IGZvciB0aGUgQVdTIFMzIEFQSS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFXU19TM19FTkRQT0lOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGVuZHBvaW50cy5zMyBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRW5hYmxlIHNlcnZlciBzaWRlIGVuY3J5cHRpb24gb2YgdGhlIHN0YXRlIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ2FubmVkIEFDTCB0byBiZSBhcHBsaWVkIHRvIHRoZSBzdGF0ZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNsPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBBV1MgYWNjZXNzIGtleS4gSWYgY29uZmlndXJlZCwgbXVzdCBhbHNvIGNvbmZpZ3VyZSBzZWNyZXRfa2V5LlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbVxuICAgKiB0aGUgQVdTX0FDQ0VTU19LRVlfSUQgZW52aXJvbm1lbnQgdmFyaWFibGUsXG4gICAqIEFXUyBzaGFyZWQgY3JlZGVudGlhbHMgZmlsZSAoZS5nLiB+Ly5hd3MvY3JlZGVudGlhbHMpLFxuICAgKiBvciBBV1Mgc2hhcmVkIGNvbmZpZ3VyYXRpb24gZmlsZSAoZS5nLiB+Ly5hd3MvY29uZmlnKS5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2Vzc0tleT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQVdTIHNlY3JldCBhY2Nlc3Mga2V5LiBJZiBjb25maWd1cmVkLCBtdXN0IGFsc28gY29uZmlndXJlIGFjY2Vzc19rZXkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tXG4gICAqIHRoZSBBV1NfU0VDUkVUX0FDQ0VTU19LRVkgZW52aXJvbm1lbnQgdmFyaWFibGUsXG4gICAqIEFXUyBzaGFyZWQgY3JlZGVudGlhbHMgZmlsZSAoZS5nLiB+Ly5hd3MvY3JlZGVudGlhbHMpLFxuICAgKiBvciBBV1Mgc2hhcmVkIGNvbmZpZ3VyYXRpb24gZmlsZSAoZS5nLiB+Ly5hd3MvY29uZmlnKVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0S2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiBhIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykgS2V5XG4gICAqIHRvIHVzZSBmb3IgZW5jcnlwdGluZyB0aGUgc3RhdGUuIE5vdGUgdGhhdCBpZiB0aGlzIHZhbHVlIGlzIHNwZWNpZmllZCxcbiAgICogVGVycmFmb3JtIHdpbGwgbmVlZCBrbXM6RW5jcnlwdCwga21zOkRlY3J5cHQgYW5kIGttczpHZW5lcmF0ZURhdGFLZXkgcGVybWlzc2lvbnMgb24gdGhpcyBLTVMga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFdoZXRoZXIgdG8gdXNlIGEgbG9ja2ZpbGUgZm9yIGxvY2tpbmcgdGhlIHN0YXRlIGZpbGUuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKiBTdGF0ZSBsb2NraW5nIGlzIGFuIG9wdC1pbiBmZWF0dXJlIG9mIHRoZSBTMyBiYWNrZW5kLlxuICAgKiBMb2NraW5nIGNhbiBiZSBlbmFibGVkIHZpYSBTMyBvciBEeW5hbW9EQiAoc2VlIGR5bmFtb2RiVGFibGUpLiBIb3dldmVyLCBEeW5hbW9EQi1iYXNlZCBsb2NraW5nXG4gICAqICAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1pbm9yIHZlcnNpb24uIFRvIHN1cHBvcnQgbWlncmF0aW9uIGZyb20gb2xkZXJcbiAgICogICB2ZXJzaW9ucyBvZiBUZXJyYWZvcm0gdGhhdCBvbmx5IHN1cHBvcnQgRHluYW1vREItYmFzZWQgbG9ja2luZywgdGhlIFMzICh1c2VMb2NrZmlsZSkgYW5kIER5bmFtb0RCXG4gICAqICAgKGR5bmFtb2RiVGFibGUpIGFyZ3VtZW50cyBjYW4gYmUgY29uZmlndXJlZCBzaW11bHRhbmVvdXNseS5cbiAgICovXG4gIHJlYWRvbmx5IHVzZUxvY2tmaWxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgTmFtZSBvZiBEeW5hbW9EQiBUYWJsZSB0byB1c2UgZm9yIHN0YXRlIGxvY2tpbmcgYW5kIGNvbnNpc3RlbmN5LlxuICAgKiBUaGUgdGFibGUgbXVzdCBoYXZlIGEgcGFydGl0aW9uIGtleSBuYW1lZCBMb2NrSUQgd2l0aCB0eXBlIG9mIFN0cmluZy5cbiAgICogSWYgbm90IGNvbmZpZ3VyZWQsIHN0YXRlIGxvY2tpbmcgd2lsbCBiZSBkaXNhYmxlZC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHVzZUxvY2tmaWxlIGluc3RlYWQsIHdoaWNoIHVzZXMgUzMgZm9yIGxvY2tpbmdcbiAgICovXG4gIHJlYWRvbmx5IGR5bmFtb2RiVGFibGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIE5hbWUgb2YgQVdTIHByb2ZpbGUgaW4gQVdTIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlIChlLmcuIH4vLmF3cy9jcmVkZW50aWFscylcbiAgICogb3IgQVdTIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGUgKGUuZy4gfi8uYXdzL2NvbmZpZykgdG8gdXNlIGZvciBjcmVkZW50aWFsc1xuICAgKiBhbmQvb3IgY29uZmlndXJhdGlvbi4gVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFXU19QUk9GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgUGF0aCB0byB0aGUgQVdTIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlLiBEZWZhdWx0cyB0byB+Ly5hd3MvY3JlZGVudGlhbHMuXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRDcmVkZW50aWFsc0ZpbGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIE11bHRpLUZhY3RvciBBdXRoZW50aWNhdGlvbiAoTUZBKSB0b2tlbi5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFXU19TRVNTSU9OX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBJQU0gUm9sZSB0byBhc3N1bWUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBhc3N1bWVSb2xlLnJvbGVBcm4gaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIElBTSBQb2xpY3kgSlNPTiBkZXNjcmliaW5nIGZ1cnRoZXIgcmVzdHJpY3RpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBJQU0gUm9sZSBiZWluZyBhc3N1bWVkLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYXNzdW1lUm9sZS5wb2xpY3kgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNldCBvZiBBbWF6b24gUmVzb3VyY2UgTmFtZXMgKEFSTnMpIG9mIElBTSBQb2xpY2llcyBkZXNjcmliaW5nIGZ1cnRoZXIgcmVzdHJpY3RpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBJQU0gUm9sZSBiZWluZyBhc3N1bWVkLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYXNzdW1lUm9sZS5wb2xpY3lBcm5zIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlUG9saWN5QXJucz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBNYXAgb2YgYXNzdW1lIHJvbGUgc2Vzc2lvbiB0YWdzLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYXNzdW1lUm9sZS50YWdzIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNldCBvZiBhc3N1bWUgcm9sZSBzZXNzaW9uIHRhZyBrZXlzIHRvIHBhc3MgdG8gYW55IHN1YnNlcXVlbnQgc2Vzc2lvbnMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBhc3N1bWVSb2xlLnRyYW5zaXRpdmVUYWdLZXlzIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlVHJhbnNpdGl2ZVRhZ0tleXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRXh0ZXJuYWwgaWRlbnRpZmllciB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgcm9sZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGFzc3VtZV9yb2xlLmV4dGVybmFsX2lkIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbElkPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTZXNzaW9uIG5hbWUgdG8gdXNlIHdoZW4gYXNzdW1pbmcgdGhlIHJvbGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBhc3N1bWVSb2xlLnNlc3Npb25OYW1lIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgUHJlZml4IGFwcGxpZWQgdG8gdGhlIHN0YXRlIHBhdGggaW5zaWRlIHRoZSBidWNrZXQuXG4gICAqIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGEgbm9uLWRlZmF1bHQgd29ya3NwYWNlLiBEZWZhdWx0cyB0byBlbnY6XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VLZXlQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBmb3IgdGhlIEFXUyBEeW5hbW9EQiBBUEkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBV1NfRFlOQU1PREJfRU5EUE9JTlQgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbmRwb2ludHMuZHluYW1vZGIgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1vZGJFbmRwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IGZvciB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBBUEkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBV1NfSUFNX0VORFBPSU5UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZW5kcG9pbnRzLmlhbSBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBpYW1FbmRwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IGZvciB0aGUgQVdTIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UgKFNUUykgQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVdTX1NUU19FTkRQT0lOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGVuZHBvaW50cy5zdHMgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RzRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEFXUyByZWdpb24gZm9yIFNUUy5cbiAgICogSWYgdW5zZXQsIEFXUyB3aWxsIHVzZSB0aGUgc2FtZSByZWdpb24gZm9yIFNUUyBhcyBvdGhlciBub24tU1RTIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzdHNSZWdpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEVuYWJsZSBwYXRoLXN0eWxlIFMzIFVSTHNcbiAgICogKGh0dHBzOi8vPEhPU1Q+LzxCVUNLRVQ+IGluc3RlYWQgb2YgaHR0cHM6Ly88QlVDS0VUPi48SE9TVD4pLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdXNlUGF0aFN0eWxlIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlUGF0aFN0eWxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRW5hYmxlIHBhdGgtc3R5bGUgUzMgVVJMc1xuICAgKiAoaHR0cHM6Ly88SE9TVD4vPEJVQ0tFVD4gaW5zdGVhZCBvZiBodHRwczovLzxCVUNLRVQ+LjxIT1NUPikuXG4gICAqL1xuICByZWFkb25seSB1c2VQYXRoU3R5bGU/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTa2lwIGNyZWRlbnRpYWxzIHZhbGlkYXRpb24gdmlhIHRoZSBTVFMgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcENyZWRlbnRpYWxzVmFsaWRhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNraXAgdmFsaWRhdGlvbiBvZiBwcm92aWRlZCByZWdpb24gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNraXBSZWdpb25WYWxpZGF0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgV2hldGhlciB0byBza2lwIHJlcXVlc3RpbmcgdGhlIGFjY291bnQgSUQuXG4gICAqIFVzZWZ1bCBmb3IgQVdTIEFQSSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkbyBub3QgaGF2ZSB0aGUgSUFNLCBTVFMgQVBJLCBvciBtZXRhZGF0YSBBUEkuXG4gICAqL1xuICByZWFkb25seSBza2lwUmVxdWVzdGluZ0FjY291bnRJZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNraXAgdXNhZ2Ugb2YgRUMyIE1ldGFkYXRhIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IHNraXBNZXRhZGF0YUFwaUNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRG8gbm90IGluY2x1ZGUgY2hlY2tzdW0gd2hlbiB1cGxvYWRpbmcgUzMgT2JqZWN0cy5cbiAgICogVXNlZnVsIGZvciBzb21lIFMzLUNvbXBhdGlibGUgQVBJcy5cbiAgICovXG4gIHJlYWRvbmx5IHNraXBTM0NoZWNrc3VtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpbmcgc3RhdGUgd2l0aCBTZXJ2ZXItU2lkZSBFbmNyeXB0aW9uIHdpdGggQ3VzdG9tZXItUHJvdmlkZWQgS2V5cyAoU1NFLUMpLlxuICAgKiBUaGlzIGlzIHRoZSBiYXNlNjQtZW5jb2RlZCB2YWx1ZSBvZiB0aGUga2V5LCB3aGljaCBtdXN0IGRlY29kZSB0byAyNTYgYml0cy5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFXU19TU0VfQ1VTVE9NRVJfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlLFxuICAgKiB3aGljaCBpcyByZWNvbW1lbmRlZCBkdWUgdG8gdGhlIHNlbnNpdGl2aXR5IG9mIHRoZSB2YWx1ZS5cbiAgICogU2V0dGluZyBpdCBpbnNpZGUgYSB0ZXJyYWZvcm0gZmlsZSB3aWxsIGNhdXNlIGl0IHRvIGJlIHBlcnNpc3RlZCB0byBkaXNrIGluIHRlcnJhZm9ybS50ZnN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3NlQ3VzdG9tZXJLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyBhbiBBV1MgQVBJIHJlcXVlc3QgaXMgcmV0cmllZCBvbiByZXRyeWFibGUgZmFpbHVyZS5cbiAgICogRGVmYXVsdHMgdG8gNS5cbiAgICovXG4gIHJlYWRvbmx5IG1heFJldHJpZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzZSB0aGUgbGVnYWN5IGF1dGhlbnRpY2F0aW9uIHdvcmtmbG93LCBwcmVmZXJyaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBvdmVyIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogVGhpcyBiZWhhdmlvciBkb2VzIG5vdCBhbGlnbiB3aXRoIHRoZSBhdXRoZW50aWNhdGlvbiBmbG93IG9mIHRoZSBBV1MgQ0xJIG9yIFNESydzLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAqL1xuICByZWFkb25seSB1c2VMZWdhY3lXb3JrZmxvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBlbmRwb2ludCBjb25maWd1cmF0aW9uIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRzPzogUzNCYWNrZW5kRW5kcG9pbnRDb25maWc7XG4gIC8qKlxuICAgKiBBc3N1bWluZyBhbiBJQU0gUm9sZSBjYW4gYmUgY29uZmlndXJlZCBpbiB0d28gd2F5cy5cbiAgICogVGhlIHByZWZlcnJlZCB3YXkgaXMgdG8gdXNlIHRoZSBhcmd1bWVudCBhc3N1bWVfcm9sZSwgdGhlIG90aGVyLCB3aGljaCBpcyBkZXByZWNhdGVkLCBpcyB3aXRoIGFyZ3VtZW50cyBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZT86IFMzQmFja2VuZEFzc3VtZVJvbGVDb25maWc7XG4gIC8qKlxuICAgKiBBc3N1bWUgUm9sZSBXaXRoIFdlYiBJZGVudGl0eSBDb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlV2l0aFdlYklkZW50aXR5PzogUzNCYWNrZW5kQXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eUNvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM0JhY2tlbmRFbmRwb2ludENvbmZpZyB7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEN1c3RvbSBlbmRwb2ludCBVUkwgZm9yIHRoZSBBV1MgRHluYW1vREIgQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX0VORFBPSU5UX1VSTF9EWU5BTU9EQiBvciB0aGUgZGVwcmVjYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBBV1NfRFlOQU1PREJfRU5EUE9JTlQuXG4gICAqL1xuICByZWFkb25seSBkeW5hbW9kYj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IFVSTCBmb3IgdGhlIEFXUyBJQU0gQVBJLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX0VORFBPSU5UX1VSTF9JQU0gb3IgdGhlIGRlcHJlY2F0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX0lBTV9FTkRQT0lOVC5cbiAgICovXG4gIHJlYWRvbmx5IGlhbT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQ3VzdG9tIGVuZHBvaW50IFVSTCBmb3IgdGhlIEFXUyBTMyBBUEkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBBV1NfRU5EUE9JTlRfVVJMX1MzIG9yIHRoZSBkZXByZWNhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlIEFXU19TM19FTkRQT0lOVC5cbiAgICovXG4gIHJlYWRvbmx5IHMzPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBDdXN0b20gZW5kcG9pbnQgVVJMIGZvciB0aGUgQVdTIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIEFXUyBTU08pIEFQSS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEFXU19FTkRQT0lOVF9VUkxfU1NPLlxuICAgKi9cbiAgcmVhZG9ubHkgc3NvPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBDdXN0b20gZW5kcG9pbnQgVVJMIGZvciB0aGUgQVdTIFNUUyBBUEkuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBBV1NfRU5EUE9JTlRfVVJMX1NUUyBvciB0aGUgZGVwcmVjYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBBV1NfU1RTX0VORFBPSU5ULlxuICAgKi9cbiAgcmVhZG9ubHkgc3RzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFMzQmFja2VuZEFzc3VtZVJvbGVDb25maWcge1xuICAvKipcbiAgICogKFJlcXVpcmVkKSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIFJvbGUgdG8gYXNzdW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW5kaXZpZHVhbCBjcmVkZW50aWFscyB3aWxsIGJlIHZhbGlkLlxuICAgKiBDcmVkZW50aWFscyBhcmUgYXV0b21hdGljYWxseSByZW5ld2VkIHVwIHRvIHRoZSBtYXhpbXVtIGRlZmluZWQgYnkgdGhlIEFXUyBhY2NvdW50LlxuICAgKiBTcGVjaWZpZWQgdXNpbmcgdGhlIGZvcm1hdCA8aG91cnM+aDxtaW51dGVzPm08c2Vjb25kcz5zIHdpdGggYW55IHVuaXQgYmVpbmcgb3B0aW9uYWwuXG4gICAqIEZvciBleGFtcGxlLCBhbiBob3VyIGFuZCBhIGhhbGYgY2FuIGJlIHNwZWNpZmllZCBhcyAxaDMwbSBvciA5MG0uXG4gICAqIE11c3QgYmUgYmV0d2VlbiAxNSBtaW51dGVzICgxNW0pIGFuZCAxMiBob3VycyAoMTJoKS5cbiAgICovXG4gIHJlYWRvbmx5IGR1cmF0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBFeHRlcm5hbCBpZGVudGlmaWVyIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZXJuYWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgSUFNIFBvbGljeSBKU09OIGRlc2NyaWJpbmcgZnVydGhlciByZXN0cmljdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIElBTSBSb2xlIGJlaW5nIGFzc3VtZWQuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3k/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNldCBvZiBBbWF6b24gUmVzb3VyY2UgTmFtZXMgKEFSTnMpIG9mIElBTSBQb2xpY2llcyBkZXNjcmliaW5nIGZ1cnRoZXIgcmVzdHJpY3RpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBJQU0gUm9sZSBiZWluZyBhc3N1bWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5QXJucz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTZXNzaW9uIG5hbWUgdG8gdXNlIHdoZW4gYXNzdW1pbmcgdGhlIHJvbGUuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU291cmNlIGlkZW50aXR5IHNwZWNpZmllZCBieSB0aGUgcHJpbmNpcGFsIGFzc3VtaW5nIHRoZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSWRlbnRpdHk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIE1hcCBvZiBhc3N1bWUgcm9sZSBzZXNzaW9uIHRhZ3MuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2V0IG9mIGFzc3VtZSByb2xlIHNlc3Npb24gdGFnIGtleXMgdG8gcGFzcyB0byBhbnkgc3Vic2VxdWVudCBzZXNzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zaXRpdmVUYWdLZXlzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNCYWNrZW5kQXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eUNvbmZpZyB7XG4gIC8qKlxuICAgKiAoUmVxdWlyZWQpIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBJQU0gUm9sZSB0byBhc3N1bWUuXG4gICAqIENhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBBV1NfUk9MRV9BUk4gZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSByb2xlQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW5kaXZpZHVhbCBjcmVkZW50aWFscyB3aWxsIGJlIHZhbGlkLlxuICAgKiBDcmVkZW50aWFscyBhcmUgYXV0b21hdGljYWxseSByZW5ld2VkIHVwIHRvIHRoZSBtYXhpbXVtIGRlZmluZWQgYnkgdGhlIEFXUyBhY2NvdW50LlxuICAgKiBTcGVjaWZpZWQgdXNpbmcgdGhlIGZvcm1hdCA8aG91cnM+aDxtaW51dGVzPm08c2Vjb25kcz5zIHdpdGggYW55IHVuaXQgYmVpbmcgb3B0aW9uYWwuXG4gICAqIEZvciBleGFtcGxlLCBhbiBob3VyIGFuZCBhIGhhbGYgY2FuIGJlIHNwZWNpZmllZCBhcyAxaDMwbSBvciA5MG0uXG4gICAqIE11c3QgYmUgYmV0d2VlbiAxNSBtaW51dGVzICgxNW0pIGFuZCAxMiBob3VycyAoMTJoKS5cbiAgICovXG4gIHJlYWRvbmx5IGR1cmF0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBJQU0gUG9saWN5IEpTT04gZGVzY3JpYmluZyBmdXJ0aGVyIHJlc3RyaWN0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgSUFNIFJvbGUgYmVpbmcgYXNzdW1lZC5cbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2V0IG9mIEFtYXpvbiBSZXNvdXJjZSBOYW1lcyAoQVJOcykgb2YgSUFNIFBvbGljaWVzIGRlc2NyaWJpbmcgZnVydGhlciByZXN0cmljdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIElBTSBSb2xlIGJlaW5nIGFzc3VtZWQuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lBcm5zPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNlc3Npb24gbmFtZSB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgcm9sZS5cbiAgICogQ2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIEFXU19ST0xFX1NFU1NJT05fTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlc3Npb25OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgdmFsdWUgb2YgYSB3ZWIgaWRlbnRpdHkgdG9rZW4gZnJvbSBhbiBPcGVuSUQgQ29ubmVjdCAoT0lEQykgb3IgT0F1dGggcHJvdmlkZXIuXG4gICAqIE9uZSBvZiB3ZWJfaWRlbnRpdHlfdG9rZW4gb3Igd2ViX2lkZW50aXR5X3Rva2VuX2ZpbGUgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSB3ZWJJZGVudGl0eVRva2VuPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBGaWxlIGNvbnRhaW5pbmcgYSB3ZWIgaWRlbnRpdHkgdG9rZW4gZnJvbSBhbiBPcGVuSUQgQ29ubmVjdCAoT0lEQykgb3IgT0F1dGggcHJvdmlkZXIuXG4gICAqIE9uZSBvZiB3ZWJfaWRlbnRpdHlfdG9rZW5fZmlsZSBvciB3ZWJfaWRlbnRpdHlfdG9rZW4gaXMgcmVxdWlyZWQuXG4gICAqIENhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBBV1NfV0VCX0lERU5USVRZX1RPS0VOX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSB3ZWJJZGVudGl0eVRva2VuRmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVTM0NvbmZpZ1xuICBleHRlbmRzIERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUNvbmZpZywgUzNCYWNrZW5kQ29uZmlnIHt9XG4iXX0=
@@ -10,7 +10,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
10
10
  */
11
11
  class SwiftBackend extends terraform_backend_1.TerraformBackend {
12
12
  props;
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.SwiftBackend", version: "0.26.0-pre.20" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.SwiftBackend", version: "0.26.0-pre.21" };
14
14
  constructor(scope, props) {
15
15
  super(scope, "backend", "swift");
16
16
  this.props = props;
@@ -30,7 +30,7 @@ exports.SwiftBackend = SwiftBackend;
30
30
  * @deprecated CDK for Terraform no longer supports the swift backend. Terraform deprecated swift in v1.2.3 and removed it in v1.3.
31
31
  */
32
32
  class DataTerraformRemoteStateSwift extends terraform_remote_state_1.TerraformRemoteState {
33
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateSwift", version: "0.26.0-pre.20" };
33
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateSwift", version: "0.26.0-pre.21" };
34
34
  constructor(scope, id, config) {
35
35
  super(scope, id, "swift", config);
36
36
  }
@@ -1,6 +1,9 @@
1
1
  import { IResolvable, IResolveContext } from "./tokens";
2
2
  import { IInterpolatingParent, ITerraformAddressable } from "./terraform-addressable";
3
3
  import { DynamicListTerraformIterator } from ".";
4
+ /**
5
+ * Base class for a token that references a complex Terraform attribute and resolves to its interpolated address.
6
+ */
4
7
  declare abstract class ComplexResolvable implements IResolvable, ITerraformAddressable {
5
8
  protected terraformResource: IInterpolatingParent;
6
9
  protected terraformAttribute: string;
@@ -15,6 +18,9 @@ declare abstract class ComplexResolvable implements IResolvable, ITerraformAddre
15
18
  resolve(_context: IResolveContext): any;
16
19
  toString(): string;
17
20
  }
21
+ /**
22
+ * Base class for a reference to a complex Terraform attribute whose nested attributes are read as typed tokens.
23
+ */
18
24
  declare abstract class ComplexComputedAttribute extends ComplexResolvable implements IInterpolatingParent {
19
25
  protected terraformResource: IInterpolatingParent;
20
26
  protected terraformAttribute: string;
@@ -38,6 +44,9 @@ declare abstract class ComplexComputedAttribute extends ComplexResolvable implem
38
44
  };
39
45
  abstract interpolationForAttribute(terraformAttribute: string): any;
40
46
  }
47
+ /**
48
+ * Reference to a Terraform `map(string)` attribute, with each value read by key as a string token.
49
+ */
41
50
  export declare class StringMap extends ComplexResolvable implements ITerraformAddressable {
42
51
  protected terraformResource: IInterpolatingParent;
43
52
  protected terraformAttribute: string;
@@ -45,6 +54,9 @@ export declare class StringMap extends ComplexResolvable implements ITerraformAd
45
54
  lookup(key: string): string;
46
55
  computeFqn(): string;
47
56
  }
57
+ /**
58
+ * Reference to a Terraform `map(number)` attribute, with each value read by key as a number token.
59
+ */
48
60
  export declare class NumberMap extends ComplexResolvable implements ITerraformAddressable {
49
61
  protected terraformResource: IInterpolatingParent;
50
62
  protected terraformAttribute: string;
@@ -52,6 +64,9 @@ export declare class NumberMap extends ComplexResolvable implements ITerraformAd
52
64
  lookup(key: string): number;
53
65
  computeFqn(): string;
54
66
  }
67
+ /**
68
+ * Reference to a Terraform `map(bool)` attribute, with each value read by key as a resolvable token.
69
+ */
55
70
  export declare class BooleanMap extends ComplexResolvable implements ITerraformAddressable {
56
71
  protected terraformResource: IInterpolatingParent;
57
72
  protected terraformAttribute: string;
@@ -59,6 +74,9 @@ export declare class BooleanMap extends ComplexResolvable implements ITerraformA
59
74
  lookup(key: string): IResolvable;
60
75
  computeFqn(): string;
61
76
  }
77
+ /**
78
+ * Reference to a Terraform `map(any)` attribute, with each value read by key as an any-typed token.
79
+ */
62
80
  export declare class AnyMap extends ComplexResolvable implements ITerraformAddressable {
63
81
  protected terraformResource: IInterpolatingParent;
64
82
  protected terraformAttribute: string;
@@ -66,6 +84,9 @@ export declare class AnyMap extends ComplexResolvable implements ITerraformAddre
66
84
  lookup(key: string): any;
67
85
  computeFqn(): string;
68
86
  }
87
+ /**
88
+ * Reference to a Terraform `map(map(string))` attribute, with each inner map read by key as a StringMap.
89
+ */
69
90
  export declare class StringMapMap extends ComplexResolvable implements ITerraformAddressable {
70
91
  protected terraformResource: IInterpolatingParent;
71
92
  protected terraformAttribute: string;
@@ -73,6 +94,9 @@ export declare class StringMapMap extends ComplexResolvable implements ITerrafor
73
94
  lookup(key: string): StringMap;
74
95
  computeFqn(): string;
75
96
  }
97
+ /**
98
+ * Reference to a Terraform `map(map(number))` attribute, with each inner map read by key as a NumberMap.
99
+ */
76
100
  export declare class NumberMapMap extends ComplexResolvable implements ITerraformAddressable {
77
101
  protected terraformResource: IInterpolatingParent;
78
102
  protected terraformAttribute: string;
@@ -80,6 +104,9 @@ export declare class NumberMapMap extends ComplexResolvable implements ITerrafor
80
104
  lookup(key: string): NumberMap;
81
105
  computeFqn(): string;
82
106
  }
107
+ /**
108
+ * Reference to a Terraform `map(map(bool))` attribute, with each inner map read by key as a BooleanMap.
109
+ */
83
110
  export declare class BooleanMapMap extends ComplexResolvable implements ITerraformAddressable {
84
111
  protected terraformResource: IInterpolatingParent;
85
112
  protected terraformAttribute: string;
@@ -87,6 +114,9 @@ export declare class BooleanMapMap extends ComplexResolvable implements ITerrafo
87
114
  lookup(key: string): BooleanMap;
88
115
  computeFqn(): string;
89
116
  }
117
+ /**
118
+ * Reference to a Terraform `map(map(any))` attribute, with each inner map read by key as an AnyMap.
119
+ */
90
120
  export declare class AnyMapMap extends ComplexResolvable implements ITerraformAddressable {
91
121
  protected terraformResource: IInterpolatingParent;
92
122
  protected terraformAttribute: string;
@@ -107,6 +137,10 @@ export declare class ComplexComputedList extends ComplexComputedAttribute {
107
137
  interpolationForAttribute(property: string): IResolvable;
108
138
  computeFqn(): string;
109
139
  }
140
+ /**
141
+ * Base class for a reference to a Terraform list or set attribute, converting sets with `tolist()` for index access.
142
+ * Generated provider bindings extend it for lists and sets of nested blocks.
143
+ */
110
144
  export declare abstract class ComplexList extends ComplexResolvable implements ITerraformAddressable {
111
145
  protected terraformResource: IInterpolatingParent;
112
146
  protected terraformAttribute: string;
@@ -121,6 +155,9 @@ export declare abstract class ComplexList extends ComplexResolvable implements I
121
155
  */
122
156
  allWithMapKey(mapKeyAttributeName: string): DynamicListTerraformIterator;
123
157
  }
158
+ /**
159
+ * Reference to a Terraform `list(bool)` attribute, with each element read by index as a resolvable token.
160
+ */
124
161
  export declare class BooleanList extends ComplexList {
125
162
  protected terraformResource: IInterpolatingParent;
126
163
  protected terraformAttribute: string;
@@ -128,6 +165,9 @@ export declare class BooleanList extends ComplexList {
128
165
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
129
166
  get(index: number): IResolvable;
130
167
  }
168
+ /**
169
+ * Reference to a Terraform `list(list(string))` attribute, with each inner list read by index as a string list.
170
+ */
131
171
  export declare class StringListList extends ComplexList {
132
172
  protected terraformResource: IInterpolatingParent;
133
173
  protected terraformAttribute: string;
@@ -135,6 +175,9 @@ export declare class StringListList extends ComplexList {
135
175
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
136
176
  get(index: number): string[];
137
177
  }
178
+ /**
179
+ * Reference to a Terraform `list(list(number))` attribute, with each inner list read by index as a number list.
180
+ */
138
181
  export declare class NumberListList extends ComplexList {
139
182
  protected terraformResource: IInterpolatingParent;
140
183
  protected terraformAttribute: string;
@@ -142,6 +185,9 @@ export declare class NumberListList extends ComplexList {
142
185
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
143
186
  get(index: number): number[];
144
187
  }
188
+ /**
189
+ * Reference to a Terraform `list(list(bool))` attribute, with each inner list read by index as a resolvable token.
190
+ */
145
191
  export declare class BooleanListList extends ComplexList {
146
192
  protected terraformResource: IInterpolatingParent;
147
193
  protected terraformAttribute: string;
@@ -149,6 +195,9 @@ export declare class BooleanListList extends ComplexList {
149
195
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
150
196
  get(index: number): IResolvable;
151
197
  }
198
+ /**
199
+ * Reference to a Terraform `list(list(any))` attribute, with each inner list read by index as a resolvable token.
200
+ */
152
201
  export declare class AnyListList extends ComplexList {
153
202
  protected terraformResource: IInterpolatingParent;
154
203
  protected terraformAttribute: string;
@@ -156,6 +205,10 @@ export declare class AnyListList extends ComplexList {
156
205
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
157
206
  get(index: number): IResolvable;
158
207
  }
208
+ /**
209
+ * Base class for a reference to a Terraform map attribute.
210
+ * Generated provider bindings extend it for maps of nested objects and maps of lists of nested objects.
211
+ */
159
212
  export declare abstract class ComplexMap extends ComplexResolvable implements ITerraformAddressable {
160
213
  protected terraformResource: IInterpolatingParent;
161
214
  protected terraformAttribute: string;
@@ -163,6 +216,10 @@ export declare abstract class ComplexMap extends ComplexResolvable implements IT
163
216
  computeFqn(): string;
164
217
  interpolationForAttribute(property: string): IResolvable;
165
218
  }
219
+ /**
220
+ * Reference to a single Terraform object attribute, optionally addressed by index within a list or set.
221
+ * Generated provider bindings extend it for the output reference of each nested block.
222
+ */
166
223
  export declare class ComplexObject extends ComplexComputedAttribute {
167
224
  protected terraformResource: IInterpolatingParent;
168
225
  protected terraformAttribute: string;
@@ -180,6 +237,10 @@ export declare class ComplexObject extends ComplexComputedAttribute {
180
237
  protected interpolationAsList(): IResolvable;
181
238
  computeFqn(): string;
182
239
  }
240
+ /**
241
+ * Base class for a reference to a Terraform list or set of maps, converting sets with `tolist()` for index access.
242
+ * Generated provider bindings extend it for lists of maps and lists of lists of nested objects.
243
+ */
183
244
  export declare abstract class MapList extends ComplexResolvable implements ITerraformAddressable, IInterpolatingParent {
184
245
  protected terraformResource: IInterpolatingParent;
185
246
  protected terraformAttribute: string;
@@ -188,6 +249,9 @@ export declare abstract class MapList extends ComplexResolvable implements ITerr
188
249
  computeFqn(): string;
189
250
  interpolationForAttribute(property: string): IResolvable;
190
251
  }
252
+ /**
253
+ * Reference to a Terraform `list(map(string))` attribute, with each map read by index as a StringMap.
254
+ */
191
255
  export declare class StringMapList extends MapList {
192
256
  protected terraformResource: IInterpolatingParent;
193
257
  protected terraformAttribute: string;
@@ -195,6 +259,9 @@ export declare class StringMapList extends MapList {
195
259
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
196
260
  get(index: number): StringMap;
197
261
  }
262
+ /**
263
+ * Reference to a Terraform `list(map(number))` attribute, with each map read by index as a NumberMap.
264
+ */
198
265
  export declare class NumberMapList extends MapList {
199
266
  protected terraformResource: IInterpolatingParent;
200
267
  protected terraformAttribute: string;
@@ -202,6 +269,9 @@ export declare class NumberMapList extends MapList {
202
269
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
203
270
  get(index: number): NumberMap;
204
271
  }
272
+ /**
273
+ * Reference to a Terraform `list(map(bool))` attribute, with each map read by index as a BooleanMap.
274
+ */
205
275
  export declare class BooleanMapList extends MapList {
206
276
  protected terraformResource: IInterpolatingParent;
207
277
  protected terraformAttribute: string;
@@ -209,6 +279,9 @@ export declare class BooleanMapList extends MapList {
209
279
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
210
280
  get(index: number): BooleanMap;
211
281
  }
282
+ /**
283
+ * Reference to a Terraform `list(map(any))` attribute, with each map read by index as an AnyMap.
284
+ */
212
285
  export declare class AnyMapList extends MapList {
213
286
  protected terraformResource: IInterpolatingParent;
214
287
  protected terraformAttribute: string;
@@ -216,24 +289,36 @@ export declare class AnyMapList extends MapList {
216
289
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
217
290
  get(index: number): AnyMap;
218
291
  }
292
+ /**
293
+ * Reference to a Terraform `map(list(string))` attribute, with each list read by key as a string list.
294
+ */
219
295
  export declare class StringListMap extends ComplexMap {
220
296
  protected terraformResource: IInterpolatingParent;
221
297
  protected terraformAttribute: string;
222
298
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string);
223
299
  get(key: string): string[];
224
300
  }
301
+ /**
302
+ * Reference to a Terraform `map(list(number))` attribute, with each list read by key as a number list.
303
+ */
225
304
  export declare class NumberListMap extends ComplexMap {
226
305
  protected terraformResource: IInterpolatingParent;
227
306
  protected terraformAttribute: string;
228
307
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string);
229
308
  get(key: string): number[];
230
309
  }
310
+ /**
311
+ * Reference to a Terraform `map(list(bool))` attribute, with each list read by key as a resolvable token.
312
+ */
231
313
  export declare class BooleanListMap extends ComplexMap {
232
314
  protected terraformResource: IInterpolatingParent;
233
315
  protected terraformAttribute: string;
234
316
  constructor(terraformResource: IInterpolatingParent, terraformAttribute: string);
235
317
  get(key: string): IResolvable;
236
318
  }
319
+ /**
320
+ * Reference to a Terraform `map(list(any))` attribute, with each list read by key as a resolvable token.
321
+ */
237
322
  export declare class AnyListMap extends ComplexMap {
238
323
  protected terraformResource: IInterpolatingParent;
239
324
  protected terraformAttribute: string;